@sma1lboy/rove 0.9.196 → 0.9.197
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-pn8n5337.js → chunk-151e0hdm.js} +1 -1
- package/dist/cli/{chunk-ckmjmata.js → chunk-1dd1h64w.js} +1 -1
- package/dist/cli/{chunk-6zwv7ght.js → chunk-1dvk8k4t.js} +1 -1
- package/dist/cli/{chunk-gzb71t55.js → chunk-467s029g.js} +1 -1
- package/dist/cli/{chunk-tfpw31v2.js → chunk-48mveswg.js} +1 -1
- package/dist/cli/{chunk-z6tm9svv.js → chunk-4n1yds3y.js} +1 -1
- package/dist/cli/{chunk-1mccpcrg.js → chunk-4tv9vgwp.js} +1 -1
- package/dist/cli/{chunk-hykh89d9.js → chunk-6amqr8vs.js} +1 -1
- package/dist/cli/{chunk-4c83htw2.js → chunk-6mqsm8t9.js} +1 -1
- package/dist/cli/{chunk-8rg38fq5.js → chunk-6t0rj7bf.js} +1 -1
- package/dist/cli/{chunk-24mfhdhv.js → chunk-6yfkm32y.js} +1 -1
- package/dist/cli/{chunk-mrm0p3jx.js → chunk-7atht8k1.js} +1 -1
- package/dist/cli/{chunk-e803hkkq.js → chunk-8htkv9kd.js} +1 -1
- package/dist/cli/{chunk-cswym6jd.js → chunk-91bc8n0h.js} +2 -2
- package/dist/cli/{chunk-xn986hn6.js → chunk-94jkey0h.js} +1 -1
- package/dist/cli/{chunk-jchxs2w6.js → chunk-ax0fk856.js} +1 -1
- package/dist/cli/{chunk-bqpbprb6.js → chunk-cvsqsf6p.js} +1 -1
- package/dist/cli/{chunk-fc8jtpq5.js → chunk-d7hr2jks.js} +1 -1
- package/dist/cli/{chunk-2pf63t41.js → chunk-dj161zdt.js} +1 -1
- package/dist/cli/{chunk-9zaz5by0.js → chunk-ercqyycv.js} +1 -1
- package/dist/cli/{chunk-xycn7fvg.js → chunk-f97hbn4b.js} +1 -1
- package/dist/cli/{chunk-r7rb2txn.js → chunk-fhds10kn.js} +1 -1
- package/dist/cli/{chunk-8yxbfm8p.js → chunk-fpqpmszm.js} +1 -1
- package/dist/cli/{chunk-qw707fq7.js → chunk-fxkamrb5.js} +1 -1
- package/dist/cli/{chunk-etf0vgry.js → chunk-g9j5ateg.js} +2 -2
- package/dist/cli/{chunk-fy7m06tc.js → chunk-gxazefj8.js} +1 -1
- package/dist/cli/{chunk-kpf012j2.js → chunk-jmqttxwj.js} +1 -1
- package/dist/cli/{chunk-6wv15xmv.js → chunk-jye42vh7.js} +1 -1
- package/dist/cli/{chunk-add3p95d.js → chunk-kdbsc4ap.js} +1 -1
- package/dist/cli/{chunk-58ke204z.js → chunk-kdr5qrga.js} +1 -1
- package/dist/cli/{chunk-sqnrd72g.js → chunk-mkt74d74.js} +1 -1
- package/dist/cli/{chunk-75m9rbr5.js → chunk-mn9mpc52.js} +2 -2
- package/dist/cli/{chunk-xbze970v.js → chunk-mz2ppnp5.js} +1 -1
- package/dist/cli/{chunk-ybwb5k90.js → chunk-n0510hra.js} +1 -1
- package/dist/cli/{chunk-dqemtamw.js → chunk-n2vvwxsh.js} +3 -3
- package/dist/cli/{chunk-ch1pvacq.js → chunk-nh7k3af8.js} +2 -2
- package/dist/cli/{chunk-vyhx5nqr.js → chunk-qj4wbfsn.js} +1 -1
- package/dist/cli/{chunk-crem8tnp.js → chunk-qrb102ms.js} +1 -1
- package/dist/cli/{chunk-3gv2khha.js → chunk-rrkkkc97.js} +1 -1
- package/dist/cli/{chunk-4er0sjve.js → chunk-ry2ztajh.js} +2 -2
- package/dist/cli/{chunk-6vf0dyza.js → chunk-sn1fvs9r.js} +2 -2
- package/dist/cli/{chunk-azhajh0p.js → chunk-wsecz7jj.js} +1 -1
- package/dist/cli/{chunk-jt3rv2yj.js → chunk-wypff3pn.js} +1 -1
- package/dist/cli/{chunk-z0x49jfv.js → chunk-ynssqhyz.js} +1 -1
- package/dist/cli/{chunk-1g1z82a1.js → chunk-ywgqcfk1.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,2 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{API_VERBS,RETIRED_VERBS,VERBS,VERB_ALIASES,VERB_GROUPS,findVerb,unknownVerbError}from"./chunk-
|
|
2
|
+
import{API_VERBS,RETIRED_VERBS,VERBS,VERB_ALIASES,VERB_GROUPS,findVerb,unknownVerbError}from"./chunk-n2vvwxsh.js";import"./chunk-c8xm2s8h.js";import"./chunk-ac0yv0v4.js";import"./chunk-wsecz7jj.js";import"./chunk-3e5n28t6.js";import"./chunk-xb9b93ts.js";import"./chunk-ztwz2465.js";import"./chunk-r2pztgm6.js";import"./chunk-bq9shn2d.js";import"./chunk-63wmhbqs.js";import"./chunk-qkehg2c1.js";import"./chunk-wypff3pn.js";import"./chunk-fpqpmszm.js";import"./chunk-91bc8n0h.js";import"./chunk-dg8bsyb9.js";import"./chunk-2apszxn2.js";import"./chunk-g2advs8t.js";import"./chunk-gsy8xfh6.js";import"./chunk-rcyasw34.js";import"./chunk-7q67dz4c.js";import"./chunk-v3fqkype.js";import"./chunk-hape5vwj.js";import"./chunk-b99tf0jr.js";import"./chunk-f7zjggfv.js";import"./chunk-w25b7xxz.js";import"./chunk-6xppe9bj.js";import"./chunk-072m1jjt.js";import"./chunk-z7c6nap0.js";import"./chunk-fczqwtmq.js";import"./chunk-te8g5azg.js";import"./chunk-y13681dw.js";import"./chunk-b5mbpv97.js";import"./chunk-re5ke4fz.js";import"./chunk-mnqxgvyb.js";import"./chunk-ax0fk856.js";import"./chunk-1dvk8k4t.js";import"./chunk-x2c7ehve.js";import"./chunk-22jgttzv.js";import"./chunk-sdyzxayr.js";import"./chunk-1dd1h64w.js";import"./chunk-kdbsc4ap.js";import"./chunk-kx3kydwv.js";import"./chunk-w7zv47mp.js";import"./chunk-khj0apc7.js";import"./chunk-6yfkm32y.js";import"./chunk-jvxh93nz.js";import"./chunk-2brn8e1y.js";import"./chunk-r92b9j14.js";import"./chunk-aep7gvh4.js";import"./chunk-7kysxgbq.js";import"./chunk-krpsfcda.js";import"./chunk-xy8be792.js";import"./chunk-9ydhv2zb.js";import"./chunk-40dgv828.js";import"./chunk-3jh78dmc.js";import"./chunk-ddcxvbme.js";import"./chunk-0q6h4vt4.js";import"./chunk-pw6yfj10.js";import"./chunk-05jej26n.js";import"./chunk-81p6mm0p.js";import"./chunk-q5jhy3t8.js";import"./chunk-t915by6w.js";import"./chunk-f10n6063.js";import"./chunk-9prawccj.js";import"./chunk-8cjr5ypt.js";import"./chunk-00ehck55.js";import"./chunk-fxs82dsx.js";import"./chunk-sb0ns0c7.js";import"./chunk-hq4b3fca.js";import"./chunk-pxk2c2vj.js";import"./chunk-wqfp8d9w.js";export{unknownVerbError,findVerb,VERB_GROUPS,VERB_ALIASES,VERBS,RETIRED_VERBS,API_VERBS};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{discoverMachine}from"./chunk-z9hgw8hw.js";import{startTunnel}from"./chunk-k371m3p6.js";import{dedupeMachines,duplicateAliasOf,listMachines,readMachines,setMachineIdentity,updateMachine}from"./chunk-qjaqvn88.js";import{RemoteOrchestrator}from"./chunk-
|
|
2
|
+
import{discoverMachine}from"./chunk-z9hgw8hw.js";import{startTunnel}from"./chunk-k371m3p6.js";import{dedupeMachines,duplicateAliasOf,listMachines,readMachines,setMachineIdentity,updateMachine}from"./chunk-qjaqvn88.js";import{RemoteOrchestrator}from"./chunk-f97hbn4b.js";import"./chunk-k6nxyxyh.js";import"./chunk-h4n8ffqy.js";import"./chunk-6xppe9bj.js";import"./chunk-te8g5azg.js";import"./chunk-y13681dw.js";import{KobeDaemonClient}from"./chunk-b5mbpv97.js";import"./chunk-re5ke4fz.js";import"./chunk-mnqxgvyb.js";import{createStateCell}from"./chunk-sdyzxayr.js";import"./chunk-6yfkm32y.js";import"./chunk-xy8be792.js";import"./chunk-40dgv828.js";import{loadStateFile}from"./chunk-3jh78dmc.js";import"./chunk-ddcxvbme.js";import{logClient,logClientError}from"./chunk-0q6h4vt4.js";import"./chunk-pw6yfj10.js";import"./chunk-q5jhy3t8.js";import"./chunk-t915by6w.js";import"./chunk-f10n6063.js";import"./chunk-9prawccj.js";import"./chunk-8cjr5ypt.js";import"./chunk-sb0ns0c7.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{stampOrigin,classifyHandshakeFailure,MachineHub};
|