openmausbot 0.1.87 → 0.1.88
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/README.md +2 -1
- package/dist/assets/{abnfDiagram-O67JEVCF-BTiuL79F.js → abnfDiagram-O67JEVCF-qd9VD3GV.js} +1 -1
- package/dist/assets/{arc-C88Blc2v.js → arc-3RwkUjRe.js} +1 -1
- package/dist/assets/{architectureDiagram-NJMV4G6O-BZsJIZrb.js → architectureDiagram-NJMV4G6O-CFKSJS7a.js} +1 -1
- package/dist/assets/{blockDiagram-BEXU5L5S-CVeMe9Ah.js → blockDiagram-BEXU5L5S-CG1rEfWD.js} +1 -1
- package/dist/assets/{c4Diagram-YGBWAQC7-Cedk3Bhx.js → c4Diagram-YGBWAQC7-CBW9N664.js} +1 -1
- package/dist/assets/channel-CnRnO3tF.js +1 -0
- package/dist/assets/{chunk-2Q5K7J3B-D-VRqzTB.js → chunk-2Q5K7J3B-2mRfTksB.js} +1 -1
- package/dist/assets/{chunk-3FUC2YCW-BChov01Y.js → chunk-3FUC2YCW-Cv1dpErj.js} +2 -2
- package/dist/assets/{chunk-5VM5RSS4-C-TfwvHy.js → chunk-5VM5RSS4-B7IACJp-.js} +1 -1
- package/dist/assets/{chunk-GTNCS2PH-Db7CGj5Y.js → chunk-GTNCS2PH-An0hZtYa.js} +1 -1
- package/dist/assets/{chunk-GWA4HPMP-CNvIfqKT.js → chunk-GWA4HPMP-BcJB2nEm.js} +1 -1
- package/dist/assets/{chunk-JWPE2WC7-C_bEp5tq.js → chunk-JWPE2WC7-CV_W7TN7.js} +1 -1
- package/dist/assets/{chunk-NETBCI7D-Coi4BOls.js → chunk-NETBCI7D-Bcs_kwnA.js} +1 -1
- package/dist/assets/{chunk-WEXAMYUT-CzylEuL3.js → chunk-WEXAMYUT-lrx_DxFP.js} +1 -1
- package/dist/assets/{chunk-XXDRQBXY-m7p7ztaD.js → chunk-XXDRQBXY-DabHlLGM.js} +1 -1
- package/dist/assets/{classDiagram-v2-NBCMYWYE-BMy6o9x2.js → classDiagram-v2-NBCMYWYE-BnHj6P7d.js} +1 -1
- package/dist/assets/{cose-bilkent-JH36ORCC-BDQ__0_J.js → cose-bilkent-JH36ORCC-CfLp6UDi.js} +1 -1
- package/dist/assets/{cynefin-OW5HDTMX-Djv4ghUb.js → cynefin-OW5HDTMX-Dm4dbVA1.js} +1 -1
- package/dist/assets/{cynefinDiagram-VND7K2PF-BULrlGYH.js → cynefinDiagram-VND7K2PF-B9mH-PID.js} +1 -1
- package/dist/assets/{dagre-6A5THRUB-D-jrT_hU.js → dagre-6A5THRUB-DDc_NVQJ.js} +1 -1
- package/dist/assets/{diagram-22UHCM2B-p2UhQmfL.js → diagram-22UHCM2B-lwr8Ip8-.js} +1 -1
- package/dist/assets/{diagram-3UASUU5V-DHvGWZ7q.js → diagram-3UASUU5V-BLLe6dmI.js} +1 -1
- package/dist/assets/{diagram-ATOU4E4O-ChhKDot-.js → diagram-ATOU4E4O-6eUIq4lz.js} +1 -1
- package/dist/assets/{diagram-CDSNMT55-B-T7A43R.js → diagram-CDSNMT55-O-pRN7VQ.js} +1 -1
- package/dist/assets/{diagram-MLGK6HIB-CJm8ENNY.js → diagram-MLGK6HIB-BietvGAI.js} +1 -1
- package/dist/assets/{diagram-MPIPVDR6-510tlza8.js → diagram-MPIPVDR6-Bd2Cl62X.js} +1 -1
- package/dist/assets/{ebnfDiagram-ZINNZB2B-PkvRPHel.js → ebnfDiagram-ZINNZB2B-B6iDy69W.js} +1 -1
- package/dist/assets/{elk-276RUBZZ-BVBVPoX3.js → elk-276RUBZZ-DQVHfKe0.js} +1 -1
- package/dist/assets/{erDiagram-OPXOYQCR-BgYMVm7L.js → erDiagram-OPXOYQCR-BWdVp2tQ.js} +1 -1
- package/dist/assets/{flowDiagram-KWPJA3E3-BGqsnc_3.js → flowDiagram-KWPJA3E3-WLE6rKB4.js} +1 -1
- package/dist/assets/{ganttDiagram-FUAMR5RP-D_-UeReH.js → ganttDiagram-FUAMR5RP-BbjS-4gn.js} +1 -1
- package/dist/assets/{gitGraphDiagram-X574FWY7-D0uooONx.js → gitGraphDiagram-X574FWY7-Dpy2QSGq.js} +1 -1
- package/dist/assets/index-BIMdIbaw.css +1 -0
- package/dist/assets/index-CHnODCr2.js +583 -0
- package/dist/assets/{index-zRsJERGJ.js → index-CIaHn5NS.js} +1 -1
- package/dist/assets/{infoDiagram-VRGFBTTK-B9e1z77f.js → infoDiagram-VRGFBTTK-D_jKWlKe.js} +1 -1
- package/dist/assets/{ishikawaDiagram-OU5B5YK6-BB4vNwvD.js → ishikawaDiagram-OU5B5YK6-DLJohSuK.js} +1 -1
- package/dist/assets/{journeyDiagram-ZHPQQLJL-DpkosOTB.js → journeyDiagram-ZHPQQLJL-DPOFj0qN.js} +1 -1
- package/dist/assets/{kanban-definition-PNTS6WVX-DbDP4kUu.js → kanban-definition-PNTS6WVX-BI7v-xpK.js} +1 -1
- package/dist/assets/{linear-DBJGPmjT.js → linear-C2pWPSxO.js} +1 -1
- package/dist/assets/{mermaid.core-DWPRi-ue.js → mermaid.core-CR-j5WQU.js} +5 -5
- package/dist/assets/{mindmap-definition-NLK3R4M7-nszBbJmx.js → mindmap-definition-NLK3R4M7-lz9GvXRh.js} +1 -1
- package/dist/assets/{pegDiagram-GJSIUBJH-CWykJWu_.js → pegDiagram-GJSIUBJH-Dl4_ia61.js} +1 -1
- package/dist/assets/{pieDiagram-5QR66LMP-g3Da-Vnv.js → pieDiagram-5QR66LMP-DWuT3n88.js} +1 -1
- package/dist/assets/{quadrantDiagram-O4NWA36T-Wzrlpzgh.js → quadrantDiagram-O4NWA36T-DXWe9Jx7.js} +1 -1
- package/dist/assets/{railroadDiagram-XR7U4H2S-moHTFMC0.js → railroadDiagram-XR7U4H2S-COY1IBVY.js} +1 -1
- package/dist/assets/{requirementDiagram-PLB6GJNP-CwfXdFH8.js → requirementDiagram-PLB6GJNP-DnyVuhsQ.js} +1 -1
- package/dist/assets/{sankeyDiagram-IPEJSGJF-3ZROYvnq.js → sankeyDiagram-IPEJSGJF-BSc4NdGK.js} +1 -1
- package/dist/assets/{sequenceDiagram-PO4LG4MO-E1TBebP8.js → sequenceDiagram-PO4LG4MO-kqEU2EGq.js} +1 -1
- package/dist/assets/{sizeCapture-INFHLROL-DHKEU5pu.js → sizeCapture-INFHLROL-BvB4bkWD.js} +1 -1
- package/dist/assets/{stateDiagram-v2-GCMORJYK-BguEj09D.js → stateDiagram-v2-GCMORJYK-BIrqNv7y.js} +1 -1
- package/dist/assets/{swimlanes-2SLR337P-C7IDYnhd.js → swimlanes-2SLR337P-CFnalQUE.js} +1 -1
- package/dist/assets/swimlanesDiagram-TC7HE7FX-C4a8qNGj.js +8 -0
- package/dist/assets/{timeline-definition-EJHVYXUP-DCW-F5PW.js → timeline-definition-EJHVYXUP-CsSWJnSQ.js} +1 -1
- package/dist/assets/{usecaseDiagram-POWQR4AR-xBMFtWYV.js → usecaseDiagram-POWQR4AR-DkAmJ1EE.js} +1 -1
- package/dist/assets/{vennDiagram-UO4OBE2U-B5nIkuH8.js → vennDiagram-UO4OBE2U-C3vd9drL.js} +1 -1
- package/dist/assets/{wardleyDiagram-VNRHLVJA-DYFAhdbr.js → wardleyDiagram-VNRHLVJA-j26CM-pi.js} +1 -1
- package/dist/assets/{xychartDiagram-PMCCYNJV-DeXwX6Cz.js → xychartDiagram-PMCCYNJV-BYu1Q_at.js} +1 -1
- package/dist/index.html +2 -2
- package/dist-server/companion/src/routes.js +8 -1
- package/dist-server/connector-proxy.js +105 -1
- package/dist-server/container-mcp.js +3 -1
- package/dist-server/drivers/agents-proxy.js +277 -22
- package/dist-server/index.js +23150 -19947
- package/dist-server/local-computer-proxy.js +2 -0
- package/dist-server/mcp-gate.js +2 -0
- package/dist-server/mcp-server.js +5 -3
- package/dist-server/message-search.worker.js +52 -0
- package/dist-server/openmausbot.js +540 -298
- package/dist-server/pair-cli.js +540 -298
- package/dist-server/server/admission.js +81 -0
- package/dist-server/server/aside-queue.js +294 -0
- package/dist-server/server/attachments.js +43 -1
- package/dist-server/server/bot-attachment.js +107 -0
- package/dist-server/server/bot-overview.js +19 -0
- package/dist-server/server/cli-api-setup.js +1 -0
- package/dist-server/server/composio.js +297 -1
- package/dist-server/server/config.js +25 -3
- package/dist-server/server/connector-advertisement.js +165 -0
- package/dist-server/server/connector-proxy.js +14 -2
- package/dist-server/server/connector-verdict.js +31 -4
- package/dist-server/server/container-computer.js +60 -0
- package/dist-server/server/contracts.js +22 -0
- package/dist-server/server/drivers/acp/core.js +24 -6
- package/dist-server/server/drivers/acp/cursor.js +3 -7
- package/dist-server/server/drivers/acp/droid.js +4 -7
- package/dist-server/server/drivers/acp/gemini.js +4 -4
- package/dist-server/server/drivers/acp/grok.js +4 -9
- package/dist-server/server/drivers/acp/hermes.js +3 -5
- package/dist-server/server/drivers/acp/opencode-go.js +2 -5
- package/dist-server/server/drivers/acp/qwen.js +9 -15
- package/dist-server/server/drivers/agents-call.js +137 -10
- package/dist-server/server/drivers/agents-catalog.js +100 -6
- package/dist-server/server/drivers/boxagent.js +2 -16
- package/dist-server/server/drivers/claude.js +31 -17
- package/dist-server/server/drivers/codex-catalog.js +14 -6
- package/dist-server/server/drivers/codex-identity.js +2 -1
- package/dist-server/server/drivers/codex-release.js +48 -0
- package/dist-server/server/drivers/codex.js +7 -25
- package/dist-server/server/drivers/openai-chat.js +26 -2
- package/dist-server/server/drivers/pi.js +237 -30
- package/dist-server/server/drivers/prompt-split.js +32 -9
- package/dist-server/server/drivers/session-idle.js +29 -0
- package/dist-server/server/env-path.js +15 -0
- package/dist-server/server/guarded-requests.js +2 -2
- package/dist-server/server/harness-capabilities.js +46 -0
- package/dist-server/server/index.js +1037 -209
- package/dist-server/server/message-db.js +22 -42
- package/dist-server/server/message-file.js +9 -1
- package/dist-server/server/message-search-query.js +43 -0
- package/dist-server/server/message-search-worker.js +80 -0
- package/dist-server/server/message-search.worker.js +21 -0
- package/dist-server/server/model-requests.js +248 -0
- package/dist-server/server/options-card.js +21 -0
- package/dist-server/server/org-library.js +15 -1
- package/dist-server/server/peer-delivery.js +60 -0
- package/dist-server/server/peer-roster.js +57 -0
- package/dist-server/server/presets.js +32 -32
- package/dist-server/server/profile-requests.js +66 -39
- package/dist-server/server/profile-revision.js +9 -1
- package/dist-server/server/profile-versions.js +6 -3
- package/dist-server/server/routine-requests.js +29 -7
- package/dist-server/server/skill-fetch.js +72 -14
- package/dist-server/server/skills.js +1 -0
- package/dist-server/server/store.js +32 -2
- package/dist-server/server/system-prompt.js +26 -2
- package/dist-server/server/team-setup-requests.js +124 -23
- package/dist-server/server/thread-events.js +3 -1
- package/dist-server/server/tightening-requests.js +405 -0
- package/dist-server/server/tts/chatterbox.js +27 -5
- package/dist-server/server/usage-ledger.js +7 -1
- package/dist-server/server/workspace-backup.js +40 -3
- package/dist-server/server/workspace-backup.worker.js +10 -0
- package/dist-server/shared/ask-question.js +19 -0
- package/dist-server/shared/credential-request.js +5 -1
- package/dist-server/shared/line-diff.js +23 -0
- package/dist-server/shared/model-request.js +1 -0
- package/dist-server/shared/options-card.js +51 -0
- package/dist-server/shared/profile-request.js +5 -4
- package/dist-server/shared/tightening-request.js +87 -0
- package/dist-server/src/lib/composer-attachments.js +25 -3
- package/dist-server/vps-container-mcp.js +3 -1
- package/dist-server/workspace-backup.worker.js +19474 -0
- package/package.json +1 -1
- package/dist/assets/channel-taCNRlUU.js +0 -1
- package/dist/assets/index-BwdMAQ6p.css +0 -1
- package/dist/assets/index-ByJennr7.js +0 -581
- package/dist/assets/swimlanesDiagram-TC7HE7FX-BpEdoB2e.js +0 -8
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// One session-idle policy for every pooled harness process. The Claude
|
|
2
|
+
// driver and the ACP core grew byte-identical copies of this computation
|
|
3
|
+
// with different env prefixes; the policy lives here so the default, the
|
|
4
|
+
// floor, and the env names cannot drift apart again.
|
|
5
|
+
const DEFAULT_IDLE_MS = 10 * 60_000;
|
|
6
|
+
const MINIMUM_IDLE_MS = 10_000;
|
|
7
|
+
/** setTimeout treats anything above 2^31-1 ms as 1 ms, so a larger delay
|
|
8
|
+
* would close the session immediately instead of much later. */
|
|
9
|
+
const MAX_TIMER_MS = 2_147_483_647;
|
|
10
|
+
function usableMilliseconds(raw) {
|
|
11
|
+
const value = Number(raw);
|
|
12
|
+
return Number.isFinite(value) && value > 0 && value <= MAX_TIMER_MS ? value : null;
|
|
13
|
+
}
|
|
14
|
+
/** The idle policy for one harness. The per-harness names that preceded the
|
|
15
|
+
* unified ones (OMB_CLAUDE_SESSION_IDLE_*, OMB_ACP_SESSION_IDLE_*) win when
|
|
16
|
+
* both are set, so a harness-specific override keeps working alongside a
|
|
17
|
+
* global OMB_SESSION_IDLE_MS / OMB_SESSION_IDLE_MIN_MS; the unified names
|
|
18
|
+
* are the default for harnesses that did not set their own. A delay that is
|
|
19
|
+
* not a positive finite number of at most 2^31-1 ms is validated away before
|
|
20
|
+
* the floor applies — the old arithmetic coerced Infinity and larger values
|
|
21
|
+
* into an immediately-firing 1 ms timer. The floor is the greater of the
|
|
22
|
+
* built-in ten seconds and any configured minimum, so a per-harness minimum
|
|
23
|
+
* can raise the floor but never lower it, and it applies to whatever delay
|
|
24
|
+
* wins. */
|
|
25
|
+
export function sessionIdlePolicy(driverPrefix, env = process.env) {
|
|
26
|
+
const minimumMs = Math.max(MINIMUM_IDLE_MS, usableMilliseconds(env[`OMB_${driverPrefix}_SESSION_IDLE_MIN_MS`] ?? env.OMB_SESSION_IDLE_MIN_MS) ?? 0);
|
|
27
|
+
const configured = usableMilliseconds(env[`OMB_${driverPrefix}_SESSION_IDLE_MS`] ?? env.OMB_SESSION_IDLE_MS) ?? DEFAULT_IDLE_MS;
|
|
28
|
+
return { idleMs: Math.max(minimumMs, configured), minimumMs };
|
|
29
|
+
}
|
|
@@ -41,6 +41,7 @@ function knownDirs() {
|
|
|
41
41
|
join(home, ".volta", "bin"),
|
|
42
42
|
join(home, ".bun", "bin"),
|
|
43
43
|
join(home, ".asdf", "shims"),
|
|
44
|
+
join(home, ".local", "share", "mise", "shims"), // mise installer
|
|
44
45
|
join(home, ".deno", "bin"),
|
|
45
46
|
join(home, "bin"),
|
|
46
47
|
...nvmBinDirs(),
|
|
@@ -144,6 +145,20 @@ export function resetPathCacheForTests() {
|
|
|
144
145
|
loginShellPath = null;
|
|
145
146
|
registeredDirs.length = 0;
|
|
146
147
|
}
|
|
148
|
+
/** The user's home directory as this platform defines it. Windows keeps the
|
|
149
|
+
* real profile in USERPROFILE; a HOME that leaks in from a POSIX-flavored
|
|
150
|
+
* shell is not where Windows CLIs keep their state, so USERPROFILE wins there
|
|
151
|
+
* and HOME wins everywhere else. */
|
|
152
|
+
export function userHome(env = process.env) {
|
|
153
|
+
return process.platform === "win32"
|
|
154
|
+
? env.USERPROFILE || env.HOME || homedir()
|
|
155
|
+
: env.HOME || env.USERPROFILE || homedir();
|
|
156
|
+
}
|
|
157
|
+
/** `<user home>/.<name>` — the per-harness state directory every CLI keeps
|
|
158
|
+
* (`.qwen`, `.grok`, `.codex`…), Windows-correct everywhere. */
|
|
159
|
+
export function harnessHome(name, env = process.env) {
|
|
160
|
+
return join(userHome(env), `.${name}`);
|
|
161
|
+
}
|
|
147
162
|
/** Every `name` binary on the augmented PATH as absolute paths, in PATH
|
|
148
163
|
* order (first = what a bare name would run). Used by the Engines panel's
|
|
149
164
|
* "detected" dropdown and the /api/cli-candidates endpoint. A path-ish
|
|
@@ -54,7 +54,7 @@ export function requestSourceForCard(messages, messageId) {
|
|
|
54
54
|
return undefined;
|
|
55
55
|
}
|
|
56
56
|
export function requestNeedsInput(message) {
|
|
57
|
-
return Boolean((message.card?.requestId && !message.card.answered && !message.card.dismissed) ||
|
|
57
|
+
return Boolean((message.card?.requestId && !message.card.answered && !message.card.dismissed && !message.card.expired) ||
|
|
58
58
|
(message.connector && !message.connector.dismissed && !message.connector.resumed && message.connector.status !== "connected") ||
|
|
59
|
-
(message.secret && !message.secret.provided && !message.secret.dismissed));
|
|
59
|
+
(message.secret && !message.secret.provided && !message.secret.dismissed && !message.secret.superseded));
|
|
60
60
|
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// What a bot gains or loses when its default engine (instanceId, hence
|
|
2
|
+
// driver) changes. Two per-driver facts decide it: whether the driver mounts
|
|
3
|
+
// the agents tool catalog at all (adapter capabilities.agentsMcp — a bot on
|
|
4
|
+
// a driver without it is never even told about the team tools), and which
|
|
5
|
+
// approval levels the destination driver implements. Turn-scoped catalog
|
|
6
|
+
// flags are identical on both sides of a switch, so the comparison below
|
|
7
|
+
// uses one envelope profile and lets the per-driver capability decide the
|
|
8
|
+
// delta; the tool names themselves come from the real catalog, so this
|
|
9
|
+
// never drifts from what a turn is actually shown.
|
|
10
|
+
import { APPROVAL_MODES, supportsApprovalMode } from "../shared/approval-mode.js";
|
|
11
|
+
import { availableTools } from "./drivers/agents-catalog.js";
|
|
12
|
+
/** The widest turn the harness can build: every optional integration on and
|
|
13
|
+
* a coordinating (room) turn, where the room-only coordination tools exist.
|
|
14
|
+
* Both sides of a comparison get the same profile; only the driver's own
|
|
15
|
+
* capability can differ. */
|
|
16
|
+
const ENVELOPE = {
|
|
17
|
+
externalRuntime: false,
|
|
18
|
+
coordinating: true,
|
|
19
|
+
ownThreadCreation: true,
|
|
20
|
+
skillAuthoring: true,
|
|
21
|
+
sharedComputers: true,
|
|
22
|
+
voiceNotes: true,
|
|
23
|
+
botId: "",
|
|
24
|
+
};
|
|
25
|
+
/** Extra card lines for an engine switch, empty when nothing changes. */
|
|
26
|
+
export function harnessCapabilityLines(from, to) {
|
|
27
|
+
if (!from || !to)
|
|
28
|
+
return [];
|
|
29
|
+
const lines = [];
|
|
30
|
+
if (from.agentsMcp !== to.agentsMcp) {
|
|
31
|
+
const names = availableTools(ENVELOPE).map((tool) => tool.name);
|
|
32
|
+
const coordination = ["coordinate_bots", "ask_bot", "delegate_bot"].filter((name) => names.includes(name));
|
|
33
|
+
lines.push(to.agentsMcp
|
|
34
|
+
? "Gains peer coordination and the other team tools: " + names.length + " tools including " + coordination.join(", ") + "."
|
|
35
|
+
: "Loses peer coordination and every team tool: " + names.length + " tools including " + coordination.join(", ") + " go away.");
|
|
36
|
+
}
|
|
37
|
+
if (from.driverKind !== to.driverKind) {
|
|
38
|
+
const lost = APPROVAL_MODES.filter((mode) => supportsApprovalMode(from.driverKind, mode) && !supportsApprovalMode(to.driverKind, mode));
|
|
39
|
+
const gained = APPROVAL_MODES.filter((mode) => !supportsApprovalMode(from.driverKind, mode) && supportsApprovalMode(to.driverKind, mode));
|
|
40
|
+
if (lost.length)
|
|
41
|
+
lines.push("Loses approval levels: " + lost.join(", ") + ".");
|
|
42
|
+
if (gained.length)
|
|
43
|
+
lines.push("Gains approval levels: " + gained.join(", ") + ".");
|
|
44
|
+
}
|
|
45
|
+
return lines;
|
|
46
|
+
}
|