openmausbot 0.1.82 → 0.1.83

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 (47) hide show
  1. package/dist/assets/{index-BLLsDK2F.js → index-DSvqfBOf.js} +71 -71
  2. package/dist/assets/{index-5HVwp5m2.js → index-nqTFZTxg.js} +1 -1
  3. package/dist/index.html +1 -1
  4. package/dist-server/container-mcp.js +20 -4
  5. package/dist-server/drivers/agents-proxy.js +4 -4
  6. package/dist-server/index.js +1063 -493
  7. package/dist-server/mcp-gate.js +2 -1
  8. package/dist-server/openmausbot.js +187 -55
  9. package/dist-server/pair-cli.js +187 -55
  10. package/dist-server/server/auto-approve.js +15 -1
  11. package/dist-server/server/auto-vm-claims.js +22 -0
  12. package/dist-server/server/browser-bundle-release.js +8 -7
  13. package/dist-server/server/browser-engine.js +1 -1
  14. package/dist-server/server/channel-queue.js +58 -0
  15. package/dist-server/server/chief-of-staff.js +2 -2
  16. package/dist-server/server/config.js +33 -2
  17. package/dist-server/server/contracts.js +0 -7
  18. package/dist-server/server/drivers/acp/gemini.js +11 -1
  19. package/dist-server/server/drivers/acp/qwen.js +16 -1
  20. package/dist-server/server/drivers/agents-proxy.js +4 -4
  21. package/dist-server/server/drivers/claude.js +4 -3
  22. package/dist-server/server/drivers/codex.js +66 -1
  23. package/dist-server/server/drivers/pi.js +2 -1
  24. package/dist-server/server/env-path.js +6 -1
  25. package/dist-server/server/index.js +534 -84
  26. package/dist-server/server/local-routing.js +10 -4
  27. package/dist-server/server/peer-roster.js +37 -1
  28. package/dist-server/server/recent-work.js +4 -1
  29. package/dist-server/server/redact.js +5 -48
  30. package/dist-server/server/room-handoffs.js +79 -16
  31. package/dist-server/server/skill-fetch.js +1 -1
  32. package/dist-server/server/steer-queue.js +29 -0
  33. package/dist-server/server/store.js +26 -3
  34. package/dist-server/server/thread-retention.js +50 -0
  35. package/dist-server/server/turn-context.js +7 -0
  36. package/dist-server/server/turn-resources.js +6 -0
  37. package/dist-server/shared/approval-mode.js +8 -5
  38. package/dist-server/shared/inspector.js +1 -0
  39. package/dist-server/shared/json.js +1 -0
  40. package/dist-server/shared/notification.js +1 -0
  41. package/dist-server/shared/redact.js +61 -0
  42. package/dist-server/shared/routines.js +1 -0
  43. package/dist-server/shared/runtime-events.js +1 -0
  44. package/dist-server/shared/webhooks.js +1 -0
  45. package/dist-server/shared/wire.js +8 -0
  46. package/dist-server/vps-container-mcp.js +20 -4
  47. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,8 @@
1
+ /** Reasoning-effort levels, ascending. A union of everything any engine
2
+ * accepts; each driver declares the subset its CLI will take. Lives here
3
+ * because it is part of ModelSelection, which rides the wire. */
4
+ export const EFFORT_LEVELS = ["none", "low", "medium", "high", "xhigh", "max"];
5
+ /** Narrow untrusted API/config input before it becomes a model selection. */
6
+ export function isEffortLevel(value) {
7
+ return typeof value === "string" && EFFORT_LEVELS.includes(value);
8
+ }
@@ -14954,8 +14954,10 @@ function normalizeImageGenerationUrl(value) {
14954
14954
  return url2.toString().replace(/\/+$/, "");
14955
14955
  }
14956
14956
 
14957
- // server/contracts.ts
14957
+ // shared/wire.ts
14958
14958
  var EFFORT_LEVELS = ["none", "low", "medium", "high", "xhigh", "max"];
14959
+
14960
+ // server/contracts.ts
14959
14961
  function isModelVariant(value) {
14960
14962
  return typeof value === "string" && value.length > 0 && value.length <= 256 && value.trim() === value && !new RegExp("\\p{Cc}", "u").test(value);
14961
14963
  }
@@ -14989,6 +14991,9 @@ var LEGACY_BROWSER_PROFILE_ID = /^[A-Za-z0-9_-]{1,40}$/;
14989
14991
  var BROWSER_PROFILE_ID = /^[a-z0-9_-]{1,40}$/;
14990
14992
  var MIN_ROOM_TURN_TIMEOUT_MINUTES = 1;
