@hachej/boring-agent 0.1.89 → 0.1.90
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-GOM3VJOJ.js → chunk-4PKGVPJA.js} +8 -0
- package/dist/{chunk-I7UEASPG.js → chunk-5CYVBVP3.js} +4315 -9647
- package/dist/{chunk-M32FXCIN.js → chunk-BEFJNMKQ.js} +1 -1
- package/dist/{chunk-XPQEF32D.js → chunk-CFQQXJKK.js} +1 -1
- package/dist/{chunk-WZCTVT57.js → chunk-F7ZS27HE.js} +2 -94
- package/dist/{chunk-BDYXKHWY.js → chunk-JEDRQAR5.js} +1 -1
- package/dist/core/index.d.ts +5 -5
- package/dist/core/index.js +2 -2
- package/dist/{createHarness-CCQLHKUF.js → createHarness-UCCGMVQJ.js} +2 -2
- package/dist/front/index.d.ts +12 -3
- package/dist/front/index.js +62 -4
- package/dist/{harness-VvP0l5Mj.d.ts → harness-Rbkdpvse.d.ts} +2 -2
- package/dist/{piChatEvent-nmOBSNU9.d.ts → piChatEvent-CHgln6yx.d.ts} +13 -13
- package/dist/{piChatSessionService-DPjJ0g71.d.ts → piChatSessionService-DDKPOj4x.d.ts} +1 -1
- package/dist/{protocol-B_OQKfbI.d.ts → protocol-CDA4bcP9.d.ts} +2 -18
- package/dist/{sandbox-DthfJaOB.d.ts → sandbox-OEG_l9GE.d.ts} +1 -1
- package/dist/server/index.d.ts +164 -288
- package/dist/server/index.js +20 -51
- package/dist/server/worker/index.d.ts +9 -7
- package/dist/server/worker/index.js +18 -27
- package/dist/shared/index.d.ts +51 -27
- package/dist/shared/index.js +3 -3
- package/dist/{workspaceAgentDispatcher-CKEeNPjW.d.ts → workspaceAgentDispatcher-50Uzuxhs.d.ts} +4 -18
- package/docs/ERROR_CODES.md +8 -0
- package/docs/RISKS-MULTI-TAB.md +1 -1
- package/docs/runtime-provisioning.md +1 -1
- package/docs/runtime.md +9 -6
- package/package.json +5 -5
package/dist/server/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AgentDirectoryCompilerError,
|
|
3
|
-
|
|
3
|
+
AuthoredAgentMaterializationError,
|
|
4
4
|
MANAGED_AGENT_MCP_DELIVERY_RULE,
|
|
5
5
|
MANAGED_AGENT_MCP_ORIGIN_SURFACE,
|
|
6
6
|
ManagedAgentMcpDelegateController,
|
|
@@ -10,73 +10,58 @@ import {
|
|
|
10
10
|
RemoteWorkerClient,
|
|
11
11
|
RemoteWorkerClientError,
|
|
12
12
|
UV_SETUP_COMMANDS,
|
|
13
|
-
VERCEL_PROVISIONING_CACHE_ROOT,
|
|
14
|
-
VERCEL_SANDBOX_WORKSPACE_ROOT,
|
|
15
13
|
WORKER_INTERNAL_TOKEN_HEADER,
|
|
16
14
|
WORKER_REQUEST_ID_HEADER,
|
|
17
15
|
WORKER_WORKSPACE_ID_HEADER,
|
|
18
16
|
applyCspHeaders,
|
|
19
|
-
assertRealPathWithinWorkspace,
|
|
20
17
|
autoDetectMode,
|
|
21
|
-
bakeSnapshotIfNeeded,
|
|
22
18
|
buildDeploymentSnapshotRecipe,
|
|
23
|
-
buildPackageHash,
|
|
24
|
-
buildSnapshotRecipeHash,
|
|
25
19
|
compileAgentDirectory,
|
|
26
20
|
constantTimeTokenEqual,
|
|
27
21
|
createAgent,
|
|
28
22
|
createAgentApp,
|
|
29
|
-
|
|
30
|
-
|
|
23
|
+
createDirectModeAdapter,
|
|
24
|
+
createLocalModeAdapter,
|
|
31
25
|
createManagedAgentMcpDelegateController,
|
|
32
26
|
createManagedAgentMcpHttpHandler,
|
|
33
27
|
createManagedAgentMcpServer,
|
|
34
|
-
|
|
28
|
+
createProviderRuntimeModeAdapter,
|
|
35
29
|
createRemoteWorkerModeAdapter,
|
|
36
30
|
createRemoteWorkerSandbox,
|
|
37
31
|
createRemoteWorkerWorkspace,
|
|
38
32
|
createResolvedAgentDigest,
|
|
39
|
-
|
|
40
|
-
createVercelProvisioningAdapter,
|
|
41
|
-
createVercelSandboxWorkspace,
|
|
33
|
+
createVercelSandboxModeAdapter,
|
|
42
34
|
decodeBytesFromWorker,
|
|
43
35
|
encodeBytesForWorker,
|
|
44
|
-
fileRoutes,
|
|
45
|
-
getBoringAgentPathEntries,
|
|
46
|
-
getBoringAgentRuntimeEnv,
|
|
47
|
-
getBoringAgentRuntimePaths,
|
|
48
36
|
hasBwrap,
|
|
37
|
+
materializeAgentDirectory,
|
|
49
38
|
normalizeMeteringUsage,
|
|
50
39
|
prepareDeploymentSnapshot,
|
|
51
|
-
prepareVercelDeploymentSnapshot,
|
|
52
40
|
provisionRuntimeWorkspace,
|
|
53
41
|
provisionWorkspaceRuntime,
|
|
54
42
|
registerAgentRoutes,
|
|
55
43
|
registerShareEntryResources,
|
|
56
44
|
resolveAgentDeployment,
|
|
57
45
|
resolveMode,
|
|
58
|
-
resolveSandboxHandle,
|
|
59
46
|
resolveWorkspaceRoot,
|
|
60
|
-
shareResourceUri
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
import "../chunk-
|
|
64
|
-
import "../chunk-M32FXCIN.js";
|
|
47
|
+
shareResourceUri
|
|
48
|
+
} from "../chunk-5CYVBVP3.js";
|
|
49
|
+
import "../chunk-CFQQXJKK.js";
|
|
50
|
+
import "../chunk-BEFJNMKQ.js";
|
|
65
51
|
import "../chunk-WSQ5QNIY.js";
|
|
66
|
-
import "../chunk-
|
|
52
|
+
import "../chunk-JEDRQAR5.js";
|
|
67
53
|
import {
|
|
68
54
|
PI_PACKAGE_RESOURCE_FILTERS,
|
|
69
55
|
compactPiPackages,
|
|
70
|
-
createLogger,
|
|
71
56
|
createResourceSettingsManager,
|
|
72
57
|
mergePiPackageSources,
|
|
73
58
|
piPackageSourceKey
|
|
74
|
-
} from "../chunk-
|
|
59
|
+
} from "../chunk-F7ZS27HE.js";
|
|
75
60
|
import "../chunk-AQBXNPMD.js";
|
|
76
|
-
import "../chunk-
|
|
61
|
+
import "../chunk-4PKGVPJA.js";
|
|
77
62
|
export {
|
|
78
63
|
AgentDirectoryCompilerError,
|
|
79
|
-
|
|
64
|
+
AuthoredAgentMaterializationError,
|
|
80
65
|
MANAGED_AGENT_MCP_DELIVERY_RULE,
|
|
81
66
|
MANAGED_AGENT_MCP_ORIGIN_SURFACE,
|
|
82
67
|
ManagedAgentMcpDelegateController,
|
|
@@ -87,59 +72,43 @@ export {
|
|
|
87
72
|
RemoteWorkerClient,
|
|
88
73
|
RemoteWorkerClientError,
|
|
89
74
|
UV_SETUP_COMMANDS,
|
|
90
|
-
VERCEL_PROVISIONING_CACHE_ROOT,
|
|
91
|
-
VERCEL_SANDBOX_WORKSPACE_ROOT,
|
|
92
|
-
UV_SETUP_COMMANDS as VERCEL_UV_SETUP_COMMANDS,
|
|
93
75
|
WORKER_INTERNAL_TOKEN_HEADER,
|
|
94
76
|
WORKER_REQUEST_ID_HEADER,
|
|
95
77
|
WORKER_WORKSPACE_ID_HEADER,
|
|
96
78
|
applyCspHeaders,
|
|
97
|
-
assertRealPathWithinWorkspace,
|
|
98
79
|
autoDetectMode,
|
|
99
|
-
bakeSnapshotIfNeeded,
|
|
100
80
|
buildDeploymentSnapshotRecipe,
|
|
101
|
-
buildPackageHash,
|
|
102
|
-
buildSnapshotRecipeHash,
|
|
103
81
|
compactPiPackages,
|
|
104
82
|
compileAgentDirectory,
|
|
105
83
|
constantTimeTokenEqual,
|
|
106
84
|
createAgent,
|
|
107
85
|
createAgentApp,
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
createLogger,
|
|
86
|
+
createDirectModeAdapter,
|
|
87
|
+
createLocalModeAdapter,
|
|
111
88
|
createManagedAgentMcpDelegateController,
|
|
112
89
|
createManagedAgentMcpHttpHandler,
|
|
113
90
|
createManagedAgentMcpServer,
|
|
114
|
-
|
|
91
|
+
createProviderRuntimeModeAdapter,
|
|
115
92
|
createRemoteWorkerModeAdapter,
|
|
116
93
|
createRemoteWorkerSandbox,
|
|
117
94
|
createRemoteWorkerWorkspace,
|
|
118
95
|
createResolvedAgentDigest,
|
|
119
96
|
createResourceSettingsManager,
|
|
120
|
-
|
|
121
|
-
createVercelProvisioningAdapter,
|
|
122
|
-
createVercelSandboxWorkspace,
|
|
97
|
+
createVercelSandboxModeAdapter,
|
|
123
98
|
decodeBytesFromWorker,
|
|
124
99
|
encodeBytesForWorker,
|
|
125
|
-
fileRoutes,
|
|
126
|
-
getBoringAgentPathEntries,
|
|
127
|
-
getBoringAgentRuntimeEnv,
|
|
128
|
-
getBoringAgentRuntimePaths,
|
|
129
100
|
hasBwrap,
|
|
101
|
+
materializeAgentDirectory,
|
|
130
102
|
mergePiPackageSources,
|
|
131
103
|
normalizeMeteringUsage,
|
|
132
104
|
piPackageSourceKey,
|
|
133
105
|
prepareDeploymentSnapshot,
|
|
134
|
-
prepareVercelDeploymentSnapshot,
|
|
135
106
|
provisionRuntimeWorkspace,
|
|
136
107
|
provisionWorkspaceRuntime,
|
|
137
108
|
registerAgentRoutes,
|
|
138
109
|
registerShareEntryResources,
|
|
139
110
|
resolveAgentDeployment,
|
|
140
111
|
resolveMode,
|
|
141
|
-
resolveSandboxHandle,
|
|
142
112
|
resolveWorkspaceRoot,
|
|
143
|
-
shareResourceUri
|
|
144
|
-
validatePath
|
|
113
|
+
shareResourceUri
|
|
145
114
|
};
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { FastifyInstance, FastifyRequest, FastifyReply, FastifyServerOptions } from 'fastify';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { BwrapResourceLimits } from '@hachej/boring-sandbox/providers/bwrap';
|
|
3
|
+
import { SandboxProviderV1 } from '@hachej/boring-sandbox/shared';
|
|
4
|
+
import { W as Workspace, S as Sandbox } from '../../sandbox-OEG_l9GE.js';
|
|
5
|
+
import { R as RemoteWorkerWorkspaceOp, a as RemoteWorkerWorkspaceResult } from '../../protocol-CDA4bcP9.js';
|
|
4
6
|
|
|
5
7
|
interface WorkerConfig {
|
|
6
8
|
workspaceRoot: string;
|
|
@@ -13,7 +15,7 @@ interface WorkerConfig {
|
|
|
13
15
|
}
|
|
14
16
|
declare function loadWorkerConfig(): WorkerConfig;
|
|
15
17
|
|
|
16
|
-
declare function registerWorkerRoutes(app: FastifyInstance, config: WorkerConfig): Promise<void>;
|
|
18
|
+
declare function registerWorkerRoutes(app: FastifyInstance, config: WorkerConfig, runtimeProvider?: SandboxProviderV1): Promise<void>;
|
|
17
19
|
|
|
18
20
|
declare const WORKER_ERROR_CODES: {
|
|
19
21
|
readonly AUTH_INVALID: "auth_invalid";
|
|
@@ -28,12 +30,10 @@ type WorkerErrorCode = (typeof WORKER_ERROR_CODES)[keyof typeof WORKER_ERROR_COD
|
|
|
28
30
|
interface WorkerRuntime {
|
|
29
31
|
workspace: Workspace;
|
|
30
32
|
sandbox: Sandbox;
|
|
33
|
+
dispose(): Promise<void>;
|
|
31
34
|
}
|
|
32
35
|
declare function assertSafeWorkspaceId(workspaceId: string): string;
|
|
33
|
-
declare function createWorkerRuntime(root: string, workspaceId: string,
|
|
34
|
-
bwrapNetwork: 'isolated' | 'shared';
|
|
35
|
-
resourceLimits?: BwrapResourceLimits;
|
|
36
|
-
}): Promise<WorkerRuntime>;
|
|
36
|
+
declare function createWorkerRuntime(root: string, workspaceId: string, provider: SandboxProviderV1): Promise<WorkerRuntime>;
|
|
37
37
|
declare function runWorkspaceOp(workspace: Workspace, op: RemoteWorkerWorkspaceOp): Promise<RemoteWorkerWorkspaceResult>;
|
|
38
38
|
|
|
39
39
|
declare class ExecSemaphore {
|
|
@@ -51,6 +51,8 @@ interface CreateWorkerServerOptions {
|
|
|
51
51
|
config?: WorkerConfig;
|
|
52
52
|
/** Extra Fastify server options merged over the worker defaults. */
|
|
53
53
|
fastify?: FastifyServerOptions;
|
|
54
|
+
/** Host-owned worker provider (normally bwrap). */
|
|
55
|
+
runtimeProvider?: SandboxProviderV1;
|
|
54
56
|
}
|
|
55
57
|
interface WorkerServer {
|
|
56
58
|
app: FastifyInstance;
|
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
|
-
REMOTE_WORKER_RUNTIME_CWD,
|
|
3
2
|
WORKER_INTERNAL_TOKEN_HEADER,
|
|
4
|
-
constantTimeTokenEqual
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
import "../../chunk-XPQEF32D.js";
|
|
9
|
-
import "../../chunk-M32FXCIN.js";
|
|
3
|
+
constantTimeTokenEqual
|
|
4
|
+
} from "../../chunk-5CYVBVP3.js";
|
|
5
|
+
import "../../chunk-CFQQXJKK.js";
|
|
6
|
+
import "../../chunk-BEFJNMKQ.js";
|
|
10
7
|
import "../../chunk-WSQ5QNIY.js";
|
|
11
|
-
import "../../chunk-
|
|
12
|
-
import "../../chunk-
|
|
8
|
+
import "../../chunk-JEDRQAR5.js";
|
|
9
|
+
import "../../chunk-F7ZS27HE.js";
|
|
13
10
|
import "../../chunk-AQBXNPMD.js";
|
|
14
|
-
import "../../chunk-
|
|
11
|
+
import "../../chunk-4PKGVPJA.js";
|
|
15
12
|
|
|
16
13
|
// src/server/worker/index.ts
|
|
17
14
|
import Fastify from "fastify";
|
|
@@ -132,20 +129,16 @@ function assertSafeWorkspaceId(workspaceId) {
|
|
|
132
129
|
}
|
|
133
130
|
return normalized;
|
|
134
131
|
}
|
|
135
|
-
async function createWorkerRuntime(root, workspaceId,
|
|
132
|
+
async function createWorkerRuntime(root, workspaceId, provider) {
|
|
136
133
|
const safeId = assertSafeWorkspaceId(workspaceId);
|
|
137
134
|
const hostRoot = join(root, safeId);
|
|
138
135
|
await mkdir(hostRoot, { recursive: true });
|
|
139
|
-
const
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
network: options.bwrapNetwork,
|
|
144
|
-
dropAllCapabilities: true,
|
|
145
|
-
resourceLimits: options.resourceLimits
|
|
136
|
+
const pair = await provider.create({
|
|
137
|
+
workspaceRoot: hostRoot,
|
|
138
|
+
workspaceId: safeId,
|
|
139
|
+
sessionId: safeId
|
|
146
140
|
});
|
|
147
|
-
|
|
148
|
-
return { workspace, sandbox };
|
|
141
|
+
return { workspace: pair.workspace, sandbox: pair.sandbox, dispose: () => pair.dispose() };
|
|
149
142
|
}
|
|
150
143
|
async function runWorkspaceOp(workspace, op) {
|
|
151
144
|
switch (op.op) {
|
|
@@ -231,17 +224,15 @@ function resultToResponse(result) {
|
|
|
231
224
|
stderrEncoding: result.stderrEncoding
|
|
232
225
|
};
|
|
233
226
|
}
|
|
234
|
-
async function registerWorkerRoutes(app, config) {
|
|
227
|
+
async function registerWorkerRoutes(app, config, runtimeProvider) {
|
|
235
228
|
const semaphore = new ExecSemaphore(config.execConcurrency);
|
|
236
229
|
const runtimes = /* @__PURE__ */ new Map();
|
|
237
230
|
const getRuntime = (workspaceId) => {
|
|
238
231
|
const safeId = assertSafeWorkspaceId(workspaceId);
|
|
239
232
|
let runtime = runtimes.get(safeId);
|
|
240
233
|
if (!runtime) {
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
resourceLimits: config.resourceLimits
|
|
244
|
-
});
|
|
234
|
+
if (!runtimeProvider) throw new Error("worker runtime provider must be injected by the host");
|
|
235
|
+
runtime = createWorkerRuntime(config.workspaceRoot, safeId, runtimeProvider);
|
|
245
236
|
runtimes.set(safeId, runtime);
|
|
246
237
|
}
|
|
247
238
|
return runtime;
|
|
@@ -250,7 +241,7 @@ async function registerWorkerRoutes(app, config) {
|
|
|
250
241
|
for (const runtimePromise of runtimes.values()) {
|
|
251
242
|
try {
|
|
252
243
|
const runtime = await runtimePromise;
|
|
253
|
-
runtime.
|
|
244
|
+
await runtime.dispose();
|
|
254
245
|
} catch {
|
|
255
246
|
}
|
|
256
247
|
}
|
|
@@ -350,7 +341,7 @@ var DEFAULT_BODY_LIMIT = 20 * 1024 * 1024;
|
|
|
350
341
|
async function createWorkerServer(options = {}) {
|
|
351
342
|
const config = options.config ?? loadWorkerConfig();
|
|
352
343
|
const app = Fastify({ logger: true, bodyLimit: DEFAULT_BODY_LIMIT, ...options.fastify });
|
|
353
|
-
await registerWorkerRoutes(app, config);
|
|
344
|
+
await registerWorkerRoutes(app, config, options.runtimeProvider);
|
|
354
345
|
return { app, config };
|
|
355
346
|
}
|
|
356
347
|
export {
|