openmausbot 0.1.88 → 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.
Files changed (147) hide show
  1. package/README.md +1 -1
  2. package/dist/assets/{abnfDiagram-O67JEVCF-qd9VD3GV.js → abnfDiagram-O67JEVCF-DUyXd0kL.js} +1 -1
  3. package/dist/assets/{arc-3RwkUjRe.js → arc-q73qM-At.js} +1 -1
  4. package/dist/assets/{architectureDiagram-NJMV4G6O-CFKSJS7a.js → architectureDiagram-NJMV4G6O-D33O3Wur.js} +1 -1
  5. package/dist/assets/{blockDiagram-BEXU5L5S-CG1rEfWD.js → blockDiagram-BEXU5L5S-DLsJeoXC.js} +1 -1
  6. package/dist/assets/{c4Diagram-YGBWAQC7-CBW9N664.js → c4Diagram-YGBWAQC7-DnaljZnu.js} +1 -1
  7. package/dist/assets/channel-BCuyHjFV.js +1 -0
  8. package/dist/assets/{chunk-2Q5K7J3B-2mRfTksB.js → chunk-2Q5K7J3B-Da0h2i79.js} +1 -1
  9. package/dist/assets/{chunk-3FUC2YCW-Cv1dpErj.js → chunk-3FUC2YCW-CfzHi54f.js} +2 -2
  10. package/dist/assets/{chunk-5VM5RSS4-B7IACJp-.js → chunk-5VM5RSS4-LjE4d9Jf.js} +1 -1
  11. package/dist/assets/{chunk-GTNCS2PH-An0hZtYa.js → chunk-GTNCS2PH-DY-UGmvc.js} +1 -1
  12. package/dist/assets/{chunk-GWA4HPMP-BcJB2nEm.js → chunk-GWA4HPMP-BqeGhyhP.js} +1 -1
  13. package/dist/assets/{chunk-JWPE2WC7-CV_W7TN7.js → chunk-JWPE2WC7-BYa9EBAg.js} +1 -1
  14. package/dist/assets/{chunk-NETBCI7D-Bcs_kwnA.js → chunk-NETBCI7D-vTrDtWyb.js} +1 -1
  15. package/dist/assets/{chunk-WEXAMYUT-lrx_DxFP.js → chunk-WEXAMYUT-ic5tXadM.js} +1 -1
  16. package/dist/assets/{chunk-XXDRQBXY-DabHlLGM.js → chunk-XXDRQBXY-DvRCY-c6.js} +1 -1
  17. package/dist/assets/{classDiagram-v2-NBCMYWYE-BnHj6P7d.js → classDiagram-v2-NBCMYWYE-DVbmgz_L.js} +1 -1
  18. package/dist/assets/{cose-bilkent-JH36ORCC-CfLp6UDi.js → cose-bilkent-JH36ORCC-vdUs2n57.js} +1 -1
  19. package/dist/assets/{cynefin-OW5HDTMX-Dm4dbVA1.js → cynefin-OW5HDTMX-BvLGlV3U.js} +1 -1
  20. package/dist/assets/{cynefinDiagram-VND7K2PF-B9mH-PID.js → cynefinDiagram-VND7K2PF-C4GcJQDt.js} +1 -1
  21. package/dist/assets/{dagre-6A5THRUB-DDc_NVQJ.js → dagre-6A5THRUB-BMSaHpt_.js} +1 -1
  22. package/dist/assets/{diagram-22UHCM2B-lwr8Ip8-.js → diagram-22UHCM2B-D5b9UBhC.js} +1 -1
  23. package/dist/assets/{diagram-3UASUU5V-BLLe6dmI.js → diagram-3UASUU5V-CIKLlB7Y.js} +1 -1
  24. package/dist/assets/{diagram-ATOU4E4O-6eUIq4lz.js → diagram-ATOU4E4O-BzXb-7k7.js} +1 -1
  25. package/dist/assets/{diagram-CDSNMT55-O-pRN7VQ.js → diagram-CDSNMT55-HsTvJ7uT.js} +1 -1
  26. package/dist/assets/{diagram-MLGK6HIB-BietvGAI.js → diagram-MLGK6HIB-Db9ySNbQ.js} +1 -1
  27. package/dist/assets/{diagram-MPIPVDR6-Bd2Cl62X.js → diagram-MPIPVDR6-D6BKbpqY.js} +1 -1
  28. package/dist/assets/{ebnfDiagram-ZINNZB2B-B6iDy69W.js → ebnfDiagram-ZINNZB2B-Bq067L0t.js} +1 -1
  29. package/dist/assets/{elk-276RUBZZ-DQVHfKe0.js → elk-276RUBZZ-DhaD7fNJ.js} +1 -1
  30. package/dist/assets/{erDiagram-OPXOYQCR-BWdVp2tQ.js → erDiagram-OPXOYQCR-fwIhfz36.js} +1 -1
  31. package/dist/assets/{flowDiagram-KWPJA3E3-WLE6rKB4.js → flowDiagram-KWPJA3E3-DygIyu0V.js} +1 -1
  32. package/dist/assets/{ganttDiagram-FUAMR5RP-BbjS-4gn.js → ganttDiagram-FUAMR5RP-DPYfSO96.js} +1 -1
  33. package/dist/assets/{gitGraphDiagram-X574FWY7-Dpy2QSGq.js → gitGraphDiagram-X574FWY7-DhkHeCle.js} +1 -1
  34. package/dist/assets/index-CRvo-DS2.css +1 -0
  35. package/dist/assets/index-CWYGlA63.js +588 -0
  36. package/dist/assets/{index-CIaHn5NS.js → index-G1PHKGyh.js} +1 -1
  37. package/dist/assets/{infoDiagram-VRGFBTTK-D_jKWlKe.js → infoDiagram-VRGFBTTK-DstBLxME.js} +1 -1
  38. package/dist/assets/{ishikawaDiagram-OU5B5YK6-DLJohSuK.js → ishikawaDiagram-OU5B5YK6-CrIsGgch.js} +1 -1
  39. package/dist/assets/{journeyDiagram-ZHPQQLJL-DPOFj0qN.js → journeyDiagram-ZHPQQLJL-CYypGDbB.js} +1 -1
  40. package/dist/assets/{kanban-definition-PNTS6WVX-BI7v-xpK.js → kanban-definition-PNTS6WVX-DGjPt8E_.js} +1 -1
  41. package/dist/assets/{linear-C2pWPSxO.js → linear-Dwc3Hrru.js} +1 -1
  42. package/dist/assets/{mermaid.core-CR-j5WQU.js → mermaid.core-Dc4OePBL.js} +5 -5
  43. package/dist/assets/{mindmap-definition-NLK3R4M7-lz9GvXRh.js → mindmap-definition-NLK3R4M7-DV-vepj-.js} +1 -1
  44. package/dist/assets/{pegDiagram-GJSIUBJH-Dl4_ia61.js → pegDiagram-GJSIUBJH-lx5Kj-n5.js} +1 -1
  45. package/dist/assets/{pieDiagram-5QR66LMP-DWuT3n88.js → pieDiagram-5QR66LMP-Bq7Vmm15.js} +1 -1
  46. package/dist/assets/{quadrantDiagram-O4NWA36T-DXWe9Jx7.js → quadrantDiagram-O4NWA36T-DeqeqOBj.js} +1 -1
  47. package/dist/assets/{railroadDiagram-XR7U4H2S-COY1IBVY.js → railroadDiagram-XR7U4H2S-CXwRQzSC.js} +1 -1
  48. package/dist/assets/{requirementDiagram-PLB6GJNP-DnyVuhsQ.js → requirementDiagram-PLB6GJNP-8tAeoB88.js} +1 -1
  49. package/dist/assets/{sankeyDiagram-IPEJSGJF-BSc4NdGK.js → sankeyDiagram-IPEJSGJF-BG5zjGWU.js} +1 -1
  50. package/dist/assets/{sequenceDiagram-PO4LG4MO-kqEU2EGq.js → sequenceDiagram-PO4LG4MO-DKF3iLcw.js} +1 -1
  51. package/dist/assets/{sizeCapture-INFHLROL-BvB4bkWD.js → sizeCapture-INFHLROL-B-y1qUgT.js} +1 -1
  52. package/dist/assets/{stateDiagram-v2-GCMORJYK-BIrqNv7y.js → stateDiagram-v2-GCMORJYK-MkzPgxAc.js} +1 -1
  53. package/dist/assets/{swimlanes-2SLR337P-CFnalQUE.js → swimlanes-2SLR337P-DnbaOEwH.js} +1 -1
  54. package/dist/assets/swimlanesDiagram-TC7HE7FX-BZQ07DGE.js +8 -0
  55. package/dist/assets/{timeline-definition-EJHVYXUP-CsSWJnSQ.js → timeline-definition-EJHVYXUP-Bb4xG_Bt.js} +1 -1
  56. package/dist/assets/{usecaseDiagram-POWQR4AR-DkAmJ1EE.js → usecaseDiagram-POWQR4AR-JgkR9pFf.js} +1 -1
  57. package/dist/assets/{vennDiagram-UO4OBE2U-C3vd9drL.js → vennDiagram-UO4OBE2U-CIPIrAYe.js} +1 -1
  58. package/dist/assets/{wardleyDiagram-VNRHLVJA-j26CM-pi.js → wardleyDiagram-VNRHLVJA-BjCLuUvJ.js} +1 -1
  59. package/dist/assets/{xychartDiagram-PMCCYNJV-BYu1Q_at.js → xychartDiagram-PMCCYNJV-DKgiaYxT.js} +1 -1
  60. package/dist/index.html +2 -2
  61. package/dist-server/cloud-home-start.js +14795 -0
  62. package/dist-server/container-mcp.js +60 -4
  63. package/dist-server/drivers/agents-proxy.js +20 -10
  64. package/dist-server/index.js +48924 -46153
  65. package/dist-server/openmausbot.js +544 -253
  66. package/dist-server/pair-cli.js +544 -253
  67. package/dist-server/permission-proxy.js +1 -1
  68. package/dist-server/server/admission.js +46 -0
  69. package/dist-server/server/automatic-recovery.js +15 -0
  70. package/dist-server/server/{box-create-idempotency.js → boat-create-idempotency.js} +32 -31
  71. package/dist-server/server/{box-delete-journal.js → boat-delete-journal.js} +26 -25
  72. package/dist-server/server/{box.js → boat.js} +330 -328
  73. package/dist-server/server/bot-profile.js +7 -1
  74. package/dist-server/server/channel-queue.js +58 -18
  75. package/dist-server/server/checkpoints.js +98 -52
  76. package/dist-server/server/claim-idle.js +33 -0
  77. package/dist-server/server/cli-api-setup.js +0 -1
  78. package/dist-server/server/cloud-backend.js +5 -5
  79. package/dist-server/server/cloud-home-start.js +103 -0
  80. package/dist-server/server/cloud-home.js +218 -0
  81. package/dist-server/server/cloud-overflow.js +167 -0
  82. package/dist-server/server/composio.js +5 -0
  83. package/dist-server/server/computer-observation.js +2 -2
  84. package/dist-server/server/config.js +124 -6
  85. package/dist-server/server/container-computer.js +23 -0
  86. package/dist-server/server/contracts.js +10 -0
  87. package/dist-server/server/control-client.js +2 -2
  88. package/dist-server/server/delegations.js +11 -3
  89. package/dist-server/server/drivers/acp/core.js +129 -21
  90. package/dist-server/server/drivers/acp/qwen.js +3 -0
  91. package/dist-server/server/drivers/agents-call.js +5 -1
  92. package/dist-server/server/drivers/agents-catalog.js +9 -3
  93. package/dist-server/server/drivers/{boxagent.js → boatagent.js} +14 -13
  94. package/dist-server/server/drivers/builtIn.js +2 -2
  95. package/dist-server/server/drivers/{chat-box-tools.js → chat-boat-tools.js} +3 -3
  96. package/dist-server/server/drivers/chat-mcp-tools.js +2 -2
  97. package/dist-server/server/drivers/claude.js +177 -13
  98. package/dist-server/server/drivers/native.js +1 -1
  99. package/dist-server/server/drivers/openai-chat.js +19 -4
  100. package/dist-server/server/drivers/pi.js +3 -3
  101. package/dist-server/server/harness-capabilities.js +18 -3
  102. package/dist-server/server/hosted-models.js +6 -1
  103. package/dist-server/server/index.js +1163 -530
  104. package/dist-server/server/local-vm-inventory.js +11 -1
  105. package/dist-server/server/local-vm-seat-pool.js +141 -0
  106. package/dist-server/server/managed-policy.js +4 -1
  107. package/dist-server/server/memory-capture.js +194 -0
  108. package/dist-server/server/memory-entries.js +76 -0
  109. package/dist-server/server/memory-organize.js +102 -0
  110. package/dist-server/server/memory-tidy.js +144 -0
  111. package/dist-server/server/memory-topics.js +169 -0
  112. package/dist-server/server/memory-upkeep.js +452 -0
  113. package/dist-server/server/message-db.js +49 -5
  114. package/dist-server/server/permission-proxy.js +3 -3
  115. package/dist-server/server/profile-learned.js +98 -0
  116. package/dist-server/server/profile-versions.js +45 -11
  117. package/dist-server/server/recall.js +172 -0
  118. package/dist-server/server/redact.js +1 -1
  119. package/dist-server/server/room-cwd.js +1 -1
  120. package/dist-server/server/room-handoffs.js +61 -6
  121. package/dist-server/server/routes/bot-memory.js +215 -0
  122. package/dist-server/server/routine-requests.js +27 -16
  123. package/dist-server/server/routines.js +10 -6
  124. package/dist-server/server/steer-queue.js +41 -10
  125. package/dist-server/server/store.js +25 -1
  126. package/dist-server/server/surface.js +1 -1
  127. package/dist-server/server/system-prompt.js +16 -5
  128. package/dist-server/server/team-computers.js +2 -2
  129. package/dist-server/server/tightening-requests.js +34 -4
  130. package/dist-server/server/tool-summary.js +2 -2
  131. package/dist-server/server/tts/elevenlabs.js +1 -1
  132. package/dist-server/server/turn-resources.js +87 -11
  133. package/dist-server/server/vps-computer.js +1 -1
  134. package/dist-server/server/webhooks.js +21 -3
  135. package/dist-server/server/workspace.js +57 -22
  136. package/dist-server/shared/ask-question.js +7 -5
  137. package/dist-server/shared/bot-avatar.js +19 -0
  138. package/dist-server/shared/credential-request.js +3 -3
  139. package/dist-server/shared/tool-surface.js +1 -1
  140. package/dist-server/src/lib/composer-attachments.js +26 -0
  141. package/dist-server/vps-container-mcp.js +60 -4
  142. package/dist-server/workspace-backup.worker.js +60 -4
  143. package/package.json +1 -1
  144. package/dist/assets/channel-CnRnO3tF.js +0 -1
  145. package/dist/assets/index-BIMdIbaw.css +0 -1
  146. package/dist/assets/index-CHnODCr2.js +0 -583
  147. package/dist/assets/swimlanesDiagram-TC7HE7FX-C4a8qNGj.js +0 -8
