@vibesdotdev/terminal-client 0.0.0-stage → 1.0.0-rc.2
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/LICENSE +18 -0
- package/README.md +102 -2
- package/dist/ansi/index.d.ts +11 -0
- package/dist/ansi/index.d.ts.map +1 -0
- package/dist/ansi/index.js +11 -0
- package/dist/ansi/index.js.map +1 -0
- package/dist/ansi/keymap.d.ts +77 -0
- package/dist/ansi/keymap.d.ts.map +1 -0
- package/dist/ansi/keymap.js +257 -0
- package/dist/ansi/keymap.js.map +1 -0
- package/dist/api-client-plugin.d.ts +4 -0
- package/dist/api-client-plugin.d.ts.map +1 -0
- package/dist/api-client-plugin.js +16 -0
- package/dist/api-client-plugin.js.map +1 -0
- package/dist/client/http-session.d.ts +44 -0
- package/dist/client/http-session.d.ts.map +1 -0
- package/dist/client/http-session.js +457 -0
- package/dist/client/http-session.js.map +1 -0
- package/dist/client/index.d.ts +8 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +8 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client.d.ts +56 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +169 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/pty-bridge/index.d.ts +15 -0
- package/dist/pty-bridge/index.d.ts.map +1 -0
- package/dist/pty-bridge/index.js +15 -0
- package/dist/pty-bridge/index.js.map +1 -0
- package/dist/pty-bridge/protocol.d.ts +6 -0
- package/dist/pty-bridge/protocol.d.ts.map +1 -0
- package/dist/pty-bridge/protocol.js +6 -0
- package/dist/pty-bridge/protocol.js.map +1 -0
- package/dist/pty-bridge/server.d.ts +7 -0
- package/dist/pty-bridge/server.d.ts.map +1 -0
- package/dist/pty-bridge/server.js +9 -0
- package/dist/pty-bridge/server.js.map +1 -0
- package/dist/remote-session.d.ts +51 -0
- package/dist/remote-session.d.ts.map +1 -0
- package/dist/remote-session.js +326 -0
- package/dist/remote-session.js.map +1 -0
- package/dist/schemas/http.d.ts +61 -0
- package/dist/schemas/http.d.ts.map +1 -0
- package/dist/schemas/http.js +45 -0
- package/dist/schemas/http.js.map +1 -0
- package/dist/schemas/remote.d.ts +25 -0
- package/dist/schemas/remote.d.ts.map +1 -0
- package/dist/schemas/remote.js +23 -0
- package/dist/schemas/remote.js.map +1 -0
- package/dist/schemas/session.d.ts +26 -0
- package/dist/schemas/session.d.ts.map +1 -0
- package/dist/schemas/session.js +17 -0
- package/dist/schemas/session.js.map +1 -0
- package/dist/schemas/store.d.ts +29 -0
- package/dist/schemas/store.d.ts.map +1 -0
- package/dist/schemas/store.js +22 -0
- package/dist/schemas/store.js.map +1 -0
- package/dist/schemas/terminal.d.ts +296 -0
- package/dist/schemas/terminal.d.ts.map +1 -0
- package/dist/schemas/terminal.js +243 -0
- package/dist/schemas/terminal.js.map +1 -0
- package/dist/server/index.d.ts +9 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +9 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/session-store.d.ts +176 -0
- package/dist/server/session-store.d.ts.map +1 -0
- package/dist/server/session-store.js +462 -0
- package/dist/server/session-store.js.map +1 -0
- package/dist/server/sse-stream.d.ts +32 -0
- package/dist/server/sse-stream.d.ts.map +1 -0
- package/dist/server/sse-stream.js +87 -0
- package/dist/server/sse-stream.js.map +1 -0
- package/dist/svelte/HostPicker.svelte +256 -0
- package/dist/svelte/HostPicker.svelte.d.ts +30 -0
- package/dist/svelte/HostPicker.svelte.d.ts.map +1 -0
- package/dist/svelte/README.md +52 -0
- package/dist/svelte/ReconnectBanner.svelte +88 -0
- package/dist/svelte/ReconnectBanner.svelte.d.ts +16 -0
- package/dist/svelte/ReconnectBanner.svelte.d.ts.map +1 -0
- package/dist/svelte/SessionTabs.svelte +192 -0
- package/dist/svelte/SessionTabs.svelte.d.ts +17 -0
- package/dist/svelte/SessionTabs.svelte.d.ts.map +1 -0
- package/dist/svelte/Terminal.svelte +567 -0
- package/dist/svelte/Terminal.svelte.d.ts +25 -0
- package/dist/svelte/Terminal.svelte.d.ts.map +1 -0
- package/dist/svelte/TerminalMobileToolbar.svelte +56 -0
- package/dist/svelte/TerminalMobileToolbar.svelte.d.ts +14 -0
- package/dist/svelte/TerminalMobileToolbar.svelte.d.ts.map +1 -0
- package/dist/svelte/TerminalWorkspace.svelte +562 -0
- package/dist/svelte/TerminalWorkspace.svelte.d.ts +25 -0
- package/dist/svelte/TerminalWorkspace.svelte.d.ts.map +1 -0
- package/dist/svelte/ambient.d.ts +9 -0
- package/dist/svelte/docs/terminal-svelte.docs.descriptor.d.ts +4 -0
- package/dist/svelte/docs/terminal-svelte.docs.descriptor.d.ts.map +1 -0
- package/dist/svelte/docs/terminal-svelte.docs.descriptor.js +74 -0
- package/dist/svelte/index.d.ts +27 -0
- package/dist/svelte/index.d.ts.map +1 -0
- package/dist/svelte/index.js +26 -0
- package/dist/svelte/styles.css +8 -0
- package/dist/svelte/terminal-session-authority.d.ts +17 -0
- package/dist/svelte/terminal-session-authority.d.ts.map +1 -0
- package/dist/svelte/terminal-session-authority.js +25 -0
- package/dist/svelte/terminal-svelte.plugin.d.ts +19 -0
- package/dist/svelte/terminal-svelte.plugin.d.ts.map +1 -0
- package/dist/svelte/terminal-svelte.plugin.js +42 -0
- package/dist/svelte/terminal-theme.d.ts +11 -0
- package/dist/svelte/terminal-theme.d.ts.map +1 -0
- package/dist/svelte/terminal-theme.js +116 -0
- package/dist/svelte/tool-widgets/TerminalToolCard.svelte +65 -0
- package/dist/svelte/tool-widgets/TerminalToolCard.svelte.d.ts +5 -0
- package/dist/svelte/tool-widgets/TerminalToolCard.svelte.d.ts.map +1 -0
- package/dist/svelte/tool-widgets/terminal-tool-card.d.ts +25 -0
- package/dist/svelte/tool-widgets/terminal-tool-card.d.ts.map +1 -0
- package/dist/svelte/tool-widgets/terminal-tool-card.js +116 -0
- package/dist/svelte/types.d.ts +160 -0
- package/dist/svelte/types.d.ts.map +1 -0
- package/dist/svelte/types.js +51 -0
- package/dist/svelte/workspace.d.ts +3 -0
- package/dist/svelte/workspace.d.ts.map +1 -0
- package/dist/svelte/workspace.js +2 -0
- package/dist/terminal-client.plugin.d.ts +3 -0
- package/dist/terminal-client.plugin.d.ts.map +1 -0
- package/dist/terminal-client.plugin.js +3 -0
- package/dist/terminal-client.plugin.js.map +1 -0
- package/dist/terminal-runtime.d.ts +30 -0
- package/dist/terminal-runtime.d.ts.map +1 -0
- package/dist/terminal-runtime.js +673 -0
- package/dist/terminal-runtime.js.map +1 -0
- package/dist/terminal.consumer.plugin.d.ts +14 -0
- package/dist/terminal.consumer.plugin.d.ts.map +1 -0
- package/dist/terminal.consumer.plugin.js +31 -0
- package/dist/terminal.consumer.plugin.js.map +1 -0
- package/dist/tools/terminal.impl.consumer.d.ts +11 -0
- package/dist/tools/terminal.impl.consumer.d.ts.map +1 -0
- package/dist/tools/terminal.impl.consumer.js +20 -0
- package/dist/tools/terminal.impl.consumer.js.map +1 -0
- package/dist/tools/terminal.schemas.d.ts +3 -0
- package/dist/tools/terminal.schemas.d.ts.map +1 -0
- package/dist/tools/terminal.schemas.js +3 -0
- package/dist/tools/terminal.schemas.js.map +1 -0
- package/dist/tools/terminal.unified.descriptor.d.ts +218 -0
- package/dist/tools/terminal.unified.descriptor.d.ts.map +1 -0
- package/dist/tools/terminal.unified.descriptor.js +36 -0
- package/dist/tools/terminal.unified.descriptor.js.map +1 -0
- package/dist/tui/index.d.ts +9 -0
- package/dist/tui/index.d.ts.map +1 -0
- package/dist/tui/index.js +8 -0
- package/dist/tui/index.js.map +1 -0
- package/dist/tui/terminal-open.descriptor.d.ts +9 -0
- package/dist/tui/terminal-open.descriptor.d.ts.map +1 -0
- package/dist/tui/terminal-open.descriptor.js +18 -0
- package/dist/tui/terminal-open.descriptor.js.map +1 -0
- package/dist/tui/terminal-open.impl.consumer.d.ts +9 -0
- package/dist/tui/terminal-open.impl.consumer.d.ts.map +1 -0
- package/dist/tui/terminal-open.impl.consumer.js +13 -0
- package/dist/tui/terminal-open.impl.consumer.js.map +1 -0
- package/dist/tui/terminal-registry.descriptor.d.ts +11 -0
- package/dist/tui/terminal-registry.descriptor.d.ts.map +1 -0
- package/dist/tui/terminal-registry.descriptor.js +17 -0
- package/dist/tui/terminal-registry.descriptor.js.map +1 -0
- package/dist/tui/terminal-registry.impl.consumer.d.ts +71 -0
- package/dist/tui/terminal-registry.impl.consumer.d.ts.map +1 -0
- package/dist/tui/terminal-registry.impl.consumer.js +190 -0
- package/dist/tui/terminal-registry.impl.consumer.js.map +1 -0
- package/dist/tui/terminal-tui.plugin.d.ts +10 -0
- package/dist/tui/terminal-tui.plugin.d.ts.map +1 -0
- package/dist/tui/terminal-tui.plugin.js +32 -0
- package/dist/tui/terminal-tui.plugin.js.map +1 -0
- package/dist/tui/terminal.descriptor.d.ts +10 -0
- package/dist/tui/terminal.descriptor.d.ts.map +1 -0
- package/dist/tui/terminal.descriptor.js +25 -0
- package/dist/tui/terminal.descriptor.js.map +1 -0
- package/dist/tui/terminal.impl.consumer.d.ts +14 -0
- package/dist/tui/terminal.impl.consumer.d.ts.map +1 -0
- package/dist/tui/terminal.impl.consumer.js +189 -0
- package/dist/tui/terminal.impl.consumer.js.map +1 -0
- package/dist/tui/terminal.state-key.d.ts +30 -0
- package/dist/tui/terminal.state-key.d.ts.map +1 -0
- package/dist/tui/terminal.state-key.js +9 -0
- package/dist/tui/terminal.state-key.js.map +1 -0
- package/dist/tui/terminal.state.d.ts +152 -0
- package/dist/tui/terminal.state.d.ts.map +1 -0
- package/dist/tui/terminal.state.js +149 -0
- package/dist/tui/terminal.state.js.map +1 -0
- package/dist/workspace.d.ts +155 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/workspace.js +292 -0
- package/dist/workspace.js.map +1 -0
- package/package.json +228 -4
package/dist/client.js
ADDED
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local and explicitly remote terminal sessions over runtime/execution and
|
|
3
|
+
* kernel-rpc. The terminal semantic client owns remote identity and cleanup.
|
|
4
|
+
*/
|
|
5
|
+
import { CapabilityError, composeChildEnv } from '@vibesdotdev/kernel';
|
|
6
|
+
import { getVibesClient } from '@vibesdotdev/kernel/client';
|
|
7
|
+
import { OpenTerminalOptionsSchema, TerminalHostRefSchema } from "./schemas/session.js";
|
|
8
|
+
export { OpenTerminalOptionsSchema } from "./schemas/session.js";
|
|
9
|
+
import { getVibesRemoteFrom } from '@vibesdotdev/kernel-rpc';
|
|
10
|
+
import { adaptRemoteSession } from "./remote-session.js";
|
|
11
|
+
/**
|
|
12
|
+
* Options for opening a terminal session. A superset of L3's `SessionOptions`
|
|
13
|
+
* that this client maps onto `session()` — `command`/`args`/`cwd`/`env` plus the
|
|
14
|
+
* required `cols`/`rows` the renderer fits to.
|
|
15
|
+
*/
|
|
16
|
+
function admitTerminalOptions(input) {
|
|
17
|
+
try {
|
|
18
|
+
return OpenTerminalOptionsSchema.parse(input);
|
|
19
|
+
}
|
|
20
|
+
catch (cause) {
|
|
21
|
+
throw new CapabilityError('The terminal session request is invalid.', 'INVALID_INPUT', {
|
|
22
|
+
reason: 'terminal-session-request-invalid',
|
|
23
|
+
retryable: false,
|
|
24
|
+
cause
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/** A local session: exactly the kernel's composed environment for this runtime's host. */
|
|
29
|
+
function localSessionOptions(runtime, opts) {
|
|
30
|
+
return {
|
|
31
|
+
command: opts.command,
|
|
32
|
+
args: opts.args,
|
|
33
|
+
cwd: opts.cwd,
|
|
34
|
+
env: composeChildEnv(runtime, { env: opts.env ?? {} }),
|
|
35
|
+
envMode: 'replace',
|
|
36
|
+
cols: opts.cols,
|
|
37
|
+
rows: opts.rows
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* A remote session request: a declaration, never an environment (rc02-rc03
|
|
42
|
+
* C15, cross-host). The receiving host admits it and composes the child's
|
|
43
|
+
* environment on its own runtime (`composeDeclaredSession`); only the
|
|
44
|
+
* variables the caller names travel.
|
|
45
|
+
*/
|
|
46
|
+
export function remoteSessionRequest(opts) {
|
|
47
|
+
const admitted = admitTerminalOptions(opts);
|
|
48
|
+
const request = {
|
|
49
|
+
command: admitted.command,
|
|
50
|
+
cols: admitted.cols,
|
|
51
|
+
rows: admitted.rows,
|
|
52
|
+
declaration: admitted.env ? { env: admitted.env } : {}
|
|
53
|
+
};
|
|
54
|
+
if (admitted.args !== undefined)
|
|
55
|
+
request.args = admitted.args;
|
|
56
|
+
if (admitted.cwd !== undefined)
|
|
57
|
+
request.cwd = admitted.cwd;
|
|
58
|
+
return request;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Open a LOCAL terminal session against this runtime's execution impl.
|
|
62
|
+
*
|
|
63
|
+
* The default, zero-config path (Correction #1: local is the default). Resolves
|
|
64
|
+
* `runtime/execution` on consumer hardware (where `runtime-execution-local`
|
|
65
|
+
* self-registers `LocalExecution`) and opens a real Bun.Terminal PTY. The
|
|
66
|
+
* returned `ExecutionSession` is renderable directly by `<Terminal>`.
|
|
67
|
+
*
|
|
68
|
+
* Throws if no execution impl is resolvable here (e.g. on a CF Workers surface,
|
|
69
|
+
* which registers no PTY-capable impl) or if the impl lacks the `pty` capability.
|
|
70
|
+
*/
|
|
71
|
+
export async function openLocalSession(runtime, opts) {
|
|
72
|
+
const admitted = admitTerminalOptions(opts);
|
|
73
|
+
// Local-default resolution (Correction #1). The kind's `selectionBias:
|
|
74
|
+
// 'prefer-local'` picks the consumer impl. We do NOT constrain on
|
|
75
|
+
// `.matching({ capabilities: { pty: true } })` because that scope-capability
|
|
76
|
+
// filter checks the *environment's* declared capabilities, not the impl's
|
|
77
|
+
// own advertised mask — the PTY capability is the IMPL's fact, read off the
|
|
78
|
+
// resolved impl below via `getCapabilities()`.
|
|
79
|
+
const exec = await runtime
|
|
80
|
+
.query('runtime/execution')
|
|
81
|
+
.resolve();
|
|
82
|
+
const caps = exec.getCapabilities();
|
|
83
|
+
if (!caps.pty || caps.maxSessions <= 0) {
|
|
84
|
+
throw new CapabilityError('The selected execution provider cannot open a PTY session.', 'UNAVAILABLE', {
|
|
85
|
+
reason: 'terminal-pty-unavailable',
|
|
86
|
+
retryable: false
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
return exec.session(localSessionOptions(runtime, admitted));
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Open a REMOTE terminal session on a specific fleet host (L9b — phase 4).
|
|
93
|
+
*
|
|
94
|
+
* Remoteness is an EXPLICIT constraint (Correction #1) — the caller names the host
|
|
95
|
+
* ref; this client never picks a remote silently. The returned session is an RPC
|
|
96
|
+
* PROXY adapted to the canonical `ExecutionSession` shape: its byte stream rides
|
|
97
|
+
* L4's `stream` verb (the `'pty'` channel) and its `write`/`resize`/`signal`/`kill`
|
|
98
|
+
* are `invoke` calls. Its `exited()` read can reject with `RPC_DISCONNECTED` when
|
|
99
|
+
* the transport drops — the visible result-type difference `<Terminal>` renders as
|
|
100
|
+
* a disconnect banner. The component consumes it with IDENTICAL code to the local
|
|
101
|
+
* case (terminal.md §"Target design" — same UI, only a proxied session).
|
|
102
|
+
*
|
|
103
|
+
* Composition (no transport of its own):
|
|
104
|
+
* 1. Reach the host EXPLICITLY via `getVibesRemoteFrom(runtime,
|
|
105
|
+
* hostRef.runtimeId)` — the supplied runtime owns the registered
|
|
106
|
+
* `runtime/rpc` descriptor and credential loader; this client never
|
|
107
|
+
* reaches for an ambient registry or `discover()`s.
|
|
108
|
+
* 2. `query('runtime/execution')` over the wire → an execution proxy.
|
|
109
|
+
* 3. `session(opts)` → a session wire-proxy.
|
|
110
|
+
* 4. `adaptRemoteSession()` wraps that proxy in the `ExecutionSession` interface.
|
|
111
|
+
*
|
|
112
|
+
* The L5 authz + friction gates run on the HOST side inside L1's invoke pipeline
|
|
113
|
+
* (every arriving `invoke` is gated before the method applies) — this client does
|
|
114
|
+
* not re-implement them; an unauthorized peer or out-of-policy `session` open is
|
|
115
|
+
* denied at the host, surfacing here as a rejected invoke.
|
|
116
|
+
*/
|
|
117
|
+
export async function openRemoteSession(runtime, hostRef, opts) {
|
|
118
|
+
const reference = TerminalHostRefSchema.safeParse(hostRef);
|
|
119
|
+
if (!reference.success) {
|
|
120
|
+
throw new CapabilityError('The terminal runtime reference is invalid.', 'INVALID_INPUT', {
|
|
121
|
+
reason: 'terminal-remote-reference-invalid', retryable: false, cause: reference.error
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
if (reference.data.local) {
|
|
125
|
+
throw new CapabilityError('A remote terminal session requires an explicitly remote runtime reference.', 'INVALID_INPUT', {
|
|
126
|
+
reason: 'terminal-remote-reference-local',
|
|
127
|
+
retryable: false
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
const request = remoteSessionRequest(opts);
|
|
131
|
+
// 1) Reach the host EXPLICITLY. getVibesRemote is sugar over
|
|
132
|
+
// query('runtime/rpc').withId(id).resolve() + connect(). The returned
|
|
133
|
+
// RemoteRuntime pins its connection (and socket) alive until disposed.
|
|
134
|
+
const client = await getVibesClient('terminal', runtime);
|
|
135
|
+
client.prepareRemoteSession();
|
|
136
|
+
let remote;
|
|
137
|
+
try {
|
|
138
|
+
remote = await getVibesRemoteFrom(runtime, reference.data.runtimeId);
|
|
139
|
+
}
|
|
140
|
+
catch (cause) {
|
|
141
|
+
throw new CapabilityError('The terminal client could not reach the remote terminal host.', 'UNAVAILABLE', {
|
|
142
|
+
reason: 'terminal-remote-host-unavailable',
|
|
143
|
+
retryable: true,
|
|
144
|
+
cause
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
// Dispose the whole remote connection when the session ends — releasing the
|
|
148
|
+
// session ref on the host AND closing the socket so a closed terminal leaks
|
|
149
|
+
// neither a remote PTY nor a connection.
|
|
150
|
+
const disposeRemote = () => remote.close();
|
|
151
|
+
try {
|
|
152
|
+
// 2) Resolve the host's execution impl over the wire. The remote root's
|
|
153
|
+
// query(kindId) is a proxied invoke that returns an execution ref.
|
|
154
|
+
const exec = await remote.query('runtime/execution');
|
|
155
|
+
// 3) Open the interactive PTY session on the host. This invoke passes the
|
|
156
|
+
// host's L5 authz → friction gates before the PTY is created.
|
|
157
|
+
const sessionProxy = await exec.session(request);
|
|
158
|
+
// 4) Adapt the wire proxy into the canonical ExecutionSession the renderer
|
|
159
|
+
// consumes unchanged. onClose disposes the remote connection.
|
|
160
|
+
return adaptRemoteSession(runtime, sessionProxy, reference.data.runtimeId, disposeRemote);
|
|
161
|
+
}
|
|
162
|
+
catch (err) {
|
|
163
|
+
// On any failure during resolve/open, free the connection we just opened so a
|
|
164
|
+
// failed remote terminal never leaks a socket.
|
|
165
|
+
await disposeRemote();
|
|
166
|
+
throw err;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @vibesdotdev/terminal-client
|
|
3
|
+
*
|
|
4
|
+
* Session management for the terminal surface: resolve a renderable
|
|
5
|
+
* `ExecutionSession` from this runtime (local, L9a) or from an explicitly-named
|
|
6
|
+
* fleet host (remote proxy, L9b). Composes L3's `runtime/execution` and (for the
|
|
7
|
+
* remote path) L4's `runtime/rpc` verbs; ships no transport of its own.
|
|
8
|
+
*
|
|
9
|
+
* The portable plugin registers runtime/client:terminal.
|
|
10
|
+
*/
|
|
11
|
+
export { openLocalSession, openRemoteSession, type OpenTerminalOptions, type ExecutionSession } from './client.ts';
|
|
12
|
+
export { TerminalClient } from './terminal-runtime.ts';
|
|
13
|
+
export { OpenTerminalOptionsSchema } from './schemas/session.ts';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACN,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @vibesdotdev/terminal-client
|
|
3
|
+
*
|
|
4
|
+
* Session management for the terminal surface: resolve a renderable
|
|
5
|
+
* `ExecutionSession` from this runtime (local, L9a) or from an explicitly-named
|
|
6
|
+
* fleet host (remote proxy, L9b). Composes L3's `runtime/execution` and (for the
|
|
7
|
+
* remote path) L4's `runtime/rpc` verbs; ships no transport of its own.
|
|
8
|
+
*
|
|
9
|
+
* The portable plugin registers runtime/client:terminal.
|
|
10
|
+
*/
|
|
11
|
+
export { openLocalSession, openRemoteSession } from "./client.js";
|
|
12
|
+
export { TerminalClient } from "./terminal-runtime.js";
|
|
13
|
+
export { OpenTerminalOptionsSchema } from "./schemas/session.js";
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACN,gBAAgB,EAChB,iBAAiB,EAGjB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @vibesdotdev/terminal-client/pty-bridge
|
|
3
|
+
*
|
|
4
|
+
* A tiny PTY-websocket bridge: a Bun-only server (`./server`) that opens a REAL
|
|
5
|
+
* PTY inside a container and streams it over a websocket, plus the pure,
|
|
6
|
+
* workerd-safe wire protocol (`./protocol`) shared with any client that bridges
|
|
7
|
+
* an `ExecutionSession` to it. The mechanism that makes cloud terminals HONESTLY
|
|
8
|
+
* interactive (`pty:true`) even though workerd itself has no PTY: the PTY lives
|
|
9
|
+
* in the CF Sandbox container; the client speaks to it over the exposed port.
|
|
10
|
+
*
|
|
11
|
+
* The default entry re-exports ONLY the workerd-safe protocol — importing the
|
|
12
|
+
* package index never pulls Bun in. The Bun server lives behind `./server`.
|
|
13
|
+
*/
|
|
14
|
+
export { type ClientFrame, type ServerControlFrame, bytesToBase64, base64ToBytes, encodeStdinFrame, encodeResizeFrame, encodeSignalFrame, decodeClientFrame, encodeExitFrame, decodeServerControlFrame } from './protocol.ts';
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pty-bridge/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACN,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,wBAAwB,EACxB,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @vibesdotdev/terminal-client/pty-bridge
|
|
3
|
+
*
|
|
4
|
+
* A tiny PTY-websocket bridge: a Bun-only server (`./server`) that opens a REAL
|
|
5
|
+
* PTY inside a container and streams it over a websocket, plus the pure,
|
|
6
|
+
* workerd-safe wire protocol (`./protocol`) shared with any client that bridges
|
|
7
|
+
* an `ExecutionSession` to it. The mechanism that makes cloud terminals HONESTLY
|
|
8
|
+
* interactive (`pty:true`) even though workerd itself has no PTY: the PTY lives
|
|
9
|
+
* in the CF Sandbox container; the client speaks to it over the exposed port.
|
|
10
|
+
*
|
|
11
|
+
* The default entry re-exports ONLY the workerd-safe protocol — importing the
|
|
12
|
+
* package index never pulls Bun in. The Bun server lives behind `./server`.
|
|
13
|
+
*/
|
|
14
|
+
export { bytesToBase64, base64ToBytes, encodeStdinFrame, encodeResizeFrame, encodeSignalFrame, decodeClientFrame, encodeExitFrame, decodeServerControlFrame } from "./protocol.js";
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pty-bridge/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAGN,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,wBAAwB,EACxB,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compatibility names for the runtime-owned terminal PTY wire contract.
|
|
3
|
+
* The feature consumes the protocol; the runtime kernel owns its neutral schema.
|
|
4
|
+
*/
|
|
5
|
+
export { terminalPtyBytesToBase64 as bytesToBase64, terminalPtyBase64ToBytes as base64ToBytes, encodeTerminalPtyStdinFrame as encodeStdinFrame, encodeTerminalPtyResizeFrame as encodeResizeFrame, encodeTerminalPtySignalFrame as encodeSignalFrame, decodeTerminalPtyClientFrame as decodeClientFrame, encodeTerminalPtyExitFrame as encodeExitFrame, decodeTerminalPtyServerControlFrame as decodeServerControlFrame, type TerminalPtyClientFrame as ClientFrame, type TerminalPtyServerControlFrame as ServerControlFrame } from '@vibesdotdev/kernel/execution';
|
|
6
|
+
//# sourceMappingURL=protocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/pty-bridge/protocol.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACN,wBAAwB,IAAI,aAAa,EACzC,wBAAwB,IAAI,aAAa,EACzC,2BAA2B,IAAI,gBAAgB,EAC/C,4BAA4B,IAAI,iBAAiB,EACjD,4BAA4B,IAAI,iBAAiB,EACjD,4BAA4B,IAAI,iBAAiB,EACjD,0BAA0B,IAAI,eAAe,EAC7C,mCAAmC,IAAI,wBAAwB,EAC/D,KAAK,sBAAsB,IAAI,WAAW,EAC1C,KAAK,6BAA6B,IAAI,kBAAkB,EACxD,MAAM,+BAA+B,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compatibility names for the runtime-owned terminal PTY wire contract.
|
|
3
|
+
* The feature consumes the protocol; the runtime kernel owns its neutral schema.
|
|
4
|
+
*/
|
|
5
|
+
export { terminalPtyBytesToBase64 as bytesToBase64, terminalPtyBase64ToBytes as base64ToBytes, encodeTerminalPtyStdinFrame as encodeStdinFrame, encodeTerminalPtyResizeFrame as encodeResizeFrame, encodeTerminalPtySignalFrame as encodeSignalFrame, decodeTerminalPtyClientFrame as decodeClientFrame, encodeTerminalPtyExitFrame as encodeExitFrame, decodeTerminalPtyServerControlFrame as decodeServerControlFrame } from '@vibesdotdev/kernel/execution';
|
|
6
|
+
//# sourceMappingURL=protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/pty-bridge/protocol.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACN,wBAAwB,IAAI,aAAa,EACzC,wBAAwB,IAAI,aAAa,EACzC,2BAA2B,IAAI,gBAAgB,EAC/C,4BAA4B,IAAI,iBAAiB,EACjD,4BAA4B,IAAI,iBAAiB,EACjD,4BAA4B,IAAI,iBAAiB,EACjD,0BAA0B,IAAI,eAAe,EAC7C,mCAAmC,IAAI,wBAAwB,EAG/D,MAAM,+BAA+B,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compatibility composition root for the Bun-owned PTY websocket host.
|
|
3
|
+
* New host code imports `@vibesdotdev/host-bun/terminal-pty-bridge`.
|
|
4
|
+
*/
|
|
5
|
+
import { ptyServerConfigFromEnv, runPtyWsServerFromCli, startPtyWsServer, type PtyServerConfig } from '@vibesdotdev/host-bun/terminal-pty-bridge';
|
|
6
|
+
export { ptyServerConfigFromEnv, runPtyWsServerFromCli, startPtyWsServer, type PtyServerConfig };
|
|
7
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/pty-bridge/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACN,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EAChB,KAAK,eAAe,EACpB,MAAM,2CAA2C,CAAC;AAEnD,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,KAAK,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compatibility composition root for the Bun-owned PTY websocket host.
|
|
3
|
+
* New host code imports `@vibesdotdev/host-bun/terminal-pty-bridge`.
|
|
4
|
+
*/
|
|
5
|
+
import { ptyServerConfigFromEnv, runPtyWsServerFromCli, startPtyWsServer } from '@vibesdotdev/host-bun/terminal-pty-bridge';
|
|
6
|
+
export { ptyServerConfigFromEnv, runPtyWsServerFromCli, startPtyWsServer };
|
|
7
|
+
if (import.meta.main)
|
|
8
|
+
await runPtyWsServerFromCli();
|
|
9
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/pty-bridge/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACN,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EAEhB,MAAM,2CAA2C,CAAC;AAEnD,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,gBAAgB,EAAwB,CAAC;AAEjG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI;IAAE,MAAM,qBAAqB,EAAE,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* remote-session — adapt an RPC session WIRE-PROXY into a real `ExecutionSession`.
|
|
3
|
+
*
|
|
4
|
+
* `openRemoteSession` reaches a fleet host's `runtime/execution` impl over L4's
|
|
5
|
+
* RPC and calls `session(opts)`. What comes back is NOT an `ExecutionSession` — it
|
|
6
|
+
* is a kind-agnostic wire proxy (`makeRemoteProxy`) whose surface is:
|
|
7
|
+
*
|
|
8
|
+
* - the methods the OWNER declared when it classified the session as a ref
|
|
9
|
+
* (`write` / `resize` / `signal` / `exited` / `kill`) — each an `invoke` that
|
|
10
|
+
* resolves to a Promise; and
|
|
11
|
+
* - `__openStream(channel)` — opens the raw byte channel (`stream` verb) the PTY
|
|
12
|
+
* output rides (the consumer names the channel `'pty'`, never the protocol).
|
|
13
|
+
*
|
|
14
|
+
* The terminal-svelte `<Terminal>` component consumes the canonical L3
|
|
15
|
+
* `ExecutionSession` interface UNCHANGED — synchronous `write`/`resize`/`signal`/
|
|
16
|
+
* `kill`, an `onOutput(handler) => unsubscribe`, an `exited(): Promise<…>`, and the
|
|
17
|
+
* readonly `id`/`environmentId`. This adapter is the bridge: it makes a proxy
|
|
18
|
+
* session look IDENTICAL to a local one so the component never forks on transport
|
|
19
|
+
* (the whole point of the proxy model — terminal.md §"Target design").
|
|
20
|
+
*
|
|
21
|
+
* Remoteness stays VISIBLE in behavior (Correction #1): when the transport drops,
|
|
22
|
+
* `exited()` rejects with `RPC_DISCONNECTED` (the proxy invoke fails) — which the
|
|
23
|
+
* component already renders as a disconnect banner. This adapter never silently
|
|
24
|
+
* swallows a disconnect into a clean exit.
|
|
25
|
+
*
|
|
26
|
+
* This module ships NO transport of its own — it composes the proxy `runtime-rpc`
|
|
27
|
+
* already minted. It only translates async-proxy semantics into the synchronous
|
|
28
|
+
* `ExecutionSession` shape the renderer expects.
|
|
29
|
+
*/
|
|
30
|
+
import { type VibesRuntime } from '@vibesdotdev/kernel';
|
|
31
|
+
import type { ExecutionSession } from '@vibesdotdev/kernel/execution';
|
|
32
|
+
/**
|
|
33
|
+
* The session wire-proxy surface, as the owner declared it (see the execution
|
|
34
|
+
* listen target's `classifyResult`). Every method is an `invoke` → a Promise; the
|
|
35
|
+
* stream channel is opened via the proxy's `__openStream`. `id`/`environmentId`
|
|
36
|
+
* are NOT on the wire (they were readonly props, not methods) — this adapter
|
|
37
|
+
* synthesizes them.
|
|
38
|
+
*/
|
|
39
|
+
export type { RemoteSessionProxy } from './schemas/remote.ts';
|
|
40
|
+
import { type RemoteSessionProxy } from './schemas/remote.ts';
|
|
41
|
+
/**
|
|
42
|
+
* Wrap a session wire-proxy in the canonical `ExecutionSession` interface.
|
|
43
|
+
*
|
|
44
|
+
* @param proxy the wire proxy returned by `exec.session(opts)` over RPC.
|
|
45
|
+
* @param hostId the explicitly-named host (for a stable, descriptive session id).
|
|
46
|
+
* @param onClose optional teardown run when the session is killed/exited — used by
|
|
47
|
+
* the client to dispose the underlying RPC connection so a closed
|
|
48
|
+
* terminal frees the remote PTY *and* its socket (no leak).
|
|
49
|
+
*/
|
|
50
|
+
export declare function adaptRemoteSession(runtime: VibesRuntime, proxyInput: RemoteSessionProxy, hostIdInput: string, onClose?: () => void | Promise<void>): ExecutionSession;
|
|
51
|
+
//# sourceMappingURL=remote-session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-session.d.ts","sourceRoot":"","sources":["../src/remote-session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAKN,KAAK,YAAY,EACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAStE;;;;;;GAMG;AACH,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAA4D,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAUxH;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CACjC,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,kBAAkB,EAC9B,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAClC,gBAAgB,CA8QlB"}
|