openmausbot 0.1.72 → 0.1.74

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.
Files changed (36) hide show
  1. package/dist/assets/index-BRLHsQ5g.js +298 -0
  2. package/dist/assets/index-ByLQ7a3F.css +1 -0
  3. package/dist/assets/{index-Bpai86ua.js → index-CwoQdM0z.js} +1 -1
  4. package/dist/index.html +2 -2
  5. package/dist-server/container-mcp.js +9 -0
  6. package/dist-server/drivers/agents-proxy.js +2 -2
  7. package/dist-server/index.js +721 -484
  8. package/dist-server/mcp-gate.js +58 -16
  9. package/dist-server/openmausbot.js +236 -80
  10. package/dist-server/pair-cli.js +236 -80
  11. package/dist-server/server/auto-approve.js +30 -206
  12. package/dist-server/server/channel-queue.js +20 -2
  13. package/dist-server/server/config.js +36 -1
  14. package/dist-server/server/drivers/acp/core.js +56 -3
  15. package/dist-server/server/drivers/acp/grok.js +3 -1
  16. package/dist-server/server/drivers/agents-proxy.js +2 -2
  17. package/dist-server/server/drivers/antigravity-acp.js +5 -4
  18. package/dist-server/server/drivers/antigravity.js +9 -4
  19. package/dist-server/server/drivers/claude.js +54 -11
  20. package/dist-server/server/drivers/codex.js +86 -27
  21. package/dist-server/server/engine-install.js +9 -5
  22. package/dist-server/server/index.js +210 -231
  23. package/dist-server/server/message-db.js +70 -3
  24. package/dist-server/server/procs.js +82 -23
  25. package/dist-server/server/routines.js +67 -8
  26. package/dist-server/server/steer-queue.js +27 -7
  27. package/dist-server/server/team-manifest.js +1 -1
  28. package/dist-server/server/vps-computer.js +81 -12
  29. package/dist-server/server/webhooks.js +4 -1
  30. package/dist-server/server/workspace-backup.js +24 -9
  31. package/dist-server/shared/approval-mode.js +11 -10
  32. package/dist-server/vps-container-mcp.js +9 -0
  33. package/package.json +1 -1
  34. package/dist/assets/index-BFPYw6P-.js +0 -296
  35. package/dist/assets/index-D1odUdTi.css +0 -1
  36. package/dist-server/server/auto-review.js +0 -79
@@ -346,9 +346,62 @@ import {
346
346
  spawn,
347
347
  execFile as execFile2
348
348
  } from "node:child_process";
349
+ var cliGroups = /* @__PURE__ */ new WeakSet();
350
+ var stopping = /* @__PURE__ */ new WeakMap();
349
351
  function killCliTree(child2, timeoutMs = 5e3) {
352
+ const existing = stopping.get(child2);
353
+ if (existing) return existing;
350
354
  const pid = child2.pid;
351
- if (!pid || child2.exitCode !== null || child2.signalCode !== null) return Promise.resolve(true);
355
+ if (!pid) return Promise.resolve(true);
356
+ if (!Number.isInteger(pid) || pid <= 1 || pid === process.pid) return Promise.resolve(false);
357
+ const run = stopCliTree(child2, pid, Number.isFinite(timeoutMs) ? Math.max(0, timeoutMs) : 5e3);
358
+ stopping.set(child2, run);
359
+ void run.then((stopped) => {
360
+ if (!stopped) stopping.delete(child2);
361
+ });
362
+ return run;
363
+ }
364
+ async function stopCliTree(child2, pid, timeoutMs) {
365
+ const exited = () => child2.exitCode !== null || child2.signalCode !== null;
366
+ if (process.platform !== "win32") {
367
+ const group = cliGroups.has(child2);
368
+ const settled = () => {
369
+ if (!exited()) return false;
370
+ if (!group) return true;
371
+ try {
372
+ process.kill(-pid, 0);
373
+ return false;
374
+ } catch (error) {
375
+ return error.code === "ESRCH";
376
+ }
377
+ };
378
+ const signal = (value) => {
379
+ try {
380
+ if (group) process.kill(-pid, value);
381
+ else child2.kill(value);
382
+ } catch {
383
+ try {
384
+ child2.kill(value);
385
+ } catch {
386
+ }
387
+ }
388
+ };
389
+ const wait = async (ms) => {
390
+ const deadline = Date.now() + ms;
391
+ while (!settled()) {
392
+ const remaining = deadline - Date.now();
393
+ if (remaining <= 0) return false;
394
+ await new Promise((resolve) => setTimeout(resolve, Math.min(25, remaining)));
395
+ }
396
+ return true;
397
+ };
398
+ if (settled()) return true;
399
+ signal("SIGTERM");
400
+ if (await wait(timeoutMs)) return true;
401
+ signal("SIGKILL");
402
+ return wait(1e3);
403
+ }
404
+ if (exited()) return true;
352
405
  return new Promise((resolve) => {
353
406
  let timer;
354
407
  const done = (stopped) => {
@@ -360,24 +413,13 @@ function killCliTree(child2, timeoutMs = 5e3) {
360
413
  child2.once("close", closed);
361
414
  timer = setTimeout(() => done(false), timeoutMs);
362
415
  timer.unref?.();
363
- if (process.platform === "win32") {
364
- execFile2("taskkill", ["/PID", String(pid), "/T", "/F"], { windowsHide: true }, (err) => {
365
- if (!err) return;
366
- try {
367
- child2.kill();
368
- } catch {
369
- }
370
- });
371
- return;
372
- }
373
- try {
374
- process.kill(-pid, "SIGTERM");
375
- } catch {
416
+ execFile2("taskkill", ["/PID", String(pid), "/T", "/F"], { windowsHide: true }, (err) => {
417
+ if (!err) return;
376
418
  try {
377
- child2.kill("SIGTERM");
419
+ child2.kill();
378
420
  } catch {
379
421
  }
380
- }
422
+ });
381
423
  });
382
424
  }
383
425