openmausbot 0.1.65 → 0.1.67
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/assets/index-A3CBTxwl.css +1 -0
- package/dist/assets/{index-BZeH50da.js → index-BwpNqgCm.js} +1 -1
- package/dist/assets/index-CDuyoVPJ.js +278 -0
- package/dist/index.html +2 -2
- package/dist-server/browser-proxy.js +121 -0
- package/dist-server/computer-proxy.js +14 -3
- package/dist-server/container-mcp.js +43 -19
- package/dist-server/drivers/agents-proxy.js +31 -0
- package/dist-server/index.js +18985 -16059
- package/dist-server/local-computer-proxy.js +433 -0
- package/dist-server/local-computer.js +48 -5
- package/dist-server/mcp-server.js +38 -17
- package/dist-server/openmausbot.js +1666 -775
- package/dist-server/pair-cli.js +1666 -775
- package/dist-server/proxy-paths.js +2 -0
- package/dist-server/server/account-signin.js +103 -0
- package/dist-server/server/attachments.js +125 -13
- package/dist-server/server/browser-engine-release.js +10 -8
- package/dist-server/server/browser-engine.js +226 -26
- package/dist-server/server/browser-live.js +567 -0
- package/dist-server/server/browser-proxy.js +129 -0
- package/dist-server/server/browser-runtime.js +370 -0
- package/dist-server/server/caddy.js +203 -0
- package/dist-server/server/claude-accounts.js +103 -0
- package/dist-server/server/cli.js +163 -22
- package/dist-server/server/computer-proxy.js +11 -2
- package/dist-server/server/config.js +41 -19
- package/dist-server/server/control-client.js +7 -1
- package/dist-server/server/custom-domain.js +14 -0
- package/dist-server/server/drivers/agents-proxy.js +34 -0
- package/dist-server/server/drivers/claude-login-auth.js +334 -0
- package/dist-server/server/drivers/claude.js +85 -19
- package/dist-server/server/environment.js +1 -0
- package/dist-server/server/harness/bus.js +9 -4
- package/dist-server/server/harness/registry.js +15 -1
- package/dist-server/server/index.js +1120 -379
- package/dist-server/server/local-computer-proxy.js +28 -0
- package/dist-server/server/local-computer.js +17 -0
- package/dist-server/server/mcp-bridge.js +27 -11
- package/dist-server/server/peer-approval.js +19 -6
- package/dist-server/server/provider-auth-sessions.js +7 -0
- package/dist-server/server/proxy-paths.js +2 -0
- package/dist-server/server/sessions.js +42 -1
- package/dist-server/server/steer-queue.js +10 -8
- package/dist-server/server/store.js +234 -34
- package/dist-server/server/team-backup.js +1 -0
- package/dist-server/server/tunnel.js +27 -1
- package/dist-server/server/turn-resources.js +50 -0
- package/dist-server/server/workspace.js +53 -3
- package/dist-server/src/lib/composer-attachments.js +3 -3
- package/dist-server/vps-container-mcp.js +43 -19
- package/package.json +1 -1
- package/dist/assets/index-BOrNJcfG.js +0 -273
- package/dist/assets/index-Dwzk199I.css +0 -1
|
@@ -25,7 +25,12 @@ function createControlClient(options) {
|
|
|
25
25
|
const res = await fetchImpl(url2, { headers, signal: AbortSignal.timeout(2e3) });
|
|
26
26
|
if (!res.ok) return UNAVAILABLE;
|
|
27
27
|
const body = await res.json().catch(() => null);
|
|
28
|
-
|
|
28
|
+
if (typeof body?.held !== "boolean" || typeof body?.helpOpen !== "boolean") return UNAVAILABLE;
|
|
29
|
+
return {
|
|
30
|
+
held: body.held,
|
|
31
|
+
helpOpen: body.helpOpen,
|
|
32
|
+
...typeof body.blockedReason === "string" && body.blockedReason.trim() ? { blockedReason: body.blockedReason } : {}
|
|
33
|
+
};
|
|
29
34
|
} catch {
|
|
30
35
|
return UNAVAILABLE;
|
|
31
36
|
}
|
|
@@ -276,7 +281,7 @@ function createGateInterceptor(options) {
|
|
|
276
281
|
options.forward(line);
|
|
277
282
|
return;
|
|
278
283
|
}
|
|
279
|
-
const held = await options.isHeld().catch(() =>
|
|
284
|
+
const held = await options.isHeld().catch(() => true);
|
|
280
285
|
if (!held) {
|
|
281
286
|
options.forward(line);
|
|
282
287
|
return;
|
|
@@ -285,10 +290,11 @@ function createGateInterceptor(options) {
|
|
|
285
290
|
JSON.stringify({
|
|
286
291
|
jsonrpc: "2.0",
|
|
287
292
|
id: frame.id ?? null,
|
|
288
|
-
result: { content: [{ type: "text", text: refusalText }], isError: true }
|
|
293
|
+
result: { content: [{ type: "text", text: options.getRefusalReason?.() ?? refusalText }], isError: true }
|
|
289
294
|
})
|
|
290
295
|
);
|
|
291
296
|
});
|
|
297
|
+
return queue;
|
|
292
298
|
};
|
|
293
299
|
}
|
|
294
300
|
function createMcpBridgeInterceptor(options) {
|
|
@@ -296,8 +302,11 @@ function createMcpBridgeInterceptor(options) {
|
|
|
296
302
|
isHeld: options.gate.isHeld,
|
|
297
303
|
forward: options.forward,
|
|
298
304
|
refuse: options.answer,
|
|
299
|
-
refusalText: options.gate.refusalText
|
|
300
|
-
|
|
305
|
+
refusalText: options.gate.refusalText,
|
|
306
|
+
getRefusalReason: options.gate.getRefusalReason
|
|
307
|
+
}) : (line) => {
|
|
308
|
+
options.forward(line);
|
|
309
|
+
};
|
|
301
310
|
return (line) => {
|
|
302
311
|
let frame = null;
|
|
303
312
|
try {
|
|
@@ -310,37 +319,47 @@ function createMcpBridgeInterceptor(options) {
|
|
|
310
319
|
}
|
|
311
320
|
return;
|
|
312
321
|
}
|
|
313
|
-
afterPing(line);
|
|
322
|
+
return afterPing(line);
|
|
314
323
|
};
|
|
315
324
|
}
|
|
316
325
|
function runMcpBridge(options) {
|
|
317
326
|
const child = spawn(options.command, options.args, {
|
|
318
327
|
shell: false,
|
|
319
|
-
env: { ...process.env, PATH: augmentedPath() },
|
|
328
|
+
env: options.env ?? { ...process.env, PATH: augmentedPath() },
|
|
320
329
|
stdio: ["pipe", "pipe", "pipe"]
|
|
321
330
|
});
|
|
322
331
|
child.stdin.on("error", () => {
|
|
323
332
|
});
|
|
324
333
|
child.stderr.pipe(process.stderr);
|
|
325
334
|
const client = options.gate ? createControlClient({ url: options.gate.url, token: options.gate.token }) : null;
|
|
335
|
+
let refusalReason;
|
|
326
336
|
const answer = (line) => process.stdout.write(line + "\n");
|
|
327
337
|
const forward = (line) => child.stdin.write(line + "\n");
|
|
328
|
-
const
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
338
|
+
const intercept = createMcpBridgeInterceptor({
|
|
339
|
+
answer,
|
|
340
|
+
forward,
|
|
341
|
+
...options.gate ? {
|
|
342
|
+
gate: {
|
|
343
|
+
isHeld: async () => {
|
|
344
|
+
refusalReason = void 0;
|
|
345
|
+
const state = await client.state(true);
|
|
346
|
+
refusalReason = state.blockedReason;
|
|
347
|
+
return state.held;
|
|
348
|
+
},
|
|
349
|
+
getRefusalReason: () => refusalReason
|
|
350
|
+
}
|
|
351
|
+
} : {}
|
|
352
|
+
});
|
|
353
|
+
let pendingInput = Promise.resolve();
|
|
354
|
+
const inbound = createLineSplitter((line) => {
|
|
355
|
+
const completion = intercept(line);
|
|
356
|
+
if (completion) pendingInput = completion;
|
|
357
|
+
});
|
|
339
358
|
const onStdin = (chunk) => inbound.push(chunk);
|
|
340
359
|
process.stdin.on("data", onStdin);
|
|
341
360
|
process.stdin.on("end", () => {
|
|
342
361
|
inbound.flush();
|
|
343
|
-
child.stdin.end();
|
|
362
|
+
void pendingInput.finally(() => child.stdin.end());
|
|
344
363
|
});
|
|
345
364
|
const outbound = createLineSplitter((line) => process.stdout.write(line + "\n"));
|
|
346
365
|
child.stdout.on("data", (chunk) => outbound.push(chunk));
|
|
@@ -15088,6 +15107,9 @@ var defaultModelSelectionSchema = external_exports.object({
|
|
|
15088
15107
|
var appConfigSchema = external_exports.object({
|
|
15089
15108
|
/** Verified by the dedicated domain endpoint, never a generic config patch. */
|
|
15090
15109
|
customDomain: external_exports.string().optional(),
|
|
15110
|
+
/** Who may sign in with an emailed code (server/account-signin.ts):
|
|
15111
|
+
* addresses or `@domain` entries; admins get every scope, members chat only. */
|
|
15112
|
+
signIn: external_exports.object({ admins: external_exports.array(external_exports.string().max(320)).max(500).optional(), members: external_exports.array(external_exports.string().max(320)).max(5e3).optional() }).optional(),
|
|
15091
15113
|
defaultModelSelection: defaultModelSelectionSchema.optional(),
|
|
15092
15114
|
/** CLI-only launch preferences. Never enable remote access implicitly. */
|
|
15093
15115
|
cliStartup: external_exports.object({
|
|
@@ -15148,7 +15170,9 @@ function resolveProxy(relative) {
|
|
|
15148
15170
|
return existsSync2(source) ? source : join3(SERVER_ROOT, `${relative}.js`);
|
|
15149
15171
|
}
|
|
15150
15172
|
var SPAWNED_PROXIES = {
|
|
15173
|
+
browser: resolveProxy("browser-proxy"),
|
|
15151
15174
|
computer: resolveProxy("computer-proxy"),
|
|
15175
|
+
localComputer: resolveProxy("local-computer-proxy"),
|
|
15152
15176
|
permission: resolveProxy("permission-proxy"),
|
|
15153
15177
|
containerMcp: resolveProxy("container-mcp"),
|
|
15154
15178
|
vpsContainerMcp: resolveProxy("vps-container-mcp"),
|