14991
14993
  var MAX_ROOM_TURN_TIMEOUT_MINUTES = 1440;
14994
+ var DEFAULT_ROOM_HANDOFF_LIFETIME_MINUTES = 30;
14995
+ var DEFAULT_ROOM_HANDOFF_MIN_RUNWAY_MINUTES = 10;
14996
+ var DEFAULT_ROOM_HANDOFF_HARD_CAP_MINUTES = 240;
14992
14997
  var MAX_CONCURRENT_BOT_THREADS = 10;
14993
14998
  var MIN_THREAD_EVENT_LOG_BYTES = 256 * 1024;
14994
14999
  var MAX_THREAD_EVENT_LOG_BYTES = 4 * 1024 * 1024 * 1024;
@@ -15003,8 +15008,16 @@ var vpsConfigSchema = external_exports.object({
15003
15008
  }).optional()
15004
15009
  });
15005
15010
  var roomConfigSchema = external_exports.object({
15006
- turnTimeoutMinutes: external_exports.number().int().min(MIN_ROOM_TURN_TIMEOUT_MINUTES).max(MAX_ROOM_TURN_TIMEOUT_MINUTES)
15007
- });
15011
+ turnTimeoutMinutes: external_exports.number().int().min(MIN_ROOM_TURN_TIMEOUT_MINUTES).max(MAX_ROOM_TURN_TIMEOUT_MINUTES),
15012
+ /** Room handoff tree lifetime. Active execution pauses this clock; the
15013
+ * hard cap is wall-clock and bounds trees that never stop executing. */
15014
+ handoffLifetimeMinutes: external_exports.number().int().min(1).max(MAX_ROOM_TURN_TIMEOUT_MINUTES).optional(),
15015
+ handoffMinRunwayMinutes: external_exports.number().int().min(1).max(MAX_ROOM_TURN_TIMEOUT_MINUTES).optional(),
15016
+ handoffHardCapMinutes: external_exports.number().int().min(1).max(7 * MAX_ROOM_TURN_TIMEOUT_MINUTES).optional()
15017
+ }).refine(
15018
+ (rooms) => (rooms.handoffMinRunwayMinutes ?? DEFAULT_ROOM_HANDOFF_MIN_RUNWAY_MINUTES) <= (rooms.handoffLifetimeMinutes ?? DEFAULT_ROOM_HANDOFF_LIFETIME_MINUTES) && (rooms.handoffLifetimeMinutes ?? DEFAULT_ROOM_HANDOFF_LIFETIME_MINUTES) <= (rooms.handoffHardCapMinutes ?? DEFAULT_ROOM_HANDOFF_HARD_CAP_MINUTES),
15019
+ { message: "rooms handoff bounds must satisfy handoffMinRunwayMinutes <= handoffLifetimeMinutes <= handoffHardCapMinutes" }
15020
+ );
15008
15021
  var localVmConfigSchema = external_exports.object({
15009
15022
  mode: external_exports.enum(["shared", "per-bot"]).optional(),
15010
15023
  maxInstances: external_exports.number().int().min(MIN_LOCAL_VM_MAX_INSTANCES).max(MAX_LOCAL_VM_MAX_INSTANCES).optional()
@@ -15253,7 +15266,10 @@ var appConfigSchema = external_exports.object({
15253
15266
  maxConcurrentPerBot: external_exports.number().int().min(1).max(MAX_CONCURRENT_BOT_THREADS),
15254
15267
  /** Cap each per-thread events/ and native/ NDJSON log at this many
15255
15268
  * bytes; absent (the default) keeps today's unbounded growth (#1280). */
15256
- eventLogMaxBytes: external_exports.number().int().min(MIN_THREAD_EVENT_LOG_BYTES).max(MAX_THREAD_EVENT_LOG_BYTES).optional()
15269
+ eventLogMaxBytes: external_exports.number().int().min(MIN_THREAD_EVENT_LOG_BYTES).max(MAX_THREAD_EVENT_LOG_BYTES).optional(),
15270
+ /** Days a closed or archived thread's event logs survive (#1280).
15271
+ * Absent keeps them forever. */
15272
+ eventLogRetentionDays: external_exports.number().int().min(1).max(3650).optional()
15257
15273
  }).strict().optional(),
15258
15274
  localVm: localVmConfigSchema.optional(),
15259
15275
  features: featureConfigSchema.optional(),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openmausbot",
3
- "version": "0.1.82",
3
+ "version": "0.1.83",
4
4
  "description": "Run the OpenMausBot server anywhere and pair your devices to it",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",