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/agent-helpers.js
CHANGED
|
@@ -254,6 +254,16 @@ function resolveBrowserRsBin(envValue) {
|
|
|
254
254
|
return;
|
|
255
255
|
}
|
|
256
256
|
}
|
|
257
|
+
function resolveBashRsBin(envValue) {
|
|
258
|
+
const override = envValue?.trim();
|
|
259
|
+
const candidate = override ? resolve2(override) : resolve2(BINARIES_DIR, "bash-rs", BASH_RS_VERSION, "bash-rs");
|
|
260
|
+
try {
|
|
261
|
+
accessSync(candidate, constants.X_OK);
|
|
262
|
+
return candidate;
|
|
263
|
+
} catch {
|
|
264
|
+
return;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
257
267
|
function resolveBrowserMcpBin(envValue) {
|
|
258
268
|
const override = envValue?.trim();
|
|
259
269
|
if (override)
|
|
@@ -331,7 +341,7 @@ function resolveDefaultModel(agent, registryDefaultModel) {
|
|
|
331
341
|
function codexAuthFilePath() {
|
|
332
342
|
return process.env.NEGOTIUM_CODEX_AUTH_FILE || join(process.env.CODEX_HOME || join(homedir(), ".codex"), "auth.json");
|
|
333
343
|
}
|
|
334
|
-
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,
|
|
344
|
+
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;
|
|
335
345
|
var init_config = __esm(() => {
|
|
336
346
|
init_config_helpers();
|
|
337
347
|
init_logger();
|
|
@@ -354,6 +364,7 @@ var init_config = __esm(() => {
|
|
|
354
364
|
CLAUDE_EXECUTABLE = CLAUDE_EXECUTABLE_ENV ? resolve2(CLAUDE_EXECUTABLE_ENV) : undefined;
|
|
355
365
|
SNIPPETS_API_URL = (envText("NEGOTIUM_SNIPPETS_API_URL") ?? envText("SNIPPETS_API_URL") ?? "").replace(/\/+$/, "");
|
|
356
366
|
BROWSER_RS_BIN = resolveBrowserRsBin(envText("NEGOTIUM_BROWSER_RS_BIN"));
|
|
367
|
+
BASH_RS_BIN = resolveBashRsBin(envText("NEGOTIUM_BASH_RS_BIN"));
|
|
357
368
|
PLAYWRIGHT_MCP_BIN = resolveBrowserMcpBin(envText("NEGOTIUM_BROWSER_MCP_BIN"));
|
|
358
369
|
TSX_BIN = resolveDependencyBin("tsx");
|
|
359
370
|
TSX_LOADER = createRequire(import.meta.url).resolve("tsx");
|
|
@@ -367,7 +378,6 @@ var init_config = __esm(() => {
|
|
|
367
378
|
COMPACTION_LOG_SERVER = resolve2(PROJECT_ROOT, "src/mcp/compaction-log-server.ts");
|
|
368
379
|
SYSTEM_HEALTH_SERVER = resolve2(PROJECT_ROOT, "src/mcp/system-health-server.ts");
|
|
369
380
|
AGENT_HEALTH_SERVER = resolve2(PROJECT_ROOT, "src/mcp/agent-health-server.ts");
|
|
370
|
-
BACKGROUND_BASH_SERVER = resolve2(PROJECT_ROOT, "src/mcp/background-bash-server.ts");
|
|
371
381
|
VAULT_SERVER = resolve2(PROJECT_ROOT, "src/mcp/vault-server.ts");
|
|
372
382
|
BG_BASH_BASE_PORT = parsePortEnv(process.env.BG_BASH_BASE_PORT, 9700);
|
|
373
383
|
BG_BASH_MAX_PORT = parsePortEnv(process.env.BG_BASH_MAX_PORT, 9799);
|
|
@@ -390,6 +400,7 @@ var init_config = __esm(() => {
|
|
|
390
400
|
DM_RESP_DIR = resolve2(RUN_DIR, "dm-responses");
|
|
391
401
|
SESSION_INBOX_DIR = resolve2(RUN_DIR, "session-inbox");
|
|
392
402
|
SESSION_ASKS_DIR = resolve2(RUN_DIR, "session-asks");
|
|
403
|
+
BASHRS_SPILL_ROOT = resolve2(RUN_DIR, "bashrs");
|
|
393
404
|
PLAYWRIGHT_BASE_PORT = parsePortEnv(process.env.PLAYWRIGHT_BASE_PORT, 9100);
|
|
394
405
|
PLAYWRIGHT_MAX_PORT = parsePortEnv(process.env.PLAYWRIGHT_MAX_PORT, 9499);
|
|
395
406
|
PLAYWRIGHT_PORTS_DIR = resolve2(RUN_DIR, "playwright-ports");
|
|
@@ -565,7 +576,7 @@ function createBackgroundBashManager(options = {}) {
|
|
|
565
576
|
const knownContexts = new Map;
|
|
566
577
|
const runtimeCapability = options.capability ?? randomBytes2(32).toString("hex");
|
|
567
578
|
const runtimeServerId = options.serverId ?? randomBytes2(16).toString("hex");
|
|
568
|
-
const
|
|
579
|
+
const bashRsBin = options.bashRsBin ?? BASH_RS_BIN;
|
|
569
580
|
const basePort = options.basePort ?? BG_BASH_BASE_PORT;
|
|
570
581
|
const maxPort = options.maxPort ?? BG_BASH_MAX_PORT;
|
|
571
582
|
const fetchImpl = options.fetch ?? globalThis.fetch;
|
|
@@ -597,7 +608,15 @@ function createBackgroundBashManager(options = {}) {
|
|
|
597
608
|
const response = await fetchImpl(`http://127.0.0.1:${port}/health`, {
|
|
598
609
|
signal: AbortSignal.timeout(2000)
|
|
599
610
|
});
|
|
600
|
-
|
|
611
|
+
if (!response.ok)
|
|
612
|
+
return false;
|
|
613
|
+
const body = await response.text();
|
|
614
|
+
try {
|
|
615
|
+
const parsed = JSON.parse(body);
|
|
616
|
+
return Boolean(parsed) && typeof parsed === "object" && parsed.instance_id === runtimeServerId;
|
|
617
|
+
} catch {
|
|
618
|
+
return false;
|
|
619
|
+
}
|
|
601
620
|
} catch {
|
|
602
621
|
return false;
|
|
603
622
|
}
|
|
@@ -615,14 +634,20 @@ function createBackgroundBashManager(options = {}) {
|
|
|
615
634
|
logger.info({ key, port: instance.port }, "background-bash server killed");
|
|
616
635
|
}
|
|
617
636
|
async function spawnServer(key, reservedPort, excludedPorts = new Set) {
|
|
637
|
+
if (!bashRsBin) {
|
|
638
|
+
throw new Error(`background-bash requires the bash-rs ${BASH_RS_VERSION} binary; run install-bash-rs.mjs (or set NEGOTIUM_BASH_RS_BIN)`);
|
|
639
|
+
}
|
|
618
640
|
const port = reservedPort ?? await allocatePort(excludedPorts);
|
|
619
|
-
const process2 = spawnImpl(
|
|
641
|
+
const process2 = spawnImpl(bashRsBin, [String(port)], {
|
|
620
642
|
stdio: "ignore",
|
|
621
643
|
detached: false,
|
|
622
644
|
env: {
|
|
623
645
|
...options.env ?? globalThis.process.env,
|
|
624
646
|
NEGOTIUM_BG_BASH_CAPABILITY: runtimeCapability,
|
|
625
|
-
NEGOTIUM_BG_BASH_SERVER_ID: runtimeServerId
|
|
647
|
+
NEGOTIUM_BG_BASH_SERVER_ID: runtimeServerId,
|
|
648
|
+
BASHRS_HTTP_CAPABILITY: runtimeCapability,
|
|
649
|
+
BASHRS_INSTANCE_ID: runtimeServerId,
|
|
650
|
+
BASHRS_SPILL_ROOT
|
|
626
651
|
}
|
|
627
652
|
});
|
|
628
653
|
process2.once("error", (error) => {
|
|
@@ -2148,7 +2173,7 @@ var init_claude_registry = __esm(() => {
|
|
|
2148
2173
|
});
|
|
2149
2174
|
|
|
2150
2175
|
// ../../packages/core/src/version.ts
|
|
2151
|
-
var NEGOTIUM_VERSION = "0.2.
|
|
2176
|
+
var NEGOTIUM_VERSION = "0.2.14";
|
|
2152
2177
|
|
|
2153
2178
|
// ../../packages/core/src/agents/codex-native-multi-agent.ts
|
|
2154
2179
|
import { spawn as spawn2 } from "child_process";
|
|
@@ -16318,6 +16343,7 @@ function startAiTurn(params) {
|
|
|
16318
16343
|
bgBashPort = await ensureBgBash(userId, topic.id);
|
|
16319
16344
|
} catch (err2) {
|
|
16320
16345
|
logger.warn({ topicId, err: err2 }, "ai: ensureBgBash failed \u2014 proceeding without background bash tools");
|
|
16346
|
+
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>");
|
|
16321
16347
|
}
|
|
16322
16348
|
}
|
|
16323
16349
|
if (playwrightRequested && !browserProfileOwner) {
|
|
@@ -18553,4 +18579,4 @@ export {
|
|
|
18553
18579
|
DEFAULT_SELF_CONFIG_PRODUCT
|
|
18554
18580
|
};
|
|
18555
18581
|
|
|
18556
|
-
//# debugId=
|
|
18582
|
+
//# debugId=1F2C27A2871EECB564756E2164756E21
|