negotium 0.2.12 → 0.2.14
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/agent-helpers.js +34 -8
- package/dist/agent-helpers.js.map +6 -6
- package/dist/background-bash.js +32 -6
- package/dist/background-bash.js.map +4 -4
- package/dist/browser-runtime.js +14 -2
- package/dist/browser-runtime.js.map +3 -3
- package/dist/{chunk-8asy22vc.js → chunk-5g5a63vv.js} +32 -6
- package/dist/{chunk-8asy22vc.js.map → chunk-5g5a63vv.js.map} +4 -4
- package/dist/hosted-agent.js +33 -7
- package/dist/hosted-agent.js.map +5 -5
- package/dist/main.js +603 -353
- package/dist/main.js.map +12 -11
- package/dist/mcp-factories.js +34 -8
- package/dist/mcp-factories.js.map +6 -6
- package/dist/mcp-servers.js +3 -2
- package/dist/mcp-servers.js.map +3 -3
- package/dist/prompts.js +14 -2
- package/dist/prompts.js.map +3 -3
- package/dist/query-runtime.js +14 -2
- package/dist/query-runtime.js.map +3 -3
- package/dist/registry.js +3 -3
- package/dist/registry.js.map +2 -2
- package/dist/rollout.js +1 -1
- package/dist/runtime/src/index.ts +9 -0
- package/dist/runtime/src/node-host.ts +9 -0
- package/dist/runtime/src/platform/background-bash/manager.ts +45 -5
- package/dist/runtime/src/platform/config.ts +35 -2
- package/dist/runtime/src/runtime/bashrs-completions.ts +328 -0
- package/dist/runtime/src/runtime/turn-runner.ts +6 -0
- package/dist/runtime/src/version.ts +1 -1
- package/dist/runtime-helpers.js +14 -2
- package/dist/runtime-helpers.js.map +3 -3
- package/dist/types/apps/negotium/src/mcp-servers.d.ts +16 -3
- package/dist/types/packages/core/src/platform/background-bash/manager.d.ts +6 -1
- package/dist/types/packages/core/src/platform/config.d.ts +21 -1
- package/dist/types/packages/core/src/version.d.ts +1 -1
- package/dist/vault.js +14 -2
- package/dist/vault.js.map +3 -3
- package/install-bash-rs.mjs +77 -0
- package/package.json +3 -2
- package/dist/runtime/src/mcp/background-bash-server.ts +0 -756
package/dist/mcp-factories.js
CHANGED
|
@@ -163,6 +163,16 @@ function resolveBrowserRsBin(envValue) {
|
|
|
163
163
|
return;
|
|
164
164
|
}
|
|
165
165
|
}
|
|
166
|
+
function resolveBashRsBin(envValue) {
|
|
167
|
+
const override = envValue?.trim();
|
|
168
|
+
const candidate = override ? resolve(override) : resolve(BINARIES_DIR, "bash-rs", BASH_RS_VERSION, "bash-rs");
|
|
169
|
+
try {
|
|
170
|
+
accessSync(candidate, constants.X_OK);
|
|
171
|
+
return candidate;
|
|
172
|
+
} catch {
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
166
176
|
function resolveBrowserMcpBin(envValue) {
|
|
167
177
|
const override = envValue?.trim();
|
|
168
178
|
if (override)
|
|
@@ -240,7 +250,7 @@ function resolveDefaultModel(agent, registryDefaultModel) {
|
|
|
240
250
|
function codexAuthFilePath() {
|
|
241
251
|
return process.env.NEGOTIUM_CODEX_AUTH_FILE || join(process.env.CODEX_HOME || join(homedir(), ".codex"), "auth.json");
|
|
242
252
|
}
|
|
243
|
-
var HOME, PROJECT_ROOT, STATE_DIR_ENV, STATE_DIR, WORKSPACE_DIR, TOPIC_WORKSPACE_DIR, SHARED_WIKI_DIR, CRON_WORKSPACE_DIR, BROWSER_DIR, BROWSER_PROFILES_DIR, BINARIES_DIR, SECRETS_DIR, DM_WORKSPACE_DIR, SESSION_WORKSPACE_DIR, CLAUDE_EXECUTABLE_ENV, CLAUDE_EXECUTABLE, DEFAULT_OUTPUT_LANGUAGE = "English", BROWSER_RS_VERSION = "v0.1.19", BROWSER_RS_MIN_SECURE_VERSION = "0.1.15", SNIPPETS_API_URL, BROWSER_RS_BIN, PLAYWRIGHT_MCP_BIN, TSX_BIN, TSX_LOADER, TSCONFIG_PATH, SESSION_COMM_SERVER, TASK_SERVER, BROWSER_MCP_SSE_PROXY_SERVER, CANONICAL_MCP_PROXY_SERVER, WIKI_SERVER, TOKEN_STATS_SERVER, COMPACTION_LOG_SERVER, SYSTEM_HEALTH_SERVER, AGENT_HEALTH_SERVER,
|
|
253
|
+
var HOME, PROJECT_ROOT, STATE_DIR_ENV, STATE_DIR, WORKSPACE_DIR, TOPIC_WORKSPACE_DIR, SHARED_WIKI_DIR, CRON_WORKSPACE_DIR, BROWSER_DIR, BROWSER_PROFILES_DIR, BINARIES_DIR, SECRETS_DIR, DM_WORKSPACE_DIR, SESSION_WORKSPACE_DIR, CLAUDE_EXECUTABLE_ENV, CLAUDE_EXECUTABLE, DEFAULT_OUTPUT_LANGUAGE = "English", BROWSER_RS_VERSION = "v0.1.19", BROWSER_RS_MIN_SECURE_VERSION = "0.1.15", SNIPPETS_API_URL, BROWSER_RS_BIN, BASH_RS_VERSION = "v0.1.5", BASH_RS_BIN, PLAYWRIGHT_MCP_BIN, TSX_BIN, TSX_LOADER, TSCONFIG_PATH, SESSION_COMM_SERVER, TASK_SERVER, BROWSER_MCP_SSE_PROXY_SERVER, CANONICAL_MCP_PROXY_SERVER, WIKI_SERVER, TOKEN_STATS_SERVER, COMPACTION_LOG_SERVER, SYSTEM_HEALTH_SERVER, AGENT_HEALTH_SERVER, VAULT_SERVER, BG_BASH_BASE_PORT, BG_BASH_MAX_PORT, RUNTIME_MCP_SECRET, NODE_CONTROL_TOKEN, VAULT_MASTER_KEY, NEGOTIUM_PORT, hostname, DATA_DIR, LOG_DIR, UPLOADS_DIR, VAULT_DIR, SESSIONS_DB, DEBUG_FILE, USERS_LOG_DIR, RUN_DIR, PROGRESS_DIR, DM_CMD_DIR, DM_RESP_DIR, SESSION_INBOX_DIR, SESSION_ASKS_DIR, BASHRS_SPILL_ROOT, PLAYWRIGHT_BASE_PORT, PLAYWRIGHT_MAX_PORT, PLAYWRIGHT_PORTS_DIR, ACTIVE_QUERY_STALE_MS, AGENTS_PROMPTS_DIR, RESOURCES_DIR, FILE_TAG_REGEX, MODEL_SONNET = "claude-sonnet-5", MODEL_OPUS = "claude-opus-5", MODEL_FABLE = "claude-fable-5", FALLBACK_AGENT, SESSION_AGENT, GATEWAY_AGENT, FALLBACK_MODEL, SESSION_MODEL, GATEWAY_MODEL, FFMPEG_BIN, FFPROBE_BIN, PYTHON_BIN, FASTER_WHISPER_WRAPPER, WHISPER_MODEL, TESSERACT_BIN, PDFTOTEXT_BIN, _envMaxTellDepth, MAX_TELL_DEPTH;
|
|
244
254
|
var init_config = __esm(() => {
|
|
245
255
|
init_config_helpers();
|
|
246
256
|
init_logger();
|
|
@@ -263,6 +273,7 @@ var init_config = __esm(() => {
|
|
|
263
273
|
CLAUDE_EXECUTABLE = CLAUDE_EXECUTABLE_ENV ? resolve(CLAUDE_EXECUTABLE_ENV) : undefined;
|
|
264
274
|
SNIPPETS_API_URL = (envText("NEGOTIUM_SNIPPETS_API_URL") ?? envText("SNIPPETS_API_URL") ?? "").replace(/\/+$/, "");
|
|
265
275
|
BROWSER_RS_BIN = resolveBrowserRsBin(envText("NEGOTIUM_BROWSER_RS_BIN"));
|
|
276
|
+
BASH_RS_BIN = resolveBashRsBin(envText("NEGOTIUM_BASH_RS_BIN"));
|
|
266
277
|
PLAYWRIGHT_MCP_BIN = resolveBrowserMcpBin(envText("NEGOTIUM_BROWSER_MCP_BIN"));
|
|
267
278
|
TSX_BIN = resolveDependencyBin("tsx");
|
|
268
279
|
TSX_LOADER = createRequire(import.meta.url).resolve("tsx");
|
|
@@ -276,7 +287,6 @@ var init_config = __esm(() => {
|
|
|
276
287
|
COMPACTION_LOG_SERVER = resolve(PROJECT_ROOT, "src/mcp/compaction-log-server.ts");
|
|
277
288
|
SYSTEM_HEALTH_SERVER = resolve(PROJECT_ROOT, "src/mcp/system-health-server.ts");
|
|
278
289
|
AGENT_HEALTH_SERVER = resolve(PROJECT_ROOT, "src/mcp/agent-health-server.ts");
|
|
279
|
-
BACKGROUND_BASH_SERVER = resolve(PROJECT_ROOT, "src/mcp/background-bash-server.ts");
|
|
280
290
|
VAULT_SERVER = resolve(PROJECT_ROOT, "src/mcp/vault-server.ts");
|
|
281
291
|
BG_BASH_BASE_PORT = parsePortEnv(process.env.BG_BASH_BASE_PORT, 9700);
|
|
282
292
|
BG_BASH_MAX_PORT = parsePortEnv(process.env.BG_BASH_MAX_PORT, 9799);
|
|
@@ -299,6 +309,7 @@ var init_config = __esm(() => {
|
|
|
299
309
|
DM_RESP_DIR = resolve(RUN_DIR, "dm-responses");
|
|
300
310
|
SESSION_INBOX_DIR = resolve(RUN_DIR, "session-inbox");
|
|
301
311
|
SESSION_ASKS_DIR = resolve(RUN_DIR, "session-asks");
|
|
312
|
+
BASHRS_SPILL_ROOT = resolve(RUN_DIR, "bashrs");
|
|
302
313
|
PLAYWRIGHT_BASE_PORT = parsePortEnv(process.env.PLAYWRIGHT_BASE_PORT, 9100);
|
|
303
314
|
PLAYWRIGHT_MAX_PORT = parsePortEnv(process.env.PLAYWRIGHT_MAX_PORT, 9499);
|
|
304
315
|
PLAYWRIGHT_PORTS_DIR = resolve(RUN_DIR, "playwright-ports");
|
|
@@ -941,7 +952,7 @@ var init_claude_registry = __esm(() => {
|
|
|
941
952
|
});
|
|
942
953
|
|
|
943
954
|
// ../../packages/core/src/version.ts
|
|
944
|
-
var NEGOTIUM_VERSION = "0.2.
|
|
955
|
+
var NEGOTIUM_VERSION = "0.2.14";
|
|
945
956
|
|
|
946
957
|
// ../../packages/core/src/agents/codex-native-multi-agent.ts
|
|
947
958
|
import { spawn as spawn2 } from "child_process";
|
|
@@ -1383,7 +1394,7 @@ function createBackgroundBashManager(options = {}) {
|
|
|
1383
1394
|
const knownContexts = new Map;
|
|
1384
1395
|
const runtimeCapability = options.capability ?? randomBytes2(32).toString("hex");
|
|
1385
1396
|
const runtimeServerId = options.serverId ?? randomBytes2(16).toString("hex");
|
|
1386
|
-
const
|
|
1397
|
+
const bashRsBin = options.bashRsBin ?? BASH_RS_BIN;
|
|
1387
1398
|
const basePort = options.basePort ?? BG_BASH_BASE_PORT;
|
|
1388
1399
|
const maxPort = options.maxPort ?? BG_BASH_MAX_PORT;
|
|
1389
1400
|
const fetchImpl = options.fetch ?? globalThis.fetch;
|
|
@@ -1415,7 +1426,15 @@ function createBackgroundBashManager(options = {}) {
|
|
|
1415
1426
|
const response = await fetchImpl(`http://127.0.0.1:${port}/health`, {
|
|
1416
1427
|
signal: AbortSignal.timeout(2000)
|
|
1417
1428
|
});
|
|
1418
|
-
|
|
1429
|
+
if (!response.ok)
|
|
1430
|
+
return false;
|
|
1431
|
+
const body = await response.text();
|
|
1432
|
+
try {
|
|
1433
|
+
const parsed = JSON.parse(body);
|
|
1434
|
+
return Boolean(parsed) && typeof parsed === "object" && parsed.instance_id === runtimeServerId;
|
|
1435
|
+
} catch {
|
|
1436
|
+
return false;
|
|
1437
|
+
}
|
|
1419
1438
|
} catch {
|
|
1420
1439
|
return false;
|
|
1421
1440
|
}
|
|
@@ -1433,14 +1452,20 @@ function createBackgroundBashManager(options = {}) {
|
|
|
1433
1452
|
logger.info({ key, port: instance.port }, "background-bash server killed");
|
|
1434
1453
|
}
|
|
1435
1454
|
async function spawnServer(key, reservedPort, excludedPorts = new Set) {
|
|
1455
|
+
if (!bashRsBin) {
|
|
1456
|
+
throw new Error(`background-bash requires the bash-rs ${BASH_RS_VERSION} binary; run install-bash-rs.mjs (or set NEGOTIUM_BASH_RS_BIN)`);
|
|
1457
|
+
}
|
|
1436
1458
|
const port = reservedPort ?? await allocatePort(excludedPorts);
|
|
1437
|
-
const process2 = spawnImpl(
|
|
1459
|
+
const process2 = spawnImpl(bashRsBin, [String(port)], {
|
|
1438
1460
|
stdio: "ignore",
|
|
1439
1461
|
detached: false,
|
|
1440
1462
|
env: {
|
|
1441
1463
|
...options.env ?? globalThis.process.env,
|
|
1442
1464
|
NEGOTIUM_BG_BASH_CAPABILITY: runtimeCapability,
|
|
1443
|
-
NEGOTIUM_BG_BASH_SERVER_ID: runtimeServerId
|
|
1465
|
+
NEGOTIUM_BG_BASH_SERVER_ID: runtimeServerId,
|
|
1466
|
+
BASHRS_HTTP_CAPABILITY: runtimeCapability,
|
|
1467
|
+
BASHRS_INSTANCE_ID: runtimeServerId,
|
|
1468
|
+
BASHRS_SPILL_ROOT
|
|
1444
1469
|
}
|
|
1445
1470
|
});
|
|
1446
1471
|
process2.once("error", (error) => {
|
|
@@ -16304,6 +16329,7 @@ function startAiTurn(params) {
|
|
|
16304
16329
|
bgBashPort = await ensureBgBash(userId, topic.id);
|
|
16305
16330
|
} catch (err) {
|
|
16306
16331
|
logger.warn({ topicId, err }, "ai: ensureBgBash failed \u2014 proceeding without background bash tools");
|
|
16332
|
+
turnReminders.push("<system-reminder>Background bash tools are UNAVAILABLE this turn. The `background_bash_*` tools could not be prepared, most often because the bash-rs binary is not installed on this host. Do not attempt to call them; run short commands in the foreground instead, and tell the user if the work genuinely needs a background job.</system-reminder>");
|
|
16307
16333
|
}
|
|
16308
16334
|
}
|
|
16309
16335
|
if (playwrightRequested && !browserProfileOwner) {
|
|
@@ -19670,4 +19696,4 @@ export {
|
|
|
19670
19696
|
createAgentHealthMcpServer
|
|
19671
19697
|
};
|
|
19672
19698
|
|
|
19673
|
-
//# debugId=
|
|
19699
|
+
//# debugId=4E9AA09E3DBFE2A464756E2164756E21
|