@blue-soda/dsh-remote 0.5.6 → 0.5.8
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 +14 -3
- package/cordis.patch.yml +30 -30
- package/dist/client.github.js +1 -1
- package/dist/client.js +1 -1
- package/dist/index.js +1216 -396
- package/dist/index.js.map +4 -4
- package/dsh-plugin.json +41 -41
- package/package.json +165 -165
- package/dist/acp.d.ts +0 -75
- package/dist/acp.d.ts.map +0 -1
- package/dist/acp.js +0 -61
- package/dist/acp.js.map +0 -1
- package/dist/api-proxy-switch.d.ts +0 -33
- package/dist/api-proxy-switch.d.ts.map +0 -1
- package/dist/api-proxy-switch.js +0 -109
- package/dist/api-proxy-switch.js.map +0 -1
- package/dist/atomic-file.d.ts +0 -16
- package/dist/atomic-file.d.ts.map +0 -1
- package/dist/atomic-file.js +0 -81
- package/dist/atomic-file.js.map +0 -1
- package/dist/bin/doctor.d.ts +0 -3
- package/dist/bin/doctor.d.ts.map +0 -1
- package/dist/bin/doctor.js +0 -13
- package/dist/bin/doctor.js.map +0 -1
- package/dist/cli.d.ts +0 -32
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -289
- package/dist/cli.js.map +0 -1
- package/dist/client-runtime.d.ts +0 -375
- package/dist/client-runtime.d.ts.map +0 -1
- package/dist/client-runtime.js +0 -1768
- package/dist/client-runtime.js.map +0 -1
- package/dist/client-secure-transport.d.ts +0 -23
- package/dist/client-secure-transport.d.ts.map +0 -1
- package/dist/client-secure-transport.js +0 -144
- package/dist/client-secure-transport.js.map +0 -1
- package/dist/client-target-store.d.ts +0 -40
- package/dist/client-target-store.d.ts.map +0 -1
- package/dist/client-target-store.js +0 -79
- package/dist/client-target-store.js.map +0 -1
- package/dist/client.d.ts +0 -13
- package/dist/client.d.ts.map +0 -1
- package/dist/codex/app-server.d.ts +0 -71
- package/dist/codex/app-server.d.ts.map +0 -1
- package/dist/codex/app-server.js +0 -268
- package/dist/codex/app-server.js.map +0 -1
- package/dist/codex/codex-image-codec.d.ts +0 -7
- package/dist/codex/codex-image-codec.d.ts.map +0 -1
- package/dist/codex/codex-image-codec.js +0 -288
- package/dist/codex/codex-image-codec.js.map +0 -1
- package/dist/codex/domain.d.ts +0 -102
- package/dist/codex/domain.d.ts.map +0 -1
- package/dist/codex/domain.js +0 -1323
- package/dist/codex/domain.js.map +0 -1
- package/dist/codex/method-policy.d.ts +0 -338
- package/dist/codex/method-policy.d.ts.map +0 -1
- package/dist/codex/method-policy.js +0 -141
- package/dist/codex/method-policy.js.map +0 -1
- package/dist/codex/peer-bridge.d.ts +0 -57
- package/dist/codex/peer-bridge.d.ts.map +0 -1
- package/dist/codex/peer-bridge.js +0 -299
- package/dist/codex/peer-bridge.js.map +0 -1
- package/dist/codex/permissions.d.ts +0 -4
- package/dist/codex/permissions.d.ts.map +0 -1
- package/dist/codex/permissions.js +0 -21
- package/dist/codex/permissions.js.map +0 -1
- package/dist/codex/session-id.d.ts +0 -10
- package/dist/codex/session-id.d.ts.map +0 -1
- package/dist/codex/session-id.js +0 -15
- package/dist/codex/session-id.js.map +0 -1
- package/dist/codex/virtual-harness.d.ts +0 -209
- package/dist/codex/virtual-harness.d.ts.map +0 -1
- package/dist/codex/virtual-harness.js +0 -2650
- package/dist/codex/virtual-harness.js.map +0 -1
- package/dist/codex-workspace-bridge.d.ts +0 -108
- package/dist/codex-workspace-bridge.d.ts.map +0 -1
- package/dist/codex-workspace-bridge.js +0 -502
- package/dist/codex-workspace-bridge.js.map +0 -1
- package/dist/config.d.ts +0 -99
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -127
- package/dist/config.js.map +0 -1
- package/dist/connection-controller.d.ts +0 -44
- package/dist/connection-controller.d.ts.map +0 -1
- package/dist/connection-controller.js +0 -185
- package/dist/connection-controller.js.map +0 -1
- package/dist/control-route.d.ts +0 -34
- package/dist/control-route.d.ts.map +0 -1
- package/dist/control-route.js +0 -136
- package/dist/control-route.js.map +0 -1
- package/dist/control-runtime.d.ts +0 -138
- package/dist/control-runtime.d.ts.map +0 -1
- package/dist/control-runtime.js +0 -543
- package/dist/control-runtime.js.map +0 -1
- package/dist/control-stream.d.ts +0 -67
- package/dist/control-stream.d.ts.map +0 -1
- package/dist/control-stream.js +0 -179
- package/dist/control-stream.js.map +0 -1
- package/dist/defaults.d.ts +0 -9
- package/dist/defaults.d.ts.map +0 -1
- package/dist/defaults.js +0 -9
- package/dist/defaults.js.map +0 -1
- package/dist/file-viewer-bridge.d.ts +0 -30
- package/dist/file-viewer-bridge.d.ts.map +0 -1
- package/dist/file-viewer-bridge.js +0 -128
- package/dist/file-viewer-bridge.js.map +0 -1
- package/dist/file-viewer-contract.d.ts +0 -5
- package/dist/file-viewer-contract.d.ts.map +0 -1
- package/dist/file-viewer-contract.js +0 -4
- package/dist/file-viewer-contract.js.map +0 -1
- package/dist/harness-api-bridge.d.ts +0 -81
- package/dist/harness-api-bridge.d.ts.map +0 -1
- package/dist/harness-api-bridge.js +0 -862
- package/dist/harness-api-bridge.js.map +0 -1
- package/dist/harness-api-history.d.ts +0 -3
- package/dist/harness-api-history.d.ts.map +0 -1
- package/dist/harness-api-history.js +0 -59
- package/dist/harness-api-history.js.map +0 -1
- package/dist/harness-remote-bridge.d.ts +0 -60
- package/dist/harness-remote-bridge.d.ts.map +0 -1
- package/dist/harness-remote-bridge.js +0 -540
- package/dist/harness-remote-bridge.js.map +0 -1
- package/dist/harness-version.d.ts +0 -23
- package/dist/harness-version.d.ts.map +0 -1
- package/dist/harness-version.js +0 -95
- package/dist/harness-version.js.map +0 -1
- package/dist/identity-store.d.ts +0 -45
- package/dist/identity-store.d.ts.map +0 -1
- package/dist/identity-store.js +0 -186
- package/dist/identity-store.js.map +0 -1
- package/dist/ids.d.ts +0 -2
- package/dist/ids.d.ts.map +0 -1
- package/dist/ids.js +0 -17
- package/dist/ids.js.map +0 -1
- package/dist/index.d.ts +0 -78
- package/dist/index.d.ts.map +0 -1
- package/dist/logging.d.ts +0 -18
- package/dist/logging.d.ts.map +0 -1
- package/dist/logging.js +0 -30
- package/dist/logging.js.map +0 -1
- package/dist/loopback-host.d.ts +0 -20
- package/dist/loopback-host.d.ts.map +0 -1
- package/dist/loopback-host.js +0 -245
- package/dist/loopback-host.js.map +0 -1
- package/dist/loopback-preview.d.ts +0 -19
- package/dist/loopback-preview.d.ts.map +0 -1
- package/dist/loopback-preview.js +0 -232
- package/dist/loopback-preview.js.map +0 -1
- package/dist/native-rtc-helper.d.ts +0 -14
- package/dist/native-rtc-helper.d.ts.map +0 -1
- package/dist/native-rtc-helper.js +0 -575
- package/dist/native-rtc-helper.js.map +0 -1
- package/dist/remote-api-proxy.d.ts +0 -17
- package/dist/remote-api-proxy.d.ts.map +0 -1
- package/dist/remote-api-proxy.js +0 -451
- package/dist/remote-api-proxy.js.map +0 -1
- package/dist/remote-directory-browser.d.ts +0 -16
- package/dist/remote-directory-browser.d.ts.map +0 -1
- package/dist/remote-directory-browser.js +0 -48
- package/dist/remote-directory-browser.js.map +0 -1
- package/dist/remote-file-content-provider.d.ts +0 -48
- package/dist/remote-file-content-provider.d.ts.map +0 -1
- package/dist/remote-file-content-provider.js +0 -93
- package/dist/remote-file-content-provider.js.map +0 -1
- package/dist/remote-typert-gateway.d.ts +0 -20
- package/dist/remote-typert-gateway.d.ts.map +0 -1
- package/dist/remote-typert-gateway.js +0 -334
- package/dist/remote-typert-gateway.js.map +0 -1
- package/dist/rpc-binary-attachments.d.ts +0 -33
- package/dist/rpc-binary-attachments.d.ts.map +0 -1
- package/dist/rpc-binary-attachments.js +0 -142
- package/dist/rpc-binary-attachments.js.map +0 -1
- package/dist/rpc-router.d.ts +0 -31
- package/dist/rpc-router.d.ts.map +0 -1
- package/dist/rpc-router.js +0 -201
- package/dist/rpc-router.js.map +0 -1
- package/dist/safe-error.d.ts +0 -8
- package/dist/safe-error.d.ts.map +0 -1
- package/dist/safe-error.js +0 -20
- package/dist/safe-error.js.map +0 -1
- package/dist/server-api.d.ts +0 -109
- package/dist/server-api.d.ts.map +0 -1
- package/dist/server-api.js +0 -520
- package/dist/server-api.js.map +0 -1
- package/dist/server-connection.d.ts +0 -79
- package/dist/server-connection.d.ts.map +0 -1
- package/dist/server-connection.js +0 -1023
- package/dist/server-connection.js.map +0 -1
- package/dist/server-credentials.d.ts +0 -55
- package/dist/server-credentials.d.ts.map +0 -1
- package/dist/server-credentials.js +0 -108
- package/dist/server-credentials.js.map +0 -1
- package/dist/service.d.ts +0 -151
- package/dist/service.d.ts.map +0 -1
- package/dist/service.js +0 -448
- package/dist/service.js.map +0 -1
- package/dist/session-format-compat.d.ts +0 -3
- package/dist/session-format-compat.d.ts.map +0 -1
- package/dist/session-format-compat.js +0 -183
- package/dist/session-format-compat.js.map +0 -1
- package/dist/status-stream.d.ts +0 -48
- package/dist/status-stream.d.ts.map +0 -1
- package/dist/status-stream.js +0 -133
- package/dist/status-stream.js.map +0 -1
- package/dist/terminal-policy.d.ts +0 -21
- package/dist/terminal-policy.d.ts.map +0 -1
- package/dist/terminal-policy.js +0 -68
- package/dist/terminal-policy.js.map +0 -1
- package/dist/tui-command.d.ts +0 -13
- package/dist/tui-command.d.ts.map +0 -1
- package/dist/tui-command.js +0 -392
- package/dist/tui-command.js.map +0 -1
- package/dist/typert-gateway-contract.d.ts +0 -59
- package/dist/typert-gateway-contract.d.ts.map +0 -1
- package/dist/typert-gateway-contract.js +0 -2
- package/dist/typert-gateway-contract.js.map +0 -1
- package/dist/typert-gateway-switch.d.ts +0 -85
- package/dist/typert-gateway-switch.d.ts.map +0 -1
- package/dist/typert-gateway-switch.js +0 -448
- package/dist/typert-gateway-switch.js.map +0 -1
- package/dist/types.d.ts +0 -20
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
- package/dist/version.d.ts +0 -12
- package/dist/version.d.ts.map +0 -1
- package/dist/version.js +0 -12
- package/dist/version.js.map +0 -1
- package/dist/werift-rtc.d.ts +0 -121
- package/dist/werift-rtc.d.ts.map +0 -1
- package/dist/werift-rtc.js +0 -490
- package/dist/werift-rtc.js.map +0 -1
|
@@ -1,448 +0,0 @@
|
|
|
1
|
-
import { decodeByteValue } from './rpc-binary-attachments.js';
|
|
2
|
-
const REMOTE_COMMAND_METHODS = ['execute', 'list'];
|
|
3
|
-
const LOCAL_ONLY_NAMESPACES = new Set(['dynamicCordisRunner']);
|
|
4
|
-
/**
|
|
5
|
-
* Namespaces the local shell keeps answering even when the peer is gone.
|
|
6
|
-
*
|
|
7
|
-
* A remote-mode window asks for its settings bootstrap, its plugin registry stream and its account
|
|
8
|
-
* read before any remote work happens, and only the local shell can answer those - that is why the
|
|
9
|
-
* fallback exists at all. Everything else is remote data, and answering data locally during an
|
|
10
|
-
* outage is what makes the native UI cache a local answer as if it came from the remote workspace:
|
|
11
|
-
* a session list served that way stays wrong even after the link returns.
|
|
12
|
-
*/
|
|
13
|
-
const LOCAL_FALLBACK_NAMESPACES = new Set(['$events', 'settings', 'credentials', 'dynamicCordisRunner']);
|
|
14
|
-
/** Codes that mean the peer is not there right now, as opposed to answering with a refusal. */
|
|
15
|
-
const PEER_GONE_CODES = new Set([
|
|
16
|
-
'TRANSPORT_CLOSED',
|
|
17
|
-
'CLIENT_CLOSED',
|
|
18
|
-
'RPC_TIMEOUT',
|
|
19
|
-
'CONNECTION_FAILED',
|
|
20
|
-
'CONNECTION_REPLACED',
|
|
21
|
-
'NOT_CONNECTED',
|
|
22
|
-
'UNAVAILABLE',
|
|
23
|
-
'internal',
|
|
24
|
-
]);
|
|
25
|
-
const ALL_REMOTE_COMMANDS = { execute: true, list: true };
|
|
26
|
-
/** Keeps the official Gateway object stable while its selected Host changes. */
|
|
27
|
-
export class TypertGatewaySwitch {
|
|
28
|
-
runtime;
|
|
29
|
-
originalInvoke;
|
|
30
|
-
localInvoke;
|
|
31
|
-
originalStream;
|
|
32
|
-
localStream;
|
|
33
|
-
originalDispatch;
|
|
34
|
-
localDispatch;
|
|
35
|
-
originalOpen;
|
|
36
|
-
localOpen;
|
|
37
|
-
remoteInvoke;
|
|
38
|
-
remoteTarget;
|
|
39
|
-
remoteSupport = { execute: false, list: false };
|
|
40
|
-
target;
|
|
41
|
-
installed = false;
|
|
42
|
-
/** Defaults to reachable so a caller that never wires this keeps the old behaviour. */
|
|
43
|
-
remoteAvailability = () => true;
|
|
44
|
-
constructor(gateway) {
|
|
45
|
-
this.runtime = gateway;
|
|
46
|
-
this.originalInvoke = gateway.invoke;
|
|
47
|
-
this.localInvoke = this.originalInvoke.bind(gateway);
|
|
48
|
-
this.originalStream = gateway.stream;
|
|
49
|
-
this.localStream = gateway.stream?.bind(gateway);
|
|
50
|
-
this.originalDispatch = this.runtime.dispatchRpc;
|
|
51
|
-
this.localDispatch = this.runtime.dispatchRpc?.bind(gateway);
|
|
52
|
-
this.originalOpen = this.runtime.openWireStream;
|
|
53
|
-
this.localOpen = createLocalOpen(gateway, this.runtime);
|
|
54
|
-
}
|
|
55
|
-
/** Original local dispatcher, used by the Host bridge without switch recursion. */
|
|
56
|
-
local() {
|
|
57
|
-
const dispatch = this.localDispatch ?? (async (endpoint, payload, signal) => {
|
|
58
|
-
try {
|
|
59
|
-
const request = requestFromCarrier(endpoint, payload, signal);
|
|
60
|
-
return { ok: true, value: await this.localInvoke(request) };
|
|
61
|
-
}
|
|
62
|
-
catch (error) {
|
|
63
|
-
return { ok: false, error: this.failure(error) };
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
const open = this.localOpen ?? (async (endpoint, payload, signal) => {
|
|
67
|
-
if (this.localStream === undefined)
|
|
68
|
-
throw new Error('The local Harness Gateway does not support Remote streams.');
|
|
69
|
-
return this.localStream(requestFromCarrier(endpoint, payload, signal));
|
|
70
|
-
});
|
|
71
|
-
return {
|
|
72
|
-
invoke: this.localInvoke,
|
|
73
|
-
...(this.localStream === undefined ? {} : { stream: this.localStream }),
|
|
74
|
-
dispatch,
|
|
75
|
-
open,
|
|
76
|
-
failure: error => this.failure(error),
|
|
77
|
-
supportsCarrier: this.localDispatch !== undefined && this.localOpen !== undefined,
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
supportsCarrier() {
|
|
81
|
-
return this.localDispatch !== undefined && this.localOpen !== undefined;
|
|
82
|
-
}
|
|
83
|
-
status() {
|
|
84
|
-
return this.remoteInvoke === undefined
|
|
85
|
-
? { mode: 'local' }
|
|
86
|
-
: { mode: 'remote', ...(this.target === undefined ? {} : { target: { ...this.target } }) };
|
|
87
|
-
}
|
|
88
|
-
install() {
|
|
89
|
-
if (this.installed)
|
|
90
|
-
return;
|
|
91
|
-
this.runtime.invoke = request => this.selectInvoke(request);
|
|
92
|
-
// The carriers this switch was installed in front of. A target that owns only part of the endpoint
|
|
93
|
-
// space - the command namespace in an rc.2 window, where the ApiProxy switch owns the data plane - must
|
|
94
|
-
// pass every other endpoint down to them. Answering one here sends it to the local shell instead of the
|
|
95
|
-
// peer: that is how workspaceFiles/readBytes came back in a shape the native schema rejects.
|
|
96
|
-
// Keep the receiver: the local dispatcher is an object method that reads its own fields, and calling
|
|
97
|
-
// it unbound failed with a missing invokeRpc on an undefined receiver - which broke every local call
|
|
98
|
-
// whenever this switch forwarded instead of answering itself.
|
|
99
|
-
const previousStream = this.runtime.stream?.bind(this.runtime);
|
|
100
|
-
const previousDispatch = this.runtime.dispatchRpc?.bind(this.runtime);
|
|
101
|
-
const previousOpen = this.runtime.openWireStream;
|
|
102
|
-
// Forwarding is for a window whose data plane belongs to another carrier while the peer is up. With
|
|
103
|
-
// no reachable peer the shell must work locally - forwarding there reached a carrier that cannot
|
|
104
|
-
// serve it and every local call failed with a missing invokeRpc on an undefined carrier.
|
|
105
|
-
const forwards = (endpoint) => (this.remoteTarget === undefined && this.remoteAvailability() && !isLocalOnlyEndpoint(endpoint));
|
|
106
|
-
if (previousStream !== undefined) {
|
|
107
|
-
this.runtime.stream = request => forwards(endpointOf(request))
|
|
108
|
-
? previousStream(request)
|
|
109
|
-
: !this.routesToRemote(endpointOf(request))
|
|
110
|
-
? this.localStream(request)
|
|
111
|
-
: this.withLocalFallback(endpointOf(request), () => this.remoteTarget.open(endpointOf(request), { args: request.args }, request.signal ?? new AbortController().signal), () => this.localStream(request));
|
|
112
|
-
}
|
|
113
|
-
if (previousDispatch !== undefined) {
|
|
114
|
-
this.runtime.dispatchRpc = (endpoint, payload, signal) => forwards(endpoint)
|
|
115
|
-
? Promise.resolve(previousDispatch(endpoint, payload, signal)).catch(error => {
|
|
116
|
-
// Without a remote target the shell has to work locally, and a failing local call is otherwise
|
|
117
|
-
// invisible: the fallback exists precisely so the user can keep working.
|
|
118
|
-
console.warn('[dsh-remote] local call failed with no remote target selected', {
|
|
119
|
-
endpoint,
|
|
120
|
-
code: typeof error === 'object' && error !== null && 'code' in error ? String(error.code) : undefined,
|
|
121
|
-
message: error instanceof Error ? error.message : String(error),
|
|
122
|
-
});
|
|
123
|
-
throw error;
|
|
124
|
-
})
|
|
125
|
-
: !this.routesToRemote(endpoint)
|
|
126
|
-
? this.localDispatch(endpoint, payload, signal)
|
|
127
|
-
: this.withLocalFallback(endpoint, () => Promise.resolve(this.remoteTarget.dispatch(endpoint, payload, signal)), () => this.localDispatch(endpoint, payload, signal)).then(result => normalizeByteResult(endpoint, result));
|
|
128
|
-
}
|
|
129
|
-
if (previousOpen !== undefined) {
|
|
130
|
-
const open = previousOpen;
|
|
131
|
-
const rc1 = usesRc1Arity(open);
|
|
132
|
-
this.runtime.openWireStream = (...callArgs) => {
|
|
133
|
-
const endpoint = callArgs[0];
|
|
134
|
-
if (forwards(endpoint)) {
|
|
135
|
-
return rc1
|
|
136
|
-
? Reflect.apply(open, this.runtime, callArgs)
|
|
137
|
-
: open.call(this.runtime, endpoint, callArgs[1], callArgs[2]);
|
|
138
|
-
}
|
|
139
|
-
if (!this.routesToRemote(endpoint)) {
|
|
140
|
-
return rc1
|
|
141
|
-
? Reflect.apply(open, this.runtime, callArgs)
|
|
142
|
-
: open.call(this.runtime, endpoint, callArgs[1], callArgs[2]);
|
|
143
|
-
}
|
|
144
|
-
const signal = (rc1 ? callArgs[4] : callArgs[2]);
|
|
145
|
-
if (!rc1) {
|
|
146
|
-
// The legacy carrier returns an iterable, so a rejection cannot be caught and
|
|
147
|
-
// the local fallback stays unavailable on that arity.
|
|
148
|
-
return this.remoteTarget.open(endpoint, callArgs[1], signal ?? new AbortController().signal);
|
|
149
|
-
}
|
|
150
|
-
return this.withLocalFallback(endpoint, () => this.remoteTarget.open(endpoint, callArgs[1], signal ?? new AbortController().signal), () => Reflect.apply(open, this.runtime, callArgs));
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
this.installed = true;
|
|
154
|
-
}
|
|
155
|
-
selectRemote(remote, support = ALL_REMOTE_COMMANDS, target) {
|
|
156
|
-
if (!this.installed)
|
|
157
|
-
throw new Error('The Typert gateway switch is not installed.');
|
|
158
|
-
this.remoteInvoke = typeof remote === 'function' ? remote : request => remote.invoke(request);
|
|
159
|
-
this.remoteTarget = typeof remote === 'function' ? undefined : remote;
|
|
160
|
-
this.remoteSupport = { ...support };
|
|
161
|
-
this.target = target === undefined ? undefined : { ...target };
|
|
162
|
-
}
|
|
163
|
-
selectLocal() {
|
|
164
|
-
this.remoteInvoke = undefined;
|
|
165
|
-
this.remoteTarget = undefined;
|
|
166
|
-
this.remoteSupport = { execute: false, list: false };
|
|
167
|
-
this.target = undefined;
|
|
168
|
-
}
|
|
169
|
-
/**
|
|
170
|
-
* The local shell's carriers, for a remote target that owns only part of the
|
|
171
|
-
* endpoint space. The Codex virtual Harness owns the CodeX domain; the shell's own
|
|
172
|
-
* settings bootstrap, plugin registry and account reads must stay here, or the
|
|
173
|
-
* window describes the remote Host instead of this installation.
|
|
174
|
-
* @returns the captured local carriers, absent when the running release has none.
|
|
175
|
-
*/
|
|
176
|
-
localCarrier() {
|
|
177
|
-
return {
|
|
178
|
-
...(this.localDispatch === undefined ? {} : { dispatch: this.localDispatch }),
|
|
179
|
-
...(this.localOpen === undefined ? {} : { open: this.localOpen }),
|
|
180
|
-
};
|
|
181
|
-
}
|
|
182
|
-
restore() {
|
|
183
|
-
if (!this.installed)
|
|
184
|
-
return;
|
|
185
|
-
this.selectLocal();
|
|
186
|
-
this.runtime.invoke = this.originalInvoke;
|
|
187
|
-
if (this.originalStream !== undefined)
|
|
188
|
-
this.runtime.stream = this.originalStream;
|
|
189
|
-
if (this.originalDispatch !== undefined)
|
|
190
|
-
this.runtime.dispatchRpc = this.originalDispatch;
|
|
191
|
-
if (this.originalOpen !== undefined)
|
|
192
|
-
this.runtime.openWireStream = this.originalOpen;
|
|
193
|
-
this.installed = false;
|
|
194
|
-
}
|
|
195
|
-
/**
|
|
196
|
-
* Whether the peer a remote target routes to is reachable right now.
|
|
197
|
-
*
|
|
198
|
-
* A remote-mode boot still needs its own local services — localizations, theme,
|
|
199
|
-
* the plugin registry — before any remote work can happen. Routing those to a
|
|
200
|
-
* peer that is not connected leaves them unanswered, so the whole shell fails to
|
|
201
|
-
* activate: a dropped connection becomes "the application is unavailable" and
|
|
202
|
-
* stays that way until the user restarts into local mode. Serve local while the
|
|
203
|
-
* peer is away; the live session takes over again as soon as it is reachable.
|
|
204
|
-
*/
|
|
205
|
-
setRemoteAvailability(check) { this.remoteAvailability = check; }
|
|
206
|
-
routesToRemote(endpoint) {
|
|
207
|
-
return this.remoteTarget !== undefined && !isLocalOnlyEndpoint(endpoint) && this.remoteAvailability();
|
|
208
|
-
}
|
|
209
|
-
selectInvoke(request) {
|
|
210
|
-
if (isLocalOnlyEndpoint(endpointOf(request)))
|
|
211
|
-
return this.localInvoke(request);
|
|
212
|
-
if (this.remoteTarget !== undefined && this.remoteAvailability()) {
|
|
213
|
-
// A remote-mode boot still issues RPCs only the local shell can answer: the
|
|
214
|
-
// Desktop asks the local Web server for its locale bootstrap before any remote
|
|
215
|
-
// work happens. Sweeping those to the peer failed as "desktop welcome: Web RPC
|
|
216
|
-
// failed", the locale plugin failed with it, and 48 entries never activated.
|
|
217
|
-
// Serve locally when the peer does not implement the endpoint, or when it went
|
|
218
|
-
// away mid-call; a business error still propagates.
|
|
219
|
-
return this.remoteTarget.invoke(request)
|
|
220
|
-
.then(result => normalizeByteResult(endpointOf(request), result))
|
|
221
|
-
.catch(error => {
|
|
222
|
-
if (!localFallbackAllowed(endpointOf(request), error))
|
|
223
|
-
throw error;
|
|
224
|
-
console.warn(`[dsh-remote] serving ${endpointOf(request)} locally: the peer did not answer it`, error);
|
|
225
|
-
return this.localInvoke(request);
|
|
226
|
-
});
|
|
227
|
-
}
|
|
228
|
-
if (request.namespace !== 'commands' || !isRemoteCommandMethod(request.method) || this.remoteInvoke === undefined) {
|
|
229
|
-
return this.localInvoke(request);
|
|
230
|
-
}
|
|
231
|
-
if (!this.remoteAvailability())
|
|
232
|
-
return this.localInvoke(request);
|
|
233
|
-
if (this.remoteSupport[request.method])
|
|
234
|
-
return this.remoteInvoke(request);
|
|
235
|
-
if (request.method === 'list')
|
|
236
|
-
return Promise.resolve([]);
|
|
237
|
-
return this.localInvoke(request);
|
|
238
|
-
}
|
|
239
|
-
/**
|
|
240
|
-
* Run a remote call, and answer it locally when the peer turns out not to serve
|
|
241
|
-
* that endpoint. A remote-mode boot still issues RPCs only the local shell can
|
|
242
|
-
* answer: the Desktop asks the local Web server for its locale bootstrap over the
|
|
243
|
-
* remote mux before any remote work happens. Forwarding those swept them to a host
|
|
244
|
-
* that does not implement them, the locale plugin failed, and every entry
|
|
245
|
-
* depending on it stayed pending. A genuine business error still propagates.
|
|
246
|
-
* @param endpoint - endpoint being routed, for the diagnostic warning.
|
|
247
|
-
* @param remote - the remote carrier call.
|
|
248
|
-
* @param local - the local call used when the peer could not answer.
|
|
249
|
-
* @returns the remote or local result.
|
|
250
|
-
*/
|
|
251
|
-
withLocalFallback(endpoint, remote, local) {
|
|
252
|
-
return remote().catch(error => {
|
|
253
|
-
if (!localFallbackAllowed(endpoint, error))
|
|
254
|
-
throw error;
|
|
255
|
-
console.warn(`[dsh-remote] serving ${endpoint} locally: the peer did not answer it`, error);
|
|
256
|
-
return local();
|
|
257
|
-
});
|
|
258
|
-
}
|
|
259
|
-
failure(error) {
|
|
260
|
-
const normalized = this.runtime.wireStream?.failure(error);
|
|
261
|
-
if (normalized !== undefined)
|
|
262
|
-
return normalized;
|
|
263
|
-
const source = error instanceof Error ? error : new Error('The Harness Gateway rejected the request.');
|
|
264
|
-
const code = 'code' in source && typeof source.code === 'string' ? source.code : 'internal';
|
|
265
|
-
const details = 'details' in source && isRecord(source.details) ? source.details : {};
|
|
266
|
-
return { code, message: source.message, details };
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
/**
|
|
270
|
-
* dsh 0.1.7-rc.1 moved the cancellation signal from the third parameter to the
|
|
271
|
-
* fifth; legacy releases keep `(endpoint, payload, signal)`.
|
|
272
|
-
* @param open - carrier opener captured from the running release.
|
|
273
|
-
* @returns whether the opener follows the rc.1 argument order.
|
|
274
|
-
*/
|
|
275
|
-
function usesRc1Arity(open) {
|
|
276
|
-
return open.length >= 5;
|
|
277
|
-
}
|
|
278
|
-
/** An uplink nobody sends on, so a read-only stream opens without buffering. */
|
|
279
|
-
function endedUplink() {
|
|
280
|
-
return {
|
|
281
|
-
[Symbol.asyncIterator]() {
|
|
282
|
-
return { next: () => Promise.resolve({ done: true, value: undefined }) };
|
|
283
|
-
},
|
|
284
|
-
};
|
|
285
|
-
}
|
|
286
|
-
/** Controller aborted with the logical stream so the rc.1 carrier owns one lifetime. */
|
|
287
|
-
function linkControl(signal) {
|
|
288
|
-
const control = new AbortController();
|
|
289
|
-
if (signal.aborted)
|
|
290
|
-
control.abort(signal.reason);
|
|
291
|
-
else
|
|
292
|
-
signal.addEventListener('abort', () => control.abort(signal.reason), { once: true });
|
|
293
|
-
return control;
|
|
294
|
-
}
|
|
295
|
-
/**
|
|
296
|
-
* Adapt the running release's carrier opener to the plugin's 3-argument
|
|
297
|
-
* `(endpoint, payload, signal)` seam without leaking the argument displacement.
|
|
298
|
-
* @param gateway - official Gateway whose public `wireStream` is the fallback.
|
|
299
|
-
* @param runtime - Gateway object owning the private `openWireStream` dispatcher.
|
|
300
|
-
* @returns a local opener that carries the signal to the release's signal slot.
|
|
301
|
-
*/
|
|
302
|
-
function createLocalOpen(gateway, runtime) {
|
|
303
|
-
const open = runtime.openWireStream;
|
|
304
|
-
if (open !== undefined) {
|
|
305
|
-
return usesRc1Arity(open)
|
|
306
|
-
? (endpoint, payload, signal) => open
|
|
307
|
-
.call(runtime, endpoint, payload, endedUplink(), undefined, signal, linkControl(signal))
|
|
308
|
-
: (endpoint, payload, signal) => open.call(runtime, endpoint, payload, signal);
|
|
309
|
-
}
|
|
310
|
-
const wire = gateway.wireStream;
|
|
311
|
-
if (wire === undefined)
|
|
312
|
-
return undefined;
|
|
313
|
-
const wireOpen = wire.open;
|
|
314
|
-
if (usesRc1Arity(wireOpen)) {
|
|
315
|
-
const rc1 = wireOpen;
|
|
316
|
-
return (endpoint, payload, signal) => rc1.call(wire, endpoint, payload, endedUplink(), undefined, signal);
|
|
317
|
-
}
|
|
318
|
-
const legacy = wireOpen;
|
|
319
|
-
return (endpoint, payload, signal) => legacy.call(wire, endpoint, payload, signal);
|
|
320
|
-
}
|
|
321
|
-
function requestFromCarrier(endpoint, payload, signal) {
|
|
322
|
-
const segments = endpoint.split('/');
|
|
323
|
-
if (segments.length !== 2 || segments.some(segment => segment.length === 0)) {
|
|
324
|
-
throw new Error('The Harness Gateway endpoint is invalid.');
|
|
325
|
-
}
|
|
326
|
-
if (!isRecord(payload) || !isRecord(payload.args)) {
|
|
327
|
-
throw new Error('The Harness Gateway payload is invalid.');
|
|
328
|
-
}
|
|
329
|
-
return { namespace: segments[0], method: segments[1], args: payload.args, signal };
|
|
330
|
-
}
|
|
331
|
-
function endpointOf(request) {
|
|
332
|
-
return `${request.namespace}/${request.method}`;
|
|
333
|
-
}
|
|
334
|
-
function namespaceOf(endpoint) {
|
|
335
|
-
const separator = endpoint.indexOf('/');
|
|
336
|
-
return separator > 0 ? endpoint.slice(0, separator) : undefined;
|
|
337
|
-
}
|
|
338
|
-
function isLocalOnlyEndpoint(endpoint) {
|
|
339
|
-
const namespace = namespaceOf(endpoint);
|
|
340
|
-
return namespace !== undefined && LOCAL_ONLY_NAMESPACES.has(namespace);
|
|
341
|
-
}
|
|
342
|
-
/**
|
|
343
|
-
* Whether the local shell may answer a call the peer could not.
|
|
344
|
-
*
|
|
345
|
-
* A refusal means the peer does not implement the endpoint, and the local shell is the right answer
|
|
346
|
-
* for the bootstrap calls a window needs. A peer that is *gone* is different: serving its data
|
|
347
|
-
* locally hands the UI a plausible wrong answer, so only the bootstrap namespaces may answer then.
|
|
348
|
-
* @param endpoint - endpoint being routed.
|
|
349
|
-
* @param error - rejection from the remote carrier.
|
|
350
|
-
* @returns whether the local shell should answer instead.
|
|
351
|
-
*/
|
|
352
|
-
function localFallbackAllowed(endpoint, error) {
|
|
353
|
-
if (!isUnansweredByPeer(error))
|
|
354
|
-
return false;
|
|
355
|
-
if (!isRecord(error))
|
|
356
|
-
return true;
|
|
357
|
-
const code = typeof error.code === 'string' ? error.code : '';
|
|
358
|
-
if (!PEER_GONE_CODES.has(code))
|
|
359
|
-
return true;
|
|
360
|
-
const namespace = namespaceOf(endpoint);
|
|
361
|
-
return namespace !== undefined && LOCAL_FALLBACK_NAMESPACES.has(namespace);
|
|
362
|
-
}
|
|
363
|
-
function isRemoteCommandMethod(method) {
|
|
364
|
-
return REMOTE_COMMAND_METHODS.includes(method);
|
|
365
|
-
}
|
|
366
|
-
/**
|
|
367
|
-
* Whether the peer cannot answer this call at all, as opposed to answering with a
|
|
368
|
-
* refusal. An unimplemented endpoint (a local-only concern the switch forwarded
|
|
369
|
-
* anyway) and a connection that dropped mid-call are both permissionless to retry
|
|
370
|
-
* locally; a business error such as a denied permission is not.
|
|
371
|
-
* @param error - rejection from the remote carrier.
|
|
372
|
-
* @returns whether the local shell should answer the call instead.
|
|
373
|
-
*/ function isUnansweredByPeer(error) {
|
|
374
|
-
// A wrapped carrier failure such as "Web RPC failed" often arrives with no code at
|
|
375
|
-
// all, and refusing to fall back there would leave the local shell unanswered. The
|
|
376
|
-
// warning emitted at the call site keeps the decision visible in DevTools.
|
|
377
|
-
if (!isRecord(error))
|
|
378
|
-
return error instanceof Error;
|
|
379
|
-
const code = typeof error.code === 'string' ? error.code : '';
|
|
380
|
-
return code === '' || UNANSWERED_BY_PEER_CODES.has(code);
|
|
381
|
-
}
|
|
382
|
-
const UNANSWERED_BY_PEER_CODES = new Set([
|
|
383
|
-
'METHOD_NOT_ALLOWED',
|
|
384
|
-
'METHOD_NOT_FOUND',
|
|
385
|
-
'method-not-found',
|
|
386
|
-
'not-implemented',
|
|
387
|
-
'CONNECTION_FAILED',
|
|
388
|
-
'CONNECTION_REPLACED',
|
|
389
|
-
'NOT_CONNECTED',
|
|
390
|
-
'UNAVAILABLE',
|
|
391
|
-
// The client's own transport codes: the peer cannot answer a call it never received, so these are
|
|
392
|
-
// "unanswered" rather than a refusal - and PEER_GONE_CODES above is what decides whether the local
|
|
393
|
-
// shell may answer for it.
|
|
394
|
-
'TRANSPORT_CLOSED',
|
|
395
|
-
'CLIENT_CLOSED',
|
|
396
|
-
'RPC_TIMEOUT',
|
|
397
|
-
'internal',
|
|
398
|
-
]);
|
|
399
|
-
function isRecord(value) {
|
|
400
|
-
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
401
|
-
}
|
|
402
|
-
/**
|
|
403
|
-
* Endpoints whose canonical result carries bytes, which the CodeX projection answers with base64.
|
|
404
|
-
*
|
|
405
|
-
* The native UI validates \`workspaceFiles/readBytes\` against a generated schema that requires a real
|
|
406
|
-
* \`Uint8Array\`, while the CodeX workspace projection returns base64 for its own consumers - reaching that
|
|
407
|
-
* schema as \`expected "Uint8Array", path: ["data"]\`, the image-preview failure. Normalising at the local
|
|
408
|
-
* carrier's exit keeps the projection's own wire unchanged and only fixes what the local shell receives.
|
|
409
|
-
*
|
|
410
|
-
* @param endpoint - endpoint the result belongs to.
|
|
411
|
-
* @param result - the peer's result.
|
|
412
|
-
* @returns the result with byte-valued fields restored to \`Uint8Array\`.
|
|
413
|
-
*/
|
|
414
|
-
/** Shapes only: what a byte field looks like where it crosses a seam (never the content). */
|
|
415
|
-
function describeBytes(data) {
|
|
416
|
-
return {
|
|
417
|
-
dataIsBytes: data instanceof Uint8Array,
|
|
418
|
-
dataType: typeof data,
|
|
419
|
-
dataKeys: typeof data === 'object' && data !== null ? Object.keys(data).length : 0,
|
|
420
|
-
preview: typeof data === 'string' ? data.slice(0, 12) : undefined,
|
|
421
|
-
};
|
|
422
|
-
}
|
|
423
|
-
function normalizeByteResult(endpoint, result) {
|
|
424
|
-
if (endpoint !== 'workspaceFiles/readBytes')
|
|
425
|
-
return result;
|
|
426
|
-
if (typeof result !== 'object' || result === null || Array.isArray(result))
|
|
427
|
-
return result;
|
|
428
|
-
const value = result.value;
|
|
429
|
-
if (typeof value !== 'object' || value === null || Array.isArray(value))
|
|
430
|
-
return result;
|
|
431
|
-
const data = value.data;
|
|
432
|
-
console.warn('[dsh-remote] workspaceFiles/readBytes at the switch exit', describeBytes(data));
|
|
433
|
-
if (data instanceof Uint8Array)
|
|
434
|
-
return result;
|
|
435
|
-
const bytes = decodeByteValue(data);
|
|
436
|
-
// Shapes only; never the content itself. This is the seam that faces the local shell.
|
|
437
|
-
console.warn('[dsh-remote] workspace probe', {
|
|
438
|
-
where: 'switch.exit',
|
|
439
|
-
endpoint,
|
|
440
|
-
dataType: typeof data,
|
|
441
|
-
dataKeys: typeof data === 'object' && data !== null ? Object.keys(data).length : 0,
|
|
442
|
-
decoded: bytes !== undefined,
|
|
443
|
-
});
|
|
444
|
-
if (bytes === undefined)
|
|
445
|
-
return result;
|
|
446
|
-
return { ...result, value: { ...value, data: bytes } };
|
|
447
|
-
}
|
|
448
|
-
//# sourceMappingURL=typert-gateway-switch.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"typert-gateway-switch.js","sourceRoot":"","sources":["../src/typert-gateway-switch.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { RemoteMessage } from '@dsh-remote/protocol';
|
|
2
|
-
export interface AuthenticatedPeerChannel {
|
|
3
|
-
/**
|
|
4
|
-
* Attestation supplied by the Noise/control-plane integration. Implementors
|
|
5
|
-
* must expose this channel only after both the Noise IK transcript and the
|
|
6
|
-
* Server membership for this exact connection have been verified.
|
|
7
|
-
*/
|
|
8
|
-
readonly security: {
|
|
9
|
-
protocol: 'Noise_IK_25519_ChaChaPoly_SHA256';
|
|
10
|
-
connectionId: string;
|
|
11
|
-
membershipId: string;
|
|
12
|
-
};
|
|
13
|
-
readonly peerDeviceId: string;
|
|
14
|
-
readonly peerIdentityKey: string;
|
|
15
|
-
readonly mode?: 'LAN' | 'P2P' | 'TURN' | 'Relay';
|
|
16
|
-
send(message: RemoteMessage): Promise<void>;
|
|
17
|
-
onMessage(handler: (message: RemoteMessage) => void): () => void;
|
|
18
|
-
close(code?: string): Promise<void>;
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEzD,MAAM,WAAW,wBAAwB;IACvC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,EAAE,kCAAkC,CAAA;QAC5C,YAAY,EAAE,MAAM,CAAA;QACpB,YAAY,EAAE,MAAM,CAAA;KACrB,CAAA;IACD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAA;IAChD,IAAI,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3C,SAAS,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,GAAG,MAAM,IAAI,CAAA;IAChE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACpC"}
|
package/dist/types.js
DELETED
package/dist/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/dist/version.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Version of the `ds-harness-remote` distribution.
|
|
3
|
-
*
|
|
4
|
-
* This is reported to the Server during device registration (`clientVersion`
|
|
5
|
-
* in the Device Descriptor) and again in the WebSocket `hello` frame. The
|
|
6
|
-
* Harness version is read separately from `host.describe` at runtime.
|
|
7
|
-
* Keep it in sync with `packages/plugin/package.json` (`version`).
|
|
8
|
-
* If they diverge, `npm scripts` checks in `scripts/verify-version-sync.mjs`
|
|
9
|
-
* will fail fast during build/check/test.
|
|
10
|
-
*/
|
|
11
|
-
export declare const PLUGIN_VERSION = "0.4.30";
|
|
12
|
-
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,WAAW,CAAA"}
|
package/dist/version.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Version of the `ds-harness-remote` distribution.
|
|
3
|
-
*
|
|
4
|
-
* This is reported to the Server during device registration (`clientVersion`
|
|
5
|
-
* in the Device Descriptor) and again in the WebSocket `hello` frame. The
|
|
6
|
-
* Harness version is read separately from `host.describe` at runtime.
|
|
7
|
-
* Keep it in sync with `packages/plugin/package.json` (`version`).
|
|
8
|
-
* If they diverge, `npm scripts` checks in `scripts/verify-version-sync.mjs`
|
|
9
|
-
* will fail fast during build/check/test.
|
|
10
|
-
*/
|
|
11
|
-
export const PLUGIN_VERSION = '0.4.30';
|
|
12
|
-
//# sourceMappingURL=version.js.map
|
package/dist/version.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAA"}
|