@finalai/agent-provider 0.1.0
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.
Potentially problematic release.
This version of @finalai/agent-provider might be problematic. Click here for more details.
- package/README.md +12 -0
- package/dist/modules/channel-context.d.mts +102 -0
- package/dist/modules/channel-context.mjs +52 -0
- package/dist/modules/channel-context.mjs.map +7 -0
- package/dist/modules/channel-socket.d.mts +65 -0
- package/dist/modules/channel-socket.mjs +188 -0
- package/dist/modules/channel-socket.mjs.map +7 -0
- package/dist/modules/channel.d.mts +382 -0
- package/dist/modules/channel.mjs +146 -0
- package/dist/modules/channel.mjs.map +7 -0
- package/dist/modules/conformance/agent.d.mts +20 -0
- package/dist/modules/conformance/agent.mjs +623 -0
- package/dist/modules/conformance/agent.mjs.map +7 -0
- package/dist/modules/conformance/fixtures.d.mts +41 -0
- package/dist/modules/conformance/fixtures.mjs +190 -0
- package/dist/modules/conformance/fixtures.mjs.map +7 -0
- package/dist/modules/conformance/harness-kit.d.mts +82 -0
- package/dist/modules/conformance/harness-kit.mjs +1303 -0
- package/dist/modules/conformance/harness-kit.mjs.map +7 -0
- package/dist/modules/conformance/image.d.mts +2 -0
- package/dist/modules/conformance/image.mjs +79 -0
- package/dist/modules/conformance/image.mjs.map +7 -0
- package/dist/modules/conformance/index.d.mts +8 -0
- package/dist/modules/conformance/index.mjs +12 -0
- package/dist/modules/conformance/index.mjs.map +7 -0
- package/dist/modules/conformance/local-harness.d.mts +25 -0
- package/dist/modules/conformance/local-harness.mjs +108 -0
- package/dist/modules/conformance/local-harness.mjs.map +7 -0
- package/dist/modules/conformance/protocol.d.mts +30 -0
- package/dist/modules/conformance/protocol.mjs +56 -0
- package/dist/modules/conformance/protocol.mjs.map +7 -0
- package/dist/modules/conformance/sandbox-kit.d.mts +19 -0
- package/dist/modules/conformance/sandbox-kit.mjs +320 -0
- package/dist/modules/conformance/sandbox-kit.mjs.map +7 -0
- package/dist/modules/conformance/scripted-model/chat-completions.d.mts +30 -0
- package/dist/modules/conformance/scripted-model/chat-completions.mjs +125 -0
- package/dist/modules/conformance/scripted-model/chat-completions.mjs.map +7 -0
- package/dist/modules/conformance/scripted-model/directives.d.mts +84 -0
- package/dist/modules/conformance/scripted-model/directives.mjs +304 -0
- package/dist/modules/conformance/scripted-model/directives.mjs.map +7 -0
- package/dist/modules/conformance/scripted-model/handler.d.mts +14 -0
- package/dist/modules/conformance/scripted-model/handler.mjs +133 -0
- package/dist/modules/conformance/scripted-model/handler.mjs.map +7 -0
- package/dist/modules/conformance/scripted-model/index.d.mts +6 -0
- package/dist/modules/conformance/scripted-model/index.mjs +7 -0
- package/dist/modules/conformance/scripted-model/index.mjs.map +7 -0
- package/dist/modules/conformance/scripted-model/messages.d.mts +39 -0
- package/dist/modules/conformance/scripted-model/messages.mjs +139 -0
- package/dist/modules/conformance/scripted-model/messages.mjs.map +7 -0
- package/dist/modules/conformance/scripted-model/responses.d.mts +62 -0
- package/dist/modules/conformance/scripted-model/responses.mjs +273 -0
- package/dist/modules/conformance/scripted-model/responses.mjs.map +7 -0
- package/dist/modules/conformance/scripted-model/sse.d.mts +15 -0
- package/dist/modules/conformance/scripted-model/sse.mjs +75 -0
- package/dist/modules/conformance/scripted-model/sse.mjs.map +7 -0
- package/dist/modules/conformance/v1-agent.d.mts +24 -0
- package/dist/modules/conformance/v1-agent.mjs +40 -0
- package/dist/modules/conformance/v1-agent.mjs.map +7 -0
- package/dist/modules/credential-routes.d.mts +24 -0
- package/dist/modules/credential-routes.mjs +25 -0
- package/dist/modules/credential-routes.mjs.map +7 -0
- package/dist/modules/credentials.d.mts +206 -0
- package/dist/modules/credentials.mjs +207 -0
- package/dist/modules/credentials.mjs.map +7 -0
- package/dist/modules/dynamic.d.mts +32 -0
- package/dist/modules/dynamic.mjs +77 -0
- package/dist/modules/dynamic.mjs.map +7 -0
- package/dist/modules/harness.d.mts +397 -0
- package/dist/modules/harness.mjs +213 -0
- package/dist/modules/harness.mjs.map +7 -0
- package/dist/modules/index.d.mts +15 -0
- package/dist/modules/index.mjs +40 -0
- package/dist/modules/index.mjs.map +7 -0
- package/dist/modules/json.d.mts +12 -0
- package/dist/modules/json.mjs +19 -0
- package/dist/modules/json.mjs.map +7 -0
- package/dist/modules/local-channel-socket.d.mts +23 -0
- package/dist/modules/local-channel-socket.mjs +141 -0
- package/dist/modules/local-channel-socket.mjs.map +7 -0
- package/dist/modules/manifest.d.mts +558 -0
- package/dist/modules/manifest.mjs +266 -0
- package/dist/modules/manifest.mjs.map +7 -0
- package/dist/modules/mcp-content.d.mts +21 -0
- package/dist/modules/mcp-content.mjs +86 -0
- package/dist/modules/mcp-content.mjs.map +7 -0
- package/dist/modules/provider-ref.d.mts +29 -0
- package/dist/modules/provider-ref.mjs +55 -0
- package/dist/modules/provider-ref.mjs.map +7 -0
- package/dist/modules/sandbox/bytes.d.mts +9 -0
- package/dist/modules/sandbox/bytes.mjs +154 -0
- package/dist/modules/sandbox/bytes.mjs.map +7 -0
- package/dist/modules/sandbox/client.d.mts +51 -0
- package/dist/modules/sandbox/client.mjs +500 -0
- package/dist/modules/sandbox/client.mjs.map +7 -0
- package/dist/modules/sandbox/confined-files.d.mts +22 -0
- package/dist/modules/sandbox/confined-files.mjs +142 -0
- package/dist/modules/sandbox/confined-files.mjs.map +7 -0
- package/dist/modules/sandbox/convenience.d.mts +10 -0
- package/dist/modules/sandbox/convenience.mjs +116 -0
- package/dist/modules/sandbox/convenience.mjs.map +7 -0
- package/dist/modules/sandbox/editor.d.mts +49 -0
- package/dist/modules/sandbox/editor.mjs +43 -0
- package/dist/modules/sandbox/editor.mjs.map +7 -0
- package/dist/modules/sandbox/frame-channel.d.mts +47 -0
- package/dist/modules/sandbox/frame-channel.mjs +153 -0
- package/dist/modules/sandbox/frame-channel.mjs.map +7 -0
- package/dist/modules/sandbox/index.d.mts +18 -0
- package/dist/modules/sandbox/index.mjs +70 -0
- package/dist/modules/sandbox/index.mjs.map +7 -0
- package/dist/modules/sandbox/mcp-channel.d.mts +9 -0
- package/dist/modules/sandbox/mcp-channel.mjs +77 -0
- package/dist/modules/sandbox/mcp-channel.mjs.map +7 -0
- package/dist/modules/sandbox/mcp-hosted.d.mts +46 -0
- package/dist/modules/sandbox/mcp-hosted.mjs +221 -0
- package/dist/modules/sandbox/mcp-hosted.mjs.map +7 -0
- package/dist/modules/sandbox/mcp-search.d.mts +51 -0
- package/dist/modules/sandbox/mcp-search.mjs +129 -0
- package/dist/modules/sandbox/mcp-search.mjs.map +7 -0
- package/dist/modules/sandbox/mcp-shell.d.mts +21 -0
- package/dist/modules/sandbox/mcp-shell.mjs +205 -0
- package/dist/modules/sandbox/mcp-shell.mjs.map +7 -0
- package/dist/modules/sandbox/mcp-testing.d.mts +11 -0
- package/dist/modules/sandbox/mcp-testing.mjs +33 -0
- package/dist/modules/sandbox/mcp-testing.mjs.map +7 -0
- package/dist/modules/sandbox/mcp.d.mts +83 -0
- package/dist/modules/sandbox/mcp.mjs +971 -0
- package/dist/modules/sandbox/mcp.mjs.map +7 -0
- package/dist/modules/sandbox/memory-sandbox.d.mts +32 -0
- package/dist/modules/sandbox/memory-sandbox.mjs +416 -0
- package/dist/modules/sandbox/memory-sandbox.mjs.map +7 -0
- package/dist/modules/sandbox/memory-shell.d.mts +29 -0
- package/dist/modules/sandbox/memory-shell.mjs +278 -0
- package/dist/modules/sandbox/memory-shell.mjs.map +7 -0
- package/dist/modules/sandbox/open-scope-node.d.mts +4 -0
- package/dist/modules/sandbox/open-scope-node.mjs +19 -0
- package/dist/modules/sandbox/open-scope-node.mjs.map +7 -0
- package/dist/modules/sandbox/open-scope.d.mts +16 -0
- package/dist/modules/sandbox/open-scope.mjs +66 -0
- package/dist/modules/sandbox/open-scope.mjs.map +7 -0
- package/dist/modules/sandbox/paths.d.mts +7 -0
- package/dist/modules/sandbox/paths.mjs +50 -0
- package/dist/modules/sandbox/paths.mjs.map +7 -0
- package/dist/modules/sandbox/rpc-peer.d.mts +35 -0
- package/dist/modules/sandbox/rpc-peer.mjs +224 -0
- package/dist/modules/sandbox/rpc-peer.mjs.map +7 -0
- package/dist/modules/sandbox/seeds.d.mts +26 -0
- package/dist/modules/sandbox/seeds.mjs +228 -0
- package/dist/modules/sandbox/seeds.mjs.map +7 -0
- package/dist/modules/sandbox/server.d.mts +66 -0
- package/dist/modules/sandbox/server.mjs +567 -0
- package/dist/modules/sandbox/server.mjs.map +7 -0
- package/dist/modules/sandbox/snapshots.d.mts +49 -0
- package/dist/modules/sandbox/snapshots.mjs +55 -0
- package/dist/modules/sandbox/snapshots.mjs.map +7 -0
- package/dist/modules/sandbox/stream-mux.d.mts +18 -0
- package/dist/modules/sandbox/stream-mux.mjs +285 -0
- package/dist/modules/sandbox/stream-mux.mjs.map +7 -0
- package/dist/modules/sandbox/testing.d.mts +25 -0
- package/dist/modules/sandbox/testing.mjs +64 -0
- package/dist/modules/sandbox/testing.mjs.map +7 -0
- package/dist/modules/sandbox/types.d.mts +352 -0
- package/dist/modules/sandbox/types.mjs +86 -0
- package/dist/modules/sandbox/types.mjs.map +7 -0
- package/dist/modules/sandbox/wire.d.mts +671 -0
- package/dist/modules/sandbox/wire.mjs +537 -0
- package/dist/modules/sandbox/wire.mjs.map +7 -0
- package/dist/modules/sandbox/workspace-root.d.mts +8 -0
- package/dist/modules/sandbox/workspace-root.mjs +79 -0
- package/dist/modules/sandbox/workspace-root.mjs.map +7 -0
- package/dist/modules/schemas.d.mts +121 -0
- package/dist/modules/schemas.mjs +146 -0
- package/dist/modules/schemas.mjs.map +7 -0
- package/dist/modules/semantic-events.d.mts +31 -0
- package/dist/modules/semantic-events.mjs +23 -0
- package/dist/modules/semantic-events.mjs.map +7 -0
- package/package.json +199 -0
|
@@ -0,0 +1,537 @@
|
|
|
1
|
+
import * as z from "zod";
|
|
2
|
+
import { jsonValueSchema } from "../json.mjs";
|
|
3
|
+
import { NetworkPolicy, PortProtocol, SandboxCapability, SandboxEntryType } from "./types.mjs";
|
|
4
|
+
const HANDLE_RPC_VERSION = 1;
|
|
5
|
+
const HANDLE_RPC_SUBPROTOCOL = "final.handle-rpc.v1";
|
|
6
|
+
const HANDLE_RPC_BEARER_PROTOCOL_PREFIX = "bearer.";
|
|
7
|
+
const MAX_CHUNK_BYTES = 256 * 1024;
|
|
8
|
+
const INITIAL_STREAM_WINDOW_BYTES = 1024 * 1024;
|
|
9
|
+
const MAX_INLINE_WRITE_BYTES = 64 * 1024;
|
|
10
|
+
const BINARY_FRAME_MAGIC = 241;
|
|
11
|
+
const BINARY_FRAME_HEADER_BYTES = 6;
|
|
12
|
+
const MAX_STREAM_ID = 4294967295;
|
|
13
|
+
var BinaryFrameKind = /* @__PURE__ */ ((BinaryFrameKind2) => {
|
|
14
|
+
BinaryFrameKind2[BinaryFrameKind2["Chunk"] = 1] = "Chunk";
|
|
15
|
+
return BinaryFrameKind2;
|
|
16
|
+
})(BinaryFrameKind || {});
|
|
17
|
+
var HandleRpcCloseCode = /* @__PURE__ */ ((HandleRpcCloseCode2) => {
|
|
18
|
+
HandleRpcCloseCode2[HandleRpcCloseCode2["Normal"] = 1e3] = "Normal";
|
|
19
|
+
HandleRpcCloseCode2[HandleRpcCloseCode2["ProtocolError"] = 4400] = "ProtocolError";
|
|
20
|
+
HandleRpcCloseCode2[HandleRpcCloseCode2["Unauthorized"] = 4401] = "Unauthorized";
|
|
21
|
+
return HandleRpcCloseCode2;
|
|
22
|
+
})(HandleRpcCloseCode || {});
|
|
23
|
+
var HandleRpcErrorCode = /* @__PURE__ */ ((HandleRpcErrorCode2) => {
|
|
24
|
+
HandleRpcErrorCode2[HandleRpcErrorCode2["ParseError"] = -32700] = "ParseError";
|
|
25
|
+
HandleRpcErrorCode2[HandleRpcErrorCode2["InvalidRequest"] = -32600] = "InvalidRequest";
|
|
26
|
+
HandleRpcErrorCode2[HandleRpcErrorCode2["MethodNotFound"] = -32601] = "MethodNotFound";
|
|
27
|
+
HandleRpcErrorCode2[HandleRpcErrorCode2["InvalidParams"] = -32602] = "InvalidParams";
|
|
28
|
+
HandleRpcErrorCode2[HandleRpcErrorCode2["Internal"] = -32603] = "Internal";
|
|
29
|
+
HandleRpcErrorCode2[HandleRpcErrorCode2["Unauthorized"] = -32001] = "Unauthorized";
|
|
30
|
+
HandleRpcErrorCode2[HandleRpcErrorCode2["NotInitialized"] = -32002] = "NotInitialized";
|
|
31
|
+
HandleRpcErrorCode2[HandleRpcErrorCode2["Forbidden"] = -32010] = "Forbidden";
|
|
32
|
+
HandleRpcErrorCode2[HandleRpcErrorCode2["NotFound"] = -32011] = "NotFound";
|
|
33
|
+
HandleRpcErrorCode2[HandleRpcErrorCode2["Unsupported"] = -32012] = "Unsupported";
|
|
34
|
+
HandleRpcErrorCode2[HandleRpcErrorCode2["ConnectionClosed"] = -32013] = "ConnectionClosed";
|
|
35
|
+
HandleRpcErrorCode2[HandleRpcErrorCode2["Timeout"] = -32014] = "Timeout";
|
|
36
|
+
HandleRpcErrorCode2[HandleRpcErrorCode2["Cancelled"] = -32800] = "Cancelled";
|
|
37
|
+
return HandleRpcErrorCode2;
|
|
38
|
+
})(HandleRpcErrorCode || {});
|
|
39
|
+
var HandleRpcMethod = /* @__PURE__ */ ((HandleRpcMethod2) => {
|
|
40
|
+
HandleRpcMethod2["Initialize"] = "initialize";
|
|
41
|
+
HandleRpcMethod2["Describe"] = "sandbox/describe";
|
|
42
|
+
HandleRpcMethod2["ReadFile"] = "sandbox/readFile";
|
|
43
|
+
HandleRpcMethod2["ReadTextFile"] = "sandbox/readTextFile";
|
|
44
|
+
HandleRpcMethod2["WriteFile"] = "sandbox/writeFile";
|
|
45
|
+
HandleRpcMethod2["Spawn"] = "sandbox/spawn";
|
|
46
|
+
HandleRpcMethod2["Run"] = "sandbox/run";
|
|
47
|
+
HandleRpcMethod2["Stat"] = "sandbox/stat";
|
|
48
|
+
HandleRpcMethod2["ReadDir"] = "sandbox/readDir";
|
|
49
|
+
HandleRpcMethod2["RemovePath"] = "sandbox/removePath";
|
|
50
|
+
HandleRpcMethod2["GetPortEndpoint"] = "sandbox/getPortEndpoint";
|
|
51
|
+
HandleRpcMethod2["Stop"] = "sandbox/stop";
|
|
52
|
+
HandleRpcMethod2["Destroy"] = "sandbox/destroy";
|
|
53
|
+
HandleRpcMethod2["SetNetworkPolicy"] = "sandbox/setNetworkPolicy";
|
|
54
|
+
HandleRpcMethod2["OnSandboxStop"] = "handle/onSandboxStop";
|
|
55
|
+
HandleRpcMethod2["OnSandboxDelete"] = "handle/onSandboxDelete";
|
|
56
|
+
HandleRpcMethod2["OnRuntimeShutdown"] = "handle/onRuntimeShutdown";
|
|
57
|
+
HandleRpcMethod2["ComputerUse"] = "sandbox/computerUse";
|
|
58
|
+
HandleRpcMethod2["Screen"] = "sandbox/screen";
|
|
59
|
+
HandleRpcMethod2["LocalMcp"] = "sandbox/localMcp";
|
|
60
|
+
HandleRpcMethod2["McpOpen"] = "mcp/open";
|
|
61
|
+
HandleRpcMethod2["McpSend"] = "mcp/send";
|
|
62
|
+
HandleRpcMethod2["McpReceive"] = "mcp/receive";
|
|
63
|
+
HandleRpcMethod2["McpClose"] = "mcp/close";
|
|
64
|
+
HandleRpcMethod2["ProcessWait"] = "process/wait";
|
|
65
|
+
HandleRpcMethod2["ProcessKill"] = "process/kill";
|
|
66
|
+
HandleRpcMethod2["AuthRefresh"] = "auth/refresh";
|
|
67
|
+
return HandleRpcMethod2;
|
|
68
|
+
})(HandleRpcMethod || {});
|
|
69
|
+
var HandleRpcNotification = /* @__PURE__ */ ((HandleRpcNotification2) => {
|
|
70
|
+
HandleRpcNotification2["CancelRequest"] = "$/cancel_request";
|
|
71
|
+
HandleRpcNotification2["StreamChunk"] = "stream/chunk";
|
|
72
|
+
HandleRpcNotification2["StreamEnd"] = "stream/end";
|
|
73
|
+
HandleRpcNotification2["StreamError"] = "stream/error";
|
|
74
|
+
HandleRpcNotification2["StreamCredit"] = "stream/credit";
|
|
75
|
+
HandleRpcNotification2["StreamCancel"] = "stream/cancel";
|
|
76
|
+
return HandleRpcNotification2;
|
|
77
|
+
})(HandleRpcNotification || {});
|
|
78
|
+
const handleRpcError = (args) => Object.assign(new Error(args.message), {
|
|
79
|
+
name: "HandleRpcError",
|
|
80
|
+
code: args.code,
|
|
81
|
+
retryable: args.retryable ?? false,
|
|
82
|
+
errno: args.errno ?? null,
|
|
83
|
+
data: args.data ?? null
|
|
84
|
+
});
|
|
85
|
+
const handleRpcErrorFieldsSchema = z.object({ code: z.number(), retryable: z.boolean() });
|
|
86
|
+
const errnoFieldsSchema = z.object({ code: z.string() });
|
|
87
|
+
const isHandleRpcError = (cause) => cause instanceof Error && handleRpcErrorFieldsSchema.safeParse(cause).success;
|
|
88
|
+
const errnoOf = (cause) => {
|
|
89
|
+
if (isHandleRpcError(cause)) return cause.errno;
|
|
90
|
+
if (!(cause instanceof Error)) return null;
|
|
91
|
+
const parsed = errnoFieldsSchema.safeParse(cause);
|
|
92
|
+
return parsed.success ? parsed.data.code : null;
|
|
93
|
+
};
|
|
94
|
+
const jsonRpcIdSchema = z.union([z.string(), z.number().int()]);
|
|
95
|
+
const jsonRpcRequestSchema = z.object({
|
|
96
|
+
jsonrpc: z.literal("2.0"),
|
|
97
|
+
id: jsonRpcIdSchema,
|
|
98
|
+
method: z.string().min(1),
|
|
99
|
+
params: jsonValueSchema.optional()
|
|
100
|
+
});
|
|
101
|
+
const jsonRpcNotificationSchema = z.object({
|
|
102
|
+
jsonrpc: z.literal("2.0"),
|
|
103
|
+
method: z.string().min(1),
|
|
104
|
+
params: jsonValueSchema.optional()
|
|
105
|
+
});
|
|
106
|
+
const jsonRpcErrorObjectSchema = z.object({
|
|
107
|
+
code: z.number().int(),
|
|
108
|
+
message: z.string(),
|
|
109
|
+
data: jsonValueSchema.optional()
|
|
110
|
+
});
|
|
111
|
+
const jsonRpcSuccessSchema = z.object({
|
|
112
|
+
jsonrpc: z.literal("2.0"),
|
|
113
|
+
id: jsonRpcIdSchema,
|
|
114
|
+
result: jsonValueSchema
|
|
115
|
+
});
|
|
116
|
+
const jsonRpcErrorResponseSchema = z.object({
|
|
117
|
+
jsonrpc: z.literal("2.0"),
|
|
118
|
+
id: jsonRpcIdSchema.nullable(),
|
|
119
|
+
error: jsonRpcErrorObjectSchema
|
|
120
|
+
});
|
|
121
|
+
const handleRpcErrorDataSchema = z.object({
|
|
122
|
+
errno: z.string().nullable().optional(),
|
|
123
|
+
retryable: z.boolean().optional()
|
|
124
|
+
});
|
|
125
|
+
const streamIdSchema = z.number().int().min(0).max(MAX_STREAM_ID);
|
|
126
|
+
const pathSchema = z.string().min(1);
|
|
127
|
+
const isSandboxCapability = (value) => Object.values(SandboxCapability).some((capability) => capability === value);
|
|
128
|
+
const sandboxCapabilitiesSchema = z.array(z.string()).transform((values) => values.filter(isSandboxCapability));
|
|
129
|
+
const isSandboxEntryType = (value) => Object.values(SandboxEntryType).some((entryType) => entryType === value);
|
|
130
|
+
const entryTypeSchema = z.string().transform((value) => isSandboxEntryType(value) ? value : SandboxEntryType.Other);
|
|
131
|
+
const statSchema = z.object({
|
|
132
|
+
path: z.string(),
|
|
133
|
+
type: entryTypeSchema,
|
|
134
|
+
size: z.number().nonnegative(),
|
|
135
|
+
modifiedAt: z.string().nullable(),
|
|
136
|
+
mode: z.number().int().nullable()
|
|
137
|
+
});
|
|
138
|
+
const dirEntrySchema = z.object({
|
|
139
|
+
name: z.string(),
|
|
140
|
+
path: z.string(),
|
|
141
|
+
type: entryTypeSchema,
|
|
142
|
+
size: z.number().nonnegative().nullable()
|
|
143
|
+
});
|
|
144
|
+
const mcpEndpointSchema = z.object({
|
|
145
|
+
name: z.string(),
|
|
146
|
+
url: z.string(),
|
|
147
|
+
headers: z.record(z.string(), z.string())
|
|
148
|
+
});
|
|
149
|
+
const mcpChannelEndpointSchema = z.object({
|
|
150
|
+
name: z.string(),
|
|
151
|
+
endpointKey: z.string().min(1)
|
|
152
|
+
});
|
|
153
|
+
const sandboxMcpEndpointSchema = z.union([mcpEndpointSchema, mcpChannelEndpointSchema]);
|
|
154
|
+
const screenOptionsSchema = z.strictObject({ viewOnly: z.boolean().default(true) });
|
|
155
|
+
const screenSessionSchema = z.object({
|
|
156
|
+
url: z.string(),
|
|
157
|
+
token: z.string(),
|
|
158
|
+
expiresAt: z.string()
|
|
159
|
+
});
|
|
160
|
+
const describeResultSchema = z.object({
|
|
161
|
+
handleRpcVersion: z.literal(HANDLE_RPC_VERSION),
|
|
162
|
+
id: z.string(),
|
|
163
|
+
defaultWorkingDirectory: z.string(),
|
|
164
|
+
ports: z.array(z.number().int()),
|
|
165
|
+
capabilities: sandboxCapabilitiesSchema,
|
|
166
|
+
description: z.string(),
|
|
167
|
+
confinedFiles: z.boolean().optional(),
|
|
168
|
+
providerHooks: z.boolean().optional(),
|
|
169
|
+
mcpChannels: z.boolean().optional()
|
|
170
|
+
});
|
|
171
|
+
const initializeParamsSchema = z.object({
|
|
172
|
+
handleRpcVersion: z.literal(HANDLE_RPC_VERSION),
|
|
173
|
+
token: z.string().nullable().optional(),
|
|
174
|
+
client: z.object({ name: z.string(), version: z.string() }).optional()
|
|
175
|
+
});
|
|
176
|
+
const initializeResultSchema = describeResultSchema.extend({
|
|
177
|
+
// When the connection's credential expires (null: never).
|
|
178
|
+
expiresAt: z.string().nullable()
|
|
179
|
+
});
|
|
180
|
+
const emptySchema = z.object({}).passthrough();
|
|
181
|
+
const emptyResultSchema = z.object({}).passthrough();
|
|
182
|
+
const processOptionFields = {
|
|
183
|
+
command: z.string().min(1),
|
|
184
|
+
args: z.array(z.string()).optional(),
|
|
185
|
+
cwd: z.string().optional(),
|
|
186
|
+
env: z.record(z.string(), z.string()).optional(),
|
|
187
|
+
shell: z.boolean().optional(),
|
|
188
|
+
timeoutMs: z.number().int().positive().optional()
|
|
189
|
+
};
|
|
190
|
+
const readFileParamsSchema = z.object({
|
|
191
|
+
root: pathSchema.optional(),
|
|
192
|
+
path: pathSchema,
|
|
193
|
+
streamId: streamIdSchema,
|
|
194
|
+
// Byte range; omitted reads the whole file.
|
|
195
|
+
offset: z.number().int().nonnegative().optional(),
|
|
196
|
+
length: z.number().int().nonnegative().optional()
|
|
197
|
+
});
|
|
198
|
+
const readFileResultSchema = z.object({
|
|
199
|
+
found: z.boolean()
|
|
200
|
+
});
|
|
201
|
+
const readTextFileParamsSchema = z.object({
|
|
202
|
+
path: pathSchema,
|
|
203
|
+
encoding: z.string().optional(),
|
|
204
|
+
startLine: z.number().int().positive().optional(),
|
|
205
|
+
endLine: z.number().int().positive().optional()
|
|
206
|
+
});
|
|
207
|
+
const readTextFileResultSchema = z.object({ text: z.string().nullable() });
|
|
208
|
+
const writeFileParamsSchema = z.object({
|
|
209
|
+
path: pathSchema,
|
|
210
|
+
streamId: streamIdSchema.optional(),
|
|
211
|
+
contentBase64: z.string().optional()
|
|
212
|
+
}).refine((params) => params.streamId == null !== (params.contentBase64 == null), {
|
|
213
|
+
message: "exactly one of streamId and contentBase64 is required"
|
|
214
|
+
});
|
|
215
|
+
const spawnParamsSchema = z.object({
|
|
216
|
+
...processOptionFields,
|
|
217
|
+
// Client-chosen handle for process/wait and process/kill.
|
|
218
|
+
processId: z.string().min(1),
|
|
219
|
+
// Null means stdin is closed from the start.
|
|
220
|
+
stdinStreamId: streamIdSchema.nullable(),
|
|
221
|
+
stdoutStreamId: streamIdSchema,
|
|
222
|
+
stderrStreamId: streamIdSchema
|
|
223
|
+
});
|
|
224
|
+
const spawnResultSchema = z.object({ pid: z.string().nullable() });
|
|
225
|
+
const runParamsSchema = z.object({
|
|
226
|
+
...processOptionFields,
|
|
227
|
+
stdin: z.string().optional()
|
|
228
|
+
});
|
|
229
|
+
const runResultSchema = z.object({
|
|
230
|
+
exitCode: z.number().int(),
|
|
231
|
+
stdout: z.string(),
|
|
232
|
+
stderr: z.string()
|
|
233
|
+
});
|
|
234
|
+
const pathParamsSchema = z.object({ path: pathSchema, root: pathSchema.optional() });
|
|
235
|
+
const statResultSchema = z.object({ stat: statSchema.nullable() });
|
|
236
|
+
const readDirResultSchema = z.object({ entries: z.array(dirEntrySchema) });
|
|
237
|
+
const removePathParamsSchema = z.object({
|
|
238
|
+
path: pathSchema,
|
|
239
|
+
recursive: z.boolean().optional(),
|
|
240
|
+
force: z.boolean().optional()
|
|
241
|
+
});
|
|
242
|
+
const getPortEndpointParamsSchema = z.object({
|
|
243
|
+
port: z.number().int().min(1).max(65535),
|
|
244
|
+
protocol: z.nativeEnum(PortProtocol).optional()
|
|
245
|
+
});
|
|
246
|
+
const getPortEndpointResultSchema = z.object({
|
|
247
|
+
url: z.string(),
|
|
248
|
+
headers: z.record(z.string(), z.string()).optional()
|
|
249
|
+
});
|
|
250
|
+
const setNetworkPolicyParamsSchema = z.object({
|
|
251
|
+
mode: z.nativeEnum(NetworkPolicy),
|
|
252
|
+
allow: z.array(z.string()).optional()
|
|
253
|
+
});
|
|
254
|
+
const sandboxDeleteHookParamsSchema = z.object({ reason: z.string().optional() });
|
|
255
|
+
const localMcpResultSchema = z.object({ endpoints: z.array(sandboxMcpEndpointSchema) });
|
|
256
|
+
const mcpOpenParamsSchema = z.object({ endpointKey: z.string().min(1) });
|
|
257
|
+
const mcpChannelParamsSchema = z.object({ channelId: z.string().min(1) });
|
|
258
|
+
const mcpSendParamsSchema = mcpChannelParamsSchema.extend({ message: jsonValueSchema });
|
|
259
|
+
const mcpOpenResultSchema = mcpChannelParamsSchema;
|
|
260
|
+
const mcpReceiveResultSchema = z.object({ messages: z.array(jsonValueSchema) });
|
|
261
|
+
const processIdParamsSchema = z.object({ processId: z.string().min(1) });
|
|
262
|
+
const processWaitResultSchema = z.object({ exitCode: z.number().int() });
|
|
263
|
+
const processKillParamsSchema = z.object({
|
|
264
|
+
processId: z.string().min(1),
|
|
265
|
+
signal: z.string().optional()
|
|
266
|
+
});
|
|
267
|
+
const authRefreshParamsSchema = z.object({ token: z.string().min(1) });
|
|
268
|
+
const authRefreshResultSchema = z.object({ expiresAt: z.string().nullable() });
|
|
269
|
+
const cancelRequestParamsSchema = z.object({ requestId: jsonRpcIdSchema });
|
|
270
|
+
const streamChunkParamsSchema = z.object({ streamId: streamIdSchema, data: z.string() });
|
|
271
|
+
const streamEndParamsSchema = z.object({ streamId: streamIdSchema });
|
|
272
|
+
const streamErrorParamsSchema = z.object({
|
|
273
|
+
streamId: streamIdSchema,
|
|
274
|
+
message: z.string(),
|
|
275
|
+
code: z.number().int().optional(),
|
|
276
|
+
errno: z.string().nullable().optional()
|
|
277
|
+
});
|
|
278
|
+
const streamCreditParamsSchema = z.object({
|
|
279
|
+
streamId: streamIdSchema,
|
|
280
|
+
bytes: z.number().int().positive()
|
|
281
|
+
});
|
|
282
|
+
const streamCancelParamsSchema = z.object({
|
|
283
|
+
streamId: streamIdSchema,
|
|
284
|
+
reason: z.string().optional()
|
|
285
|
+
});
|
|
286
|
+
const handleRpcMethodSchemas = {
|
|
287
|
+
["initialize" /* Initialize */]: { params: initializeParamsSchema, result: initializeResultSchema },
|
|
288
|
+
["sandbox/describe" /* Describe */]: { params: emptySchema, result: describeResultSchema },
|
|
289
|
+
["sandbox/readFile" /* ReadFile */]: { params: readFileParamsSchema, result: readFileResultSchema },
|
|
290
|
+
["sandbox/readTextFile" /* ReadTextFile */]: {
|
|
291
|
+
params: readTextFileParamsSchema,
|
|
292
|
+
result: readTextFileResultSchema
|
|
293
|
+
},
|
|
294
|
+
["sandbox/writeFile" /* WriteFile */]: { params: writeFileParamsSchema, result: emptyResultSchema },
|
|
295
|
+
["sandbox/spawn" /* Spawn */]: { params: spawnParamsSchema, result: spawnResultSchema },
|
|
296
|
+
["sandbox/run" /* Run */]: { params: runParamsSchema, result: runResultSchema },
|
|
297
|
+
["sandbox/stat" /* Stat */]: { params: pathParamsSchema, result: statResultSchema },
|
|
298
|
+
["sandbox/readDir" /* ReadDir */]: { params: pathParamsSchema, result: readDirResultSchema },
|
|
299
|
+
["sandbox/removePath" /* RemovePath */]: { params: removePathParamsSchema, result: emptyResultSchema },
|
|
300
|
+
["sandbox/getPortEndpoint" /* GetPortEndpoint */]: {
|
|
301
|
+
params: getPortEndpointParamsSchema,
|
|
302
|
+
result: getPortEndpointResultSchema
|
|
303
|
+
},
|
|
304
|
+
["sandbox/stop" /* Stop */]: { params: emptySchema, result: emptyResultSchema },
|
|
305
|
+
["sandbox/destroy" /* Destroy */]: { params: emptySchema, result: emptyResultSchema },
|
|
306
|
+
["handle/onSandboxStop" /* OnSandboxStop */]: { params: emptySchema, result: emptyResultSchema },
|
|
307
|
+
["handle/onSandboxDelete" /* OnSandboxDelete */]: {
|
|
308
|
+
params: sandboxDeleteHookParamsSchema,
|
|
309
|
+
result: emptyResultSchema
|
|
310
|
+
},
|
|
311
|
+
["handle/onRuntimeShutdown" /* OnRuntimeShutdown */]: { params: emptySchema, result: emptyResultSchema },
|
|
312
|
+
["sandbox/setNetworkPolicy" /* SetNetworkPolicy */]: {
|
|
313
|
+
params: setNetworkPolicyParamsSchema,
|
|
314
|
+
result: emptyResultSchema
|
|
315
|
+
},
|
|
316
|
+
["sandbox/computerUse" /* ComputerUse */]: { params: emptySchema, result: sandboxMcpEndpointSchema },
|
|
317
|
+
["sandbox/screen" /* Screen */]: { params: screenOptionsSchema, result: screenSessionSchema },
|
|
318
|
+
["sandbox/localMcp" /* LocalMcp */]: { params: emptySchema, result: localMcpResultSchema },
|
|
319
|
+
["mcp/open" /* McpOpen */]: { params: mcpOpenParamsSchema, result: mcpOpenResultSchema },
|
|
320
|
+
["mcp/send" /* McpSend */]: { params: mcpSendParamsSchema, result: emptyResultSchema },
|
|
321
|
+
["mcp/receive" /* McpReceive */]: { params: mcpChannelParamsSchema, result: mcpReceiveResultSchema },
|
|
322
|
+
["mcp/close" /* McpClose */]: { params: mcpChannelParamsSchema, result: emptyResultSchema },
|
|
323
|
+
["process/wait" /* ProcessWait */]: { params: processIdParamsSchema, result: processWaitResultSchema },
|
|
324
|
+
["process/kill" /* ProcessKill */]: { params: processKillParamsSchema, result: emptyResultSchema },
|
|
325
|
+
["auth/refresh" /* AuthRefresh */]: {
|
|
326
|
+
params: authRefreshParamsSchema,
|
|
327
|
+
result: authRefreshResultSchema
|
|
328
|
+
}
|
|
329
|
+
};
|
|
330
|
+
const handleRpcNotificationSchemas = {
|
|
331
|
+
["$/cancel_request" /* CancelRequest */]: cancelRequestParamsSchema,
|
|
332
|
+
["stream/chunk" /* StreamChunk */]: streamChunkParamsSchema,
|
|
333
|
+
["stream/end" /* StreamEnd */]: streamEndParamsSchema,
|
|
334
|
+
["stream/error" /* StreamError */]: streamErrorParamsSchema,
|
|
335
|
+
["stream/credit" /* StreamCredit */]: streamCreditParamsSchema,
|
|
336
|
+
["stream/cancel" /* StreamCancel */]: streamCancelParamsSchema
|
|
337
|
+
};
|
|
338
|
+
const handleRpcResultParsers = {
|
|
339
|
+
["initialize" /* Initialize */]: (raw) => handleRpcMethodSchemas["initialize" /* Initialize */].result.parse(raw),
|
|
340
|
+
["sandbox/describe" /* Describe */]: (raw) => handleRpcMethodSchemas["sandbox/describe" /* Describe */].result.parse(raw),
|
|
341
|
+
["sandbox/readFile" /* ReadFile */]: (raw) => handleRpcMethodSchemas["sandbox/readFile" /* ReadFile */].result.parse(raw),
|
|
342
|
+
["sandbox/readTextFile" /* ReadTextFile */]: (raw) => handleRpcMethodSchemas["sandbox/readTextFile" /* ReadTextFile */].result.parse(raw),
|
|
343
|
+
["sandbox/writeFile" /* WriteFile */]: (raw) => handleRpcMethodSchemas["sandbox/writeFile" /* WriteFile */].result.parse(raw),
|
|
344
|
+
["sandbox/spawn" /* Spawn */]: (raw) => handleRpcMethodSchemas["sandbox/spawn" /* Spawn */].result.parse(raw),
|
|
345
|
+
["sandbox/run" /* Run */]: (raw) => handleRpcMethodSchemas["sandbox/run" /* Run */].result.parse(raw),
|
|
346
|
+
["sandbox/stat" /* Stat */]: (raw) => handleRpcMethodSchemas["sandbox/stat" /* Stat */].result.parse(raw),
|
|
347
|
+
["sandbox/readDir" /* ReadDir */]: (raw) => handleRpcMethodSchemas["sandbox/readDir" /* ReadDir */].result.parse(raw),
|
|
348
|
+
["sandbox/removePath" /* RemovePath */]: (raw) => handleRpcMethodSchemas["sandbox/removePath" /* RemovePath */].result.parse(raw),
|
|
349
|
+
["sandbox/getPortEndpoint" /* GetPortEndpoint */]: (raw) => handleRpcMethodSchemas["sandbox/getPortEndpoint" /* GetPortEndpoint */].result.parse(raw),
|
|
350
|
+
["sandbox/stop" /* Stop */]: (raw) => handleRpcMethodSchemas["sandbox/stop" /* Stop */].result.parse(raw),
|
|
351
|
+
["sandbox/destroy" /* Destroy */]: (raw) => handleRpcMethodSchemas["sandbox/destroy" /* Destroy */].result.parse(raw),
|
|
352
|
+
["handle/onRuntimeShutdown" /* OnRuntimeShutdown */]: (raw) => handleRpcMethodSchemas["handle/onRuntimeShutdown" /* OnRuntimeShutdown */].result.parse(raw),
|
|
353
|
+
["handle/onSandboxStop" /* OnSandboxStop */]: (raw) => handleRpcMethodSchemas["handle/onSandboxStop" /* OnSandboxStop */].result.parse(raw),
|
|
354
|
+
["handle/onSandboxDelete" /* OnSandboxDelete */]: (raw) => handleRpcMethodSchemas["handle/onSandboxDelete" /* OnSandboxDelete */].result.parse(raw),
|
|
355
|
+
["sandbox/setNetworkPolicy" /* SetNetworkPolicy */]: (raw) => handleRpcMethodSchemas["sandbox/setNetworkPolicy" /* SetNetworkPolicy */].result.parse(raw),
|
|
356
|
+
["sandbox/computerUse" /* ComputerUse */]: (raw) => handleRpcMethodSchemas["sandbox/computerUse" /* ComputerUse */].result.parse(raw),
|
|
357
|
+
["sandbox/screen" /* Screen */]: (raw) => handleRpcMethodSchemas["sandbox/screen" /* Screen */].result.parse(raw),
|
|
358
|
+
["sandbox/localMcp" /* LocalMcp */]: (raw) => handleRpcMethodSchemas["sandbox/localMcp" /* LocalMcp */].result.parse(raw),
|
|
359
|
+
["mcp/open" /* McpOpen */]: (raw) => handleRpcMethodSchemas["mcp/open" /* McpOpen */].result.parse(raw),
|
|
360
|
+
["mcp/send" /* McpSend */]: (raw) => handleRpcMethodSchemas["mcp/send" /* McpSend */].result.parse(raw),
|
|
361
|
+
["mcp/receive" /* McpReceive */]: (raw) => handleRpcMethodSchemas["mcp/receive" /* McpReceive */].result.parse(raw),
|
|
362
|
+
["mcp/close" /* McpClose */]: (raw) => handleRpcMethodSchemas["mcp/close" /* McpClose */].result.parse(raw),
|
|
363
|
+
["process/wait" /* ProcessWait */]: (raw) => handleRpcMethodSchemas["process/wait" /* ProcessWait */].result.parse(raw),
|
|
364
|
+
["process/kill" /* ProcessKill */]: (raw) => handleRpcMethodSchemas["process/kill" /* ProcessKill */].result.parse(raw),
|
|
365
|
+
["auth/refresh" /* AuthRefresh */]: (raw) => handleRpcMethodSchemas["auth/refresh" /* AuthRefresh */].result.parse(raw)
|
|
366
|
+
};
|
|
367
|
+
const parseHandleRpcResult = (method, raw) => handleRpcResultParsers[method](raw);
|
|
368
|
+
const isHandleRpcMethod = (value) => Object.values(HandleRpcMethod).some((method) => method === value);
|
|
369
|
+
const parseHandleRpcMethod = (method) => isHandleRpcMethod(method) ? method : null;
|
|
370
|
+
const HANDLE_RPC_FILE_WRITE_METHODS = [
|
|
371
|
+
"sandbox/writeFile" /* WriteFile */,
|
|
372
|
+
"sandbox/removePath" /* RemovePath */
|
|
373
|
+
];
|
|
374
|
+
const HANDLE_RPC_EXECUTE_METHODS = [
|
|
375
|
+
"sandbox/spawn" /* Spawn */,
|
|
376
|
+
"sandbox/run" /* Run */,
|
|
377
|
+
"process/wait" /* ProcessWait */,
|
|
378
|
+
"process/kill" /* ProcessKill */,
|
|
379
|
+
"sandbox/computerUse" /* ComputerUse */,
|
|
380
|
+
"sandbox/localMcp" /* LocalMcp */,
|
|
381
|
+
"mcp/open" /* McpOpen */,
|
|
382
|
+
"mcp/send" /* McpSend */,
|
|
383
|
+
"mcp/receive" /* McpReceive */,
|
|
384
|
+
"mcp/close" /* McpClose */
|
|
385
|
+
];
|
|
386
|
+
const HANDLE_RPC_WRITE_METHODS = [
|
|
387
|
+
...HANDLE_RPC_FILE_WRITE_METHODS,
|
|
388
|
+
...HANDLE_RPC_EXECUTE_METHODS
|
|
389
|
+
];
|
|
390
|
+
const HANDLE_RPC_LIFECYCLE_METHODS = [
|
|
391
|
+
"handle/onSandboxStop" /* OnSandboxStop */,
|
|
392
|
+
"handle/onSandboxDelete" /* OnSandboxDelete */,
|
|
393
|
+
"handle/onRuntimeShutdown" /* OnRuntimeShutdown */,
|
|
394
|
+
"sandbox/stop" /* Stop */,
|
|
395
|
+
"sandbox/destroy" /* Destroy */,
|
|
396
|
+
"sandbox/setNetworkPolicy" /* SetNetworkPolicy */
|
|
397
|
+
];
|
|
398
|
+
const HANDLE_RPC_IDEMPOTENT_METHODS = [
|
|
399
|
+
"sandbox/describe" /* Describe */,
|
|
400
|
+
"sandbox/readTextFile" /* ReadTextFile */,
|
|
401
|
+
"sandbox/stat" /* Stat */,
|
|
402
|
+
"sandbox/readDir" /* ReadDir */,
|
|
403
|
+
"sandbox/getPortEndpoint" /* GetPortEndpoint */,
|
|
404
|
+
"sandbox/screen" /* Screen */,
|
|
405
|
+
"sandbox/computerUse" /* ComputerUse */,
|
|
406
|
+
"sandbox/localMcp" /* LocalMcp */
|
|
407
|
+
];
|
|
408
|
+
const encodeChunkFrame = (streamId, payload) => {
|
|
409
|
+
const frame = new Uint8Array(BINARY_FRAME_HEADER_BYTES + payload.byteLength);
|
|
410
|
+
frame[0] = BINARY_FRAME_MAGIC;
|
|
411
|
+
frame[1] = 1 /* Chunk */;
|
|
412
|
+
new DataView(frame.buffer, frame.byteOffset, frame.byteLength).setUint32(2, streamId, false);
|
|
413
|
+
frame.set(payload, BINARY_FRAME_HEADER_BYTES);
|
|
414
|
+
return frame;
|
|
415
|
+
};
|
|
416
|
+
const decodeBinaryFrame = (frame) => {
|
|
417
|
+
if (frame.byteLength < BINARY_FRAME_HEADER_BYTES || frame[0] !== BINARY_FRAME_MAGIC) return null;
|
|
418
|
+
if (frame[1] !== 1 /* Chunk */) return null;
|
|
419
|
+
const streamId = new DataView(frame.buffer, frame.byteOffset, frame.byteLength).getUint32(
|
|
420
|
+
2,
|
|
421
|
+
false
|
|
422
|
+
);
|
|
423
|
+
return {
|
|
424
|
+
kind: 1 /* Chunk */,
|
|
425
|
+
streamId,
|
|
426
|
+
payload: frame.subarray(BINARY_FRAME_HEADER_BYTES)
|
|
427
|
+
};
|
|
428
|
+
};
|
|
429
|
+
const encodeJsonRpc = (message) => JSON.stringify(message);
|
|
430
|
+
const handleRpcTokenFromRequest = (request) => {
|
|
431
|
+
const authorization = request.headers.get("authorization");
|
|
432
|
+
if (authorization != null) {
|
|
433
|
+
const match = /^Bearer\s+(.+)$/i.exec(authorization.trim());
|
|
434
|
+
if (match?.[1] != null) return match[1];
|
|
435
|
+
}
|
|
436
|
+
const protocols = request.headers.get("sec-websocket-protocol");
|
|
437
|
+
if (protocols != null) {
|
|
438
|
+
for (const entry of protocols.split(",")) {
|
|
439
|
+
const value = entry.trim();
|
|
440
|
+
if (value.startsWith(HANDLE_RPC_BEARER_PROTOCOL_PREFIX)) {
|
|
441
|
+
const token = value.slice(HANDLE_RPC_BEARER_PROTOCOL_PREFIX.length);
|
|
442
|
+
if (token.length > 0) return token;
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
return null;
|
|
447
|
+
};
|
|
448
|
+
const handleRpcClientProtocols = (token) => [
|
|
449
|
+
HANDLE_RPC_SUBPROTOCOL,
|
|
450
|
+
`${HANDLE_RPC_BEARER_PROTOCOL_PREFIX}${token}`
|
|
451
|
+
];
|
|
452
|
+
export * from "./frame-channel.mjs";
|
|
453
|
+
export {
|
|
454
|
+
BINARY_FRAME_HEADER_BYTES,
|
|
455
|
+
BINARY_FRAME_MAGIC,
|
|
456
|
+
BinaryFrameKind,
|
|
457
|
+
HANDLE_RPC_BEARER_PROTOCOL_PREFIX,
|
|
458
|
+
HANDLE_RPC_EXECUTE_METHODS,
|
|
459
|
+
HANDLE_RPC_FILE_WRITE_METHODS,
|
|
460
|
+
HANDLE_RPC_IDEMPOTENT_METHODS,
|
|
461
|
+
HANDLE_RPC_LIFECYCLE_METHODS,
|
|
462
|
+
HANDLE_RPC_SUBPROTOCOL,
|
|
463
|
+
HANDLE_RPC_VERSION,
|
|
464
|
+
HANDLE_RPC_WRITE_METHODS,
|
|
465
|
+
HandleRpcCloseCode,
|
|
466
|
+
HandleRpcErrorCode,
|
|
467
|
+
HandleRpcMethod,
|
|
468
|
+
HandleRpcNotification,
|
|
469
|
+
INITIAL_STREAM_WINDOW_BYTES,
|
|
470
|
+
MAX_CHUNK_BYTES,
|
|
471
|
+
MAX_INLINE_WRITE_BYTES,
|
|
472
|
+
authRefreshParamsSchema,
|
|
473
|
+
authRefreshResultSchema,
|
|
474
|
+
cancelRequestParamsSchema,
|
|
475
|
+
decodeBinaryFrame,
|
|
476
|
+
describeResultSchema,
|
|
477
|
+
dirEntrySchema,
|
|
478
|
+
encodeChunkFrame,
|
|
479
|
+
encodeJsonRpc,
|
|
480
|
+
errnoOf,
|
|
481
|
+
getPortEndpointParamsSchema,
|
|
482
|
+
getPortEndpointResultSchema,
|
|
483
|
+
handleRpcClientProtocols,
|
|
484
|
+
handleRpcError,
|
|
485
|
+
handleRpcErrorDataSchema,
|
|
486
|
+
handleRpcMethodSchemas,
|
|
487
|
+
handleRpcNotificationSchemas,
|
|
488
|
+
handleRpcResultParsers,
|
|
489
|
+
handleRpcTokenFromRequest,
|
|
490
|
+
initializeParamsSchema,
|
|
491
|
+
initializeResultSchema,
|
|
492
|
+
isHandleRpcError,
|
|
493
|
+
jsonRpcErrorObjectSchema,
|
|
494
|
+
jsonRpcErrorResponseSchema,
|
|
495
|
+
jsonRpcNotificationSchema,
|
|
496
|
+
jsonRpcRequestSchema,
|
|
497
|
+
jsonRpcSuccessSchema,
|
|
498
|
+
localMcpResultSchema,
|
|
499
|
+
mcpChannelEndpointSchema,
|
|
500
|
+
mcpChannelParamsSchema,
|
|
501
|
+
mcpEndpointSchema,
|
|
502
|
+
mcpOpenParamsSchema,
|
|
503
|
+
mcpOpenResultSchema,
|
|
504
|
+
mcpReceiveResultSchema,
|
|
505
|
+
mcpSendParamsSchema,
|
|
506
|
+
parseHandleRpcMethod,
|
|
507
|
+
parseHandleRpcResult,
|
|
508
|
+
pathParamsSchema,
|
|
509
|
+
processIdParamsSchema,
|
|
510
|
+
processKillParamsSchema,
|
|
511
|
+
processWaitResultSchema,
|
|
512
|
+
readDirResultSchema,
|
|
513
|
+
readFileParamsSchema,
|
|
514
|
+
readFileResultSchema,
|
|
515
|
+
readTextFileParamsSchema,
|
|
516
|
+
readTextFileResultSchema,
|
|
517
|
+
removePathParamsSchema,
|
|
518
|
+
runParamsSchema,
|
|
519
|
+
runResultSchema,
|
|
520
|
+
sandboxCapabilitiesSchema,
|
|
521
|
+
sandboxDeleteHookParamsSchema,
|
|
522
|
+
sandboxMcpEndpointSchema,
|
|
523
|
+
screenOptionsSchema,
|
|
524
|
+
screenSessionSchema,
|
|
525
|
+
setNetworkPolicyParamsSchema,
|
|
526
|
+
spawnParamsSchema,
|
|
527
|
+
spawnResultSchema,
|
|
528
|
+
statResultSchema,
|
|
529
|
+
statSchema,
|
|
530
|
+
streamCancelParamsSchema,
|
|
531
|
+
streamChunkParamsSchema,
|
|
532
|
+
streamCreditParamsSchema,
|
|
533
|
+
streamEndParamsSchema,
|
|
534
|
+
streamErrorParamsSchema,
|
|
535
|
+
writeFileParamsSchema
|
|
536
|
+
};
|
|
537
|
+
//# sourceMappingURL=wire.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/sandbox/wire.ts"],
|
|
4
|
+
"sourcesContent": ["import * as z from 'zod';\nimport { jsonValueSchema, type JsonValue } from \"../json.mjs\";\nimport { NetworkPolicy, PortProtocol, SandboxCapability, SandboxEntryType } from \"./types.mjs\";\n\n// The sandbox handle RPC: an SDK-defined,\n// provider-neutral wire with one method per NetworkSandboxSessionIface method,\n// carried over one persistent WebSocket (or any ordered message stream).\n//\n// Framing\n// - Text frames are JSON-RPC 2.0 messages (single messages, no batches).\n// - Binary frames carry stream data: a 6-byte header followed by the payload.\n// byte 0 magic 0xF1\n// byte 1 BinaryFrameKind (1 = chunk)\n// bytes 2-5 stream id, uint32 big-endian\n// A peer that cannot send binary frames sends `stream/chunk` notifications\n// with base64 data instead; every peer accepts both forms.\n//\n// Connection\n// - The client authenticates in the connection request (WebSocket\n// subprotocol `bearer.<token>` next to HANDLE_RPC_SUBPROTOCOL, or an\n// `Authorization: Bearer` header where the runtime allows headers) and again\n// in the first message, `initialize { handleRpcVersion: 1, token }`, which is\n// the only authentication on transports without a connection request.\n// - Nothing but `initialize` is accepted before initialization.\n// - `initialize` returns what `sandbox/describe` returns.\n// - Lazy attach: the session service's stable per-binding address may start\n// the sandbox (through its provider) while handling the first call, and\n// serves every call on that connection itself; there is no redirect.\n// - `auth/refresh { token }` replaces the connection's credential before it\n// expires; a server closes a connection whose credential expired with\n// HandleRpcCloseCode.Unauthorized, and the client reconnects with a fresh one.\n// - `$/cancel_request { requestId }` cancels an in-flight request.\n//\n// Streams\n// - Every stream id is allocated by the client (uint32, unique per connection)\n// and named in the request that uses it: `sandbox/readFile.streamId` and\n// `sandbox/spawn.stdoutStreamId/stderrStreamId` flow server to client,\n// `sandbox/writeFile.streamId` and `sandbox/spawn.stdinStreamId` flow client\n// to server. The receiver registers a stream before the first chunk can\n// arrive (the client before sending the request, the server when it receives\n// it), so chunks are never orphaned.\n// - Flow control is credit based: a sender may have at most\n// INITIAL_STREAM_WINDOW_BYTES unacknowledged bytes per stream; the receiver\n// returns credit with `stream/credit { streamId, bytes }` as its consumer\n// reads. Chunks are at most MAX_CHUNK_BYTES.\n// - `stream/end` closes a stream, `stream/error` fails it, and\n// `stream/cancel` (receiver to sender) stops it.\n// - Streams and process handles are scoped to one connection: if the\n// connection closes, the server kills that connection's processes and both\n// sides fail its open streams.\n\nexport const HANDLE_RPC_VERSION = 1;\nexport const HANDLE_RPC_SUBPROTOCOL = 'final.handle-rpc.v1';\nexport const HANDLE_RPC_BEARER_PROTOCOL_PREFIX = 'bearer.';\nexport const MAX_CHUNK_BYTES = 256 * 1024;\nexport const INITIAL_STREAM_WINDOW_BYTES = 1024 * 1024;\n// Inline (base64) file writes up to this size skip the stream round trip.\nexport const MAX_INLINE_WRITE_BYTES = 64 * 1024;\nexport const BINARY_FRAME_MAGIC = 0xf1;\nexport const BINARY_FRAME_HEADER_BYTES = 6;\nconst MAX_STREAM_ID = 0xffffffff;\n\nexport enum BinaryFrameKind {\n Chunk = 1,\n}\n\nexport enum HandleRpcCloseCode {\n Normal = 1000,\n ProtocolError = 4400,\n Unauthorized = 4401,\n}\n\nexport enum HandleRpcErrorCode {\n ParseError = -32700,\n InvalidRequest = -32600,\n MethodNotFound = -32601,\n InvalidParams = -32602,\n Internal = -32603,\n Unauthorized = -32001,\n NotInitialized = -32002,\n // Rejected by the binding's access policy (a read-only binding writing).\n Forbidden = -32010,\n NotFound = -32011,\n // The sandbox does not have the capability.\n Unsupported = -32012,\n // Client side: the connection closed before the request was answered.\n ConnectionClosed = -32013,\n Timeout = -32014,\n Cancelled = -32800,\n}\n\nexport enum HandleRpcMethod {\n Initialize = 'initialize',\n Describe = 'sandbox/describe',\n ReadFile = 'sandbox/readFile',\n ReadTextFile = 'sandbox/readTextFile',\n WriteFile = 'sandbox/writeFile',\n Spawn = 'sandbox/spawn',\n Run = 'sandbox/run',\n Stat = 'sandbox/stat',\n ReadDir = 'sandbox/readDir',\n RemovePath = 'sandbox/removePath',\n GetPortEndpoint = 'sandbox/getPortEndpoint',\n Stop = 'sandbox/stop',\n Destroy = 'sandbox/destroy',\n SetNetworkPolicy = 'sandbox/setNetworkPolicy',\n OnSandboxStop = 'handle/onSandboxStop',\n OnSandboxDelete = 'handle/onSandboxDelete',\n OnRuntimeShutdown = 'handle/onRuntimeShutdown',\n ComputerUse = 'sandbox/computerUse',\n Screen = 'sandbox/screen',\n LocalMcp = 'sandbox/localMcp',\n McpOpen = 'mcp/open',\n McpSend = 'mcp/send',\n McpReceive = 'mcp/receive',\n McpClose = 'mcp/close',\n ProcessWait = 'process/wait',\n ProcessKill = 'process/kill',\n AuthRefresh = 'auth/refresh',\n}\n\nexport enum HandleRpcNotification {\n CancelRequest = '$/cancel_request',\n StreamChunk = 'stream/chunk',\n StreamEnd = 'stream/end',\n StreamError = 'stream/error',\n StreamCredit = 'stream/credit',\n StreamCancel = 'stream/cancel',\n}\n\n// Errors carry a numeric HandleRpcErrorCode plus the sandbox's errno-style code\n// (ENOENT, ENOTDIR, ...) when it had one.\nexport interface HandleRpcErrorIface extends Error {\n readonly code: HandleRpcErrorCode;\n readonly retryable: boolean;\n readonly errno: string | null;\n readonly data: JsonValue | null;\n}\n\nexport const handleRpcError = (args: {\n code: HandleRpcErrorCode;\n message: string;\n retryable?: boolean;\n errno?: string | null;\n data?: JsonValue | null;\n}): HandleRpcErrorIface =>\n Object.assign(new Error(args.message), {\n name: 'HandleRpcError',\n code: args.code,\n retryable: args.retryable ?? false,\n errno: args.errno ?? null,\n data: args.data ?? null,\n });\n\nconst handleRpcErrorFieldsSchema = z.object({ code: z.number(), retryable: z.boolean() });\nconst errnoFieldsSchema = z.object({ code: z.string() });\n\nexport const isHandleRpcError = (cause: unknown): cause is HandleRpcErrorIface =>\n cause instanceof Error && handleRpcErrorFieldsSchema.safeParse(cause).success;\n\n// The errno-style string code of a sandbox error (`ENOENT`), if any.\nexport const errnoOf = (cause: unknown): string | null => {\n if (isHandleRpcError(cause)) return cause.errno;\n if (!(cause instanceof Error)) return null;\n const parsed = errnoFieldsSchema.safeParse(cause);\n return parsed.success ? parsed.data.code : null;\n};\n\nconst jsonRpcIdSchema = z.union([z.string(), z.number().int()]);\nexport type JsonRpcId = z.infer<typeof jsonRpcIdSchema>;\n\nexport const jsonRpcRequestSchema = z.object({\n jsonrpc: z.literal('2.0'),\n id: jsonRpcIdSchema,\n method: z.string().min(1),\n params: jsonValueSchema.optional(),\n});\n\nexport const jsonRpcNotificationSchema = z.object({\n jsonrpc: z.literal('2.0'),\n method: z.string().min(1),\n params: jsonValueSchema.optional(),\n});\n\nexport const jsonRpcErrorObjectSchema = z.object({\n code: z.number().int(),\n message: z.string(),\n data: jsonValueSchema.optional(),\n});\n\nexport const jsonRpcSuccessSchema = z.object({\n jsonrpc: z.literal('2.0'),\n id: jsonRpcIdSchema,\n result: jsonValueSchema,\n});\n\nexport const jsonRpcErrorResponseSchema = z.object({\n jsonrpc: z.literal('2.0'),\n id: jsonRpcIdSchema.nullable(),\n error: jsonRpcErrorObjectSchema,\n});\n\nexport type JsonRpcRequestIface = z.infer<typeof jsonRpcRequestSchema>;\nexport type JsonRpcNotificationIface = z.infer<typeof jsonRpcNotificationSchema>;\nexport type JsonRpcErrorObjectIface = z.infer<typeof jsonRpcErrorObjectSchema>;\n\n// Data in error responses: { errno, retryable } when known.\nexport const handleRpcErrorDataSchema = z.object({\n errno: z.string().nullable().optional(),\n retryable: z.boolean().optional(),\n});\n\nconst streamIdSchema = z.number().int().min(0).max(MAX_STREAM_ID);\nconst pathSchema = z.string().min(1);\n\n// Tolerant on read: capabilities this build does not know are dropped.\nconst isSandboxCapability = (value: string): value is SandboxCapability =>\n Object.values(SandboxCapability).some((capability) => capability === value);\nexport const sandboxCapabilitiesSchema = z\n .array(z.string())\n .transform((values) => values.filter(isSandboxCapability));\n\nconst isSandboxEntryType = (value: string): value is SandboxEntryType =>\n Object.values(SandboxEntryType).some((entryType) => entryType === value);\nconst entryTypeSchema = z\n .string()\n .transform((value) => (isSandboxEntryType(value) ? value : SandboxEntryType.Other));\n\nexport const statSchema = z.object({\n path: z.string(),\n type: entryTypeSchema,\n size: z.number().nonnegative(),\n modifiedAt: z.string().nullable(),\n mode: z.number().int().nullable(),\n});\n\nexport const dirEntrySchema = z.object({\n name: z.string(),\n path: z.string(),\n type: entryTypeSchema,\n size: z.number().nonnegative().nullable(),\n});\n\nexport const mcpEndpointSchema = z.object({\n name: z.string(),\n url: z.string(),\n headers: z.record(z.string(), z.string()),\n});\n\n// In-process channels are advertised only by hosts enabling the channel bridge.\nexport const mcpChannelEndpointSchema = z.object({\n name: z.string(),\n endpointKey: z.string().min(1),\n});\nexport const sandboxMcpEndpointSchema = z.union([mcpEndpointSchema, mcpChannelEndpointSchema]);\n\nexport const screenOptionsSchema = z.strictObject({ viewOnly: z.boolean().default(true) });\n\nexport const screenSessionSchema = z.object({\n url: z.string(),\n token: z.string(),\n expiresAt: z.string(),\n});\n\nexport const describeResultSchema = z.object({\n handleRpcVersion: z.literal(HANDLE_RPC_VERSION),\n id: z.string(),\n defaultWorkingDirectory: z.string(),\n ports: z.array(z.number().int()),\n capabilities: sandboxCapabilitiesSchema,\n description: z.string(),\n confinedFiles: z.boolean().optional(),\n providerHooks: z.boolean().optional(),\n mcpChannels: z.boolean().optional(),\n});\n\nexport const initializeParamsSchema = z.object({\n handleRpcVersion: z.literal(HANDLE_RPC_VERSION),\n token: z.string().nullable().optional(),\n client: z.object({ name: z.string(), version: z.string() }).optional(),\n});\n\nexport const initializeResultSchema = describeResultSchema.extend({\n // When the connection's credential expires (null: never).\n expiresAt: z.string().nullable(),\n});\n\nconst emptySchema = z.object({}).passthrough();\nconst emptyResultSchema = z.object({}).passthrough();\n\nconst processOptionFields = {\n command: z.string().min(1),\n args: z.array(z.string()).optional(),\n cwd: z.string().optional(),\n env: z.record(z.string(), z.string()).optional(),\n shell: z.boolean().optional(),\n timeoutMs: z.number().int().positive().optional(),\n};\n\nexport const readFileParamsSchema = z.object({\n root: pathSchema.optional(),\n path: pathSchema,\n streamId: streamIdSchema,\n // Byte range; omitted reads the whole file.\n offset: z.number().int().nonnegative().optional(),\n length: z.number().int().nonnegative().optional(),\n});\n\nexport const readFileResultSchema = z.object({\n found: z.boolean(),\n});\n\nexport const readTextFileParamsSchema = z.object({\n path: pathSchema,\n encoding: z.string().optional(),\n startLine: z.number().int().positive().optional(),\n endLine: z.number().int().positive().optional(),\n});\n\nexport const readTextFileResultSchema = z.object({ text: z.string().nullable() });\n\nexport const writeFileParamsSchema = z\n .object({\n path: pathSchema,\n streamId: streamIdSchema.optional(),\n contentBase64: z.string().optional(),\n })\n .refine((params) => (params.streamId == null) !== (params.contentBase64 == null), {\n message: 'exactly one of streamId and contentBase64 is required',\n });\n\nexport const spawnParamsSchema = z.object({\n ...processOptionFields,\n // Client-chosen handle for process/wait and process/kill.\n processId: z.string().min(1),\n // Null means stdin is closed from the start.\n stdinStreamId: streamIdSchema.nullable(),\n stdoutStreamId: streamIdSchema,\n stderrStreamId: streamIdSchema,\n});\n\nexport const spawnResultSchema = z.object({ pid: z.string().nullable() });\n\nexport const runParamsSchema = z.object({\n ...processOptionFields,\n stdin: z.string().optional(),\n});\n\nexport const runResultSchema = z.object({\n exitCode: z.number().int(),\n stdout: z.string(),\n stderr: z.string(),\n});\n\nexport const pathParamsSchema = z.object({ path: pathSchema, root: pathSchema.optional() });\nexport const statResultSchema = z.object({ stat: statSchema.nullable() });\nexport const readDirResultSchema = z.object({ entries: z.array(dirEntrySchema) });\n\nexport const removePathParamsSchema = z.object({\n path: pathSchema,\n recursive: z.boolean().optional(),\n force: z.boolean().optional(),\n});\n\nexport const getPortEndpointParamsSchema = z.object({\n port: z.number().int().min(1).max(65535),\n protocol: z.nativeEnum(PortProtocol).optional(),\n});\n\nexport const getPortEndpointResultSchema = z.object({\n url: z.string(),\n headers: z.record(z.string(), z.string()).optional(),\n});\n\nexport const setNetworkPolicyParamsSchema = z.object({\n mode: z.nativeEnum(NetworkPolicy),\n allow: z.array(z.string()).optional(),\n});\n\nexport const sandboxDeleteHookParamsSchema = z.object({ reason: z.string().optional() });\n\nexport const localMcpResultSchema = z.object({ endpoints: z.array(sandboxMcpEndpointSchema) });\nexport const mcpOpenParamsSchema = z.object({ endpointKey: z.string().min(1) });\nexport const mcpChannelParamsSchema = z.object({ channelId: z.string().min(1) });\nexport const mcpSendParamsSchema = mcpChannelParamsSchema.extend({ message: jsonValueSchema });\nexport const mcpOpenResultSchema = mcpChannelParamsSchema;\nexport const mcpReceiveResultSchema = z.object({ messages: z.array(jsonValueSchema) });\n\nexport const processIdParamsSchema = z.object({ processId: z.string().min(1) });\nexport const processWaitResultSchema = z.object({ exitCode: z.number().int() });\nexport const processKillParamsSchema = z.object({\n processId: z.string().min(1),\n signal: z.string().optional(),\n});\n\nexport const authRefreshParamsSchema = z.object({ token: z.string().min(1) });\nexport const authRefreshResultSchema = z.object({ expiresAt: z.string().nullable() });\n\nexport const cancelRequestParamsSchema = z.object({ requestId: jsonRpcIdSchema });\nexport const streamChunkParamsSchema = z.object({ streamId: streamIdSchema, data: z.string() });\nexport const streamEndParamsSchema = z.object({ streamId: streamIdSchema });\nexport const streamErrorParamsSchema = z.object({\n streamId: streamIdSchema,\n message: z.string(),\n code: z.number().int().optional(),\n errno: z.string().nullable().optional(),\n});\nexport const streamCreditParamsSchema = z.object({\n streamId: streamIdSchema,\n bytes: z.number().int().positive(),\n});\nexport const streamCancelParamsSchema = z.object({\n streamId: streamIdSchema,\n reason: z.string().optional(),\n});\n\nexport type DescribeResultIface = z.infer<typeof describeResultSchema>;\nexport type InitializeResultIface = z.infer<typeof initializeResultSchema>;\n\n// Params and result schema for every request method: the single source of\n// truth for both ends.\nexport const handleRpcMethodSchemas = {\n [HandleRpcMethod.Initialize]: { params: initializeParamsSchema, result: initializeResultSchema },\n [HandleRpcMethod.Describe]: { params: emptySchema, result: describeResultSchema },\n [HandleRpcMethod.ReadFile]: { params: readFileParamsSchema, result: readFileResultSchema },\n [HandleRpcMethod.ReadTextFile]: {\n params: readTextFileParamsSchema,\n result: readTextFileResultSchema,\n },\n [HandleRpcMethod.WriteFile]: { params: writeFileParamsSchema, result: emptyResultSchema },\n [HandleRpcMethod.Spawn]: { params: spawnParamsSchema, result: spawnResultSchema },\n [HandleRpcMethod.Run]: { params: runParamsSchema, result: runResultSchema },\n [HandleRpcMethod.Stat]: { params: pathParamsSchema, result: statResultSchema },\n [HandleRpcMethod.ReadDir]: { params: pathParamsSchema, result: readDirResultSchema },\n [HandleRpcMethod.RemovePath]: { params: removePathParamsSchema, result: emptyResultSchema },\n [HandleRpcMethod.GetPortEndpoint]: {\n params: getPortEndpointParamsSchema,\n result: getPortEndpointResultSchema,\n },\n [HandleRpcMethod.Stop]: { params: emptySchema, result: emptyResultSchema },\n [HandleRpcMethod.Destroy]: { params: emptySchema, result: emptyResultSchema },\n [HandleRpcMethod.OnSandboxStop]: { params: emptySchema, result: emptyResultSchema },\n [HandleRpcMethod.OnSandboxDelete]: {\n params: sandboxDeleteHookParamsSchema,\n result: emptyResultSchema,\n },\n [HandleRpcMethod.OnRuntimeShutdown]: { params: emptySchema, result: emptyResultSchema },\n [HandleRpcMethod.SetNetworkPolicy]: {\n params: setNetworkPolicyParamsSchema,\n result: emptyResultSchema,\n },\n [HandleRpcMethod.ComputerUse]: { params: emptySchema, result: sandboxMcpEndpointSchema },\n [HandleRpcMethod.Screen]: { params: screenOptionsSchema, result: screenSessionSchema },\n [HandleRpcMethod.LocalMcp]: { params: emptySchema, result: localMcpResultSchema },\n [HandleRpcMethod.McpOpen]: { params: mcpOpenParamsSchema, result: mcpOpenResultSchema },\n [HandleRpcMethod.McpSend]: { params: mcpSendParamsSchema, result: emptyResultSchema },\n [HandleRpcMethod.McpReceive]: { params: mcpChannelParamsSchema, result: mcpReceiveResultSchema },\n [HandleRpcMethod.McpClose]: { params: mcpChannelParamsSchema, result: emptyResultSchema },\n [HandleRpcMethod.ProcessWait]: { params: processIdParamsSchema, result: processWaitResultSchema },\n [HandleRpcMethod.ProcessKill]: { params: processKillParamsSchema, result: emptyResultSchema },\n [HandleRpcMethod.AuthRefresh]: {\n params: authRefreshParamsSchema,\n result: authRefreshResultSchema,\n },\n} as const satisfies Record<HandleRpcMethod, { params: z.ZodType; result: z.ZodType }>;\n\nexport const handleRpcNotificationSchemas = {\n [HandleRpcNotification.CancelRequest]: cancelRequestParamsSchema,\n [HandleRpcNotification.StreamChunk]: streamChunkParamsSchema,\n [HandleRpcNotification.StreamEnd]: streamEndParamsSchema,\n [HandleRpcNotification.StreamError]: streamErrorParamsSchema,\n [HandleRpcNotification.StreamCredit]: streamCreditParamsSchema,\n [HandleRpcNotification.StreamCancel]: streamCancelParamsSchema,\n} as const satisfies Record<HandleRpcNotification, z.ZodType>;\n\nexport type HandleRpcParams<M extends HandleRpcMethod> = z.input<\n (typeof handleRpcMethodSchemas)[M]['params']\n>;\nexport type HandleRpcResult<M extends HandleRpcMethod> = z.output<\n (typeof handleRpcMethodSchemas)[M]['result']\n>;\nexport type HandleRpcNotificationParams<N extends HandleRpcNotification> = z.input<\n (typeof handleRpcNotificationSchemas)[N]\n>;\n\n// Typed result parsers, so generic callers get HandleRpcResult<M>.\nexport type HandleRpcResultParsers = {\n [M in HandleRpcMethod]: (raw: JsonValue) => HandleRpcResult<M>;\n};\n\nexport const handleRpcResultParsers: HandleRpcResultParsers = {\n [HandleRpcMethod.Initialize]: (raw) =>\n handleRpcMethodSchemas[HandleRpcMethod.Initialize].result.parse(raw),\n [HandleRpcMethod.Describe]: (raw) =>\n handleRpcMethodSchemas[HandleRpcMethod.Describe].result.parse(raw),\n [HandleRpcMethod.ReadFile]: (raw) =>\n handleRpcMethodSchemas[HandleRpcMethod.ReadFile].result.parse(raw),\n [HandleRpcMethod.ReadTextFile]: (raw) =>\n handleRpcMethodSchemas[HandleRpcMethod.ReadTextFile].result.parse(raw),\n [HandleRpcMethod.WriteFile]: (raw) =>\n handleRpcMethodSchemas[HandleRpcMethod.WriteFile].result.parse(raw),\n [HandleRpcMethod.Spawn]: (raw) => handleRpcMethodSchemas[HandleRpcMethod.Spawn].result.parse(raw),\n [HandleRpcMethod.Run]: (raw) => handleRpcMethodSchemas[HandleRpcMethod.Run].result.parse(raw),\n [HandleRpcMethod.Stat]: (raw) => handleRpcMethodSchemas[HandleRpcMethod.Stat].result.parse(raw),\n [HandleRpcMethod.ReadDir]: (raw) =>\n handleRpcMethodSchemas[HandleRpcMethod.ReadDir].result.parse(raw),\n [HandleRpcMethod.RemovePath]: (raw) =>\n handleRpcMethodSchemas[HandleRpcMethod.RemovePath].result.parse(raw),\n [HandleRpcMethod.GetPortEndpoint]: (raw) =>\n handleRpcMethodSchemas[HandleRpcMethod.GetPortEndpoint].result.parse(raw),\n [HandleRpcMethod.Stop]: (raw) => handleRpcMethodSchemas[HandleRpcMethod.Stop].result.parse(raw),\n [HandleRpcMethod.Destroy]: (raw) =>\n handleRpcMethodSchemas[HandleRpcMethod.Destroy].result.parse(raw),\n [HandleRpcMethod.OnRuntimeShutdown]: (raw) =>\n handleRpcMethodSchemas[HandleRpcMethod.OnRuntimeShutdown].result.parse(raw),\n [HandleRpcMethod.OnSandboxStop]: (raw) =>\n handleRpcMethodSchemas[HandleRpcMethod.OnSandboxStop].result.parse(raw),\n [HandleRpcMethod.OnSandboxDelete]: (raw) =>\n handleRpcMethodSchemas[HandleRpcMethod.OnSandboxDelete].result.parse(raw),\n [HandleRpcMethod.SetNetworkPolicy]: (raw) =>\n handleRpcMethodSchemas[HandleRpcMethod.SetNetworkPolicy].result.parse(raw),\n [HandleRpcMethod.ComputerUse]: (raw) =>\n handleRpcMethodSchemas[HandleRpcMethod.ComputerUse].result.parse(raw),\n [HandleRpcMethod.Screen]: (raw) =>\n handleRpcMethodSchemas[HandleRpcMethod.Screen].result.parse(raw),\n [HandleRpcMethod.LocalMcp]: (raw) =>\n handleRpcMethodSchemas[HandleRpcMethod.LocalMcp].result.parse(raw),\n [HandleRpcMethod.McpOpen]: (raw) =>\n handleRpcMethodSchemas[HandleRpcMethod.McpOpen].result.parse(raw),\n [HandleRpcMethod.McpSend]: (raw) =>\n handleRpcMethodSchemas[HandleRpcMethod.McpSend].result.parse(raw),\n [HandleRpcMethod.McpReceive]: (raw) =>\n handleRpcMethodSchemas[HandleRpcMethod.McpReceive].result.parse(raw),\n [HandleRpcMethod.McpClose]: (raw) =>\n handleRpcMethodSchemas[HandleRpcMethod.McpClose].result.parse(raw),\n [HandleRpcMethod.ProcessWait]: (raw) =>\n handleRpcMethodSchemas[HandleRpcMethod.ProcessWait].result.parse(raw),\n [HandleRpcMethod.ProcessKill]: (raw) =>\n handleRpcMethodSchemas[HandleRpcMethod.ProcessKill].result.parse(raw),\n [HandleRpcMethod.AuthRefresh]: (raw) =>\n handleRpcMethodSchemas[HandleRpcMethod.AuthRefresh].result.parse(raw),\n};\n\nexport const parseHandleRpcResult = <M extends HandleRpcMethod>(\n method: M,\n raw: JsonValue,\n): HandleRpcResult<M> => handleRpcResultParsers[method](raw);\n\nconst isHandleRpcMethod = (value: string): value is HandleRpcMethod =>\n Object.values(HandleRpcMethod).some((method) => method === value);\n\nexport const parseHandleRpcMethod = (method: string): HandleRpcMethod | null =>\n isHandleRpcMethod(method) ? method : null;\n\n// Methods that write files; rejected below write access.\nexport const HANDLE_RPC_FILE_WRITE_METHODS: readonly HandleRpcMethod[] = [\n HandleRpcMethod.WriteFile,\n HandleRpcMethod.RemovePath,\n];\n\n// Methods that run processes or act on the machine; rejected below execute access.\nexport const HANDLE_RPC_EXECUTE_METHODS: readonly HandleRpcMethod[] = [\n HandleRpcMethod.Spawn,\n HandleRpcMethod.Run,\n HandleRpcMethod.ProcessWait,\n HandleRpcMethod.ProcessKill,\n HandleRpcMethod.ComputerUse,\n HandleRpcMethod.LocalMcp,\n HandleRpcMethod.McpOpen,\n HandleRpcMethod.McpSend,\n HandleRpcMethod.McpReceive,\n HandleRpcMethod.McpClose,\n];\n\n// Methods that change the sandbox; rejected on read-only bindings.\nexport const HANDLE_RPC_WRITE_METHODS: readonly HandleRpcMethod[] = [\n ...HANDLE_RPC_FILE_WRITE_METHODS,\n ...HANDLE_RPC_EXECUTE_METHODS,\n];\n\n// Lifecycle and policy methods; rejected unless the binding allows lifecycle.\nexport const HANDLE_RPC_LIFECYCLE_METHODS: readonly HandleRpcMethod[] = [\n HandleRpcMethod.OnSandboxStop,\n HandleRpcMethod.OnSandboxDelete,\n HandleRpcMethod.OnRuntimeShutdown,\n HandleRpcMethod.Stop,\n HandleRpcMethod.Destroy,\n HandleRpcMethod.SetNetworkPolicy,\n];\n\n// Safe to re-issue after a connection loss.\nexport const HANDLE_RPC_IDEMPOTENT_METHODS: readonly HandleRpcMethod[] = [\n HandleRpcMethod.Describe,\n HandleRpcMethod.ReadTextFile,\n HandleRpcMethod.Stat,\n HandleRpcMethod.ReadDir,\n HandleRpcMethod.GetPortEndpoint,\n HandleRpcMethod.Screen,\n HandleRpcMethod.ComputerUse,\n HandleRpcMethod.LocalMcp,\n];\n\nexport const encodeChunkFrame = (streamId: number, payload: Uint8Array): Uint8Array => {\n const frame = new Uint8Array(BINARY_FRAME_HEADER_BYTES + payload.byteLength);\n frame[0] = BINARY_FRAME_MAGIC;\n frame[1] = BinaryFrameKind.Chunk;\n new DataView(frame.buffer, frame.byteOffset, frame.byteLength).setUint32(2, streamId, false);\n frame.set(payload, BINARY_FRAME_HEADER_BYTES);\n return frame;\n};\n\nexport const decodeBinaryFrame = (\n frame: Uint8Array,\n): { kind: BinaryFrameKind; streamId: number; payload: Uint8Array } | null => {\n if (frame.byteLength < BINARY_FRAME_HEADER_BYTES || frame[0] !== BINARY_FRAME_MAGIC) return null;\n if (frame[1] !== BinaryFrameKind.Chunk) return null;\n const streamId = new DataView(frame.buffer, frame.byteOffset, frame.byteLength).getUint32(\n 2,\n false,\n );\n return {\n kind: BinaryFrameKind.Chunk,\n streamId,\n payload: frame.subarray(BINARY_FRAME_HEADER_BYTES),\n };\n};\n\nexport const encodeJsonRpc = (message: JsonValue): string => JSON.stringify(message);\n\n// Extracts the bearer token from an upgrade request: `Authorization: Bearer`\n// first, then a `bearer.<token>` entry in Sec-WebSocket-Protocol.\nexport const handleRpcTokenFromRequest = (request: Request): string | null => {\n const authorization = request.headers.get('authorization');\n if (authorization != null) {\n const match = /^Bearer\\s+(.+)$/i.exec(authorization.trim());\n if (match?.[1] != null) return match[1];\n }\n const protocols = request.headers.get('sec-websocket-protocol');\n if (protocols != null) {\n for (const entry of protocols.split(',')) {\n const value = entry.trim();\n if (value.startsWith(HANDLE_RPC_BEARER_PROTOCOL_PREFIX)) {\n const token = value.slice(HANDLE_RPC_BEARER_PROTOCOL_PREFIX.length);\n if (token.length > 0) return token;\n }\n }\n }\n return null;\n};\n\n// Subprotocols a client offers; the server answers HANDLE_RPC_SUBPROTOCOL.\nexport const handleRpcClientProtocols = (token: string): string[] => [\n HANDLE_RPC_SUBPROTOCOL,\n `${HANDLE_RPC_BEARER_PROTOCOL_PREFIX}${token}`,\n];\n\nexport * from \"./frame-channel.mjs\";\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,OAAO;AACnB,SAAS,uBAAuC;AAChD,SAAS,eAAe,cAAc,mBAAmB,wBAAwB;AAiD1E,MAAM,qBAAqB;AAC3B,MAAM,yBAAyB;AAC/B,MAAM,oCAAoC;AAC1C,MAAM,kBAAkB,MAAM;AAC9B,MAAM,8BAA8B,OAAO;AAE3C,MAAM,yBAAyB,KAAK;AACpC,MAAM,qBAAqB;AAC3B,MAAM,4BAA4B;AACzC,MAAM,gBAAgB;AAEf,IAAK,kBAAL,kBAAKA,qBAAL;AACL,EAAAA,kCAAA,WAAQ,KAAR;AADU,SAAAA;AAAA,GAAA;AAIL,IAAK,qBAAL,kBAAKC,wBAAL;AACL,EAAAA,wCAAA,YAAS,OAAT;AACA,EAAAA,wCAAA,mBAAgB,QAAhB;AACA,EAAAA,wCAAA,kBAAe,QAAf;AAHU,SAAAA;AAAA,GAAA;AAML,IAAK,qBAAL,kBAAKC,wBAAL;AACL,EAAAA,wCAAA,gBAAa,UAAb;AACA,EAAAA,wCAAA,oBAAiB,UAAjB;AACA,EAAAA,wCAAA,oBAAiB,UAAjB;AACA,EAAAA,wCAAA,mBAAgB,UAAhB;AACA,EAAAA,wCAAA,cAAW,UAAX;AACA,EAAAA,wCAAA,kBAAe,UAAf;AACA,EAAAA,wCAAA,oBAAiB,UAAjB;AAEA,EAAAA,wCAAA,eAAY,UAAZ;AACA,EAAAA,wCAAA,cAAW,UAAX;AAEA,EAAAA,wCAAA,iBAAc,UAAd;AAEA,EAAAA,wCAAA,sBAAmB,UAAnB;AACA,EAAAA,wCAAA,aAAU,UAAV;AACA,EAAAA,wCAAA,eAAY,UAAZ;AAhBU,SAAAA;AAAA,GAAA;AAmBL,IAAK,kBAAL,kBAAKC,qBAAL;AACL,EAAAA,iBAAA,gBAAa;AACb,EAAAA,iBAAA,cAAW;AACX,EAAAA,iBAAA,cAAW;AACX,EAAAA,iBAAA,kBAAe;AACf,EAAAA,iBAAA,eAAY;AACZ,EAAAA,iBAAA,WAAQ;AACR,EAAAA,iBAAA,SAAM;AACN,EAAAA,iBAAA,UAAO;AACP,EAAAA,iBAAA,aAAU;AACV,EAAAA,iBAAA,gBAAa;AACb,EAAAA,iBAAA,qBAAkB;AAClB,EAAAA,iBAAA,UAAO;AACP,EAAAA,iBAAA,aAAU;AACV,EAAAA,iBAAA,sBAAmB;AACnB,EAAAA,iBAAA,mBAAgB;AAChB,EAAAA,iBAAA,qBAAkB;AAClB,EAAAA,iBAAA,uBAAoB;AACpB,EAAAA,iBAAA,iBAAc;AACd,EAAAA,iBAAA,YAAS;AACT,EAAAA,iBAAA,cAAW;AACX,EAAAA,iBAAA,aAAU;AACV,EAAAA,iBAAA,aAAU;AACV,EAAAA,iBAAA,gBAAa;AACb,EAAAA,iBAAA,cAAW;AACX,EAAAA,iBAAA,iBAAc;AACd,EAAAA,iBAAA,iBAAc;AACd,EAAAA,iBAAA,iBAAc;AA3BJ,SAAAA;AAAA,GAAA;AA8BL,IAAK,wBAAL,kBAAKC,2BAAL;AACL,EAAAA,uBAAA,mBAAgB;AAChB,EAAAA,uBAAA,iBAAc;AACd,EAAAA,uBAAA,eAAY;AACZ,EAAAA,uBAAA,iBAAc;AACd,EAAAA,uBAAA,kBAAe;AACf,EAAAA,uBAAA,kBAAe;AANL,SAAAA;AAAA,GAAA;AAkBL,MAAM,iBAAiB,CAAC,SAO7B,OAAO,OAAO,IAAI,MAAM,KAAK,OAAO,GAAG;AAAA,EACrC,MAAM;AAAA,EACN,MAAM,KAAK;AAAA,EACX,WAAW,KAAK,aAAa;AAAA,EAC7B,OAAO,KAAK,SAAS;AAAA,EACrB,MAAM,KAAK,QAAQ;AACrB,CAAC;AAEH,MAAM,6BAA6B,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,WAAW,EAAE,QAAQ,EAAE,CAAC;AACxF,MAAM,oBAAoB,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAEhD,MAAM,mBAAmB,CAAC,UAC/B,iBAAiB,SAAS,2BAA2B,UAAU,KAAK,EAAE;AAGjE,MAAM,UAAU,CAAC,UAAkC;AACxD,MAAI,iBAAiB,KAAK,EAAG,QAAO,MAAM;AAC1C,MAAI,EAAE,iBAAiB,OAAQ,QAAO;AACtC,QAAM,SAAS,kBAAkB,UAAU,KAAK;AAChD,SAAO,OAAO,UAAU,OAAO,KAAK,OAAO;AAC7C;AAEA,MAAM,kBAAkB,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AAGvD,MAAM,uBAAuB,EAAE,OAAO;AAAA,EAC3C,SAAS,EAAE,QAAQ,KAAK;AAAA,EACxB,IAAI;AAAA,EACJ,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACxB,QAAQ,gBAAgB,SAAS;AACnC,CAAC;AAEM,MAAM,4BAA4B,EAAE,OAAO;AAAA,EAChD,SAAS,EAAE,QAAQ,KAAK;AAAA,EACxB,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACxB,QAAQ,gBAAgB,SAAS;AACnC,CAAC;AAEM,MAAM,2BAA2B,EAAE,OAAO;AAAA,EAC/C,MAAM,EAAE,OAAO,EAAE,IAAI;AAAA,EACrB,SAAS,EAAE,OAAO;AAAA,EAClB,MAAM,gBAAgB,SAAS;AACjC,CAAC;AAEM,MAAM,uBAAuB,EAAE,OAAO;AAAA,EAC3C,SAAS,EAAE,QAAQ,KAAK;AAAA,EACxB,IAAI;AAAA,EACJ,QAAQ;AACV,CAAC;AAEM,MAAM,6BAA6B,EAAE,OAAO;AAAA,EACjD,SAAS,EAAE,QAAQ,KAAK;AAAA,EACxB,IAAI,gBAAgB,SAAS;AAAA,EAC7B,OAAO;AACT,CAAC;AAOM,MAAM,2BAA2B,EAAE,OAAO;AAAA,EAC/C,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACtC,WAAW,EAAE,QAAQ,EAAE,SAAS;AAClC,CAAC;AAED,MAAM,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,aAAa;AAChE,MAAM,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC;AAGnC,MAAM,sBAAsB,CAAC,UAC3B,OAAO,OAAO,iBAAiB,EAAE,KAAK,CAAC,eAAe,eAAe,KAAK;AACrE,MAAM,4BAA4B,EACtC,MAAM,EAAE,OAAO,CAAC,EAChB,UAAU,CAAC,WAAW,OAAO,OAAO,mBAAmB,CAAC;AAE3D,MAAM,qBAAqB,CAAC,UAC1B,OAAO,OAAO,gBAAgB,EAAE,KAAK,CAAC,cAAc,cAAc,KAAK;AACzE,MAAM,kBAAkB,EACrB,OAAO,EACP,UAAU,CAAC,UAAW,mBAAmB,KAAK,IAAI,QAAQ,iBAAiB,KAAM;AAE7E,MAAM,aAAa,EAAE,OAAO;AAAA,EACjC,MAAM,EAAE,OAAO;AAAA,EACf,MAAM;AAAA,EACN,MAAM,EAAE,OAAO,EAAE,YAAY;AAAA,EAC7B,YAAY,EAAE,OAAO,EAAE,SAAS;AAAA,EAChC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAClC,CAAC;AAEM,MAAM,iBAAiB,EAAE,OAAO;AAAA,EACrC,MAAM,EAAE,OAAO;AAAA,EACf,MAAM,EAAE,OAAO;AAAA,EACf,MAAM;AAAA,EACN,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS;AAC1C,CAAC;AAEM,MAAM,oBAAoB,EAAE,OAAO;AAAA,EACxC,MAAM,EAAE,OAAO;AAAA,EACf,KAAK,EAAE,OAAO;AAAA,EACd,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,OAAO,CAAC;AAC1C,CAAC;AAGM,MAAM,2BAA2B,EAAE,OAAO;AAAA,EAC/C,MAAM,EAAE,OAAO;AAAA,EACf,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC;AAC/B,CAAC;AACM,MAAM,2BAA2B,EAAE,MAAM,CAAC,mBAAmB,wBAAwB,CAAC;AAEtF,MAAM,sBAAsB,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,IAAI,EAAE,CAAC;AAElF,MAAM,sBAAsB,EAAE,OAAO;AAAA,EAC1C,KAAK,EAAE,OAAO;AAAA,EACd,OAAO,EAAE,OAAO;AAAA,EAChB,WAAW,EAAE,OAAO;AACtB,CAAC;AAEM,MAAM,uBAAuB,EAAE,OAAO;AAAA,EAC3C,kBAAkB,EAAE,QAAQ,kBAAkB;AAAA,EAC9C,IAAI,EAAE,OAAO;AAAA,EACb,yBAAyB,EAAE,OAAO;AAAA,EAClC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAC/B,cAAc;AAAA,EACd,aAAa,EAAE,OAAO;AAAA,EACtB,eAAe,EAAE,QAAQ,EAAE,SAAS;AAAA,EACpC,eAAe,EAAE,QAAQ,EAAE,SAAS;AAAA,EACpC,aAAa,EAAE,QAAQ,EAAE,SAAS;AACpC,CAAC;AAEM,MAAM,yBAAyB,EAAE,OAAO;AAAA,EAC7C,kBAAkB,EAAE,QAAQ,kBAAkB;AAAA,EAC9C,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACtC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS;AACvE,CAAC;AAEM,MAAM,yBAAyB,qBAAqB,OAAO;AAAA;AAAA,EAEhE,WAAW,EAAE,OAAO,EAAE,SAAS;AACjC,CAAC;AAED,MAAM,cAAc,EAAE,OAAO,CAAC,CAAC,EAAE,YAAY;AAC7C,MAAM,oBAAoB,EAAE,OAAO,CAAC,CAAC,EAAE,YAAY;AAEnD,MAAM,sBAAsB;AAAA,EAC1B,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACzB,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACnC,KAAK,EAAE,OAAO,EAAE,SAAS;AAAA,EACzB,KAAK,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC/C,OAAO,EAAE,QAAQ,EAAE,SAAS;AAAA,EAC5B,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;AAClD;AAEO,MAAM,uBAAuB,EAAE,OAAO;AAAA,EAC3C,MAAM,WAAW,SAAS;AAAA,EAC1B,MAAM;AAAA,EACN,UAAU;AAAA;AAAA,EAEV,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS;AAAA,EAChD,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS;AAClD,CAAC;AAEM,MAAM,uBAAuB,EAAE,OAAO;AAAA,EAC3C,OAAO,EAAE,QAAQ;AACnB,CAAC;AAEM,MAAM,2BAA2B,EAAE,OAAO;AAAA,EAC/C,MAAM;AAAA,EACN,UAAU,EAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;AAAA,EAChD,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;AAChD,CAAC;AAEM,MAAM,2BAA2B,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAEzE,MAAM,wBAAwB,EAClC,OAAO;AAAA,EACN,MAAM;AAAA,EACN,UAAU,eAAe,SAAS;AAAA,EAClC,eAAe,EAAE,OAAO,EAAE,SAAS;AACrC,CAAC,EACA,OAAO,CAAC,WAAY,OAAO,YAAY,UAAW,OAAO,iBAAiB,OAAO;AAAA,EAChF,SAAS;AACX,CAAC;AAEI,MAAM,oBAAoB,EAAE,OAAO;AAAA,EACxC,GAAG;AAAA;AAAA,EAEH,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA;AAAA,EAE3B,eAAe,eAAe,SAAS;AAAA,EACvC,gBAAgB;AAAA,EAChB,gBAAgB;AAClB,CAAC;AAEM,MAAM,oBAAoB,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAEjE,MAAM,kBAAkB,EAAE,OAAO;AAAA,EACtC,GAAG;AAAA,EACH,OAAO,EAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AAEM,MAAM,kBAAkB,EAAE,OAAO;AAAA,EACtC,UAAU,EAAE,OAAO,EAAE,IAAI;AAAA,EACzB,QAAQ,EAAE,OAAO;AAAA,EACjB,QAAQ,EAAE,OAAO;AACnB,CAAC;AAEM,MAAM,mBAAmB,EAAE,OAAO,EAAE,MAAM,YAAY,MAAM,WAAW,SAAS,EAAE,CAAC;AACnF,MAAM,mBAAmB,EAAE,OAAO,EAAE,MAAM,WAAW,SAAS,EAAE,CAAC;AACjE,MAAM,sBAAsB,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,EAAE,CAAC;AAEzE,MAAM,yBAAyB,EAAE,OAAO;AAAA,EAC7C,MAAM;AAAA,EACN,WAAW,EAAE,QAAQ,EAAE,SAAS;AAAA,EAChC,OAAO,EAAE,QAAQ,EAAE,SAAS;AAC9B,CAAC;AAEM,MAAM,8BAA8B,EAAE,OAAO;AAAA,EAClD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,KAAK;AAAA,EACvC,UAAU,EAAE,WAAW,YAAY,EAAE,SAAS;AAChD,CAAC;AAEM,MAAM,8BAA8B,EAAE,OAAO;AAAA,EAClD,KAAK,EAAE,OAAO;AAAA,EACd,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,OAAO,CAAC,EAAE,SAAS;AACrD,CAAC;AAEM,MAAM,+BAA+B,EAAE,OAAO;AAAA,EACnD,MAAM,EAAE,WAAW,aAAa;AAAA,EAChC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS;AACtC,CAAC;AAEM,MAAM,gCAAgC,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAEhF,MAAM,uBAAuB,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,EAAE,CAAC;AACtF,MAAM,sBAAsB,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;AACvE,MAAM,yBAAyB,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;AACxE,MAAM,sBAAsB,uBAAuB,OAAO,EAAE,SAAS,gBAAgB,CAAC;AACtF,MAAM,sBAAsB;AAC5B,MAAM,yBAAyB,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,EAAE,CAAC;AAE9E,MAAM,wBAAwB,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;AACvE,MAAM,0BAA0B,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACvE,MAAM,0BAA0B,EAAE,OAAO;AAAA,EAC9C,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAC3B,QAAQ,EAAE,OAAO,EAAE,SAAS;AAC9B,CAAC;AAEM,MAAM,0BAA0B,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;AACrE,MAAM,0BAA0B,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAE7E,MAAM,4BAA4B,EAAE,OAAO,EAAE,WAAW,gBAAgB,CAAC;AACzE,MAAM,0BAA0B,EAAE,OAAO,EAAE,UAAU,gBAAgB,MAAM,EAAE,OAAO,EAAE,CAAC;AACvF,MAAM,wBAAwB,EAAE,OAAO,EAAE,UAAU,eAAe,CAAC;AACnE,MAAM,0BAA0B,EAAE,OAAO;AAAA,EAC9C,UAAU;AAAA,EACV,SAAS,EAAE,OAAO;AAAA,EAClB,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EAChC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AACxC,CAAC;AACM,MAAM,2BAA2B,EAAE,OAAO;AAAA,EAC/C,UAAU;AAAA,EACV,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AACnC,CAAC;AACM,MAAM,2BAA2B,EAAE,OAAO;AAAA,EAC/C,UAAU;AAAA,EACV,QAAQ,EAAE,OAAO,EAAE,SAAS;AAC9B,CAAC;AAOM,MAAM,yBAAyB;AAAA,EACpC,CAAC,6BAA0B,GAAG,EAAE,QAAQ,wBAAwB,QAAQ,uBAAuB;AAAA,EAC/F,CAAC,iCAAwB,GAAG,EAAE,QAAQ,aAAa,QAAQ,qBAAqB;AAAA,EAChF,CAAC,iCAAwB,GAAG,EAAE,QAAQ,sBAAsB,QAAQ,qBAAqB;AAAA,EACzF,CAAC,yCAA4B,GAAG;AAAA,IAC9B,QAAQ;AAAA,IACR,QAAQ;AAAA,EACV;AAAA,EACA,CAAC,mCAAyB,GAAG,EAAE,QAAQ,uBAAuB,QAAQ,kBAAkB;AAAA,EACxF,CAAC,2BAAqB,GAAG,EAAE,QAAQ,mBAAmB,QAAQ,kBAAkB;AAAA,EAChF,CAAC,uBAAmB,GAAG,EAAE,QAAQ,iBAAiB,QAAQ,gBAAgB;AAAA,EAC1E,CAAC,yBAAoB,GAAG,EAAE,QAAQ,kBAAkB,QAAQ,iBAAiB;AAAA,EAC7E,CAAC,+BAAuB,GAAG,EAAE,QAAQ,kBAAkB,QAAQ,oBAAoB;AAAA,EACnF,CAAC,qCAA0B,GAAG,EAAE,QAAQ,wBAAwB,QAAQ,kBAAkB;AAAA,EAC1F,CAAC,+CAA+B,GAAG;AAAA,IACjC,QAAQ;AAAA,IACR,QAAQ;AAAA,EACV;AAAA,EACA,CAAC,yBAAoB,GAAG,EAAE,QAAQ,aAAa,QAAQ,kBAAkB;AAAA,EACzE,CAAC,+BAAuB,GAAG,EAAE,QAAQ,aAAa,QAAQ,kBAAkB;AAAA,EAC5E,CAAC,0CAA6B,GAAG,EAAE,QAAQ,aAAa,QAAQ,kBAAkB;AAAA,EAClF,CAAC,8CAA+B,GAAG;AAAA,IACjC,QAAQ;AAAA,IACR,QAAQ;AAAA,EACV;AAAA,EACA,CAAC,kDAAiC,GAAG,EAAE,QAAQ,aAAa,QAAQ,kBAAkB;AAAA,EACtF,CAAC,iDAAgC,GAAG;AAAA,IAClC,QAAQ;AAAA,IACR,QAAQ;AAAA,EACV;AAAA,EACA,CAAC,uCAA2B,GAAG,EAAE,QAAQ,aAAa,QAAQ,yBAAyB;AAAA,EACvF,CAAC,6BAAsB,GAAG,EAAE,QAAQ,qBAAqB,QAAQ,oBAAoB;AAAA,EACrF,CAAC,iCAAwB,GAAG,EAAE,QAAQ,aAAa,QAAQ,qBAAqB;AAAA,EAChF,CAAC,wBAAuB,GAAG,EAAE,QAAQ,qBAAqB,QAAQ,oBAAoB;AAAA,EACtF,CAAC,wBAAuB,GAAG,EAAE,QAAQ,qBAAqB,QAAQ,kBAAkB;AAAA,EACpF,CAAC,8BAA0B,GAAG,EAAE,QAAQ,wBAAwB,QAAQ,uBAAuB;AAAA,EAC/F,CAAC,0BAAwB,GAAG,EAAE,QAAQ,wBAAwB,QAAQ,kBAAkB;AAAA,EACxF,CAAC,gCAA2B,GAAG,EAAE,QAAQ,uBAAuB,QAAQ,wBAAwB;AAAA,EAChG,CAAC,gCAA2B,GAAG,EAAE,QAAQ,yBAAyB,QAAQ,kBAAkB;AAAA,EAC5F,CAAC,gCAA2B,GAAG;AAAA,IAC7B,QAAQ;AAAA,IACR,QAAQ;AAAA,EACV;AACF;AAEO,MAAM,+BAA+B;AAAA,EAC1C,CAAC,sCAAmC,GAAG;AAAA,EACvC,CAAC,gCAAiC,GAAG;AAAA,EACrC,CAAC,4BAA+B,GAAG;AAAA,EACnC,CAAC,gCAAiC,GAAG;AAAA,EACrC,CAAC,kCAAkC,GAAG;AAAA,EACtC,CAAC,kCAAkC,GAAG;AACxC;AAiBO,MAAM,yBAAiD;AAAA,EAC5D,CAAC,6BAA0B,GAAG,CAAC,QAC7B,uBAAuB,6BAA0B,EAAE,OAAO,MAAM,GAAG;AAAA,EACrE,CAAC,iCAAwB,GAAG,CAAC,QAC3B,uBAAuB,iCAAwB,EAAE,OAAO,MAAM,GAAG;AAAA,EACnE,CAAC,iCAAwB,GAAG,CAAC,QAC3B,uBAAuB,iCAAwB,EAAE,OAAO,MAAM,GAAG;AAAA,EACnE,CAAC,yCAA4B,GAAG,CAAC,QAC/B,uBAAuB,yCAA4B,EAAE,OAAO,MAAM,GAAG;AAAA,EACvE,CAAC,mCAAyB,GAAG,CAAC,QAC5B,uBAAuB,mCAAyB,EAAE,OAAO,MAAM,GAAG;AAAA,EACpE,CAAC,2BAAqB,GAAG,CAAC,QAAQ,uBAAuB,2BAAqB,EAAE,OAAO,MAAM,GAAG;AAAA,EAChG,CAAC,uBAAmB,GAAG,CAAC,QAAQ,uBAAuB,uBAAmB,EAAE,OAAO,MAAM,GAAG;AAAA,EAC5F,CAAC,yBAAoB,GAAG,CAAC,QAAQ,uBAAuB,yBAAoB,EAAE,OAAO,MAAM,GAAG;AAAA,EAC9F,CAAC,+BAAuB,GAAG,CAAC,QAC1B,uBAAuB,+BAAuB,EAAE,OAAO,MAAM,GAAG;AAAA,EAClE,CAAC,qCAA0B,GAAG,CAAC,QAC7B,uBAAuB,qCAA0B,EAAE,OAAO,MAAM,GAAG;AAAA,EACrE,CAAC,+CAA+B,GAAG,CAAC,QAClC,uBAAuB,+CAA+B,EAAE,OAAO,MAAM,GAAG;AAAA,EAC1E,CAAC,yBAAoB,GAAG,CAAC,QAAQ,uBAAuB,yBAAoB,EAAE,OAAO,MAAM,GAAG;AAAA,EAC9F,CAAC,+BAAuB,GAAG,CAAC,QAC1B,uBAAuB,+BAAuB,EAAE,OAAO,MAAM,GAAG;AAAA,EAClE,CAAC,kDAAiC,GAAG,CAAC,QACpC,uBAAuB,kDAAiC,EAAE,OAAO,MAAM,GAAG;AAAA,EAC5E,CAAC,0CAA6B,GAAG,CAAC,QAChC,uBAAuB,0CAA6B,EAAE,OAAO,MAAM,GAAG;AAAA,EACxE,CAAC,8CAA+B,GAAG,CAAC,QAClC,uBAAuB,8CAA+B,EAAE,OAAO,MAAM,GAAG;AAAA,EAC1E,CAAC,iDAAgC,GAAG,CAAC,QACnC,uBAAuB,iDAAgC,EAAE,OAAO,MAAM,GAAG;AAAA,EAC3E,CAAC,uCAA2B,GAAG,CAAC,QAC9B,uBAAuB,uCAA2B,EAAE,OAAO,MAAM,GAAG;AAAA,EACtE,CAAC,6BAAsB,GAAG,CAAC,QACzB,uBAAuB,6BAAsB,EAAE,OAAO,MAAM,GAAG;AAAA,EACjE,CAAC,iCAAwB,GAAG,CAAC,QAC3B,uBAAuB,iCAAwB,EAAE,OAAO,MAAM,GAAG;AAAA,EACnE,CAAC,wBAAuB,GAAG,CAAC,QAC1B,uBAAuB,wBAAuB,EAAE,OAAO,MAAM,GAAG;AAAA,EAClE,CAAC,wBAAuB,GAAG,CAAC,QAC1B,uBAAuB,wBAAuB,EAAE,OAAO,MAAM,GAAG;AAAA,EAClE,CAAC,8BAA0B,GAAG,CAAC,QAC7B,uBAAuB,8BAA0B,EAAE,OAAO,MAAM,GAAG;AAAA,EACrE,CAAC,0BAAwB,GAAG,CAAC,QAC3B,uBAAuB,0BAAwB,EAAE,OAAO,MAAM,GAAG;AAAA,EACnE,CAAC,gCAA2B,GAAG,CAAC,QAC9B,uBAAuB,gCAA2B,EAAE,OAAO,MAAM,GAAG;AAAA,EACtE,CAAC,gCAA2B,GAAG,CAAC,QAC9B,uBAAuB,gCAA2B,EAAE,OAAO,MAAM,GAAG;AAAA,EACtE,CAAC,gCAA2B,GAAG,CAAC,QAC9B,uBAAuB,gCAA2B,EAAE,OAAO,MAAM,GAAG;AACxE;AAEO,MAAM,uBAAuB,CAClC,QACA,QACuB,uBAAuB,MAAM,EAAE,GAAG;AAE3D,MAAM,oBAAoB,CAAC,UACzB,OAAO,OAAO,eAAe,EAAE,KAAK,CAAC,WAAW,WAAW,KAAK;AAE3D,MAAM,uBAAuB,CAAC,WACnC,kBAAkB,MAAM,IAAI,SAAS;AAGhC,MAAM,gCAA4D;AAAA,EACvE;AAAA,EACA;AACF;AAGO,MAAM,6BAAyD;AAAA,EACpE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGO,MAAM,2BAAuD;AAAA,EAClE,GAAG;AAAA,EACH,GAAG;AACL;AAGO,MAAM,+BAA2D;AAAA,EACtE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGO,MAAM,gCAA4D;AAAA,EACvE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,MAAM,mBAAmB,CAAC,UAAkB,YAAoC;AACrF,QAAM,QAAQ,IAAI,WAAW,4BAA4B,QAAQ,UAAU;AAC3E,QAAM,CAAC,IAAI;AACX,QAAM,CAAC,IAAI;AACX,MAAI,SAAS,MAAM,QAAQ,MAAM,YAAY,MAAM,UAAU,EAAE,UAAU,GAAG,UAAU,KAAK;AAC3F,QAAM,IAAI,SAAS,yBAAyB;AAC5C,SAAO;AACT;AAEO,MAAM,oBAAoB,CAC/B,UAC4E;AAC5E,MAAI,MAAM,aAAa,6BAA6B,MAAM,CAAC,MAAM,mBAAoB,QAAO;AAC5F,MAAI,MAAM,CAAC,MAAM,cAAuB,QAAO;AAC/C,QAAM,WAAW,IAAI,SAAS,MAAM,QAAQ,MAAM,YAAY,MAAM,UAAU,EAAE;AAAA,IAC9E;AAAA,IACA;AAAA,EACF;AACA,SAAO;AAAA,IACL,MAAM;AAAA,IACN;AAAA,IACA,SAAS,MAAM,SAAS,yBAAyB;AAAA,EACnD;AACF;AAEO,MAAM,gBAAgB,CAAC,YAA+B,KAAK,UAAU,OAAO;AAI5E,MAAM,4BAA4B,CAAC,YAAoC;AAC5E,QAAM,gBAAgB,QAAQ,QAAQ,IAAI,eAAe;AACzD,MAAI,iBAAiB,MAAM;AACzB,UAAM,QAAQ,mBAAmB,KAAK,cAAc,KAAK,CAAC;AAC1D,QAAI,QAAQ,CAAC,KAAK,KAAM,QAAO,MAAM,CAAC;AAAA,EACxC;AACA,QAAM,YAAY,QAAQ,QAAQ,IAAI,wBAAwB;AAC9D,MAAI,aAAa,MAAM;AACrB,eAAW,SAAS,UAAU,MAAM,GAAG,GAAG;AACxC,YAAM,QAAQ,MAAM,KAAK;AACzB,UAAI,MAAM,WAAW,iCAAiC,GAAG;AACvD,cAAM,QAAQ,MAAM,MAAM,kCAAkC,MAAM;AAClE,YAAI,MAAM,SAAS,EAAG,QAAO;AAAA,MAC/B;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAGO,MAAM,2BAA2B,CAAC,UAA4B;AAAA,EACnE;AAAA,EACA,GAAG,iCAAiC,GAAG,KAAK;AAC9C;AAEA,cAAc;",
|
|
6
|
+
"names": ["BinaryFrameKind", "HandleRpcCloseCode", "HandleRpcErrorCode", "HandleRpcMethod", "HandleRpcNotification"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { NetworkSandboxSessionIface } from "./types.mjs";
|
|
2
|
+
export interface MapSessionPathArgsIface {
|
|
3
|
+
sessionRoot: string;
|
|
4
|
+
workspaceRoot: string;
|
|
5
|
+
path: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const mapSessionPath: (args: MapSessionPathArgsIface) => string;
|
|
8
|
+
export declare const withSessionWorkspaceRoot: <S extends NetworkSandboxSessionIface>(sandbox: S, sessionRoot: string) => S;
|