claude-code-best 1.10.8 → 1.10.11
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-C6rqijRY.js} +3 -3
- package/dist/chunks/{App-DORYioIb.js → App-Ct9uQHIA.js} +4 -4
- package/dist/chunks/{ApproveApiKey-S_PhcDiO.js → ApproveApiKey-C7xe_ujH.js} +2 -2
- package/dist/chunks/{AssistantSessionChooser-_6CoGrsi.js → AssistantSessionChooser-B0JyDDDZ.js} +3 -3
- package/dist/chunks/{BackgroundTasksDialog-DRXUENfu.js → BackgroundTasksDialog-B5KsOVIe.js} +5 -5
- package/dist/chunks/{BypassPermissionsModeDialog-C_0P04Qi.js → BypassPermissionsModeDialog-DaeQ4xED.js} +2 -2
- package/dist/chunks/{ClaudeInChromeOnboarding-CPgxw3Jd.js → ClaudeInChromeOnboarding-B2GXIglO.js} +2 -2
- package/dist/chunks/{ClaudeMdExternalIncludesDialog-nx6BnDFO.js → ClaudeMdExternalIncludesDialog-D74yYI1i.js} +1 -1
- package/dist/chunks/{ClaudeMdExternalIncludesDialog-HW6hFwga.js → ClaudeMdExternalIncludesDialog-DWmdSx58.js} +2 -2
- package/dist/chunks/ConsoleOAuthFlow-CS4jOcte.js +3 -0
- package/dist/chunks/{DesktopHandoff-DDZW1f4B.js → DesktopHandoff-B9U9U9Tu.js} +2 -2
- package/dist/chunks/{DevChannelsDialog-BxT1gBI-.js → DevChannelsDialog-CzRbeBpk.js} +1 -1
- package/dist/chunks/{DiffDialog-C_M5fcZ1.js → DiffDialog-6AsqISNj.js} +4 -3
- package/dist/chunks/{Doctor-BeFtx51Y.js → Doctor-BxWkLXEe.js} +9 -9
- package/dist/chunks/{ExitFlow-Dol5ZTVp.js → ExitFlow-BfsgW10m.js} +2 -2
- package/dist/chunks/{Feedback-C6XXxkW_.js → Feedback-B_bPT-tv.js} +3 -3
- package/dist/chunks/{Grove-BXGgnmM2.js → Grove-C4feZVOi.js} +1 -1
- package/dist/chunks/{HybridTransport-6KE-2tdG.js → HybridTransport-PhjrDPRB.js} +3 -3
- package/dist/chunks/{ITermBackend-DU4crlJ8.js → ITermBackend-D9qkvBdK.js} +1 -1
- package/dist/chunks/{InvalidConfigDialog-COQp5wx6.js → InvalidConfigDialog-B5iw4BUB.js} +2 -2
- package/dist/chunks/{InvalidSettingsDialog-C4ZqH7ua.js → InvalidSettingsDialog-BxXjuoag.js} +2 -2
- package/dist/chunks/{MCPConnectionManager-Ci26BuqG.js → MCPConnectionManager-CEbFWjqj.js} +4 -4
- package/dist/chunks/{McpParsingWarnings-k4GVGSbD.js → McpParsingWarnings-CSMkQZXu.js} +1 -1
- package/dist/chunks/{MessageSelector-C-OCaW_O.js → MessageSelector-Dw8yVgHn.js} +10 -12
- package/dist/chunks/{Messages-B9hbb5uA.js → Messages-DATTswTy.js} +16 -16
- package/dist/chunks/{Onboarding-BDtHvYTx.js → Onboarding-DgmcqDHa.js} +8 -8
- package/dist/chunks/{OverageCreditUpsell-B4DOf4gh.js → OverageCreditUpsell-D7WHyk87.js} +3 -3
- package/dist/chunks/{PluginSettings-3R1CqSfW.js → PluginSettings-BRylpBE_.js} +13 -13
- package/dist/chunks/{PromptInputFooterSuggestions-CxqTMId_.js → PromptInputFooterSuggestions-Xy2gYy25.js} +2 -2
- package/dist/chunks/{PromptInputHelpMenu-BGgyDIkK.js → PromptInputHelpMenu-AgXLpTa-.js} +3 -3
- package/dist/chunks/{QueryEngine-ChpFG8gv.js → QueryEngine-CNS-KhzZ.js} +6 -6
- package/dist/chunks/{REPL-CG0UgVfl.js → REPL-Cnd4B1po.js} +1248 -2155
- package/dist/chunks/{RemoteCallout-B0VqS1Qt.js → RemoteCallout-CO-koWt4.js} +4 -4
- package/dist/chunks/{RemoteSessionManager-B1roy_8S.js → RemoteSessionManager-Cc5O4Iz6.js} +10 -10
- package/dist/chunks/{ResumeConversation-BWrUge-0.js → ResumeConversation-M4GjMvYr.js} +5 -5
- package/dist/chunks/{SSETransport-C2QsETHl.js → SSETransport-D8gYdijq.js} +2 -2
- package/dist/chunks/{Settings-COOyI14X.js → Settings-Cr-cVWIp.js} +15 -15
- package/dist/chunks/StructuredDiff-B6ZCMWS1.js +347 -0
- package/dist/chunks/{TeleportProgress-qSHTYfot.js → TeleportProgress-4ecw6CPX.js} +1 -1
- package/dist/chunks/{TeleportRepoMismatchDialog-CGsCO8by.js → TeleportRepoMismatchDialog-BSqD_ki7.js} +3 -3
- package/dist/chunks/{TeleportResumeWrapper-DXrpfnNe.js → TeleportResumeWrapper-3HksGDoJ.js} +3 -3
- package/dist/chunks/{ThemePicker-DimvavHs.js → ThemePicker-ChTKqsLP.js} +4 -3
- package/dist/chunks/{TmuxBackend-H0XnczhB.js → TmuxBackend-DfizVpWU.js} +1 -1
- package/dist/chunks/ToolSearchTool-DPT0W6W_.js +3 -0
- package/dist/chunks/{TrustDialog-DeSs6f0D.js → TrustDialog-txz8AgUy.js} +4 -4
- package/dist/chunks/{ValidationErrorsList-C4Km61yv.js → ValidationErrorsList-7hrGjTbU.js} +1 -1
- package/dist/chunks/{WindowsTerminalBackend-Bgv7-JUL.js → WindowsTerminalBackend-DrBBYUeT.js} +1 -1
- package/dist/chunks/{add-dir-CHNcl-5z.js → add-dir-1oTL8NCa.js} +2 -2
- package/dist/chunks/{agentDisplay-BBigvlJ5.js → agentDisplay-DdfH-rjM.js} +2 -2
- package/dist/chunks/{agents-CFvEeCnI.js → agents-CxqqgRQ4.js} +9 -9
- package/dist/chunks/{agents-Bnzh76m3.js → agents-itch4Ogn.js} +2 -2
- package/dist/chunks/{ant-DLe5klM_.js → ant-sNs2IQ4h.js} +2 -2
- package/dist/chunks/{api-Bx57yPja.js → api-B9EiITN3.js} +1 -1
- package/dist/chunks/{api-HJVu8Bgf.js → api-vMRVXAIW.js} +1 -1
- package/dist/chunks/asciicast--W1-QPVl.js +2 -0
- package/dist/chunks/{assistant-BcJ2VyZO.js → assistant-C2gseEKC.js} +4 -4
- package/dist/chunks/{assistant-DKGoLYoz.js → assistant-SUHURrLf.js} +2 -2
- package/dist/chunks/auth-BtsDqF5X.js +3 -0
- package/dist/chunks/{auth-BVoXNOdu.js → auth-CrKy_xfm.js} +1 -1
- package/dist/chunks/{autoMode-BjMFpRPS.js → autoMode-DDehnswW.js} +3 -3
- package/dist/chunks/{autonomy-B142xgn9.js → autonomy-xTW_cDaU.js} +63 -20
- package/dist/chunks/{autonomyPanel-DrItmDJf.js → autonomyPanel-BA8yF42J.js} +2 -2
- package/dist/chunks/{backgroundHousekeeping-DPSnu12B.js → backgroundHousekeeping-D0GmJKrV.js} +6 -6
- package/dist/chunks/{backgroundHousekeeping-xKDy8FkD.js → backgroundHousekeeping-Db_Petsq.js} +1 -1
- package/dist/chunks/{banner-2Io8Jttd.js → banner-C_aWUibC.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-B9GxhFg0.js} +2 -2
- package/dist/chunks/{bridge-BggvL4iM.js → bridge-Bq6FyAgG.js} +9 -9
- package/dist/chunks/{bridgeConfig-DsVyayv1.js → bridgeConfig-CZGaWsq7.js} +1 -1
- package/dist/chunks/{bridgeConfig-BeCM9dMF.js → bridgeConfig-Dht9PC-Q.js} +1 -1
- package/dist/chunks/{bridgeEnabled-oCT5xVvX.js → bridgeEnabled-CkmoqwG5.js} +1 -1
- package/dist/chunks/{bridgeEnabled-Dj8FWS0e.js → bridgeEnabled-Cu0GsgQC.js} +2 -2
- package/dist/chunks/{bridgeMain-Cnni8EVq.js → bridgeMain-COD0BaPa.js} +36 -36
- package/dist/chunks/{bridgeMessaging-CDla4R6o.js → bridgeMessaging-CMCuOWPg.js} +2 -2
- package/dist/chunks/{btw-BzdgUzJU.js → btw-B0p-2vLR.js} +5 -5
- package/dist/chunks/{buddy-ovy_skht.js → buddy-BPDwW1oK.js} +3 -3
- package/dist/chunks/{bypassPermissionsKillswitch-BJ7iACst.js → bypassPermissionsKillswitch-MrXUBqLu.js} +1 -1
- package/dist/chunks/{caches-B5mZT9E-.js → caches-B46ynuvK.js} +1 -1
- package/dist/chunks/{caches-CBfjkIrn.js → caches-Dga-SWBx.js} +8 -8
- package/dist/chunks/{ccrClient-DKQN014H.js → ccrClient-CErUgaOa.js} +3 -3
- package/dist/chunks/changeDetector-ChRE8fAI.js +3 -0
- package/dist/chunks/{channelNotification-Dgrgm0St.js → channelNotification-CAbX7jUR.js} +2 -2
- package/dist/chunks/{channelNotification-B1HVtfcI.js → channelNotification-kgISVp-m.js} +1 -1
- package/dist/chunks/{chrome-A_IWe_cO.js → chrome-BIHJ7Tiv.js} +3 -3
- package/dist/chunks/{clear-Cv0qvLzE.js → clear-e0qXtR3o.js} +1 -1
- package/dist/chunks/{client-DEQ6taWJ.js → client-jhgOiTrR.js} +1 -1
- package/dist/chunks/{color-rH76d2GW.js → color-DpOfQ6Pe.js} +1 -1
- package/dist/chunks/{commands-BToVM-n_.js → commands-CriEIXca.js} +1 -1
- package/dist/chunks/{commitAttribution-x-Y9qiEw.js → commitAttribution-Bnu7jx7-.js} +1 -1
- package/dist/chunks/{commitAttribution--kWCfiBX.js → commitAttribution-DpIpJU2o.js} +1 -1
- package/dist/chunks/{compact-CuLy_ZmV.js → compact-Bi5Vwnbj.js} +1 -1
- package/dist/chunks/{companion-BserNxZw.js → companion-B8Dlllnk.js} +1 -1
- package/dist/chunks/{config-BbFdCtCZ.js → config-D5JMhZBX.js} +1 -1
- package/dist/chunks/{config-WGaJE2Z-.js → config-Ddbt4ajH.js} +1 -1
- package/dist/chunks/{context-WOOY0FLL.js → context-B3uI7IwH.js} +5 -5
- package/dist/chunks/{context-noninteractive-CS0-TpiN.js → context-noninteractive-DuE_GTL9.js} +4 -4
- package/dist/chunks/{conversation-DZ_UoE8s.js → conversation-DvzAWiiJ.js} +1 -1
- package/dist/chunks/{conversation-LlZkX2yV.js → conversation-gnmmmJnB.js} +4 -4
- package/dist/chunks/{copy-DCXi64ex.js → copy-DAG6O8Dh.js} +2 -2
- package/dist/chunks/{cost-CoxvFCRD.js → cost-DShLvWcl.js} +2 -2
- package/dist/chunks/{createSSHSession-CP9c1m4g.js → createSSHSession-D8Sigb7_.js} +2 -2
- package/dist/chunks/{createSession-Cm7HpHez.js → createSession-BjIarSCO.js} +17 -17
- package/dist/chunks/{cronJitterConfig-DYWTMlRv.js → cronJitterConfig-CGula0w8.js} +4 -4
- package/dist/chunks/{crossProjectResume-DeOsfSF5.js → crossProjectResume-CSxe0Rfb.js} +8 -8
- package/dist/chunks/{daemon-Ci7b5c8J.js → daemon-DLqxYYIA.js} +2 -2
- package/dist/chunks/{datadog-FNzocPlm.js → datadog-CZbjl3Mk.js} +1 -1
- package/dist/chunks/{datadog-CgRauwXn.js → datadog-GQGGjkVH.js} +1 -1
- package/dist/chunks/{desktop-B1EhowRo.js → desktop-CL8H-5XY.js} +1 -1
- package/dist/chunks/{detached-BTZLi_wz.js → detached-BFTAxA_R.js} +1 -1
- package/dist/chunks/{diff-BXAZYSAe.js → diff-CQ9EqGNw.js} +1 -1
- package/dist/chunks/{doctor-2TsPG9x4.js → doctor-DXJAY0op.js} +1 -1
- package/dist/chunks/earlyInput-Dnqlqb0h.js +2 -0
- package/dist/chunks/{effort-DxhwjDgv.js → effort-Bq5WcivT.js} +3 -3
- package/dist/chunks/{entry-B37teFKO.js → entry-DUC38qNm.js} +3 -3
- package/dist/chunks/{envLessBridgeConfig-OzRntxQ7.js → envLessBridgeConfig-zdUL4H6-.js} +2 -2
- package/dist/chunks/{exit-DXwVjHB_.js → exit-DueO_n8-.js} +3 -3
- package/dist/chunks/{export-CUxQmI8I.js → export-BVu_Gpf-.js} +2 -2
- package/dist/chunks/{exportRenderer-BXcHLusv.js → exportRenderer-CaHsMpAb.js} +3 -3
- package/dist/chunks/{extra-usage-D5F2Fab1.js → extra-usage-DVgITuJR.js} +2 -2
- package/dist/chunks/{extra-usage-core-BjMJY05D.js → extra-usage-core-DUTbGs8v.js} +4 -4
- package/dist/chunks/{extra-usage-noninteractive-C1eLncrU.js → extra-usage-noninteractive-BZ_BfWOY.js} +1 -1
- package/dist/chunks/{extraUsage-B3Z9hxVY.js → extraUsage-Mc4ASNJv.js} +3 -3
- package/dist/chunks/{fast-BPAOtiKR.js → fast-BaLftgz2.js} +1 -1
- package/dist/chunks/{fast-vmSBT3wk.js → fast-k6ZhmOIi.js} +4 -4
- package/dist/chunks/{feedback-Bd4KPsMs.js → feedback-5-IPbRVC.js} +1 -1
- package/dist/chunks/{firstPartyEventLogger-DfayOxom.js → firstPartyEventLogger-Bzn8yHDw.js} +1 -1
- package/dist/chunks/{flushGate-CEQ0eFpN.js → flushGate-rpeO-ivG.js} +4 -4
- package/dist/chunks/{fork-Cql3KSxE.js → fork-Byn4vS0q.js} +1 -1
- package/dist/chunks/{gates-CXbe08cU.js → gates-BjSnAoph.js} +1 -1
- package/dist/chunks/{gates-B6dXEO7B.js → gates-UOfj_txz.js} +1 -1
- package/dist/chunks/{gemini-Dc1L8IRS.js → gemini-BWsCIecw.js} +3 -3
- package/dist/chunks/{generateSessionName-DnnfYlVp.js → generateSessionName-L0_s6vCa.js} +3 -3
- package/dist/chunks/{githubRepoPathMapping-7sx6rtjX.js → githubRepoPathMapping-CGEOENtp.js} +1 -1
- package/dist/chunks/{grok-ZGDHie6x.js → grok-p1yEaHVd.js} +4 -4
- package/dist/chunks/{growthbook-Cjl5wOGC.js → growthbook-uhd4CUKp.js} +1 -1
- package/dist/chunks/{heapdump-BtjR8Avz.js → heapdump-D5zORJKA.js} +1 -1
- package/dist/chunks/{help-CnGuF5OL.js → help-BOoThuUb.js} +5 -5
- package/dist/chunks/{hooks-EDuZo8rZ.js → hooks-Dlb--DQI.js} +1 -1
- package/dist/chunks/{hooks-6SfXd_6y.js → hooks-UQ_JSIfy.js} +2 -2
- package/dist/chunks/{hostAdapter-CutcCk0Y.js → hostAdapter-B5yLlQDm.js} +1 -1
- package/dist/chunks/{ide-DN0eFH-I.js → ide-EFY4x5hm.js} +2 -2
- package/dist/chunks/{inboundAttachments-CTBWhskT.js → inboundAttachments-0DCFrfnN.js} +1 -1
- package/dist/chunks/{initReplBridge-BKcPvixd.js → initReplBridge-DvZC3LMj.js} +19 -19
- package/dist/chunks/{insights-BS0ZNRLw.js → insights-9RJ5Khc8.js} +4 -4
- package/dist/chunks/{install-DicMWYKx.js → install-C96be5DE.js} +2 -2
- package/dist/chunks/{install-github-app-DHSeHIaO.js → install-github-app-BzeeFaVG.js} +3 -3
- package/dist/chunks/{install-slack-app-CLHR9i9n.js → install-slack-app-CqDmNYlF.js} +1 -1
- package/dist/chunks/{instrumentation-CUTDZ6VV.js → instrumentation-Bnub8hEj.js} +3 -3
- package/dist/chunks/{job-DKQ89zqd.js → job-DVJCanuD.js} +1 -1
- package/dist/chunks/{keybindings-5wQbz4c8.js → keybindings-BswJ-Uw7.js} +2 -2
- package/dist/chunks/{lang-BTCSHBFu.js → lang-CBJJqxqL.js} +2 -2
- package/dist/chunks/{language-Hl1jowwd.js → language-jmtIakwT.js} +1 -1
- package/dist/chunks/{loadAgentsDir-9z4W5vjy.js → loadAgentsDir-C4NKNvrs.js} +1 -1
- package/dist/chunks/{loadAgentsDir-CKCr6KLl.js → loadAgentsDir-C72eo76O.js} +11619 -5116
- package/dist/chunks/loadPluginHooks-BalGe00r.js +3 -0
- package/dist/chunks/{localSearch-DL5GhpDE.js → localSearch-C7kQiXKp.js} +1 -1
- package/dist/chunks/{localSearch-C5_bOr8q.js → localSearch-CHAR3yF3.js} +1 -1
- package/dist/chunks/{login-D9BtI7Pb.js → login-DKHI8tdJ.js} +1 -1
- package/dist/chunks/{login-DgQJAdug.js → login-cPF2s2Ip.js} +5 -5
- package/dist/chunks/{logoV2Utils-fw-X-t6i.js → logoV2Utils-i9vbvaH-.js} +4 -4
- package/dist/chunks/logout-ZcPro6_H.js +3 -0
- package/dist/chunks/{magicDocs-Crhut7gV.js → magicDocs-oftze6-m.js} +2 -2
- package/dist/chunks/{main-1IxSEB11.js → main-BkjRiKwX.js} +7 -7
- package/dist/chunks/{main-vXOmPUE1.js → main-YzWw6Vi0.js} +132 -134
- package/dist/chunks/{mappers-BCSKRNTR.js → mappers-Bx-2sRzn.js} +1 -1
- package/dist/chunks/{mcp-D1IOUzE7.js → mcp-C2cIgONA.js} +6 -6
- package/dist/chunks/{mcp-Ci0gy5Wm.js → mcp-CxTUyH2v.js} +6 -6
- package/dist/chunks/{mcp-7YXd30Q0.js → mcp-DMV-30LS.js} +3 -3
- package/dist/chunks/{mcpServer-CCvSYftj.js → mcpServer-DvtC6Pl3.js} +5 -5
- package/dist/chunks/{mcpServer-BHppS1ws.js → mcpServer-bGIO5UqI.js} +6 -6
- package/dist/chunks/{memory-IVFsZGbH.js → memory-2CKXpK42.js} +5 -5
- package/dist/chunks/{mobile-DC30stZP.js → mobile-DPxJSzS7.js} +1 -1
- package/dist/chunks/{model-CoZ6jhjM.js → model-18ea6LMg.js} +1 -1
- package/dist/chunks/{model-CtTIthX3.js → model-QMjDXcud.js} +3 -3
- package/dist/chunks/{onChangeAppState-C0crWlUU.js → onChangeAppState-DGOxmmCK.js} +3 -3
- package/dist/chunks/{openai-Bq-tZzdA.js → openai-DWUh0wBx.js} +4 -4
- package/dist/chunks/{overageCreditGrant-DA6Ji27r.js → overageCreditGrant-C4YTj6TG.js} +2 -2
- package/dist/chunks/{passes-CQjMQxDF.js → passes-BGaHP3jn.js} +2 -2
- package/dist/chunks/{paths-DSkEVuBg.js → paths-DvTLULIf.js} +3 -3
- package/dist/chunks/{permissions-bgBNVZj6.js → permissions-kdn0iNwR.js} +8 -8
- package/dist/chunks/pipeTransport-B2LrKe0N.js +78 -0
- package/dist/chunks/{plan-9HtDwIeE.js → plan-tiJVm4x_.js} +3 -3
- package/dist/chunks/{plugin-C2tIIFq9.js → plugin-D1c5Ko5y.js} +1 -1
- package/dist/chunks/{pluginAutoupdate-DZc2hFxf.js → pluginAutoupdate-Dpz5qa0X.js} +4 -4
- package/dist/chunks/{pluginBlocklist-DiS_LOxs.js → pluginBlocklist-BgclgWu5.js} +3 -3
- package/dist/chunks/{pluginCliCommands-BiXap9Fy.js → pluginCliCommands-ClnvND-z.js} +3 -3
- package/dist/chunks/{pluginFlagging-q8gMbkD5.js → pluginFlagging-DoQhFkzp.js} +1 -1
- package/dist/chunks/{pluginOperations-D9ol2ssj.js → pluginOperations-D-PDcILj.js} +4 -4
- package/dist/chunks/{pluginStartupCheck-COh-DcKy.js → pluginStartupCheck-CXt2hPkU.js} +3 -3
- package/dist/chunks/{pluginStartupCheck-CG2qErc7.js → pluginStartupCheck-n-skAjJV.js} +1 -1
- package/dist/chunks/{plugins-BietcZD3.js → plugins-ERB62mGT.js} +8 -8
- package/dist/chunks/policyLimits-DG0yzIIZ.js +3 -0
- package/dist/chunks/{pollConfig-2I_nDHA7.js → pollConfig-Cc-mH8wU.js} +1 -1
- package/dist/chunks/{poor-CB5mtPXL.js → poor-BXZpqueY.js} +1 -1
- package/dist/chunks/{poorMode-BQLnZVIm.js → poorMode-6i7DZvWQ.js} +1 -1
- package/dist/chunks/{poorMode-C7Tv4gyt.js → poorMode-KlsKA4Dw.js} +1 -1
- package/dist/chunks/{print-BWjElYkB.js → print-BdfIoC9c.js} +27 -46
- package/dist/chunks/{privacy-settings-C5mvrXGG.js → privacy-settings-DFtE--Du.js} +2 -2
- package/dist/chunks/{processBashCommand-DJgkl_kf.js → processBashCommand-CR-bUr4z.js} +3 -3
- package/dist/chunks/{processSlashCommand-CvVng3uM.js → processSlashCommand-Cqb-Wbv-.js} +5 -5
- package/dist/chunks/{projectContext-CtnrRecP.js → projectContext-DM5-VTsm.js} +1 -1
- package/dist/chunks/prompt-BamUvYWM.js +3 -0
- package/dist/chunks/prompt-Ny2N2zhC.js +3 -0
- package/dist/chunks/{promptEditor-B7ChKW5Y.js → promptEditor-NuKIAbMA.js} +1 -1
- package/dist/chunks/{protocolHandler-4lEbHJxz.js → protocolHandler-CLqJicyP.js} +5 -5
- package/dist/chunks/{rate-limit-options-BYbGoNeE.js → rate-limit-options-dW_WTcCr.js} +4 -4
- package/dist/chunks/{sessionActivity-BChWrGEw.js → rcDebugLog-4yU5VWxa.js} +28 -28
- package/dist/chunks/{referral-DWjXZbQX.js → referral-D46sEC3u.js} +2 -2
- package/dist/chunks/{refresh-G0J3u5aZ.js → refresh-B354z_gb.js} +1 -1
- package/dist/chunks/{registerProtocol-BOgiAPJV.js → registerProtocol-Crk-V31l.js} +2 -2
- package/dist/chunks/registry-D1PTOuro.js +3 -0
- package/dist/chunks/{release-notes-v3zOCxeU.js → release-notes-_Luv2jq3.js} +1 -1
- package/dist/chunks/{releaseNotes-BDI58OYX.js → releaseNotes-DTsjgjRS.js} +1 -1
- package/dist/chunks/{reload-plugins-CFeA55V6.js → reload-plugins-CIC8uesK.js} +4 -4
- package/dist/chunks/{remote-env-xOJjxQep.js → remote-env-BLZg34hJ.js} +2 -2
- package/dist/chunks/{remoteBridgeCore-C09AjDw1.js → remoteBridgeCore-3nL9TR6N.js} +8 -8
- package/dist/chunks/{remoteControlServer-VNsby-E0.js → remoteControlServer-Dz74gQxU.js} +7 -7
- package/dist/chunks/{rename-DeodVT8f.js → rename-C3phFdf9.js} +4 -4
- package/dist/chunks/{resume-BkdC4Iyi.js → resume-DKjCe4Re.js} +3 -3
- package/dist/chunks/{runtimeObserver-AfLQXrqg.js → runtimeObserver-2OqaSKnL.js} +8 -8
- package/dist/chunks/{runtimeObserver-DFFDac2w.js → runtimeObserver-x4IajJ5I.js} +1 -1
- package/dist/chunks/sandbox-adapter-C86MhZid.js +3 -0
- package/dist/chunks/{sandbox-toggle-KsZ9hetn.js → sandbox-toggle-DGTGln_2.js} +2 -2
- package/dist/chunks/{session-Cl-xCJ8U.js → session-UIhHe6mk.js} +2 -2
- package/dist/chunks/{sessionDiscovery-DMnEeuJg.js → sessionDiscovery-DH7yOz-4.js} +1 -1
- package/dist/chunks/sessionFileAccessHooks-C8xNLlGI.js +3 -0
- package/dist/chunks/{sessionMemory-CVMgpniu.js → sessionMemory-BKbAkl2d.js} +4 -4
- package/dist/chunks/sessionMemoryUtils-BpiV8qzn.js +3 -0
- package/dist/chunks/{sessionObserver-Drmv4DI0.js → sessionObserver-BOmJcunJ.js} +4 -4
- package/dist/chunks/{sessionObserver-DQQGWkXf.js → sessionObserver-DKWmLlNk.js} +1 -1
- package/dist/chunks/{sessionStorage-CcdKJkyn.js → sessionStorage-LOj57lSg.js} +1 -1
- package/dist/chunks/{sessionTitle-CynC1QWH.js → sessionTitle-BiJqks0Y.js} +2 -2
- package/dist/chunks/{sessionTracing-D9s950J5.js → sessionTracing-BsNTXXLM.js} +1 -1
- package/dist/chunks/{settingsSync-CPInbcj7.js → settingsSync-CrBZf0Vo.js} +2 -2
- package/dist/chunks/{setup-oNcnnqr2.js → setup-Cyn4xPeS.js} +15 -18
- package/dist/chunks/{setup-D5on8ibP.js → setup-DIpNQXq3.js} +2 -2
- package/dist/chunks/{setup-m0qLMFD7.js → setup-r_wH3t2q.js} +2 -2
- package/dist/chunks/{shadowedRuleDetection-Drf9u-db.js → shadowedRuleDetection-BWDwVkdP.js} +1 -1
- package/dist/chunks/{sideQuestion-BFd04Hpm.js → sideQuestion-BxdxvzE5.js} +2 -2
- package/dist/chunks/{sink-EtSaBh8E.js → sink-C0qjGZQ7.js} +2 -2
- package/dist/chunks/{sink-wb0QjAm7.js → sink-CwmSKi-f.js} +1 -1
- package/dist/chunks/{sinks-C7QBA6x8.js → sinks-DP4TXrIf.js} +1 -1
- package/dist/chunks/{skill-learning-CshrpvXr.js → skill-learning-BIDUFqPF.js} +7 -7
- package/dist/chunks/{skillChangeDetector-BXcvDT4K.js → skillChangeDetector-CHSWOerw.js} +5 -5
- package/dist/chunks/{skillGapStore-Ctpnj8SE.js → skillGapStore-Qh9JLx3Y.js} +4 -4
- package/dist/chunks/{skillGapStore-B0fBE8ju.js → skillGapStore-hl0-S_zE.js} +1 -1
- package/dist/chunks/{skillGenerator-DxHhQT_d.js → skillGenerator-DcUjuneC.js} +3 -3
- package/dist/chunks/{skillLearning-BQzbxDmM.js → skillLearning-DplYUMQo.js} +9 -9
- package/dist/chunks/{skillPanel-DrqDoWdh.js → skillPanel-DdQKt1IP.js} +5 -5
- package/dist/chunks/{skillSearchPanel-UXTLla11.js → skillSearchPanel-BWLFqREg.js} +2 -2
- package/dist/chunks/{skills-CKx64w0R.js → skills-C-7Qfe0X.js} +3 -3
- package/dist/chunks/{sprites-CmcTBNjG.js → sprites-CKFItufM.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-BGscCMCG.js} +4 -4
- package/dist/chunks/{stats-OQSoO8AA.js → stats-CwApMedu.js} +1 -1
- package/dist/chunks/{status-C2JI09Xw.js → status-DZaq2GnB.js} +1 -1
- package/dist/chunks/{statusNoticeHelpers-BGzUypnF.js → statusNoticeHelpers-DMp-bdUR.js} +1 -1
- package/dist/chunks/{tag-D7eNyLsL.js → tag-D0uIhfwI.js} +2 -2
- package/dist/chunks/{tasks-ji7qrtQZ.js → tasks-Dntdj_he.js} +1 -1
- package/dist/chunks/{teamHelpers-wA0wc9x7.js → teamHelpers-CS6BiyXo.js} +1 -1
- package/dist/chunks/{teamHelpers-C1EYvVG8.js → teamHelpers-DZPEdPcj.js} +1 -1
- package/dist/chunks/{teammateModeSnapshot-ChmbBeGY.js → teammateModeSnapshot-DwwGZmxV.js} +1 -1
- package/dist/chunks/{teammateModeSnapshot-D1C3CvY2.js → teammateModeSnapshot-wSzHvqXU.js} +1 -1
- package/dist/chunks/teleport-BgO5XUTS.js +3 -0
- package/dist/chunks/{templateJobs-juuqs5ID.js → templateJobs-By_fIrvy.js} +1 -1
- package/dist/chunks/{terminalSetup-DkW8kzTS.js → terminalSetup-BK7LahH5.js} +1 -1
- package/dist/chunks/{terminalSetup-YfKbBHG2.js → terminalSetup-BQDyPgSq.js} +1 -1
- package/dist/chunks/{theme-BZ0g686m.js → theme-a6ztF_07.js} +1 -1
- package/dist/chunks/{thinkback-BTvAN4SG.js → thinkback-a57hw1Dz.js} +4 -4
- package/dist/chunks/{thinkback-play-BJV9UsS_.js → thinkback-play-guqTStmo.js} +2 -2
- package/dist/chunks/{tmux-b0jmod-m.js → tmux-CqbuPVsI.js} +1 -1
- package/dist/chunks/{toolEventObserver-C0lzru27.js → toolEventObserver-BIoe2MAs.js} +1 -1
- package/dist/chunks/{toolEventObserver-BCMiKOMJ.js → toolEventObserver-D45tPv3F.js} +4 -4
- package/dist/chunks/{toolPool-BFpy26rC.js → toolPool-DdxWg47z.js} +2 -2
- package/dist/chunks/toolSearch-Di3gpeC0.js +3 -0
- package/dist/chunks/{trustedDevice-NWjic61P.js → trustedDevice-CgG7rtkW.js} +1 -1
- package/dist/chunks/{trustedDevice-BwB25RSK.js → trustedDevice-DEjXAOcz.js} +1 -1
- package/dist/chunks/udsClient-C0L2vH6O.js +79 -0
- package/dist/chunks/{ultrareviewCommand-Dm_UZkUI.js → ultrareviewCommand-BmmGo2kq.js} +4 -4
- package/dist/chunks/{undercover-3UBD5GtT.js → undercover-BVICZnNj.js} +2 -2
- package/dist/chunks/{undercover-BOjOeIVa.js → undercover-DQvQQ6yo.js} +1 -1
- package/dist/chunks/{updateCCB-gqr4tTHw.js → updateCCB-CTg-iLDL.js} +1 -1
- package/dist/chunks/{upgrade-D11LGswH.js → upgrade-DD8Sw-Am.js} +2 -2
- package/dist/chunks/{upload-DdAHsTCb.js → upload-BONHB_o1.js} +1 -1
- package/dist/chunks/{usage-BfgmPd0i.js → usage-Bpx-BQ_s.js} +1 -1
- package/dist/chunks/{usage-C-03An_-.js → usage-kee9LG0z.js} +1 -1
- package/dist/chunks/{useMainLoopModel-DYfWygEv.js → useMainLoopModel-Bq3koPFq.js} +2 -2
- package/dist/chunks/{useManagePlugins-D8K7TxOS.js → useManagePlugins-DT4FB9u2.js} +3 -3
- package/dist/chunks/{useMergedTools-JQNt6cB4.js → useMergedTools-ycEaiRuO.js} +2 -2
- package/dist/chunks/{useSearchInput-naZgTeTY.js → useSearchInput-BQwt8lhC.js} +1 -1
- package/dist/chunks/{useSettingsErrors-B_ON2uhq.js → useSettingsErrors-GLYWCTHJ.js} +1 -1
- package/dist/chunks/{useVoice-DjvY6q_C.js → useVoice-BqV1DBt-.js} +5 -5
- package/dist/chunks/{util-BwTRWVrl.js → util-DZxIhLjH.js} +10 -10
- package/dist/chunks/utils-CMcoQXdj.js +3 -0
- package/dist/chunks/{validatePlugin-CMOY-08u.js → validatePlugin-C3RXMbeg.js} +2 -2
- package/dist/chunks/{vim-AaHpII0z.js → vim-C_NuIV2X.js} +1 -1
- package/dist/chunks/{voice-I_niPDYx.js → voice-7aWPe3mC.js} +7 -7
- package/dist/chunks/{voiceModeEnabled-BZsBgRyY.js → voiceModeEnabled-C8WAlYqm.js} +1 -1
- package/dist/chunks/{voiceModeEnabled-DUmAjLGG.js → voiceModeEnabled-Cbo5eLWV.js} +1 -1
- package/dist/chunks/{voiceStreamSTT-B2yBe7t0.js → voiceStreamSTT-BtsMvGHm.js} +1 -1
- package/dist/chunks/{voiceStreamSTT-D78E5v0F.js → voiceStreamSTT-DmNYqjnW.js} +1 -1
- package/dist/chunks/{workerRegistry-RMvzN7sg.js → workerRegistry-fMzqsXVQ.js} +2 -2
- package/dist/chunks/{worktree-TqvDjo2A.js → worktree-C5Z0ICmn.js} +1 -1
- package/dist/chunks/{xml-CsdP7fK7.js → xml-DbZZp8Zy.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-BDjSp8Wo.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-D6AN11Tb.js} +0 -0
- /package/dist/chunks/{SearchBox-iXol4xrV.js → SearchBox-EHswnASB.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-BNo0gNh0.js} +0 -0
- /package/dist/chunks/{attributionTrailer-BRzn4tt-.js → attributionTrailer-CP4i-6R-.js} +0 -0
- /package/dist/chunks/{autoModeDenials-DdxIfUGy.js → autoModeDenials-DR83Ic7k.js} +0 -0
- /package/dist/chunks/{bedrockClient-a4lkLst1.js → bedrockClient-BCB39ib8.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-BEQIzaku.js} +0 -0
- /package/dist/chunks/{chromeNativeHost-Q6-G2bfy.js → chromeNativeHost-PnkUYqVg.js} +0 -0
- /package/dist/chunks/{claudeDesktop-WVwxxFNt.js → claudeDesktop-OsHcw1WR.js} +0 -0
- /package/dist/chunks/{cleanup-fEkK-hKc.js → cleanup-BJtntvv2.js} +0 -0
- /package/dist/chunks/{cliLaunch-CzauAJZe.js → cliLaunch-aWiCQf9j.js} +0 -0
- /package/dist/chunks/{connectHeadless-CCqvGWfL.js → connectHeadless-DOzENfOw.js} +0 -0
- /package/dist/chunks/{controlMessageCompat-DWv-mIPh.js → controlMessageCompat-BRVmRRA9.js} +0 -0
- /package/dist/chunks/{dangerousBackend-MjbASa5S.js → dangerousBackend-BlamCaXf.js} +0 -0
- /package/dist/chunks/{directoryCompletion-B8RCZO2J.js → directoryCompletion-BU0Dlg1v.js} +0 -0
- /package/dist/chunks/{earlyInput-BsKnIDJP.js → earlyInput-CATfkVKA.js} +0 -0
- /package/dist/chunks/{eventLoopStallDetector-C2lxypdX.js → eventLoopStallDetector-PpqOz7LN.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-CZIxcl4l.js} +0 -0
- /package/dist/chunks/{fpsMetrics-Di0G8OGw.js → fpsMetrics-Cl8mZ9J8.js} +0 -0
- /package/dist/chunks/{fuse-Df9YUVtR.js → fuse-BhjvaeDO.js} +0 -0
- /package/dist/chunks/{instinctParser-Dez-rnKK.js → instinctParser-DCTNGiAi.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-CcfaKXD7.js} +0 -0
- /package/dist/chunks/{modalContext-D2kC2GcE.js → modalContext-7wVG_JCR.js} +0 -0
- /package/dist/chunks/{observationStore-DtE97mP4.js → observationStore-BBBlD6y4.js} +0 -0
- /package/dist/chunks/{openai-U_owM0Wc.js → openai-DlVQAfwt.js} +0 -0
- /package/dist/chunks/{operations-ChPHc8e6.js → operations-Dv3d6vA6.js} +0 -0
- /package/dist/chunks/{output-style-BXQs3dnJ.js → output-style-R8UZLOIE.js} +0 -0
- /package/dist/chunks/{parseConnectUrl-MYfoAQ1a.js → parseConnectUrl-B7utf1Ba.js} +0 -0
- /package/dist/chunks/{poller-CJzreIZS.js → poller-BuKApY06.js} +0 -0
- /package/dist/chunks/{postCommitAttribution-DmuxexP6.js → postCommitAttribution-DbNo_b3T.js} +0 -0
- /package/dist/chunks/{projectContext-CEnG2izP.js → projectContext-CWwagotk.js} +0 -0
- /package/dist/chunks/{prompt-BnKv9_mj.js → prompt-rbaI_D5u.js} +0 -0
- /package/dist/chunks/{renderOptions-CHpHxRwl.js → renderOptions-DwPtvyyC.js} +0 -0
- /package/dist/chunks/{rewind-Ddhd2R_A.js → rewind-tscYe98H.js} +0 -0
- /package/dist/chunks/{rollback-Gt4wFMPp.js → rollback-CXcDCnEi.js} +0 -0
- /package/dist/chunks/{sanitization-CYd1OuBT.js → sanitization-DECVPK2r.js} +0 -0
- /package/dist/chunks/{sdkHeapDumpMonitor-BTcjJax2.js → sdkHeapDumpMonitor-D2snXOzY.js} +0 -0
- /package/dist/chunks/{server-DBPAty_m.js → server-ig2-DfTA.js} +0 -0
- /package/dist/chunks/{serverBanner-Bq43BqnP.js → serverBanner-BHbp5t4w.js} +0 -0
- /package/dist/chunks/{serverLog-C1qKA5fJ.js → serverLog-zxAMuJ_O.js} +0 -0
- /package/dist/chunks/{sessionDataUploader-Bnnb2afa.js → sessionDataUploader-FV9CZw0s.js} +0 -0
- /package/dist/chunks/{sessionManager-CprPE_HT.js → sessionManager-CuHQQSdR.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-BSHQcTCI.js} +0 -0
- /package/dist/chunks/{stdio-CWDcxFu0.js → stdio-CWFOXyFI.js} +0 -0
- /package/dist/chunks/{stickers-4SNqAchz.js → stickers-C_Uob58C.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-CYkpYjQW.js} +0 -0
- /package/dist/chunks/{voice-CSkrOZl_.js → voice-CESv02rP.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 };
|