openmausbot 0.1.69 → 0.1.71
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/{index-BmHupgVJ.js → index-CJtyBonr.js} +1 -1
- package/dist/assets/index-CYLdYtYp.css +1 -0
- package/dist/assets/index-Di4ovwu5.js +289 -0
- package/dist/index.html +2 -2
- package/dist-server/container-mcp.js +6 -2
- package/dist-server/drivers/agents-proxy.js +305 -16
- package/dist-server/drivers/pi-mcp-extension.ts +1 -1
- package/dist-server/index.js +3141 -1124
- package/dist-server/local-computer-proxy.js +2 -0
- package/dist-server/local-computer.js +2 -1
- package/dist-server/mcp-gate.js +543 -0
- package/dist-server/mcp-server.js +38 -0
- package/dist-server/openmausbot.js +772 -260
- package/dist-server/pair-cli.js +772 -260
- package/dist-server/prepare-cloudflared.js +20 -3
- package/dist-server/proxy-paths.js +1 -0
- package/dist-server/server/agent-tool-policy.js +29 -0
- package/dist-server/server/bot-package.js +55 -2
- package/dist-server/server/browser-live.js +12 -7
- package/dist-server/server/config.js +40 -4
- package/dist-server/server/delegations.js +132 -74
- package/dist-server/server/drivers/acp/core.js +2 -0
- package/dist-server/server/drivers/acp/cursor.js +1 -1
- package/dist-server/server/drivers/acp/grok.js +5 -1
- package/dist-server/server/drivers/agents-proxy.js +324 -16
- package/dist-server/server/drivers/boxagent.js +1 -1
- package/dist-server/server/drivers/claude-login-auth.js +102 -9
- package/dist-server/server/drivers/claude.js +298 -21
- package/dist-server/server/drivers/codex.js +13 -4
- package/dist-server/server/drivers/pi.js +1 -1
- package/dist-server/server/engine-install.js +137 -0
- package/dist-server/server/env-path.js +12 -0
- package/dist-server/server/harness/bus.js +1 -1
- package/dist-server/server/harness/registry.js +31 -6
- package/dist-server/server/index.js +860 -215
- package/dist-server/server/local-computer.js +1 -1
- package/dist-server/server/mcp-gate-config.js +56 -0
- package/dist-server/server/mcp-gate.js +227 -0
- package/dist-server/server/mcp-trim.js +182 -0
- package/dist-server/server/memory-journal.js +440 -0
- package/dist-server/server/memory-store.js +308 -0
- package/dist-server/server/message-db.js +90 -3
- package/dist-server/server/package-export.js +25 -0
- package/dist-server/server/peer-approval.js +1 -1
- package/dist-server/server/peer-provenance.js +6 -2
- package/dist-server/server/proxy-paths.js +1 -0
- package/dist-server/server/redact.js +15 -0
- package/dist-server/server/resume-recovery.js +46 -0
- package/dist-server/server/routines.js +116 -55
- package/dist-server/server/screen-frame-gate.js +9 -6
- package/dist-server/server/skill-library.js +5 -5
- package/dist-server/server/steer-queue.js +20 -1
- package/dist-server/server/store.js +29 -7
- package/dist-server/server/system-prompt.js +14 -1
- package/dist-server/server/team-backup.js +53 -4
- package/dist-server/server/tool-summary.js +39 -0
- package/dist-server/server/tts/speech-text.js +3 -1
- package/dist-server/server/turn-context.js +18 -0
- package/dist-server/server/workspace.js +321 -22
- package/dist-server/shared/approval-mode.js +1 -1
- package/dist-server/shared/team-backup.js +14 -2
- package/dist-server/vps-container-mcp.js +6 -2
- package/package.json +1 -1
- package/skills/create-verification-skill/SKILL.md +2 -3
- package/dist/assets/index-COp5lMnv.js +0 -279
- package/dist/assets/index-Jk7TIeyW.css +0 -1
|
@@ -80,6 +80,16 @@ let loginShellPath = null;
|
|
|
80
80
|
* and without resetting it a rescan would rebuild the cache without those
|
|
81
81
|
* entries and never re-probe — "check again" would permanently lose
|
|
82
82
|
* anything only the login shell's rc file knows about. */
|
|
83
|
+
// Directories the app manages itself (its own npm prefix for engines it
|
|
84
|
+
// installs from Settings). They go ahead of everything else so an engine
|
|
85
|
+
// installed there wins over an older copy elsewhere on PATH.
|
|
86
|
+
const registeredDirs = [];
|
|
87
|
+
export function registerPathDir(dir) {
|
|
88
|
+
if (registeredDirs.includes(dir))
|
|
89
|
+
return;
|
|
90
|
+
registeredDirs.unshift(dir);
|
|
91
|
+
resetPathCache();
|
|
92
|
+
}
|
|
83
93
|
export function resetPathCache() {
|
|
84
94
|
cached = null;
|
|
85
95
|
probed = false;
|
|
@@ -88,6 +98,7 @@ export function resetPathCache() {
|
|
|
88
98
|
export function augmentedPath() {
|
|
89
99
|
if (cached === null) {
|
|
90
100
|
cached = mergePaths([
|
|
101
|
+
...registeredDirs.filter((d) => existsSync(d)),
|
|
91
102
|
...(process.env.OMB_EXTRA_PATH ? process.env.OMB_EXTRA_PATH.split(delimiter) : []),
|
|
92
103
|
...(process.env.PATH ? process.env.PATH.split(delimiter) : []),
|
|
93
104
|
// Keep the last successful login-shell result while a rescan starts a
|
|
@@ -131,6 +142,7 @@ export function resetPathCacheForTests() {
|
|
|
131
142
|
cached = null;
|
|
132
143
|
probed = false;
|
|
133
144
|
loginShellPath = null;
|
|
145
|
+
registeredDirs.length = 0;
|
|
134
146
|
}
|
|
135
147
|
/** Every `name` binary on the augmented PATH as absolute paths, in PATH
|
|
136
148
|
* order (first = what a bare name would run). Used by the Engines panel's
|
|
@@ -5,6 +5,12 @@
|
|
|
5
5
|
// compatible — do not remove it); dispose tears an instance down without
|
|
6
6
|
// touching its siblings.
|
|
7
7
|
import { findCliCandidates } from "../env-path.js";
|
|
8
|
+
import { installNpmEngine, npmAvailable, serverInstallFor } from "../engine-install.js";
|
|
9
|
+
/** The driver's install descriptor plus what this machine can do about it. */
|
|
10
|
+
function withServerInstall(install, npmPresent) {
|
|
11
|
+
const server = install ? serverInstallFor(install, npmPresent) : null;
|
|
12
|
+
return server ? { ...install, server } : install;
|
|
13
|
+
}
|
|
8
14
|
/** The `cli` field off a driver's default config, when it has one — the
|
|
9
15
|
* placeholder an override input shows when nothing is set. */
|
|
10
16
|
function cliDefaultOf(driver) {
|
|
@@ -30,7 +36,14 @@ export class ProviderRegistry {
|
|
|
30
36
|
* from their own config; this map only reports what was configured */
|
|
31
37
|
cliByInstance = new Map();
|
|
32
38
|
driversByKind;
|
|
33
|
-
|
|
39
|
+
/** Where Settings-driven npm installs go; the data directory by default. */
|
|
40
|
+
enginesBaseDir;
|
|
41
|
+
/** Whether npm is on this machine; injectable because the PATH scan also
|
|
42
|
+
* looks in standard install locations, which tests cannot empty. */
|
|
43
|
+
npmPresent;
|
|
44
|
+
constructor(drivers, options = {}) {
|
|
45
|
+
this.enginesBaseDir = options.enginesBaseDir;
|
|
46
|
+
this.npmPresent = options.npmAvailable ?? npmAvailable;
|
|
34
47
|
this.driversByKind = new Map(drivers.map((d) => [d.driverKind, d]));
|
|
35
48
|
}
|
|
36
49
|
async load(configs) {
|
|
@@ -113,11 +126,22 @@ export class ProviderRegistry {
|
|
|
113
126
|
await instance.refreshModels?.();
|
|
114
127
|
return true;
|
|
115
128
|
}
|
|
129
|
+
/** A driver's own installer (a managed download) first; otherwise the
|
|
130
|
+
* app's npm prefix, when the driver's install one-liner is an npm package
|
|
131
|
+
* and npm is on PATH. False means Settings has nothing to offer here. */
|
|
116
132
|
async installRuntime(instanceId) {
|
|
117
|
-
const
|
|
118
|
-
if (!
|
|
133
|
+
const entry = this.byId.get(instanceId);
|
|
134
|
+
if (!entry)
|
|
135
|
+
return false;
|
|
136
|
+
if (entry.live?.installRuntime) {
|
|
137
|
+
await entry.live.installRuntime();
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
const driver = this.driversByKind.get(entry.shadow?.driverKind ?? entry.live.driverKind);
|
|
141
|
+
const server = serverInstallFor(driver?.install, this.npmPresent());
|
|
142
|
+
if (!server)
|
|
119
143
|
return false;
|
|
120
|
-
await
|
|
144
|
+
await installNpmEngine(server.package, { baseDir: this.enginesBaseDir, cli: cliDefaultOf(driver) });
|
|
121
145
|
return true;
|
|
122
146
|
}
|
|
123
147
|
async startAuthentication(instanceId) {
|
|
@@ -158,6 +182,7 @@ export class ProviderRegistry {
|
|
|
158
182
|
candidatesByName.set(name, found);
|
|
159
183
|
return found;
|
|
160
184
|
};
|
|
185
|
+
const npmPresent = this.npmPresent();
|
|
161
186
|
return Promise.all(this.entries().map(async (entry) => {
|
|
162
187
|
const driver = this.driversByKind.get(entry.shadow?.driverKind ?? entry.live.driverKind);
|
|
163
188
|
if (entry.shadow) {
|
|
@@ -170,7 +195,7 @@ export class ProviderRegistry {
|
|
|
170
195
|
capabilities: { computerMcp: false, agentsMcp: false, localComputerMcp: false },
|
|
171
196
|
// an unknown driver has no driver record, hence no install path
|
|
172
197
|
access: driver?.metadata.access ?? "subscription",
|
|
173
|
-
install: driver?.install,
|
|
198
|
+
install: withServerInstall(driver?.install, npmPresent),
|
|
174
199
|
cli: entry.shadow.cli,
|
|
175
200
|
cliDefault: cliDefaultOf(driver),
|
|
176
201
|
// a shadow is exactly the "your CLI is broken, pick another"
|
|
@@ -205,7 +230,7 @@ export class ProviderRegistry {
|
|
|
205
230
|
approvalReview: inst.reviewPermission !== undefined,
|
|
206
231
|
},
|
|
207
232
|
access: driver?.metadata.access ?? "subscription",
|
|
208
|
-
install: driver?.install,
|
|
233
|
+
install: withServerInstall(driver?.install, npmPresent),
|
|
209
234
|
authentication: inst.startAuthentication
|
|
210
235
|
? {
|
|
211
236
|
method: inst.getAuthentication && inst.completeAuthentication
|