@@ -17716,6 +17716,8 @@ function normalizeImageGenerationUrl(value) {
17716
17716
  // shared/bot-avatar.ts
17717
17717
  var BOT_AVATAR_CROPS = ["mascot", "circle", "rounded", "square"];
17718
17718
  var botAvatarCropSchema = external_exports.enum(BOT_AVATAR_CROPS);
17719
+ var AVATAR_ZOOM_MIN = 1;
17720
+ var AVATAR_ZOOM_MAX = 3;
17719
17721
  var botAvatarUrlSchema = external_exports.string().regex(
17720
17722
  /^\/api\/attachments\/[A-Za-z0-9-]+\.(?:png|jpg|gif|webp)$/,
17721
17723
  "must be a stored PNG, JPEG, GIF, or WebP attachment"
@@ -17754,6 +17756,9 @@ var profilePatchSchema = external_exports.object({
17754
17756
  error: "avatarUrl must be a stored PNG, JPEG, GIF, or WebP attachment"
17755
17757
  }).optional(),
17756
17758
  avatarCrop: botAvatarCropSchema.optional(),
17759
+ avatarZoom: external_exports.number({ error: "avatarZoom must be a number from 1 to 3" }).finite().min(AVATAR_ZOOM_MIN).max(AVATAR_ZOOM_MAX).optional(),
17760
+ avatarFocusX: external_exports.number({ error: "avatarFocusX must be a number from 0 to 1" }).finite().min(0).max(1).optional(),
17761
+ avatarFocusY: external_exports.number({ error: "avatarFocusY must be a number from 0 to 1" }).finite().min(0).max(1).optional(),
17757
17762
  mascotBody: mascotBodySchema.optional(),
17758
17763
  voice: external_exports.string({ error: "voice must be a string" }).max(BOT_PROFILE_LIMITS.voice, { error: "voice must be at most 200 characters" }).optional(),
17759
17764
  speakReplies: external_exports.boolean({ error: "speakReplies must be true or false" }).optional()
@@ -18697,6 +18702,10 @@ function schemaIssue(error51, fallback) {
18697
18702
  return path ? `${path} ${issue2.message}` : issue2.message;
18698
18703
  }
18699
18704
 
18705
+ // server/cloud-overflow.ts
18706
+ var CLOUD_SEAT_IDLE_STOP_MS = 5 * 6e4;
18707
+ var CLOUD_SEAT_SLEEP_RETRY_MAX_MS = 10 * 6e4;
18708
+
18700
18709
  // server/config.ts
18701
18710
  var optionalText = external_exports.string().optional();
18702
18711
  var SSH_ALIAS = /^[A-Za-z0-9][A-Za-z0-9_.-]{0,127}$/;
@@ -18738,7 +18747,8 @@ var browserEngineConfigSchema = external_exports.object({
18738
18747
  var roomConfigSchema = external_exports.object({
18739
18748
  turnTimeoutMinutes: external_exports.number().int().min(MIN_ROOM_TURN_TIMEOUT_MINUTES).max(MAX_ROOM_TURN_TIMEOUT_MINUTES),
18740
18749
  /** Room handoff tree lifetime. Active execution pauses this clock; the
18741
- * hard cap is wall-clock and bounds trees that never stop executing. */
18750
+ * hard cap is the maximum stall window, measured wall-clock from the
18751
+ * tree's last durable progress. */
18742
18752
  handoffLifetimeMinutes: external_exports.number().int().min(1).max(MAX_ROOM_TURN_TIMEOUT_MINUTES).optional(),
18743
18753
  handoffMinRunwayMinutes: external_exports.number().int().min(1).max(MAX_ROOM_TURN_TIMEOUT_MINUTES).optional(),
18744
18754
  handoffHardCapMinutes: external_exports.number().int().min(1).max(7 * MAX_ROOM_TURN_TIMEOUT_MINUTES).optional()
@@ -18747,7 +18757,7 @@ var roomConfigSchema = external_exports.object({
18747
18757
  { message: "rooms handoff bounds must satisfy handoffMinRunwayMinutes <= handoffLifetimeMinutes <= handoffHardCapMinutes" }
18748
18758
  );
18749
18759
  var localVmConfigSchema = external_exports.object({
18750
- mode: external_exports.enum(["shared", "per-bot"]).optional(),
18760
+ mode: external_exports.enum(["shared", "per-bot", "pool"]).optional(),
18751
18761
  maxInstances: external_exports.number().int().min(MIN_LOCAL_VM_MAX_INSTANCES).max(MAX_LOCAL_VM_MAX_INSTANCES).optional()
18752
18762
  });
18753
18763
  var browserProfileSchema = external_exports.object({
@@ -18866,6 +18876,10 @@ var featureConfigSchema = external_exports.object({
18866
18876
  skillAuthoring: external_exports.boolean().optional(),
18867
18877
  /** Show each tool run in the transcript. Off unless explicitly enabled. */
18868
18878
  showToolCalls: external_exports.boolean().optional(),
18879
+ /** Run a routine inside the conversation it reports to, instead of a hidden
18880
+ * thread. Off unless explicitly enabled. The run still starts from its own
18881
+ * instructions, but the messages stay in that chat. */
18882
+ routinesInConversation: external_exports.boolean().optional(),
18869
18883
  /** Experimental built-in browser. Off until explicitly enabled; each bot
18870
18884
  * also has its own switch. */
18871
18885
  browser: external_exports.boolean().optional(),
@@ -18879,8 +18893,23 @@ var featureConfigSchema = external_exports.object({
18879
18893
  claudeUserMcp: external_exports.boolean().optional(),
18880
18894
  /** LLM-generated titles for new bot threads. Off until explicitly
18881
18895
  * enabled; a one-shot that fails or answers junk leaves the first-message
18882
- * snippet in place — see llmThreadTitlesEnabled. */
18883
- llmThreadTitles: external_exports.boolean().optional()
18896
+ * snippet in place — see llmThreadTitlesEnabled. */
18897
+ llmThreadTitles: external_exports.boolean().optional(),
18898
+ /** Before each turn, passages from the bot's own memory files and earlier
18899
+ * conversations that share words with the message ride into the turn.
18900
+ * Read-only; on unless explicitly switched off — see autoRecallEnabled. */
18901
+ autoRecall: external_exports.boolean().optional(),
18902
+ /** Idle release for computer claims (#1653): a desktop seat that stays
18903
+ * screen-quiet for 90 seconds is released to waiting turns while its
18904
+ * holder's turn still lives; the previous holder re-claims directly
18905
+ * for 10 minutes and yields to an occupied seat. Off until baked; see
18906
+ * computerClaimIdleReleaseEnabled for how to enable it by hand. */
18907
+ computerClaimIdleRelease: external_exports.boolean().optional(),
18908
+ /** Consented cloud overflow for local computer waits (#1655): a wait
18909
+ * may offer a per-second-billed cloud seat, but only through an explicit
18910
+ * consent card or a configured allowlist — never a silent Auto default.
18911
+ * Off until baked; see cloudOverflowEnabled for how to enable it by hand. */
18912
+ cloudOverflow: external_exports.boolean().optional()
18884
18913
  });
18885
18914
  var onboardingConfigSchema = external_exports.object({
18886
18915
  /** ISO timestamp of finishing (or skipping to the end of) the welcome flow. */
@@ -18912,6 +18941,13 @@ var defaultModelSelectionSchema = external_exports.object({
18912
18941
  (selection) => selection.variant === void 0 || selection.effort === void 0,
18913
18942
  "choose either a model variant or an effort level"
18914
18943
  );
18944
+ var automaticRecoverySchema = external_exports.object({
18945
+ enabled: external_exports.boolean(),
18946
+ backup: defaultModelSelectionSchema.optional()
18947
+ }).strict().refine(
18948
+ (recovery) => !recovery.enabled || recovery.backup !== void 0,
18949
+ { message: "Choose a backup model before enabling automatic recovery", path: ["backup"] }
18950
+ );
18915
18951
  var threadsConfigSchema = external_exports.object({
18916
18952
  maxConcurrentPerBot: external_exports.number().int().min(1).max(MAX_CONCURRENT_BOT_THREADS),
18917
18953
  /** Cap each per-thread events/ and native/ NDJSON log at this many
@@ -18940,6 +18976,7 @@ var appConfigSchema = external_exports.object({
18940
18976
  * addresses or `@domain` entries; admins get every scope, members chat only. */
18941
18977
  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(),
18942
18978
  defaultModelSelection: defaultModelSelectionSchema.optional(),
18979
+ automaticRecovery: automaticRecoverySchema.optional(),
18943
18980
  newBotDefaults: newBotDefaultsSchema.optional(),
18944
18981
  newBots: newBotsConfigSchema.optional(),
18945
18982
  /** CLI-only launch preferences. Never enable remote access implicitly. */
@@ -18979,6 +19016,8 @@ var appConfigSchema = external_exports.object({
18979
19016
  /** Project key used for Sessions, catalog and agent tools. userId/sessionId
18980
19017
  * are non-secret local identifiers used to reuse one Composio Session. */
18981
19018
  composio: external_exports.object({ apiKey: optionalText, userId: optionalText, sessionId: optionalText }).optional(),
19019
+ /** Historical config section name "box" (the persisted config.json key); the
19020
+ * provider is Boat now and the key is kept for compatibility. */
18982
19021
  box: external_exports.object({ token: optionalText }).optional(),
18983
19022
  vps: vpsConfigSchema.optional(),
18984
19023
  /** Optional OpenCode key; persisted write-only and passed only to its child. */
@@ -19028,10 +19067,26 @@ var appConfigSchema = external_exports.object({
19028
19067
  compactAt: external_exports.number().positive().max(1e7).optional(),
19029
19068
  autoCompact: external_exports.boolean().optional()
19030
19069
  }).optional(),
19070
+ /** Memory upkeep timing, for bots with Memory upkeep switched on. */
19071
+ memory: external_exports.object({
19072
+ /** Quiet time after a turn before its facts are captured (ms). */
19073
+ captureQuietMs: external_exports.number().int().min(1e3).max(24 * 60 * 6e4).optional(),
19074
+ /** Local hour (0-23) after which the nightly tidy-up runs. */
19075
+ tidyHour: external_exports.number().int().min(0).max(23).optional()
19076
+ }).strict().optional(),
19031
19077
  threads: threadsConfigSchema.optional(),
19032
19078
  /** The authorization decision log (server/decision-log.ts): days of month
19033
19079
  * files kept, at least; OMB_DECISION_RETENTION_DAYS wins when set. */
19034
19080
  decisions: external_exports.object({ retentionDays: external_exports.number().int().min(1).max(3650).optional() }).strict().optional(),
19081
+ /** #1655 cloud-overflow settings. perSecondCostUsd is the operator's own
19082
+ * verified rate: with no price configured the feature stays inert rather
19083
+ * than show an invented one. allowlistedThreads carries standing consent
19084
+ * for exact thread ids. */
19085
+ cloudOverflow: external_exports.object({
19086
+ perSecondCostUsd: external_exports.number().positive().max(10).optional(),
19087
+ idleStopMs: external_exports.number().int().positive().max(24 * 60 * 6e4).optional(),
19088
+ allowlistedThreads: external_exports.array(external_exports.string().min(1)).max(1e3).optional()
19089
+ }).strict().optional(),
19035
19090
  localVm: localVmConfigSchema.optional(),
19036
19091
  features: featureConfigSchema.optional(),
19037
19092
  onboarding: onboardingConfigSchema.optional(),
@@ -19055,6 +19110,7 @@ function parseStoredConfig(value) {
19055
19110
  if (!parsed.success) throw new Error(schemaIssue(parsed.error, "Invalid stored configuration"));
19056
19111
  return parsed.data;
19057
19112
  }
19113
+ var DEFAULT_CAPTURE_QUIET_MS = 2 * 6e4;
19058
19114
  var DATA_DIR = process.env.OMB_DATA_DIR ?? join(homedir(), ".openmausbot");
19059
19115
  var LEGACY_DATA_DIR = join(homedir(), ".opengrokbot");
19060
19116
  var EVENTS_DIR = join(DATA_DIR, "events");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openmausbot",
3
- "version": "0.1.88",
3
+ "version": "0.1.90",
4
4
  "description": "Run the OpenMausBot server anywhere and pair your devices to it",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -1 +0,0 @@
1
- import{U as a,C as n}from"./mermaid.core-CR-j5WQU.js";const t=(r,o)=>a.lang.round(n.parse(r)[o]);export{t as c};