openmausbot 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/assets/{abnfDiagram-O67JEVCF-BwaMaZEm.js → abnfDiagram-O67JEVCF-DUyXd0kL.js} +1 -1
- package/dist/assets/{arc-Be-8GKxd.js → arc-q73qM-At.js} +1 -1
- package/dist/assets/{architectureDiagram-NJMV4G6O-Dp_U2Kv1.js → architectureDiagram-NJMV4G6O-D33O3Wur.js} +1 -1
- package/dist/assets/{blockDiagram-BEXU5L5S-DQjUjYUk.js → blockDiagram-BEXU5L5S-DLsJeoXC.js} +1 -1
- package/dist/assets/{c4Diagram-YGBWAQC7-Bd3aE4Kc.js → c4Diagram-YGBWAQC7-DnaljZnu.js} +1 -1
- package/dist/assets/channel-BCuyHjFV.js +1 -0
- package/dist/assets/{chunk-2Q5K7J3B-BijjTBeJ.js → chunk-2Q5K7J3B-Da0h2i79.js} +1 -1
- package/dist/assets/{chunk-3FUC2YCW-CMGdwvzW.js → chunk-3FUC2YCW-CfzHi54f.js} +2 -2
- package/dist/assets/{chunk-5VM5RSS4-0G09BfsZ.js → chunk-5VM5RSS4-LjE4d9Jf.js} +1 -1
- package/dist/assets/{chunk-GTNCS2PH-FOp3vSHe.js → chunk-GTNCS2PH-DY-UGmvc.js} +1 -1
- package/dist/assets/{chunk-GWA4HPMP-Dv-20VIn.js → chunk-GWA4HPMP-BqeGhyhP.js} +1 -1
- package/dist/assets/{chunk-JWPE2WC7-CRgrdFcz.js → chunk-JWPE2WC7-BYa9EBAg.js} +1 -1
- package/dist/assets/{chunk-NETBCI7D-3hP4f7QB.js → chunk-NETBCI7D-vTrDtWyb.js} +1 -1
- package/dist/assets/{chunk-WEXAMYUT-CG98IjlG.js → chunk-WEXAMYUT-ic5tXadM.js} +1 -1
- package/dist/assets/{chunk-XXDRQBXY-BrSTC9xG.js → chunk-XXDRQBXY-DvRCY-c6.js} +1 -1
- package/dist/assets/{classDiagram-v2-NBCMYWYE-rpQQQDFX.js → classDiagram-v2-NBCMYWYE-DVbmgz_L.js} +1 -1
- package/dist/assets/{cose-bilkent-JH36ORCC-G6RSafHA.js → cose-bilkent-JH36ORCC-vdUs2n57.js} +1 -1
- package/dist/assets/{cynefin-OW5HDTMX-CXjv-IM2.js → cynefin-OW5HDTMX-BvLGlV3U.js} +1 -1
- package/dist/assets/{cynefinDiagram-VND7K2PF-Dw07MR9f.js → cynefinDiagram-VND7K2PF-C4GcJQDt.js} +1 -1
- package/dist/assets/{dagre-6A5THRUB-BwPnlTg2.js → dagre-6A5THRUB-BMSaHpt_.js} +1 -1
- package/dist/assets/{diagram-22UHCM2B-Cm6xcMiz.js → diagram-22UHCM2B-D5b9UBhC.js} +1 -1
- package/dist/assets/{diagram-3UASUU5V-CDpogPbE.js → diagram-3UASUU5V-CIKLlB7Y.js} +1 -1
- package/dist/assets/{diagram-ATOU4E4O-BV8z3Pnc.js → diagram-ATOU4E4O-BzXb-7k7.js} +1 -1
- package/dist/assets/{diagram-CDSNMT55-CKCQhOOC.js → diagram-CDSNMT55-HsTvJ7uT.js} +1 -1
- package/dist/assets/{diagram-MLGK6HIB-FGvJg69C.js → diagram-MLGK6HIB-Db9ySNbQ.js} +1 -1
- package/dist/assets/{diagram-MPIPVDR6-CwATvgnS.js → diagram-MPIPVDR6-D6BKbpqY.js} +1 -1
- package/dist/assets/{ebnfDiagram-ZINNZB2B-CH_c3SSC.js → ebnfDiagram-ZINNZB2B-Bq067L0t.js} +1 -1
- package/dist/assets/{elk-276RUBZZ-3guZi71R.js → elk-276RUBZZ-DhaD7fNJ.js} +1 -1
- package/dist/assets/{erDiagram-OPXOYQCR-BMHphR2n.js → erDiagram-OPXOYQCR-fwIhfz36.js} +1 -1
- package/dist/assets/{flowDiagram-KWPJA3E3-Vm5DkW5x.js → flowDiagram-KWPJA3E3-DygIyu0V.js} +1 -1
- package/dist/assets/{ganttDiagram-FUAMR5RP-DO-1ct07.js → ganttDiagram-FUAMR5RP-DPYfSO96.js} +1 -1
- package/dist/assets/{gitGraphDiagram-X574FWY7-nxeksEIN.js → gitGraphDiagram-X574FWY7-DhkHeCle.js} +1 -1
- package/dist/assets/index-CRvo-DS2.css +1 -0
- package/dist/assets/index-CWYGlA63.js +588 -0
- package/dist/assets/{index-Oxk9x45i.js → index-G1PHKGyh.js} +1 -1
- package/dist/assets/{infoDiagram-VRGFBTTK-Dkcvr0p7.js → infoDiagram-VRGFBTTK-DstBLxME.js} +1 -1
- package/dist/assets/{ishikawaDiagram-OU5B5YK6-BwVibkoO.js → ishikawaDiagram-OU5B5YK6-CrIsGgch.js} +1 -1
- package/dist/assets/{journeyDiagram-ZHPQQLJL-ByiBZqgG.js → journeyDiagram-ZHPQQLJL-CYypGDbB.js} +1 -1
- package/dist/assets/{kanban-definition-PNTS6WVX-qqjgXBF3.js → kanban-definition-PNTS6WVX-DGjPt8E_.js} +1 -1
- package/dist/assets/{linear-CtJnKe6A.js → linear-Dwc3Hrru.js} +1 -1
- package/dist/assets/{mermaid.core-BEiDklrY.js → mermaid.core-Dc4OePBL.js} +5 -5
- package/dist/assets/{mindmap-definition-NLK3R4M7-DfIYHia9.js → mindmap-definition-NLK3R4M7-DV-vepj-.js} +1 -1
- package/dist/assets/{pegDiagram-GJSIUBJH-CYyRqa1a.js → pegDiagram-GJSIUBJH-lx5Kj-n5.js} +1 -1
- package/dist/assets/{pieDiagram-5QR66LMP-hOToy_zH.js → pieDiagram-5QR66LMP-Bq7Vmm15.js} +1 -1
- package/dist/assets/{quadrantDiagram-O4NWA36T-DKAsNN9I.js → quadrantDiagram-O4NWA36T-DeqeqOBj.js} +1 -1
- package/dist/assets/{railroadDiagram-XR7U4H2S-BSA-d8JU.js → railroadDiagram-XR7U4H2S-CXwRQzSC.js} +1 -1
- package/dist/assets/{requirementDiagram-PLB6GJNP-CSmlvb-p.js → requirementDiagram-PLB6GJNP-8tAeoB88.js} +1 -1
- package/dist/assets/{sankeyDiagram-IPEJSGJF-CD5F6fnG.js → sankeyDiagram-IPEJSGJF-BG5zjGWU.js} +1 -1
- package/dist/assets/{sequenceDiagram-PO4LG4MO-JUq5sx6d.js → sequenceDiagram-PO4LG4MO-DKF3iLcw.js} +1 -1
- package/dist/assets/{sizeCapture-INFHLROL-BjIS-Stk.js → sizeCapture-INFHLROL-B-y1qUgT.js} +1 -1
- package/dist/assets/{stateDiagram-v2-GCMORJYK-DklkUxOg.js → stateDiagram-v2-GCMORJYK-MkzPgxAc.js} +1 -1
- package/dist/assets/{swimlanes-2SLR337P-CsjIU6be.js → swimlanes-2SLR337P-DnbaOEwH.js} +1 -1
- package/dist/assets/swimlanesDiagram-TC7HE7FX-BZQ07DGE.js +8 -0
- package/dist/assets/{timeline-definition-EJHVYXUP-BkFqK7AB.js → timeline-definition-EJHVYXUP-Bb4xG_Bt.js} +1 -1
- package/dist/assets/{usecaseDiagram-POWQR4AR-70gJB1EU.js → usecaseDiagram-POWQR4AR-JgkR9pFf.js} +1 -1
- package/dist/assets/{vennDiagram-UO4OBE2U-83Tm62dN.js → vennDiagram-UO4OBE2U-CIPIrAYe.js} +1 -1
- package/dist/assets/{wardleyDiagram-VNRHLVJA-tTmseoX9.js → wardleyDiagram-VNRHLVJA-BjCLuUvJ.js} +1 -1
- package/dist/assets/{xychartDiagram-PMCCYNJV-R1LBA55a.js → xychartDiagram-PMCCYNJV-DKgiaYxT.js} +1 -1
- package/dist/index.html +2 -2
- package/dist-server/cloud-home-start.js +14795 -0
- package/dist-server/container-mcp.js +52 -4
- package/dist-server/drivers/agents-proxy.js +20 -10
- package/dist-server/index.js +8985 -6461
- package/dist-server/openmausbot.js +327 -145
- package/dist-server/pair-cli.js +327 -145
- package/dist-server/permission-proxy.js +1 -1
- package/dist-server/server/admission.js +46 -0
- package/dist-server/server/{box-create-idempotency.js → boat-create-idempotency.js} +32 -31
- package/dist-server/server/{box-delete-journal.js → boat-delete-journal.js} +26 -25
- package/dist-server/server/{box.js → boat.js} +330 -328
- package/dist-server/server/bot-profile.js +7 -1
- package/dist-server/server/channel-queue.js +58 -18
- package/dist-server/server/checkpoints.js +98 -52
- package/dist-server/server/claim-idle.js +33 -0
- package/dist-server/server/cloud-backend.js +5 -5
- package/dist-server/server/cloud-home-start.js +103 -0
- package/dist-server/server/cloud-home.js +218 -0
- package/dist-server/server/cloud-overflow.js +167 -0
- package/dist-server/server/composio.js +5 -0
- package/dist-server/server/computer-observation.js +2 -2
- package/dist-server/server/config.js +115 -6
- package/dist-server/server/container-computer.js +13 -0
- package/dist-server/server/control-client.js +2 -2
- package/dist-server/server/delegations.js +11 -3
- package/dist-server/server/drivers/acp/core.js +5 -4
- package/dist-server/server/drivers/agents-call.js +5 -1
- package/dist-server/server/drivers/agents-catalog.js +9 -3
- package/dist-server/server/drivers/{boxagent.js → boatagent.js} +13 -12
- package/dist-server/server/drivers/builtIn.js +2 -2
- package/dist-server/server/drivers/{chat-box-tools.js → chat-boat-tools.js} +3 -3
- package/dist-server/server/drivers/chat-mcp-tools.js +2 -2
- package/dist-server/server/drivers/claude.js +177 -13
- package/dist-server/server/drivers/native.js +1 -1
- package/dist-server/server/drivers/openai-chat.js +15 -4
- package/dist-server/server/drivers/pi.js +3 -3
- package/dist-server/server/hosted-models.js +6 -1
- package/dist-server/server/index.js +1029 -479
- package/dist-server/server/local-vm-inventory.js +11 -1
- package/dist-server/server/local-vm-seat-pool.js +141 -0
- package/dist-server/server/managed-policy.js +4 -1
- package/dist-server/server/memory-capture.js +194 -0
- package/dist-server/server/memory-entries.js +76 -0
- package/dist-server/server/memory-organize.js +102 -0
- package/dist-server/server/memory-tidy.js +144 -0
- package/dist-server/server/memory-topics.js +169 -0
- package/dist-server/server/memory-upkeep.js +452 -0
- package/dist-server/server/message-db.js +49 -5
- package/dist-server/server/permission-proxy.js +3 -3
- package/dist-server/server/profile-learned.js +98 -0
- package/dist-server/server/profile-versions.js +45 -11
- package/dist-server/server/recall.js +172 -0
- package/dist-server/server/redact.js +1 -1
- package/dist-server/server/room-cwd.js +1 -1
- package/dist-server/server/room-handoffs.js +61 -6
- package/dist-server/server/routes/bot-memory.js +215 -0
- package/dist-server/server/routine-requests.js +27 -16
- package/dist-server/server/routines.js +10 -6
- package/dist-server/server/steer-queue.js +41 -10
- package/dist-server/server/store.js +25 -1
- package/dist-server/server/surface.js +1 -1
- package/dist-server/server/system-prompt.js +5 -5
- package/dist-server/server/team-computers.js +2 -2
- package/dist-server/server/tightening-requests.js +34 -4
- package/dist-server/server/tool-summary.js +2 -2
- package/dist-server/server/tts/elevenlabs.js +1 -1
- package/dist-server/server/turn-resources.js +87 -11
- package/dist-server/server/vps-computer.js +1 -1
- package/dist-server/server/workspace.js +57 -22
- package/dist-server/shared/ask-question.js +7 -5
- package/dist-server/shared/bot-avatar.js +19 -0
- package/dist-server/shared/credential-request.js +3 -3
- package/dist-server/shared/tool-surface.js +1 -1
- package/dist-server/src/lib/composer-attachments.js +9 -0
- package/dist-server/vps-container-mcp.js +52 -4
- package/dist-server/workspace-backup.worker.js +52 -4
- package/package.json +1 -1
- package/dist/assets/channel-DqY_gMLg.js +0 -1
- package/dist/assets/index-BIMdIbaw.css +0 -1
- package/dist/assets/index-BVPdbq2r.js +0 -583
- package/dist/assets/swimlanesDiagram-TC7HE7FX-Bk14M0_B.js +0 -8
|
@@ -64,7 +64,7 @@ export function createOpenAIChatRuntime(options) {
|
|
|
64
64
|
turnId,
|
|
65
65
|
createdAt: new Date().toISOString(),
|
|
66
66
|
});
|
|
67
|
-
const complete = async (messages, model, stream, signal, onDelta, tools = []) => {
|
|
67
|
+
const complete = async (messages, model, stream, signal, onDelta, tools = [], onUsage) => {
|
|
68
68
|
// Idle timer that is renewed on every received chunk during streaming
|
|
69
69
|
const timeoutController = new AbortController();
|
|
70
70
|
let idleTimer = null;
|
|
@@ -99,6 +99,17 @@ export function createOpenAIChatRuntime(options) {
|
|
|
99
99
|
}
|
|
100
100
|
if (!stream || response.headers.get("content-type")?.includes("application/json")) {
|
|
101
101
|
const json = await response.json();
|
|
102
|
+
if (onUsage) {
|
|
103
|
+
activeSignal.throwIfAborted();
|
|
104
|
+
const count = (value) => typeof value === "number" && Number.isFinite(value) && value >= 0 ? value : undefined;
|
|
105
|
+
onUsage({
|
|
106
|
+
model: typeof json.model === "string" && json.model.trim() ? json.model : model,
|
|
107
|
+
input: count(json.usage?.prompt_tokens),
|
|
108
|
+
output: count(json.usage?.completion_tokens),
|
|
109
|
+
cachedInput: count(json.usage?.prompt_tokens_details?.cached_tokens),
|
|
110
|
+
costUsd: count(json.usage?.cost),
|
|
111
|
+
});
|
|
112
|
+
}
|
|
102
113
|
const bodyError = providerError(json);
|
|
103
114
|
if (bodyError)
|
|
104
115
|
throw new ChatProtocolError(`provider returned a completion error: ${bodyError.slice(0, 200)}`);
|
|
@@ -619,7 +630,7 @@ export function createOpenAIChatRuntime(options) {
|
|
|
619
630
|
provider: options.driverKind,
|
|
620
631
|
capabilities: { ...(options.computerUse ? { computerMcp: options.tools !== false,
|
|
621
632
|
// Same gate as cloudComputerMcp: with tools off the runtime cannot
|
|
622
|
-
// mount the leased
|
|
633
|
+
// mount the leased Boat descriptor either. The fleet invariant test
|
|
623
634
|
// pins usesCloudComputer === (remoteAgent || cloudComputerMcp).
|
|
624
635
|
usesCloudComputer: options.tools !== false, cloudComputerMcp: options.tools !== false, localComputerMcp: options.tools !== false,
|
|
625
636
|
browserMcp: options.tools !== false, nativeImageInput: true, images: true } : {}),
|
|
@@ -661,9 +672,9 @@ export function createOpenAIChatRuntime(options) {
|
|
|
661
672
|
return () => listeners.delete(listener);
|
|
662
673
|
},
|
|
663
674
|
},
|
|
664
|
-
generateText: async (prompt, { signal } = {}) => {
|
|
675
|
+
generateText: async (prompt, { signal, onUsage } = {}) => {
|
|
665
676
|
const model = options.generateModel?.() ?? options.models().default;
|
|
666
|
-
const { text, reasoning, toolCalls } = await complete([{ role: "user", content: prompt }], model, false, signal);
|
|
677
|
+
const { text, reasoning, toolCalls } = await complete([{ role: "user", content: prompt }], model, false, signal, undefined, [], onUsage);
|
|
667
678
|
if (toolCalls.length)
|
|
668
679
|
throw new ChatProtocolError("provider returned tool calls to a text-only helper");
|
|
669
680
|
return text.trim() ? text : reasoning;
|
|
@@ -465,7 +465,7 @@ export const PiDriver = {
|
|
|
465
465
|
ensurePiInjectModel(turn.model, { ...process.env, ...input.environment });
|
|
466
466
|
}
|
|
467
467
|
// integrations → stdio MCP servers for the pi-mcp-extension. The config
|
|
468
|
-
// carries credentials (
|
|
468
|
+
// carries credentials (boat token, composio key, comms token), so it goes
|
|
469
469
|
// into a 0600 temp file removed when the turn settles — never on argv.
|
|
470
470
|
const mcpServers = buildMcpServers(turn);
|
|
471
471
|
let mcpTempDir = null;
|
|
@@ -476,7 +476,7 @@ export const PiDriver = {
|
|
|
476
476
|
}
|
|
477
477
|
catch (err) {
|
|
478
478
|
// A failed write must not leave the temp dir behind — a partial file
|
|
479
|
-
// could still hold the
|
|
479
|
+
// could still hold the boat token / composio key / comms token.
|
|
480
480
|
try {
|
|
481
481
|
rmSync(mcpTempDir, { recursive: true, force: true });
|
|
482
482
|
}
|
|
@@ -488,7 +488,7 @@ export const PiDriver = {
|
|
|
488
488
|
}
|
|
489
489
|
const childArgs = mcpServers ? [...PI_ARGS, "-e", SPAWNED_PROXIES.piMcpExtension] : PI_ARGS;
|
|
490
490
|
// spawnCli can throw synchronously (unresolvable CLI); if it does, the
|
|
491
|
-
// 0600 temp file with the
|
|
491
|
+
// 0600 temp file with the boat token / composio key / comms token must
|
|
492
492
|
// not be left on disk — settle() never runs because no child existed.
|
|
493
493
|
const child = (() => {
|
|
494
494
|
try {
|
|
@@ -2,6 +2,7 @@ import { existsSync, lstatSync, mkdirSync, readFileSync } from "node:fs";
|
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
import { writeFileAtomic } from "./atomic.js";
|
|
5
|
+
import { cloudHomeConfigured } from "./cloud-home.js";
|
|
5
6
|
import { hostedWorkspaceConfiguration } from "./enterprise.js";
|
|
6
7
|
export const HOSTED_MODEL_POLICY_HEADER = "X-Omb-Hosted-Model-Policy";
|
|
7
8
|
export const HOSTED_MODEL_SETUP_ERROR = "No company models are assigned to this workspace. Ask your administrator to enable model access in Admin.";
|
|
@@ -15,10 +16,14 @@ const catalogSchema = z.object({
|
|
|
15
16
|
}).strict();
|
|
16
17
|
const providerFor = { claude: "anthropic", codex: "openai", opencode: "openrouter" };
|
|
17
18
|
/** Operator-only policy. An ordinary desktop has neither input and keeps its
|
|
18
|
-
* personal providers. Partial policy configuration must never enable them.
|
|
19
|
+
* personal providers. Partial policy configuration must never enable them.
|
|
20
|
+
* A Cloud home never routes to a model gateway: it ignores both inputs
|
|
21
|
+
* (cloud-home.ts), and its person signs in with their own engines. */
|
|
19
22
|
export function hostedModelPolicy(dataDirectory, env = process.env) {
|
|
20
23
|
if (env.OMB_HOSTED_MODELS === undefined && env.OMB_HOSTED_MODEL_TOKEN === undefined)
|
|
21
24
|
return null;
|
|
25
|
+
if (cloudHomeConfigured(env))
|
|
26
|
+
return null;
|
|
22
27
|
const hosted = hostedWorkspaceConfiguration(env);
|
|
23
28
|
if (!hosted?.portalMembership || env.OMB_DESKTOP_PARENT === "1" || !/^omb_workspace_[A-Za-z0-9_-]{43}$/.test(env.OMB_HOSTED_MODEL_TOKEN ?? "")) {
|
|
24
29
|
throw new Error("Hosted model access requires complete portal-managed configuration.");
|