claude-code-best 1.10.8 → 1.10.9
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-AyMy4OCD.js → AddWorkspaceDirectory-BAz_OE49.js} +3 -3
- package/dist/chunks/{App-DORYioIb.js → App-DjqoKdzZ.js} +4 -4
- package/dist/chunks/{ApproveApiKey-S_PhcDiO.js → ApproveApiKey-Bd-GuWGQ.js} +2 -2
- package/dist/chunks/{AssistantSessionChooser-_6CoGrsi.js → AssistantSessionChooser-cDCVWbRu.js} +3 -3
- package/dist/chunks/{BackgroundTasksDialog-DRXUENfu.js → BackgroundTasksDialog-A-bXtbQz.js} +5 -5
- package/dist/chunks/{BypassPermissionsModeDialog-C_0P04Qi.js → BypassPermissionsModeDialog-CeqXDtAk.js} +2 -2
- package/dist/chunks/{ClaudeInChromeOnboarding-CPgxw3Jd.js → ClaudeInChromeOnboarding-CVMVH-uW.js} +2 -2
- package/dist/chunks/{ClaudeMdExternalIncludesDialog-HW6hFwga.js → ClaudeMdExternalIncludesDialog-CKFjbncl.js} +2 -2
- package/dist/chunks/{ClaudeMdExternalIncludesDialog-nx6BnDFO.js → ClaudeMdExternalIncludesDialog-CW8FUIVN.js} +1 -1
- package/dist/chunks/ConsoleOAuthFlow-mEIkCzbi.js +3 -0
- package/dist/chunks/{DesktopHandoff-DDZW1f4B.js → DesktopHandoff-BNLQPXUF.js} +2 -2
- package/dist/chunks/{DevChannelsDialog-BxT1gBI-.js → DevChannelsDialog-5l9CKzbU.js} +1 -1
- package/dist/chunks/{DiffDialog-C_M5fcZ1.js → DiffDialog-BRbh1v9n.js} +3 -3
- package/dist/chunks/{Doctor-BeFtx51Y.js → Doctor-BKPcK-MS.js} +9 -9
- package/dist/chunks/{ExitFlow-Dol5ZTVp.js → ExitFlow-BNlryoxG.js} +2 -2
- package/dist/chunks/{Feedback-C6XXxkW_.js → Feedback-DgiWyIFi.js} +3 -3
- package/dist/chunks/{Grove-BXGgnmM2.js → Grove-Ci6HVvhm.js} +1 -1
- package/dist/chunks/{HybridTransport-6KE-2tdG.js → HybridTransport-DImnn3KV.js} +3 -3
- package/dist/chunks/{ITermBackend-DU4crlJ8.js → ITermBackend-B5UV37ee.js} +1 -1
- package/dist/chunks/{InvalidConfigDialog-COQp5wx6.js → InvalidConfigDialog-V1dZt-dr.js} +2 -2
- package/dist/chunks/{InvalidSettingsDialog-C4ZqH7ua.js → InvalidSettingsDialog-B5HKSbaV.js} +2 -2
- package/dist/chunks/{MCPConnectionManager-Ci26BuqG.js → MCPConnectionManager-LEKsUSr7.js} +4 -4
- package/dist/chunks/{McpParsingWarnings-k4GVGSbD.js → McpParsingWarnings-PXbJmU4y.js} +1 -1
- package/dist/chunks/{MessageSelector-C-OCaW_O.js → MessageSelector-CfB_icn6.js} +10 -12
- package/dist/chunks/{Messages-B9hbb5uA.js → Messages-SI98vKCn.js} +16 -16
- package/dist/chunks/{Onboarding-BDtHvYTx.js → Onboarding-55_xhADf.js} +8 -8
- package/dist/chunks/{OverageCreditUpsell-B4DOf4gh.js → OverageCreditUpsell-BcCQjrn2.js} +3 -3
- package/dist/chunks/{PluginSettings-3R1CqSfW.js → PluginSettings-xXk03JTg.js} +13 -13
- package/dist/chunks/{PromptInputFooterSuggestions-CxqTMId_.js → PromptInputFooterSuggestions-ChU0dwxp.js} +2 -2
- package/dist/chunks/{PromptInputHelpMenu-BGgyDIkK.js → PromptInputHelpMenu-Bu4DVlsf.js} +3 -3
- package/dist/chunks/{QueryEngine-ChpFG8gv.js → QueryEngine-D-I5zLOq.js} +6 -6
- package/dist/chunks/{REPL-CG0UgVfl.js → REPL-3gzD29Jx.js} +1081 -2150
- package/dist/chunks/{RemoteCallout-B0VqS1Qt.js → RemoteCallout-DZa1GMN3.js} +4 -4
- package/dist/chunks/{RemoteSessionManager-B1roy_8S.js → RemoteSessionManager-Dl3oP-RW.js} +10 -10
- package/dist/chunks/{ResumeConversation-BWrUge-0.js → ResumeConversation-DoG_8p6R.js} +5 -5
- package/dist/chunks/{SSETransport-C2QsETHl.js → SSETransport-BrAtv7Uv.js} +2 -2
- package/dist/chunks/{Settings-COOyI14X.js → Settings-DaWxTRL7.js} +15 -15
- package/dist/chunks/{TeleportProgress-qSHTYfot.js → TeleportProgress-DbQXwC6f.js} +1 -1
- package/dist/chunks/{TeleportRepoMismatchDialog-CGsCO8by.js → TeleportRepoMismatchDialog-Bqh7GtzH.js} +3 -3
- package/dist/chunks/{TeleportResumeWrapper-DXrpfnNe.js → TeleportResumeWrapper-DFozOXmi.js} +3 -3
- package/dist/chunks/{ThemePicker-DimvavHs.js → ThemePicker-B2A3Q2PJ.js} +3 -3
- package/dist/chunks/{TmuxBackend-H0XnczhB.js → TmuxBackend-BHVSdxI0.js} +1 -1
- package/dist/chunks/ToolSearchTool-CTr76adP.js +3 -0
- package/dist/chunks/{TrustDialog-DeSs6f0D.js → TrustDialog-Cd1jrJjA.js} +4 -4
- package/dist/chunks/{ValidationErrorsList-C4Km61yv.js → ValidationErrorsList-BVT83Ain.js} +1 -1
- package/dist/chunks/{WindowsTerminalBackend-Bgv7-JUL.js → WindowsTerminalBackend-Buqgk5o3.js} +1 -1
- package/dist/chunks/{add-dir-CHNcl-5z.js → add-dir-DZDlrqv0.js} +2 -2
- package/dist/chunks/{agentDisplay-BBigvlJ5.js → agentDisplay-uyubCgl8.js} +2 -2
- package/dist/chunks/{agents-CFvEeCnI.js → agents-CXGQlk_G.js} +9 -9
- package/dist/chunks/{agents-Bnzh76m3.js → agents-D0VMvYy6.js} +2 -2
- package/dist/chunks/{ant-DLe5klM_.js → ant-Vv3urgrx.js} +2 -2
- package/dist/chunks/{api-Bx57yPja.js → api-BAka7RGb.js} +1 -1
- package/dist/chunks/{api-HJVu8Bgf.js → api-q0v0qC6U.js} +1 -1
- package/dist/chunks/asciicast--W1-QPVl.js +2 -0
- package/dist/chunks/{assistant-BcJ2VyZO.js → assistant-BvK7La-m.js} +4 -4
- package/dist/chunks/{assistant-DKGoLYoz.js → assistant-_rU-HBfo.js} +2 -2
- package/dist/chunks/{auth-BVoXNOdu.js → auth-BYIRq4FR.js} +1 -1
- package/dist/chunks/auth-QiRSNaR0.js +3 -0
- package/dist/chunks/{autoMode-BjMFpRPS.js → autoMode-D-Vu_d5G.js} +3 -3
- package/dist/chunks/{autonomy-B142xgn9.js → autonomy-Cpzq6lOY.js} +42 -7
- package/dist/chunks/{autonomyPanel-DrItmDJf.js → autonomyPanel-DRlPhdsS.js} +2 -2
- package/dist/chunks/{backgroundHousekeeping-DPSnu12B.js → backgroundHousekeeping-B0XOYGPA.js} +6 -6
- package/dist/chunks/{backgroundHousekeeping-xKDy8FkD.js → backgroundHousekeeping-mtEIEw6l.js} +1 -1
- package/dist/chunks/{banner-2Io8Jttd.js → banner-trVEKeoE.js} +1 -1
- package/dist/chunks/{bg-D-cs4pwp.js → bg-AZpkHvVY.js} +1 -1
- package/dist/chunks/{bg-2DXXMI4u.js → bg-BhP-16DX.js} +5 -5
- package/dist/chunks/{branch-C70keLeV.js → branch-BbzfF7EC.js} +2 -2
- package/dist/chunks/{bridge-BggvL4iM.js → bridge-1LlgPjAx.js} +9 -9
- package/dist/chunks/{bridgeConfig-BeCM9dMF.js → bridgeConfig-B88funD-.js} +1 -1
- package/dist/chunks/{bridgeConfig-DsVyayv1.js → bridgeConfig-CLWrVvio.js} +1 -1
- package/dist/chunks/{bridgeEnabled-oCT5xVvX.js → bridgeEnabled-5qQEn2Oy.js} +1 -1
- package/dist/chunks/{bridgeEnabled-Dj8FWS0e.js → bridgeEnabled-CCY6kXcK.js} +2 -2
- package/dist/chunks/{bridgeMain-Cnni8EVq.js → bridgeMain-Dn6ZZ7En.js} +36 -36
- package/dist/chunks/{bridgeMessaging-CDla4R6o.js → bridgeMessaging-CwzNeRb-.js} +2 -2
- package/dist/chunks/{btw-BzdgUzJU.js → btw-DWVVSHYd.js} +5 -5
- package/dist/chunks/{buddy-ovy_skht.js → buddy-HTgZuWva.js} +3 -3
- package/dist/chunks/{bypassPermissionsKillswitch-BJ7iACst.js → bypassPermissionsKillswitch-DfqbYrGg.js} +1 -1
- package/dist/chunks/{caches-CBfjkIrn.js → caches-BZ70MTke.js} +8 -8
- package/dist/chunks/{caches-B5mZT9E-.js → caches-BkDAiZ40.js} +1 -1
- package/dist/chunks/{ccrClient-DKQN014H.js → ccrClient-Bu0_3uS9.js} +3 -3
- package/dist/chunks/changeDetector-DWNPUIOB.js +3 -0
- package/dist/chunks/{channelNotification-B1HVtfcI.js → channelNotification-Do1-GDXI.js} +1 -1
- package/dist/chunks/{channelNotification-Dgrgm0St.js → channelNotification-LQalwcBX.js} +2 -2
- package/dist/chunks/{chrome-A_IWe_cO.js → chrome-BDB0n9I0.js} +3 -3
- package/dist/chunks/{clear-Cv0qvLzE.js → clear-CN5Grsjj.js} +1 -1
- package/dist/chunks/{client-DEQ6taWJ.js → client-D7jFd9Op.js} +1 -1
- package/dist/chunks/{color-rH76d2GW.js → color-CLJdYFQw.js} +1 -1
- package/dist/chunks/{commands-BToVM-n_.js → commands-CJwQylUG.js} +1 -1
- package/dist/chunks/{commitAttribution-x-Y9qiEw.js → commitAttribution-B8-sImCH.js} +1 -1
- package/dist/chunks/{commitAttribution--kWCfiBX.js → commitAttribution-BoQuda3v.js} +1 -1
- package/dist/chunks/{compact-CuLy_ZmV.js → compact-CYBTrlSH.js} +1 -1
- package/dist/chunks/{companion-BserNxZw.js → companion-DqsAgrdS.js} +1 -1
- package/dist/chunks/{config-BbFdCtCZ.js → config-D-FSn46F.js} +1 -1
- package/dist/chunks/{config-WGaJE2Z-.js → config-DPO9MwXv.js} +1 -1
- package/dist/chunks/{context-WOOY0FLL.js → context-CYwihLLB.js} +5 -5
- package/dist/chunks/{context-noninteractive-CS0-TpiN.js → context-noninteractive-BvtukkBa.js} +4 -4
- package/dist/chunks/{conversation-DZ_UoE8s.js → conversation-CGmbYM2l.js} +1 -1
- package/dist/chunks/{conversation-LlZkX2yV.js → conversation-DtMeaxev.js} +4 -4
- package/dist/chunks/{copy-DCXi64ex.js → copy-BJ59zBCu.js} +2 -2
- package/dist/chunks/{cost-CoxvFCRD.js → cost-BRIrApbW.js} +2 -2
- package/dist/chunks/{createSSHSession-CP9c1m4g.js → createSSHSession-BHbaIF4j.js} +2 -2
- package/dist/chunks/{createSession-Cm7HpHez.js → createSession-D91-Um52.js} +17 -17
- package/dist/chunks/{cronJitterConfig-DYWTMlRv.js → cronJitterConfig-BsfJPbuz.js} +4 -4
- package/dist/chunks/{crossProjectResume-DeOsfSF5.js → crossProjectResume-CKAEJ3Ed.js} +8 -8
- package/dist/chunks/{daemon-Ci7b5c8J.js → daemon-DFpVgMMR.js} +2 -2
- package/dist/chunks/{datadog-FNzocPlm.js → datadog-C1pKO0Rj.js} +1 -1
- package/dist/chunks/{datadog-CgRauwXn.js → datadog-Dt0ofiPv.js} +1 -1
- package/dist/chunks/{desktop-B1EhowRo.js → desktop-OpnZstWS.js} +1 -1
- package/dist/chunks/{detached-BTZLi_wz.js → detached-BFTAxA_R.js} +1 -1
- package/dist/chunks/{diff-BXAZYSAe.js → diff-5vk56ZmO.js} +1 -1
- package/dist/chunks/{doctor-2TsPG9x4.js → doctor-BbBB7rBY.js} +1 -1
- package/dist/chunks/earlyInput-otsfyHlr.js +2 -0
- package/dist/chunks/{effort-DxhwjDgv.js → effort-DdkdyEx7.js} +3 -3
- package/dist/chunks/{entry-B37teFKO.js → entry-kV49Yn7y.js} +3 -3
- package/dist/chunks/{envLessBridgeConfig-OzRntxQ7.js → envLessBridgeConfig-uFAq9sG_.js} +2 -2
- package/dist/chunks/{exit-DXwVjHB_.js → exit-CqhqNnNJ.js} +3 -3
- package/dist/chunks/{export-CUxQmI8I.js → export-D1vsCF4u.js} +2 -2
- package/dist/chunks/{exportRenderer-BXcHLusv.js → exportRenderer-CHypbYP2.js} +3 -3
- package/dist/chunks/{extra-usage-D5F2Fab1.js → extra-usage-CK_NVQMH.js} +2 -2
- package/dist/chunks/{extra-usage-core-BjMJY05D.js → extra-usage-core-BKhblo3u.js} +4 -4
- package/dist/chunks/{extra-usage-noninteractive-C1eLncrU.js → extra-usage-noninteractive-BDjVnr2R.js} +1 -1
- package/dist/chunks/{extraUsage-B3Z9hxVY.js → extraUsage-BQyrSxb4.js} +3 -3
- package/dist/chunks/{fast-BPAOtiKR.js → fast-CDeuQdf_.js} +1 -1
- package/dist/chunks/{fast-vmSBT3wk.js → fast-LyVMIlcZ.js} +4 -4
- package/dist/chunks/{feedback-Bd4KPsMs.js → feedback-CUVHgQrH.js} +1 -1
- package/dist/chunks/{firstPartyEventLogger-DfayOxom.js → firstPartyEventLogger-BnFkAOZX.js} +1 -1
- package/dist/chunks/{flushGate-CEQ0eFpN.js → flushGate-BfNEpn9l.js} +4 -4
- package/dist/chunks/{fork-Cql3KSxE.js → fork-CbsSVzCt.js} +1 -1
- package/dist/chunks/{gates-CXbe08cU.js → gates-B8dRzViH.js} +1 -1
- package/dist/chunks/{gates-B6dXEO7B.js → gates-C9pi8g5k.js} +1 -1
- package/dist/chunks/{gemini-Dc1L8IRS.js → gemini-BQ_BKiUg.js} +3 -3
- package/dist/chunks/{generateSessionName-DnnfYlVp.js → generateSessionName-Bd9Yb-QJ.js} +3 -3
- package/dist/chunks/{githubRepoPathMapping-7sx6rtjX.js → githubRepoPathMapping-BmCak8dj.js} +1 -1
- package/dist/chunks/{grok-ZGDHie6x.js → grok-D8GQ5fXf.js} +4 -4
- package/dist/chunks/{growthbook-Cjl5wOGC.js → growthbook-Cu2helMF.js} +1 -1
- package/dist/chunks/{heapdump-BtjR8Avz.js → heapdump-CIWjb1r7.js} +1 -1
- package/dist/chunks/{help-CnGuF5OL.js → help-SjIHwRhX.js} +5 -5
- package/dist/chunks/{hooks-6SfXd_6y.js → hooks-BuNmkNsh.js} +2 -2
- package/dist/chunks/{hooks-EDuZo8rZ.js → hooks-CYkjVXEa.js} +1 -1
- package/dist/chunks/{hostAdapter-CutcCk0Y.js → hostAdapter-qIUeLA8_.js} +1 -1
- package/dist/chunks/{ide-DN0eFH-I.js → ide-2O2Fvgdo.js} +2 -2
- package/dist/chunks/{inboundAttachments-CTBWhskT.js → inboundAttachments-BAViYbsv.js} +1 -1
- package/dist/chunks/{initReplBridge-BKcPvixd.js → initReplBridge-DutMkxA9.js} +19 -19
- package/dist/chunks/{insights-BS0ZNRLw.js → insights-D2PDhPi5.js} +4 -4
- package/dist/chunks/{install-DicMWYKx.js → install-D8hhx_bQ.js} +2 -2
- package/dist/chunks/{install-github-app-DHSeHIaO.js → install-github-app-7KGa1Uf9.js} +3 -3
- package/dist/chunks/{install-slack-app-CLHR9i9n.js → install-slack-app-g6C3x4Wt.js} +1 -1
- package/dist/chunks/{instrumentation-CUTDZ6VV.js → instrumentation-BzAwzrC5.js} +3 -3
- package/dist/chunks/{job-DKQ89zqd.js → job-cGeOoFve.js} +1 -1
- package/dist/chunks/{keybindings-5wQbz4c8.js → keybindings-BqIvN3aw.js} +2 -2
- package/dist/chunks/{lang-BTCSHBFu.js → lang-6sw0pbHf.js} +2 -2
- package/dist/chunks/{language-Hl1jowwd.js → language-zlcSWbrw.js} +1 -1
- package/dist/chunks/{loadAgentsDir-9z4W5vjy.js → loadAgentsDir-C4LTbpHE.js} +1 -1
- package/dist/chunks/{loadAgentsDir-CKCr6KLl.js → loadAgentsDir-Vb46sydQ.js} +573 -1162
- package/dist/chunks/loadPluginHooks-CDSnlJOL.js +3 -0
- package/dist/chunks/{localSearch-DL5GhpDE.js → localSearch-46sF2Qcf.js} +1 -1
- package/dist/chunks/{localSearch-C5_bOr8q.js → localSearch-CGCwbEph.js} +1 -1
- package/dist/chunks/{login-D9BtI7Pb.js → login-B3ad2q29.js} +1 -1
- package/dist/chunks/{login-DgQJAdug.js → login-DlxkwUp6.js} +5 -5
- package/dist/chunks/{logoV2Utils-fw-X-t6i.js → logoV2Utils-DCR2mp3C.js} +4 -4
- package/dist/chunks/logout-D9QOjDYp.js +3 -0
- package/dist/chunks/{magicDocs-Crhut7gV.js → magicDocs-v7lt_LMd.js} +2 -2
- package/dist/chunks/{main-1IxSEB11.js → main-CM-7Ag0d.js} +7 -7
- package/dist/chunks/{main-vXOmPUE1.js → main-DtLB8Txx.js} +132 -134
- package/dist/chunks/{mappers-BCSKRNTR.js → mappers-Cgwoit82.js} +1 -1
- package/dist/chunks/{mcp-D1IOUzE7.js → mcp-DuHDARTT.js} +6 -6
- package/dist/chunks/{mcp-7YXd30Q0.js → mcp-DyEdsEhr.js} +3 -3
- package/dist/chunks/{mcp-Ci0gy5Wm.js → mcp-sy97T05v.js} +6 -6
- package/dist/chunks/{mcpServer-BHppS1ws.js → mcpServer-BRM-HTmU.js} +6 -6
- package/dist/chunks/{mcpServer-CCvSYftj.js → mcpServer-D9ETKGwP.js} +5 -5
- package/dist/chunks/{memory-IVFsZGbH.js → memory-0b_NDPYu.js} +5 -5
- package/dist/chunks/{mobile-DC30stZP.js → mobile-Cpzi4v6k.js} +1 -1
- package/dist/chunks/{model-CoZ6jhjM.js → model-B6k4KgMg.js} +1 -1
- package/dist/chunks/{model-CtTIthX3.js → model-BY6YlTaA.js} +3 -3
- package/dist/chunks/{onChangeAppState-C0crWlUU.js → onChangeAppState-Iv6JwzpI.js} +3 -3
- package/dist/chunks/{openai-Bq-tZzdA.js → openai-Chg9Em00.js} +4 -4
- package/dist/chunks/{overageCreditGrant-DA6Ji27r.js → overageCreditGrant-C7V_bAas.js} +2 -2
- package/dist/chunks/{passes-CQjMQxDF.js → passes-CDGIOxpP.js} +2 -2
- package/dist/chunks/{paths-DSkEVuBg.js → paths-CzeRf5XR.js} +3 -3
- package/dist/chunks/{permissions-bgBNVZj6.js → permissions-aQYTB4zs.js} +8 -8
- package/dist/chunks/pipeTransport-C3DGjgm4.js +78 -0
- package/dist/chunks/{plan-9HtDwIeE.js → plan-D3lV7RZr.js} +3 -3
- package/dist/chunks/{plugin-C2tIIFq9.js → plugin-BujIe7M9.js} +1 -1
- package/dist/chunks/{pluginAutoupdate-DZc2hFxf.js → pluginAutoupdate-BYYgDJAE.js} +4 -4
- package/dist/chunks/{pluginBlocklist-DiS_LOxs.js → pluginBlocklist-C2_ZBtKH.js} +3 -3
- package/dist/chunks/{pluginCliCommands-BiXap9Fy.js → pluginCliCommands-CCu6cJv0.js} +3 -3
- package/dist/chunks/{pluginFlagging-q8gMbkD5.js → pluginFlagging-BDG_ES7A.js} +1 -1
- package/dist/chunks/{pluginOperations-D9ol2ssj.js → pluginOperations-C19agFr2.js} +4 -4
- package/dist/chunks/{pluginStartupCheck-CG2qErc7.js → pluginStartupCheck-DLvmjvBS.js} +1 -1
- package/dist/chunks/{pluginStartupCheck-COh-DcKy.js → pluginStartupCheck-HHCKFPAx.js} +3 -3
- package/dist/chunks/{plugins-BietcZD3.js → plugins-B6kYfqAL.js} +8 -8
- package/dist/chunks/policyLimits-DJBAjQzZ.js +3 -0
- package/dist/chunks/{pollConfig-2I_nDHA7.js → pollConfig-BxiW2T58.js} +1 -1
- package/dist/chunks/{poor-CB5mtPXL.js → poor-DJkHzRYc.js} +1 -1
- package/dist/chunks/{poorMode-C7Tv4gyt.js → poorMode-CBfpLe_7.js} +1 -1
- package/dist/chunks/{poorMode-BQLnZVIm.js → poorMode-Dp5JmJCp.js} +1 -1
- package/dist/chunks/{print-BWjElYkB.js → print-xsTQDxt8.js} +27 -46
- package/dist/chunks/{privacy-settings-C5mvrXGG.js → privacy-settings-Dn8DDGjf.js} +2 -2
- package/dist/chunks/{processBashCommand-DJgkl_kf.js → processBashCommand-d0gIhdpP.js} +3 -3
- package/dist/chunks/{processSlashCommand-CvVng3uM.js → processSlashCommand-BThMxma6.js} +5 -5
- package/dist/chunks/{projectContext-CtnrRecP.js → projectContext-BHRSqJly.js} +1 -1
- package/dist/chunks/prompt-CSir0tim.js +3 -0
- package/dist/chunks/prompt-UiKjRIt9.js +3 -0
- package/dist/chunks/{promptEditor-B7ChKW5Y.js → promptEditor-B63MUoD4.js} +1 -1
- package/dist/chunks/{protocolHandler-4lEbHJxz.js → protocolHandler-DSOXS9US.js} +5 -5
- package/dist/chunks/{rate-limit-options-BYbGoNeE.js → rate-limit-options-D3SHxrp1.js} +4 -4
- package/dist/chunks/{sessionActivity-BChWrGEw.js → rcDebugLog-C52yKf5j.js} +28 -28
- package/dist/chunks/{referral-DWjXZbQX.js → referral-3sPYi3kw.js} +2 -2
- package/dist/chunks/{refresh-G0J3u5aZ.js → refresh-CczxgU5S.js} +1 -1
- package/dist/chunks/{registerProtocol-BOgiAPJV.js → registerProtocol-D_wzRlb_.js} +2 -2
- package/dist/chunks/registry-CN5d1qhB.js +3 -0
- package/dist/chunks/{release-notes-v3zOCxeU.js → release-notes-ClbOTBtN.js} +1 -1
- package/dist/chunks/{releaseNotes-BDI58OYX.js → releaseNotes-CLGhcfvJ.js} +1 -1
- package/dist/chunks/{reload-plugins-CFeA55V6.js → reload-plugins-CQ38fDmx.js} +4 -4
- package/dist/chunks/{remote-env-xOJjxQep.js → remote-env-C67RQfRF.js} +2 -2
- package/dist/chunks/{remoteBridgeCore-C09AjDw1.js → remoteBridgeCore-oZLy6yW1.js} +8 -8
- package/dist/chunks/{remoteControlServer-VNsby-E0.js → remoteControlServer-hjCgemAR.js} +7 -7
- package/dist/chunks/{rename-DeodVT8f.js → rename-551tfxnb.js} +4 -4
- package/dist/chunks/{resume-BkdC4Iyi.js → resume-DRWJ6RUq.js} +3 -3
- package/dist/chunks/{runtimeObserver-AfLQXrqg.js → runtimeObserver-CfL2iGeV.js} +8 -8
- package/dist/chunks/{runtimeObserver-DFFDac2w.js → runtimeObserver-D8qpgN-q.js} +1 -1
- package/dist/chunks/sandbox-adapter-oHvzMbb7.js +3 -0
- package/dist/chunks/{sandbox-toggle-KsZ9hetn.js → sandbox-toggle-CzfcFtm7.js} +2 -2
- package/dist/chunks/{session-Cl-xCJ8U.js → session-BSnldGog.js} +2 -2
- package/dist/chunks/{sessionDiscovery-DMnEeuJg.js → sessionDiscovery-BsY3Y2nr.js} +1 -1
- package/dist/chunks/sessionFileAccessHooks-Nfow0nDz.js +3 -0
- package/dist/chunks/{sessionMemory-CVMgpniu.js → sessionMemory-Bwc46d49.js} +4 -4
- package/dist/chunks/sessionMemoryUtils-BrEGcIf3.js +3 -0
- package/dist/chunks/{sessionObserver-DQQGWkXf.js → sessionObserver-BOIgycUZ.js} +1 -1
- package/dist/chunks/{sessionObserver-Drmv4DI0.js → sessionObserver-D-5BlE5D.js} +4 -4
- package/dist/chunks/{sessionStorage-CcdKJkyn.js → sessionStorage-Bpwv3avO.js} +1 -1
- package/dist/chunks/{sessionTitle-CynC1QWH.js → sessionTitle-DEd2kVLh.js} +2 -2
- package/dist/chunks/{sessionTracing-D9s950J5.js → sessionTracing-CwLzqV9t.js} +1 -1
- package/dist/chunks/{settingsSync-CPInbcj7.js → settingsSync-DCvZYaMQ.js} +2 -2
- package/dist/chunks/{setup-m0qLMFD7.js → setup-CJHEsMBO.js} +2 -2
- package/dist/chunks/{setup-oNcnnqr2.js → setup-DKoxrmuZ.js} +15 -18
- package/dist/chunks/{setup-D5on8ibP.js → setup-DhTITJbQ.js} +2 -2
- package/dist/chunks/{shadowedRuleDetection-Drf9u-db.js → shadowedRuleDetection-DzaIH3F1.js} +1 -1
- package/dist/chunks/{sideQuestion-BFd04Hpm.js → sideQuestion-5sgrvNO3.js} +2 -2
- package/dist/chunks/{sink-wb0QjAm7.js → sink-C0MK82-B.js} +1 -1
- package/dist/chunks/{sink-EtSaBh8E.js → sink-DIF5ULot.js} +2 -2
- package/dist/chunks/{sinks-C7QBA6x8.js → sinks-Bpyxmob4.js} +1 -1
- package/dist/chunks/{skill-learning-CshrpvXr.js → skill-learning-xvtysH_2.js} +7 -7
- package/dist/chunks/{skillChangeDetector-BXcvDT4K.js → skillChangeDetector-BRETBhcB.js} +5 -5
- package/dist/chunks/{skillGapStore-Ctpnj8SE.js → skillGapStore-HioNOSWE.js} +4 -4
- package/dist/chunks/{skillGapStore-B0fBE8ju.js → skillGapStore-oaBH0p2g.js} +1 -1
- package/dist/chunks/{skillGenerator-DxHhQT_d.js → skillGenerator-6xXp8l8O.js} +3 -3
- package/dist/chunks/{skillLearning-BQzbxDmM.js → skillLearning-sw3FL3pS.js} +9 -9
- package/dist/chunks/{skillPanel-DrqDoWdh.js → skillPanel-DZHcGCQx.js} +5 -5
- package/dist/chunks/{skillSearchPanel-UXTLla11.js → skillSearchPanel-Cp8XX0o6.js} +2 -2
- package/dist/chunks/{skills-CKx64w0R.js → skills-BtLy81vb.js} +3 -3
- package/dist/chunks/{sprites-CmcTBNjG.js → sprites-DVVIfKBQ.js} +1 -1
- package/dist/chunks/{src-Dx8ucMgB.js → src-HVJR0Zo0.js} +2 -2
- package/dist/chunks/{startupProfiler-CommxiJO.js → startupProfiler-CazxVJNo.js} +1 -0
- package/dist/chunks/{startupProfiler-DMJO2xz5.js → startupProfiler-XOIBwlp1.js} +1 -1
- package/dist/chunks/{stats-CUJL6gf6.js → stats-CI8Ocv6R.js} +4 -4
- package/dist/chunks/{stats-OQSoO8AA.js → stats-kwjQqb1p.js} +1 -1
- package/dist/chunks/{status-C2JI09Xw.js → status-CxEzelDy.js} +1 -1
- package/dist/chunks/{statusNoticeHelpers-BGzUypnF.js → statusNoticeHelpers-j4DlZKCG.js} +1 -1
- package/dist/chunks/{tag-D7eNyLsL.js → tag-ChsmL3mw.js} +2 -2
- package/dist/chunks/{tasks-ji7qrtQZ.js → tasks-CfpDSYIO.js} +1 -1
- package/dist/chunks/{teamHelpers-wA0wc9x7.js → teamHelpers-BvAnovSv.js} +1 -1
- package/dist/chunks/{teamHelpers-C1EYvVG8.js → teamHelpers-D6fwXj1v.js} +1 -1
- package/dist/chunks/{teammateModeSnapshot-ChmbBeGY.js → teammateModeSnapshot-BUQkCay6.js} +1 -1
- package/dist/chunks/{teammateModeSnapshot-D1C3CvY2.js → teammateModeSnapshot-BVFzdZ_x.js} +1 -1
- package/dist/chunks/teleport-Bp89My5r.js +3 -0
- package/dist/chunks/{templateJobs-juuqs5ID.js → templateJobs-Br2aKYrv.js} +1 -1
- package/dist/chunks/{terminalSetup-YfKbBHG2.js → terminalSetup-BYIyMuN2.js} +1 -1
- package/dist/chunks/{terminalSetup-DkW8kzTS.js → terminalSetup-BmDg3jRD.js} +1 -1
- package/dist/chunks/{theme-BZ0g686m.js → theme-BVjt_puz.js} +1 -1
- package/dist/chunks/{thinkback-BTvAN4SG.js → thinkback-B8oA4ceZ.js} +4 -4
- package/dist/chunks/{thinkback-play-BJV9UsS_.js → thinkback-play-Baap-i_Z.js} +2 -2
- package/dist/chunks/{tmux-b0jmod-m.js → tmux-CqbuPVsI.js} +1 -1
- package/dist/chunks/{toolEventObserver-BCMiKOMJ.js → toolEventObserver-BbfGYsgT.js} +4 -4
- package/dist/chunks/{toolEventObserver-C0lzru27.js → toolEventObserver-DD-7StWm.js} +1 -1
- package/dist/chunks/{toolPool-BFpy26rC.js → toolPool-CYdrUR-v.js} +2 -2
- package/dist/chunks/toolSearch-C8-En_Ip.js +3 -0
- package/dist/chunks/{trustedDevice-NWjic61P.js → trustedDevice-BHdQWw6x.js} +1 -1
- package/dist/chunks/{trustedDevice-BwB25RSK.js → trustedDevice-Du09NlP4.js} +1 -1
- package/dist/chunks/udsClient-uE-r0N-F.js +79 -0
- package/dist/chunks/{ultrareviewCommand-Dm_UZkUI.js → ultrareviewCommand-QSDpc-6Z.js} +4 -4
- package/dist/chunks/{undercover-BOjOeIVa.js → undercover--_4tGPsw.js} +1 -1
- package/dist/chunks/{undercover-3UBD5GtT.js → undercover-mT9rbX3i.js} +2 -2
- package/dist/chunks/{updateCCB-gqr4tTHw.js → updateCCB-D72yVofL.js} +1 -1
- package/dist/chunks/{upgrade-D11LGswH.js → upgrade-CxYm5cDy.js} +2 -2
- package/dist/chunks/{upload-DdAHsTCb.js → upload-CF9Sdacj.js} +1 -1
- package/dist/chunks/{usage-C-03An_-.js → usage-By35aKmd.js} +1 -1
- package/dist/chunks/{usage-BfgmPd0i.js → usage-DgFudEa4.js} +1 -1
- package/dist/chunks/{useMainLoopModel-DYfWygEv.js → useMainLoopModel-Bmf7oPQm.js} +2 -2
- package/dist/chunks/{useManagePlugins-D8K7TxOS.js → useManagePlugins-4akAhKD1.js} +3 -3
- package/dist/chunks/{useMergedTools-JQNt6cB4.js → useMergedTools-UzYVztPW.js} +2 -2
- package/dist/chunks/{useSearchInput-naZgTeTY.js → useSearchInput-DG2qZ1oP.js} +1 -1
- package/dist/chunks/{useSettingsErrors-B_ON2uhq.js → useSettingsErrors-BurMq1G8.js} +1 -1
- package/dist/chunks/{useVoice-DjvY6q_C.js → useVoice-DPofdCLT.js} +5 -5
- package/dist/chunks/{util-BwTRWVrl.js → util-w1BKHUpk.js} +10 -10
- package/dist/chunks/utils-BvK7ZSrK.js +3 -0
- package/dist/chunks/{validatePlugin-CMOY-08u.js → validatePlugin-COZqtea-.js} +2 -2
- package/dist/chunks/{vim-AaHpII0z.js → vim-CfLafzBg.js} +1 -1
- package/dist/chunks/{voice-I_niPDYx.js → voice-DJnMHbx5.js} +7 -7
- package/dist/chunks/{voiceModeEnabled-DUmAjLGG.js → voiceModeEnabled-ENVjUcB1.js} +1 -1
- package/dist/chunks/{voiceModeEnabled-BZsBgRyY.js → voiceModeEnabled-WL1Uaazp.js} +1 -1
- package/dist/chunks/{voiceStreamSTT-D78E5v0F.js → voiceStreamSTT-BJPa3rVi.js} +1 -1
- package/dist/chunks/{voiceStreamSTT-B2yBe7t0.js → voiceStreamSTT-DpfyZRVm.js} +1 -1
- package/dist/chunks/{workerRegistry-RMvzN7sg.js → workerRegistry-D1_6FrX-.js} +2 -2
- package/dist/chunks/{worktree-TqvDjo2A.js → worktree-CU08W3ws.js} +1 -1
- package/dist/chunks/{xml-CsdP7fK7.js → xml-DZjpkPob.js} +1 -1
- package/dist/cli.js +33 -33
- package/package.json +1 -1
- package/dist/chunks/ConsoleOAuthFlow-C1-SrEiG.js +0 -3
- package/dist/chunks/ToolSearchTool-BeZUtcX_.js +0 -3
- package/dist/chunks/asciicast-CWc3s8cO.js +0 -2
- package/dist/chunks/attach-CoVSthQI.js +0 -98
- package/dist/chunks/auth-CIEBUWAh.js +0 -3
- package/dist/chunks/changeDetector-BCuzf3ol.js +0 -3
- package/dist/chunks/claim-main-CwcSUu_w.js +0 -58
- package/dist/chunks/detach-0h-NxV2J.js +0 -75
- package/dist/chunks/earlyInput-B_aTbrmS.js +0 -2
- package/dist/chunks/history-vud-Tm1o.js +0 -68
- package/dist/chunks/lanBeacon-B9DUbPm5.js +0 -149
- package/dist/chunks/loadPluginHooks-pUErwUEr.js +0 -3
- package/dist/chunks/logout-D0IWuAdu.js +0 -3
- package/dist/chunks/ndjsonFramer-CKtNKe0_.js +0 -62
- package/dist/chunks/peers-DYT0TJOa.js +0 -46
- package/dist/chunks/pipe-status-BJlhlq2_.js +0 -49
- package/dist/chunks/pipeRegistry-Bqvffg4X.js +0 -316
- package/dist/chunks/pipeTransport-AYEUDuAI.js +0 -405
- package/dist/chunks/pipes-tMCTxKU7.js +0 -190
- package/dist/chunks/policyLimits-lOxwJSgx.js +0 -3
- package/dist/chunks/prompt-BRO4j8aV.js +0 -3
- package/dist/chunks/prompt-BWsbofSc.js +0 -3
- package/dist/chunks/registry-Bf_DxEcr.js +0 -3
- package/dist/chunks/sandbox-adapter-DlVhDXrc.js +0 -3
- package/dist/chunks/send-CCIavh7z.js +0 -85
- package/dist/chunks/sessionFileAccessHooks-CNUVTQ1R.js +0 -3
- package/dist/chunks/sessionMemoryUtils-xpfe6Pev.js +0 -3
- package/dist/chunks/teamDiscovery-BznSf4tS.js +0 -38
- package/dist/chunks/teleport-m6LivPjb.js +0 -3
- package/dist/chunks/toolSearch-CGzGQT9G.js +0 -3
- package/dist/chunks/udsClient-B70nBxvj.js +0 -242
- package/dist/chunks/udsClient-C5ukh5VE.js +0 -3
- package/dist/chunks/udsMessaging-C5P4nSg_.js +0 -3
- package/dist/chunks/udsMessaging-CccGgVgR.js +0 -603
- package/dist/chunks/useMasterMonitor-BQ1QhrlN.js +0 -323
- package/dist/chunks/utils-CxlU_Or6.js +0 -3
- /package/dist/chunks/{Dialog-XEoAY-lo.js → Dialog-Bl_rTts3.js} +0 -0
- /package/dist/chunks/{InProcessTransport-Dq207XBp.js → InProcessTransport-IHW2RJx8.js} +0 -0
- /package/dist/chunks/{ListItem-BLRpONzN.js → ListItem-D9LLl8Ek.js} +0 -0
- /package/dist/chunks/{PermissionDialog-CGmleW13.js → PermissionDialog-D7UNIOtc.js} +0 -0
- /package/dist/chunks/{PressEnterToContinue-B8M_HSdG.js → PressEnterToContinue-CluRNOCt.js} +0 -0
- /package/dist/chunks/{SearchBox-iXol4xrV.js → SearchBox-BoTCRPmh.js} +0 -0
- /package/dist/chunks/{WelcomeV2-BrLgacxm.js → WelcomeV2-oyf_KFt6.js} +0 -0
- /package/dist/chunks/{asciicast-BcRSJueh.js → asciicast-DOtXvlJV.js} +0 -0
- /package/dist/chunks/{attributionHooks-DYfOjXs3.js → attributionHooks-DW8sjooz.js} +0 -0
- /package/dist/chunks/{attributionTrailer-BRzn4tt-.js → attributionTrailer-D8ipr7az.js} +0 -0
- /package/dist/chunks/{autoModeDenials-DdxIfUGy.js → autoModeDenials-Ckzi8DmX.js} +0 -0
- /package/dist/chunks/{bedrockClient-a4lkLst1.js → bedrockClient-CPTpGv94.js} +0 -0
- /package/dist/chunks/{bridgePointer-D_ikNrjn.js → bridgePointer-BQxAs9Dm.js} +0 -0
- /package/dist/chunks/{capacityWake-D0JN23wy.js → capacityWake-DyITX1TI.js} +0 -0
- /package/dist/chunks/{ccshareResume-DQEqveUy.js → ccshareResume-pWbhmETG.js} +0 -0
- /package/dist/chunks/{chromeNativeHost-Q6-G2bfy.js → chromeNativeHost-nORMSo3F.js} +0 -0
- /package/dist/chunks/{claudeDesktop-WVwxxFNt.js → claudeDesktop-C8GpUuqs.js} +0 -0
- /package/dist/chunks/{cleanup-fEkK-hKc.js → cleanup-DK3NXHb1.js} +0 -0
- /package/dist/chunks/{cliLaunch-CzauAJZe.js → cliLaunch-aWiCQf9j.js} +0 -0
- /package/dist/chunks/{connectHeadless-CCqvGWfL.js → connectHeadless-CcD9v90v.js} +0 -0
- /package/dist/chunks/{controlMessageCompat-DWv-mIPh.js → controlMessageCompat-BRVmRRA9.js} +0 -0
- /package/dist/chunks/{dangerousBackend-MjbASa5S.js → dangerousBackend-BWGrtZgg.js} +0 -0
- /package/dist/chunks/{directoryCompletion-B8RCZO2J.js → directoryCompletion-BU0Dlg1v.js} +0 -0
- /package/dist/chunks/{earlyInput-BsKnIDJP.js → earlyInput-DZrfQ2am.js} +0 -0
- /package/dist/chunks/{eventLoopStallDetector-C2lxypdX.js → eventLoopStallDetector-DVrhwzc2.js} +0 -0
- /package/dist/chunks/{exit-Bc29hy_j.js → exit-DirA_fuf.js} +0 -0
- /package/dist/chunks/{featureCheck-B9SCC0vN.js → featureCheck-Cv993Ldm.js} +0 -0
- /package/dist/chunks/{files-0Y68WpCS.js → files-Cj4oj1So.js} +0 -0
- /package/dist/chunks/{fpsMetrics-Di0G8OGw.js → fpsMetrics-Ck4DjRL5.js} +0 -0
- /package/dist/chunks/{fuse-Df9YUVtR.js → fuse-thkBXtB1.js} +0 -0
- /package/dist/chunks/{instinctParser-Dez-rnKK.js → instinctParser-BFHgE5A4.js} +0 -0
- /package/dist/chunks/{jwtUtils-DgPQR3cZ.js → jwtUtils-DL8L2JPK.js} +0 -0
- /package/dist/chunks/{lib-LxJ6DoZY.js → lib-CnkuCi7e.js} +0 -0
- /package/dist/chunks/{lockfile-D65KX0SH.js → lockfile-BTwNnc6d.js} +0 -0
- /package/dist/chunks/{modalContext-D2kC2GcE.js → modalContext-7wVG_JCR.js} +0 -0
- /package/dist/chunks/{observationStore-DtE97mP4.js → observationStore-BW0N7kqX.js} +0 -0
- /package/dist/chunks/{openai-U_owM0Wc.js → openai-HuE31rEG.js} +0 -0
- /package/dist/chunks/{operations-ChPHc8e6.js → operations-Dv3d6vA6.js} +0 -0
- /package/dist/chunks/{output-style-BXQs3dnJ.js → output-style-BdMzAlhq.js} +0 -0
- /package/dist/chunks/{parseConnectUrl-MYfoAQ1a.js → parseConnectUrl-bPMCRn4n.js} +0 -0
- /package/dist/chunks/{poller-CJzreIZS.js → poller-BBFvAlJc.js} +0 -0
- /package/dist/chunks/{postCommitAttribution-DmuxexP6.js → postCommitAttribution-Dv_316Jg.js} +0 -0
- /package/dist/chunks/{projectContext-CEnG2izP.js → projectContext-ComAiFhS.js} +0 -0
- /package/dist/chunks/{prompt-BnKv9_mj.js → prompt-rbaI_D5u.js} +0 -0
- /package/dist/chunks/{renderOptions-CHpHxRwl.js → renderOptions-Ckbomiec.js} +0 -0
- /package/dist/chunks/{rewind-Ddhd2R_A.js → rewind-vw2ne4Xr.js} +0 -0
- /package/dist/chunks/{rollback-Gt4wFMPp.js → rollback-CXcDCnEi.js} +0 -0
- /package/dist/chunks/{sanitization-CYd1OuBT.js → sanitization-DTHqxW87.js} +0 -0
- /package/dist/chunks/{sdkHeapDumpMonitor-BTcjJax2.js → sdkHeapDumpMonitor-DPgYcat0.js} +0 -0
- /package/dist/chunks/{server-DBPAty_m.js → server-CVTxPXiN.js} +0 -0
- /package/dist/chunks/{serverBanner-Bq43BqnP.js → serverBanner-DwGxohre.js} +0 -0
- /package/dist/chunks/{serverLog-C1qKA5fJ.js → serverLog-B4k8TPNh.js} +0 -0
- /package/dist/chunks/{sessionDataUploader-Bnnb2afa.js → sessionDataUploader-CTyFNa9x.js} +0 -0
- /package/dist/chunks/{sessionManager-CprPE_HT.js → sessionManager-BMihleFs.js} +0 -0
- /package/dist/chunks/{slashCommandParsing-rs-ERr7C.js → slashCommandParsing-60JH6-d_.js} +0 -0
- /package/dist/chunks/{src-2yhJaeQZ.js → src-4WLsfC8V.js} +0 -0
- /package/dist/chunks/{src-C__qTDYF.js → src-iHiSipnJ.js} +0 -0
- /package/dist/chunks/{state-BVnzrPu7.js → state-DgMvaYzj.js} +0 -0
- /package/dist/chunks/{staticRender-Dhz8mkhA.js → staticRender-CAZ_Cg43.js} +0 -0
- /package/dist/chunks/{stdio-CWDcxFu0.js → stdio-CWFOXyFI.js} +0 -0
- /package/dist/chunks/{stickers-4SNqAchz.js → stickers-DeHxjhdM.js} +0 -0
- /package/dist/chunks/{systemTheme-Dp21I3Xt.js → systemTheme-A-hRlw_f.js} +0 -0
- /package/dist/chunks/{types-BrlxvD1M.js → types-DsgAHfPE.js} +0 -0
- /package/dist/chunks/{up-C0eEOvrs.js → up-DrjAA1yD.js} +0 -0
- /package/dist/chunks/{upstreamproxy-DoroF8oN.js → upstreamproxy-B_wN4My6.js} +0 -0
- /package/dist/chunks/{voice-CSkrOZl_.js → voice-D2hV1CU6.js} +0 -0
- /package/dist/chunks/{workSecret-CMZkIeol.js → workSecret-8KZlvhR2.js} +0 -0
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { n as __esmMin } from "./chunk-CyLJMB0t.js";
|
|
2
|
-
import { a as getPipeIpc, s as init_pipeTransport } from "./pipeTransport-AYEUDuAI.js";
|
|
3
|
-
//#region src/commands/history/history.ts
|
|
4
|
-
function formatEntryType(type) {
|
|
5
|
-
switch (type) {
|
|
6
|
-
case "prompt": return "[PROMPT]";
|
|
7
|
-
case "prompt_ack": return "[ACK] ";
|
|
8
|
-
case "stream": return "[AI] ";
|
|
9
|
-
case "tool_start": return "[TOOL>] ";
|
|
10
|
-
case "tool_result": return "[TOOL<] ";
|
|
11
|
-
case "done": return "[DONE] ";
|
|
12
|
-
case "error": return "[ERROR] ";
|
|
13
|
-
default: return `[${type}]`;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
var call;
|
|
17
|
-
//#endregion
|
|
18
|
-
__esmMin((() => {
|
|
19
|
-
init_pipeTransport();
|
|
20
|
-
call = async (args, context) => {
|
|
21
|
-
const currentState = context.getAppState();
|
|
22
|
-
if (getPipeIpc(currentState).role !== "master") return {
|
|
23
|
-
type: "text",
|
|
24
|
-
value: "Not in master mode. Use /attach <pipe-name> first."
|
|
25
|
-
};
|
|
26
|
-
const parts = args.trim().split(/\s+/);
|
|
27
|
-
const targetName = parts[0];
|
|
28
|
-
if (!targetName) {
|
|
29
|
-
const slaveNames = Object.keys(getPipeIpc(currentState).slaves);
|
|
30
|
-
if (slaveNames.length === 0) return {
|
|
31
|
-
type: "text",
|
|
32
|
-
value: "No sub sessions connected."
|
|
33
|
-
};
|
|
34
|
-
return {
|
|
35
|
-
type: "text",
|
|
36
|
-
value: `Usage: /history <pipe-name>\nConnected sub sessions: ${slaveNames.join(", ")}`
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
const slave = getPipeIpc(currentState).slaves[targetName];
|
|
40
|
-
if (!slave) return {
|
|
41
|
-
type: "text",
|
|
42
|
-
value: `Not attached to "${targetName}". Use /status to see connected sub sessions.`
|
|
43
|
-
};
|
|
44
|
-
let limit = slave.history.length;
|
|
45
|
-
const lastIdx = parts.indexOf("--last");
|
|
46
|
-
if (lastIdx !== -1 && parts[lastIdx + 1]) {
|
|
47
|
-
const n = parseInt(parts[lastIdx + 1], 10);
|
|
48
|
-
if (!isNaN(n) && n > 0) limit = n;
|
|
49
|
-
}
|
|
50
|
-
const entries = slave.history.slice(-limit);
|
|
51
|
-
if (entries.length === 0) return {
|
|
52
|
-
type: "text",
|
|
53
|
-
value: `No session history for "${targetName}" yet.`
|
|
54
|
-
};
|
|
55
|
-
const lines = [`Session history for "${targetName}" (${entries.length}/${slave.history.length} entries):`, ""];
|
|
56
|
-
for (const entry of entries) {
|
|
57
|
-
const time = entry.timestamp.slice(11, 19);
|
|
58
|
-
const prefix = formatEntryType(entry.type);
|
|
59
|
-
const content = entry.content.length > 200 ? entry.content.slice(0, 200) + "..." : entry.content;
|
|
60
|
-
lines.push(`[${time}] ${prefix} ${content}`);
|
|
61
|
-
}
|
|
62
|
-
return {
|
|
63
|
-
type: "text",
|
|
64
|
-
value: lines.join("\n")
|
|
65
|
-
};
|
|
66
|
-
};
|
|
67
|
-
}))();
|
|
68
|
-
export { call };
|
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
import { n as __esmMin, r as __exportAll } from "./chunk-CyLJMB0t.js";
|
|
2
|
-
import { n as init_defineProperty, t as _defineProperty } from "./defineProperty-Cq4c5J8x.js";
|
|
3
|
-
import { o as init_log, s as logError } from "./log-BtGcZqeW.js";
|
|
4
|
-
import { EventEmitter } from "events";
|
|
5
|
-
import { createSocket } from "dgram";
|
|
6
|
-
//#region src/utils/lanBeacon.ts
|
|
7
|
-
/**
|
|
8
|
-
* LAN Beacon — UDP multicast peer discovery for Pipes system.
|
|
9
|
-
*
|
|
10
|
-
* Uses multicast group 224.0.71.67 ("CC" = Claude Code ASCII) on port 7101
|
|
11
|
-
* to announce and discover CLI instances on the local network.
|
|
12
|
-
*
|
|
13
|
-
* Feature-gated by LAN_PIPES.
|
|
14
|
-
*/
|
|
15
|
-
var lanBeacon_exports = /* @__PURE__ */ __exportAll({
|
|
16
|
-
LanBeacon: () => LanBeacon,
|
|
17
|
-
getLanBeacon: () => getLanBeacon,
|
|
18
|
-
setLanBeacon: () => setLanBeacon
|
|
19
|
-
});
|
|
20
|
-
function getLanBeacon() {
|
|
21
|
-
return _lanBeaconInstance;
|
|
22
|
-
}
|
|
23
|
-
function setLanBeacon(instance) {
|
|
24
|
-
_lanBeaconInstance = instance;
|
|
25
|
-
}
|
|
26
|
-
var MULTICAST_GROUP, MULTICAST_PORT, ANNOUNCE_INTERVAL_MS, PEER_TIMEOUT_MS, _lanBeaconInstance, LanBeacon;
|
|
27
|
-
var init_lanBeacon = __esmMin((() => {
|
|
28
|
-
init_log();
|
|
29
|
-
init_defineProperty();
|
|
30
|
-
MULTICAST_GROUP = "224.0.71.67";
|
|
31
|
-
MULTICAST_PORT = 7101;
|
|
32
|
-
ANNOUNCE_INTERVAL_MS = 3e3;
|
|
33
|
-
PEER_TIMEOUT_MS = 15e3;
|
|
34
|
-
_lanBeaconInstance = null;
|
|
35
|
-
LanBeacon = class extends EventEmitter {
|
|
36
|
-
constructor(announce) {
|
|
37
|
-
super();
|
|
38
|
-
_defineProperty(this, "socket", null);
|
|
39
|
-
_defineProperty(this, "announceTimer", null);
|
|
40
|
-
_defineProperty(this, "cleanupTimer", null);
|
|
41
|
-
_defineProperty(this, "peers", /* @__PURE__ */ new Map());
|
|
42
|
-
_defineProperty(this, "announce", void 0);
|
|
43
|
-
this.announce = {
|
|
44
|
-
...announce,
|
|
45
|
-
proto: "claude-pipe-v1",
|
|
46
|
-
ts: Date.now()
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Start broadcasting announcements and listening for peers.
|
|
51
|
-
*/
|
|
52
|
-
start() {
|
|
53
|
-
if (this.socket) return;
|
|
54
|
-
try {
|
|
55
|
-
this.socket = createSocket({
|
|
56
|
-
type: "udp4",
|
|
57
|
-
reuseAddr: true
|
|
58
|
-
});
|
|
59
|
-
this.socket.on("error", (err) => {
|
|
60
|
-
logError(err);
|
|
61
|
-
});
|
|
62
|
-
this.socket.on("message", (buf, rinfo) => {
|
|
63
|
-
try {
|
|
64
|
-
const msg = JSON.parse(buf.toString());
|
|
65
|
-
if (msg.proto !== "claude-pipe-v1") return;
|
|
66
|
-
if (msg.pipeName === this.announce.pipeName) return;
|
|
67
|
-
const isNew = !this.peers.has(msg.pipeName);
|
|
68
|
-
this.peers.set(msg.pipeName, {
|
|
69
|
-
...msg,
|
|
70
|
-
ts: Date.now()
|
|
71
|
-
});
|
|
72
|
-
if (isNew) this.emit("peer-discovered", msg);
|
|
73
|
-
} catch {}
|
|
74
|
-
});
|
|
75
|
-
this.socket.bind(MULTICAST_PORT, () => {
|
|
76
|
-
try {
|
|
77
|
-
const localIp = this.announce.ip;
|
|
78
|
-
this.socket.addMembership(MULTICAST_GROUP, localIp);
|
|
79
|
-
this.socket.setMulticastInterface(localIp);
|
|
80
|
-
this.socket.setMulticastTTL(1);
|
|
81
|
-
this.socket.setBroadcast(true);
|
|
82
|
-
} catch (err) {
|
|
83
|
-
logError(err);
|
|
84
|
-
}
|
|
85
|
-
this.announceTimer = setInterval(() => this.sendAnnounce(), ANNOUNCE_INTERVAL_MS);
|
|
86
|
-
this.sendAnnounce();
|
|
87
|
-
this.cleanupTimer = setInterval(() => this.cleanupStalePeers(), PEER_TIMEOUT_MS / 2);
|
|
88
|
-
});
|
|
89
|
-
} catch (err) {
|
|
90
|
-
logError(err);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Stop broadcasting and close the socket.
|
|
95
|
-
*/
|
|
96
|
-
stop() {
|
|
97
|
-
if (this.announceTimer) {
|
|
98
|
-
clearInterval(this.announceTimer);
|
|
99
|
-
this.announceTimer = null;
|
|
100
|
-
}
|
|
101
|
-
if (this.cleanupTimer) {
|
|
102
|
-
clearInterval(this.cleanupTimer);
|
|
103
|
-
this.cleanupTimer = null;
|
|
104
|
-
}
|
|
105
|
-
if (this.socket) {
|
|
106
|
-
try {
|
|
107
|
-
this.socket.dropMembership(MULTICAST_GROUP);
|
|
108
|
-
} catch {}
|
|
109
|
-
this.socket.close();
|
|
110
|
-
this.socket = null;
|
|
111
|
-
}
|
|
112
|
-
this.peers.clear();
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Get all currently known peers (excluding self).
|
|
116
|
-
*/
|
|
117
|
-
getPeers() {
|
|
118
|
-
return new Map(this.peers);
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Update the announce data (e.g., when role changes).
|
|
122
|
-
*/
|
|
123
|
-
updateAnnounce(partial) {
|
|
124
|
-
this.announce = {
|
|
125
|
-
...this.announce,
|
|
126
|
-
...partial
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
sendAnnounce() {
|
|
130
|
-
if (!this.socket) return;
|
|
131
|
-
try {
|
|
132
|
-
const payload = Buffer.from(JSON.stringify({
|
|
133
|
-
...this.announce,
|
|
134
|
-
ts: Date.now()
|
|
135
|
-
}));
|
|
136
|
-
this.socket.send(payload, 0, payload.length, MULTICAST_PORT, MULTICAST_GROUP);
|
|
137
|
-
} catch {}
|
|
138
|
-
}
|
|
139
|
-
cleanupStalePeers() {
|
|
140
|
-
const now = Date.now();
|
|
141
|
-
for (const [name, peer] of this.peers) if (now - peer.ts > PEER_TIMEOUT_MS) {
|
|
142
|
-
this.peers.delete(name);
|
|
143
|
-
this.emit("peer-lost", name);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
};
|
|
147
|
-
}));
|
|
148
|
-
//#endregion
|
|
149
|
-
export { setLanBeacon as a, lanBeacon_exports as i, getLanBeacon as n, init_lanBeacon as r, LanBeacon as t };
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { n as __esmMin } from "./chunk-CyLJMB0t.js";
|
|
2
|
-
//#region src/utils/ndjsonFramer.ts
|
|
3
|
-
/**
|
|
4
|
-
* Attach an NDJSON framer to a socket. Calls `onMessage` for each
|
|
5
|
-
* complete JSON line received. Malformed lines are skipped by default;
|
|
6
|
-
* callers may opt into error callbacks or socket destruction.
|
|
7
|
-
*
|
|
8
|
-
* @param parse - Optional custom JSON parser (defaults to JSON.parse).
|
|
9
|
-
* Useful when the caller uses a wrapped parser like jsonParse
|
|
10
|
-
* from slowOperations.
|
|
11
|
-
*/
|
|
12
|
-
function attachNdjsonFramer(socket, onMessage, parse = (text) => JSON.parse(text), options = {}) {
|
|
13
|
-
let buffer = "";
|
|
14
|
-
let bufferBytes = 0;
|
|
15
|
-
const maxFrameBytes = options.maxFrameBytes ?? Number.POSITIVE_INFINITY;
|
|
16
|
-
const rejectOversizedFrame = (bytes) => {
|
|
17
|
-
const error = /* @__PURE__ */ new Error(`NDJSON frame exceeded ${maxFrameBytes} bytes (${bytes})`);
|
|
18
|
-
options.onFrameError?.(error);
|
|
19
|
-
if (options.destroyOnFrameError ?? true) socket.destroy(error);
|
|
20
|
-
};
|
|
21
|
-
const rejectInvalidFrame = (error) => {
|
|
22
|
-
const frameError = error instanceof Error ? error : /* @__PURE__ */ new Error("Invalid NDJSON frame");
|
|
23
|
-
options.onInvalidFrame?.(frameError);
|
|
24
|
-
if (options.destroyOnInvalidFrame ?? false) socket.destroy(frameError);
|
|
25
|
-
};
|
|
26
|
-
const emitLine = (line) => {
|
|
27
|
-
if (!line.trim()) return;
|
|
28
|
-
try {
|
|
29
|
-
onMessage(parse(line));
|
|
30
|
-
} catch (error) {
|
|
31
|
-
rejectInvalidFrame(error);
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
socket.on("data", (chunk) => {
|
|
35
|
-
let start = 0;
|
|
36
|
-
for (let index = 0; index < chunk.length; index++) {
|
|
37
|
-
if (chunk[index] !== 10) continue;
|
|
38
|
-
const segmentBytes = index - start;
|
|
39
|
-
if (Number.isFinite(maxFrameBytes) && bufferBytes + segmentBytes > maxFrameBytes) {
|
|
40
|
-
rejectOversizedFrame(bufferBytes + segmentBytes);
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
buffer += chunk.subarray(start, index).toString("utf8");
|
|
44
|
-
emitLine(buffer);
|
|
45
|
-
buffer = "";
|
|
46
|
-
bufferBytes = 0;
|
|
47
|
-
start = index + 1;
|
|
48
|
-
}
|
|
49
|
-
const tailBytes = chunk.length - start;
|
|
50
|
-
if (Number.isFinite(maxFrameBytes) && bufferBytes + tailBytes > maxFrameBytes) {
|
|
51
|
-
rejectOversizedFrame(bufferBytes + tailBytes);
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
if (tailBytes > 0) {
|
|
55
|
-
buffer += chunk.subarray(start).toString("utf8");
|
|
56
|
-
bufferBytes += tailBytes;
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
var init_ndjsonFramer = __esmMin((() => {}));
|
|
61
|
-
//#endregion
|
|
62
|
-
export { init_ndjsonFramer as n, attachNdjsonFramer as t };
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { n as __esmMin } from "./chunk-CyLJMB0t.js";
|
|
2
|
-
import { l as getUdsMessagingSocketPath, s as formatUdsAddress, u as init_udsMessaging } from "./udsMessaging-CccGgVgR.js";
|
|
3
|
-
import { a as isPeerAlive, i as init_udsClient, s as listPeers } from "./udsClient-B70nBxvj.js";
|
|
4
|
-
//#region src/commands/peers/peers.ts
|
|
5
|
-
function formatAge(startedAt) {
|
|
6
|
-
const elapsed = Date.now() - startedAt;
|
|
7
|
-
const seconds = Math.floor(elapsed / 1e3);
|
|
8
|
-
if (seconds < 60) return `${seconds}s ago`;
|
|
9
|
-
const minutes = Math.floor(seconds / 60);
|
|
10
|
-
if (minutes < 60) return `${minutes}m ago`;
|
|
11
|
-
return `${Math.floor(minutes / 60)}h ${minutes % 60}m ago`;
|
|
12
|
-
}
|
|
13
|
-
var call;
|
|
14
|
-
//#endregion
|
|
15
|
-
__esmMin((() => {
|
|
16
|
-
init_udsClient();
|
|
17
|
-
init_udsMessaging();
|
|
18
|
-
call = async (_args, _context) => {
|
|
19
|
-
const mySocket = getUdsMessagingSocketPath();
|
|
20
|
-
const peers = await listPeers();
|
|
21
|
-
const lines = [];
|
|
22
|
-
lines.push(`Your socket: ${mySocket ?? "(not started)"}`);
|
|
23
|
-
lines.push("");
|
|
24
|
-
if (peers.length === 0) lines.push("No other Claude Code peers found.");
|
|
25
|
-
else {
|
|
26
|
-
lines.push(`Peers (${peers.length}):`);
|
|
27
|
-
lines.push("");
|
|
28
|
-
for (const peer of peers) {
|
|
29
|
-
const status = (peer.messagingSocketPath ? await isPeerAlive(peer.messagingSocketPath) : false) ? "reachable" : "unreachable";
|
|
30
|
-
const label = peer.name ?? peer.kind ?? "interactive";
|
|
31
|
-
const cwd = peer.cwd ? ` cwd: ${peer.cwd}` : "";
|
|
32
|
-
const age = peer.startedAt ? ` started: ${formatAge(peer.startedAt)}` : "";
|
|
33
|
-
lines.push(` [${status}] PID ${peer.pid} (${label})${cwd}${age}`);
|
|
34
|
-
if (peer.messagingSocketPath) lines.push(` socket: ${formatUdsAddress(peer.messagingSocketPath)}`);
|
|
35
|
-
if (peer.sessionId) lines.push(` session: ${peer.sessionId}`);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
lines.push("");
|
|
39
|
-
lines.push("To message a peer: use SendMessage with the shown uds:<socket-path> address");
|
|
40
|
-
return {
|
|
41
|
-
type: "text",
|
|
42
|
-
value: lines.join("\n")
|
|
43
|
-
};
|
|
44
|
-
};
|
|
45
|
-
}))();
|
|
46
|
-
export { call };
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { n as __esmMin } from "./chunk-CyLJMB0t.js";
|
|
2
|
-
import { a as getPipeIpc, i as getPipeDisplayRole, l as isPipeControlled, s as init_pipeTransport } from "./pipeTransport-AYEUDuAI.js";
|
|
3
|
-
import { a as init_useMasterMonitor, n as getAllSlaveClients } from "./useMasterMonitor-BQ1QhrlN.js";
|
|
4
|
-
//#region src/commands/pipe-status/pipe-status.ts
|
|
5
|
-
var call;
|
|
6
|
-
//#endregion
|
|
7
|
-
__esmMin((() => {
|
|
8
|
-
init_useMasterMonitor();
|
|
9
|
-
init_pipeTransport();
|
|
10
|
-
call = async (_args, context) => {
|
|
11
|
-
const currentState = context.getAppState();
|
|
12
|
-
if (getPipeIpc(currentState).role === "main") return {
|
|
13
|
-
type: "text",
|
|
14
|
-
value: "Main mode — not connected to any CLIs.\nUse /attach <pipe-name> to connect to a sub session."
|
|
15
|
-
};
|
|
16
|
-
if (isPipeControlled(getPipeIpc(currentState))) return {
|
|
17
|
-
type: "text",
|
|
18
|
-
value: `${getPipeDisplayRole(getPipeIpc(currentState))} mode — controlled by "${getPipeIpc(currentState).attachedBy}".\nAll session data is being reported to the master.`
|
|
19
|
-
};
|
|
20
|
-
const slaves = getPipeIpc(currentState).slaves;
|
|
21
|
-
const slaveNames = Object.keys(slaves);
|
|
22
|
-
const clients = getAllSlaveClients();
|
|
23
|
-
if (slaveNames.length === 0) return {
|
|
24
|
-
type: "text",
|
|
25
|
-
value: "Master mode but no sub sessions connected.\nUse /attach <pipe-name> to connect."
|
|
26
|
-
};
|
|
27
|
-
const lines = [`Master mode — ${slaveNames.length} sub session(s) connected:`, ""];
|
|
28
|
-
for (const name of slaveNames) {
|
|
29
|
-
const slave = slaves[name];
|
|
30
|
-
const connected = clients.get(name)?.connected ? "connected" : "disconnected";
|
|
31
|
-
const historyCount = slave.history.length;
|
|
32
|
-
const connectedAt = slave.connectedAt.slice(11, 19);
|
|
33
|
-
lines.push(` ${name}`);
|
|
34
|
-
lines.push(` Status: ${slave.status} (${connected})`);
|
|
35
|
-
lines.push(` Connected: ${connectedAt}`);
|
|
36
|
-
lines.push(` History: ${historyCount} entries`);
|
|
37
|
-
lines.push("");
|
|
38
|
-
}
|
|
39
|
-
lines.push("Commands:");
|
|
40
|
-
lines.push(" /send <name> <msg> — Send a task to a sub session");
|
|
41
|
-
lines.push(" /history <name> — View sub session transcript");
|
|
42
|
-
lines.push(" /detach [name] — Disconnect from a sub session (or all)");
|
|
43
|
-
return {
|
|
44
|
-
type: "text",
|
|
45
|
-
value: lines.join("\n")
|
|
46
|
-
};
|
|
47
|
-
};
|
|
48
|
-
}))();
|
|
49
|
-
export { call };
|
|
@@ -1,316 +0,0 @@
|
|
|
1
|
-
import { i as __require, n as __esmMin } from "./chunk-CyLJMB0t.js";
|
|
2
|
-
import { c as isPipeAlive, o as getPipesDir, s as init_pipeTransport } from "./pipeTransport-AYEUDuAI.js";
|
|
3
|
-
import { join } from "path";
|
|
4
|
-
import { createHash } from "crypto";
|
|
5
|
-
import { mkdir, readFile, unlink, writeFile } from "fs/promises";
|
|
6
|
-
//#region src/utils/pipeRegistry.ts
|
|
7
|
-
/**
|
|
8
|
-
* Pipe Registry — central registry for multi-instance pipe coordination.
|
|
9
|
-
*
|
|
10
|
-
* Manages a shared registry.json that tracks all CLI instances (main + subs).
|
|
11
|
-
* Main role is bound to machineId (OS-level stable fingerprint), not to
|
|
12
|
-
* instance startup order.
|
|
13
|
-
*
|
|
14
|
-
* File locking prevents race conditions when multiple instances start
|
|
15
|
-
* simultaneously.
|
|
16
|
-
*/
|
|
17
|
-
function getRegistryPath() {
|
|
18
|
-
return join(getPipesDir(), "registry.json");
|
|
19
|
-
}
|
|
20
|
-
function getLockPath() {
|
|
21
|
-
return join(getPipesDir(), "registry.lock");
|
|
22
|
-
}
|
|
23
|
-
async function getMachineId() {
|
|
24
|
-
if (_cachedMachineId) return _cachedMachineId;
|
|
25
|
-
let raw = null;
|
|
26
|
-
if (process.platform === "win32") try {
|
|
27
|
-
const { execFile } = __require("child_process");
|
|
28
|
-
raw = await new Promise((resolve, reject) => {
|
|
29
|
-
execFile("reg", [
|
|
30
|
-
"query",
|
|
31
|
-
"HKLM\\SOFTWARE\\Microsoft\\Cryptography",
|
|
32
|
-
"/v",
|
|
33
|
-
"MachineGuid"
|
|
34
|
-
], { timeout: 3e3 }, (err, stdout) => err ? reject(err) : resolve(stdout));
|
|
35
|
-
});
|
|
36
|
-
const match = raw.match(/MachineGuid\s+REG_SZ\s+(\S+)/);
|
|
37
|
-
if (match) {
|
|
38
|
-
_cachedMachineId = match[1];
|
|
39
|
-
return _cachedMachineId;
|
|
40
|
-
}
|
|
41
|
-
} catch {}
|
|
42
|
-
else if (process.platform === "linux") try {
|
|
43
|
-
raw = await readFile("/etc/machine-id", "utf8");
|
|
44
|
-
raw = raw.trim();
|
|
45
|
-
if (raw) {
|
|
46
|
-
_cachedMachineId = raw;
|
|
47
|
-
return _cachedMachineId;
|
|
48
|
-
}
|
|
49
|
-
} catch {}
|
|
50
|
-
else if (process.platform === "darwin") try {
|
|
51
|
-
const { execFile } = __require("child_process");
|
|
52
|
-
raw = await new Promise((resolve, reject) => {
|
|
53
|
-
execFile("bash", ["-c", "ioreg -rd1 -c IOPlatformExpertDevice | grep IOPlatformSerialNumber"], { timeout: 3e3 }, (err, stdout) => err ? reject(err) : resolve(stdout));
|
|
54
|
-
});
|
|
55
|
-
const match = raw.match(/"IOPlatformSerialNumber"\s*=\s*"(\S+)"/);
|
|
56
|
-
if (match) {
|
|
57
|
-
_cachedMachineId = match[1];
|
|
58
|
-
return _cachedMachineId;
|
|
59
|
-
}
|
|
60
|
-
} catch {}
|
|
61
|
-
_cachedMachineId = generateFallbackId();
|
|
62
|
-
return _cachedMachineId;
|
|
63
|
-
}
|
|
64
|
-
function generateFallbackId() {
|
|
65
|
-
const os = __require("os");
|
|
66
|
-
const nets = os.networkInterfaces();
|
|
67
|
-
const macs = [];
|
|
68
|
-
for (const name of Object.keys(nets)) for (const net of nets[name] ?? []) if (net.mac && net.mac !== "00:00:00:00:00:00") macs.push(net.mac);
|
|
69
|
-
macs.sort();
|
|
70
|
-
const raw = `${os.hostname()}:${macs.join(",")}`;
|
|
71
|
-
return createHash("sha256").update(raw).digest("hex").slice(0, 32);
|
|
72
|
-
}
|
|
73
|
-
function getMacAddress() {
|
|
74
|
-
const nets = __require("os").networkInterfaces();
|
|
75
|
-
for (const name of Object.keys(nets)) for (const net of nets[name] ?? []) if (net.family === "IPv4" && !net.internal && net.mac && net.mac !== "00:00:00:00:00:00") return net.mac;
|
|
76
|
-
return "00:00:00:00:00:00";
|
|
77
|
-
}
|
|
78
|
-
async function acquireLock() {
|
|
79
|
-
await mkdir(getPipesDir(), { recursive: true });
|
|
80
|
-
const lockPath = getLockPath();
|
|
81
|
-
const deadline = Date.now() + LOCK_TIMEOUT_MS;
|
|
82
|
-
while (Date.now() < deadline) try {
|
|
83
|
-
await writeFile(lockPath, String(process.pid), { flag: "wx" });
|
|
84
|
-
return;
|
|
85
|
-
} catch (err) {
|
|
86
|
-
if (err.code === "EEXIST") {
|
|
87
|
-
try {
|
|
88
|
-
const content = await readFile(lockPath, "utf8");
|
|
89
|
-
const lockPid = parseInt(content, 10);
|
|
90
|
-
if (lockPid && lockPid !== process.pid) try {
|
|
91
|
-
process.kill(lockPid, 0);
|
|
92
|
-
} catch {
|
|
93
|
-
await unlink(lockPath).catch(() => {});
|
|
94
|
-
continue;
|
|
95
|
-
}
|
|
96
|
-
} catch {
|
|
97
|
-
await unlink(lockPath).catch(() => {});
|
|
98
|
-
continue;
|
|
99
|
-
}
|
|
100
|
-
await new Promise((r) => setTimeout(r, LOCK_RETRY_MS));
|
|
101
|
-
} else throw err;
|
|
102
|
-
}
|
|
103
|
-
await unlink(getLockPath()).catch(() => {});
|
|
104
|
-
await writeFile(lockPath, String(process.pid), { flag: "wx" }).catch(() => {});
|
|
105
|
-
}
|
|
106
|
-
async function releaseLock() {
|
|
107
|
-
await unlink(getLockPath()).catch(() => {});
|
|
108
|
-
}
|
|
109
|
-
async function readRegistry() {
|
|
110
|
-
try {
|
|
111
|
-
const content = await readFile(getRegistryPath(), "utf8");
|
|
112
|
-
const parsed = JSON.parse(content);
|
|
113
|
-
if (parsed.version !== 1) return { ...EMPTY_REGISTRY };
|
|
114
|
-
return parsed;
|
|
115
|
-
} catch {
|
|
116
|
-
return { ...EMPTY_REGISTRY };
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
async function writeRegistry(registry) {
|
|
120
|
-
await mkdir(getPipesDir(), { recursive: true });
|
|
121
|
-
await writeFile(getRegistryPath(), JSON.stringify(registry, null, 2));
|
|
122
|
-
}
|
|
123
|
-
async function determineRole(machineId) {
|
|
124
|
-
await acquireLock();
|
|
125
|
-
try {
|
|
126
|
-
const registry = await readRegistry();
|
|
127
|
-
if (!registry.mainMachineId || !registry.main) return { role: "main" };
|
|
128
|
-
if (registry.mainMachineId === machineId) {
|
|
129
|
-
if (registry.main && await isPipeAlive(registry.main.pipeName, 1e3)) return {
|
|
130
|
-
role: "sub",
|
|
131
|
-
subIndex: registry.subs.length + 1
|
|
132
|
-
};
|
|
133
|
-
return { role: "main-recover" };
|
|
134
|
-
}
|
|
135
|
-
return {
|
|
136
|
-
role: "sub",
|
|
137
|
-
subIndex: registry.subs.length + 1
|
|
138
|
-
};
|
|
139
|
-
} finally {
|
|
140
|
-
await releaseLock();
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
async function registerAsMain(entry) {
|
|
144
|
-
await acquireLock();
|
|
145
|
-
try {
|
|
146
|
-
const registry = await readRegistry();
|
|
147
|
-
registry.mainMachineId = entry.machineId;
|
|
148
|
-
registry.main = entry;
|
|
149
|
-
await writeRegistry(registry);
|
|
150
|
-
} finally {
|
|
151
|
-
await releaseLock();
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
async function registerAsSub(entry, subIndex) {
|
|
155
|
-
await acquireLock();
|
|
156
|
-
try {
|
|
157
|
-
const registry = await readRegistry();
|
|
158
|
-
registry.subs = registry.subs.filter((s) => s.id !== entry.id);
|
|
159
|
-
registry.subs.push({
|
|
160
|
-
...entry,
|
|
161
|
-
subIndex,
|
|
162
|
-
boundToMain: registry.main?.id ?? null
|
|
163
|
-
});
|
|
164
|
-
await writeRegistry(registry);
|
|
165
|
-
} finally {
|
|
166
|
-
await releaseLock();
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
async function unregister(id) {
|
|
170
|
-
await acquireLock();
|
|
171
|
-
try {
|
|
172
|
-
const registry = await readRegistry();
|
|
173
|
-
if (registry.main?.id === id) registry.main = null;
|
|
174
|
-
registry.subs = registry.subs.filter((s) => s.id !== id);
|
|
175
|
-
await writeRegistry(registry);
|
|
176
|
-
} finally {
|
|
177
|
-
await releaseLock();
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
async function revertToIndependent(id) {
|
|
181
|
-
await acquireLock();
|
|
182
|
-
try {
|
|
183
|
-
const registry = await readRegistry();
|
|
184
|
-
const sub = registry.subs.find((s) => s.id === id);
|
|
185
|
-
if (sub) sub.boundToMain = null;
|
|
186
|
-
await writeRegistry(registry);
|
|
187
|
-
} finally {
|
|
188
|
-
await releaseLock();
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
async function claimMain(newMachineId, entry) {
|
|
192
|
-
await acquireLock();
|
|
193
|
-
try {
|
|
194
|
-
const registry = await readRegistry();
|
|
195
|
-
registry.mainMachineId = newMachineId;
|
|
196
|
-
registry.main = entry;
|
|
197
|
-
for (const sub of registry.subs) sub.boundToMain = entry.id;
|
|
198
|
-
await writeRegistry(registry);
|
|
199
|
-
} finally {
|
|
200
|
-
await releaseLock();
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
async function isMainAlive() {
|
|
204
|
-
const registry = await readRegistry();
|
|
205
|
-
if (!registry.main) return false;
|
|
206
|
-
return isPipeAlive(registry.main.pipeName, 1e3);
|
|
207
|
-
}
|
|
208
|
-
function isMainMachine(machineId, registry) {
|
|
209
|
-
return registry.mainMachineId === machineId;
|
|
210
|
-
}
|
|
211
|
-
async function getAliveSubs() {
|
|
212
|
-
const registry = await readRegistry();
|
|
213
|
-
return (await Promise.all(registry.subs.map((sub) => isPipeAlive(sub.pipeName, 1e3).then((alive) => alive ? sub : null)))).filter((s) => s !== null);
|
|
214
|
-
}
|
|
215
|
-
async function cleanupStaleEntries() {
|
|
216
|
-
const registry = await readRegistry();
|
|
217
|
-
const [mainAlive, subResults] = await Promise.all([registry.main ? isPipeAlive(registry.main.pipeName, 1e3) : Promise.resolve(true), Promise.all(registry.subs.map((sub) => isPipeAlive(sub.pipeName, 1e3).then((alive) => ({
|
|
218
|
-
sub,
|
|
219
|
-
alive
|
|
220
|
-
}))))]);
|
|
221
|
-
if (!(!mainAlive || subResults.some((r) => !r.alive))) return;
|
|
222
|
-
await acquireLock();
|
|
223
|
-
try {
|
|
224
|
-
const fresh = await readRegistry();
|
|
225
|
-
let changed = false;
|
|
226
|
-
if (!mainAlive && fresh.main?.pipeName === registry.main?.pipeName) {
|
|
227
|
-
fresh.main = null;
|
|
228
|
-
changed = true;
|
|
229
|
-
}
|
|
230
|
-
const deadNames = new Set(subResults.filter((r) => !r.alive).map((r) => r.sub.pipeName));
|
|
231
|
-
const aliveSubs = fresh.subs.filter((s) => !deadNames.has(s.pipeName));
|
|
232
|
-
if (aliveSubs.length !== fresh.subs.length) {
|
|
233
|
-
fresh.subs = aliveSubs;
|
|
234
|
-
changed = true;
|
|
235
|
-
}
|
|
236
|
-
if (changed) await writeRegistry(fresh);
|
|
237
|
-
} finally {
|
|
238
|
-
await releaseLock();
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
/**
|
|
242
|
-
* Merge local registry entries with LAN beacon-discovered peers.
|
|
243
|
-
* Local entries take precedence — LAN peers are only added if not
|
|
244
|
-
* already present in the local registry.
|
|
245
|
-
*/
|
|
246
|
-
function mergeWithLanPeers(registry, lanPeers) {
|
|
247
|
-
const result = [];
|
|
248
|
-
const knownPipes = /* @__PURE__ */ new Set();
|
|
249
|
-
if (registry.main) {
|
|
250
|
-
knownPipes.add(registry.main.pipeName);
|
|
251
|
-
result.push({
|
|
252
|
-
id: registry.main.id,
|
|
253
|
-
pipeName: registry.main.pipeName,
|
|
254
|
-
role: "main",
|
|
255
|
-
machineId: registry.main.machineId,
|
|
256
|
-
ip: registry.main.ip,
|
|
257
|
-
hostname: registry.main.hostname,
|
|
258
|
-
alive: true,
|
|
259
|
-
source: "local",
|
|
260
|
-
tcpEndpoint: registry.main.tcpPort ? {
|
|
261
|
-
host: registry.main.ip,
|
|
262
|
-
port: registry.main.tcpPort
|
|
263
|
-
} : void 0
|
|
264
|
-
});
|
|
265
|
-
}
|
|
266
|
-
for (const sub of registry.subs) {
|
|
267
|
-
knownPipes.add(sub.pipeName);
|
|
268
|
-
result.push({
|
|
269
|
-
id: sub.id,
|
|
270
|
-
pipeName: sub.pipeName,
|
|
271
|
-
role: `sub-${sub.subIndex}`,
|
|
272
|
-
machineId: sub.machineId,
|
|
273
|
-
ip: sub.ip,
|
|
274
|
-
hostname: sub.hostname,
|
|
275
|
-
alive: true,
|
|
276
|
-
source: "local",
|
|
277
|
-
tcpEndpoint: sub.tcpPort ? {
|
|
278
|
-
host: sub.ip,
|
|
279
|
-
port: sub.tcpPort
|
|
280
|
-
} : void 0
|
|
281
|
-
});
|
|
282
|
-
}
|
|
283
|
-
for (const [pipeName, peer] of lanPeers) {
|
|
284
|
-
if (knownPipes.has(pipeName)) continue;
|
|
285
|
-
result.push({
|
|
286
|
-
id: `lan-${pipeName}`,
|
|
287
|
-
pipeName,
|
|
288
|
-
role: peer.role,
|
|
289
|
-
machineId: peer.machineId,
|
|
290
|
-
ip: peer.ip,
|
|
291
|
-
hostname: peer.hostname,
|
|
292
|
-
alive: true,
|
|
293
|
-
source: "lan",
|
|
294
|
-
tcpEndpoint: {
|
|
295
|
-
host: peer.ip,
|
|
296
|
-
port: peer.tcpPort
|
|
297
|
-
}
|
|
298
|
-
});
|
|
299
|
-
}
|
|
300
|
-
return result;
|
|
301
|
-
}
|
|
302
|
-
var _cachedMachineId, LOCK_TIMEOUT_MS, LOCK_RETRY_MS, EMPTY_REGISTRY;
|
|
303
|
-
var init_pipeRegistry = __esmMin((() => {
|
|
304
|
-
init_pipeTransport();
|
|
305
|
-
_cachedMachineId = null;
|
|
306
|
-
LOCK_TIMEOUT_MS = 2e3;
|
|
307
|
-
LOCK_RETRY_MS = 50;
|
|
308
|
-
EMPTY_REGISTRY = {
|
|
309
|
-
version: 1,
|
|
310
|
-
mainMachineId: null,
|
|
311
|
-
main: null,
|
|
312
|
-
subs: []
|
|
313
|
-
};
|
|
314
|
-
}));
|
|
315
|
-
//#endregion
|
|
316
|
-
export { getMacAddress as a, isMainAlive as c, readRegistry as d, registerAsMain as f, unregister as h, getAliveSubs as i, isMainMachine as l, revertToIndependent as m, cleanupStaleEntries as n, getMachineId as o, registerAsSub as p, determineRole as r, init_pipeRegistry as s, claimMain as t, mergeWithLanPeers as u };
|