@readmagic/workmate 0.0.4 → 0.0.5
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/chunks/{AddWorkspaceDirectory-BTC7FPqM.js → AddWorkspaceDirectory-DJRkEz7o.js} +1 -1
- package/dist/chunks/{App-DOm71vtY.js → App-iJu5qyiF.js} +1 -1
- package/dist/chunks/ApproveApiKey-CKfn7U1R.js +1 -0
- package/dist/chunks/{ApproveApiKey-9YQzwrrC.js → ApproveApiKey-CRejTHUw.js} +1 -1
- package/dist/chunks/{AssistantSessionChooser-CnYfFWrx.js → AssistantSessionChooser-CBLQ1v-J.js} +1 -1
- package/dist/chunks/BackgroundTasksDialog-CyoLEYWH.js +2 -0
- package/dist/chunks/{BypassPermissionsModeDialog-DAq-qbqC.js → BypassPermissionsModeDialog-D1FCKVOi.js} +1 -1
- package/dist/chunks/{ClaudeMdExternalIncludesDialog-CyvidoR3.js → ClaudeMdExternalIncludesDialog-CI0yF6sZ.js} +1 -1
- package/dist/chunks/ClaudeMdExternalIncludesDialog-TypH-X8e.js +1 -0
- package/dist/chunks/ConsoleOAuthFlow-wGQuFt41.js +1 -0
- package/dist/chunks/{DesktopHandoff-gRvy-WlW.js → DesktopHandoff-D1rrMxeP.js} +1 -1
- package/dist/chunks/{DiffDialog-CdfVTgOx.js → DiffDialog-BKcfKx7O.js} +2 -2
- package/dist/chunks/Doctor-CcJUwSQn.js +1 -0
- package/dist/chunks/Doctor-Yco1McrL.js +3 -0
- package/dist/chunks/ExitFlow-D3csukbB.js +2 -0
- package/dist/chunks/{Feedback-gGpjUC_F.js → Feedback-bEUtrHia.js} +2 -2
- package/dist/chunks/Grove-DPkIjqg8.js +1 -0
- package/dist/chunks/{Grove-CD769Wvw.js → Grove-Dsd7F39b.js} +1 -1
- package/dist/chunks/{HybridTransport-kN1jmg26.js → HybridTransport-9fTBC2Pv.js} +1 -1
- package/dist/chunks/{InvalidConfigDialog-BpJub73a.js → InvalidConfigDialog-9M-1nfZ6.js} +1 -1
- package/dist/chunks/{InvalidSettingsDialog-DzOp3Ihx.js → InvalidSettingsDialog-B2F6pryH.js} +1 -1
- package/dist/chunks/MCPConnectionManager-MWpKjeZT.js +1 -0
- package/dist/chunks/{McpParsingWarnings-Cc6FWyU4.js → McpParsingWarnings-BPBb7Npe.js} +1 -1
- package/dist/chunks/MessageSelector-DsQmqFt2.js +3 -0
- package/dist/chunks/Messages-B3sGRx5A.js +11 -0
- package/dist/chunks/{Onboarding-D00lTweB.js → Onboarding-cHcnsBGp.js} +1 -1
- package/dist/chunks/{OverageCreditUpsell-B-Bf_-UX.js → OverageCreditUpsell-CWCD_RpM.js} +1 -1
- package/dist/chunks/PluginSettings-B0jbwB2M.js +17 -0
- package/dist/chunks/{PromptInputFooterSuggestions-MwS_cExV.js → PromptInputFooterSuggestions-D5sAO6y-.js} +1 -1
- package/dist/chunks/{PromptInputHelpMenu-V2dEpzhC.js → PromptInputHelpMenu-n6hAdsto.js} +1 -1
- package/dist/chunks/QueryEngine-cwdsr4dr.js +1 -0
- package/dist/chunks/REPL-CJzScgbZ.js +142 -0
- package/dist/chunks/REPL-DlBJIPCw.js +1 -0
- package/dist/chunks/{RemoteCallout-ChCjmgw1.js → RemoteCallout-CiA4rCEs.js} +1 -1
- package/dist/chunks/RemoteSessionManager-zdHfmvfj.js +2 -0
- package/dist/chunks/ResumeConversation-Rxwd6HAJ.js +1 -0
- package/dist/chunks/{SSETransport-h43pQVlJ.js → SSETransport-BPbhCa2f.js} +3 -3
- package/dist/chunks/SearchExtraToolsTool-VP87ErGx.js +1 -0
- package/dist/chunks/Settings-CxI_KHUj.js +2 -0
- package/dist/chunks/{TeleportProgress-QtJrXSCX.js → TeleportProgress-DrulEQ7z.js} +1 -1
- package/dist/chunks/{TeleportRepoMismatchDialog-D-HVj-A6.js → TeleportRepoMismatchDialog-D3FOLr0P.js} +1 -1
- package/dist/chunks/{TeleportResumeWrapper-C6sbzJsJ.js → TeleportResumeWrapper-DI5iRFND.js} +1 -1
- package/dist/chunks/{ThemePicker-CqPCp5Hs.js → ThemePicker-CQ7dfFtv.js} +1 -1
- package/dist/chunks/{TrustDialog-CeVwxDlZ.js → TrustDialog-CnVKrdxQ.js} +1 -1
- package/dist/chunks/{ValidationErrorsList-Bl68E-2-.js → ValidationErrorsList-CPYeuppg.js} +1 -1
- package/dist/chunks/{WelcomeV2-DNiXQ5ES.js → WelcomeV2-C-UXdIng.js} +1 -1
- package/dist/chunks/{add-dir-V3xjklnJ.js → add-dir-xTz4COgn.js} +1 -1
- package/dist/chunks/{agentDisplay-BuiwcrQi.js → agentDisplay-BuSReYxu.js} +1 -1
- package/dist/chunks/{agents-ZY6IaVE7.js → agents-CiLlKN2I.js} +1 -1
- package/dist/chunks/agents-Du9KYHqN.js +103 -0
- package/dist/chunks/allErrors-P3utlEeA.js +1 -0
- package/dist/chunks/{ant-D66LZCap.js → ant-CBIfqmAb.js} +1 -1
- package/dist/chunks/api-B-5jqiMg.js +1 -0
- package/dist/chunks/api-BiwZmmsh.js +1 -0
- package/dist/chunks/{assistant-CYF7ch7C.js → assistant-XOnU01yl.js} +1 -1
- package/dist/chunks/auth-BQa4kzQo.js +1 -0
- package/dist/chunks/auth-DT2yxy94.js +15 -0
- package/dist/chunks/auth-UAJhZNmZ.js +1 -0
- package/dist/chunks/{autoMode-TysBQkU_.js → autoMode-CEMflt3g.js} +1 -1
- package/dist/chunks/{autonomy-CNEbT-t_.js → autonomy-Cg5zweUa.js} +7 -7
- package/dist/chunks/{autonomy-k3QPea5z.js → autonomy-_N8aDaA8.js} +1 -1
- package/dist/chunks/{autonomyPanel-DiztRblF.js → autonomyPanel-I4yCy3Fr.js} +1 -1
- package/dist/chunks/backgroundHousekeeping-BUUZ7Csq.js +1 -0
- package/dist/chunks/backgroundHousekeeping-DhF2lrQ9.js +17 -0
- package/dist/chunks/{branch-_NBgDfrK.js → branch-BIX-pyHp.js} +1 -1
- package/dist/chunks/{bridge-DpmFl8p8.js → bridge-CYskzVt8.js} +2 -2
- package/dist/chunks/{bridgeConfig-DMBOO3gW.js → bridgeConfig-5p_w4s5r.js} +1 -1
- package/dist/chunks/bridgeConfig-DWEqKbXk.js +1 -0
- package/dist/chunks/bridgeEnabled-CjVCMwnq.js +1 -0
- package/dist/chunks/bridgeEnabled-DhFrLTbG.js +1 -0
- package/dist/chunks/bridgeMain-6lollTtZ.js +1 -0
- package/dist/chunks/bridgeMain-BX2AkLPs.js +68 -0
- package/dist/chunks/{bridgeMessaging-N5zlzCCr.js → bridgeMessaging-B5Lbzr8e.js} +1 -1
- package/dist/chunks/{btw-BFRje_Zi.js → btw-CWWFO7u8.js} +1 -1
- package/dist/chunks/caches-C46fa77L.js +1 -0
- package/dist/chunks/{caches-CcfPJ4_A.js → caches-DPqPIogk.js} +2 -2
- package/dist/chunks/{ccrClient-q2JCVCU2.js → ccrClient-CTLnU9Y1.js} +1 -1
- package/dist/chunks/{clear-CxY7W5Wt.js → clear-DCAgZwc4.js} +1 -1
- package/dist/chunks/client-Bup0Sgcn.js +1 -0
- package/dist/chunks/{color-DOWhfjnA.js → color-CmJGInHL.js} +1 -1
- package/dist/chunks/commands-BdB1eFvP.js +1 -0
- package/dist/chunks/{commitAttribution-CLbEIaRJ.js → commitAttribution-CGZr7XNO.js} +2 -2
- package/dist/chunks/commitAttribution-D6J3NuhB.js +1 -0
- package/dist/chunks/compact-C6-lMHgn.js +2 -0
- package/dist/chunks/{config-DiT2Z8dY.js → config-3m_9zSrj.js} +1 -1
- package/dist/chunks/config-Bxt1UH1T.js +1 -0
- package/dist/chunks/config-CjjXZfNi.js +1 -0
- package/dist/chunks/{context-B2OvKo2t.js → context-C9V4GF0n.js} +1 -1
- package/dist/chunks/{context-noninteractive-BuGxX3YL.js → context-noninteractive-BmC4o5xo.js} +2 -2
- package/dist/chunks/context-noninteractive-DvGo1l7b.js +1 -0
- package/dist/chunks/conversation-CH9ouFai.js +1 -0
- package/dist/chunks/conversation-CYqqk0o7.js +1 -0
- package/dist/chunks/{createSSHSession-C-c7I5iJ.js → createSSHSession-BL6j0AU5.js} +1 -1
- package/dist/chunks/createSession-DUfOAeyE.js +1 -0
- package/dist/chunks/{createSession-D_fIDqgc.js → createSession-D_sgO1Xy.js} +1 -1
- package/dist/chunks/crossProjectResume-D5hTOfnE.js +40 -0
- package/dist/chunks/{datadog-Ed8emSFA.js → datadog-UkGdjL8-.js} +1 -1
- package/dist/chunks/{desktop-D_ofPlyi.js → desktop-HbYKh-VK.js} +1 -1
- package/dist/chunks/{diff-CUAgBDu1.js → diff-nTV17iWX.js} +1 -1
- package/dist/chunks/doctor-7fgVhEKL.js +1 -0
- package/dist/chunks/{entry-Bh0gPOAo.js → entry-CCFI6-gM.js} +3 -3
- package/dist/chunks/envLessBridgeConfig-B2HYnEKo.js +1 -0
- package/dist/chunks/{envLessBridgeConfig-DJHZAlU-.js → envLessBridgeConfig-DXd10GXD.js} +1 -1
- package/dist/chunks/{esm-B62dCLgf.js → esm-CGoYrggU.js} +1 -1
- package/dist/chunks/exit-ropaQiOr.js +1 -0
- package/dist/chunks/extra-usage-CLhv1Z4g.js +1 -0
- package/dist/chunks/{extra-usage-core-B6ga8Rni.js → extra-usage-core-DLYHAInT.js} +1 -1
- package/dist/chunks/{extra-usage-CjaHpu8y.js → extra-usage-g2Pw4zt_.js} +1 -1
- package/dist/chunks/{extra-usage-noninteractive-Dc9AndId.js → extra-usage-noninteractive-D8iszH3c.js} +1 -1
- package/dist/chunks/extraUsage-C2Ylufhj.js +1 -0
- package/dist/chunks/extractMemories-B2IAvbXM.js +1 -0
- package/dist/chunks/{fast-CW_NsL0x.js → fast-Dx2fTmWr.js} +1 -1
- package/dist/chunks/fast-_G6zcFye.js +1 -0
- package/dist/chunks/{feedback-BpRorTAC.js → feedback-DCQ4pJ3v.js} +1 -1
- package/dist/chunks/{firstPartyEventLogger-CuUiNdj8.js → firstPartyEventLogger-BNGPPBNP.js} +2 -2
- package/dist/chunks/firstPartyEventLogger-C9LzVy6y.js +1 -0
- package/dist/chunks/{flushGate-BltVae97.js → flushGate-XaheIZZT.js} +1 -1
- package/dist/chunks/{gemini-YyIxfveQ.js → gemini-BCCLHK3K.js} +1 -1
- package/dist/chunks/{generateRecap-tx4wLIkI.js → generateRecap-BhvbixY2.js} +1 -1
- package/dist/chunks/{generateSessionName-BkDigIN8.js → generateSessionName-CN1oh7Fa.js} +1 -1
- package/dist/chunks/{githubRepoPathMapping-C4umZ1oC.js → githubRepoPathMapping-B4AM8luI.js} +1 -1
- package/dist/chunks/{goal-DZrD4puM.js → goal-Bp6fyGqo.js} +3 -3
- package/dist/chunks/{grok-BZf7W_hL.js → grok-ax26ju8y.js} +1 -1
- package/dist/chunks/{grove-CFBPplP6.js → grove-DrBVaZSN.js} +2 -2
- package/dist/chunks/{heapdump-DWc3Z2NO.js → heapdump-JseysNDr.js} +1 -1
- package/dist/chunks/{help-pap9jNUJ.js → help-DR9hKneR.js} +1 -1
- package/dist/chunks/hooks-BUJLxdFJ.js +1 -0
- package/dist/chunks/{hooks-Bmat0L6A.js → hooks-C5n23H1E.js} +2 -2
- package/dist/chunks/inboundAttachments-C0nMTtCi.js +1 -0
- package/dist/chunks/{inboundAttachments-DkfNHtF9.js → inboundAttachments-Cp8XvLMZ.js} +1 -1
- package/dist/chunks/initReplBridge-DJs28ZkI.js +1 -0
- package/dist/chunks/{install-D4jmHjmk.js → install-C7qTB0V5.js} +1 -1
- package/dist/chunks/{instrumentation-Nqgm1SMw.js → instrumentation-CLZttr_u.js} +4 -4
- package/dist/chunks/{job-CT9bcgPb.js → job-BhiazwPH.js} +1 -1
- package/dist/chunks/keybindings-CkL8BzUt.js +2 -0
- package/dist/chunks/{language-BA5WprZv.js → language-DIw2871r.js} +1 -1
- package/dist/chunks/language-DfOAuDFc.js +1 -0
- package/dist/chunks/launchAgentsPlatform-j-mWpwW1.js +1 -0
- package/dist/chunks/{launchLocalMemory-CRMqifzn.js → launchLocalMemory-DmoXp0Xo.js} +2 -2
- package/dist/chunks/{launchLocalVault-DlKX_oDE.js → launchLocalVault-1uKe0HjA.js} +3 -3
- package/dist/chunks/launchMemoryStores-SxDKjHJ3.js +1 -0
- package/dist/chunks/{launchOnboarding-DTdUA_wE.js → launchOnboarding-CTtpnXcs.js} +1 -1
- package/dist/chunks/launchSchedule-BDVnGhaL.js +1 -0
- package/dist/chunks/launchSkillStore-SmMLxp4K.js +1 -0
- package/dist/chunks/{launchTeleport-CXFRPVMR.js → launchTeleport-B472ZSGz.js} +3 -3
- package/dist/chunks/launchVault-CsyBgxle.js +1 -0
- package/dist/chunks/{loadAgentsDir-BURvZNN6.js → loadAgentsDir-Clu7Uk6a.js} +629 -629
- package/dist/chunks/loadAgentsDir-DTbJJff-.js +1 -0
- package/dist/chunks/loadPluginHooks-Cvd5VdjQ.js +1 -0
- package/dist/chunks/localSearch-DKv8PRLD.js +1 -0
- package/dist/chunks/{localSearch-D2Rs8wQP.js → localSearch-iA6JTk19.js} +1 -1
- package/dist/chunks/{logoV2Utils-DN9nzdX-.js → logoV2Utils-YHBJLIrC.js} +1 -1
- package/dist/chunks/{magicDocs-DIeTcwAA.js → magicDocs-Bf1fqnHN.js} +3 -3
- package/dist/chunks/{main-CI54PZrG.js → main-gtV_TqXP.js} +84 -84
- package/dist/chunks/{mappers-Q_Z3Kjo-.js → mappers-C8lYERPX.js} +1 -1
- package/dist/chunks/{mcp-RvwPC7FB.js → mcp-CNuhEGP6.js} +4 -4
- package/dist/chunks/mcp-Ci0OPVrR.js +1 -0
- package/dist/chunks/mcp-CwIYauZl.js +2 -0
- package/dist/chunks/memory-DCGqfQ1U.js +1 -0
- package/dist/chunks/{mode-Jl_Boaym.js → mode-DO6g7nkX.js} +2 -2
- package/dist/chunks/model-BQF64tZx.js +1 -0
- package/dist/chunks/model-DLXL0CNu.js +1 -0
- package/dist/chunks/model-DvrvG6BB.js +1 -0
- package/dist/chunks/{nativeInstaller-8arnRiUO.js → nativeInstaller-OPuO2sm_.js} +1 -1
- package/dist/chunks/{onChangeAppState-DBantDJ6.js → onChangeAppState-CHhRDkM7.js} +1 -1
- package/dist/chunks/openai-HOebt-8k.js +10 -0
- package/dist/chunks/{overageCreditGrant-CN_sVURL.js → overageCreditGrant-Bi1CTBAx.js} +1 -1
- package/dist/chunks/{panelCall-CPKC6VR5.js → panelCall-D0eURklm.js} +1 -1
- package/dist/chunks/{partition-CW0BJ881.js → partition-C8RSL3SQ.js} +1 -1
- package/dist/chunks/{passes-DOm9ukdK.js → passes-BJci5SM_.js} +1 -1
- package/dist/chunks/permissions-JU9CGHgI.js +3 -0
- package/dist/chunks/{pidLock-C69HNTTb.js → pidLock-Bd2e6xuT.js} +2 -2
- package/dist/chunks/{plan-B0rEs32a.js → plan-D4gMsK7i.js} +1 -1
- package/dist/chunks/{plugin-BSEMgcGu.js → plugin-CwCo5Kik.js} +1 -1
- package/dist/chunks/{pluginAutoupdate-CTByPD8J.js → pluginAutoupdate-CO-n9bqe.js} +1 -1
- package/dist/chunks/{pluginBlocklist-mogKaK0p.js → pluginBlocklist-5qbaTRbV.js} +1 -1
- package/dist/chunks/pluginCliCommands-I-lsw_us.js +1 -0
- package/dist/chunks/{pluginFlagging-mHNff1t9.js → pluginFlagging-DNPBbJZo.js} +1 -1
- package/dist/chunks/{pluginOperations-JEedVzfS.js → pluginOperations-Cz6eQ0Vu.js} +2 -2
- package/dist/chunks/pluginStartupCheck-CoW7073W.js +1 -0
- package/dist/chunks/{pluginStartupCheck-RscVZDi4.js → pluginStartupCheck-DJ9fslCK.js} +1 -1
- package/dist/chunks/plugins-CzJIuPfb.js +4 -0
- package/dist/chunks/policyLimits-BkjgMQD0.js +1 -0
- package/dist/chunks/{poor-DekfGNT7.js → poor-Dha9p9RF.js} +1 -1
- package/dist/chunks/{poorMode-CtcqaiwD.js → poorMode-1NLYiS3Y.js} +1 -1
- package/dist/chunks/poorMode-qlxqU8Hm.js +1 -0
- package/dist/chunks/print-BL4EUT5Z.js +23 -0
- package/dist/chunks/{privacy-settings-CwJ1H8Ua.js → privacy-settings-6ZWxR4Qt.js} +1 -1
- package/dist/chunks/processBashCommand-BZs9wggV.js +1 -0
- package/dist/chunks/processSlashCommand-D8lKLNzM.js +5 -0
- package/dist/chunks/{prompt-DNDgGM9q.js → prompt-Bg_1U0gO.js} +1 -1
- package/dist/chunks/prompt-CN7gBNKS.js +1 -0
- package/dist/chunks/prompt-D-zHhqp8.js +1 -0
- package/dist/chunks/{promptEditor-DMJyosKj.js → promptEditor-BhYDmwdS.js} +2 -2
- package/dist/chunks/{protocolHandler-z2zxAtB1.js → protocolHandler-Dnb7lITm.js} +1 -1
- package/dist/chunks/rate-limit-options-DVzT3eWH.js +1 -0
- package/dist/chunks/{rcDebugLog-DoL1FpGJ.js → rcDebugLog-VKwMl0yg.js} +1 -1
- package/dist/chunks/reconciler-BdRXZTJf.js +4 -0
- package/dist/chunks/{referral-UKJv23_5.js → referral-BlrMpBAV.js} +1 -1
- package/dist/chunks/{refresh-ul_i5R1a.js → refresh-jwqnoK2h.js} +1 -1
- package/dist/chunks/{registerProtocol-CukLQuxJ.js → registerProtocol-CuKZAiCc.js} +1 -1
- package/dist/chunks/{release-notes-CGv_6MMt.js → release-notes-BgP8u7NE.js} +1 -1
- package/dist/chunks/{releaseNotes-BKZNuDLD.js → releaseNotes-CunqVlbU.js} +2 -2
- package/dist/chunks/{reload-plugins-2W11dpLQ.js → reload-plugins-CD9TzvFm.js} +1 -1
- package/dist/chunks/{remote-env-D9xsoBfx.js → remote-env-QaP_W_sv.js} +1 -1
- package/dist/chunks/{remoteBridgeCore-asY9JAXU.js → remoteBridgeCore-9-HVMo63.js} +1 -1
- package/dist/chunks/{remoteManagedSettings-Bxo3bv1U.js → remoteManagedSettings-jZ6u8ZBT.js} +1 -1
- package/dist/chunks/{rename-CHsHMWpO.js → rename-29qxHf8W.js} +1 -1
- package/dist/chunks/{resume-NduOaghx.js → resume-D-SpOy_1.js} +2 -2
- package/dist/chunks/{runtimeObserver-Bo80nWQf.js → runtimeObserver-DOEcrylu.js} +1 -1
- package/dist/chunks/{runtimeObserver-BXbjibFk.js → runtimeObserver-Dm3LIUMp.js} +3 -3
- package/dist/chunks/sandbox-adapter-LzTcKwBp.js +1 -0
- package/dist/chunks/{sandbox-toggle-C-WCDRN4.js → sandbox-toggle-B61AeBor.js} +1 -1
- package/dist/chunks/searchExtraTools-CbJJQqzH.js +1 -0
- package/dist/chunks/{session-pDd13-wE.js → session-RwJCIIcs.js} +2 -2
- package/dist/chunks/{sessionDiscovery-CSUnpsCy.js → sessionDiscovery-dkFeWcA3.js} +1 -1
- package/dist/chunks/sessionFileAccessHooks-B_nNW0zE.js +1 -0
- package/dist/chunks/sessionMemory-C4JAUZ6V.js +1 -0
- package/dist/chunks/sessionMemory-btARBn8H.js +1 -0
- package/dist/chunks/sessionMemoryUtils-BlqAy8oR.js +1 -0
- package/dist/chunks/{sessionObserver-Ur7PqKl_.js → sessionObserver-CSOYgsvH.js} +1 -1
- package/dist/chunks/sessionObserver-DMvWci8-.js +1 -0
- package/dist/chunks/sessionStorage-Diyuvt20.js +1 -0
- package/dist/chunks/{sessionTitle-pWMaI79N.js → sessionTitle-CLOlPZ_M.js} +1 -1
- package/dist/chunks/{sessionTracing-CCPRzOvy.js → sessionTracing-D8wr9j4X.js} +1 -1
- package/dist/chunks/{settings-DfWP5y6X.js → settings-Dlp5JTa_.js} +1 -1
- package/dist/chunks/settingsSync-QWA0VZSu.js +1 -0
- package/dist/chunks/setup-UI9uv2-K.js +3 -0
- package/dist/chunks/{shadowedRuleDetection-Chi3afMR.js → shadowedRuleDetection-CXsmUY2o.js} +1 -1
- package/dist/chunks/{sideQuestion-D03MXdE2.js → sideQuestion-CHpOVzY5.js} +1 -1
- package/dist/chunks/{sinks-B4_pw0Gb.js → sinks-1hFrW9HK.js} +2 -2
- package/dist/chunks/sinks-CXq8-7Qn.js +1 -0
- package/dist/chunks/{skill-learning-7ZQF5JvA.js → skill-learning-Ck17rwH8.js} +1 -1
- package/dist/chunks/skillChangeDetector-s0F9Yf9a.js +1 -0
- package/dist/chunks/{skillGapStore-BND2Lq0Z.js → skillGapStore-BJ1h2LVr.js} +1 -1
- package/dist/chunks/{skillGapStore-z3LP64O-.js → skillGapStore-DyqNKuNy.js} +2 -2
- package/dist/chunks/{skillGenerator-DaNb-yKH.js → skillGenerator-BT8NGzXT.js} +2 -2
- package/dist/chunks/skillLearning-1ZfYIzfL.js +1 -0
- package/dist/chunks/{skillLearning-rMX1bSBa.js → skillLearning-Cn9Uw0Kd.js} +1 -1
- package/dist/chunks/{skillPanel-q7GPSQ6_.js → skillPanel-N0GoWjIi.js} +3 -3
- package/dist/chunks/{skillSearchPanel-oj8gy1ZL.js → skillSearchPanel-CTwtgTzy.js} +3 -3
- package/dist/chunks/{skills-QqbeFP0s.js → skills-Bv3lH-aA.js} +1 -1
- package/dist/chunks/{stats-DmFubHpI.js → stats-C1Ff6w4i.js} +1 -1
- package/dist/chunks/{status-DW3Z_7xa.js → status-DyXiBa0m.js} +2 -2
- package/dist/chunks/{status-BEIsLmfj.js → status-FD7HVYS7.js} +1 -1
- package/dist/chunks/{statusNoticeHelpers-CaHS8xig.js → statusNoticeHelpers-kTp9Rdk6.js} +1 -1
- package/dist/chunks/{tag-CRg93Die.js → tag-RzOSA5T0.js} +2 -2
- package/dist/chunks/{tasks-BEohK1ij.js → tasks-eJrOcdhB.js} +1 -1
- package/dist/chunks/teleport-ABA-hdmP.js +1 -0
- package/dist/chunks/{templateJobs-DYP1fjYU.js → templateJobs-BnOBSFtq.js} +1 -1
- package/dist/chunks/{terminalSetup-RDKg8dVa.js → terminalSetup-BfvmoJaK.js} +1 -1
- package/dist/chunks/{terminalSetup-BNs9nLbT.js → terminalSetup-D_P5iZmq.js} +1 -1
- package/dist/chunks/{theme-kNL4kl_3.js → theme-S0kVMVt4.js} +1 -1
- package/dist/chunks/thinkback-C6gV2LpU.js +1 -0
- package/dist/chunks/thinkback-HyW_R_88.js +1 -0
- package/dist/chunks/{thinkback-play-BpWMqbgJ.js → thinkback-play-H6md4czq.js} +1 -1
- package/dist/chunks/{toolEventObserver-ar5NDa0M.js → toolEventObserver--Z6jENks.js} +1 -1
- package/dist/chunks/{toolEventObserver-C98uraqD.js → toolEventObserver-BAFzvePj.js} +1 -1
- package/dist/chunks/toolPool-CR61XXm3.js +1 -0
- package/dist/chunks/trustedDevice-DUrFWupL.js +1 -0
- package/dist/chunks/{trustedDevice-BBKUhCCL.js → trustedDevice-Dn4rXbxT.js} +1 -1
- package/dist/chunks/types-Bh9S_JG5.js +3 -0
- package/dist/chunks/types-DHkZVzJe.js +1 -0
- package/dist/chunks/{ultrareviewCommand-yXlFsMnv.js → ultrareviewCommand-mYDTBCFD.js} +2 -2
- package/dist/chunks/{undercover-BTIRVF1t.js → undercover-CdapzvNH.js} +1 -1
- package/dist/chunks/undercover-k3JoOKAb.js +1 -0
- package/dist/chunks/{updateCCB-B2xAJ4Nr.js → updateCCB-DPShheOr.js} +1 -1
- package/dist/chunks/upgrade-BOeakAP6.js +1 -0
- package/dist/chunks/upgrade-D7iGU0PQ.js +1 -0
- package/dist/chunks/{upload-BWVIHmMB.js → upload-BXQsDtLW.js} +1 -1
- package/dist/chunks/usage-DbRdMJog.js +1 -0
- package/dist/chunks/usage-iNQzY960.js +1 -0
- package/dist/chunks/{useExitOnCtrlCDWithKeybindings-CV4GZ-sq.js → useExitOnCtrlCDWithKeybindings-CntByfTQ.js} +1 -1
- package/dist/chunks/useMainLoopModel-DHkRIgNs.js +1 -0
- package/dist/chunks/useManagePlugins-B8HD0RUh.js +1 -0
- package/dist/chunks/{useMergedTools-CRLWSGDl.js → useMergedTools-DfchLQZC.js} +1 -1
- package/dist/chunks/{useSearchInput-BzGq4t7t.js → useSearchInput-H-8hJeFD.js} +1 -1
- package/dist/chunks/useSettingsErrors-BF5i5Xju.js +1 -0
- package/dist/chunks/{util-BnReK81E.js → util-CoicMvOv.js} +1 -1
- package/dist/chunks/validatePlugin-z2fcngf8.js +1 -0
- package/dist/chunks/{vim-C0KTnJJs.js → vim-DdvQlLDm.js} +1 -1
- package/dist/chunks/{workerRegistry-CUXbNyL9.js → workerRegistry-CzqQwCHC.js} +1 -1
- package/dist/chunks/worktree-DMhP5T0p.js +1 -0
- package/dist/cli.js +1 -1
- package/package.json +1 -1
- package/dist/chunks/ApproveApiKey-LPrZMlgU.js +0 -1
- package/dist/chunks/BackgroundTasksDialog-D_UHm7xo.js +0 -2
- package/dist/chunks/ClaudeMdExternalIncludesDialog--w2zWWEn.js +0 -1
- package/dist/chunks/ConsoleOAuthFlow-BXdC6j3_.js +0 -1
- package/dist/chunks/Doctor-BuiYwjAS.js +0 -1
- package/dist/chunks/Doctor-DKlHJBXq.js +0 -3
- package/dist/chunks/ExitFlow-rExuBL3w.js +0 -2
- package/dist/chunks/Grove-ENfM8hC6.js +0 -1
- package/dist/chunks/MCPConnectionManager-CaBvO7NB.js +0 -1
- package/dist/chunks/MessageSelector-DOB1S2-O.js +0 -3
- package/dist/chunks/Messages-Clihwd2F.js +0 -11
- package/dist/chunks/PluginSettings-DUxj_oAg.js +0 -17
- package/dist/chunks/QueryEngine-BLcPQYq_.js +0 -1
- package/dist/chunks/REPL-B_E07dnf.js +0 -142
- package/dist/chunks/REPL-BhURgntS.js +0 -1
- package/dist/chunks/RemoteSessionManager-B43isWQs.js +0 -2
- package/dist/chunks/ResumeConversation-DaQ9n8_C.js +0 -1
- package/dist/chunks/SearchExtraToolsTool-DSq7beKs.js +0 -1
- package/dist/chunks/Settings-CNsaWv8g.js +0 -2
- package/dist/chunks/agents-D7um1IXM.js +0 -103
- package/dist/chunks/allErrors-CHVdQ3fT.js +0 -1
- package/dist/chunks/api-C-rOQY-l.js +0 -1
- package/dist/chunks/api-Dmn7DUgU.js +0 -1
- package/dist/chunks/auth-C4Rvit2q.js +0 -1
- package/dist/chunks/auth-Cj7EX1eG.js +0 -1
- package/dist/chunks/auth-DAxGNCIR.js +0 -15
- package/dist/chunks/backgroundHousekeeping-C9m4tiFi.js +0 -17
- package/dist/chunks/backgroundHousekeeping-DQjzXBe0.js +0 -1
- package/dist/chunks/bridgeConfig-DsI5d0s7.js +0 -1
- package/dist/chunks/bridgeEnabled-DZzlF2d8.js +0 -1
- package/dist/chunks/bridgeEnabled-FjPuA7zx.js +0 -1
- package/dist/chunks/bridgeMain-BppY0KW3.js +0 -68
- package/dist/chunks/bridgeMain-BrY4tkF6.js +0 -1
- package/dist/chunks/caches-BBLH8G1I.js +0 -1
- package/dist/chunks/client-CtVu3BLD.js +0 -1
- package/dist/chunks/commands-BWw1sQeH.js +0 -1
- package/dist/chunks/commitAttribution-DIT_s0vY.js +0 -1
- package/dist/chunks/compact-CaOnQVkH.js +0 -2
- package/dist/chunks/config-DmPGzNmi.js +0 -1
- package/dist/chunks/config-HHTwEsWp.js +0 -1
- package/dist/chunks/context-noninteractive-BilCSCV1.js +0 -1
- package/dist/chunks/conversation-BWXf3un9.js +0 -1
- package/dist/chunks/conversation-awh8AwwL.js +0 -1
- package/dist/chunks/createSession-Hvpx3Le7.js +0 -1
- package/dist/chunks/crossProjectResume-_XjvSXA3.js +0 -40
- package/dist/chunks/doctor-CkdQ7Fv7.js +0 -1
- package/dist/chunks/effort-DCgooYMY.js +0 -9
- package/dist/chunks/envLessBridgeConfig-sxodu0xO.js +0 -1
- package/dist/chunks/exit-CFJR3NfE.js +0 -1
- package/dist/chunks/extra-usage-D1Y-3OWQ.js +0 -1
- package/dist/chunks/extraUsage-2DwLEr26.js +0 -1
- package/dist/chunks/extractMemories-C3qrwpu2.js +0 -1
- package/dist/chunks/fast-D3CPmUX4.js +0 -1
- package/dist/chunks/firstPartyEventLogger-DPUQnc6J.js +0 -1
- package/dist/chunks/hooks-cCAzfabs.js +0 -1
- package/dist/chunks/inboundAttachments-DZgSqDwY.js +0 -1
- package/dist/chunks/initReplBridge-myzllvlk.js +0 -1
- package/dist/chunks/keybindings-DETOn3qJ.js +0 -2
- package/dist/chunks/language-BbaOTWm3.js +0 -1
- package/dist/chunks/launchAgentsPlatform-CuRQgd2Q.js +0 -1
- package/dist/chunks/launchMemoryStores-CN0ecWpP.js +0 -1
- package/dist/chunks/launchSchedule-psiSLmTA.js +0 -1
- package/dist/chunks/launchSkillStore-CQQ00Ads.js +0 -1
- package/dist/chunks/launchVault-Dn6jq0Rc.js +0 -1
- package/dist/chunks/loadAgentsDir-Db9UTm45.js +0 -1
- package/dist/chunks/loadPluginHooks-C9A9oS-w.js +0 -1
- package/dist/chunks/localSearch-hBh1ATr2.js +0 -1
- package/dist/chunks/mcp-CtbhGaLC.js +0 -2
- package/dist/chunks/mcp-DMacvhqZ.js +0 -1
- package/dist/chunks/memory-BPN8gW7n.js +0 -1
- package/dist/chunks/model-BIVmcl_N.js +0 -1
- package/dist/chunks/model-CWBwPvTH.js +0 -1
- package/dist/chunks/model-DlVpqR0P.js +0 -1
- package/dist/chunks/openai-yin1iDG8.js +0 -10
- package/dist/chunks/permissions-CxDJ__l6.js +0 -3
- package/dist/chunks/pluginCliCommands-DQQ7C7kk.js +0 -1
- package/dist/chunks/pluginStartupCheck-D7ts2V3p.js +0 -1
- package/dist/chunks/plugins-Cr03lISA.js +0 -4
- package/dist/chunks/policyLimits-DWtLyJ4n.js +0 -1
- package/dist/chunks/poorMode-AE4WNYZo.js +0 -1
- package/dist/chunks/print-CZUmAzmt.js +0 -23
- package/dist/chunks/processBashCommand-aKNneP2u.js +0 -1
- package/dist/chunks/processSlashCommand-BcPnWNxZ.js +0 -5
- package/dist/chunks/prompt-CIyhCdkE.js +0 -1
- package/dist/chunks/prompt-DRhjinu2.js +0 -1
- package/dist/chunks/rate-limit-options--Y3oF1g0.js +0 -1
- package/dist/chunks/reconciler-CJcSh6xo.js +0 -4
- package/dist/chunks/sandbox-adapter-DDfVl_2V.js +0 -1
- package/dist/chunks/searchExtraTools-BHWzsbNO.js +0 -1
- package/dist/chunks/sessionFileAccessHooks-BZvxeufx.js +0 -1
- package/dist/chunks/sessionMemory-CAmpw2yb.js +0 -1
- package/dist/chunks/sessionMemory-DT0IkiA1.js +0 -1
- package/dist/chunks/sessionMemoryUtils-B4kGNH4j.js +0 -1
- package/dist/chunks/sessionObserver-oIkwTidC.js +0 -1
- package/dist/chunks/sessionStorage-DqARUj0K.js +0 -1
- package/dist/chunks/settingsSync-D_4P3Esd.js +0 -1
- package/dist/chunks/setup-JHvhWKh9.js +0 -3
- package/dist/chunks/sinks-Cro1Y8C2.js +0 -1
- package/dist/chunks/skillChangeDetector-uCaYrerZ.js +0 -1
- package/dist/chunks/skillLearning-GZxYPlyl.js +0 -1
- package/dist/chunks/teleport-4Srg5vcP.js +0 -1
- package/dist/chunks/thinkback-gV-sKkMM.js +0 -1
- package/dist/chunks/thinkback-hc5eJ9ul.js +0 -1
- package/dist/chunks/toolPool-CNYKDRq5.js +0 -1
- package/dist/chunks/trustedDevice-0dehm9qz.js +0 -1
- package/dist/chunks/types-BUyOCzUt.js +0 -1
- package/dist/chunks/types-Czs-_G1S.js +0 -3
- package/dist/chunks/undercover-CG_269xD.js +0 -1
- package/dist/chunks/upgrade-J7lKLkD2.js +0 -1
- package/dist/chunks/upgrade-yNl7EO4e.js +0 -1
- package/dist/chunks/usage-B2PbCUMi.js +0 -1
- package/dist/chunks/usage-Ck8Cu45g.js +0 -1
- package/dist/chunks/useMainLoopModel-CO4yBjRM.js +0 -1
- package/dist/chunks/useManagePlugins-BzFKIDrD.js +0 -1
- package/dist/chunks/useSettingsErrors-CSemUjj1.js +0 -1
- package/dist/chunks/validatePlugin-D6sPqea1.js +0 -1
- package/dist/chunks/worktree-89ttIVxH.js +0 -1
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import{l as e,o as t,u as n}from"./envUtils-DSxRz_kt.js";import{Gr as r,di as i,t as a,ui as o}from"./src-CDCSSo0U2.js";import{Aa as s,Et as c,Fa as l,LC as u,Ma as d,Na as f,Pa as p,RC as m,cx as h,dx as g,hx as _,ja as v,jt as y,lx as b,mx as x,ox as S,px as C,ux as ee,vt as w}from"./loadAgentsDir-BURvZNN6.js";import{C as T,F as E,S as D,a as O,l as k,w as A,z as j}from"./debug-BrXObCdR.js";import{Gt as M,Kt as N,Wt as te}from"./settings-DfWP5y6X.js";import{M as P,j as F}from"./git-Do0wJvux.js";import{o as I,s as L}from"./log-BMCygSzM.js";import{i as R,n as z,r as B}from"./analytics-BotDBGh0.js";import{T as V,b as H,u as U}from"./startupProfiler-xa3NmN7Z.js";import{vn as W,yn as G}from"./model-BIVmcl_N.js";import{n as K,t as q}from"./rcDebugLog-DoL1FpGJ.js";import{c as J,d as ne,f as re,n as Y,o as X,r as ie}from"./debugUtils-NO5KtXqi.js";import{n as ae,s as oe}from"./firstPartyEventLogger-CuUiNdj8.js";import{n as se,t as ce}from"./datadog-Ed8emSFA.js";import{a as le,t as ue}from"./types-Czs-_G1S.js";import{i as de,n as Z,r as Q}from"./cliLaunch-BkPAatcs.js";import{t as $}from"./lib-BlVGipXx.js";import{t as fe}from"./capacityWake-CV_x9H8j.js";import{t as pe}from"./jwtUtils-DE2GPUcx.js";import{t as me}from"./pollConfig-DH2oCtFS.js";import{i as he}from"./trustedDevice-BBKUhCCL.js";import{a as ge,i as _e,n as ve,r as ye,t as be}from"./workSecret-CNWiR2uQ.js";import{hostname as xe,tmpdir as Se}from"os";import{basename as Ce,dirname as we,join as Te,resolve as Ee}from"path";import{createWriteStream as De}from"fs";import{randomUUID as Oe}from"crypto";import{spawn as ke}from"child_process";import{createInterface as Ae}from"readline";t(),j(),D(),F(),I(),z(),H(),W(),m(),ce(),ae(),X(),q(),le(),d(),c(),de(),i();var je=$();N(),a(),O(),C();var Me={type:`utf8`,errorCorrectionLevel:`L`,small:!0};async function Ne(e){return(await(0,je.toString)(e,Me)).split(`
|
|
2
|
-
`).filter(e=>e.length>0)}function Pe(e){let t=e.write??(e=>process.stdout.write(e)),n=e.verbose,i=0,a=`idle`,s=`Ready`,c=``,l=``,u=``,d=``,f=``,p=``,m=null,v=[],y=!1,C=null,w=0,T=0,E=1,D=null,O=`single-session`,A=new Map,j=null,N=0;function P(e){let t=process.stdout.columns||80,n=0;for(let i of e.split(`
|
|
3
|
-
`)){if(i.length===0){n++;continue}let e=r(i);n+=Math.max(1,Math.ceil(e/t))}return e.endsWith(`
|
|
4
|
-
`)&&n--,n}function F(e){t(e),i+=P(e)}function I(){i<=0||(k(`[bridge:ui] clearStatusLines count=${i}`),t(`\x1b[${i}A`),t(`\x1B[J`),i=0)}function L(e){I(),t(e)}function R(e){Ne(e).then(e=>{v=e,W()}).catch(e=>{k(`QR code generation failed: ${e}`,{level:`error`})})}function z(){I();let e=M[N%M.length],t=``;c&&(t+=o.dim(` · `)+o.dim(c)),l&&(t+=o.dim(` · `)+o.dim(l)),F(`${o.yellow(e)} ${o.yellow(`Connecting`)}${t}\n`)}function B(){H(),z(),j=setInterval(()=>{N++,z()},150)}function H(){j&&(clearInterval(j),j=null)}function W(){if(a===`reconnecting`||a===`failed`)return;I();let e=a===`idle`;if(y)for(let e of v)F(`${o.dim(e)}\n`);let t=te,n=e?o.green:o.cyan,r=(e?o.green:o.cyan)(s),i=``;if(c&&(i+=o.dim(` · `)+o.dim(c)),l&&O!==`worktree`&&(i+=o.dim(` · `)+o.dim(l)),process.env.USER_TYPE===`ant`&&u&&F(`${o.yellow(`[ANT-ONLY] Logs:`)} ${o.dim(u)}\n`),F(`${n(t)} ${r}${i}\n`),E>1){let e=O===`worktree`?`New sessions will be created in an isolated worktree`:`New sessions will be created in the current directory`;F(` ${o.dim(`Capacity: ${T}/${E} \u00b7 ${e}`)}\n`);for(let[,e]of A){let t=_(e.title?V(e.title,35):o.dim(`Attached`),e.url),n=e.activity;F(` ${t}${n&&n.type!==`result`&&n.type!==`error`?o.dim(` ${V(n.summary,40)}`):``}
|
|
5
|
-
`)}}if(E===1){let e=O===`single-session`?`Single session · exits when complete`:O===`worktree`?`Capacity: ${T}/1 \u00b7 New sessions will be created in an isolated worktree`:`Capacity: ${T}/1 \u00b7 New sessions will be created in the current directory`;F(` ${o.dim(e)}\n`)}E===1&&!e&&C&&Date.now()-w<3e4&&F(` ${o.dim(V(C,60))}\n`);let f=m??d;if(f){F(`
|
|
6
|
-
`);let t=e?g(f):h(f),n=y?o.dim.italic(`space to hide QR code`):o.dim.italic(`space to show QR code`),r=D?o.dim.italic(` · w to toggle spawn mode`):``;F(`${o.dim(t)}\n`),F(`${n}${r}\n`)}}return{printBanner(e,r){f=e.sessionIngressUrl,p=r,d=b(r,f),R(d),n&&t(o.dim(`Remote Control`)+` v0.0.4
|
|
7
|
-
`),n&&(e.spawnMode!==`single-session`&&(t(o.dim(`Spawn mode: `)+`${e.spawnMode}\n`),t(o.dim(`Max concurrent sessions: `)+`${e.maxSessions}\n`)),t(o.dim(`Environment ID: `)+`${r}\n`)),e.sandbox&&t(o.dim(`Sandbox: `)+`${o.green(`Enabled`)}\n`),t(`
|
|
8
|
-
`),B()},logSessionStart(e,t){if(n){let n=V(t,80);L(o.dim(`[${x()}]`)+` Session started: ${o.white(`"${n}"`)} (${o.dim(e)})\n`)}},logSessionComplete(e,t){L(o.dim(`[${x()}]`)+` Session ${o.green(`completed`)} (${U(t)}) ${o.dim(e)}\n`)},logSessionFailed(e,t){L(o.dim(`[${x()}]`)+` Session ${o.red(`failed`)}: ${t} ${o.dim(e)}\n`)},logStatus(e){L(o.dim(`[${x()}]`)+` ${e}\n`)},logVerbose(e){n&&L(o.dim(`[${x()}] ${e}`)+`
|
|
9
|
-
`)},logError(e){L(o.red(`[${x()}] Error: ${e}`)+`
|
|
10
|
-
`)},logReconnected(e){L(o.dim(`[${x()}]`)+` ${o.green(`Reconnected`)} after ${U(e)}\n`)},setRepoInfo(e,t){c=e,l=t},setDebugLogPath(e){u=e},updateIdleStatus(){H(),a=`idle`,s=`Ready`,C=null,w=0,m=null,R(d),W()},setAttached(e){H(),a=`attached`,s=`Connected`,C=null,w=0,E<=1&&(m=ee(e,p,f),R(m)),W()},updateReconnectingStatus(e,t){if(H(),I(),a=`reconnecting`,y)for(let e of v)F(`${o.dim(e)}\n`);let n=M[N%M.length];N++,F(`${o.yellow(n)} ${o.yellow(`Reconnecting`)} ${o.dim(`·`)} ${o.dim(`retrying in ${e}`)} ${o.dim(`·`)} ${o.dim(`disconnected ${t}`)}\n`)},updateFailedStatus(e){H(),I(),a=`failed`;let t=``;c&&(t+=o.dim(` · `)+o.dim(c)),l&&(t+=o.dim(` · `)+o.dim(l)),F(`${o.red(`×`)} ${o.red(`Remote Control Failed`)}${t}\n`),F(`${o.dim(S)}\n`),e&&F(`${o.red(e)}\n`)},updateSessionStatus(e,t,n,r){n.type===`tool_start`&&(C=n.summary,w=Date.now()),W()},clearStatus(){H(),I()},toggleQr(){y=!y,W()},updateSessionCount(e,t,n){T===e&&E===t&&O===n||(T=e,E=t,O=n)},setSpawnModeDisplay(e){D!==e&&(D=e,e&&(O=e))},addSession(e,t){A.set(e,{url:t})},updateSessionActivity(e,t){let n=A.get(e);n&&(n.activity=t)},setSessionTitle(e,t){let n=A.get(e);n&&(n.title=t,!(a===`reconnecting`||a===`failed`)&&(E===1&&(a=`titled`,s=V(t,40)),W()))},removeSession(e){A.delete(e)},refreshDisplay(){a===`reconnecting`||a===`failed`||W()}}}J();var Fe=10,Ie=10;function Le(e){return e.replace(/[^a-zA-Z0-9_-]/g,`_`)}var Re={Read:`Reading`,Write:`Writing`,Edit:`Editing`,MultiEdit:`Editing`,Bash:`Running`,Glob:`Searching`,Grep:`Searching`,WebFetch:`Fetching`,WebSearch:`Searching`,Task:`Running task`,FileReadTool:`Reading`,FileWriteTool:`Writing`,FileEditTool:`Editing`,GlobTool:`Searching`,GrepTool:`Searching`,BashTool:`Running`,NotebookEditTool:`Editing notebook`,LSP:`LSP`};function ze(e,t){let n=Re[e]??e,r=t.file_path??t.filePath??t.pattern??t.command?.slice(0,60)??t.url??t.query??``;return r?`${n} ${r}`:n}function Be(e,t,n){let r;try{r=T(e)}catch{return[]}if(!r||typeof r!=`object`)return[];let i=r,a=[],o=Date.now();switch(i.type){case`assistant`:{let e=i.message;if(!e)break;let r=e.content;if(!Array.isArray(r))break;for(let e of r){if(!e||typeof e!=`object`)continue;let r=e;if(r.type===`tool_use`){let e=r.name??`Tool`,i=r.input??{},s=ze(e,i);a.push({type:`tool_start`,summary:s,timestamp:o}),n(`[bridge:activity] sessionId=${t} tool_use name=${e} ${He(i)}`)}else if(r.type===`text`){let e=r.text??``;e.length>0&&(a.push({type:`text`,summary:e.slice(0,80),timestamp:o}),n(`[bridge:activity] sessionId=${t} text "${e.slice(0,100)}"`))}}break}case`result`:{let e=i.subtype;if(e===`success`)a.push({type:`result`,summary:`Session completed`,timestamp:o}),n(`[bridge:activity] sessionId=${t} result subtype=success`);else if(e){let r=i.errors?.[0]??`Error: ${e}`;a.push({type:`error`,summary:r,timestamp:o}),n(`[bridge:activity] sessionId=${t} result subtype=${e} error="${r}"`)}else n(`[bridge:activity] sessionId=${t} result subtype=undefined`);break}default:break}return a}function Ve(e){if(e.parent_tool_use_id!=null||e.isSynthetic||e.isReplay)return;let t=e.message?.content,n;if(typeof t==`string`)n=t;else if(Array.isArray(t)){for(let e of t)if(e&&typeof e==`object`&&e.type===`text`){n=e.text;break}}return n=n?.trim(),n||void 0}function He(e){let t=[];for(let[n,r]of Object.entries(e))if(typeof r==`string`&&t.push(`${n}="${r.slice(0,100)}"`),t.length>=3)break;return t.join(` `)}function Ue(e){return{spawn(t,n){let r=Le(t.sessionId),i;if(e.debugFile){let t=e.debugFile.lastIndexOf(`.`);i=t>0?`${e.debugFile.slice(0,t)}-${r}${e.debugFile.slice(t)}`:`${e.debugFile}-${r}`}else(e.verbose||process.env.USER_TYPE===`ant`)&&(i=Te(Se(),`claude`,`bridge-session-${r}.log`));let a=null,o;e.debugFile&&(o=Te(we(e.debugFile),`bridge-transcript-${r}.jsonl`),a=De(o,{flags:`a`}),a.on(`error`,t=>{e.onDebug(`[bridge:session] Transcript write error: ${t.message}`),a=null}),e.onDebug(`[bridge:session] Transcript log: ${o}`));let s=[...e.scriptArgs,`--print`,`--sdk-url`,t.sdkUrl,`--session-id`,t.sessionId,`--input-format`,`stream-json`,`--output-format`,`stream-json`,`--replay-user-messages`,...e.verbose?[`--verbose`]:[],...i?[`--debug-file`,i]:[],...e.permissionMode?[`--permission-mode`,e.permissionMode]:[]],c={...e.env,CLAUDE_CODE_OAUTH_TOKEN:void 0,CLAUDE_CODE_ENVIRONMENT_KIND:`bridge`,...e.sandbox&&{CLAUDE_CODE_FORCE_SANDBOX:`1`},CLAUDE_CODE_SESSION_ACCESS_TOKEN:t.accessToken,CLAUDE_CODE_POST_FOR_SESSION_INGRESS_V2:`1`,...t.useCcrV2&&{CLAUDE_CODE_USE_CCR_V2:`1`,CLAUDE_CODE_WORKER_EPOCH:String(t.workerEpoch)}};e.onDebug(`[bridge:session] Spawning sessionId=${t.sessionId} sdkUrl=${t.sdkUrl} accessToken=${t.accessToken?`present`:`MISSING`}`),e.onDebug(`[bridge:session] Child args: ${s.join(` `)}`),i&&e.onDebug(`[bridge:session] Debug log: ${i}`);let l=ke(e.execPath,s,{cwd:n,stdio:[`pipe`,`pipe`,`pipe`],env:c,windowsHide:!0});e.onDebug(`[bridge:session] sessionId=${t.sessionId} pid=${l.pid}`);let u=[],d=null,f=[],p=!1,m=!1;l.stderr&&Ae({input:l.stderr}).on(`line`,t=>{e.verbose&&process.stderr.write(t+`
|
|
11
|
-
`),f.length>=Ie&&f.shift(),f.push(t)}),l.stdout&&Ae({input:l.stdout}).on(`line`,n=>{a&&a.write(n+`
|
|
12
|
-
`),e.onDebug(`[bridge:ws] sessionId=${t.sessionId} <<< ${Y(n)}`),e.verbose&&process.stderr.write(n+`
|
|
13
|
-
`);let r=Be(n,t.sessionId,e.onDebug);for(let n of r)u.length>=Fe&&u.shift(),u.push(n),d=n,e.onActivity?.(t.sessionId,n);{let r;try{r=T(n)}catch{}if(r&&typeof r==`object`){let n=r;if(n.type===`control_request`)n.request?.subtype===`can_use_tool`&&e.onPermissionRequest&&e.onPermissionRequest(t.sessionId,r,t.accessToken);else if(n.type===`user`&&!m&&t.onFirstUserMessage){let e=Ve(n);e&&(m=!0,t.onFirstUserMessage(e))}}}});let h=new Promise(n=>{l.on(`close`,(r,i)=>{a&&(a.end(),a=null),i===`SIGTERM`||i===`SIGINT`?(e.onDebug(`[bridge:session] sessionId=${t.sessionId} interrupted signal=${i} pid=${l.pid}`),n(`interrupted`)):r===0?(e.onDebug(`[bridge:session] sessionId=${t.sessionId} completed exit_code=0 pid=${l.pid}`),n(`completed`)):(e.onDebug(`[bridge:session] sessionId=${t.sessionId} failed exit_code=${r} pid=${l.pid}`),n(`failed`))}),l.on(`error`,r=>{e.onDebug(`[bridge:session] sessionId=${t.sessionId} spawn error: ${r.message}`),n(`failed`)})}),g={sessionId:t.sessionId,done:h,activities:u,accessToken:t.accessToken,lastStderr:f,get currentActivity(){return d},kill(){l.killed||(e.onDebug(`[bridge:session] Sending SIGTERM to sessionId=${t.sessionId} pid=${l.pid}`),process.platform===`win32`?l.kill():l.kill(`SIGTERM`))},forceKill(){!p&&l.pid&&(p=!0,e.onDebug(`[bridge:session] Sending SIGKILL to sessionId=${t.sessionId} pid=${l.pid}`),process.platform===`win32`?l.kill():l.kill(`SIGKILL`))},writeStdin(n){l.stdin&&!l.stdin.destroyed&&(e.onDebug(`[bridge:ws] sessionId=${t.sessionId} >>> ${Y(n)}`),l.stdin.write(n))},updateAccessToken(n){g.accessToken=n,g.writeStdin(A({type:`update_environment_variables`,variables:{CLAUDE_CODE_SESSION_ACCESS_TOKEN:n}})+`
|
|
14
|
-
`),e.onDebug(`[bridge:session] Sent token refresh via stdin for sessionId=${t.sessionId}`)}};return g}}}O(),C(),X();var We={connInitialMs:2e3,connCapMs:12e4,connGiveUpMs:6e5,generalInitialMs:500,generalCapMs:3e4,generalGiveUpMs:6e5},Ge=1e3,Ke=32;async function qe(){return!1}function Je(e){return e.connCapMs*2}function Ye(){let e=[...Z()],t=Q();return t&&e.push(t),e}function Xe(e,t,n){try{return e.spawn(t,n)}catch(e){let t=E(e);return L(Error(`Session spawn failed: ${t}`)),t}}async function Ze(t,r,i,a,o,c,d,m=We,h,g){let _=new AbortController;d.aborted?_.abort():d.addEventListener(`abort`,()=>_.abort(),{once:!0});let v=_.signal,b=new Map,x=new Map,S=new Map,C=new Map,ee=new Map,T=new Map,D=new Set,O=new Map,A=new Set,j=new Set,M=fe(v);async function N(){K(`heartbeat: checking ${b.size} active session(s)`);let e=!1,t=!1,n=[];for(let[i]of b){let o=S.get(i),c=ee.get(i);if(!(!o||!c))try{await a.heartbeatWork(r,o,c),e=!0}catch(e){k(`[bridge:heartbeat] Failed for sessionId=${i} workId=${o}: ${E(e)}`),e instanceof s&&(B(`tengu_bridge_heartbeat_error`,{status:e.status,error_type:e.status===401||e.status===403?`auth_failed`:`fatal`}),e.status===401||e.status===403?n.push(i):t=!0)}}for(let e of n){c.logVerbose(`Session ${e} token expired — re-queuing via bridge/reconnect`);try{await a.reconnectSession(r,e),k(`[bridge:heartbeat] Re-queued sessionId=${e} via bridge/reconnect`)}catch(t){c.logError(`Failed to refresh session ${e} token: ${E(t)}`),k(`[bridge:heartbeat] reconnectSession(${e}) failed: ${E(t)}`,{level:`error`})}}return t?`fatal`:n.length>0?`auth_failed`:e?`ok`:`failed`}let te=new Set,F=g?pe({getAccessToken:g,onRefresh:(e,t)=>{let n=b.get(e);n&&(te.has(e)?(c.logVerbose(`Refreshing session ${e} token via bridge/reconnect`),a.reconnectSession(r,e).catch(t=>{c.logError(`Failed to refresh session ${e} token: ${E(t)}`),k(`[bridge:token] reconnectSession(${e}) failed: ${E(t)}`,{level:`error`})})):n.updateAccessToken(t))},label:`bridge`}):null,I=Date.now(),R=new Set;function z(e){R.add(e),e.finally(()=>R.delete(e))}let V=0,H=0,W=null,q=null,J=null,re=null,Y=!1;if(k(`[bridge:work] Starting poll loop spawnMode=${t.spawnMode} maxSessions=${t.maxSessions} environmentId=${r}`),P(`info`,`bridge_loop_started`,{max_sessions:t.maxSessions,spawn_mode:t.spawnMode}),process.env.USER_TYPE===`ant`){let e;if(t.debugFile){let n=t.debugFile.lastIndexOf(`.`);e=n>0?`${t.debugFile.slice(0,n)}-*${t.debugFile.slice(n)}`:`${t.debugFile}-*`}else e=Te(Se(),`claude`,`bridge-session-*.log`);c.setDebugLogPath(e)}c.printBanner(t,r),c.updateSessionCount(0,t.maxSessions,t.spawnMode),h&&c.setAttached(h);function X(){c.updateSessionCount(b.size,t.maxSessions,t.spawnMode);for(let[e,t]of b){let n=t.currentActivity;n&&c.updateSessionActivity(C.get(e)??e,n)}if(b.size===0){c.updateIdleStatus();return}let[e,n]=[...b.entries()].pop(),r=x.get(e);if(!r)return;let i=n.currentActivity;if(!i||i.type===`result`||i.type===`error`){t.maxSessions>1&&c.refreshDisplay();return}let a=U(Date.now()-r),o=n.activities.filter(e=>e.type===`tool_start`).slice(-5).map(e=>e.summary);c.updateSessionStatus(e,a,i,o)}function ae(){oe(),X(),re=setInterval(X,Ge)}function oe(){re&&(clearInterval(re),re=null)}function se(e,n,i){return o=>{let s=S.get(e);K(`session done: sessionId=${e} workId=${s??`none`} status=${o} wasTimedOut=${A.has(e)} duration=${Math.round((Date.now()-n)/1e3)}s stderr=${i.lastStderr.length>0?i.lastStderr.join(`\\n`).slice(0,500):`(none)`}`),b.delete(e),x.delete(e),S.delete(e),ee.delete(e);let l=C.get(e)??e;C.delete(e),c.removeSession(l),j.delete(l),te.delete(e);let u=T.get(e);u&&(clearTimeout(u),T.delete(e)),F?.cancel(e),M.wake();let d=A.delete(e),f=d&&o===`interrupted`?`failed`:o,p=Date.now()-n;k(`[bridge:session] sessionId=${e} workId=${s??`unknown`} exited status=${f} duration=${U(p)}`),B(`tengu_bridge_session_done`,{status:f,duration_ms:p}),P(`info`,`bridge_session_done`,{status:f,duration_ms:p}),c.clearStatus(),oe();let h=i.lastStderr.length>0?i.lastStderr.join(`
|
|
15
|
-
`):void 0,g;switch(f){case`completed`:c.logSessionComplete(e,p);break;case`failed`:!d&&!v.aborted&&(g=h??`Process exited with error`,c.logSessionFailed(e,g),L(Error(`Bridge session failed: ${g}`)));break;case`interrupted`:c.logVerbose(`Session ${e} interrupted`);break}f!==`interrupted`&&s&&(z(rt(a,r,s,c,m.stopWorkBaseDelayMs)),D.add(s));let w=O.get(e);if(w&&(O.delete(e),z(y(w.worktreePath,w.worktreeBranch,w.gitRoot,w.hookBased).catch(e=>c.logVerbose(`Failed to remove worktree ${w.worktreePath}: ${E(e)}`)))),f!==`interrupted`&&!v.aborted)if(t.spawnMode!==`single-session`)z(a.archiveSession(l).catch(t=>c.logVerbose(`Failed to archive session ${e}: ${E(t)}`))),k(`[bridge:session] Session ${f}, returning to idle (multi-session mode)`);else{k(`[bridge:session] Session ${f}, aborting poll loop to tear down environment`),_.abort();return}v.aborted||ae()}}for(h||ae();!v.aborted;){let d=me();try{K(`poll: envId=${r} activeSessions=${b.size}`);let s=await a.pollForWork(r,i,v,d.reclaim_older_than_ms);if(W!==null||q!==null){let e=Date.now()-(W??q??Date.now());c.logReconnected(e),k(`[bridge:poll] Reconnected after ${U(e)}`),B(`tengu_bridge_reconnected`,{disconnected_ms:e})}if(V=0,H=0,W=null,q=null,J=null,!s){if(b.size>=t.maxSessions){let e=d.multisession_poll_interval_ms_at_capacity;if(d.non_exclusive_heartbeat_interval_ms>0){B(`tengu_bridge_heartbeat_mode_entered`,{active_sessions:b.size,heartbeat_interval_ms:d.non_exclusive_heartbeat_interval_ms});let n=e>0?Date.now()+e:null,r=`ok`,i=0;for(;!v.aborted&&b.size>=t.maxSessions&&(n===null||Date.now()<n);){let e=me();if(e.non_exclusive_heartbeat_interval_ms<=0)break;let t=M.signal();if(r=await N(),r===`auth_failed`||r===`fatal`){t.cleanup();break}i++,await G(e.non_exclusive_heartbeat_interval_ms,t.signal),t.cleanup()}let a=r===`auth_failed`||r===`fatal`?r:v.aborted?`shutdown`:b.size<t.maxSessions?`capacity_changed`:n!==null&&Date.now()>=n?`poll_due`:`config_disabled`;if(B(`tengu_bridge_heartbeat_mode_exited`,{reason:a,heartbeat_cycles:i,active_sessions:b.size}),a===`poll_due`&&k(`[bridge:poll] Heartbeat poll_due after ${i} cycles — falling through to pollForWork`),r===`auth_failed`||r===`fatal`){let t=M.signal();await G(e>0?e:d.non_exclusive_heartbeat_interval_ms,t.signal),t.cleanup()}}else if(e>0){let t=M.signal();await G(e,t.signal),t.cleanup()}}else await G(b.size>0?d.multisession_poll_interval_ms_partial_capacity:d.multisession_poll_interval_ms_not_at_capacity,v);continue}let f=b.size>=t.maxSessions;if(D.has(s.id)){if(k(`[bridge:work] Skipping already-completed workId=${s.id}`),f){let e=M.signal();d.non_exclusive_heartbeat_interval_ms>0?(await N(),await G(d.non_exclusive_heartbeat_interval_ms,e.signal)):d.multisession_poll_interval_ms_at_capacity>0&&await G(d.multisession_poll_interval_ms_at_capacity,e.signal),e.cleanup()}else await G(1e3,v);continue}let p;try{p=ye(s.secret)}catch(e){let t=E(e);if(c.logError(`Failed to decode work secret for workId=${s.id}: ${t}`),B(`tengu_bridge_work_secret_failed`,{}),D.add(s.id),z(rt(a,r,s.id,c,m.stopWorkBaseDelayMs)),f){let e=M.signal();d.non_exclusive_heartbeat_interval_ms>0?(await N(),await G(d.non_exclusive_heartbeat_interval_ms,e.signal)):d.multisession_poll_interval_ms_at_capacity>0&&await G(d.multisession_poll_interval_ms_at_capacity,e.signal),e.cleanup()}continue}let g=async()=>{k(`[bridge:work] Acknowledging workId=${s.id}`);try{await a.acknowledgeWork(r,s.id,p.session_ingress_token)}catch(e){k(`[bridge:work] Acknowledge failed workId=${s.id}: ${E(e)}`)}},_=s.data.type;switch(s.data.type){case`healthcheck`:await g(),k(`[bridge:work] Healthcheck received`),c.logVerbose(`Healthcheck received`);break;case`session`:{let i=s.data.id;K(`work received: type=session sessionId=${i} workId=${s.id}`);try{l(i,`session_id`)}catch{await g(),c.logError(`Invalid session_id received: ${i}`);break}let d=b.get(i);if(d){d.updateAccessToken(p.session_ingress_token),ee.set(i,p.session_ingress_token),S.set(i,s.id),F?.schedule(i,p.session_ingress_token),k(`[bridge:work] Updated access token for existing sessionId=${i} workId=${s.id}`),await g();break}if(b.size>=t.maxSessions){k(`[bridge:work] At capacity (${b.size}/${t.maxSessions}), cannot spawn new session for workId=${s.id}`);break}await g();let f=Date.now(),_,M=!1,N;if(p.use_code_sessions===!0||e(process.env.CLAUDE_BRIDGE_USE_CCR_V2)){_=be(t.apiBaseUrl,i);for(let e=1;e<=2;e++)try{N=await _e(_,p.session_ingress_token),M=!0,k(`[bridge:session] CCR v2: registered worker sessionId=${i} epoch=${N} attempt=${e}`);break}catch(t){let n=E(t);if(e<2){if(k(`[bridge:session] CCR v2: registerWorker attempt ${e} failed, retrying: ${n}`),await G(2e3,v),v.aborted)break;continue}c.logError(`CCR v2 worker registration failed for session ${i}: ${n}`),L(Error(`registerWorker failed: ${n}`)),D.add(s.id),z(rt(a,r,s.id,c,m.stopWorkBaseDelayMs))}if(!M)break}else _=ve(t.sessionIngressUrl,i);let I=t.spawnMode,R=t.dir,V=0;if(I===`worktree`&&(h===void 0||!ge(i,h))){let e=Date.now();try{let t=await w(`bridge-${Le(i)}`);V=Date.now()-e,O.set(i,{worktreePath:t.worktreePath,worktreeBranch:t.worktreeBranch,gitRoot:t.gitRoot,hookBased:t.hookBased}),R=t.worktreePath,k(`[bridge:session] Created worktree for sessionId=${i} at ${t.worktreePath}`)}catch(e){let t=E(e);c.logError(`Failed to create worktree for session ${i}: ${t}`),L(Error(`Worktree creation failed: ${t}`)),D.add(s.id),z(rt(a,r,s.id,c,m.stopWorkBaseDelayMs));break}}k(`[bridge:session] Spawning sessionId=${i} sdkUrl=${_}`);let H=ne(i);K(`spawning session: sessionId=${i} sdkUrl=${_} useCcrV2=${M} workerEpoch=${N} dir=${R} accessToken=${p.session_ingress_token?p.session_ingress_token.slice(0,8)+`...`:`NONE`}`);let U=Xe(o,{sessionId:i,sdkUrl:_,accessToken:p.session_ingress_token,useCcrV2:M,workerEpoch:N,onFirstUserMessage:e=>{if(j.has(H))return;j.add(H);let n=dt(e);c.setSessionTitle(H,n),k(`[bridge:title] derived title for ${H}: ${n}`),import(`./createSession-Hvpx3Le7.js`).then(({updateBridgeSessionTitle:e})=>e(H,n,{baseUrl:t.apiBaseUrl})).catch(e=>k(`[bridge:title] failed to update title for ${H}: ${e}`,{level:`error`}))}},R);if(typeof U==`string`){c.logError(`Failed to spawn session ${i}: ${U}`);let e=O.get(i);e&&(O.delete(i),z(y(e.worktreePath,e.worktreeBranch,e.gitRoot,e.hookBased).catch(t=>c.logVerbose(`Failed to remove worktree ${e.worktreePath}: ${E(t)}`)))),D.add(s.id),z(rt(a,r,s.id,c,m.stopWorkBaseDelayMs));break}let W=U,q=Date.now()-f;B(`tengu_bridge_session_started`,{active_sessions:b.size,spawn_mode:I,in_worktree:O.has(i),spawn_duration_ms:q,worktree_create_ms:V,inProtectedNamespace:n()}),P(`info`,`bridge_session_started`,{spawn_mode:I,in_worktree:O.has(i),spawn_duration_ms:q,worktree_create_ms:V}),b.set(i,W),S.set(i,s.id),ee.set(i,p.session_ingress_token),C.set(i,H);let J=Date.now();x.set(i,J),c.logSessionStart(i,`Session ${i}`);let re=Le(i),Y;if(t.debugFile){let e=t.debugFile.lastIndexOf(`.`);Y=e>0?`${t.debugFile.slice(0,e)}-${re}${t.debugFile.slice(e)}`:`${t.debugFile}-${re}`}else(t.verbose||process.env.USER_TYPE===`ant`)&&(Y=Te(Se(),`claude`,`bridge-session-${re}.log`));Y&&c.logVerbose(`Debug log: ${Y}`),c.addSession(H,u(H,t.sessionIngressUrl)),ae(),c.setAttached(H),ft(H,t.apiBaseUrl).then(e=>{e&&b.has(i)&&(j.add(H),c.setSessionTitle(H,e),k(`[bridge:title] server title for ${H}: ${e}`))}).catch(e=>k(`[bridge:title] failed to fetch title for ${H}: ${e}`,{level:`error`}));let X=t.sessionTimeoutMs??864e5;if(X>0){let e=setTimeout(it,X,i,X,c,A,W);T.set(i,e)}M&&te.add(i),F?.schedule(i,p.session_ingress_token),W.done.then(se(i,J,W));break}default:await g(),k(`[bridge:work] Unknown work type: ${_}, skipping`);break}if(f){let e=M.signal();d.non_exclusive_heartbeat_interval_ms>0?(await N(),await G(d.non_exclusive_heartbeat_interval_ms,e.signal)):d.multisession_poll_interval_ms_at_capacity>0&&await G(d.multisession_poll_interval_ms_at_capacity,e.signal),e.cleanup()}}catch(e){if(v.aborted)break;if(e instanceof s){Y=!0,f(e.errorType)?c.logStatus(e.message):p(e)?k(`[bridge:work] Suppressed 403 error: ${e.message}`):(c.logError(e.message),L(e)),B(`tengu_bridge_fatal_error`,{status:e.status,error_type:e.errorType}),P(f(e.errorType)?`info`:`error`,`bridge_fatal_error`,{status:e.status,error_type:e.errorType});break}let t=ie(e);if(K(`poll error: ${t} isConn=${$e(e)} isServer=${et(e)} activeSessions=${b.size}`),$e(e)||et(e)){let e=Date.now();J!==null&&e-J>Je(m)&&(k(`[bridge:work] Detected system sleep (${Math.round((e-J)/1e3)}s gap), resetting error budget`),P(`info`,`bridge_poll_sleep_detected`,{gapMs:e-J}),W=null,V=0,q=null,H=0),J=e,W||(W=e);let n=e-W;if(n>=m.connGiveUpMs){c.logError(`Server unreachable for ${Math.round(n/6e4)} minutes, giving up.`),B(`tengu_bridge_poll_give_up`,{error_type:`connection`,elapsed_ms:n}),P(`error`,`bridge_poll_give_up`,{error_type:`connection`,elapsed_ms:n}),Y=!0;break}q=null,H=0,V=V?Math.min(V*2,m.connCapMs):m.connInitialMs;let r=tt(V);c.logVerbose(`Connection error, retrying in ${nt(r)} (${Math.round(n/1e3)}s elapsed): ${t}`),c.updateReconnectingStatus(nt(r),U(n)),me().non_exclusive_heartbeat_interval_ms>0&&await N(),await G(r,v)}else{let e=Date.now();J!==null&&e-J>Je(m)&&(k(`[bridge:work] Detected system sleep (${Math.round((e-J)/1e3)}s gap), resetting error budget`),P(`info`,`bridge_poll_sleep_detected`,{gapMs:e-J}),W=null,V=0,q=null,H=0),J=e,q||(q=e);let n=e-q;if(n>=m.generalGiveUpMs){c.logError(`Persistent errors for ${Math.round(n/6e4)} minutes, giving up.`),B(`tengu_bridge_poll_give_up`,{error_type:`general`,elapsed_ms:n}),P(`error`,`bridge_poll_give_up`,{error_type:`general`,elapsed_ms:n}),Y=!0;break}W=null,V=0,H=H?Math.min(H*2,m.generalCapMs):m.generalInitialMs;let r=tt(H);c.logVerbose(`Poll failed, retrying in ${nt(r)} (${Math.round(n/1e3)}s elapsed): ${t}`),c.updateReconnectingStatus(nt(r),U(n)),me().non_exclusive_heartbeat_interval_ms>0&&await N(),await G(r,v)}}}oe(),c.clearStatus();let ce=Date.now()-I;B(`tengu_bridge_shutdown`,{active_sessions:b.size,loop_duration_ms:ce}),P(`info`,`bridge_shutdown`,{active_sessions:b.size,loop_duration_ms:ce});let le=new Set(b.keys());h&&le.add(h);let ue=new Map(C);if(b.size>0){k(`[bridge:shutdown] Shutting down ${b.size} active session(s)`),c.logStatus(`Shutting down ${b.size} active session(s)\u2026`);let e=new Map(S);for(let[e,t]of b.entries())k(`[bridge:shutdown] Sending SIGTERM to sessionId=${e}`),t.kill();let t=new AbortController;await Promise.race([Promise.allSettled([...b.values()].map(e=>e.done)),G(m.shutdownGraceMs??3e4,t.signal)]),t.abort();for(let[e,t]of b.entries())k(`[bridge:shutdown] Force-killing stuck sessionId=${e}`),t.forceKill();for(let e of T.values())clearTimeout(e);if(T.clear(),F?.cancelAll(),O.size>0){let e=[...O.values()];O.clear(),k(`[bridge:shutdown] Cleaning up ${e.length} worktree(s)`),await Promise.allSettled(e.map(e=>y(e.worktreePath,e.worktreeBranch,e.gitRoot,e.hookBased)))}await Promise.allSettled([...e.entries()].map(([e,t])=>a.stopWork(r,t,!0).catch(n=>c.logVerbose(`Failed to stop work ${t} for session ${e}: ${E(n)}`))))}if(R.size>0&&await Promise.allSettled([...R]),t.spawnMode===`single-session`&&h&&!Y){c.logStatus("Resume this session by running `claude remote-control --continue`"),k(`[bridge:shutdown] Skipping archive+deregister to allow resume of session ${h}`);return}le.size>0&&(k(`[bridge:shutdown] Archiving ${le.size} session(s)`),await Promise.allSettled([...le].map(e=>a.archiveSession(ue.get(e)??ne(e)).catch(t=>c.logVerbose(`Failed to archive session ${e}: ${E(t)}`)))));try{await a.deregisterEnvironment(r),k(`[bridge:shutdown] Environment deregistered, bridge offline`),c.logVerbose(`Environment deregistered.`)}catch(e){c.logVerbose(`Failed to deregister environment: ${E(e)}`)}let{clearBridgePointer:de}=await import(`./bridgePointer-MqLe5Asm.js`);await de(t.dir),c.logVerbose(`Environment offline.`)}var Qe=new Set([`ECONNREFUSED`,`ECONNRESET`,`ETIMEDOUT`,`ENETUNREACH`,`EHOSTUNREACH`]);function $e(e){return!!(e&&typeof e==`object`&&`code`in e&&typeof e.code==`string`&&Qe.has(e.code))}function et(e){return!!e&&typeof e==`object`&&`code`in e&&typeof e.code==`string`&&e.code===`ERR_BAD_RESPONSE`}function tt(e){return Math.max(0,e+e*.25*(2*Math.random()-1))}function nt(e){return e>=1e3?`${(e/1e3).toFixed(1)}s`:`${Math.round(e)}ms`}async function rt(e,t,n,r,i=1e3){for(let a=1;a<=3;a++)try{await e.stopWork(t,n,!1),k(`[bridge:work] stopWork succeeded for workId=${n} on attempt ${a}/3`);return}catch(e){if(e instanceof s){p(e)?k(`[bridge:work] Suppressed stopWork 403 for ${n}: ${e.message}`):r.logError(`Failed to stop work ${n}: ${e.message}`),P(`error`,`bridge_stop_work_failed`,{attempts:a,fatal:!0});return}let t=E(e);if(a<3){let e=tt(i*2**(a-1));r.logVerbose(`Failed to stop work ${n} (attempt ${a}/3), retrying in ${nt(e)}: ${t}`),await G(e)}else r.logError(`Failed to stop work ${n} after 3 attempts: ${t}`),P(`error`,`bridge_stop_work_failed`,{attempts:3})}}function it(e,t,n,r,i){k(`[bridge:session] sessionId=${e} timed out after ${U(t)}`),B(`tengu_bridge_session_timeout`,{timeout_ms:t}),n.logSessionFailed(e,`Session timed out after ${U(t)}`),r.add(e),i.kill()}var at=[`session`,`same-dir`,`worktree`];function ot(e){return e===`session`?`single-session`:e===`same-dir`?`same-dir`:e===`worktree`?`worktree`:`--spawn requires one of: ${at.join(`, `)} (got: ${e??`<missing>`})`}function st(e){let t=e===void 0?NaN:parseInt(e,10);return isNaN(t)||t<1?`--capacity requires a positive integer (got: ${e??`<missing>`})`:t}function ct(e){let t=!1,n=!1,r,i,a,o,s=!1,c,l,u,d,f=!1;for(let m=0;m<e.length;m++){let h=e[m];if(h===`--help`||h===`-h`)s=!0;else if(h===`--verbose`||h===`-v`)t=!0;else if(h===`--sandbox`)n=!0;else if(h===`--no-sandbox`)n=!1;else if(h===`--debug-file`&&m+1<e.length)r=Ee(e[++m]);else if(h.startsWith(`--debug-file=`))r=Ee(h.slice(13));else if(h===`--session-timeout`&&m+1<e.length)i=parseInt(e[++m],10)*1e3;else if(h.startsWith(`--session-timeout=`))i=parseInt(h.slice(18),10)*1e3;else if(h===`--permission-mode`&&m+1<e.length)a=e[++m];else if(h.startsWith(`--permission-mode=`))a=h.slice(18);else if(h===`--name`&&m+1<e.length)o=e[++m];else if(h.startsWith(`--name=`))o=h.slice(7);else if(h===`--session-id`&&m+1<e.length){if(d=e[++m],!d)return p(`--session-id requires a value`)}else if(h.startsWith(`--session-id=`)){if(d=h.slice(13),!d)return p(`--session-id requires a value`)}else if(h===`--continue`||h===`-c`)f=!0;else if(h===`--spawn`||h.startsWith(`--spawn=`)){if(c!==void 0)return p(`--spawn may only be specified once`);let t=ot(h.startsWith(`--spawn=`)?h.slice(8):e[++m]);if(t===`single-session`||t===`same-dir`||t===`worktree`)c=t;else return p(t)}else if(h===`--capacity`||h.startsWith(`--capacity=`)){if(l!==void 0)return p(`--capacity may only be specified once`);let t=st(h.startsWith(`--capacity=`)?h.slice(11):e[++m]);if(typeof t==`number`)l=t;else return p(t)}else if(h===`--create-session-in-dir`)u=!0;else if(h===`--no-create-session-in-dir`)u=!1;else return p(`Unknown argument: ${h}\nRun 'claude remote-control --help' for usage.`)}if(c===`single-session`&&l!==void 0)return p(`--capacity cannot be used with --spawn=session (single-session mode has fixed capacity 1).`);if((d||f)&&(c!==void 0||l!==void 0||u!==void 0))return p(`--session-id and --continue cannot be used with --spawn, --capacity, or --create-session-in-dir.`);if(d&&f)return p(`--session-id and --continue cannot be used together.`);return{verbose:t,sandbox:n,debugFile:r,sessionTimeoutMs:i,permissionMode:a,name:o,spawnMode:c,capacity:l,createSessionInDir:u,sessionId:d,continueSession:f,help:s};function p(e){return{verbose:t,sandbox:n,debugFile:r,sessionTimeoutMs:i,permissionMode:a,name:o,spawnMode:c,capacity:l,createSessionInDir:u,sessionId:d,continueSession:f,help:s,error:e}}}async function lt(){let{EXTERNAL_PERMISSION_MODES:e}=await import(`./permissions-CeYKbtSC.js`),t=e.join(`, `),n=await qe(),r=`
|
|
16
|
-
Remote Control - Connect your local environment to claude.ai/code
|
|
17
|
-
|
|
18
|
-
USAGE
|
|
19
|
-
claude remote-control [options]
|
|
20
|
-
OPTIONS
|
|
21
|
-
--name <name> Name for the session (shown in claude.ai/code)
|
|
22
|
-
-c, --continue Resume the last session in this directory
|
|
23
|
-
--session-id <id> Resume a specific session by ID (cannot be
|
|
24
|
-
used with spawn flags or --continue)
|
|
25
|
-
--permission-mode <mode> Permission mode for spawned sessions
|
|
26
|
-
(${t})
|
|
27
|
-
--debug-file <path> Write debug logs to file
|
|
28
|
-
-v, --verbose Enable verbose output
|
|
29
|
-
-h, --help Show this help
|
|
30
|
-
${n?` --spawn <mode> Spawn mode: same-dir, worktree, session
|
|
31
|
-
(default: same-dir)
|
|
32
|
-
--capacity <N> Max concurrent sessions in worktree or
|
|
33
|
-
same-dir mode (default: ${Ke})
|
|
34
|
-
--[no-]create-session-in-dir Pre-create a session in the current
|
|
35
|
-
directory; in worktree mode this session
|
|
36
|
-
stays in cwd while on-demand sessions get
|
|
37
|
-
isolated worktrees (default: on)
|
|
38
|
-
`:``}
|
|
39
|
-
DESCRIPTION
|
|
40
|
-
Remote Control allows you to control sessions on your local device from
|
|
41
|
-
claude.ai/code (https://claude.ai/code). Run this command in the
|
|
42
|
-
directory you want to work in, then connect from the Claude app or web.
|
|
43
|
-
${n?`
|
|
44
|
-
Remote Control runs as a persistent server that accepts multiple concurrent
|
|
45
|
-
sessions in the current directory. One session is pre-created on start so
|
|
46
|
-
you have somewhere to type immediately. Use --spawn=worktree to isolate
|
|
47
|
-
each on-demand session in its own git worktree, or --spawn=session for
|
|
48
|
-
the classic single-session mode (exits when that session ends). Press 'w'
|
|
49
|
-
during runtime to toggle between same-dir and worktree.
|
|
50
|
-
`:``}
|
|
51
|
-
NOTES
|
|
52
|
-
- You must be logged in with a Claude account that has a subscription
|
|
53
|
-
- Run \`claude\` first in the directory to accept the workspace trust dialog
|
|
54
|
-
${n?` - Worktree mode requires a git repository or WorktreeCreate/WorktreeRemove hooks
|
|
55
|
-
`:``}`;console.log(r)}var ut=80;function dt(e){return V(e.replace(/\s+/g,` `).trim(),ut)}async function ft(e,t){let{getBridgeSession:n}=await import(`./createSession-Hvpx3Le7.js`);return(await n(e,{baseUrl:t}))?.title||void 0}async function pt(e){let t=ct(e);if(t.help){await lt();return}t.error&&(console.error(`Error: ${t.error}`),process.exit(1));let{verbose:n,sandbox:r,debugFile:i,sessionTimeoutMs:a,permissionMode:o,name:c,spawnMode:u,capacity:d,createSessionInDir:f,sessionId:p,continueSession:m}=t,h=p,g,_=u!==void 0||d!==void 0||f!==void 0;if(o!==void 0){let{PERMISSION_MODES:e}=await import(`./permissions-CeYKbtSC.js`),t=e;t.includes(o)||(console.error(`Error: Invalid permission mode '${o}'. Valid modes: ${t.join(`, `)}`),process.exit(1))}let y=Ee(`.`),{enableConfigs:b,checkHasTrustDialogAccepted:x}=await import(`./config-HHTwEsWp.js`);b();let{initSinks:S}=await import(`./sinks-Cro1Y8C2.js`);S();let C=await qe();_&&!C&&(await R(`tengu_bridge_multi_session_denied`,{used_spawn:u!==void 0,used_capacity:d!==void 0,used_create_session_in_dir:f!==void 0}),await Promise.race([Promise.all([oe(),se()]),G(500,void 0,{unref:!0})]).catch(()=>{}),console.error(`Error: Multi-session Remote Control is not enabled for your account yet.`),process.exit(1));let{setOriginalCwd:ee,setCwdState:w}=await import(`./state-BOa-3Av3.js`);ee(y),w(y),x()||(console.error(`Error: Workspace not trusted. Please run \`claude\` in ${y} first to review and accept the workspace trust dialog.`),process.exit(1));let{clearOAuthTokenCache:T,checkAndRefreshOAuthTokenIfNeeded:D}=await import(`./auth-C4Rvit2q.js`),{getBridgeAccessToken:O,getBridgeBaseUrl:A}=await import(`./bridgeConfig-DsI5d0s7.js`);O()||(console.error(ue),process.exit(1));let{getGlobalConfig:j,saveGlobalConfig:M,getCurrentProjectConfig:N,saveCurrentProjectConfig:te}=await import(`./config-HHTwEsWp.js`);if(!j().remoteDialogSeen){let e=(await import(`readline`)).createInterface({input:process.stdin,output:process.stdout});console.log(`
|
|
56
|
-
Remote Control lets you access this CLI session from the web (claude.ai/code)
|
|
57
|
-
or the Claude app, so you can pick up where you left off on any device.
|
|
58
|
-
|
|
59
|
-
You can disconnect remote access anytime by running /remote-control again.
|
|
60
|
-
`);let t=await new Promise(t=>{e.question(`Enable Remote Control? (y/n) `,t)});e.close(),M(e=>e.remoteDialogSeen?e:{...e,remoteDialogSeen:!0}),t.toLowerCase()!==`y`&&t.toLowerCase()!==`yes`&&process.exit(0)}if(m){let{readBridgePointerAcrossWorktrees:e}=await import(`./bridgePointer-MqLe5Asm.js`),t=await e(y);t||(console.error("Error: No recent session found in this directory or its worktrees. Run `claude remote-control` to start a new one."),process.exit(1));let{pointer:n,dir:r}=t,i=Math.round(n.ageMs/6e4),a=i<60?`${i}m`:`${Math.round(i/60)}h`,o=r===y?``:` from worktree ${r}`;console.error(`Resuming session ${n.sessionId} (${a} ago)${o}\u2026`),h=n.sessionId,g=r}let F=A();F.startsWith(`http://`)&&!F.includes(`localhost`)&&!F.includes(`127.0.0.1`)&&(console.error(`Error: Remote Control base URL uses HTTP. Only HTTPS or localhost HTTP is allowed.`),process.exit(1));let I=process.env.CLAUDE_BRIDGE_SESSION_INGRESS_URL||F,{getBranch:z,getRemoteUrl:V,findGitRoot:H}=await import(`./git-CbcnOf0E.js`),{hasWorktreeCreateHook:U}=await import(`./hooks-cCAzfabs.js`),W=U()||H(y)!==null,K=C?N().remoteControlSpawnMode:void 0;if(K===`worktree`&&!W&&(console.error(`Warning: Saved spawn mode is worktree but this directory is not a git repository. Falling back to same-dir.`),K=void 0,te(e=>e.remoteControlSpawnMode===void 0?e:{...e,remoteControlSpawnMode:void 0})),C&&!K&&W&&u===void 0&&!h&&process.stdin.isTTY){let e=(await import(`readline`)).createInterface({input:process.stdin,output:process.stdout});console.log(`
|
|
61
|
-
Claude Remote Control is launching in spawn mode which lets you create new sessions in this project from Work Mate on Web or your Mobile app. Learn more here: https://code.claude.com/docs/en/remote-control
|
|
62
|
-
|
|
63
|
-
Spawn mode for this project:
|
|
64
|
-
[1] same-dir — sessions share the current directory (default)
|
|
65
|
-
[2] worktree — each session gets an isolated git worktree
|
|
66
|
-
|
|
67
|
-
This can be changed later or explicitly set with --spawn=same-dir or --spawn=worktree.
|
|
68
|
-
`);let t=await new Promise(t=>{e.question(`Choose [1/2] (default: 1): `,t)});e.close();let n=t.trim()===`2`?`worktree`:`same-dir`;K=n,B(`tengu_bridge_spawn_mode_chosen`,{spawn_mode:n}),te(e=>e.remoteControlSpawnMode===n?e:{...e,remoteControlSpawnMode:n})}let q,J;h?(J=`single-session`,q=`resume`):u===void 0?K===void 0?(J=C?`same-dir`:`single-session`,q=`gate_default`):(J=K,q=`saved`):(J=u,q=`flag`);let ne=J===`single-session`?1:d??Ke,Y=f??!0;if(!h){let{clearBridgePointer:e}=await import(`./bridgePointer-MqLe5Asm.js`);await e(y)}J===`worktree`&&!W&&(console.error(`Error: Worktree mode requires a git repository or WorktreeCreate hooks configured. Use --spawn=session for single-session mode.`),process.exit(1));let X=await z(),ie=await V(),ae=xe(),ce=Oe(),{handleOAuth401Error:le}=await import(`./auth-C4Rvit2q.js`),de=v({baseUrl:F,getAccessToken:O,runnerVersion:`0.0.4`,onDebug:k,onAuth401:le,getTrustedDeviceToken:he}),Z;if(h){try{l(h,`sessionId`)}catch{console.error(`Error: Invalid session ID "${h}". Session IDs must not contain unsafe characters.`),process.exit(1)}await D(),T();let{getBridgeSession:e}=await import(`./createSession-Hvpx3Le7.js`),t=await e(h,{baseUrl:F,getAccessToken:O});if(!t){if(g){let{clearBridgePointer:e}=await import(`./bridgePointer-MqLe5Asm.js`);await e(g)}console.error(`Error: Session ${h} not found. It may have been archived or expired, or your login may have lapsed (run \`claude /login\`).`),process.exit(1)}if(!t.environment_id){if(g){let{clearBridgePointer:e}=await import(`./bridgePointer-MqLe5Asm.js`);await e(g)}console.error(`Error: Session ${h} has no environment_id. It may never have been attached to a bridge.`),process.exit(1)}Z=t.environment_id,k(`[bridge:init] Resuming session ${h} on environment ${Z}`)}let Q={dir:y,machineName:ae,branch:X,gitRepoUrl:ie,maxSessions:ne,spawnMode:J,verbose:n,sandbox:r,bridgeId:ce,workerType:`claude_code`,environmentId:Oe(),reuseEnvironmentId:Z,apiBaseUrl:F,sessionIngressUrl:I,debugFile:i,sessionTimeoutMs:a};k(`[bridge:init] bridgeId=${ce}${Z?` reuseEnvironmentId=${Z}`:``} dir=${y} branch=${X} gitRepoUrl=${ie} machine=${ae}`),k(`[bridge:init] apiBaseUrl=${F} sessionIngressUrl=${I}`),k(`[bridge:init] sandbox=${r}${i?` debugFile=${i}`:``}`);let $,fe;try{let e=await de.registerBridgeEnvironment(Q);$=e.environment_id,fe=e.environment_secret}catch(e){B(`tengu_bridge_registration_failed`,{status:e instanceof s?e.status:void 0}),console.error(e instanceof s&&e.status===404?`Remote Control environments are not available for your account.`:`Error: ${E(e)}`),process.exit(1)}let pe;if(h)if(Z&&$!==Z)L(Error(`Bridge resume env mismatch: requested ${Z}, backend returned ${$}. Falling back to fresh session.`)),console.warn(`Warning: Could not resume session ${h} — its environment has expired. Creating a fresh session instead.`);else{let e=re(h),t=e===h?[h]:[h,e],n=!1,r;for(let e of t)try{await de.reconnectSession($,e),k(`[bridge:init] Session ${e} re-queued via bridge/reconnect`),pe=h,n=!0;break}catch(t){r=t,k(`[bridge:init] reconnectSession(${e}) failed: ${E(t)}`)}if(!n){let e=r,t=e instanceof s;if(g&&t){let{clearBridgePointer:e}=await import(`./bridgePointer-MqLe5Asm.js`);await e(g)}console.error(t?`Error: ${E(e)}`:`Error: Failed to reconnect session ${h}: ${E(e)}\nThe session may still be resumable — try running the same command again.`),process.exit(1)}}k(`[bridge:init] Registered, server environmentId=${$}`);let ge=me();B(`tengu_bridge_started`,{max_sessions:Q.maxSessions,has_debug_file:!!Q.debugFile,sandbox:Q.sandbox,verbose:Q.verbose,heartbeat_interval_ms:ge.non_exclusive_heartbeat_interval_ms,spawn_mode:Q.spawnMode,spawn_mode_source:q,multi_session_gate:C,pre_create_session:Y,worktree_available:W}),P(`info`,`bridge_started`,{max_sessions:Q.maxSessions,sandbox:Q.sandbox,spawn_mode:Q.spawnMode});let _e=Ue({execPath:process.execPath,scriptArgs:Ye(),env:process.env,verbose:n,sandbox:r,debugFile:i,permissionMode:o,onDebug:k,onActivity:(e,t)=>{k(`[bridge:activity] sessionId=${e} ${t.type} ${t.summary}`)},onPermissionRequest:(e,t,n)=>{k(`[bridge:perm] sessionId=${e} tool=${t.request.tool_name} request_id=${t.request_id} (not auto-approving)`)}}),ve=Pe({verbose:n}),{parseGitHubRepository:ye}=await import(`./detectRepository-BTPgN89l.js`),be=ie?ye(ie):null,Se=be?be.split(`/`).pop():Ce(y);ve.setRepoInfo(Se,X);let we=J!==`single-session`&&W;we&&ve.setSpawnModeDisplay(J);let Te=e=>{if(e[0]===3||e[0]===4){process.emit(`SIGINT`);return}if(e[0]===32){ve.toggleQr();return}if(e[0]===119){if(!we)return;let e=Q.spawnMode===`same-dir`?`worktree`:`same-dir`;Q.spawnMode=e,B(`tengu_bridge_spawn_mode_toggled`,{spawn_mode:e}),ve.logStatus(e===`worktree`?`Spawn mode: worktree (new sessions get isolated git worktrees)`:`Spawn mode: same-dir (new sessions share the current directory)`),ve.setSpawnModeDisplay(e),ve.refreshDisplay(),te(t=>t.remoteControlSpawnMode===e?t:{...t,remoteControlSpawnMode:e});return}};process.stdin.isTTY&&(process.stdin.setRawMode(!0),process.stdin.resume(),process.stdin.on(`data`,Te));let De=new AbortController,ke=()=>{k(`[bridge:shutdown] SIGINT received, shutting down`),De.abort()},Ae=()=>{k(`[bridge:shutdown] SIGTERM received, shutting down`),De.abort()};process.on(`SIGINT`,ke),process.on(`SIGTERM`,Ae);let je=pe||null;if(Y&&!pe){let{createBridgeSession:e}=await import(`./createSession-Hvpx3Le7.js`);try{je=await e({environmentId:$,title:c,events:[],gitRepoUrl:ie,branch:X,signal:De.signal,baseUrl:F,getAccessToken:O,permissionMode:o}),je&&k(`[bridge:init] Created initial session ${je}`)}catch(e){k(`[bridge:init] Session creation failed (non-fatal): ${E(e)}`)}}let Me=null;if(je&&J===`single-session`){let{writeBridgePointer:e}=await import(`./bridgePointer-MqLe5Asm.js`),t={sessionId:je,environmentId:$,source:`standalone`};await e(Q.dir,t),Me=setInterval(e,3600*1e3,Q.dir,t),Me.unref?.()}try{await Ze(Q,$,fe,de,_e,ve,De.signal,void 0,je??void 0,async()=>(T(),await D(),O()))}finally{Me!==null&&clearInterval(Me),process.off(`SIGINT`,ke),process.off(`SIGTERM`,Ae),process.stdin.off(`data`,Te),process.stdin.isTTY&&process.stdin.setRawMode(!1),process.stdin.pause()}process.exit(0)}var mt=class extends Error{constructor(e){super(e),this.name=`BridgeHeadlessPermanentError`}};async function ht(e,t){let{dir:n,log:r}=e;process.chdir(n);let{setOriginalCwd:i,setCwdState:a}=await import(`./state-BOa-3Av3.js`);i(n),a(n);let{enableConfigs:o,checkHasTrustDialogAccepted:s}=await import(`./config-HHTwEsWp.js`);o();let{initSinks:c}=await import(`./sinks-Cro1Y8C2.js`);if(c(),!s())throw new mt(`Workspace not trusted: ${n}. Run \`claude\` in that directory first to accept the trust dialog.`);if(!e.getAccessToken())throw Error(ue);let{getBridgeBaseUrl:l}=await import(`./bridgeConfig-DsI5d0s7.js`),u=l();if(u.startsWith(`http://`)&&!u.includes(`localhost`)&&!u.includes(`127.0.0.1`))throw new mt(`Remote Control base URL uses HTTP. Only HTTPS or localhost HTTP is allowed.`);let d=process.env.CLAUDE_BRIDGE_SESSION_INGRESS_URL||u,{getBranch:f,getRemoteUrl:p,findGitRoot:m}=await import(`./git-CbcnOf0E.js`),{hasWorktreeCreateHook:h}=await import(`./hooks-cCAzfabs.js`);if(e.spawnMode===`worktree`&&!(h()||m(n)!==null))throw new mt(`Worktree mode requires a git repository or WorktreeCreate hooks. Directory ${n} has neither.`);let g=await f(),_=await p(),y=xe(),b=Oe(),x={dir:n,machineName:y,branch:g,gitRepoUrl:_,maxSessions:e.capacity,spawnMode:e.spawnMode,verbose:!1,sandbox:e.sandbox,bridgeId:b,workerType:`claude_code`,environmentId:Oe(),apiBaseUrl:u,sessionIngressUrl:d,sessionTimeoutMs:e.sessionTimeoutMs},S=v({baseUrl:u,getAccessToken:e.getAccessToken,runnerVersion:`0.0.4`,onDebug:r,onAuth401:e.onAuth401,getTrustedDeviceToken:he}),C,ee;try{let e=await S.registerBridgeEnvironment(x);C=e.environment_id,ee=e.environment_secret}catch(e){throw Error(`Bridge registration failed: ${E(e)}`)}let w=Ue({execPath:process.execPath,scriptArgs:Ye(),env:process.env,verbose:!1,sandbox:e.sandbox,permissionMode:e.permissionMode,onDebug:r}),T=gt(r);T.printBanner(x,C);let D;if(e.createSessionOnStart){let{createBridgeSession:n}=await import(`./createSession-Hvpx3Le7.js`);try{let i=await n({environmentId:C,title:e.name,events:[],gitRepoUrl:_,branch:g,signal:t,baseUrl:u,getAccessToken:e.getAccessToken,permissionMode:e.permissionMode});i&&(D=i,r(`created initial session ${i}`))}catch(e){r(`session pre-creation failed (non-fatal): ${E(e)}`)}}await Ze(x,C,ee,S,w,T,t,void 0,D,async()=>e.getAccessToken())}function gt(e){let t=()=>{};return{printBanner:(t,n)=>e(`registered environmentId=${n} dir=${t.dir} spawnMode=${t.spawnMode} capacity=${t.maxSessions}`),logSessionStart:(t,n)=>e(`session start ${t}`),logSessionComplete:(t,n)=>e(`session complete ${t} (${n}ms)`),logSessionFailed:(t,n)=>e(`session failed ${t}: ${n}`),logStatus:e,logVerbose:e,logError:t=>e(`error: ${t}`),logReconnected:t=>e(`reconnected after ${t}ms`),addSession:(t,n)=>e(`session attached ${t}`),removeSession:t=>e(`session detached ${t}`),updateIdleStatus:t,updateReconnectingStatus:t,updateSessionStatus:t,updateSessionActivity:t,updateSessionCount:t,updateFailedStatus:t,setSpawnModeDisplay:t,setRepoInfo:t,setDebugLogPath:t,setAttached:t,setSessionTitle:t,clearStatus:t,toggleQr:t,refreshDisplay:t}}export{ct as a,et as i,pt as n,ht as o,$e as r,Ze as s,mt as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./bridgeMain-BppY0KW3.js";export{e as bridgeMain};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e,t}from"./caches-CcfPJ4_A.js";e();export{t as clearSessionCaches};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Hr as e,Ur as t}from"./model-BIVmcl_N.js";t();export{e as getOrganizationUUID};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Qi as e,Vi as t,qi as n}from"./loadAgentsDir-BURvZNN6.js";e();export{t as clearCommandsCache,n as getCommands};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{d as e,l as t}from"./commitAttribution-CLbEIaRJ.js";t();export{e as isInternalModelRepo};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{di as t,ui as n}from"./src-CDCSSo0U2.js";import{en as r,rn as i}from"./state-ix0xIunV.js";import{$E as a,AE as o,AS as s,Ao as c,GE as l,Gu as u,JE as d,QE as f,Sl as p,WE as m,Wu as h,YE as g,_l as _,dl as v,fE as y,fh as b,hl as x,jE as S,jS as C,kE as w,ll as T,lt as E,ph as D,ut as O,vE as k,vl as A,xl as j,yl as M,yn as N,zo as P}from"./loadAgentsDir-BURvZNN6.js";import{R as F,z as I}from"./debug-BrXObCdR.js";import{o as L,s as R}from"./log-BMCygSzM.js";function z(e,t){let r=b(`tip`),i=s(`app:toggleTranscript`,`Global`,`ctrl+o`),a=[...e.options.verbose?[]:[`(${i} to see full summary)`],...t?[t]:[],...r?[r]:[]];return n.dim(`Compacted `+a.join(`
|
|
2
|
-
`))}async function B(e,t){let n=e.getAppState(),r=await E(e.options.tools,e.options.mainLoopModel,Array.from(n.toolPermissionContext.additionalWorkingDirectories.keys()),e.options.mcpClients),i=h({mainThreadAgentDefinition:void 0,toolUseContext:e,customSystemPrompt:e.options.customSystemPrompt,defaultSystemPrompt:r,appendSystemPrompt:e.options.appendSystemPrompt}),[a,s]=await Promise.all([o(),w()]);return{systemPrompt:i,userContext:a,systemContext:s,toolUseContext:e,forkContextMessages:t}}var V;e((()=>{t(),r(),O(),S(),C(),f(),p(),d(),m(),x(),T(),y(),I(),N(),L(),P(),D(),u(),V=async(e,t)=>{let{abortController:n}=t,{messages:r}=t;if(r=c(r),r.length===0)throw Error(`No messages to compact`);let s=e.trim();try{if(!s){let e=await v(r,t.agentId);if(e)return o.cache.clear?.(),_(),a(t.options.querySource??`compact`,t.agentId),i(),g(),{type:`compact`,compactionResult:e,displayText:z(t)}}let e=(await l(r,t)).messages,n=await j(e,t,await B(t,e),!1,s,!1);return k(void 0),g(),o.cache.clear?.(),_(),{type:`compact`,compactionResult:n,displayText:z(t,n.userDisplayMessage)}}catch(e){throw n.signal.aborted?Error(`Compaction canceled.`):F(e,`Not enough messages to compact. Send a few more messages first, then try again.`)?Error(M):F(e,`Compaction interrupted · This may be due to network issues — please try again.`)?Error(A):(R(e),Error(`Error during compaction: ${e}`))}}}))();export{V as call};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{t}from"./jsx-runtime-Bb4Xn-E0.js";import{n,t as r}from"./Settings-CNsaWv8g.js";var i,a;e((()=>{n(),i=t(),a=async(e,t)=>(0,i.jsx)(r,{onClose:e,context:t,defaultTab:`Config`})}))();export{a as call};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./loadAgentsDir-BURvZNN6.js";import{b as e,c as t,g as n,n as r,o as i,r as a,y as o}from"./config-DiT2Z8dY.js";n();export{r as checkHasTrustDialogAccepted,a as enableConfigs,i as getCurrentProjectConfig,t as getGlobalConfig,o as saveCurrentProjectConfig,e as saveGlobalConfig};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e,r as t,t as n}from"./context-noninteractive-BuGxX3YL.js";t();export{n as call,e as collectContextData};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e,t}from"./conversation-awh8AwwL.js";e();export{t as clearConversation};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e,n as t}from"./rolldown-runtime-DaDcL9Zw.js";import{Fn as n,In as r,Rn as i,cn as a,en as o,ht as s,nt as ee,q as c,un as l}from"./state-ix0xIunV.js";import{Au as u,Bl as d,Ci as f,Ct as p,Ei as m,Et as h,Gp as g,Il as _,Mn as v,UC as y,VC as b,Wp as x,Xy as S,Zt as te,Zy as C,dn as w,dr as T,eg as E,fi as D,gb as O,jn as k,jr as A,ju as j,kn as M,lb as N,nr as P,tg as F,yn as I}from"./loadAgentsDir-BURvZNN6.js";import{o as L,s as ne}from"./log-BMCygSzM.js";import{n as R,r as z}from"./analytics-BotDBGh0.js";import{C as B,y as V}from"./rcDebugLog-DoL1FpGJ.js";import{l as H,r as U}from"./commitAttribution-CLbEIaRJ.js";import{c as W,d as G}from"./debugUtils-NO5KtXqi.js";import{n as K,t as q}from"./caches-CcfPJ4_A.js";import{randomUUID as J}from"crypto";function Y(e){Q=e,d(Z()??null).catch(()=>{})}function X(){return Q}function Z(){let e=X();return e?G(e.bridgeSessionId):void 0}var Q,$=t((()=>{_(),W(),Q=null}));function re(){let e=X();if(!e)return;e.markTranscriptReset?.();let t={type:`status`,subtype:`status`,status:`conversation_cleared`,message:`conversation_cleared`,uuid:J()};e.writeSdkMessages([t])}async function ie({setMessages:t,readFileState:o,discoveredSkillNames:u,loadedNestedMemoryPaths:d,getAppState:h,setAppState:_,setConversationId:v}){let y=w();await te(`clear`,{getAppState:h,setAppState:_,signal:AbortSignal.timeout(y),timeoutMs:y});let x=c();x&&z(`tengu_cache_eviction_hint`,{scope:`conversation_clear`,last_request_id:x});let S=new Set,E=[],O=e=>`isBackgrounded`in e&&e.isBackgrounded===!1;if(h)for(let e of Object.values(h().tasks))O(e)||j(e)&&(S.add(e.agentId),E.push(e));t(()=>[]),re();{let{setContextBlocked:t}=(V(),e(B));t(!1)}v&&v(J()),q(S),n(null),r(null),i(null),l(),g(ee()),o.clear(),u?.clear(),d?.clear(),_&&_(e=>{let t={};for(let[n,r]of Object.entries(e.tasks)){if(!O(r)){t[n]=r;continue}try{r.status===`running`&&(F(r)&&(r.shellCommand?.kill(),r.shellCommand?.cleanup(),r.cleanupTimeoutId&&clearTimeout(r.cleanupTimeoutId)),`abortController`in r&&r.abortController?.abort(),`unregisterCleanup`in r&&r.unregisterCleanup?.())}catch(e){ne(e)}M(n)}return{...e,tasks:t,attribution:U(),standaloneAgentContext:void 0,fileHistory:{snapshots:[],trackedFiles:new Set,snapshotSequence:0},mcp:{clients:[],tools:[],commands:[],resources:{},pluginReconnectKey:e.mcp.pluginReconnectKey}}}),N(),P(),a({setCurrentAsParent:!0}),process.env.USER_TYPE===`ant`&&process.env.CLAUDE_CODE_SESSION_ID&&(process.env.CLAUDE_CODE_SESSION_ID=s()),await D();for(let e of E)e.status===`running`&&k(e.id,T(b(e.agentId)));let{saveMode:I}=(A(),e(m));I(`normal`);let L=p();L&&f(L);let R=await C(`clear`);R.length>0&&t(()=>R)}var ae=t((()=>{$(),o(),R(),u(),E(),y(),H(),I(),L(),O(),x(),S(),A(),v(),h(),K()}));export{Y as i,ae as n,$ as r,ie as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e,i as t,n,r}from"./createSession-D_fIDqgc.js";t();export{n as createBridgeSession,r as getBridgeSession,e as updateBridgeSessionTitle};
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import{n as e,o as t}from"./rolldown-runtime-DaDcL9Zw.js";import{n,t as r}from"./figures-5ThXQEtq.js";import{C as i,D as a,Gr as o,H as s,I as c,P as l,T as u,Wt as d,Xn as f,ai as p,di as m,fi as h,hn as ee,k as te,ot as ne,p as re,t as g,ui as _}from"./src-CDCSSo0U2.js";import{t as v}from"./jsx-runtime-Bb4Xn-E0.js";import{en as y,ht as ie,nt as ae}from"./state-ix0xIunV.js";import{Cr as b,Ex as oe,Fh as x,Fi as se,Fr as S,Ju as C,Lb as ce,Nr as le,Ph as w,Pi as ue,Rx as de,Tx as T,Wr as fe,Xb as pe,Xu as me,Yb as he,_x as ge,hr as _e,jr as E,lC as D,vi as ve,vx as ye,zb as O,zx as be}from"./loadAgentsDir-BURvZNN6.js";import{C as k,S as xe,a as A,l as j}from"./debug-BrXObCdR.js";import{_n as Se,gn as M}from"./settings-DfWP5y6X.js";import{_ as Ce,i as we}from"./git-Do0wJvux.js";import{a as Te,o as Ee,s as De}from"./log-BMCygSzM.js";import{n as Oe,r as N}from"./analytics-BotDBGh0.js";import{T as ke,b as Ae,f as je,h as Me}from"./startupProfiler-xa3NmN7Z.js";import{_ as Ne,h as Pe}from"./model-BIVmcl_N.js";import{i as P,r as F}from"./shellQuote-DkSy9MYE.js";import{u as Fe}from"./referral-UKJv23_5.js";import{n as Ie,t as Le}from"./useExitOnCtrlCDWithKeybindings-CV4GZ-sq.js";import{t as Re}from"./SearchBox-vfLXEPed.js";import{n as ze,t as Be}from"./useSearchInput-BzGq4t7t.js";import{d as Ve,n as I,t as He,u as Ue}from"./Messages-Clihwd2F.js";import{sep as L}from"path";function We({log:e,onExit:t,onSelect:n}){let[r,i]=R.useState(null);R.useEffect(()=>{i(null),S(e)&&fe(e).then(i)},[e]);let o=S(e)&&r===null,s=r??e,f=b(s)||``,p=C();return d(`confirm:no`,t,{context:`Confirmation`}),d(`confirm:yes`,(0,R.useCallback)(()=>{n(r??e)},[n,r,e]),{context:`Confirmation`}),o?(0,z.jsxs)(c,{flexDirection:`column`,padding:1,children:[(0,z.jsx)(re,{message:`Loading session…`}),(0,z.jsx)(l,{dimColor:!0,children:(0,z.jsx)(u,{children:(0,z.jsx)(T,{action:`confirm:no`,context:`Confirmation`,fallback:`Esc`,description:`cancel`})})})]}):(0,z.jsxs)(c,{flexDirection:`column`,children:[(0,z.jsx)(He,{messages:s.messages,tools:p,commands:[],verbose:!0,toolJSX:null,toolUseConfirmQueue:[],inProgressToolUseIDs:new Set,isMessageSelectorVisible:!1,conversationId:f,screen:`transcript`,streamingToolUses:[],showAllInTranscript:!0,isLoading:!1}),(0,z.jsxs)(c,{flexShrink:0,flexDirection:`column`,borderTopDimColor:!0,borderBottom:!1,borderLeft:!1,borderRight:!1,borderStyle:`single`,paddingLeft:2,children:[(0,z.jsxs)(l,{children:[Me(s.modified),` · `,s.messageCount,` messages`,s.gitBranch?` · ${s.gitBranch}`:``]}),(0,z.jsx)(l,{dimColor:!0,children:(0,z.jsxs)(u,{children:[(0,z.jsx)(a,{shortcut:`Enter`,action:`resume`}),(0,z.jsx)(T,{action:`confirm:no`,context:`Confirmation`,fallback:`Esc`,description:`cancel`})]})})]})]})}var R,z,B=e((()=>{R=t(h(),1),g(),Fe(),me(),Ae(),E(),oe(),I(),z=v()}));function Ge(e,t){if(e===H)return 5;let n=o(e),r=t?Math.min(n,t-U-W):n;return Math.max(0,r)+U+W}function Ke(e,t){let n=t-U-W;return o(e)<=n?e:n<=1?e.charAt(0):ke(e,n)}function qe({tabs:e,selectedIndex:t,availableWidth:n,showAllProjects:r=!1}){let i=r?`Resume (All Projects)`:`Resume`,a=i.length+1,o=Math.max($e,G),s=n-a-o-2,u=Math.max(0,Math.min(t,e.length-1)),d=Math.max(20,Math.floor(s/2)),f=e.map(e=>Ge(e,d)),p=0,m=e.length;if(f.reduce((e,t,n)=>e+t+ +(n<f.length-1),0)>s){let t=s-Qe,n=f[u]??0;for(p=u,m=u+1;p>0||m<e.length;){let r=p>0,i=m<e.length;if(r){let e=(f[p-1]??0)+1;if(n+e<=t){p--,n+=e;continue}}if(i){let e=(f[m]??0)+1;if(n+e<=t){m++,n+=e;continue}}break}}let h=p,ee=e.length-m,te=e.slice(p,m),ne=te.map((e,t)=>p+t);return(0,V.jsxs)(c,{flexDirection:`row`,gap:1,children:[(0,V.jsx)(l,{color:`suggestion`,children:i}),h>0&&(0,V.jsxs)(l,{dimColor:!0,children:[Je,h]}),te.map((e,t)=>{let n=ne[t]===u,r=e===H?e:`#${Ke(e,d-U)}`;return(0,V.jsxs)(l,{backgroundColor:n?`suggestion`:void 0,color:n?`inverseText`:void 0,bold:n,children:[` `,r,` `]},e)}),ee>0?(0,V.jsxs)(l,{dimColor:!0,children:[Ye,ee,Xe]}):(0,V.jsx)(l,{dimColor:!0,children:Ze})]})}var V,H,U,W,Je,Ye,Xe,Ze,Qe,$e,G,K=e((()=>{h(),g(),Ae(),V=v(),H=`All`,U=2,W=1,Je=`← `,Ye=`→`,Xe=` (tab to cycle)`,Ze=`(tab to cycle)`,Qe=5,$e=18,G=14}));function et({nodes:e,onSelect:t,onCancel:n,onFocus:r,focusNodeId:i,visibleOptionCount:a,layout:o=`expanded`,isDisabled:s=!1,hideIndexes:l=!1,isNodeExpanded:u,onExpand:d,onCollapse:f,getParentPrefix:p,getChildPrefix:m,onUpFromFirstItem:h}){let[ee,te]=q.useState(new Set),ne=q.useRef(!1),re=q.useRef(null),g=q.useCallback(e=>u?u(e):ee.has(e),[u,ee]),_=q.useMemo(()=>{let t=[];function n(e,r,i){let a=!!e.children&&e.children.length>0,o=g(e.id);if(t.push({node:e,depth:r,isExpanded:o,hasChildren:a,parentId:i}),a&&o&&e.children)for(let t of e.children)n(t,r+1,e.id)}for(let t of e)n(t,0);return t},[e,g]),v=q.useCallback(e=>e?`▼ `:`▶ `,[]),y=q.useCallback(e=>` ▸ `,[]),ie=p??v,ae=m??y,b=q.useCallback(e=>{let t=``;return e.hasChildren?t=ie(e.isExpanded):e.depth>0&&(t=ae(e.depth)),t+e.node.label},[ie,ae]),oe=q.useMemo(()=>_.map(e=>({label:b(e),description:e.node.description,dimDescription:e.node.dimDescription??!0,value:e.node.id})),[_,b]),x=q.useMemo(()=>{let e=new Map;return _.forEach(t=>e.set(t.node.id,t.node)),e},[_]),se=q.useCallback(e=>_.find(t=>t.node.id===e),[_]),S=q.useCallback((e,t)=>{let n=se(e);!n||!n.hasChildren||(t?d?d(e):te(t=>new Set(t).add(e)):f?f(e):te(t=>{let n=new Set(t);return n.delete(e),n}))},[se,d,f]);return(0,tt.jsx)(c,{tabIndex:0,autoFocus:!0,onKeyDown:e=>{if(!i||s)return;let t=se(i);if(t){if(e.key===`right`&&t.hasChildren)e.preventDefault(),S(i,!0);else if(e.key===`left`){if(t.hasChildren&&t.isExpanded)e.preventDefault(),S(i,!1);else if(t.parentId!==void 0&&(e.preventDefault(),ne.current=!0,S(t.parentId,!1),r)){let e=x.get(t.parentId);e&&r(e)}}}},children:(0,tt.jsx)(ge,{options:oe,onChange:q.useCallback(e=>{let n=x.get(e);n&&t(n)},[x,t]),onFocus:q.useCallback(e=>{if(ne.current){ne.current=!1;return}if(re.current!==e&&(re.current=e,r)){let t=x.get(e);t&&r(t)}},[r,x]),onCancel:n,defaultFocusValue:i,visibleOptionCount:a,layout:o,isDisabled:s,hideIndexes:l,onUpFromFirstItem:h})})}var q,tt,nt=e((()=>{q=t(h(),1),g(),ye(),tt=v()}));function rt(e,t){return ke(e.replace(/\s+/g,` `).trim(),t)}function it({before:e,match:t,after:n},r){return _.dim(e)+r(t)+_.dim(n)}function at(e,t,n){let r=e.toLowerCase().indexOf(t.toLowerCase());if(r===-1)return null;let i=r+t.length,a=Math.max(0,r-n),o=Math.min(e.length,i+n),s=e.slice(a,r),c=e.slice(r,i),l=e.slice(i,o);return{before:(a>0?`…`:``)+s.replace(/\s+/g,` `).trimStart(),match:c.trim(),after:l.replace(/\s+/g,` `).trimEnd()+(o<e.length?`…`:``)}}function ot(e,t,n){let{isGroupHeader:r=!1,isChild:i=!1,forkCount:a=0}=n||{},o=r&&a>0?pt:i?mt:0,s=r&&a>0?` (+${a} other ${a===1?`session`:`sessions`})`:``,c=e.isSidechain?` (sidechain)`:``,l=t-o-c.length-s.length;return`${rt(Te(e),l)}${c}${s}`}function st(e,t){let{isChild:n=!1,showProjectPath:r=!1}=t||{},i=n?` `:``,a=je(e),o=r&&e.projectPath?` · ${e.projectPath}`:``;return i+a+o}function ct({logs:e,maxHeight:t=1/0,forceWidth:n,onCancel:o,onSelect:m,onLogsChanged:h,onLoadMore:re,initialSearchQuery:g,showAllProjects:_=!1,onToggleAllProjects:v,onAgenticSearch:y}){let oe=ne(),x=n===void 0?oe.columns:n,se=Ie(o),S=f(),C=le(),w=process.env.USER_TYPE===`ant`,[fe]=s(),pe=he(fe),me=J.useMemo(()=>e=>p(e,pe.warning),[pe.warning]),E=process.env.USER_TYPE===`ant`,[D,ye]=J.useState(null),[O,be]=J.useState(!1),[k,xe]=J.useState(!1),[A,j]=J.useState(!1),Se=J.useMemo(()=>ae(),[]),[M,Ce]=J.useState(``),[Ee,De]=J.useState(0),[Oe,ke]=J.useState(new Set),[Ae,Me]=J.useState(null),[Ne,Pe]=J.useState(1),[P,F]=J.useState(`list`),[Fe,Le]=J.useState(null),Re=J.useRef(null),[Be,Ve]=J.useState(0),[I,He]=J.useState({status:`idle`}),[L,R]=J.useState(!1),z=J.useRef(null),{query:B,setQuery:Ge,cursorOffset:Ke}=ze({isActive:P===`search`&&I.status!==`searching`,onExit:()=>{F(`list`),N(`tengu_session_search_toggled`,{enabled:!1})},onExitUp:()=>{F(`list`),N(`tengu_session_search_toggled`,{enabled:!1})},passthroughCtrlKeys:[`n`],initialQuery:g||``}),V=J.useDeferredValue(B),[H,U]=J.useState(``);J.useEffect(()=>{if(!V){U(``);return}let e=setTimeout(U,300,V);return()=>clearTimeout(e)},[V]);let[W,Je]=J.useState(null),[Ye,Xe]=J.useState(!1);J.useEffect(()=>{we().then(e=>ye(e)),ue(Se).then(e=>{j(e.length>1)})},[Se]);let Ze=J.useMemo(()=>new Map(e.map(e=>[e,ut(e)])),[e]),Qe=J.useMemo(()=>w?new Ue(e.map(e=>({log:e,searchableText:Ze.get(e)??``})).filter(e=>e.searchableText),{keys:[`searchableText`],threshold:ht,ignoreLocation:!0,includeScore:!0}):null,[e,Ze,w]),$e=J.useMemo(()=>ft(e),[e]),G=$e.length>0,K=J.useMemo(()=>G?[`All`,...$e]:[],[G,$e]),q=K.length>0&&Be<K.length?Be:0,tt=K[q],nt=tt===`All`?void 0:tt,ct=+!!G,lt=J.useMemo(()=>{let t=e;return C&&(t=e.filter(e=>{let t=ie(),n=b(e);return!!(t&&n===t||e.customTitle||_e(e.messages)||e.firstPrompt||e.customTitle)})),nt!==void 0&&(t=t.filter(e=>e.tag===nt)),O&&D&&(t=t.filter(e=>e.gitBranch===D)),A&&!k&&(t=t.filter(e=>e.projectPath===Se)),t},[e,C,nt,O,D,A,k,Se]),pt=J.useMemo(()=>{if(!B)return lt;let e=B.toLowerCase();return lt.filter(t=>{let n=Te(t).toLowerCase(),r=(t.gitBranch||``).toLowerCase(),i=(t.tag||``).toLowerCase(),a=t.prNumber?`pr #${t.prNumber} ${t.prRepository||``}`.toLowerCase():``;return n.includes(e)||r.includes(e)||i.includes(e)||a.includes(e)})},[lt,B]);J.useEffect(()=>{w&&V&&V!==H&&Xe(!0)},[V,H,w]),J.useEffect(()=>{if(!w||!H||!Qe){Je(null),Xe(!1);return}let e=setTimeout((e,t,n,r)=>{let i=e.search(t);i.sort((e,t)=>{let n=new Date(e.item.log.modified).getTime(),r=new Date(t.item.log.modified).getTime()-n;return Math.abs(r)>gt?r:(e.score??1)-(t.score??1)}),n({results:i.map(e=>({log:e.item.log,score:e.score,searchableText:e.item.searchableText})),query:t}),r(!1)},0,Qe,H,Je,Xe);return()=>{clearTimeout(e)}},[H,Qe,w]);let{filteredLogs:mt,snippets:X}=J.useMemo(()=>{let e=new Map,t=pt;if(W&&H&&W.query===H){for(let t of W.results)if(t.searchableText){let n=at(t.searchableText,H,_t);n&&e.set(t.log,n)}let n=new Set(t.map(e=>e.messages[0]?.uuid)),r=W.results.map(e=>e.log).filter(e=>!n.has(e.messages[0]?.uuid));t=[...t,...r]}return{filteredLogs:t,snippets:e}},[pt,W,H]),Z=J.useMemo(()=>I.status===`results`&&I.results.length>0?I.results:mt,[I,mt]),Q=Math.max(30,x-4),vt=J.useMemo(()=>{if(!C)return[];let e=dt(Z);return Array.from(e.entries()).map(([e,t])=>{let n=t[0],r=Z.indexOf(n),i=X.get(n),a=i?it(i,me):null;if(t.length===1){let t=st(n,{showProjectPath:_});return{id:`log:${e}:0`,value:{log:n,indexInFiltered:r},label:ot(n,Q),description:a?`${t}\n ${a}`:t,dimDescription:!0}}let o=t.length-1,s=t.slice(1).map((t,n)=>{let r=Z.indexOf(t),i=X.get(t),a=i?it(i,me):null,o=st(t,{isChild:!0,showProjectPath:_});return{id:`log:${e}:${n+1}`,value:{log:t,indexInFiltered:r},label:ot(t,Q,{isChild:!0}),description:a?`${o}\n ${a}`:o,dimDescription:!0}}),c=st(n,{showProjectPath:_});return{id:`group:${e}`,value:{log:n,indexInFiltered:r},label:ot(n,Q,{isGroupHeader:!0,forkCount:o}),description:a?`${c}\n ${a}`:c,dimDescription:!0,children:s}})},[C,Z,Q,_,X,me]),yt=J.useMemo(()=>C?[]:Z.map((e,t)=>{let n=rt(Te(e)+(e.isSidechain?` (sidechain)`:``),Q),r=je(e),i=_&&e.projectPath?` · ${e.projectPath}`:``,a=X.get(e),o=a?it(a,me):null;return{label:n,description:o?`${r}${i}\n ${o}`:r+i,dimDescription:!0,value:t.toString()}}),[C,Z,me,Q,_,X]),$=Ae?.value.log??null,bt=()=>{if(!C||!$)return``;let e=b($);if(!e)return``;let t=Z.filter(t=>b(t)===e);if(!(t.length>1))return``;let n=Oe.has(e);return t.indexOf($)>0||n?`← to collapse`:`→ to expand`},xt=J.useCallback(async()=>{let e=$?b($):void 0;if(!$||!e){F(`list`),Ce(``);return}M.trim()&&(await ve(e,M.trim(),$.fullPath),C&&h&&h()),F(`list`),Ce(``)},[$,M,h,C]),St=J.useCallback(()=>{F(`list`),N(`tengu_session_search_toggled`,{enabled:!1})},[]),Ct=J.useCallback(()=>{F(`search`),N(`tengu_session_search_toggled`,{enabled:!0})},[]),wt=J.useCallback(async()=>{if(!B.trim()||!y||!E)return;z.current?.abort();let t=new AbortController;z.current=t,He({status:`searching`}),N(`tengu_agentic_search_started`,{query_length:B.length});try{let n=await y(B,e,t.signal);if(t.signal.aborted)return;He({status:`results`,results:n,query:B}),N(`tengu_agentic_search_completed`,{query_length:B.length,results_count:n.length})}catch(e){if(t.signal.aborted)return;He({status:`error`,message:e instanceof Error?e.message:`Search failed`}),N(`tengu_agentic_search_error`,{query_length:B.length})}},[B,y,E,e]);J.useEffect(()=>{I.status!==`idle`&&I.status!==`searching`&&(I.status===`results`&&I.query!==B||I.status===`error`)&&He({status:`idle`})},[B,I]),J.useEffect(()=>()=>{z.current?.abort()},[]);let Tt=J.useRef(I.status);J.useEffect(()=>{let e=Tt.current;if(Tt.current=I.status,e===`searching`&&I.status===`results`){if(C&&vt.length>0)Me(vt[0]);else if(!C&&Z.length>0){let e=Z[0];Me({id:`0`,value:{log:e,indexInFiltered:0},label:``})}}},[I.status,C,vt,Z]);let Et=J.useCallback(e=>{let t=parseInt(e,10),n=Z[t];!n||Re.current===t.toString()||(Re.current=t.toString(),Me({id:t.toString(),value:{log:n,indexInFiltered:t},label:``}),Pe(t+1))},[Z]),Dt=J.useCallback(e=>{Me(e);let t=Z.findIndex(t=>b(t)===b(e.value.log));t>=0&&Pe(t+1)},[Z]);d(`confirm:no`,()=>{z.current?.abort(),He({status:`idle`}),N(`tengu_agentic_search_cancelled`,{})},{context:`Confirmation`,isActive:P!==`preview`&&I.status===`searching`}),d(`confirm:no`,()=>{F(`list`),Ce(``)},{context:`Settings`,isActive:P===`rename`&&I.status!==`searching`}),d(`confirm:no`,()=>{Ge(``),R(!1),o?.()},{context:`Confirmation`,isActive:P!==`preview`&&P!==`rename`&&P!==`search`&&L&&I.status!==`searching`}),ee((e,t)=>{if(P!==`preview`&&I.status!==`searching`&&P!==`rename`)if(P===`search`)e.toLowerCase()===`n`&&t.ctrl?St():(t.return||t.downArrow)&&B.trim()&&y&&E&&I.status!==`results`&&R(!0);else{if(L){if(t.return){wt(),R(!1);return}else if(t.downArrow){R(!1);return}else if(t.upArrow){F(`search`),R(!1);return}}if(G&&t.tab){let e=t.shift?-1:1;Ve(t=>{let n=((t<K.length?t:0)+K.length+e)%K.length,r=K[n];return N(`tengu_session_tag_filter_changed`,{is_all:r===`All`,tag_count:$e.length}),n});return}let n=!t.ctrl&&!t.meta,r=e.toLowerCase();if(r===`a`&&t.ctrl&&v)v(),N(`tengu_session_all_projects_toggled`,{enabled:!_});else if(r===`b`&&t.ctrl){let e=!O;be(e),N(`tengu_session_branch_filter_toggled`,{enabled:e})}else if(r===`w`&&t.ctrl&&A){let e=!k;xe(e),N(`tengu_session_worktree_filter_toggled`,{enabled:e})}else r===`/`&&n?(F(`search`),N(`tengu_session_search_toggled`,{enabled:!0})):r===`r`&&t.ctrl&&$?(F(`rename`),Ce(``),N(`tengu_session_rename_started`,{})):r===`v`&&t.ctrl&&$?(Le($),F(`preview`),N(`tengu_session_preview_opened`,{messageCount:$.messageCount})):$&&n&&e.length>0&&!/^\s+$/.test(e)&&(F(`search`),Ge(e),N(`tengu_session_search_toggled`,{enabled:!0}))}},{isActive:!0});let Ot=[];O&&D&&Ot.push(D),A&&!k&&Ot.push(`current worktree`);let kt=8+ +(Ot.length>0&&P!==`search`)+ct,At=Math.max(1,Math.floor((t-kt-2)/3));return J.useEffect(()=>{if(!re)return;let e=At*2;Ne+e>=Z.length&&re(At*3)},[Ne,At,Z.length,re]),e.length===0?null:P===`preview`&&Fe&&C?(0,Y.jsx)(We,{log:Fe,onExit:()=>{F(`list`),Le(null)},onSelect:m}):(0,Y.jsxs)(c,{flexDirection:`column`,height:t-1,children:[(0,Y.jsx)(c,{flexShrink:0,children:(0,Y.jsx)(i,{color:`suggestion`})}),(0,Y.jsx)(c,{flexShrink:0,children:(0,Y.jsx)(l,{children:` `})}),G?(0,Y.jsx)(qe,{tabs:K,selectedIndex:q,availableWidth:x,showAllProjects:_}):(0,Y.jsx)(c,{flexShrink:0,children:(0,Y.jsxs)(l,{bold:!0,color:`suggestion`,children:[`Resume Session`,P===`list`&&Z.length>At&&(0,Y.jsxs)(l,{dimColor:!0,children:[` `,`(`,Ne,` of `,Z.length,`)`]})]})}),(0,Y.jsx)(te,{query:B,isFocused:P===`search`,isTerminalFocused:S,cursorOffset:Ke}),Ot.length>0&&P!==`search`&&(0,Y.jsx)(c,{flexShrink:0,paddingLeft:2,children:(0,Y.jsx)(l,{dimColor:!0,children:(0,Y.jsx)(u,{children:Ot})})}),(0,Y.jsx)(c,{flexShrink:0,children:(0,Y.jsx)(l,{children:` `})}),I.status===`searching`&&(0,Y.jsxs)(c,{paddingLeft:1,flexShrink:0,children:[(0,Y.jsx)(ce,{}),(0,Y.jsx)(l,{children:` Searching…`})]}),I.status===`results`&&I.results.length>0&&(0,Y.jsx)(c,{paddingLeft:1,marginBottom:1,flexShrink:0,children:(0,Y.jsx)(l,{dimColor:!0,italic:!0,children:`Claude found these results:`})}),I.status===`results`&&I.results.length===0&&mt.length===0&&(0,Y.jsx)(c,{paddingLeft:1,marginBottom:1,flexShrink:0,children:(0,Y.jsx)(l,{dimColor:!0,italic:!0,children:`No matching sessions found.`})}),I.status===`error`&&mt.length===0&&(0,Y.jsx)(c,{paddingLeft:1,marginBottom:1,flexShrink:0,children:(0,Y.jsx)(l,{dimColor:!0,italic:!0,children:`No matching sessions found.`})}),!!B.trim()&&y&&E&&I.status!==`searching`&&I.status!==`results`&&I.status!==`error`&&(0,Y.jsxs)(c,{flexShrink:0,flexDirection:`column`,children:[(0,Y.jsxs)(c,{flexDirection:`row`,gap:1,children:[(0,Y.jsx)(l,{color:L?`suggestion`:void 0,children:L?r.pointer:` `}),(0,Y.jsx)(l,{color:L?`suggestion`:void 0,bold:L,children:`Search deeply using Claude →`})]}),(0,Y.jsx)(c,{height:1})]}),I.status===`searching`?null:P===`rename`&&$?(0,Y.jsxs)(c,{paddingLeft:2,flexDirection:`column`,children:[(0,Y.jsx)(l,{bold:!0,children:`Rename session:`}),(0,Y.jsx)(c,{paddingTop:1,children:(0,Y.jsx)(de,{value:M,onChange:Ce,onSubmit:xt,placeholder:Te($,`Enter new session name`),columns:x,cursorOffset:Ee,onChangeCursorOffset:De,showCursor:!0})})]}):C?(0,Y.jsx)(et,{nodes:vt,onSelect:e=>{m(e.value.log)},onFocus:Dt,onCancel:o,focusNodeId:Ae?.id,visibleOptionCount:At,layout:`expanded`,isDisabled:P===`search`||L,hideIndexes:!1,isNodeExpanded:e=>{if(P===`search`||O)return!0;let t=typeof e==`string`&&e.startsWith(`group:`)?e.substring(6):null;return t?Oe.has(t):!1},onExpand:e=>{let t=typeof e==`string`&&e.startsWith(`group:`)?e.substring(6):null;t&&(ke(e=>new Set(e).add(t)),N(`tengu_session_group_expanded`,{}))},onCollapse:e=>{let t=typeof e==`string`&&e.startsWith(`group:`)?e.substring(6):null;t&&ke(e=>{let n=new Set(e);return n.delete(t),n})},onUpFromFirstItem:Ct}):(0,Y.jsx)(ge,{options:yt,onChange:e=>{let t=Z[parseInt(e,10)];t&&m(t)},visibleOptionCount:At,onCancel:o,onFocus:Et,defaultFocusValue:Ae?.id.toString(),layout:`expanded`,isDisabled:P===`search`||L,onUpFromFirstItem:Ct}),(0,Y.jsx)(c,{paddingLeft:2,children:se.pending?(0,Y.jsxs)(l,{dimColor:!0,children:[`Press `,se.keyName,` again to exit`]}):P===`rename`?(0,Y.jsx)(l,{dimColor:!0,children:(0,Y.jsxs)(u,{children:[(0,Y.jsx)(a,{shortcut:`Enter`,action:`save`}),(0,Y.jsx)(T,{action:`confirm:no`,context:`Confirmation`,fallback:`Esc`,description:`cancel`})]})}):I.status===`searching`?(0,Y.jsx)(l,{dimColor:!0,children:(0,Y.jsxs)(u,{children:[(0,Y.jsx)(l,{children:`Searching with Claude…`}),(0,Y.jsx)(T,{action:`confirm:no`,context:`Confirmation`,fallback:`Esc`,description:`cancel`})]})}):L?(0,Y.jsx)(l,{dimColor:!0,children:(0,Y.jsxs)(u,{children:[(0,Y.jsx)(a,{shortcut:`Enter`,action:`search`}),(0,Y.jsx)(a,{shortcut:`↓`,action:`skip`}),(0,Y.jsx)(T,{action:`confirm:no`,context:`Confirmation`,fallback:`Esc`,description:`cancel`})]})}):P===`search`?(0,Y.jsx)(l,{dimColor:!0,children:(0,Y.jsxs)(u,{children:[(0,Y.jsx)(l,{children:Ye&&w?`Searching…`:`Type to Search`}),(0,Y.jsx)(a,{shortcut:`Enter`,action:`select`}),(0,Y.jsx)(T,{action:`confirm:no`,context:`Confirmation`,fallback:`Esc`,description:`clear`})]})}):(0,Y.jsx)(l,{dimColor:!0,children:(0,Y.jsxs)(u,{children:[v&&(0,Y.jsx)(a,{shortcut:`Ctrl+A`,action:`show ${_?`current dir`:`all projects`}`}),D&&(0,Y.jsx)(a,{shortcut:`Ctrl+B`,action:`toggle branch`}),A&&(0,Y.jsx)(a,{shortcut:`Ctrl+W`,action:`show ${k?`current worktree`:`all worktrees`}`}),(0,Y.jsx)(a,{shortcut:`Ctrl+V`,action:`preview`}),(0,Y.jsx)(a,{shortcut:`Ctrl+R`,action:`rename`}),(0,Y.jsx)(l,{children:`Type to search`}),(0,Y.jsx)(T,{action:`confirm:no`,context:`Confirmation`,fallback:`Esc`,description:`cancel`}),bt()&&(0,Y.jsx)(l,{children:bt()})]})})})]})}function lt(e){if(e.type!==`user`&&e.type!==`assistant`)return``;let t=`message`in e?e.message?.content:void 0;return t?typeof t==`string`?t:Array.isArray(t)?t.map(e=>typeof e==`string`?e:`text`in e&&typeof e.text==`string`?e.text:``).filter(Boolean).join(` `):``:``}function ut(e){let t=(e.messages.length<=X?e.messages:[...e.messages.slice(0,Z),...e.messages.slice(-1e3)]).map(lt).filter(Boolean).join(` `),n=`${[e.customTitle,e.summary,e.firstPrompt,e.gitBranch,e.tag,e.prNumber?`PR #${e.prNumber}`:void 0,e.prRepository].filter(Boolean).join(` `)} ${t}`.trim();return n.length>Q?n.slice(0,Q):n}function dt(e){let t=new Map;for(let n of e){let e=b(n);if(e){let r=t.get(e);r?r.push(n):t.set(e,[n])}}return t.forEach(e=>e.sort((e,t)=>new Date(t.modified).getTime()-new Date(e.modified).getTime())),t}function ft(e){let t=new Set;for(let n of e)n.tag&&t.add(n.tag);return Array.from(t).sort((e,t)=>e.localeCompare(t))}var J,Y,pt,mt,X,Z,Q,ht,gt,_t,vt=e((()=>{m(),n(),Ve(),J=t(h(),1),y(),Le(),Be(),D(),g(),Fe(),Oe(),Ae(),se(),Ce(),Ee(),E(),pe(),oe(),ye(),Re(),B(),O(),K(),be(),nt(),Y=v(),pt=2,mt=4,X=2e3,Z=1e3,Q=5e4,ht=.3,gt=60*1e3,_t=50}));function yt(e){if(e.type!==`user`&&e.type!==`assistant`)return``;let t=`message`in e?e.message?.content:void 0;return t?typeof t==`string`?t:Array.isArray(t)?t.map(e=>typeof e==`string`?e:`text`in e&&typeof e.text==`string`?e.text:``).filter(Boolean).join(` `):``:``}function $(e){if(e.length===0)return``;let t=(e.length<=Ct?e:[...e.slice(0,Ct/2),...e.slice(-100/2)]).map(yt).filter(Boolean).join(` `).replace(/\s+/g,` `).trim();return t.length>St?t.slice(0,St)+`…`:t}function bt(e,t){return!!(Te(e).toLowerCase().includes(t)||e.customTitle?.toLowerCase().includes(t)||e.tag?.toLowerCase().includes(t)||e.gitBranch?.toLowerCase().includes(t)||e.summary?.toLowerCase().includes(t)||e.firstPrompt?.toLowerCase().includes(t)||e.messages&&e.messages.length>0&&$(e.messages).toLowerCase().includes(t))}async function xt(e,t,n){if(!e.trim()||t.length===0)return[];let r=e.toLowerCase(),i=t.filter(e=>bt(e,r)),a;if(i.length>=wt)a=i.slice(0,wt);else{let e=t.filter(e=>!bt(e,r)),n=wt-i.length;a=[...i,...e.slice(0,n)]}j(`Agentic search: ${a.length}/${t.length} logs, query="${e}", matching: ${i.length}, with messages: ${M(a,e=>e.messages?.length>0)}`);let o=a.map(async e=>{if(S(e))try{return await fe(e)}catch(t){return De(t),e}return e}),s=await Promise.all(o);j(`Agentic search: loaded ${M(s,e=>e.messages?.length>0)}/${a.length} logs with transcripts`);let c=`Sessions:
|
|
2
|
-
${s.map((e,t)=>{let n=[`${t}:`],r=Te(e);if(n.push(r),e.customTitle&&e.customTitle!==r&&n.push(`[custom title: ${e.customTitle}]`),e.tag&&n.push(`[tag: ${e.tag}]`),e.gitBranch&&n.push(`[branch: ${e.gitBranch}]`),e.summary&&n.push(`- Summary: ${e.summary}`),e.firstPrompt&&e.firstPrompt!==`No prompt`&&n.push(`- First message: ${e.firstPrompt.slice(0,300)}`),e.messages&&e.messages.length>0){let t=$(e.messages);t&&n.push(`- Transcript: ${t}`)}return n.join(` `)}).join(`
|
|
3
|
-
`)}
|
|
4
|
-
|
|
5
|
-
Search query: "${e}"
|
|
6
|
-
|
|
7
|
-
Find the sessions that are most relevant to this query.`;j(`Agentic search prompt (first 500 chars): ${c.slice(0,500)}...`);try{let e=Pe();j(`Agentic search using model: ${e}`);let t=(await x({model:e,system:Tt,messages:[{role:`user`,content:c}],signal:n,querySource:`session_search`})).content.find(e=>e.type===`text`);if(!t||t.type!==`text`)return j(`No text content in agentic search response`),[];j(`Agentic search response: ${t.text}`);let r=t.text.match(/\{[\s\S]*\}/);if(!r)return j(`Could not find JSON in agentic search response`),[];let i=(k(r[0]).relevant_indices||[]).filter(e=>e>=0&&e<s.length).map(e=>s[e]);return j(`Agentic search found ${i.length} relevant sessions`),i}catch(e){return De(e),j(`Agentic search error: ${e}`),[]}}var St,Ct,wt,Tt,Et=e((()=>{Se(),A(),Ee(),Ne(),E(),w(),xe(),St=2e3,Ct=100,wt=100,Tt=`Your goal is to find relevant sessions based on a user's search query.
|
|
8
|
-
|
|
9
|
-
You will be given a list of sessions with their metadata and a search query. Identify which sessions are most relevant to the query.
|
|
10
|
-
|
|
11
|
-
Each session may include:
|
|
12
|
-
- Title (display name or custom title)
|
|
13
|
-
- Tag (user-assigned category, shown as [tag: name] - users tag sessions with /tag command to categorize them)
|
|
14
|
-
- Branch (git branch name, shown as [branch: name])
|
|
15
|
-
- Summary (AI-generated summary)
|
|
16
|
-
- First message (beginning of the conversation)
|
|
17
|
-
- Transcript (excerpt of conversation content)
|
|
18
|
-
|
|
19
|
-
IMPORTANT: Tags are user-assigned labels that indicate the session's topic or category. If the query matches a tag exactly or partially, those sessions should be highly prioritized.
|
|
20
|
-
|
|
21
|
-
For each session, consider (in order of priority):
|
|
22
|
-
1. Exact tag matches (highest priority - user explicitly categorized this session)
|
|
23
|
-
2. Partial tag matches or tag-related terms
|
|
24
|
-
3. Title matches (custom titles or first message content)
|
|
25
|
-
4. Branch name matches
|
|
26
|
-
5. Summary and transcript content matches
|
|
27
|
-
6. Semantic similarity and related concepts
|
|
28
|
-
|
|
29
|
-
CRITICAL: Be VERY inclusive in your matching. Include sessions that:
|
|
30
|
-
- Contain the query term anywhere in any field
|
|
31
|
-
- Are semantically related to the query (e.g., "testing" matches sessions about "tests", "unit tests", "QA", etc.)
|
|
32
|
-
- Discuss topics that could be related to the query
|
|
33
|
-
- Have transcripts that mention the concept even in passing
|
|
34
|
-
|
|
35
|
-
When in doubt, INCLUDE the session. It's better to return too many results than too few. The user can easily scan through results, but missing relevant sessions is frustrating.
|
|
36
|
-
|
|
37
|
-
Return sessions ordered by relevance (most relevant first). If truly no sessions have ANY connection to the query, return an empty array - but this should be rare.
|
|
38
|
-
|
|
39
|
-
Respond with ONLY the JSON object, no markdown formatting:
|
|
40
|
-
{"relevant_indices": [2, 5, 0]}`}));function Dt(e,t,n){let r=ae();if(!t||!e.projectPath||e.projectPath===r)return{isCrossProject:!1};if(process.env.USER_TYPE!==`ant`){let t=b(e);return{isCrossProject:!0,isSameRepoWorktree:!1,command:`cd ${P([e.projectPath])} && claude --resume ${t}`,projectPath:e.projectPath}}if(n.some(t=>e.projectPath===t||e.projectPath.startsWith(t+L)))return{isCrossProject:!0,isSameRepoWorktree:!0,projectPath:e.projectPath};let i=b(e);return{isCrossProject:!0,isSameRepoWorktree:!1,command:`cd ${P([e.projectPath])} && claude --resume ${i}`,projectPath:e.projectPath}}var Ot=e((()=>{y(),F(),E()}));export{ct as a,Et as i,Ot as n,vt as o,xt as r,Dt as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{t}from"./jsx-runtime-Bb4Xn-E0.js";import{n,t as r}from"./Doctor-DKlHJBXq.js";var i,a;e((()=>{n(),i=t(),a=(e,t,n)=>Promise.resolve((0,i.jsx)(r,{onDone:e}))}))();export{a as call};
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import{n as e,o as t}from"./rolldown-runtime-DaDcL9Zw.js";import{Gn as n,Gt as r,I as i,P as a,fi as o,mt as s,ot as c,t as l}from"./src-CDCSSo0U2.js";import{t as u}from"./jsx-runtime-Bb4Xn-E0.js";import{BO as d,DO as f,EO as p,JS as m,MO as h,NO as g,XS as _,kO as v,qS as y}from"./loadAgentsDir-BURvZNN6.js";import{g as b,y as x}from"./settings-DfWP5y6X.js";import{n as S,r as C}from"./analytics-BotDBGh0.js";import{u as w}from"./referral-UKJv23_5.js";import{n as T,t as E}from"./useMainLoopModel-CO4yBjRM.js";function D(e){return typeof e==`string`&&e!==`ultracode`&&A.includes(e)}function O(e){if(e!=null&&typeof e!=`number`&&D(e))return e}function ee(e){let t=A.indexOf(e);return t<=0?A[0]:A[t-1]}function te(e){let t=A.indexOf(e);return t===-1||t>=A.length-1?A[A.length-1]:A[t+1]}function k(e){return e===`ultracode`}function ne(e){let t=O(e.envOverride);return t===void 0?e.displayed:t}function re(e,t){if(k(e))return{kind:`ultracode-hint`,message:j};let n=t(e);return{kind:`apply`,message:n.message,effortUpdate:n.effortUpdate}}var A,j,M,ie=e((()=>{A=[`low`,`medium`,`high`,`xhigh`,`max`,`ultracode`],j=`ultracode is not an effort level. Use /ultracode <context> to start a multi-agent workflow.`,M=`Effort unchanged.`}));function ae(e){let[t,n]=s(e?N:null);return[t,e?n:0]}var N,oe=e((()=>{l(),N=60}));function se(e){if(!/^#[0-9a-fA-F]{6}$/.test(e))return{h:0,s:0,l:0};let t=parseInt(e.slice(1,3),16)/255,n=parseInt(e.slice(3,5),16)/255,r=parseInt(e.slice(5,7),16)/255,i=Math.max(t,n,r),a=Math.min(t,n,r),o=(i+a)/2,s=i-a;if(s===0)return{h:0,s:0,l:o};let c=s/(1-Math.abs(2*o-1)),l;return l=i===t?60*((n-r)/s%6):i===n?60*((r-t)/s+2):60*((t-n)/s+4),l<0&&(l+=360),{h:l,s:c,l:o}}function ce(e,t,n){let r=(e%360+360)%360,i=(1-Math.abs(2*n-1))*t,a=r/60,o=i*(1-Math.abs(a%2-1)),s=0,c=0,l=0;a<1?(s=i,c=o):a<2?(s=o,c=i):a<3?(c=i,l=o):a<4?(c=o,l=i):a<5?(s=o,l=i):(s=i,l=o);let u=n-i/2,d=e=>Math.round((e+u)*255).toString(16).padStart(2,`0`);return`#${d(s)}${d(c)}${d(l)}`}function P(e,t){if(!/^#[0-9a-fA-F]{6}$/.test(e)||t===0)return e;let{h:n,s:r,l:i}=se(e);return ce(n+t,r,i)}function le(e){return e*I%360}function ue(e,t=0){let n=e<0?0:e>1?1:e,r=Math.min(F.length-1,Math.floor(n*F.length)),i=F[r];return t===0?i:P(i,t)}function de(e){let{y:t,width:n,time:r,sourceX:i,sourceY:a}=e;if(n<=0)return[];let o=le(r),s=Array(n);for(let e=0;e<n;e++){let n=e-i,c=(t-a)*1.5,l=Math.sqrt(n*n+c*c),u=l*.35-r*.004,d=(Math.sin(u)+1)/2*Math.max(0,1-l/90);s[e]={char:R,color:ue(d,o)}}return s}function fe(e,t){let n=e.map(e=>({...e}));for(let e of t){let t=e.x;if(!(t>=n.length))for(let r=0;r<e.text.length;r++){let i=t+r;if(!(i<0)){if(i>=n.length)break;n[i]={char:e.text[r],color:e.color??n[i].color}}}}return n}function pe(e){if(e.length===0)return[];let t=[],n={text:e[0].char,color:e[0].color};for(let r=1;r<e.length;r++){let i=e[r];i.color===n.color?n.text+=i.char:(t.push(n),n={text:i.char,color:i.color})}return t.push(n),t}function me(e,t){if(e===`transparent`)return L;let n=t<0?0:t>1?1:t;if(n<=.01)return L;if(!/^#[0-9a-fA-F]{6}$/.test(e))return e;let r=parseInt(e.slice(1,3),16),i=parseInt(e.slice(3,5),16),a=parseInt(e.slice(5,7),16);return`#${Math.round(r*n).toString(16).padStart(2,`0`)}${Math.round(i*n).toString(16).padStart(2,`0`)}${Math.round(a*n).toString(16).padStart(2,`0`)}`}function he(e,t){return e.map(e=>({char:e.char,color:me(e.color,t)}))}var F,I,L,R,ge=e((()=>{F=[`#1a1f3a`,`#1f2543`,`#252c55`,`#2e3870`,`#3a4582`,`#4a5bb0`,`#5769F7`],I=.03,L=`transparent`,R=` `}));function _e(e){let t=e-2;return t<=U*A.length?U:Math.floor(t/A.length)}function ve(e){let t=Math.max(0,Math.floor((e-9)/2));return e*(A.length-1)+t+4}function z(e,t,n){return n*e+Math.max(0,Math.floor((n-t)/2))}function ye({appStateEffort:e,onDone:t}){let n=_(),o=T(),{columns:s}=c(),l=V.useMemo(()=>_e(s),[s]),u=l*A.length,d=V.useMemo(()=>ve(l),[l]),m=f(),h=ne({envOverride:m,appStateEffort:e,displayed:p(o,e)}),[g,v]=V.useState(h),[y,b]=V.useState(!1),x=g===`ultracode`,[S,C]=V.useState(0),w=x||S>.001,[E,D]=ae(w);V.useEffect(()=>{if(!w)return;let e=+!!x;C(t=>{if(t===e)return t;let n=e>t?t+J:t-J;return e>t?Math.min(e,n):Math.max(e,n)})},[D,x,w]),r({"effortPanel:decrease":()=>v(e=>ee(e)),"effortPanel:increase":()=>v(e=>te(e)),"effortPanel:home":()=>v(`low`),"effortPanel:end":()=>v(`ultracode`),"effortPanel:confirm":V.useCallback(()=>{if(y)return;b(!0);let e=re(g,Z);e.kind===`apply`&&e.effortUpdate&&n(t=>({...t,effortValue:e.effortUpdate.value})),t(e.message)},[g,y,t,n]),"effortPanel:cancel":V.useCallback(()=>{y||(b(!0),t(M))},[y,t])},{context:`EffortPanel`});let O=m!=null,k=process.env.CLAUDE_CODE_EFFORT_LEVEL,j=V.useCallback((e,t)=>pe(he(fe(de({y:e+Y,width:u,time:D,sourceX:d,sourceY:Y}),t),S)),[D,S,u,d]);return(0,H.jsxs)(i,{ref:E,flexDirection:`column`,paddingX:1,width:u+2,children:[(0,H.jsx)(a,{bold:!0,color:`suggestion`,children:`Effort`}),O&&(0,H.jsx)(a,{color:`warning`,children:`⚠ CLAUDE_CODE_EFFORT_LEVEL=${k} overrides this session`}),w?(0,H.jsx)(xe,{renderRow:j,cursor:g,fade:S,segment:l,panelWidth:u,time:D}):(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(be,{cursor:g,segment:l,panelWidth:u}),(0,H.jsx)(i,{marginTop:1,children:(0,H.jsx)(a,{color:`subtle`,children:`←/→ adjust · Enter confirm · Esc cancel`})})]})]})}function be({cursor:e,segment:t,panelWidth:n}){return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsxs)(i,{marginTop:1,flexDirection:`row`,justifyContent:`space-between`,children:[(0,H.jsx)(a,{color:`suggestion`,children:`Faster`}),(0,H.jsx)(a,{color:`suggestion`,children:`Smarter`})]}),(0,H.jsx)(a,{color:`subtle`,children:`─`.repeat(n)}),(0,H.jsx)(i,{flexDirection:`row`,children:A.map(n=>(0,H.jsx)(i,{width:t,justifyContent:`center`,children:(0,H.jsx)(a,{bold:!0,color:e===n?`suggestion`:`subtle`,children:e===n?`▲`:` `})},`cursor-${n}`))}),(0,H.jsx)(i,{flexDirection:`row`,children:A.map(n=>(0,H.jsx)(i,{width:t,justifyContent:`center`,children:(0,H.jsx)(a,{bold:e===n,color:e===n?`suggestion`:`subtle`,children:n})},`label-${n}`))}),(0,H.jsxs)(i,{flexDirection:`row`,children:[(0,H.jsx)(i,{width:t*(A.length-1)}),(0,H.jsx)(i,{width:t,justifyContent:`center`,children:(0,H.jsx)(a,{color:`subtle`,children:W})})]})]})}function xe({renderRow:e,cursor:t,segment:n,panelWidth:r,time:i}){let o=A.indexOf(t),s=A.length-1,c=le(i),l=P(q,c),u=P(G,c),d=P(K,c),f={text:`Faster`,x:0,color:l},p={text:`Smarter`,x:r-7,color:l},m={text:`─`.repeat(r),x:0,color:d},h={text:`▲`,x:z(o,1,n),color:l},g=A.map((e,r)=>({text:e,x:z(r,e.length,n),color:e===t?u:d})),_={text:W,x:z(s,17,n),color:d};return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(B,{segments:e(-4,[])}),(0,H.jsx)(B,{segments:e(-3,[f,p])}),(0,H.jsx)(B,{segments:e(-2,[m])}),(0,H.jsx)(B,{segments:e(-1,[h])}),(0,H.jsx)(B,{segments:e(0,g)}),(0,H.jsx)(B,{segments:e(1,[_])}),(0,H.jsx)(B,{segments:e(2,[])}),(0,H.jsx)(a,{color:K,children:`←/→ adjust · Enter confirm · Esc cancel`})]})}function B({segments:e}){let t=[];for(let n of e){let e=``,r=null,i=()=>{e===``||r===null||(t.push({text:e,kind:r?`space`:`text`,color:n.color}),e=``,r=null)};for(let t of n.text){let n=t===` `;r===null?(e=t,r=n):n===r?e+=t:(i(),e=t,r=n)}i()}return(0,H.jsx)(i,{flexDirection:`row`,children:t.map((e,t)=>e.kind===`space`?e.color===`transparent`?(0,H.jsx)(n,{children:e.text},t):(0,H.jsx)(n,{backgroundColor:e.color,children:e.text},t):(0,H.jsx)(a,{color:e.color,bold:!0,children:e.text},t))})}var V,H,U,W,G,K,q,J,Y,Se=e((()=>{V=t(o(),1),l(),w(),h(),ie(),$(),E(),y(),oe(),ge(),H=u(),U=12,W=`xhigh + workflows`,G=`#5769F7`,K=`#7a8eff`,q=`#5769F7`,J=.2,Y=0}));function Ce(e){let t=d(e);if(t!==void 0){let e=x(`userSettings`,{effortLevel:t});if(e.error)return{message:`Failed to set effort level: ${e.error.message}`}}C(`tengu_effort_command`,{effort:e});let n=f();if(n!==void 0&&n!==e){let n=process.env.CLAUDE_CODE_EFFORT_LEVEL;return t===void 0?{message:`Not applied: CLAUDE_CODE_EFFORT_LEVEL=${n} overrides effort this session, and ${e} is session-only (nothing saved)`,effortUpdate:{value:e}}:{message:`CLAUDE_CODE_EFFORT_LEVEL=${n} overrides this session — clear it and ${e} takes over`,effortUpdate:{value:e}}}let r=v(e);return{message:`Set effort level to ${e}${t===void 0?` (this session only)`:``}: ${r}`,effortUpdate:{value:e}}}function X(e,t){let n=f(),r=n===null?void 0:n??e;return r===void 0?{message:`Effort level: auto (currently ${p(t,e)})`}:{message:`Current effort level: ${r} (${v(r)})`}}function we(){let e=x(`userSettings`,{effortLevel:void 0});return e.error?{message:`Failed to set effort level: ${e.error.message}`}:(C(`tengu_effort_command`,{effort:`auto`}),f()==null?{message:`Effort level set to auto`,effortUpdate:{value:void 0}}:{message:`Cleared effort from settings, but CLAUDE_CODE_EFFORT_LEVEL=${process.env.CLAUDE_CODE_EFFORT_LEVEL} still controls this session`,effortUpdate:{value:void 0}})}function Z(e){let t=e.toLowerCase();return t===`auto`||t===`unset`?we():g(t)?Ce(t):{message:`Invalid argument: ${e}. Valid options are: low, medium, high, max, auto`}}function Te({onDone:e}){let{message:t}=X(m(e=>e.effortValue),T());return e(t),null}function Ee({result:e,onDone:t}){let n=_(),{effortUpdate:r,message:i}=e;return ke.useEffect(()=>{r&&n(e=>({...e,effortValue:r.value})),t(i)},[n,r,i,t]),null}async function De(e,t,n){if(n=n?.trim()||``,Ae.includes(n)){e(`Usage: /effort [low|medium|high|xhigh|max|auto]
|
|
2
|
-
|
|
3
|
-
Effort levels:
|
|
4
|
-
- low: Quick, straightforward implementation
|
|
5
|
-
- medium: Balanced approach with standard testing
|
|
6
|
-
- high: Comprehensive implementation with extensive testing
|
|
7
|
-
- xhigh: Extended reasoning beyond high, short of max; including ChatGPT Codex models
|
|
8
|
-
- max: Maximum capability with deepest reasoning; maps to xhigh for ChatGPT Codex models
|
|
9
|
-
- auto: Use the default effort level for your model`);return}return!n||n===`current`||n===`status`?n===`current`||n===`status`?(0,Q.jsx)(Te,{onDone:e}):(0,Q.jsx)(Oe,{onDone:e}):(0,Q.jsx)(Ee,{result:Z(n),onDone:e})}function Oe({onDone:e}){return(0,Q.jsx)(ye,{appStateEffort:m(e=>e.effortValue),onDone:e})}var ke,Q,Ae,$=e((()=>{ke=t(o(),1),Se(),E(),S(),y(),h(),b(),Q=u(),Ae=[`help`,`-h`,`--help`]}));$();export{De as call,Z as executeEffort,X as showCurrentEffort};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e,i as t}from"./envLessBridgeConfig-DJHZAlU-.js";t();export{e as shouldShowAppUpgradeMessage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{fi as t}from"./src-CDCSSo0U2.js";import{t as n}from"./jsx-runtime-Bb4Xn-E0.js";import{Ct as r,Et as i,Il as a,Ll as o,ND as s,PD as c,fC as l,uC as u}from"./loadAgentsDir-BURvZNN6.js";import{n as d,t as f}from"./ExitFlow-rExuBL3w.js";import{spawnSync as p}from"child_process";function m(){return c(_)??`Goodbye!`}async function h(e){if(o())return e(),p(`tmux`,[`detach-client`],{stdio:`ignore`}),null;let t=r()!==null;return t?(0,g.jsx)(f,{showWorktree:t,onDone:e,onCancel:()=>e()}):(e(m()),await u(0,`prompt_input_exit`),null)}var g,_;e((()=>{s(),t(),d(),a(),l(),i(),g=n(),_=[`Goodbye!`,`See ya!`,`Bye!`,`Catch you later!`]}))();export{h as call};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e,t}from"./extra-usage-CjaHpu8y.js";e();export{t as call};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e,o as t}from"./rolldown-runtime-DaDcL9Zw.js";import{D as n,Gt as r,I as i,P as a,T as o,fi as s,t as c,x as ee}from"./src-CDCSSo0U2.js";import{t as l}from"./jsx-runtime-Bb4Xn-E0.js";import{BO as te,EO as u,Ex as d,FO as ne,HD as f,IO as re,JS as p,MO as m,Md as h,PO as g,TO as _,Tx as ie,VD as ae,XS as oe,_x as se,gx as v,jd as ce,qS as y,wO as b,zO as le}from"./loadAgentsDir-BURvZNN6.js";import{Kt as x,c as ue,g as S,y as de}from"./settings-DfWP5y6X.js";import{n as C,r as fe}from"./analytics-BotDBGh0.js";import{C as w,K as T,Kn as E,Kt as D,Vt as O,_ as k,it as A,nt as pe,o as j,qn as M,rt as me,tt as N,x as P}from"./model-BIVmcl_N.js";import{u as F}from"./referral-UKJv23_5.js";import{n as he,t as I}from"./useExitOnCtrlCDWithKeybindings-CV4GZ-sq.js";function L(e,t){if(!g(t))return;let n=u(t,e);return`${R(n)} ${n} · /effort`}function R(e){switch(e){case`low`:return`○`;case`medium`:return`◐`;case`high`:return`●`;case`xhigh`:return`⦿`;case`max`:return`◉`;default:return`●`}}var z=e((()=>{x(),m()}));function B({initial:e,sessionModel:t,onSelect:s,onCancel:c,isStandaloneCommand:l,showFastModeNotice:u,headerText:d,skipSettingsWrite:f}){let m=oe(),h=he(),_=e===null?K:e,[v,y]=(0,W.useState)(_),x=p(e=>A()?e.fastMode:!1),[S,C]=(0,W.useState)(()=>new Set(E(_)?[_.replace(/\[1m\]/i,``)]:[])),w=(0,W.useCallback)(()=>{if(!v||v===K)return;let e=v.replace(/\[1m\]/i,``);C(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[v]),[D,O]=(0,W.useState)(!1),k=p(e=>e.effortValue),[j,M]=(0,W.useState)(k===void 0?void 0:b(k)),N=(0,W.useMemo)(()=>ce(x??!1),[x]),F=(0,W.useMemo)(()=>e!==null&&!N.some(t=>t.value===e)?[...N,{value:e,label:P(e),description:`Current model`}]:N,[N,e]),I=(0,W.useMemo)(()=>F.map(e=>({...e,value:e.value===null?K:e.value})),[F]),L=(0,W.useMemo)(()=>I.some(e=>e.value===_)?_:I[0]?.value??void 0,[I,_]),R=Math.min(10,I.length),z=Math.max(0,I.length-R),B=I.find(e=>e.value===v)?.label,q=V(v),J=v!==void 0&&v!==K&&S.has(v.replace(/\[1m\]/i,``)),Y=q?g(q):!1,X=q?re(q):!1,Z=q?ne(q):!1,Q=U(v),$=j===`max`&&!Z?X?`xhigh`:`high`:j===`xhigh`&&!X?`high`:j,_e=(0,W.useCallback)(e=>{y(e),!D&&k===void 0&&M(U(e))},[D,k]),ve=(0,W.useCallback)(e=>{Y&&(M(t=>ge(t??Q,e,X,Z)),O(!0))},[Y,X,Z,Q]);r({"modelPicker:decreaseEffort":()=>ve(`left`),"modelPicker:increaseEffort":()=>ve(`right`),"modelPicker:toggle1M":()=>w()},{context:`ModelPicker`});function ye(e){if(fe(`tengu_model_command_menu_effort`,{effort:j}),!f){let t=le(j,U(e),ue(`userSettings`)?.effortLevel,D),n=te(t);n!==void 0&&de(`userSettings`,{effortLevel:n}),m(e=>({...e,effortValue:t}))}let t=V(e),n=D&&t&&g(t)?j:void 0;if(e===K){s(null,n);return}let r=e.replace(/\[1m\]/i,``);s(S.has(r)?`${r}[1m]`:r,n)}let be=(0,G.jsxs)(i,{flexDirection:`column`,children:[(0,G.jsxs)(i,{flexDirection:`column`,children:[(0,G.jsxs)(i,{marginBottom:1,flexDirection:`column`,children:[(0,G.jsx)(a,{color:`remember`,bold:!0,children:`Select model`}),(0,G.jsx)(a,{dimColor:!0,children:d??`Choose a model for this and future sessions. Use ← → to adjust effort, Space to toggle 1M context.`}),t&&(0,G.jsxs)(a,{dimColor:!0,children:[`Currently using `,P(t),` for this session (set by plan mode). Selecting a model will undo this.`]})]}),(0,G.jsxs)(i,{flexDirection:`column`,marginBottom:1,children:[(0,G.jsx)(i,{flexDirection:`column`,children:(0,G.jsx)(se,{defaultValue:_,defaultFocusValue:L,options:I,onChange:ye,onFocus:_e,onCancel:c??(()=>{}),visibleOptionCount:R})}),z>0&&(0,G.jsx)(i,{paddingLeft:3,children:(0,G.jsxs)(a,{dimColor:!0,children:[`and `,z,` more…`]})})]}),(0,G.jsxs)(i,{marginBottom:1,flexDirection:`column`,children:[Y?(0,G.jsxs)(a,{dimColor:!0,children:[(0,G.jsx)(H,{effort:$}),` `,ae($),` effort`,$===Q?` (default)`:``,` `,(0,G.jsx)(a,{color:`subtle`,children:`← → to adjust`})]}):(0,G.jsxs)(a,{color:`subtle`,children:[(0,G.jsx)(H,{effort:void 0}),` Effort not supported`,B?` for ${B}`:``]}),J?(0,G.jsxs)(a,{dimColor:!0,children:[(0,G.jsx)(H,{effort:`high`}),` 1M context on`,(0,G.jsx)(a,{color:`subtle`,children:` · Space to toggle`})]}):(0,G.jsxs)(a,{color:`subtle`,children:[(0,G.jsx)(H,{effort:void 0}),` 1M context off`,B?` for ${B}`:``,(0,G.jsx)(a,{color:`subtle`,children:` · Space to toggle`})]})]}),A()?u?(0,G.jsx)(i,{marginBottom:1,children:(0,G.jsxs)(a,{dimColor:!0,children:[`Fast mode is `,(0,G.jsx)(a,{bold:!0,children:`ON`}),` and available with `,T,` only (/fast). Switching to other models turn off fast mode.`]})}):pe()&&!me()?(0,G.jsx)(i,{marginBottom:1,children:(0,G.jsxs)(a,{dimColor:!0,children:[`Use `,(0,G.jsx)(a,{bold:!0,children:`/fast`}),` to turn on Fast mode (`,T,` only).`]})}):null:null]}),l&&(0,G.jsx)(a,{dimColor:!0,italic:!0,children:h.pending?(0,G.jsxs)(G.Fragment,{children:[`Press `,h.keyName,` again to exit`]}):(0,G.jsxs)(o,{children:[(0,G.jsx)(n,{shortcut:`Enter`,action:`confirm`}),(0,G.jsx)(ie,{action:`select:cancel`,context:`Select`,fallback:`Esc`,description:`exit`})]})})]});return l?(0,G.jsx)(ee,{color:`permission`,children:be}):be}function V(e){if(e)return e===K?j():w(e)}function H({effort:e}){return(0,G.jsx)(a,{color:e?`claude`:`subtle`,children:R(e??`low`)})}function ge(e,t,n,r){let i=[`low`,`medium`,`high`,...n?[`xhigh`]:[],...r?[`max`]:[]],a=i.indexOf(e),o=a===-1?i.indexOf(`high`):a;return t===`right`?i[(o+1)%i.length]:i[(o-1+i.length)%i.length]}function U(e){let t=_(V(e)??j());return t===void 0?`high`:b(t)}var W,G,K,q=e((()=>{f(),s(),W=t(s(),1),M(),I(),C(),N(),c(),F(),y(),m(),k(),h(),S(),d(),v(),z(),G=l(),K=`__NO_PREFERENCE__`}));function J(e,t,n){if(!D())return!1;if(t)return!0;if(e===null||!E(e))return!1;let r=e.toLowerCase().replace(/\[1m\]$/,``).trim(),i=r===`opus`||r.includes(`opus-4-6`)||r.includes(`opus-4-7`),a=r===`sonnet`||r.includes(`sonnet-4-6`);return i&&n?!1:i||a}var Y=e((()=>{O(),M()}));export{R as a,q as i,J as n,L as o,B as r,z as s,Y as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{eu as e,nu as t,ru as n,tu as r}from"./loadAgentsDir-BURvZNN6.js";n();export{e as drainPendingExtraction,r as executeExtractMemories,t as initExtractMemories};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e,r as t,t as n}from"./fast-CW_NsL0x.js";t();export{n as FastModePicker,e as call};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e,r as t}from"./firstPartyEventLogger-CuUiNdj8.js";e();export{t as initialize1PEventLogging};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Zt as e,dn as t,vn as n,yn as r}from"./loadAgentsDir-BURvZNN6.js";r();export{e as executeSessionEndHooks,t as getSessionEndHookTimeoutMs,n as hasWorktreeCreateHook};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./inboundAttachments-DkfNHtF9.js";export{e as resolveAndPrepend};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-DaDcL9Zw.js";import{l as t,o as n,u as r}from"./envUtils-DSxRz_kt.js";import{en as i,ht as a,nt as o}from"./state-ix0xIunV.js";import{Aa as s,Ao as c,Bl as l,Da as u,Ea as d,Fa as f,Il as p,Ma as m,Na as h,Oa as g,Oo as _,Pa as ee,Ta as v,Ua as y,Uo as b,Va as x,Ya as S,ja as C,jr as w,ka as te,mr as ne,vb as re,yb as T,zo as E}from"./loadAgentsDir-BURvZNN6.js";import{F as D,a as O,l as k,nt as ie,rt as ae,z as A}from"./debug-BrXObCdR.js";import{b as oe,c as se,g as ce}from"./config-DiT2Z8dY.js";import{M as j,_ as le,i as M,j as ue,p as de}from"./git-Do0wJvux.js";import{g as fe,m as N}from"./log-BMCygSzM.js";import{n as pe,r as P}from"./analytics-BotDBGh0.js";import{Hr as F,Lt as I,Ur as L,Vt as R,ht as me,kt as he,vn as z,yn as B}from"./model-BIVmcl_N.js";import{O as V,_ as ge,d as _e,k as ve,n as ye,t as H}from"./rcDebugLog-DoL1FpGJ.js";import{a as U,c as W,d as be,f as xe,o as G,r as K,s as q,u as J}from"./debugUtils-NO5KtXqi.js";import{a as Se,i as Y,n as Ce,o as X,t as Z}from"./bridgeConfig-DMBOO3gW.js";import{a as Q,o as $,r as we,s as Te,t as Ee}from"./bridgeEnabled-FjPuA7zx.js";import{i as De,t as Oe}from"./assistant-C83quuNj.js";import{t as ke}from"./capacityWake-CV_x9H8j.js";import{n as Ae,t as je}from"./pollConfig-DH2oCtFS.js";import{i as Me}from"./trustedDevice-BBKUhCCL.js";import{a as Ne,n as Pe,r as Fe,t as Ie}from"./workSecret-CNWiR2uQ.js";import{a as Le,i as Re,n as ze,t as Be}from"./createSession-D_fIDqgc.js";import{i as Ve,n as He}from"./envLessBridgeConfig-DJHZAlU-.js";import{n as Ue,o as We}from"./mappers-Q_Z3Kjo-.js";import{n as Ge,r as Ke,t as qe}from"./sessionTitle-pWMaI79N.js";import{a as Je,i as Ye,n as Xe,o as Ze,r as Qe,t as $e}from"./bridgeMessaging-N5zlzCCr.js";import{t as et}from"./HybridTransport-kN1jmg26.js";import{n as tt,r as nt,t as rt}from"./flushGate-BltVae97.js";import{hostname as it}from"os";import{randomUUID as at}from"crypto";i(),N(),le(),ce(),L(),R(),Se(),T(),we(),E(),x(),w(),Re(),Ve(),Ue(),Ke(),m(),O(),H(),ue(),pe(),ie(),W(),p(),V(),_e(),n(),G(),A(),z(),d();var ot=2e3,st=6e4,ct=900*1e3,lt=0;async function ut(e){let{dir:n,machineName:i,branch:a,gitRepoUrl:o,title:s,baseUrl:c,sessionIngressUrl:d,workerType:f,getAccessToken:p,createSession:m,archiveSession:h,getCurrentTitle:_=()=>s,toSDKMessages:ee=()=>{throw Error(`BridgeCoreParams.toSDKMessages not provided. Pass it if you use writeMessages() or initialMessages — daemon callers that only use writeSdkMessages() never hit this path.`)},onAuth401:y,getPollIntervalConfig:b=()=>Ae,initialHistoryCap:x=200,initialMessages:S,previouslyFlushedUUIDs:w,onInboundMessage:ne,onPermissionResponse:re,onInterrupt:T,onSetModel:E,onSetMaxThinkingTokens:O,onSetPermissionMode:ie,onStateChange:A,onUserMessage:oe,perpetual:se,initialSSESequenceNum:ce=0}=e,le=++lt,{writeBridgePointer:M,clearBridgePointer:ue,readBridgePointer:de}=await import(`./bridgePointer-MqLe5Asm.js`),fe=se?await de(n):null,N=fe?.source===`repl`?fe:null;k(`[bridge:repl] initBridgeCore #${le} starting (initialMessages=${S?.length??0}${N?` perpetual prior=env:${N.environmentId}`:``})`);let pe=C({baseUrl:c,getAccessToken:p,runnerVersion:`0.0.4`,onDebug:k,onAuth401:y,getTrustedDeviceToken:Me}),F=process.env.USER_TYPE===`ant`?te(pe):pe,I={dir:n,machineName:i,branch:a,gitRepoUrl:o,maxSessions:1,spawnMode:`single-session`,verbose:!1,sandbox:!1,bridgeId:at(),workerType:f,environmentId:at(),reuseEnvironmentId:N?.environmentId,apiBaseUrl:c,sessionIngressUrl:d},L,R;try{let e=await F.registerBridgeEnvironment(I);L=e.environment_id,R=e.environment_secret}catch(e){return q(`registration_failed`,`[bridge:repl] Environment registration failed: ${D(e)}`),N&&await ue(n),A?.(`failed`,D(e)),null}k(`[bridge:repl] Environment registered: ${L}`),j(`info`,`bridge_repl_env_registered`),P(`tengu_bridge_repl_env_registered`,{});async function me(e,t){if(L!==e)return k(`[bridge:repl] Env mismatch (requested ${e}, got ${L}) — cannot reconnect in place`),!1;let n=xe(t),r=n===t?[t]:[t,n];for(let e of r)try{return await F.reconnectSession(L,e),k(`[bridge:repl] Reconnected session ${e} in place on env ${L}`),!0}catch(t){k(`[bridge:repl] reconnectSession(${e}) failed: ${D(t)}`)}return k(`[bridge:repl] reconnectSession exhausted — falling through to fresh session`),!1}let he=N?await me(N.environmentId,N.sessionId):!1;N&&!he&&await ue(n);let z;if(he&&N){if(z=N.sessionId,k(`[bridge:repl] Perpetual session reused: ${z}`),S&&w)for(let e of S)w.add(e.uuid)}else{let e=await m({environmentId:L,title:s,gitRepoUrl:o,branch:a,signal:AbortSignal.timeout(15e3)});if(!e)return k(`[bridge:repl] Session creation failed, deregistering environment`),P(`tengu_bridge_repl_session_failed`,{}),await F.deregisterEnvironment(L).catch(()=>{}),A?.(`failed`,`Session creation failed`),null;z=e,k(`[bridge:repl] Session created: ${z}`)}await M(n,{sessionId:z,environmentId:L,source:`repl`}),j(`info`,`bridge_repl_session_created`),P(`tengu_bridge_repl_started`,{has_initial_messages:!!(S&&S.length>0),inProtectedNamespace:r()});let B=new Set;if(S)for(let e of S)B.add(e.uuid);let V=new $e(2e3);for(let e of B)V.add(e);let _e=new $e(2e3),H=new AbortController,U=null;ge(e=>{H.signal.aborted||U?.reportMetadata(e)},{replayCurrent:!0});let W=0,G=he?ce:0,K=null,J=null,Se=ke(H.signal),Y=Se.wake,Ce=Se.signal,X=new rt,Z=!oe,Q=0,$=null;async function we(){if($)return $;$=Te();try{return await $}finally{$=null}}async function Te(){if(Q++,ye(`doReconnect: attempt=${Q}/3 envId=${L} sessionId=${z} workId=${K}`),W++,k(`[bridge:repl] Reconnecting after env lost (attempt ${Q}/3)`),Q>3)return k(`[bridge:repl] Environment reconnect limit reached (3), giving up`),!1;if(U){let e=U.getLastSequenceNum();e>G&&(G=e),U.close(),U=null}if(Y(),X.drop(),K){let e=K;if(await F.stopWork(L,e,!1).catch(()=>{}),K!==e)return k(`[bridge:repl] Poll loop recovered during stopWork await — deferring to it`),Q=0,!0;K=null,J=null}if(H.signal.aborted)return k(`[bridge:repl] Reconnect aborted by teardown`),!1;let e=L;I.reuseEnvironmentId=e;try{let e=await F.registerBridgeEnvironment(I);L=e.environment_id,R=e.environment_secret}catch(e){return I.reuseEnvironmentId=void 0,k(`[bridge:repl] Environment re-registration failed: ${D(e)}`),!1}if(I.reuseEnvironmentId=void 0,k(`[bridge:repl] Re-registered: requested=${e} got=${L}`),H.signal.aborted)return k(`[bridge:repl] Reconnect aborted after env registration, cleaning up`),await F.deregisterEnvironment(L).catch(()=>{}),!1;if(U!==null)return k(`[bridge:repl] Poll loop recovered during registerBridgeEnvironment await — deferring to it`),Q=0,!0;if(await me(e,z))return P(`tengu_bridge_repl_reconnected_in_place`,{}),Q=0,!0;if(L!==e&&P(`tengu_bridge_repl_env_expired_fresh_session`,{}),await h(z),H.signal.aborted)return k(`[bridge:repl] Reconnect aborted after archive, cleaning up`),await F.deregisterEnvironment(L).catch(()=>{}),!1;let t=_(),r=await m({environmentId:L,title:t,gitRepoUrl:o,branch:a,signal:AbortSignal.timeout(15e3)});return r?H.signal.aborted?(k(`[bridge:repl] Reconnect aborted after session creation, cleaning up`),await h(r),!1):(z=r,l(be(r)).catch(()=>{}),G=0,_e.clear(),Z=!oe,k(`[bridge:repl] Re-created session: ${z}`),await M(n,{sessionId:z,environmentId:L,source:`repl`}),w?.clear(),Q=0,!0):(k(`[bridge:repl] Session creation failed during reconnection`),!1)}function Ee(){return p()}function De(){let e=X.end();if(e.length===0)return;if(!U){k(`[bridge:repl] Cannot drain ${e.length} pending message(s): no transport`);return}for(let t of e)V.add(t.uuid);let t=ee(e).map(e=>({...e,session_id:z}));k(`[bridge:repl] Drained ${e.length} pending message(s) after flush`),U.writeBatch(t)}let Oe=null;function je(){Oe?.()}function Fe(e){if(ye(`handleTransportPermanentClose: code=${e} transport=${U?`exists`:`null`} pollAborted=${H.signal.aborted}`),k(`[bridge:repl] Transport permanently closed: code=${e}`),P(`tengu_bridge_repl_ws_closed`,{code:e}),U){let e=U.getLastSequenceNum();e>G&&(G=e),U=null}Y();let t=X.drop();if(t>0&&k(`[bridge:repl] Dropping ${t} pending message(s) on transport close (code=${e})`,{level:`warn`}),e===1e3){A?.(`failed`,`session ended`),H.abort(),je();return}A?.(`reconnecting`,`Remote Control connection lost (code ${e})`),k(`[bridge:repl] Transport reconnect budget exhausted (code=${e}), attempting env reconnect`),we().then(t=>{t||H.signal.aborted||(k(`[bridge:repl] reconnectEnvironmentWithSession resolved false — tearing down`),P(`tengu_bridge_repl_reconnect_failed`,{close_code:e}),A?.(`failed`,`reconnection failed`),je())})}let Le;process.env.USER_TYPE===`ant`&&process.platform!==`win32`&&(Le=()=>{k(`[bridge:repl] SIGUSR2 received — forcing doReconnect() for testing`),we()},process.on(`SIGUSR2`,Le));let Re=null;process.env.USER_TYPE===`ant`&&g({fireClose:e=>{if(!Re){k(`[bridge:debug] fireClose: no transport wired yet`);return}k(`[bridge:debug] fireClose(${e}) — injecting`),Re(e)},forceReconnect:()=>{k(`[bridge:debug] forceReconnect — injecting`),we()},injectFault:u,wakePollLoop:Y,describe:()=>`env=${L} session=${z} transport=${U?.getStateLabel()??`null`} workId=${K??`null`}`}),dt({api:F,getCredentials:()=>({environmentId:L,environmentSecret:R}),signal:H.signal,getPollIntervalConfig:b,onStateChange:A,getWsState:()=>U?.getStateLabel()??`null`,isAtCapacity:()=>U!==null,capacitySignal:Ce,onFatalError:je,getHeartbeatInfo:()=>!K||!J?null:{environmentId:L,workId:K,sessionToken:J},onHeartbeatFatal:e=>{if(k(`[bridge:repl] heartbeatWork fatal (status=${e.status}) — tearing down work item for fast re-dispatch`),U){let e=U.getLastSequenceNum();e>G&&(G=e),U.close(),U=null}X.drop(),K&&F.stopWork(L,K,!1).catch(e=>{k(`[bridge:repl] stopWork after heartbeat fatal: ${D(e)}`)}),K=null,J=null,Y(),A?.(`reconnecting`,`Work item lease expired, fetching fresh token`)},async onEnvironmentLost(){return await we()?{environmentId:L,environmentSecret:R}:null},onWorkReceived:(e,r,i,a)=>{if(U?.isConnectedStatus()&&k(`[bridge:repl] Work received while transport connected, replacing with fresh token (workId=${i})`),k(`[bridge:repl] Work received: workId=${i} workSessionId=${e} currentSessionId=${z} match=${Ne(e,z)}`),M(n,{sessionId:z,environmentId:L,source:`repl`}),!Ne(e,z)){k(`[bridge:repl] Rejecting foreign session: expected=${z} got=${e}`);return}K=i,J=r;let o=a||t(process.env.CLAUDE_BRIDGE_USE_CCR_V2),s;if(!o){if(s=Ee(),!s){k(`[bridge:repl] No OAuth token available for session ingress, skipping work`);return}ve(s)}if(P(`tengu_bridge_repl_work_received`,{}),U){let e=U;U=null;let t=e.getLastSequenceNum();t>G&&(G=t),e.close()}X.deactivate();let l=e=>Ye(e,{transport:U,sessionId:z,onInterrupt:T,onSetModel:E,onSetMaxThinkingTokens:O,onSetPermissionMode:ie}),u=!1,f=e=>{U=e,e.setOnConnect(()=>{if(U===e){if(k(`[bridge:repl] Ingress transport connected`),P(`tengu_bridge_repl_ws_connected`,{}),!o){let e=Ee();e&&ve(e)}if(He=!1,!u&&S&&S.length>0){u=!0;let t=x,n=S.filter(e=>Je(e)&&!w?.has(e.uuid)),r=t>0&&n.length>t?n.slice(-t):n;r.length<n.length&&(k(`[bridge:repl] Capped initial flush: ${n.length} -> ${r.length} (cap=${t})`),P(`tengu_bridge_repl_history_capped`,{eligible_count:n.length,capped_count:r.length}));let i=ee(r);if(i.length>0){k(`[bridge:repl] Flushing ${i.length} initial message(s) via transport`);let t=i.map(e=>({...e,session_id:z})),n=e.droppedBatchCount;e.writeBatch(t).then(()=>{if(e.droppedBatchCount>n){k(`[bridge:repl] Initial flush dropped ${e.droppedBatchCount-n} batch(es) — not marking ${i.length} UUID(s) as flushed`);return}if(w)for(let e of i)e.uuid&&w.add(e.uuid)}).catch(e=>k(`[bridge:repl] Initial flush failed: ${e}`)).finally(()=>{U===e&&(De(),A?.(`connected`))})}else De(),A?.(`connected`)}else X.active||A?.(`connected`)}}),e.setOnData(e=>{try{let t=JSON.parse(e);ye(`ingress: type=${t.type}${t.type===`control_request`?` subtype=${t.request?.subtype} request_id=${t.request_id}`:``}${t.type===`control_response`?` subtype=${t.response?.subtype} request_id=${t.response?.request_id}`:``}${t.type===`user`?` uuid=${t.uuid}`:``}${t.type===`keep_alive`?``:` len=${e.length}`}`)}catch{ye(`ingress (non-JSON): ${String(e).slice(0,200)}`)}Qe(e,V,_e,ne,re,l)}),Re=Fe,e.setOnClose(t=>{U===e&&(ye(`transport onClose: code=${t} connected=${e.isConnectedStatus()} state=${e.getStateLabel()} seq=${e.getLastSequenceNum()}`),Fe(t))}),!u&&S&&S.length>0&&X.start(),e.connect()};if(W++,o){let t=Ie(c,e),n=W;k(`[bridge:repl] CCR v2: sessionUrl=${t} session=${e} gen=${n}`),nt({sessionUrl:t,ingressToken:r,sessionId:e,initialSequenceNum:G}).then(e=>{if(H.signal.aborted){e.close();return}if(n!==W){k(`[bridge:repl] CCR v2: discarding stale handshake gen=${n} current=${W}`),e.close();return}f(e)},e=>{k(`[bridge:repl] CCR v2: createV2ReplTransport failed: ${D(e)}`,{level:`error`}),P(`tengu_bridge_repl_ccr_v2_init_failed`,{}),n===W&&(K&&(F.stopWork(L,K,!1).catch(e=>{k(`[bridge:repl] stopWork after v2 init failure: ${D(e)}`)}),K=null,J=null),Y())})}else{let t=Pe(d,e);k(`[bridge:repl] Ingress URL: ${t}`),k(`[bridge:repl] Creating HybridTransport: session=${e}`);let n=s??``;f(tt(new et(new URL(t),{Authorization:`Bearer ${n}`,"anthropic-version":`2023-06-01`},e,()=>({Authorization:`Bearer ${Ee()??n}`,"anthropic-version":`2023-06-01`}),{maxConsecutiveFailures:50,isBridge:!0,onBatchDropped:()=>{A?.(`reconnecting`,`Lost sync with Remote Control — events could not be delivered`),Y()}})))}}});let ze=se?setInterval(()=>{$||M(n,{sessionId:z,environmentId:L,source:`repl`})},60*6e4):null;ze?.unref?.();let Be=b().session_keepalive_interval_v2_ms,Ve=Be>0?setInterval(()=>{U&&(k(`[bridge:repl] keep_alive sent`),U.write({type:`keep_alive`}).catch(e=>{k(`[bridge:repl] keep_alive write failed: ${D(e)}`)}))},Be):null;Ve?.unref?.();let He=!1;Oe=async()=>{if(He){k(`[bridge:repl] Teardown already in progress, skipping duplicate call env=${L} session=${z}`);return}He=!0;let e=Date.now();if(k(`[bridge:repl] Teardown starting: env=${L} session=${z} workId=${K??`none`} transportState=${U?.getStateLabel()??`null`}`),ze!==null&&clearInterval(ze),Ve!==null&&clearInterval(Ve),Le&&process.off(`SIGUSR2`,Le),process.env.USER_TYPE===`ant`&&(v(),Re=null),H.abort(),k(`[bridge:repl] Teardown: poll loop aborted`),U){let e=U.getLastSequenceNum();e>G&&(G=e)}if(se){U=null,X.drop(),await M(n,{sessionId:z,environmentId:L,source:`repl`}),k(`[bridge:repl] Teardown (perpetual): leaving env=${L} session=${z} alive on server, duration=${Date.now()-e}ms`);return}let t=U;if(U=null,X.drop(),t){let e={...Ze(z),session_id:z};t.write(e)}let r=K?F.stopWork(L,K,!0).then(()=>{k(`[bridge:repl] Teardown: stopWork completed`)}).catch(e=>{k(`[bridge:repl] Teardown stopWork failed: ${D(e)}`)}):Promise.resolve();await Promise.all([r,h(z)]),t?.close(),k(`[bridge:repl] Teardown: transport closed`),await F.deregisterEnvironment(L).catch(e=>{k(`[bridge:repl] Teardown deregister failed: ${D(e)}`)}),await ue(n),k(`[bridge:repl] Teardown complete: env=${L} duration=${Date.now()-e}ms`)};let Ue=ae(()=>Oe?.());return k(`[bridge:repl] Ready: env=${L} session=${z}`),A?.(`ready`),{get bridgeSessionId(){return z},get environmentId(){return L},getSSESequenceNum(){let e=U?.getLastSequenceNum()??0;return Math.max(G,e)},sessionIngressUrl:d,writeMessages(e){let t=e.filter(e=>Je(e)&&!B.has(e.uuid)&&!V.has(e.uuid));if(t.length===0)return;if(!Z)for(let e of t){let t=Xe(e);if(t!==void 0&&oe?.(t,z)){Z=!0;break}}if(X.enqueue(...t)){k(`[bridge:repl] Queued ${t.length} message(s) during initial flush`);return}if(!U){let e=t.map(e=>e.type).join(`,`);k(`[bridge:repl] Transport not configured, dropping ${t.length} message(s) [${e}] for session=${z}`,{level:`warn`});return}for(let e of t)V.add(e.uuid);k(`[bridge:repl] Sending ${t.length} message(s) via transport`);let n=ee(t).map(e=>({...e,session_id:z}));U.writeBatch(n)},writeSdkMessages(e){let t=e.filter(e=>!e.uuid||!V.has(e.uuid));if(t.length===0)return;if(!U){k(`[bridge:repl] Transport not configured, dropping ${t.length} SDK message(s) for session=${z}`,{level:`warn`});return}for(let e of t)e.uuid&&V.add(e.uuid);let n=t.map(e=>({...e,session_id:z}));U.writeBatch(n)},sendControlRequest(e){if(!U){k(`[bridge:repl] Transport not configured, skipping control_request`);return}let t={...e,session_id:z};U.write(t),k(`[bridge:repl] Sent control_request request_id=${e.request_id}`)},sendControlResponse(e){if(!U){k(`[bridge:repl] Transport not configured, skipping control_response`);return}let t={...e,session_id:z};U.write(t),k(`[bridge:repl] Sent control_response`)},sendControlCancelRequest(e){if(!U){k(`[bridge:repl] Transport not configured, skipping control_cancel_request`);return}let t={type:`control_cancel_request`,request_id:e,session_id:z};U.write(t),k(`[bridge:repl] Sent control_cancel_request request_id=${e}`)},sendResult(){if(!U){k(`[bridge:repl] sendResult: skipping, transport not configured session=${z}`);return}U.reportState(`idle`);let e={...Ze(z),session_id:z};U.write(e),k(`[bridge:repl] Sent result for session=${z}`)},async teardown(){Ue(),await Oe?.(),k(`[bridge:repl] Torn down`),P(`tengu_bridge_repl_teardown`,{})}}}async function dt({api:e,getCredentials:t,signal:n,onStateChange:r,onWorkReceived:i,onEnvironmentLost:a,getWsState:o,isAtCapacity:c,capacitySignal:l,onFatalError:u,getPollIntervalConfig:d=()=>Ae,getHeartbeatInfo:p,onHeartbeatFatal:m}){k(`[bridge:repl] Starting work poll loop for env=${t().environmentId}`);let g=0,_=null,v=null,y=0,b=!1;for(;!n.aborted;){let{environmentId:x,environmentSecret:S}=t(),C=d();try{let t=await e.pollForWork(x,S,n,C.reclaim_older_than_ms);if(y=0,g>0&&(k(`[bridge:repl] Poll recovered after ${g} consecutive error(s)`),g=0,_=null,v=null,r?.(`ready`)),!t){let t=b;if(b=!1,c?.()&&l&&!t){let t=C.poll_interval_ms_at_capacity;if(C.non_exclusive_heartbeat_interval_ms>0&&p){P(`tengu_bridge_heartbeat_mode_entered`,{heartbeat_interval_ms:C.non_exclusive_heartbeat_interval_ms});let r=t>0?Date.now()+t:null,i=!1,a=0;for(;!n.aborted&&c()&&(r===null||Date.now()<r);){let t=d();if(t.non_exclusive_heartbeat_interval_ms<=0)break;let n=p();if(!n)break;let r=l();try{await e.heartbeatWork(n.environmentId,n.workId,n.sessionToken)}catch(e){if(k(`[bridge:repl:heartbeat] Failed: ${D(e)}`),e instanceof s){r.cleanup(),P(`tengu_bridge_heartbeat_error`,{status:e.status,error_type:e.status===401||e.status===403?`auth_failed`:`fatal`}),m?(m(e),k(`[bridge:repl:heartbeat] Fatal (status=${e.status}), work state cleared — fast-polling for re-dispatch`)):i=!0;break}}a++,await B(t.non_exclusive_heartbeat_interval_ms,r.signal),r.cleanup()}let o=i?`error`:n.aborted?`shutdown`:c()?r!==null&&Date.now()>=r?`poll_due`:`config_disabled`:`capacity_changed`;if(P(`tengu_bridge_heartbeat_mode_exited`,{reason:o,heartbeat_cycles:a}),!i){o===`poll_due`&&k(`[bridge:repl] Heartbeat poll_due after ${a} cycles — falling through to pollForWork`);continue}}let r=t>0?t:C.non_exclusive_heartbeat_interval_ms;if(r>0){let e=l(),t=Date.now();await B(r,e.signal),e.cleanup();let n=Date.now()-t-r;n>6e4&&(k(`[bridge:repl] At-capacity sleep overran by ${Math.round(n/1e3)}s — process suspension detected, forcing one fast-poll cycle`),P(`tengu_bridge_repl_suspension_detected`,{overrun_ms:n}),b=!0)}}else await B(C.poll_interval_ms_not_at_capacity,n);continue}let a;try{a=Fe(t.secret)}catch(n){k(`[bridge:repl] Failed to decode work secret: ${D(n)}`),P(`tengu_bridge_repl_work_secret_failed`,{}),await e.stopWork(x,t.id,!1).catch(()=>{});continue}k(`[bridge:repl] Acknowledging workId=${t.id}`);try{await e.acknowledgeWork(x,t.id,a.session_ingress_token)}catch(e){k(`[bridge:repl] Acknowledge failed workId=${t.id}: ${D(e)}`)}if(t.data.type===`healthcheck`){k(`[bridge:repl] Healthcheck received`);continue}if(t.data.type===`session`){let e=t.data.id;try{f(e,`session_id`)}catch{k(`[bridge:repl] Invalid session_id in work: ${e}`);continue}i(e,a.session_ingress_token,t.id,a.use_code_sessions===!0),k(`[bridge:repl] Work accepted, continuing poll loop`)}}catch(i){if(n.aborted)break;if(i instanceof s&&i.status===404&&a){let e=t().environmentId;if(x!==e){k(`[bridge:repl] Stale poll error for old env=${x}, current env=${e} — skipping onEnvironmentLost`),g=0,_=null;continue}if(y++,k(`[bridge:repl] Environment deleted, attempting re-registration (attempt ${y}/3)`),P(`tengu_bridge_repl_env_lost`,{attempt:y}),y>3){k(`[bridge:repl] Environment re-registration limit reached (3), giving up`),r?.(`failed`,`Environment deleted and re-registration limit reached`),u?.();break}r?.(`reconnecting`,`environment lost, recreating session`);let i=await a();if(n.aborted)break;if(i){g=0,_=null,r?.(`ready`),k(`[bridge:repl] Re-registered environment: ${i.environmentId}`);continue}r?.(`failed`,`Environment deleted and re-registration failed`),u?.();break}if(i instanceof s){let e=h(i.errorType),t=ee(i);k(`[bridge:repl] Fatal poll error: ${i.message} (status=${i.status}, type=${i.errorType??`unknown`})${t?` (suppressed)`:``}`),P(`tengu_bridge_repl_fatal_error`,{status:i.status,error_type:i.errorType}),j(e?`info`:`error`,`bridge_repl_fatal_error`,{status:i.status,error_type:i.errorType}),t||r?.(`failed`,e?`session expired · /remote-control to reconnect`:i.message),u?.();break}let c=Date.now();v!==null&&c-v>6e4*2&&(k(`[bridge:repl] Detected system sleep (${Math.round((c-v)/1e3)}s gap), resetting poll error budget`),j(`info`,`bridge_repl_poll_sleep_detected`,{gapMs:c-v}),g=0,_=null),v=c,g++,_===null&&(_=c);let l=c-_,f=U(i),m=K(i),b=o?.()??`unknown`;if(k(`[bridge:repl] Poll error (attempt ${g}, elapsed ${Math.round(l/1e3)}s, ws=${b}): ${m}`),P(`tengu_bridge_repl_poll_error`,{status:f,consecutiveErrors:g,elapsedMs:l}),g===1&&r?.(`reconnecting`,m),l>=9e5){k(`[bridge:repl] Poll failures exceeded ${ct/1e3}s (${g} errors), giving up`),j(`info`,`bridge_repl_poll_give_up`),P(`tengu_bridge_repl_poll_give_up`,{consecutiveErrors:g,elapsedMs:l,lastStatus:f}),r?.(`failed`,`connection to server lost`);break}let S=Math.min(ot*2**(g-1),st);if(d().non_exclusive_heartbeat_interval_ms>0){let t=p?.();if(t)try{await e.heartbeatWork(t.environmentId,t.workId,t.sessionToken)}catch{}}await B(S,n)}}k(`[bridge:repl] Work poll loop ended (aborted=${n.aborted}) env=${t().environmentId}`)}O(),A(),G(),W();async function ft(t){let{onInboundMessage:n,onPermissionResponse:r,onInterrupt:i,onSetModel:s,onSetMaxThinkingTokens:l,onSetPermissionMode:u,onStateChange:d,initialMessages:f,getMessages:p,previouslyFlushedUUIDs:m,initialName:h,perpetual:g,outboundOnly:ee,tags:v}=t??{};if(J($),!await Q())return q(`not_enabled`,`[bridge:repl] Skipping: bridge not enabled`),null;if(!Z())return q(`no_oauth`,`[bridge:repl] Skipping: no OAuth tokens`),d?.(`failed`,`/login`),null;if(await S(),!y(`allow_remote_control`))return q(`policy_denied`,`[bridge:repl] Skipping: allow_remote_control policy not allowed`),d?.(`failed`,`disabled by your organization's policy`),null;if(!Y()){let e=se();if(e.bridgeOauthDeadExpiresAt!=null&&(e.bridgeOauthDeadFailCount??0)>=3&&he()?.expiresAt===e.bridgeOauthDeadExpiresAt)return k(`[bridge:repl] Skipping: cross-process backoff (dead token seen ${e.bridgeOauthDeadFailCount} times)`),null;await me();let t=he();if(t&&t.expiresAt!==null&&t.expiresAt<=Date.now()){q(`oauth_expired_unrefreshable`,`[bridge:repl] Skipping: OAuth token expired and refresh failed (re-login required)`),d?.(`failed`,`/login`);let e=t.expiresAt;return oe(t=>({...t,bridgeOauthDeadExpiresAt:e,bridgeOauthDeadFailCount:t.bridgeOauthDeadExpiresAt===e?(t.bridgeOauthDeadFailCount??0)+1:1})),null}}let x=Ce(),C=`remote-control-${re()}`,w=!1,te=!1;if(h)C=h,w=!0,te=!0;else{let e=a(),t=e?ne(e):void 0;if(t)C=t,w=!0,te=!0;else if(f&&f.length>0)for(let e=f.length-1;e>=0;e--){let t=f[e];if(t.type!==`user`||t.isMeta||t.toolUseResult||t.isCompactSummary||t.origin&&t.origin.kind!==`human`||b(t))continue;let n=_(t.message.content);if(!n)continue;let r=mt(n);if(r){C=r,w=!0;break}}}let T=0,E,O=0,ie=(e,t,n)=>{w=!0,C=e,k(`[bridge:repl] derived title from message ${n}: ${e}`),Le(t,e,{baseUrl:x,getAccessToken:Z}).catch(()=>{})},ae=(e,t)=>{let n=++O,r=T;Ge(e,AbortSignal.timeout(15e3)).then(e=>{e&&n===O&&E===t&&!ne(a())&&ie(e,t,r)})},A=(e,t)=>{if(te||ne(a()))return!0;if(E!==void 0&&E!==t&&(T=0),E=t,T++,T===1&&!w){let n=mt(e);n&&ie(n,t,T),ae(e,t)}else if(T===3){let n=p?.(),r=n?qe(c(n)):e;ae(r,t)}return T>=3},ce=X()?`self-hosted`:await F();if(!ce)return q(`no_org_uuid`,`[bridge:repl] Skipping: no org UUID`),d?.(`failed`,`/login`),null;if(Te()&&!g){let e=await He();if(e)return q(`version_too_old`,`[bridge:repl] Skipping: ${e}`,!0),d?.(`failed`,"run `claude update` to upgrade"),null;k(`[bridge:repl] Using env-less bridge path (tengu_bridge_repl_v2)`);let{initEnvLessBridgeCore:t}=await import(`./remoteBridgeCore-asY9JAXU.js`);return t({baseUrl:x,orgUUID:ce,title:C,getAccessToken:Z,onAuth401:I,toSDKMessages:We,initialHistoryCap:200,initialMessages:f,onInboundMessage:n,onUserMessage:A,onPermissionResponse:r,onInterrupt:i,onSetModel:s,onSetMaxThinkingTokens:l,onSetPermissionMode:u,onStateChange:d,outboundOnly:ee,tags:v})}let j=Ee();if(j)return q(`version_too_old`,`[bridge:repl] Skipping: ${j}`),d?.(`failed`,"run `claude update` to upgrade"),null;let le=await M(),ue=await de(),fe=process.env.CLAUDE_BRIDGE_SESSION_INGRESS_URL||x,N=`claude_code`;{let{isAssistantMode:t}=(De(),e(Oe));t()&&(N=`claude_code_assistant`)}return ut({dir:o(),machineName:it(),branch:le,gitRepoUrl:ue,title:C,baseUrl:x,sessionIngressUrl:fe,workerType:N,getAccessToken:Z,createSession:e=>ze({...e,events:[],baseUrl:x,getAccessToken:Z}),archiveSession:e=>Be(e,{baseUrl:x,getAccessToken:Z,timeoutMs:1500}).catch(e=>{k(`[bridge:repl] archiveBridgeSession threw: ${D(e)}`,{level:`error`})}),getCurrentTitle:()=>ne(a())??C,onUserMessage:A,toSDKMessages:We,onAuth401:I,getPollIntervalConfig:je,initialHistoryCap:200,initialMessages:f,previouslyFlushedUUIDs:m,onInboundMessage:n,onPermissionResponse:r,onInterrupt:i,onSetModel:s,onSetMaxThinkingTokens:l,onSetPermissionMode:u,onStateChange:d,perpetual:g})}var pt=50;function mt(e){let t=fe(e),n=(/^(.*?[.!?])\s/.exec(t)?.[1]??t).replace(/\s+/g,` `).trim();if(n)return n.length>pt?n.slice(0,pt-1)+`…`:n}export{ft as initReplBridge};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{BS as t,FS as n,HS as r,NS as i,PS as a,RS as o,US as s,VS as c}from"./loadAgentsDir-BURvZNN6.js";import{I as l,S as u,w as d,z as f}from"./debug-BrXObCdR.js";import{r as p,t as m}from"./promptEditor-DMJyosKj.js";import{dirname as h}from"path";import{mkdir as g,writeFile as _}from"fs/promises";function v(e){let t=new Set(o.map(e=>c(e.key)));return e.map(e=>{let n={};for(let[r,i]of Object.entries(e.bindings))t.has(c(r))||(n[r]=i);return{context:e.context,bindings:n}}).filter(e=>Object.keys(e.bindings).length>0)}function y(){return d({$schema:`https://www.schemastore.org/claude-code-keybindings.json`,$docs:`https://code.claude.com/docs/en/keybindings`,bindings:v(r)},null,2)+`
|
|
2
|
-
`}var b=e((()=>{u(),s(),t()}));async function x(){if(!n())return{type:`text`,value:`Keybinding customization is not enabled. This feature is currently in preview.`};let e=i(),t=!1;await g(h(e),{recursive:!0});try{await _(e,y(),{encoding:`utf-8`,flag:`wx`})}catch(e){if(l(e)===`EEXIST`)t=!0;else throw e}let r=await m(e);return r.error?{type:`text`,value:`${t?`Opened`:`Created`} ${e}. Could not open in editor: ${r.error}`}:{type:`text`,value:t?`Opened ${e} in your editor.`:`Created ${e} with template. Opened in your editor.`}}e((()=>{a(),b(),f(),p()}))();export{x as call};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e,t}from"./language-BA5WprZv.js";e();export{t as getResolvedLanguage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{n as t,t as n}from"./defineProperty-C-QyHrDq.js";import{n as r,t as i}from"./axios-DaWTGg7G.js";import{I as a,P as o,fi as s,t as c}from"./src-CDCSSo0U2.js";import{t as l}from"./jsx-runtime-Bb4Xn-E0.js";import{n as u,r as d}from"./analytics-BotDBGh0.js";import{l as f,u as p}from"./oauth-BqJqV-2M.js";import{o as m,u as h}from"./api-C-rOQY-l.js";import{n as g,r as _,t as v}from"./cron-3LntnnhJ.js";import{n as y,r as b}from"./hostGuard-C5xydXZI.js";import{n as x,t as S}from"./launchCommand-1qkTCKpf.js";function C(e){return new Promise(t=>setTimeout(t,e))}async function w(){let e;try{e=(await h()).apiKey}catch(e){let t=e instanceof Error?e.message:String(e);throw new F(t,501)}return y(T()),{"x-api-key":e,"anthropic-version":`2023-06-01`,"anthropic-beta":N,"content-type":`application/json`}}function T(){return`${f().BASE_API_URL}/v1/agents`}function E(e){if(r.isAxiosError(e)){let t=e.response?.status??0;if(t===401)return new F(`Authentication failed. Please run /login to re-authenticate.`,401);if(t===403)return new F(`Subscription required. Scheduled agents require a Claude Pro/Max/Team subscription.`,403);if(t===404)return new F(`Agent not found.`,404);if(t===429){let t=e.response?.headers?.[`retry-after`]??``,n=t?` Retry after ${t}s.`:``;return new F(`Rate limit exceeded.${n}`,429)}let n=(e.response?.data)?.error?.message??e.message;return new F(n,t)}return e instanceof F?e:new F(e instanceof Error?e.message:String(e),0)}function D(e){if(!e)return null;let t=Number(e);if(!Number.isNaN(t)&&t>=0)return t*1e3;let n=Date.parse(e);return Number.isNaN(n)?null:Math.max(0,n-Date.now())}async function O(e){let t;for(let n=0;n<P;n++)try{return await e()}catch(e){let i=E(e);if(i.statusCode>=500){t=i,n<P-1&&await C(D(r.isAxiosError(e)?e.response?.headers?.[`retry-after`]:void 0)??500*2**n);continue}throw i}throw t??new F(`Request failed after retries`,0)}async function k(){return O(async()=>{let e=await w();return(await r.get(T(),{headers:e})).data.data??[]})}async function A(e,t){return O(async()=>{let n=await w();return(await r.post(T(),{cron_expr:e,prompt:t,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone??`UTC`},{headers:n})).data})}async function j(e){return O(async()=>{let t=await w();await r.delete(`${T()}/${e}`,{headers:t})})}async function M(e){return O(async()=>{let t=await w();return(await r.post(`${T()}/${e}/run`,{},{headers:t})).data})}var N,P,F,I=e((()=>{i(),p(),b(),m(),t(),N=`managed-agents-2026-04-01`,P=3,F=class extends Error{constructor(e,t){super(e),n(this,`statusCode`,void 0),this.statusCode=t,this.name=`AgentsApiError`}}}));function L({agent:e}){let t=v(e.cron_expr,{utc:!0}),n=e.next_run?new Date(e.next_run).toLocaleString():`—`;return(0,z.jsxs)(a,{flexDirection:`column`,marginBottom:1,children:[(0,z.jsxs)(a,{children:[(0,z.jsx)(o,{bold:!0,children:e.id}),(0,z.jsx)(o,{dimColor:!0,children:` · `}),(0,z.jsx)(o,{color:`suggestion`,children:e.status})]}),(0,z.jsxs)(o,{children:[`Schedule: `,t]}),(0,z.jsxs)(o,{dimColor:!0,children:[`Prompt: `,e.prompt]}),(0,z.jsxs)(o,{dimColor:!0,children:[`Next run: `,n]})]})}function R(e){if(e.mode===`list`)return e.agents.length===0?(0,z.jsx)(a,{children:(0,z.jsx)(o,{dimColor:!0,children:`No scheduled agents. Use /agents-platform create <cron> <prompt> to create one.`})}):(0,z.jsxs)(a,{flexDirection:`column`,children:[(0,z.jsx)(a,{marginBottom:1,children:(0,z.jsxs)(o,{bold:!0,children:[`Scheduled Agents (`,e.agents.length,`)`]})}),e.agents.map(e=>(0,z.jsx)(L,{agent:e},e.id))]});if(e.mode===`created`){let t=v(e.agent.cron_expr,{utc:!0});return(0,z.jsxs)(a,{flexDirection:`column`,children:[(0,z.jsx)(a,{children:(0,z.jsx)(o,{bold:!0,color:`success`,children:`Agent created`})}),(0,z.jsxs)(o,{children:[`ID: `,e.agent.id]}),(0,z.jsxs)(o,{children:[`Schedule: `,t]}),(0,z.jsxs)(o,{children:[`Prompt: `,e.agent.prompt]}),(0,z.jsxs)(o,{dimColor:!0,children:[`Status: `,e.agent.status]})]})}return e.mode===`deleted`?(0,z.jsx)(a,{children:(0,z.jsxs)(o,{color:`success`,children:[`Agent `,e.id,` deleted.`]})}):e.mode===`ran`?(0,z.jsxs)(a,{flexDirection:`column`,children:[(0,z.jsx)(a,{children:(0,z.jsxs)(o,{color:`success`,children:[`Agent `,e.id,` triggered.`]})}),(0,z.jsxs)(o,{dimColor:!0,children:[`Run ID: `,e.runId]})]}):(0,z.jsx)(a,{children:(0,z.jsx)(o,{color:`error`,children:e.message})})}var z,B=e((()=>{s(),c(),g(),z=l()}));function V(e){let t=e.trim().split(/\s+/);return t.length<6?null:{cron:t.slice(0,5).join(` `),prompt:t.slice(5).join(` `)}}function H(e){let t=e.trim();if(t===``||t===`list`)return{action:`list`};let n=t.indexOf(` `),r=n===-1?t:t.slice(0,n),i=n===-1?``:t.slice(n+1).trim();if(r===`create`){if(!i)return{action:`invalid`,reason:`create requires a cron expression and prompt, e.g. create "0 9 * * 1" Run daily standup`};let e=V(i);if(!e)return{action:`invalid`,reason:`create requires at least 5 cron fields followed by a prompt, e.g. create "0 9 * * 1" Run daily standup`};let{cron:t,prompt:n}=e;return n.trim()?{action:`create`,cron:t,prompt:n.trim()}:{action:`invalid`,reason:`prompt cannot be empty`}}if(r===`delete`){if(!i)return{action:`invalid`,reason:`delete requires an agent id`};let e=i.split(/\s+/)[0];return e?{action:`delete`,id:e}:{action:`invalid`,reason:`delete requires an agent id`}}if(r===`run`){if(!i)return{action:`invalid`,reason:`run requires an agent id`};let e=i.split(/\s+/)[0];return e?{action:`run`,id:e}:{action:`invalid`,reason:`run requires an agent id`}}return{action:`invalid`,reason:`Unknown sub-command "${r}". Use: list | create CRON PROMPT | delete ID | run ID`}}var U=e((()=>{}));async function W(e,t){if(e.action===`list`){d(`tengu_agents_platform_list`,{});try{let e=await k();return t(e.length===0?`No scheduled agents found.`:`${e.length} scheduled agent(s).`,{display:`system`}),{mode:`list`,agents:e}}catch(e){let n=e instanceof Error?e.message:String(e);return d(`tengu_agents_platform_failed`,{reason:n}),t(`Failed to list agents: ${n}`,{display:`system`}),{mode:`error`,message:n}}}if(e.action===`create`){let{cron:n,prompt:r}=e;if(!_(n)){let e=`Invalid cron expression: "${n}". Expected 5 fields (minute hour day month weekday).`;return d(`tengu_agents_platform_failed`,{reason:e}),t(e,{display:`system`}),null}d(`tengu_agents_platform_create`,{cron:n});try{let e=await A(n,r);return t(`Agent created: ${e.id}`,{display:`system`}),{mode:`created`,agent:e}}catch(e){let n=e instanceof Error?e.message:String(e);return d(`tengu_agents_platform_failed`,{reason:n}),t(`Failed to create agent: ${n}`,{display:`system`}),{mode:`error`,message:n}}}if(e.action===`delete`){let{id:n}=e;d(`tengu_agents_platform_delete`,{id:n});try{return await j(n),t(`Agent ${n} deleted.`,{display:`system`}),{mode:`deleted`,id:n}}catch(e){let r=e instanceof Error?e.message:String(e);return d(`tengu_agents_platform_failed`,{reason:r}),t(`Failed to delete agent ${n}: ${r}`,{display:`system`}),{mode:`error`,message:r}}}let{id:n}=e;d(`tengu_agents_platform_run`,{id:n});try{let e=await M(n);return t(`Agent ${n} triggered. Run ID: ${e.run_id}`,{display:`system`}),{mode:`ran`,id:n,runId:e.run_id}}catch(e){let r=e instanceof Error?e.message:String(e);return d(`tengu_agents_platform_failed`,{reason:r}),t(`Failed to run agent ${n}: ${r}`,{display:`system`}),{mode:`error`,message:r}}}var G;e((()=>{u(),g(),I(),B(),U(),S(),G=x({commandName:`agents-platform`,parseArgs:e=>{d(`tengu_agents_platform_started`,{args:e});let t=H(e);return t.action===`invalid`?(d(`tengu_agents_platform_failed`,{reason:t.reason}),{action:`invalid`,reason:`Usage: /agents-platform list | create CRON PROMPT | delete ID | run ID\n${t.reason}`}):t},dispatch:W,View:R,errorView:e=>null})}))();export{G as callAgentsPlatform};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-DaDcL9Zw.js";import{n as t,t as n}from"./defineProperty-C-QyHrDq.js";import{n as r,t as i}from"./axios-DaWTGg7G.js";import{I as a,P as o,fi as s,t as c}from"./src-CDCSSo0U2.js";import{t as l}from"./jsx-runtime-Bb4Xn-E0.js";import{n as u,r as d}from"./analytics-BotDBGh0.js";import{l as f,u as p}from"./oauth-BqJqV-2M.js";import{o as m,u as h}from"./api-C-rOQY-l.js";import{n as g,r as _}from"./hostGuard-C5xydXZI.js";import{n as v,t as y}from"./launchCommand-1qkTCKpf.js";function b(e){return new Promise(t=>setTimeout(t,e))}async function x(){let e;try{e=(await h()).apiKey}catch(e){let t=e instanceof Error?e.message:String(e);throw new z(t,501)}return g(S()),{"x-api-key":e,"anthropic-version":`2023-06-01`,"anthropic-beta":L,"content-type":`application/json`}}function S(){return`${f().BASE_API_URL}/v1/memory_stores`}function C(e){if(r.isAxiosError(e)){let t=e.response?.status??0;if(t===401)return new z(`Authentication failed. Please run /login to re-authenticate.`,401);if(t===403)return new z(`Subscription required. Memory stores require a Claude Pro/Max/Team subscription.`,403);if(t===404)return new z(`Memory store or memory not found.`,404);if(t===429){let t=e.response?.headers?.[`retry-after`]??``,n=t?` Retry after ${t}s.`:``;return new z(`Rate limit exceeded.${n}`,429)}let n=(e.response?.data)?.error?.message??e.message;return new z(n,t)}return e instanceof z?e:new z(e instanceof Error?e.message:String(e),0)}function w(e){if(!e)return null;let t=Number(e);if(!Number.isNaN(t)&&t>=0)return t*1e3;let n=Date.parse(e);return Number.isNaN(n)?null:Math.max(0,n-Date.now())}async function T(e){let t;for(let n=0;n<R;n++)try{return await e()}catch(e){let i=C(e);if(i.statusCode>=500){t=i,n<R-1&&await b(w(r.isAxiosError(e)?e.response?.headers?.[`retry-after`]:void 0)??500*2**n);continue}throw i}throw t??new z(`Request failed after retries`,0)}async function E(){return T(async()=>{let e=await x();return(await r.get(S(),{headers:e})).data.data??[]})}async function D(e,t){return T(async()=>{let n=await x(),i={name:e};return t&&(i.namespace=t),(await r.post(S(),i,{headers:n})).data})}async function O(e){return T(async()=>{let t=await x();return(await r.get(`${S()}/${e}`,{headers:t})).data})}async function k(e){return T(async()=>{let t=await x();return(await r.post(`${S()}/${e}/archive`,{},{headers:t})).data})}async function A(e){return T(async()=>{let t=await x();return(await r.get(`${S()}/${e}/memories`,{headers:t})).data.data??[]})}async function j(e,t){return T(async()=>{let n=await x(),i={content:t};return(await r.post(`${S()}/${e}/memories`,i,{headers:n})).data})}async function M(e,t){return T(async()=>{let n=await x();return(await r.get(`${S()}/${e}/memories/${t}`,{headers:n})).data})}async function N(e,t,n){return T(async()=>{let i=await x(),a={content:n};return(await r.patch(`${S()}/${e}/memories/${t}`,a,{headers:i})).data})}async function P(e,t){return T(async()=>{let n=await x();await r.delete(`${S()}/${e}/memories/${t}`,{headers:n})})}async function F(e){return T(async()=>{let t=await x();return(await r.get(`${S()}/${e}/memory_versions`,{headers:t})).data.data??[]})}async function I(e,t){return T(async()=>{let n=await x();return(await r.post(`${S()}/${e}/memory_versions/${t}/redact`,{},{headers:n})).data})}var L,R,z,B=e((()=>{i(),p(),_(),m(),t(),L=`managed-agents-2026-04-01`,R=3,z=class extends Error{constructor(e,t){super(e),n(this,`statusCode`,void 0),this.statusCode=t,this.name=`MemoryStoresApiError`}}}));function V({store:e}){let t=!!e.archived_at,n=e.created_at?new Date(e.created_at).toLocaleString():`—`;return(0,U.jsxs)(a,{flexDirection:`column`,marginBottom:1,children:[(0,U.jsxs)(a,{children:[(0,U.jsx)(o,{bold:!0,children:e.memory_store_id}),(0,U.jsx)(o,{dimColor:!0,children:` · `}),(0,U.jsx)(o,{color:t?`warning`:`success`,children:t?`archived`:`active`}),e.namespace?(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(o,{dimColor:!0,children:` · ns: `}),(0,U.jsx)(o,{children:e.namespace})]}):null]}),(0,U.jsxs)(o,{children:[`Name: `,e.name]}),(0,U.jsxs)(o,{dimColor:!0,children:[`Created: `,n]})]})}function H(e){if(e.mode===`list`)return e.stores.length===0?(0,U.jsx)(a,{children:(0,U.jsx)(o,{dimColor:!0,children:`No memory stores found. Use /memory-stores create <name> to create one.`})}):(0,U.jsxs)(a,{flexDirection:`column`,children:[(0,U.jsx)(a,{marginBottom:1,children:(0,U.jsxs)(o,{bold:!0,children:[`Memory Stores (`,e.stores.length,`)`]})}),e.stores.map(e=>(0,U.jsx)(V,{store:e},e.memory_store_id))]});if(e.mode===`detail`){let{store:t}=e,n=!!t.archived_at,r=t.created_at?new Date(t.created_at).toLocaleString():`—`,i=t.archived_at?new Date(t.archived_at).toLocaleString():null;return(0,U.jsxs)(a,{flexDirection:`column`,children:[(0,U.jsx)(a,{marginBottom:1,children:(0,U.jsxs)(o,{bold:!0,children:[`Memory Store: `,t.memory_store_id]})}),(0,U.jsxs)(o,{children:[`Name: `,t.name]}),t.namespace?(0,U.jsxs)(o,{children:[`Namespace: `,t.namespace]}):null,(0,U.jsxs)(o,{children:[`Status:`,` `,(0,U.jsx)(o,{color:n?`warning`:`success`,children:n?`archived`:`active`})]}),(0,U.jsxs)(o,{dimColor:!0,children:[`Created: `,r]}),i?(0,U.jsxs)(o,{dimColor:!0,children:[`Archived: `,i]}):null]})}if(e.mode===`created`){let{store:t}=e;return(0,U.jsxs)(a,{flexDirection:`column`,children:[(0,U.jsx)(a,{children:(0,U.jsx)(o,{bold:!0,color:`success`,children:`Memory store created`})}),(0,U.jsxs)(o,{children:[`ID: `,t.memory_store_id]}),(0,U.jsxs)(o,{children:[`Name: `,t.name]}),t.namespace?(0,U.jsxs)(o,{children:[`Namespace: `,t.namespace]}):null]})}if(e.mode===`archived`){let{store:t}=e,n=t.archived_at?new Date(t.archived_at).toLocaleString():`—`;return(0,U.jsxs)(a,{flexDirection:`column`,children:[(0,U.jsx)(a,{children:(0,U.jsx)(o,{bold:!0,color:`warning`,children:`Memory store archived`})}),(0,U.jsxs)(o,{children:[`ID: `,t.memory_store_id]}),(0,U.jsxs)(o,{dimColor:!0,children:[`Archived at: `,n]})]})}if(e.mode===`memory-list`){let{storeId:t,memories:n}=e;return n.length===0?(0,U.jsx)(a,{children:(0,U.jsxs)(o,{dimColor:!0,children:[`No memories in store `,t,`. Use /memory-stores create-memory `,t,` <content> to add one.`]})}):(0,U.jsxs)(a,{flexDirection:`column`,children:[(0,U.jsx)(a,{marginBottom:1,children:(0,U.jsxs)(o,{bold:!0,children:[`Memories in `,t,` (`,n.length,`)`]})}),n.map(e=>(0,U.jsxs)(a,{flexDirection:`column`,marginBottom:1,children:[(0,U.jsx)(o,{bold:!0,children:e.memory_id}),(0,U.jsx)(o,{dimColor:!0,children:e.content.length>80?`${e.content.slice(0,80)}…`:e.content})]},e.memory_id))]})}if(e.mode===`memory-detail`){let{memory:t}=e,n=t.created_at?new Date(t.created_at).toLocaleString():`—`,r=t.updated_at?new Date(t.updated_at).toLocaleString():`—`;return(0,U.jsxs)(a,{flexDirection:`column`,children:[(0,U.jsx)(a,{marginBottom:1,children:(0,U.jsxs)(o,{bold:!0,children:[`Memory: `,t.memory_id]})}),(0,U.jsxs)(o,{children:[`Store: `,t.memory_store_id]}),(0,U.jsxs)(o,{children:[`Content: `,t.content]}),(0,U.jsxs)(o,{dimColor:!0,children:[`Created: `,n]}),(0,U.jsxs)(o,{dimColor:!0,children:[`Updated: `,r]})]})}if(e.mode===`memory-created`){let{memory:t}=e;return(0,U.jsxs)(a,{flexDirection:`column`,children:[(0,U.jsx)(a,{children:(0,U.jsx)(o,{bold:!0,color:`success`,children:`Memory created`})}),(0,U.jsxs)(o,{children:[`ID: `,t.memory_id]}),(0,U.jsxs)(o,{children:[`Store: `,t.memory_store_id]}),(0,U.jsxs)(o,{dimColor:!0,children:[`Content: `,t.content]})]})}if(e.mode===`memory-updated`){let{memory:t}=e;return(0,U.jsxs)(a,{flexDirection:`column`,children:[(0,U.jsx)(a,{children:(0,U.jsx)(o,{bold:!0,color:`success`,children:`Memory updated`})}),(0,U.jsxs)(o,{children:[`ID: `,t.memory_id]}),(0,U.jsxs)(o,{dimColor:!0,children:[`Content: `,t.content]})]})}if(e.mode===`memory-deleted`)return(0,U.jsx)(a,{children:(0,U.jsxs)(o,{color:`success`,children:[`Memory `,e.memoryId,` deleted from store `,e.storeId,`.`]})});if(e.mode===`versions`){let{storeId:t,versions:n}=e;return n.length===0?(0,U.jsx)(a,{children:(0,U.jsxs)(o,{dimColor:!0,children:[`No memory versions found for store `,t,`.`]})}):(0,U.jsxs)(a,{flexDirection:`column`,children:[(0,U.jsx)(a,{marginBottom:1,children:(0,U.jsxs)(o,{bold:!0,children:[`Memory Versions in `,t,` (`,n.length,`)`]})}),n.map(e=>{let t=e.created_at?new Date(e.created_at).toLocaleString():`—`,n=!!e.redacted_at;return(0,U.jsxs)(a,{flexDirection:`column`,marginBottom:1,children:[(0,U.jsxs)(a,{children:[(0,U.jsx)(o,{bold:!0,children:e.version_id}),n?(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(o,{dimColor:!0,children:` · `}),(0,U.jsx)(o,{color:`warning`,children:`redacted`})]}):null]}),(0,U.jsxs)(o,{dimColor:!0,children:[`Created: `,t]})]},e.version_id)})]})}if(e.mode===`redacted`){let{version:t}=e,n=t.redacted_at?new Date(t.redacted_at).toLocaleString():`—`;return(0,U.jsxs)(a,{flexDirection:`column`,children:[(0,U.jsx)(a,{children:(0,U.jsx)(o,{bold:!0,color:`warning`,children:`Version redacted`})}),(0,U.jsxs)(o,{children:[`ID: `,t.version_id]}),(0,U.jsxs)(o,{dimColor:!0,children:[`Redacted at: `,n]})]})}return(0,U.jsx)(a,{children:(0,U.jsx)(o,{color:`error`,children:e.message})})}var U,W=e((()=>{s(),c(),U=l()}));function G(e){let t=e.trim();if(t===``||t===`list`)return{action:`list`};let n=t.indexOf(` `),r=n===-1?t:t.slice(0,n),i=n===-1?``:t.slice(n+1).trim();if(r===`get`){if(!i)return{action:`invalid`,reason:`get requires a store id`};let e=i.split(/\s+/)[0];return e?{action:`get`,id:e}:{action:`invalid`,reason:`get requires a store id`}}if(r===`create`)return i?{action:`create`,name:i}:{action:`invalid`,reason:`create requires a store name, e.g. create "My Work Store"`};if(r===`archive`){if(!i)return{action:`invalid`,reason:`archive requires a store id`};let e=i.split(/\s+/)[0];return e?{action:`archive`,id:e}:{action:`invalid`,reason:`archive requires a store id`}}if(r===`memories`){if(!i)return{action:`invalid`,reason:`memories requires a store id`};let e=i.split(/\s+/)[0];return e?{action:`memories`,storeId:e}:{action:`invalid`,reason:`memories requires a store id`}}if(r===`create-memory`){let e=i.split(/\s+/);if(e.length<2||!e[0])return{action:`invalid`,reason:`create-memory requires a store id and content, e.g. create-memory ms_123 "The content"`};let t=e[0],n=e.slice(1).join(` `);return n.trim()?{action:`create-memory`,storeId:t,content:n.trim()}:{action:`invalid`,reason:`create-memory requires non-empty content`}}if(r===`get-memory`){let e=i.split(/\s+/);return e.length<2||!e[0]||!e[1]?{action:`invalid`,reason:`get-memory requires a store id and memory id, e.g. get-memory ms_123 mem_456`}:{action:`get-memory`,storeId:e[0],memoryId:e[1]}}if(r===`update-memory`){let e=i.split(/\s+/);if(e.length<3||!e[0]||!e[1])return{action:`invalid`,reason:`update-memory requires store id, memory id, and content, e.g. update-memory ms_123 mem_456 "New content"`};let t=e[0],n=e[1],r=e.slice(2).join(` `);return r.trim()?{action:`update-memory`,storeId:t,memoryId:n,content:r.trim()}:{action:`invalid`,reason:`update-memory requires non-empty content`}}if(r===`delete-memory`){let e=i.split(/\s+/);return e.length<2||!e[0]||!e[1]?{action:`invalid`,reason:`delete-memory requires a store id and memory id, e.g. delete-memory ms_123 mem_456`}:{action:`delete-memory`,storeId:e[0],memoryId:e[1]}}if(r===`versions`){if(!i)return{action:`invalid`,reason:`versions requires a store id`};let e=i.split(/\s+/)[0];return e?{action:`versions`,storeId:e}:{action:`invalid`,reason:`versions requires a store id`}}if(r===`redact`){let e=i.split(/\s+/);return e.length<2||!e[0]||!e[1]?{action:`invalid`,reason:`redact requires a store id and version id, e.g. redact ms_123 ver_456`}:{action:`redact`,storeId:e[0],versionId:e[1]}}return{action:`invalid`,reason:`Unknown sub-command "${r}". ${K}`}}var K,q=e((()=>{K=`Usage: /memory-stores list | get ID | create NAME | archive ID | memories STORE_ID | create-memory STORE_ID CONTENT | get-memory STORE_ID MEMORY_ID | update-memory STORE_ID MEMORY_ID CONTENT | delete-memory STORE_ID MEMORY_ID | versions STORE_ID | redact STORE_ID VERSION_ID`}));async function J(e,t){if(e.action===`list`){d(`tengu_memory_stores_list`,{});try{let e=await E();return t(e.length===0?`No memory stores found.`:`${e.length} memory store(s).`,{display:`system`}),{mode:`list`,stores:e}}catch(e){let n=e instanceof Error?e.message:String(e);return d(`tengu_memory_stores_failed`,{reason:n}),t(`Failed to list memory stores: ${n}`,{display:`system`}),{mode:`error`,message:n}}}if(e.action===`get`){let{id:n}=e;d(`tengu_memory_stores_get`,{id:n});try{let e=await O(n);return t(`Memory store ${n} fetched.`,{display:`system`}),{mode:`detail`,store:e}}catch(e){let r=e instanceof Error?e.message:String(e);return d(`tengu_memory_stores_failed`,{reason:r}),t(`Failed to get memory store ${n}: ${r}`,{display:`system`}),{mode:`error`,message:r}}}if(e.action===`create`){let{name:n}=e;d(`tengu_memory_stores_create`,{name:n});try{let e=await D(n);return t(`Memory store created: ${e.memory_store_id}`,{display:`system`}),{mode:`created`,store:e}}catch(e){let n=e instanceof Error?e.message:String(e);return d(`tengu_memory_stores_failed`,{reason:n}),t(`Failed to create memory store: ${n}`,{display:`system`}),{mode:`error`,message:n}}}if(e.action===`archive`){let{id:n}=e;d(`tengu_memory_stores_archive`,{id:n});try{let e=await k(n);return t(`Memory store ${n} archived.`,{display:`system`}),{mode:`archived`,store:e}}catch(e){let r=e instanceof Error?e.message:String(e);return d(`tengu_memory_stores_failed`,{reason:r}),t(`Failed to archive memory store ${n}: ${r}`,{display:`system`}),{mode:`error`,message:r}}}if(e.action===`memories`){let{storeId:n}=e;d(`tengu_memory_stores_list_memories`,{storeId:n});try{let e=await A(n);return t(e.length===0?`No memories in store ${n}.`:`${e.length} memory(ies) in store ${n}.`,{display:`system`}),{mode:`memory-list`,storeId:n,memories:e}}catch(e){let r=e instanceof Error?e.message:String(e);return d(`tengu_memory_stores_failed`,{reason:r}),t(`Failed to list memories in store ${n}: ${r}`,{display:`system`}),{mode:`error`,message:r}}}if(e.action===`create-memory`){let{storeId:n,content:r}=e;d(`tengu_memory_stores_create_memory`,{storeId:n});try{let e=await j(n,r);return t(`Memory created: ${e.memory_id}`,{display:`system`}),{mode:`memory-created`,memory:e}}catch(e){let r=e instanceof Error?e.message:String(e);return d(`tengu_memory_stores_failed`,{reason:r}),t(`Failed to create memory in store ${n}: ${r}`,{display:`system`}),{mode:`error`,message:r}}}if(e.action===`get-memory`){let{storeId:n,memoryId:r}=e;d(`tengu_memory_stores_get_memory`,{storeId:n});try{let e=await M(n,r);return t(`Memory ${r} fetched.`,{display:`system`}),{mode:`memory-detail`,memory:e}}catch(e){let n=e instanceof Error?e.message:String(e);return d(`tengu_memory_stores_failed`,{reason:n}),t(`Failed to get memory ${r}: ${n}`,{display:`system`}),{mode:`error`,message:n}}}if(e.action===`update-memory`){let{storeId:n,memoryId:r,content:i}=e;d(`tengu_memory_stores_update_memory`,{storeId:n});try{let e=await N(n,r,i);return t(`Memory ${r} updated.`,{display:`system`}),{mode:`memory-updated`,memory:e}}catch(e){let n=e instanceof Error?e.message:String(e);return d(`tengu_memory_stores_failed`,{reason:n}),t(`Failed to update memory ${r}: ${n}`,{display:`system`}),{mode:`error`,message:n}}}if(e.action===`delete-memory`){let{storeId:n,memoryId:r}=e;d(`tengu_memory_stores_delete_memory`,{storeId:n});try{return await P(n,r),t(`Memory ${r} deleted.`,{display:`system`}),{mode:`memory-deleted`,storeId:n,memoryId:r}}catch(e){let n=e instanceof Error?e.message:String(e);return d(`tengu_memory_stores_failed`,{reason:n}),t(`Failed to delete memory ${r}: ${n}`,{display:`system`}),{mode:`error`,message:n}}}if(e.action===`versions`){let{storeId:n}=e;d(`tengu_memory_stores_versions`,{storeId:n});try{let e=await F(n);return t(e.length===0?`No memory versions found for store ${n}.`:`${e.length} version(s) in store ${n}.`,{display:`system`}),{mode:`versions`,storeId:n,versions:e}}catch(e){let r=e instanceof Error?e.message:String(e);return d(`tengu_memory_stores_failed`,{reason:r}),t(`Failed to list versions for store ${n}: ${r}`,{display:`system`}),{mode:`error`,message:r}}}let{storeId:n,versionId:r}=e;d(`tengu_memory_stores_redact`,{storeId:n});try{let e=await I(n,r);return t(`Version ${r} redacted.`,{display:`system`}),{mode:`redacted`,version:e}}catch(e){let n=e instanceof Error?e.message:String(e);return d(`tengu_memory_stores_failed`,{reason:n}),t(`Failed to redact version ${r}: ${n}`,{display:`system`}),{mode:`error`,message:n}}}var Y,X;e((()=>{u(),B(),W(),q(),y(),Y=`Usage: /memory-stores list | get ID | create NAME | archive ID | memories STORE_ID | create-memory STORE_ID CONTENT | get-memory STORE_ID MEMORY_ID | update-memory STORE_ID MEMORY_ID CONTENT | delete-memory STORE_ID MEMORY_ID | versions STORE_ID | redact STORE_ID VERSION_ID`,X=v({commandName:`memory-stores`,parseArgs:e=>{d(`tengu_memory_stores_started`,{args:e});let t=G(e);return t.action===`invalid`?(d(`tengu_memory_stores_failed`,{reason:t.reason}),{action:`invalid`,reason:`${Y}\n${t.reason}`}):t},dispatch:J,View:H,errorView:e=>null})}))();export{X as callMemoryStores};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e,o as t}from"./rolldown-runtime-DaDcL9Zw.js";import{n,t as r}from"./defineProperty-C-QyHrDq.js";import{n as i,t as a}from"./axios-DaWTGg7G.js";import{I as o,P as s,fi as c,t as l}from"./src-CDCSSo0U2.js";import{t as u}from"./jsx-runtime-Bb4Xn-E0.js";import{n as d,r as f}from"./analytics-BotDBGh0.js";import{l as p,u as m}from"./oauth-BqJqV-2M.js";import{a as h,l as g,o as _}from"./api-C-rOQY-l.js";import{n as v,r as y,t as b}from"./cron-3LntnnhJ.js";import{r as x,t as S}from"./hostGuard-C5xydXZI.js";function C(e){return new Promise(t=>setTimeout(t,e))}async function w(){let e,t;try{let n=await g();e=n.accessToken,t=n.orgUUID}catch(e){let t=e instanceof Error?e.message:String(e);throw new L(`Not authenticated: ${t}. Run /login to re-authenticate.`,401)}return S(T()),{...h(e),"anthropic-beta":F,"x-organization-uuid":t}}function T(){return`${p().BASE_API_URL}/v1/code/triggers`}function E(e){if(i.isAxiosError(e)){let t=e.response?.status??0;if(t===401)return new L(`Authentication failed. Please run /login to re-authenticate.`,401);if(t===403)return new L(`Subscription required. Scheduled triggers require a Claude Pro/Max/Team subscription.`,403);if(t===404)return new L(`Trigger not found.`,404);if(t===429){let t=e.response?.headers?.[`retry-after`]??``,n=t?` Retry after ${t}s.`:``;return new L(`Rate limit exceeded.${n}`,429)}let n=(e.response?.data)?.error?.message??e.message;return new L(n,t)}return e instanceof L?e:new L(e instanceof Error?e.message:String(e),0)}function D(e){if(!e)return null;let t=Number(e);if(!Number.isNaN(t)&&t>=0)return t*1e3;let n=Date.parse(e);return Number.isNaN(n)?null:Math.max(0,n-Date.now())}async function O(e){let t;for(let n=0;n<I;n++)try{return await e()}catch(e){let r=E(e);if(r.statusCode>=500){t=r,n<I-1&&await C(D(i.isAxiosError(e)?e.response?.headers?.[`retry-after`]:void 0)??500*2**n);continue}throw r}throw t??new L(`Request failed after retries`,0)}async function k(){return O(async()=>{let e=await w();return(await i.get(T(),{headers:e})).data.data??[]})}async function A(e){return O(async()=>{let t=await w();return(await i.get(`${T()}/${e}`,{headers:t})).data})}async function j(e){return O(async()=>{let t=await w();return(await i.post(T(),e,{headers:t})).data})}async function M(e,t){return O(async()=>{let n=await w();return(await i.post(`${T()}/${e}`,t,{headers:n})).data})}async function N(e){return O(async()=>{let t=await w();await i.delete(`${T()}/${e}`,{headers:t})})}async function P(e){return O(async()=>{let t=await w();return(await i.post(`${T()}/${e}/run`,{},{headers:t})).data})}var F,I,L,R=e((()=>{a(),m(),x(),_(),n(),F=`ccr-triggers-2026-01-30`,I=3,L=class extends Error{constructor(e,t){super(e),r(this,`statusCode`,void 0),this.statusCode=t,this.name=`TriggersApiError`}}}));function z({trigger:e}){let t=b(e.cron_expression,{utc:!0}),n=e.next_run?new Date(e.next_run).toLocaleString():`—`,r=e.enabled?`enabled`:`disabled`;return(0,V.jsxs)(o,{flexDirection:`column`,marginBottom:1,children:[(0,V.jsxs)(o,{children:[(0,V.jsx)(s,{bold:!0,children:e.trigger_id}),(0,V.jsx)(s,{dimColor:!0,children:` · `}),(0,V.jsx)(s,{color:e.enabled?`success`:`warning`,children:r}),e.agent_id?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(s,{dimColor:!0,children:` · agent: `}),(0,V.jsx)(s,{children:e.agent_id})]}):null]}),(0,V.jsxs)(s,{children:[`Schedule: `,t]}),(0,V.jsxs)(s,{dimColor:!0,children:[`Prompt: `,e.prompt]}),(0,V.jsxs)(s,{dimColor:!0,children:[`Next run: `,n]})]})}function B(e){if(e.mode===`list`)return e.triggers.length===0?(0,V.jsx)(o,{children:(0,V.jsx)(s,{dimColor:!0,children:`No scheduled triggers. Use /schedule create <cron> <prompt> to create one.`})}):(0,V.jsxs)(o,{flexDirection:`column`,children:[(0,V.jsx)(o,{marginBottom:1,children:(0,V.jsxs)(s,{bold:!0,children:[`Scheduled Triggers (`,e.triggers.length,`)`]})}),e.triggers.map(e=>(0,V.jsx)(z,{trigger:e},e.trigger_id))]});if(e.mode===`detail`){let{trigger:t}=e,n=b(t.cron_expression,{utc:!0}),r=t.next_run?new Date(t.next_run).toLocaleString():`—`,i=t.last_run?new Date(t.last_run).toLocaleString():`—`;return(0,V.jsxs)(o,{flexDirection:`column`,children:[(0,V.jsx)(o,{marginBottom:1,children:(0,V.jsxs)(s,{bold:!0,children:[`Trigger: `,t.trigger_id]})}),(0,V.jsxs)(s,{children:[`Status:`,` `,(0,V.jsx)(s,{color:t.enabled?`success`:`warning`,children:t.enabled?`enabled`:`disabled`})]}),(0,V.jsxs)(s,{children:[`Schedule: `,n]}),t.agent_id?(0,V.jsxs)(s,{children:[`Agent: `,t.agent_id]}):null,(0,V.jsxs)(s,{children:[`Next run: `,r]}),(0,V.jsxs)(s,{dimColor:!0,children:[`Last run: `,i]}),(0,V.jsxs)(s,{dimColor:!0,children:[`Prompt: `,t.prompt]}),t.created_at?(0,V.jsxs)(s,{dimColor:!0,children:[`Created: `,new Date(t.created_at).toLocaleString()]}):null]})}if(e.mode===`created`){let{trigger:t}=e,n=b(t.cron_expression,{utc:!0});return(0,V.jsxs)(o,{flexDirection:`column`,children:[(0,V.jsx)(o,{children:(0,V.jsx)(s,{bold:!0,color:`success`,children:`Trigger created`})}),(0,V.jsxs)(s,{children:[`ID: `,t.trigger_id]}),(0,V.jsxs)(s,{children:[`Schedule: `,n]}),(0,V.jsxs)(s,{children:[`Prompt: `,t.prompt]}),t.agent_id?(0,V.jsxs)(s,{children:[`Agent: `,t.agent_id]}):null,(0,V.jsxs)(s,{dimColor:!0,children:[`Status: `,t.enabled?`enabled`:`disabled`]})]})}if(e.mode===`updated`){let{trigger:t}=e;return(0,V.jsxs)(o,{flexDirection:`column`,children:[(0,V.jsx)(o,{children:(0,V.jsx)(s,{bold:!0,color:`success`,children:`Trigger updated`})}),(0,V.jsxs)(s,{children:[`ID: `,t.trigger_id]}),(0,V.jsxs)(s,{dimColor:!0,children:[`Status: `,t.enabled?`enabled`:`disabled`]})]})}return e.mode===`deleted`?(0,V.jsx)(o,{children:(0,V.jsxs)(s,{color:`success`,children:[`Trigger `,e.id,` deleted.`]})}):e.mode===`ran`?(0,V.jsxs)(o,{flexDirection:`column`,children:[(0,V.jsx)(o,{children:(0,V.jsxs)(s,{color:`success`,children:[`Trigger `,e.id,` fired.`]})}),(0,V.jsxs)(s,{dimColor:!0,children:[`Run ID: `,e.runId]})]}):e.mode===`enabled`?(0,V.jsx)(o,{children:(0,V.jsxs)(s,{color:`success`,children:[`Trigger `,e.id,` enabled.`]})}):e.mode===`disabled`?(0,V.jsx)(o,{children:(0,V.jsxs)(s,{color:`warning`,children:[`Trigger `,e.id,` disabled.`]})}):(0,V.jsx)(o,{children:(0,V.jsx)(s,{color:`error`,children:e.message})})}var V,H=e((()=>{c(),l(),v(),V=u()}));function U(e){let t=e.trim().split(/\s+/);return t.length<6?null:{cron:t.slice(0,5).join(` `),prompt:t.slice(5).join(` `)}}function W(e){return e.trim().split(/\s+/).length===5}function G(e){let t=e.trim();if(t===``||t===`list`)return{action:`list`};let n=t.indexOf(` `),r=n===-1?t:t.slice(0,n),i=n===-1?``:t.slice(n+1).trim();if(r===`get`){if(!i)return{action:`invalid`,reason:`get requires a trigger id`};let e=i.split(/\s+/)[0];return e?{action:`get`,id:e}:{action:`invalid`,reason:`get requires a trigger id`}}if(r===`create`){if(!i)return{action:`invalid`,reason:`create requires a cron expression and prompt, e.g. create "0 9 * * 1" Run weekly standup`};let e=U(i);if(!e)return{action:`invalid`,reason:`create requires 5 cron fields followed by a prompt, e.g. create "0 9 * * 1" Run weekly standup`};let{cron:t,prompt:n}=e;return W(t)?n.trim()?{action:`create`,cron:t,prompt:n.trim()}:{action:`invalid`,reason:`prompt cannot be empty`}:{action:`invalid`,reason:`Invalid cron expression: "${t}". Expected 5 fields (minute hour day month weekday).`}}if(r===`update`){let e=i.split(/\s+/);if(e.length<3||!e[0])return{action:`invalid`,reason:`update requires an id, field, and value, e.g. update trg_123 enabled false`};let t=e[0],n=e[1]??``,r=e.slice(2).join(` `);return n?r?{action:`update`,id:t,field:n,value:r}:{action:`invalid`,reason:`update requires a value`}:{action:`invalid`,reason:`update requires a field name`}}if(r===`delete`){if(!i)return{action:`invalid`,reason:`delete requires a trigger id`};let e=i.split(/\s+/)[0];return e?{action:`delete`,id:e}:{action:`invalid`,reason:`delete requires a trigger id`}}if(r===`run`){if(!i)return{action:`invalid`,reason:`run requires a trigger id`};let e=i.split(/\s+/)[0];return e?{action:`run`,id:e}:{action:`invalid`,reason:`run requires a trigger id`}}if(r===`enable`||r===`disable`){if(!i)return{action:`invalid`,reason:`${r} requires a trigger id`};let e=i.split(/\s+/)[0];return e?{action:r,id:e}:{action:`invalid`,reason:`${r} requires a trigger id`}}return{action:`invalid`,reason:`Unknown sub-command "${r}". ${K}`}}var K,q=e((()=>{K=`Usage: /schedule list | get ID | create CRON PROMPT | update ID FIELD VALUE | delete ID | run ID | enable ID | disable ID`})),J,Y;e((()=>{J=t(c(),1),d(),v(),R(),H(),q(),Y=async(e,t,n)=>{f(`tengu_schedule_started`,{args:n??``});let r=G(n??``);if(r.action===`invalid`)return f(`tengu_schedule_failed`,{reason:r.reason}),e(`Usage: /schedule list | get ID | create CRON PROMPT | update ID FIELD VALUE | delete ID | run ID | enable ID | disable ID\n${r.reason}`,{display:`system`}),null;if(r.action===`list`){f(`tengu_schedule_list`,{});try{let t=await k();return e(t.length===0?`No scheduled triggers found.`:`${t.length} scheduled trigger(s).`,{display:`system`}),J.createElement(B,{mode:`list`,triggers:t})}catch(t){let n=t instanceof Error?t.message:String(t);return f(`tengu_schedule_failed`,{reason:n}),e(`Failed to list triggers: ${n}`,{display:`system`}),J.createElement(B,{mode:`error`,message:n})}}if(r.action===`get`){let{id:t}=r;f(`tengu_schedule_get`,{id:t});try{let n=await A(t);return e(`Trigger ${t} fetched.`,{display:`system`}),J.createElement(B,{mode:`detail`,trigger:n})}catch(n){let r=n instanceof Error?n.message:String(n);return f(`tengu_schedule_failed`,{reason:r}),e(`Failed to get trigger ${t}: ${r}`,{display:`system`}),J.createElement(B,{mode:`error`,message:r})}}if(r.action===`create`){let{cron:t,prompt:n}=r;if(!y(t)){let n=`Invalid cron expression: "${t}". Expected 5 fields (minute hour day month weekday).`;return f(`tengu_schedule_failed`,{reason:n}),e(n,{display:`system`}),null}f(`tengu_schedule_create`,{cron:t});try{let r=await j({cron_expression:t,prompt:n});return e(`Trigger created: ${r.trigger_id}`,{display:`system`}),J.createElement(B,{mode:`created`,trigger:r})}catch(t){let n=t instanceof Error?t.message:String(t);return f(`tengu_schedule_failed`,{reason:n}),e(`Failed to create trigger: ${n}`,{display:`system`}),J.createElement(B,{mode:`error`,message:n})}}if(r.action===`update`){let{id:t,field:n,value:i}=r;f(`tengu_schedule_update`,{id:t,field:n});let a={};if(n===`enabled`)a={enabled:i===`true`||i===`1`};else if(n===`cron_expression`||n===`cron`)a={cron_expression:i};else if(n===`prompt`)a={prompt:i};else if(n===`agent_id`)a={agent_id:i};else{let t=`Unknown field "${n}". Valid fields: enabled, cron_expression, prompt, agent_id`;return f(`tengu_schedule_failed`,{reason:t}),e(t,{display:`system`}),J.createElement(B,{mode:`error`,message:t})}try{let n=await M(t,a);return e(`Trigger ${t} updated.`,{display:`system`}),J.createElement(B,{mode:`updated`,trigger:n})}catch(n){let r=n instanceof Error?n.message:String(n);return f(`tengu_schedule_failed`,{reason:r}),e(`Failed to update trigger ${t}: ${r}`,{display:`system`}),J.createElement(B,{mode:`error`,message:r})}}if(r.action===`delete`){let{id:t}=r;f(`tengu_schedule_delete`,{id:t});try{return await N(t),e(`Trigger ${t} deleted.`,{display:`system`}),J.createElement(B,{mode:`deleted`,id:t})}catch(n){let r=n instanceof Error?n.message:String(n);return f(`tengu_schedule_failed`,{reason:r}),e(`Failed to delete trigger ${t}: ${r}`,{display:`system`}),J.createElement(B,{mode:`error`,message:r})}}if(r.action===`run`){let{id:t}=r;f(`tengu_schedule_run`,{id:t});try{let n=await P(t);return e(`Trigger ${t} fired. Run ID: ${n.run_id}`,{display:`system`}),J.createElement(B,{mode:`ran`,id:t,runId:n.run_id})}catch(n){let r=n instanceof Error?n.message:String(n);return f(`tengu_schedule_failed`,{reason:r}),e(`Failed to run trigger ${t}: ${r}`,{display:`system`}),J.createElement(B,{mode:`error`,message:r})}}if(r.action===`enable`){let{id:t}=r;f(`tengu_schedule_enable`,{id:t});try{return await M(t,{enabled:!0}),e(`Trigger ${t} enabled.`,{display:`system`}),J.createElement(B,{mode:`enabled`,id:t})}catch(n){let r=n instanceof Error?n.message:String(n);return f(`tengu_schedule_failed`,{reason:r}),e(`Failed to enable trigger ${t}: ${r}`,{display:`system`}),J.createElement(B,{mode:`error`,message:r})}}let{id:i}=r;f(`tengu_schedule_disable`,{id:i});try{return await M(i,{enabled:!1}),e(`Trigger ${i} disabled.`,{display:`system`}),J.createElement(B,{mode:`disabled`,id:i})}catch(t){let n=t instanceof Error?t.message:String(t);return f(`tengu_schedule_failed`,{reason:n}),e(`Failed to disable trigger ${i}: ${n}`,{display:`system`}),J.createElement(B,{mode:`error`,message:n})}}}))();export{Y as callSchedule};
|