@sma1lboy/rove 0.9.233 → 0.9.235
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/cli/{chunk-d0adxews.js → chunk-0zw48p9x.js} +1 -1
- package/dist/cli/{chunk-a7hqgm8g.js → chunk-1w0f6nwt.js} +1 -1
- package/dist/cli/{chunk-zfn6dpxe.js → chunk-2feb7nm1.js} +1 -1
- package/dist/cli/{chunk-dk4bmghv.js → chunk-3p25cfk6.js} +1 -1
- package/dist/cli/{chunk-9cag613z.js → chunk-5eahs4kq.js} +1 -1
- package/dist/cli/{chunk-wdd9mnzk.js → chunk-5pysnwwt.js} +1 -1
- package/dist/cli/{chunk-pqwvpz53.js → chunk-64989q8t.js} +1 -1
- package/dist/cli/{chunk-cs3983h3.js → chunk-6qwavs32.js} +2 -2
- package/dist/cli/{chunk-ssesergf.js → chunk-71eh8zxk.js} +1 -1
- package/dist/cli/{chunk-tj5qmh2g.js → chunk-7anb5ccs.js} +1 -1
- package/dist/cli/{chunk-0rbwce1k.js → chunk-7kgbpb1n.js} +1 -1
- package/dist/cli/{chunk-5z2tdym5.js → chunk-96zpykhh.js} +1 -1
- package/dist/cli/{chunk-zw1b01d2.js → chunk-c1vk0qqp.js} +1 -1
- package/dist/cli/{chunk-pcpy3m7v.js → chunk-cag06v9q.js} +2 -2
- package/dist/cli/{chunk-1h5d3bbd.js → chunk-ckw9s3k2.js} +1 -1
- package/dist/cli/{chunk-hwphz6f3.js → chunk-ds1v5hks.js} +1 -1
- package/dist/cli/{chunk-vhhje5qd.js → chunk-dva20e0r.js} +1 -1
- package/dist/cli/{chunk-r7yb0avb.js → chunk-ea89xq93.js} +2 -2
- package/dist/cli/{chunk-99k5cb3p.js → chunk-g9y16p97.js} +1 -1
- package/dist/cli/{chunk-wptsk473.js → chunk-hkzkgz43.js} +1 -1
- package/dist/cli/{chunk-3h6m4hkd.js → chunk-mepaft1h.js} +2 -2
- package/dist/cli/{chunk-zvm2rr33.js → chunk-nh7se9a8.js} +1 -1
- package/dist/cli/{chunk-pw474gbs.js → chunk-phnbbes6.js} +1 -1
- package/dist/cli/{chunk-gjhvrq91.js → chunk-q2f9e4cd.js} +1 -1
- package/dist/cli/{chunk-nrzes9c0.js → chunk-q5nhtv2d.js} +1 -1
- package/dist/cli/{chunk-m3qwq4cm.js → chunk-r0ywe406.js} +1 -1
- package/dist/cli/{chunk-q0y084ed.js → chunk-rg1zepqc.js} +1 -1
- package/dist/cli/{chunk-2w5drtzr.js → chunk-stj893kr.js} +1 -1
- package/dist/cli/{chunk-qh1st9y5.js → chunk-td70csh2.js} +1 -1
- package/dist/cli/{chunk-5b5kd1x0.js → chunk-w3q55kw5.js} +1 -1
- package/dist/cli/{chunk-gdh1enas.js → chunk-w61t7067.js} +1 -1
- package/dist/cli/{chunk-2e55pfag.js → chunk-wsjn1t8r.js} +1 -1
- package/dist/cli/{chunk-0ptb5hv7.js → chunk-xgn3w868.js} +13 -13
- package/dist/cli/{chunk-a48m5zvk.js → chunk-ytdmaec3.js} +1 -1
- package/dist/cli/{chunk-65nhmfy8.js → chunk-zs4krncr.js} +1 -1
- package/dist/cli/index.js +3 -3
- package/dist/cli/kobe.js +1 -1
- package/dist/cli/rove.js +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{resolveLoginShell}from"./chunk-exfyqsdd.js";import{recommendedGlobalInstallCommand}from"./chunk-
|
|
2
|
+
import{resolveLoginShell}from"./chunk-exfyqsdd.js";import{recommendedGlobalInstallCommand}from"./chunk-w3q55kw5.js";function updaterShell(deps={}){let platform=deps.platform??process.platform;if(platform!=="win32")return"sh";return resolveLoginShell({fallback:"/bin/sh",platform,env:deps.env,exists:deps.exists})}function updaterShellFailureHint(deps={}){if((deps.platform??process.platform)!=="win32")return null;return["The update script is POSIX shell. Rove runs it through Git for Windows'","bash \u2014 the same shell every engine and terminal tab launches through.","Install Git for Windows (https://git-scm.com/download/win), or update","by hand:",` ${recommendedGlobalInstallCommand()}`,""].join(`
|
|
3
3
|
`)}
|
|
4
4
|
export{updaterShell,updaterShellFailureHint};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{discoverMachine}from"./chunk-ww4fbx8h.js";import{RemoteOrchestrator}from"./chunk-
|
|
2
|
+
import{discoverMachine}from"./chunk-ww4fbx8h.js";import{RemoteOrchestrator}from"./chunk-3p25cfk6.js";import{startTunnel}from"./chunk-7txq91d9.js";import{dedupeMachines,duplicateAliasOf,listMachines,readMachines,setMachineIdentity,updateMachine}from"./chunk-bs7v83x0.js";import"./chunk-nh4wvyz3.js";import"./chunk-k6nxyxyh.js";import"./chunk-h4n8ffqy.js";import"./chunk-6xppe9bj.js";import"./chunk-wtqxv2rv.js";import"./chunk-pz907kve.js";import"./chunk-xy8be792.js";import"./chunk-w3q55kw5.js";import"./chunk-40dgv828.js";import{loadStateFile}from"./chunk-zyd6k6ak.js";import"./chunk-8hbtca1g.js";import"./chunk-hq2n27y1.js";import"./chunk-sb0ns0c7.js";import"./chunk-vnpqemb0.js";import"./chunk-9prawccj.js";import{createStateCell}from"./chunk-nhakrm1f.js";import{KobeDaemonClient}from"./chunk-qagek3wg.js";import"./chunk-544bwsss.js";import"./chunk-hqbmzz4t.js";import{logClient,logClientError}from"./chunk-3es6spp4.js";import"./chunk-pw6yfj10.js";import"./chunk-f10n6063.js";import"./chunk-y8fqdnh3.js";import"./chunk-hq4b3fca.js";import"./chunk-wqfp8d9w.js";class MachineHub{local;slots=new Map;machinesAcc=createStateCell([],"machines.status");mergedAcc=createStateCell([],"machines.tasks");localUnsubscribe=null;disposed=!1;constructor(local){this.local=local}machinesSignal(){return this.machinesAcc}tasksSignal(){if(this.slots.size===0)return this.local.tasksSignal();return this.mergedAcc}remoteTaskIds(){let ids=new Set;for(let slot of this.slots.values())for(let task of slot.tasks)ids.add(String(task.id));return ids}attach(){let entries=dedupeMachines(listMachines());if(entries.length===0)return;for(let entry of entries)this.slots.set(entry.alias,{entry,tasks:[]});this.publishStatuses(),this.localUnsubscribe=this.local.tasksSignal().subscribe(()=>this.republishTasks()),this.republishTasks();for(let entry of entries)this.connect(entry)}async connect(entry){let slot=this.slots.get(entry.alias);if(!slot||this.disposed)return;let found=await discoverMachine(entry.alias,entry);if(this.disposed)return;let sockets=found.ok?{daemon:found.status.socketPath,pty:found.status.ptySocketPath}:entry.sockets;if(!sockets){this.setStatus(entry.alias,{state:"offline",error:found.ok?void 0:found.message});return}if(found.ok)updateMachine(entry.alias,{sockets});let tunnel=startTunnel({alias:entry.alias,config:entry,remoteDaemonSocket:sockets.daemon,remotePtySocket:sockets.pty});if(slot.tunnel=tunnel,tunnel.state()==="unsupported"){this.setStatus(entry.alias,{state:"unsupported",error:"SSH unix-socket forwarding is not available on Windows"});return}if(tunnel.onState((state)=>{if(state==="online")this.openOrchestrator(entry,tunnel);else if(state==="offline")this.setStatus(entry.alias,{state:"offline"}),this.republishTasks()}),tunnel.state()==="online")await this.openOrchestrator(entry,tunnel)}async openOrchestrator(entry,tunnel){let slot=this.slots.get(entry.alias);if(!slot||this.disposed||slot.orchestrator)return;let client=new KobeDaemonClient(tunnel.daemonSocketPath),orchestrator=new RemoteOrchestrator(client,{role:"gui",expectForeignHome:!0,onPeerIdentity:(peer)=>this.onPeerIdentity(entry.alias,peer)});slot.orchestrator=orchestrator;try{await orchestrator.init()}catch(err){let message=err instanceof Error?err.message:String(err);this.setStatus(entry.alias,{state:classifyHandshakeFailure(message),error:message}),logClientError("machines",err);return}let stopTasks=orchestrator.tasksSignal().subscribe(()=>{slot.tasks=orchestrator.tasksSignal().get(),this.republishTasks()}),stopConnection=orchestrator.connectionStateSignal().subscribe(()=>{let connected=orchestrator.connectionStateSignal().get()==="online";if(this.slots.get(entry.alias)!==slot)return;this.setStatus(entry.alias,{state:connected?"online":"offline"}),this.republishTasks()});slot.unsubscribe=()=>{stopTasks(),stopConnection()},slot.tasks=orchestrator.tasksSignal().get(),this.setStatus(entry.alias,{state:"online",version:orchestrator.daemonVersionSignal().get()??void 0}),this.republishTasks(),logClient("machines",`${entry.alias} online (${slot.tasks.length} tasks)`)}onPeerIdentity(alias,peer){if(!peer.hostname&&!peer.homeDir)return;let identity={hostname:peer.hostname,homeDir:peer.homeDir,daemonPid:peer.daemonPid};setMachineIdentity(alias,identity);let duplicate=duplicateAliasOf(readMachines(loadStateFile()),alias,identity);this.setStatus(alias,{hostname:peer.hostname||void 0,version:peer.kobeVersion||void 0,...duplicate?{duplicateOf:duplicate}:{}})}setStatus(alias,patch){let next=this.machinesAcc.get().map((row)=>row.alias===alias?{...row,...patch}:row);this.machinesAcc.set(next)}publishStatuses(){this.machinesAcc.set([...this.slots.values()].map((slot)=>({alias:slot.entry.alias,hostLabel:slot.entry.alias,state:"connecting"})))}republishTasks(){let merged=this.local.tasksSignal().get().map((task)=>stampOrigin(task,"local","local"));for(let slot of this.slots.values()){let status=this.machinesAcc.get().find((row)=>row.alias===slot.entry.alias);if(status?.duplicateOf)continue;let hostLabel=status?.hostLabel||slot.entry.alias,stale=status?.state!=="online";for(let task of slot.tasks)merged.push(stampOrigin(task,slot.entry.alias,hostLabel,stale))}this.mergedAcc.set(merged)}dispose(){this.disposed=!0,this.localUnsubscribe?.();for(let slot of this.slots.values())slot.unsubscribe?.(),slot.orchestrator?.dispose(),slot.tunnel?.stop();this.slots.clear()}}function classifyHandshakeFailure(message){return/protocol v\d/i.test(message)?"mismatch":"offline"}function stampOrigin(task,machineId,hostLabel,stale=!1){return{...task,origin:{machineId,hostLabel,...stale?{stale:!0}:{}}}}export{classifyHandshakeFailure,MachineHub};
|