@kdonev/termscape 0.1.3 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -3
- package/dist/agents/polling.d.ts +31 -0
- package/dist/agents/polling.d.ts.map +1 -0
- package/dist/agents/polling.js +65 -0
- package/dist/agents/polling.js.map +1 -0
- package/dist/agents/profiles.d.ts +18 -3
- package/dist/agents/profiles.d.ts.map +1 -1
- package/dist/agents/profiles.js +86 -0
- package/dist/agents/profiles.js.map +1 -1
- package/dist/agents/shares.d.ts +32 -0
- package/dist/agents/shares.d.ts.map +1 -0
- package/dist/agents/shares.js +46 -0
- package/dist/agents/shares.js.map +1 -0
- package/dist/agents/wiring.d.ts +8 -0
- package/dist/agents/wiring.d.ts.map +1 -1
- package/dist/agents/wiring.js +87 -10
- package/dist/agents/wiring.js.map +1 -1
- package/dist/cli-args.d.ts +61 -0
- package/dist/cli-args.d.ts.map +1 -0
- package/dist/cli-args.js +35 -0
- package/dist/cli-args.js.map +1 -0
- package/dist/cli.js +10 -17
- package/dist/cli.js.map +1 -1
- package/dist/db/migrations.d.ts.map +1 -1
- package/dist/db/migrations.js +48 -0
- package/dist/db/migrations.js.map +1 -1
- package/dist/db/store.d.ts +14 -1
- package/dist/db/store.d.ts.map +1 -1
- package/dist/db/store.js +61 -0
- package/dist/db/store.js.map +1 -1
- package/dist/debug.d.ts +11 -0
- package/dist/debug.d.ts.map +1 -0
- package/dist/debug.js +45 -0
- package/dist/debug.js.map +1 -0
- package/dist/folders.d.ts +33 -0
- package/dist/folders.d.ts.map +1 -0
- package/dist/folders.js +88 -0
- package/dist/folders.js.map +1 -0
- package/dist/hub.d.ts +128 -3
- package/dist/hub.d.ts.map +1 -1
- package/dist/hub.js +495 -41
- package/dist/hub.js.map +1 -1
- package/dist/hub.tgz +0 -0
- package/dist/mcp/server.d.ts +2 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +38 -5
- package/dist/mcp/server.js.map +1 -1
- package/dist/protocol/domain.d.ts +74 -0
- package/dist/protocol/domain.d.ts.map +1 -1
- package/dist/protocol/domain.js +58 -0
- package/dist/protocol/domain.js.map +1 -1
- package/dist/protocol/index.d.ts +1 -0
- package/dist/protocol/index.d.ts.map +1 -1
- package/dist/protocol/index.js +1 -0
- package/dist/protocol/index.js.map +1 -1
- package/dist/protocol/mcp-tools.d.ts +4 -0
- package/dist/protocol/mcp-tools.d.ts.map +1 -1
- package/dist/protocol/mcp-tools.js +16 -2
- package/dist/protocol/mcp-tools.js.map +1 -1
- package/dist/protocol/mouse.d.ts +54 -0
- package/dist/protocol/mouse.d.ts.map +1 -0
- package/dist/protocol/mouse.js +187 -0
- package/dist/protocol/mouse.js.map +1 -0
- package/dist/protocol/peer.d.ts +42 -1
- package/dist/protocol/peer.d.ts.map +1 -1
- package/dist/protocol/peer.js +57 -2
- package/dist/protocol/peer.js.map +1 -1
- package/dist/protocol/ws.d.ts +115 -2
- package/dist/protocol/ws.d.ts.map +1 -1
- package/dist/protocol/ws.js +71 -1
- package/dist/protocol/ws.js.map +1 -1
- package/dist/remote/deployer.d.ts.map +1 -1
- package/dist/remote/deployer.js +5 -1
- package/dist/remote/deployer.js.map +1 -1
- package/dist/remote/join-script.d.ts.map +1 -1
- package/dist/remote/join-script.js +156 -31
- package/dist/remote/join-script.js.map +1 -1
- package/dist/remote/peer-serve.d.ts +19 -2
- package/dist/remote/peer-serve.d.ts.map +1 -1
- package/dist/remote/peer-serve.js +87 -6
- package/dist/remote/peer-serve.js.map +1 -1
- package/dist/remote/registry.d.ts +10 -0
- package/dist/remote/registry.d.ts.map +1 -1
- package/dist/remote/registry.js +31 -5
- package/dist/remote/registry.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +262 -12
- package/dist/server.js.map +1 -1
- package/dist/session/manager.d.ts +23 -0
- package/dist/session/manager.d.ts.map +1 -1
- package/dist/session/manager.js +42 -0
- package/dist/session/manager.js.map +1 -1
- package/dist/session/pty.d.ts +1 -1
- package/dist/session/pty.d.ts.map +1 -1
- package/dist/session/pty.js +14 -0
- package/dist/session/pty.js.map +1 -1
- package/package.json +1 -1
- package/web/assets/index-Z03Ta4g3.js +111 -0
- package/web/assets/index-u_uCiaPD.css +1 -0
- package/web/index.html +2 -2
- package/web/assets/index-CHlXyCCd.css +0 -1
- package/web/assets/index-DTl8am-O.js +0 -111
|
@@ -307,8 +307,20 @@ fi
|
|
|
307
307
|
|
|
308
308
|
# --- join -------------------------------------------------------------------
|
|
309
309
|
step 4/4 "connecting to $HUB_URL"
|
|
310
|
+
# --opt=value, not --opt value, and it is not a style choice: an enrollment
|
|
311
|
+
# token is base64url, whose alphabet includes '-', so one token in sixty-four
|
|
312
|
+
# begins with a dash. Node's parseArgs runs in strict mode and refuses a
|
|
313
|
+
# separate argument that looks like another option, which made roughly 1.5% of
|
|
314
|
+
# joins die with ERR_PARSE_ARGS_INVALID_OPTION_VALUE after the install had
|
|
315
|
+
# already finished. The '=' form has no such ambiguity.
|
|
316
|
+
#
|
|
317
|
+
# Still nohup with stdout redirected, unlike the PowerShell half, which had to
|
|
318
|
+
# stop doing that to keep the hub attached to a console. That fix is for a
|
|
319
|
+
# Windows problem and only a Windows problem: a pty here is a pty whether or
|
|
320
|
+
# not the process that opened it has a controlling terminal, so detaching
|
|
321
|
+
# costs nothing and the daemon behaviour is worth more.
|
|
310
322
|
TERMSCAPE_HOME="$HOME_DIR" nohup "$NODE_BIN" "$HOME_DIR/hub/dist/cli.js" \\
|
|
311
|
-
--headless --port 0 --join
|
|
323
|
+
--headless --port 0 --join="$HUB_URL" --join-token="$JOIN_TOKEN" \\
|
|
312
324
|
>"$HOME_DIR/hub.log" 2>&1 &
|
|
313
325
|
HUB_PID=$!
|
|
314
326
|
|
|
@@ -436,45 +448,135 @@ function Invoke-Ticking($label, $exe, $argString, $log) {
|
|
|
436
448
|
return $p.ExitCode
|
|
437
449
|
}
|
|
438
450
|
|
|
439
|
-
# A hub from an earlier join is still running and
|
|
440
|
-
#
|
|
441
|
-
#
|
|
442
|
-
#
|
|
451
|
+
# A hub from an earlier join is still running, and Windows never kills a
|
|
452
|
+
# process's children with it: force-killing only node.exe left every terminal
|
|
453
|
+
# it opened - the ConPTY conhost.exe and the shell or agent inside it - still
|
|
454
|
+
# holding the install directory open, so Remove-Item failed with "something
|
|
455
|
+
# still has a file open there" even though the hub itself was gone. This walks
|
|
456
|
+
# the whole tree instead: the hub's own pid (or pids), everything descended
|
|
457
|
+
# from them, and anything else with a handle on $hubDir, however it got there.
|
|
443
458
|
function Stop-RunningHub($hubDir) {
|
|
444
459
|
$pidFile = Join-Path $HomeDir 'hub.pid'
|
|
445
|
-
|
|
460
|
+
|
|
461
|
+
# One snapshot: walking a tree against a process list that can change under
|
|
462
|
+
# us would either miss a child or, worse, follow a pid that has already been
|
|
463
|
+
# recycled into something unrelated.
|
|
464
|
+
$all = @(Get-CimInstance Win32_Process -ErrorAction SilentlyContinue)
|
|
465
|
+
$byPid = @{}
|
|
466
|
+
$byParent = @{}
|
|
467
|
+
# CIM hands pids back as UInt32, and a hashtable never matches a UInt32 key
|
|
468
|
+
# against the Int32 read from hub.pid - so every key is an [int].
|
|
469
|
+
foreach ($proc in $all) {
|
|
470
|
+
$byPid[[int]$proc.ProcessId] = $proc
|
|
471
|
+
$pp = [int]$proc.ParentProcessId
|
|
472
|
+
if ($byParent.ContainsKey($pp)) { $byParent[$pp] += $proc } else { $byParent[$pp] = @($proc) }
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
# Root pids: the hub recorded in hub.pid, even if it is no longer running -
|
|
476
|
+
# its orphans still carry it as their ParentProcessId - plus the existing
|
|
477
|
+
# fallback for a hub that predates the pid file or lost it: a node.exe still
|
|
478
|
+
# pointing at this install.
|
|
479
|
+
$roots = @()
|
|
446
480
|
|
|
447
481
|
if (Test-Path $pidFile) {
|
|
448
482
|
$recorded = (Get-Content $pidFile -Raw).Trim()
|
|
449
483
|
if ($recorded -match '^\\d+$') {
|
|
450
|
-
$
|
|
451
|
-
if ($
|
|
484
|
+
$rpid = [int]$recorded
|
|
485
|
+
if ($byPid.ContainsKey($rpid)) {
|
|
486
|
+
$roots += @{ Pid = $rpid; Since = $byPid[$rpid].CreationDate }
|
|
487
|
+
} else {
|
|
488
|
+
# The hub is already dead, so there is no CreationDate to anchor the
|
|
489
|
+
# pid-reuse guard below on. The pid file's own write time stands in
|
|
490
|
+
# for it instead - a few seconds early, since the hub wrote the file
|
|
491
|
+
# before it went on to start anything.
|
|
492
|
+
$since = $null
|
|
493
|
+
try { $since = (Get-Item $pidFile).LastWriteTime.AddSeconds(-5) } catch {}
|
|
494
|
+
$roots += @{ Pid = $rpid; Since = $since }
|
|
495
|
+
}
|
|
452
496
|
}
|
|
453
497
|
}
|
|
454
498
|
|
|
455
|
-
#
|
|
456
|
-
#
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
499
|
+
# Only when hub.pid names no live hub, as before: an agent CLI started by a
|
|
500
|
+
# hub on this same machine carries ~/.termscape/run/... on its command line,
|
|
501
|
+
# and matching it here would kill its whole tree.
|
|
502
|
+
$liveRoot = @($roots | Where-Object { $byPid.ContainsKey($_.Pid) }).Count -gt 0
|
|
503
|
+
$seenRoots = @($roots | ForEach-Object { $_.Pid })
|
|
504
|
+
foreach ($proc in $all) {
|
|
505
|
+
if ($liveRoot) { break }
|
|
506
|
+
if ($proc.Name -ne 'node.exe' -or -not $proc.CommandLine) { continue }
|
|
507
|
+
if ($seenRoots -contains [int]$proc.ProcessId) { continue }
|
|
508
|
+
if ($proc.CommandLine -like "*$hubDir*" -or $proc.CommandLine -like "*$HomeDir*") {
|
|
509
|
+
$roots += @{ Pid = [int]$proc.ProcessId; Since = $proc.CreationDate }
|
|
510
|
+
}
|
|
464
511
|
}
|
|
465
512
|
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
513
|
+
# Walk descendants breadth-first. $order records the discovery order so
|
|
514
|
+
# roots - enqueued first - end up last once it is reversed below, which is
|
|
515
|
+
# what puts every descendant ahead of the root that started it without
|
|
516
|
+
# having to track depth explicitly.
|
|
517
|
+
$victims = @{}
|
|
518
|
+
$order = New-Object System.Collections.Generic.List[int]
|
|
519
|
+
$frontier = New-Object System.Collections.Generic.Queue[object]
|
|
520
|
+
foreach ($r in $roots) { $frontier.Enqueue($r) }
|
|
521
|
+
|
|
522
|
+
while ($frontier.Count -gt 0) {
|
|
523
|
+
$cur = $frontier.Dequeue()
|
|
524
|
+
if ($cur.Pid -eq $PID -or $victims.ContainsKey($cur.Pid)) { continue }
|
|
525
|
+
$victims[$cur.Pid] = $true
|
|
526
|
+
$order.Add($cur.Pid)
|
|
527
|
+
$children = $byParent[$cur.Pid]
|
|
528
|
+
if (-not $children) { continue }
|
|
529
|
+
foreach ($child in $children) {
|
|
530
|
+
$cpid = [int]$child.ProcessId
|
|
531
|
+
if ($cpid -eq $PID -or $victims.ContainsKey($cpid)) { continue }
|
|
532
|
+
# Pid reuse guard: a child counts only if Windows created it at or
|
|
533
|
+
# after its parent (or the parent is dead and $cur.Since is the pid
|
|
534
|
+
# file's write time standing in for that, from above).
|
|
535
|
+
if ($cur.Since -and $child.CreationDate -and $child.CreationDate -lt $cur.Since) { continue }
|
|
536
|
+
$frontier.Enqueue(@{ Pid = $cpid; Since = $child.CreationDate })
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
# Anything with a handle open inside the install folder, whatever its
|
|
541
|
+
# parent - this is what catches node-pty's bundled OpenConsole.exe if it is
|
|
542
|
+
# ever enabled, and an orphan from a hub that started before the pid file
|
|
543
|
+
# existed at all.
|
|
544
|
+
foreach ($proc in $all) {
|
|
545
|
+
$spid = [int]$proc.ProcessId
|
|
546
|
+
if ($spid -eq $PID -or $victims.ContainsKey($spid)) { continue }
|
|
547
|
+
if ($proc.ExecutablePath -like "*$hubDir*" -or $proc.CommandLine -like "*$hubDir*") {
|
|
548
|
+
$victims[$spid] = $true
|
|
549
|
+
$order.Add($spid)
|
|
474
550
|
}
|
|
475
551
|
}
|
|
476
|
-
|
|
477
|
-
if ($
|
|
552
|
+
|
|
553
|
+
if ($order.Count -gt 0) {
|
|
554
|
+
$rootPids = @($roots | ForEach-Object { $_.Pid })
|
|
555
|
+
$childCount = $order.Count - $rootPids.Count
|
|
556
|
+
if ($rootPids.Count -gt 0 -and $childCount -gt 0) {
|
|
557
|
+
$plural = if ($childCount -eq 1) { '' } else { 'es' }
|
|
558
|
+
Note "stopping the hub already running here (pid $($rootPids -join ', ')) and its $childCount terminal process$plural"
|
|
559
|
+
} elseif ($rootPids.Count -gt 0) {
|
|
560
|
+
Note "stopping the hub already running here (pid $($rootPids -join ', '))"
|
|
561
|
+
} else {
|
|
562
|
+
# No live root and no dead one recorded either - only stray processes
|
|
563
|
+
# still pointing at this folder, from step 4's sweep.
|
|
564
|
+
$plural = if ($order.Count -eq 1) { '' } else { 'es' }
|
|
565
|
+
Note "stopping $($order.Count) leftover process$plural from an earlier hub"
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
$order.Reverse()
|
|
569
|
+
foreach ($vpid in $order) {
|
|
570
|
+
$proc = Get-Process -Id $vpid -ErrorAction SilentlyContinue
|
|
571
|
+
if (-not $proc) { continue }
|
|
572
|
+
try { $proc.CloseMainWindow() | Out-Null } catch {}
|
|
573
|
+
Stop-Process -Id $vpid -Force -ErrorAction SilentlyContinue
|
|
574
|
+
try { $proc.WaitForExit(10000) | Out-Null } catch {}
|
|
575
|
+
}
|
|
576
|
+
# Windows releases the file handles a moment after the processes go.
|
|
577
|
+
Start-Sleep -Milliseconds 750
|
|
578
|
+
}
|
|
579
|
+
|
|
478
580
|
Remove-Item $pidFile -Force -ErrorAction SilentlyContinue
|
|
479
581
|
}
|
|
480
582
|
|
|
@@ -586,9 +688,26 @@ if (Test-Path $hubDir) {
|
|
|
586
688
|
try {
|
|
587
689
|
Remove-Item -Recurse -Force $hubDir
|
|
588
690
|
} catch {
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
691
|
+
# A late child can still turn up during the first sweep, and Windows
|
|
692
|
+
# releases handles a moment after the process holding them goes - so one
|
|
693
|
+
# more sweep and a short wait usually finishes what the first one missed.
|
|
694
|
+
Stop-RunningHub $hubDir
|
|
695
|
+
Start-Sleep -Seconds 1
|
|
696
|
+
try {
|
|
697
|
+
Remove-Item -Recurse -Force $hubDir
|
|
698
|
+
} catch {
|
|
699
|
+
# Captured first: the pipelines below rebind $_.
|
|
700
|
+
$removeError = $_.Exception.Message
|
|
701
|
+
$holders = @(Get-CimInstance Win32_Process -ErrorAction SilentlyContinue |
|
|
702
|
+
Where-Object { $_.ExecutablePath -like "*$hubDir*" -or $_.CommandLine -like "*$hubDir*" })
|
|
703
|
+
$holderText = 'something'
|
|
704
|
+
if ($holders) {
|
|
705
|
+
$holderText = ($holders | ForEach-Object { "$($_.Name) (pid $($_.ProcessId))" }) -join ', '
|
|
706
|
+
}
|
|
707
|
+
Fail ("Could not replace the previous install at $hubDir - $holderText still has a file open there." + [Environment]::NewLine +
|
|
708
|
+
"Close it and re-run this command." + [Environment]::NewLine +
|
|
709
|
+
$removeError)
|
|
710
|
+
}
|
|
592
711
|
}
|
|
593
712
|
}
|
|
594
713
|
New-Item -ItemType Directory -Force -Path $hubDir | Out-Null
|
|
@@ -673,10 +792,16 @@ Pop-Location
|
|
|
673
792
|
Step '4/4' "connecting to $HubUrl"
|
|
674
793
|
$hubLog = Join-Path $HomeDir 'hub.log'
|
|
675
794
|
$env:TERMSCAPE_HOME = $HomeDir
|
|
795
|
+
# Two things here are deliberate and neither is obvious.
|
|
796
|
+
#
|
|
676
797
|
# cli.js is named absolutely so this hub is findable in the process list by
|
|
677
798
|
# the install it came from - which is how a later re-join knows what to stop.
|
|
799
|
+
#
|
|
800
|
+
# --opt=value rather than two arguments: a base64url token may begin with a
|
|
801
|
+
# dash, and Node's strict parseArgs refuses a separate value that looks like
|
|
802
|
+
# an option. See the POSIX half for what that cost.
|
|
678
803
|
$cliArgs = '"' + (Join-Path $hubDir 'dist/cli.js') + '"' +
|
|
679
|
-
' --headless --port 0 --join
|
|
804
|
+
' --headless --port 0 --join="' + $HubUrl + '" --join-token="' + $JoinToken + '"'
|
|
680
805
|
$hubProc = Start-Process -FilePath $NodeExe -ArgumentList $cliArgs -PassThru \`
|
|
681
806
|
-WorkingDirectory $hubDir -RedirectStandardOutput $hubLog \`
|
|
682
807
|
-RedirectStandardError (Join-Path $HomeDir 'hub.err.log') -WindowStyle Hidden
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"join-script.js","sourceRoot":"","sources":["../../src/remote/join-script.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,kFAAkF;AAClF,SAAS,EAAE,CAAC,CAAS;IACnB,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;AACzC,CAAC;AAED,uEAAuE;AACvE,MAAM,SAAS,GAAG,sCAAsC,CAAC;AAEzD,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,KAAa;IAC3D,OAAO;kDACyC,MAAM;;;UAG9C,EAAE,CAAC,MAAM,CAAC;aACP,EAAE,CAAC,KAAK,CAAC;;YAEV,EAAE,CAAC,SAAS,CAAC
|
|
1
|
+
{"version":3,"file":"join-script.js","sourceRoot":"","sources":["../../src/remote/join-script.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,kFAAkF;AAClF,SAAS,EAAE,CAAC,CAAS;IACnB,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;AACzC,CAAC;AAED,uEAAuE;AACvE,MAAM,SAAS,GAAG,sCAAsC,CAAC;AAEzD,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,KAAa;IAC3D,OAAO;kDACyC,MAAM;;;UAG9C,EAAE,CAAC,MAAM,CAAC;aACP,EAAE,CAAC,KAAK,CAAC;;YAEV,EAAE,CAAC,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsUxB,CAAC;AACF,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAc,EAAE,KAAa;IAChE,OAAO,mDAAmD,MAAM;;;;eAInD,EAAE,CAAC,MAAM,CAAC;eACV,EAAE,CAAC,KAAK,CAAC;;eAET,EAAE,CAAC,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAue3B,CAAC;AACF,CAAC"}
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import { type PeerAgent, type PeerRelayAsk } from '../protocol/index.js';
|
|
2
2
|
import type { WebSocket } from 'ws';
|
|
3
3
|
import type { Hub } from '../hub.js';
|
|
4
|
+
/**
|
|
5
|
+
* A relayed spawn waits for a real PTY to start, possibly on a third machine
|
|
6
|
+
* the canvas still has to reach — longer than any other ask gets. No deadlock
|
|
7
|
+
* from holding it open that long: when the canvas turns this into a
|
|
8
|
+
* `startSession` frame down the same socket, this hub's own message handler
|
|
9
|
+
* serves that independently of the relay awaiting its result.
|
|
10
|
+
*/
|
|
11
|
+
export declare const SPAWN_RELAY_TIMEOUT_MS = 60000;
|
|
4
12
|
/**
|
|
5
13
|
* The link back to the canvas, as the rest of this hub needs it. Separated
|
|
6
14
|
* from the serving machinery because a hub that owns a canvas has no uplink at
|
|
@@ -11,8 +19,17 @@ export interface Uplink {
|
|
|
11
19
|
readonly attached: boolean;
|
|
12
20
|
/** Agents the canvas has told us about. Never this hub's own. */
|
|
13
21
|
agents(): PeerAgent[];
|
|
14
|
-
/**
|
|
15
|
-
|
|
22
|
+
/**
|
|
23
|
+
* What the canvas calls this machine, or null before its first `directory`
|
|
24
|
+
* has arrived. This hub holds no row for itself — only the canvas does —
|
|
25
|
+
* so this is the only way it can answer `host: 'local'`/`'self'` about its
|
|
26
|
+
* own agents, or recognise a spawn_agent `host` naming itself.
|
|
27
|
+
*/
|
|
28
|
+
hostLabel(): string | null;
|
|
29
|
+
/** Ask the canvas to act on something we cannot resolve ourselves. */
|
|
30
|
+
ask<T>(ask: PeerRelayAsk, opts?: {
|
|
31
|
+
timeoutMs?: number;
|
|
32
|
+
}): Promise<T>;
|
|
16
33
|
}
|
|
17
34
|
export interface PeerServer extends Uplink {
|
|
18
35
|
/** Wire one accepted or dialled socket into this hub. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peer-serve.d.ts","sourceRoot":"","sources":["../../src/remote/peer-serve.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"peer-serve.d.ts","sourceRoot":"","sources":["../../src/remote/peer-serve.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,YAAY,EAQlB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAwBrC;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAE7C;;;;GAIG;AACH,MAAM,WAAW,MAAM;IACrB,mDAAmD;IACnD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,iEAAiE;IACjE,MAAM,IAAI,SAAS,EAAE,CAAC;IACtB;;;;;OAKG;IACH,SAAS,IAAI,MAAM,GAAG,IAAI,CAAC;IAC3B,sEAAsE;IACtE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACtE;AAED,MAAM,WAAW,UAAW,SAAQ,MAAM;IACxC,yDAAyD;IACzD,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IAC/D,0CAA0C;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,IAAI,IAAI,CAAC;CAClB;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,GAAG,UAAU,CAmX1E"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
|
-
import {
|
|
2
|
+
import { homedir } from 'node:os';
|
|
3
|
+
import { PeerRequest, PEER_SCHEMA_VERSION, describeInput, describeLatin1, describeModeChanges, describeSnapshotModes, } from '../protocol/index.js';
|
|
3
4
|
import { HUB_VERSION } from '../hub.js';
|
|
5
|
+
import { debug, debugOn } from '../debug.js';
|
|
6
|
+
import { checkFolder } from '../folders.js';
|
|
4
7
|
/**
|
|
5
8
|
* The answering half of the hub-to-hub link: it serves requests about *this*
|
|
6
9
|
* hub's sessions and pushes its state changes.
|
|
@@ -19,6 +22,14 @@ import { HUB_VERSION } from '../hub.js';
|
|
|
19
22
|
*/
|
|
20
23
|
/** How long a relayed ask waits for the canvas to report what happened. */
|
|
21
24
|
const RELAY_TIMEOUT_MS = 15_000;
|
|
25
|
+
/**
|
|
26
|
+
* A relayed spawn waits for a real PTY to start, possibly on a third machine
|
|
27
|
+
* the canvas still has to reach — longer than any other ask gets. No deadlock
|
|
28
|
+
* from holding it open that long: when the canvas turns this into a
|
|
29
|
+
* `startSession` frame down the same socket, this hub's own message handler
|
|
30
|
+
* serves that independently of the relay awaiting its result.
|
|
31
|
+
*/
|
|
32
|
+
export const SPAWN_RELAY_TIMEOUT_MS = 60_000;
|
|
22
33
|
export function createPeerServer(hub, clientToken) {
|
|
23
34
|
const sockets = new Set();
|
|
24
35
|
/** Which addresses each peer asked to stream output for. */
|
|
@@ -29,6 +40,8 @@ export function createPeerServer(hub, clientToken) {
|
|
|
29
40
|
* cannot linger here.
|
|
30
41
|
*/
|
|
31
42
|
let directory = [];
|
|
43
|
+
/** What the canvas calls this machine, from the same `directory` frame. */
|
|
44
|
+
let youAre = null;
|
|
32
45
|
/** Asks sent to the canvas and still waiting for their answer. */
|
|
33
46
|
const relays = new Map();
|
|
34
47
|
const send = (ws, msg) => {
|
|
@@ -60,6 +73,15 @@ export function createPeerServer(hub, clientToken) {
|
|
|
60
73
|
const s = hub.sessions.get(sessionId);
|
|
61
74
|
if (!s)
|
|
62
75
|
return;
|
|
76
|
+
// Logged before the attachment check, deliberately: a program that turned
|
|
77
|
+
// mouse tracking on while no canvas was watching still turned it on, and
|
|
78
|
+
// a trace that only shows what was forwarded cannot tell that from a
|
|
79
|
+
// program that never asked.
|
|
80
|
+
if (debugOn('output')) {
|
|
81
|
+
const modes = describeModeChanges(chunk);
|
|
82
|
+
if (modes)
|
|
83
|
+
debug('output', `${s.address} program set ${modes}`);
|
|
84
|
+
}
|
|
63
85
|
for (const ws of sockets) {
|
|
64
86
|
if (attached.get(ws)?.has(s.address)) {
|
|
65
87
|
send(ws, { t: 'output', address: s.address, data: chunk });
|
|
@@ -119,6 +141,8 @@ export function createPeerServer(hub, clientToken) {
|
|
|
119
141
|
// Replaced wholesale: this is the canvas's whole view, minus our
|
|
120
142
|
// own agents, and a merge would keep agents it has dropped.
|
|
121
143
|
directory = req.agents;
|
|
144
|
+
if (req.youAre !== undefined)
|
|
145
|
+
youAre = req.youAre;
|
|
122
146
|
return ok({ agents: req.agents.length });
|
|
123
147
|
case 'relayResult': {
|
|
124
148
|
const p = relays.get(req.relayId);
|
|
@@ -152,8 +176,17 @@ export function createPeerServer(hub, clientToken) {
|
|
|
152
176
|
}
|
|
153
177
|
case 'startSession': {
|
|
154
178
|
let ws = hub.store.getWorkspaceByName(req.workspaceName);
|
|
155
|
-
if (!ws)
|
|
156
|
-
|
|
179
|
+
if (!ws) {
|
|
180
|
+
// Resolved against this machine's home, never its cwd — which
|
|
181
|
+
// the join installer leaves at the hub's own install directory
|
|
182
|
+
// (join-script.ts), not anywhere a person would mean by a
|
|
183
|
+
// relative workspace root. Doing it here, before
|
|
184
|
+
// createWorkspace, means a bad root fails with the real reason
|
|
185
|
+
// instead of being glued under the wrong base and reported as
|
|
186
|
+
// one indecipherable path.
|
|
187
|
+
const { path } = checkFolder(req.rootPath, { base: homedir() });
|
|
188
|
+
ws = hub.createWorkspace(req.workspaceName, path, null);
|
|
189
|
+
}
|
|
157
190
|
// `profile` is an agent id here, not a template: the canvas
|
|
158
191
|
// resolved the template on its own side precisely because the two
|
|
159
192
|
// machines do not share config. The model and effort arrive as
|
|
@@ -213,8 +246,22 @@ export function createPeerServer(hub, clientToken) {
|
|
|
213
246
|
const t = hub.sessions.getByAddress(req.address);
|
|
214
247
|
if (t) {
|
|
215
248
|
const snap = hub.sessions.snapshotForAttach(t.id);
|
|
216
|
-
if (snap)
|
|
249
|
+
if (snap) {
|
|
250
|
+
// What the canvas's window will be holding the moment it
|
|
251
|
+
// opens. The serializer replays the tracking mode but not the
|
|
252
|
+
// encoding one, so a snapshot can restore `?1003h` without
|
|
253
|
+
// `?1006h` and leave the window sending X10 reports to a
|
|
254
|
+
// program that had been getting SGR.
|
|
255
|
+
debug('attach', `attach ${req.address} ${snap.cols}x${snap.rows} ` +
|
|
256
|
+
`snapshot restores: ${describeSnapshotModes(snap.serialized)}`);
|
|
217
257
|
send(socket, { t: 'output', address: req.address, data: snap.serialized });
|
|
258
|
+
}
|
|
259
|
+
else {
|
|
260
|
+
debug('attach', `attach ${req.address}, no snapshot`);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
debug('attach', `attach ${req.address} REFUSED: no such agent here`);
|
|
218
265
|
}
|
|
219
266
|
return ok({ attached: req.address });
|
|
220
267
|
}
|
|
@@ -223,6 +270,25 @@ export function createPeerServer(hub, clientToken) {
|
|
|
223
270
|
return ok({ detached: req.address });
|
|
224
271
|
case 'input': {
|
|
225
272
|
const t = hub.sessions.getByAddress(req.address);
|
|
273
|
+
/*
|
|
274
|
+
* The far end of a remote wheel, and the last place it can be
|
|
275
|
+
* lost quietly.
|
|
276
|
+
*
|
|
277
|
+
* `req.id` is the id the canvas minted for this request, so this
|
|
278
|
+
* line and the canvas's `hub -> peer` line are the same event
|
|
279
|
+
* seen from both machines. If the canvas logged the send and this
|
|
280
|
+
* never appears, the loss is on the link; if this appears with a
|
|
281
|
+
* different byte count or a doubled coordinate, the loss is the
|
|
282
|
+
* encoding.
|
|
283
|
+
*/
|
|
284
|
+
if (debugOn('input')) {
|
|
285
|
+
const what = req.encoding === 'binary'
|
|
286
|
+
? describeLatin1(req.data)
|
|
287
|
+
: describeInput(Buffer.from(req.data, 'utf8'));
|
|
288
|
+
debug('input', `peer -> pty ${req.id} ${req.address} ` +
|
|
289
|
+
`encoding=${req.encoding ?? 'utf8(default)'} ` +
|
|
290
|
+
`${t ? `session=${t.id}` : 'NO SUCH AGENT'}: ${what}`);
|
|
291
|
+
}
|
|
226
292
|
if (!t)
|
|
227
293
|
return err(`no agent at address "${req.address}"`);
|
|
228
294
|
// `binary` carries bytes one per code unit; anything else, including
|
|
@@ -237,11 +303,21 @@ export function createPeerServer(hub, clientToken) {
|
|
|
237
303
|
}
|
|
238
304
|
case 'resize': {
|
|
239
305
|
const t = hub.sessions.getByAddress(req.address);
|
|
306
|
+
debug('attach', `resize ${req.address} -> ${req.cols}x${req.rows}` +
|
|
307
|
+
(t ? '' : ' REFUSED: no such agent here'));
|
|
240
308
|
if (!t)
|
|
241
309
|
return err(`no agent at address "${req.address}"`);
|
|
242
310
|
hub.sessions.resize(t.id, req.cols, req.rows);
|
|
243
311
|
return ok({ ok: true });
|
|
244
312
|
}
|
|
313
|
+
case 'checkFolder':
|
|
314
|
+
// A throw here is already turned into `err` by the catch below,
|
|
315
|
+
// which is what lets the Add/Edit-workspace dialog on the canvas
|
|
316
|
+
// show the real reason — "does not exist", "not a folder", or the
|
|
317
|
+
// wrong-platform message — instead of a guess made on a machine
|
|
318
|
+
// that cannot see this one's filesystem. `homedir()`, never
|
|
319
|
+
// `cwd()`: the same reasoning as `startSession` above.
|
|
320
|
+
return ok(checkFolder(req.path, { base: homedir() }));
|
|
245
321
|
}
|
|
246
322
|
}
|
|
247
323
|
catch (e) {
|
|
@@ -255,6 +331,8 @@ export function createPeerServer(hub, clientToken) {
|
|
|
255
331
|
// otherwise sit there until the timeout for no reason.
|
|
256
332
|
if (sockets.size === 0) {
|
|
257
333
|
directory = [];
|
|
334
|
+
// Not `youAre`: a link drop is not the canvas renaming this machine,
|
|
335
|
+
// and the next reconnect gets a fresh `directory` anyway.
|
|
258
336
|
for (const [, p] of relays) {
|
|
259
337
|
clearTimeout(p.timer);
|
|
260
338
|
p.reject(new Error('the link to the canvas closed'));
|
|
@@ -274,12 +352,15 @@ export function createPeerServer(hub, clientToken) {
|
|
|
274
352
|
agents() {
|
|
275
353
|
return sockets.size > 0 ? directory : [];
|
|
276
354
|
},
|
|
355
|
+
hostLabel() {
|
|
356
|
+
return youAre;
|
|
357
|
+
},
|
|
277
358
|
/**
|
|
278
359
|
* Hand something to the canvas to do. Only the canvas knows where every
|
|
279
360
|
* address on it lives, so this is the only way an agent here reaches one
|
|
280
361
|
* anywhere else — including on the machine the canvas itself runs on.
|
|
281
362
|
*/
|
|
282
|
-
ask(ask) {
|
|
363
|
+
ask(ask, opts = {}) {
|
|
283
364
|
const socket = [...sockets].find((ws) => ws.readyState === ws.OPEN);
|
|
284
365
|
if (!socket)
|
|
285
366
|
return Promise.reject(new Error('not attached to a canvas'));
|
|
@@ -288,7 +369,7 @@ export function createPeerServer(hub, clientToken) {
|
|
|
288
369
|
const timer = setTimeout(() => {
|
|
289
370
|
relays.delete(relayId);
|
|
290
371
|
reject(new Error('the canvas did not answer'));
|
|
291
|
-
}, RELAY_TIMEOUT_MS);
|
|
372
|
+
}, opts.timeoutMs ?? RELAY_TIMEOUT_MS);
|
|
292
373
|
relays.set(relayId, { resolve: (v) => resolve(v), reject, timer });
|
|
293
374
|
send(socket, { t: 'relay', relayId, ask });
|
|
294
375
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peer-serve.js","sourceRoot":"","sources":["../../src/remote/peer-serve.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"peer-serve.js","sourceRoot":"","sources":["../../src/remote/peer-serve.ts"],"names":[],"mappings":"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"}
|
|
@@ -168,5 +168,15 @@ export declare class PeerRegistry extends EventEmitter {
|
|
|
168
168
|
requestShutdown(hostId: string): Promise<boolean>;
|
|
169
169
|
stopSession(address: string): Promise<void>;
|
|
170
170
|
readScreen(address: string, lines?: number): Promise<unknown>;
|
|
171
|
+
/**
|
|
172
|
+
* Ask a peer whether a folder makes sense there, before a workspace
|
|
173
|
+
* pointing at it is created. Only that machine can resolve a path in its
|
|
174
|
+
* own platform's flavour and stat the result, so this is the
|
|
175
|
+
* Add/Edit-workspace dialog's pre-flight for a remote workspace, the same
|
|
176
|
+
* guard `startSession` uses for reachability.
|
|
177
|
+
*/
|
|
178
|
+
checkFolder(hostId: string, path: string): Promise<{
|
|
179
|
+
path: string;
|
|
180
|
+
}>;
|
|
171
181
|
}
|
|
172
182
|
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/remote/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EACV,gBAAgB,EAChB,IAAI,EACJ,SAAS,EAET,OAAO,EACP,UAAU,EACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,KAAK,EAAE,SAAS,IAAI,QAAQ,EAAE,MAAM,IAAI,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,CAAC,EAAE,OAAO,EACV,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAChD,OAAO,CAMT;AAED;;;;;;;GAOG;AACH,qBAAa,YAAa,SAAQ,YAAY;IA6B1C,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IApCpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqC;IAC3D,mEAAmE;IACnE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2C;IAClE;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAyC;IACtE;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0C;IAClE;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0C;gBAG/C,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,MAAM;IACnC;;;;;OAKG;IACc,iBAAiB,GAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAiB;IAOrF,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc;IAM3D;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,GAAG,cAAc;IAM/E,OAAO,CAAC,MAAM;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/remote/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/remote/registry.js
CHANGED
|
@@ -165,9 +165,12 @@ export class PeerRegistry extends EventEmitter {
|
|
|
165
165
|
peer.on('output', (address, data) => {
|
|
166
166
|
this.emit('output', address, data);
|
|
167
167
|
});
|
|
168
|
-
// An agent over there acting on
|
|
169
|
-
// We do it — we are the only hub that knows
|
|
170
|
-
// canvas lives — and the answer goes
|
|
168
|
+
// An agent over there acting on something its own hub cannot resolve.
|
|
169
|
+
// We do it — we are the only hub that knows what every machine on this
|
|
170
|
+
// canvas is and where every address on it lives — and the answer goes
|
|
171
|
+
// back over the same link. `host.id` travels with it so the handler can
|
|
172
|
+
// mark `you` and apply the `local` alias for a caller that is not on this
|
|
173
|
+
// machine at all.
|
|
171
174
|
peer.on('relay', (relayId, ask) => {
|
|
172
175
|
this.emit('relay', ask, (ok, result, error) => {
|
|
173
176
|
void peer
|
|
@@ -177,7 +180,7 @@ export class PeerRegistry extends EventEmitter {
|
|
|
177
180
|
// relay timeout is what tells its agent, and there is nothing
|
|
178
181
|
// useful to do about it here.
|
|
179
182
|
});
|
|
180
|
-
});
|
|
183
|
+
}, host.id);
|
|
181
184
|
});
|
|
182
185
|
this.peers.set(host.id, peer);
|
|
183
186
|
this.remote.set(host.id, new Map());
|
|
@@ -284,8 +287,16 @@ export class PeerRegistry extends EventEmitter {
|
|
|
284
287
|
for (const [hostId, peer] of this.peers) {
|
|
285
288
|
if (!peer.connected)
|
|
286
289
|
continue;
|
|
290
|
+
const host = this.store.listHosts().find((h) => h.id === hostId);
|
|
287
291
|
void peer
|
|
288
|
-
.request({
|
|
292
|
+
.request({
|
|
293
|
+
t: 'directory',
|
|
294
|
+
id: randomUUID(),
|
|
295
|
+
agents: forHost(hostId),
|
|
296
|
+
// What that host is called, so it can answer for itself without a
|
|
297
|
+
// row of its own — only the canvas holds one.
|
|
298
|
+
youAre: host?.label,
|
|
299
|
+
})
|
|
289
300
|
.catch(() => {
|
|
290
301
|
// A host that dropped mid-announce gets the current directory when
|
|
291
302
|
// it reconnects, which is the same thing a moment later.
|
|
@@ -479,5 +490,20 @@ export class PeerRegistry extends EventEmitter {
|
|
|
479
490
|
throw new Error(`no agent at address "${address}"`);
|
|
480
491
|
return found.peer.request({ t: 'readScreen', id: randomUUID(), address, lines });
|
|
481
492
|
}
|
|
493
|
+
/**
|
|
494
|
+
* Ask a peer whether a folder makes sense there, before a workspace
|
|
495
|
+
* pointing at it is created. Only that machine can resolve a path in its
|
|
496
|
+
* own platform's flavour and stat the result, so this is the
|
|
497
|
+
* Add/Edit-workspace dialog's pre-flight for a remote workspace, the same
|
|
498
|
+
* guard `startSession` uses for reachability.
|
|
499
|
+
*/
|
|
500
|
+
async checkFolder(hostId, path) {
|
|
501
|
+
const peer = this.peers.get(hostId);
|
|
502
|
+
if (!peer)
|
|
503
|
+
throw new Error(`host ${hostId} is not connected`);
|
|
504
|
+
if (!peer.connected)
|
|
505
|
+
throw new Error(`host ${hostId} is not connected`);
|
|
506
|
+
return peer.request({ t: 'checkFolder', id: randomUUID(), path });
|
|
507
|
+
}
|
|
482
508
|
}
|
|
483
509
|
//# sourceMappingURL=registry.js.map
|