negotium 0.2.13 → 0.2.15

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.
Files changed (44) hide show
  1. package/dist/agent-helpers.js +13 -12
  2. package/dist/agent-helpers.js.map +6 -6
  3. package/dist/background-bash.js +11 -11
  4. package/dist/background-bash.js.map +4 -4
  5. package/dist/browser-runtime.js +2 -3
  6. package/dist/browser-runtime.js.map +3 -3
  7. package/dist/{chunk-rnsnhcye.js → chunk-5g5a63vv.js} +11 -11
  8. package/dist/{chunk-rnsnhcye.js.map → chunk-5g5a63vv.js.map} +4 -4
  9. package/dist/hosted-agent.js +12 -12
  10. package/dist/hosted-agent.js.map +5 -5
  11. package/dist/main.js +582 -357
  12. package/dist/main.js.map +12 -11
  13. package/dist/mcp-factories.js +13 -12
  14. package/dist/mcp-factories.js.map +6 -6
  15. package/dist/mcp-servers.js +3 -2
  16. package/dist/mcp-servers.js.map +3 -3
  17. package/dist/prompts.js +2 -3
  18. package/dist/prompts.js.map +3 -3
  19. package/dist/query-runtime.js +2 -3
  20. package/dist/query-runtime.js.map +3 -3
  21. package/dist/registry.js +3 -3
  22. package/dist/registry.js.map +2 -2
  23. package/dist/rollout.js +1 -1
  24. package/dist/runtime/src/index.ts +9 -0
  25. package/dist/runtime/src/node-host.ts +9 -0
  26. package/dist/runtime/src/platform/background-bash/manager.ts +30 -22
  27. package/dist/runtime/src/platform/config.ts +8 -7
  28. package/dist/runtime/src/runtime/bashrs-completions.ts +74 -14
  29. package/dist/runtime/src/runtime/public-helpers.ts +8 -0
  30. package/dist/runtime/src/runtime/turn-runner.ts +6 -0
  31. package/dist/runtime/src/version.ts +1 -1
  32. package/dist/runtime-helpers.js +444 -32
  33. package/dist/runtime-helpers.js.map +10 -4
  34. package/dist/types/apps/negotium/src/mcp-servers.d.ts +16 -3
  35. package/dist/types/packages/core/src/platform/background-bash/manager.d.ts +6 -1
  36. package/dist/types/packages/core/src/platform/config.d.ts +8 -6
  37. package/dist/types/packages/core/src/runtime/bashrs-completions.d.ts +50 -0
  38. package/dist/types/packages/core/src/runtime/public-helpers.d.ts +2 -0
  39. package/dist/types/packages/core/src/version.d.ts +1 -1
  40. package/dist/vault.js +2 -3
  41. package/dist/vault.js.map +3 -3
  42. package/install-bash-rs.mjs +5 -5
  43. package/package.json +1 -1
  44. package/dist/runtime/src/mcp/background-bash-server.ts +0 -756
@@ -341,7 +341,7 @@ function resolveDefaultModel(agent, registryDefaultModel) {
341
341
  function codexAuthFilePath() {
342
342
  return process.env.NEGOTIUM_CODEX_AUTH_FILE || join(process.env.CODEX_HOME || join(homedir(), ".codex"), "auth.json");
343
343
  }
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.2", 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, BACKGROUND_BASH_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;
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;
345
345
  var init_config = __esm(() => {
346
346
  init_config_helpers();
347
347
  init_logger();
@@ -378,7 +378,6 @@ var init_config = __esm(() => {
378
378
  COMPACTION_LOG_SERVER = resolve2(PROJECT_ROOT, "src/mcp/compaction-log-server.ts");
379
379
  SYSTEM_HEALTH_SERVER = resolve2(PROJECT_ROOT, "src/mcp/system-health-server.ts");
380
380
  AGENT_HEALTH_SERVER = resolve2(PROJECT_ROOT, "src/mcp/agent-health-server.ts");
381
- BACKGROUND_BASH_SERVER = resolve2(PROJECT_ROOT, "src/mcp/background-bash-server.ts");
382
381
  VAULT_SERVER = resolve2(PROJECT_ROOT, "src/mcp/vault-server.ts");
383
382
  BG_BASH_BASE_PORT = parsePortEnv(process.env.BG_BASH_BASE_PORT, 9700);
384
383
  BG_BASH_MAX_PORT = parsePortEnv(process.env.BG_BASH_MAX_PORT, 9799);
@@ -577,7 +576,7 @@ function createBackgroundBashManager(options = {}) {
577
576
  const knownContexts = new Map;
578
577
  const runtimeCapability = options.capability ?? randomBytes2(32).toString("hex");
579
578
  const runtimeServerId = options.serverId ?? randomBytes2(16).toString("hex");
580
- const serverFile = options.serverFile ?? BACKGROUND_BASH_SERVER;
579
+ const bashRsBin = options.bashRsBin ?? BASH_RS_BIN;
581
580
  const basePort = options.basePort ?? BG_BASH_BASE_PORT;
582
581
  const maxPort = options.maxPort ?? BG_BASH_MAX_PORT;
583
582
  const fetchImpl = options.fetch ?? globalThis.fetch;
@@ -614,11 +613,10 @@ function createBackgroundBashManager(options = {}) {
614
613
  const body = await response.text();
615
614
  try {
616
615
  const parsed = JSON.parse(body);
617
- if (parsed && typeof parsed === "object" && "instance_id" in parsed) {
618
- return parsed.instance_id === runtimeServerId;
619
- }
620
- } catch {}
621
- return body === runtimeServerId;
616
+ return Boolean(parsed) && typeof parsed === "object" && parsed.instance_id === runtimeServerId;
617
+ } catch {
618
+ return false;
619
+ }
622
620
  } catch {
623
621
  return false;
624
622
  }
@@ -636,9 +634,11 @@ function createBackgroundBashManager(options = {}) {
636
634
  logger.info({ key, port: instance.port }, "background-bash server killed");
637
635
  }
638
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
+ }
639
640
  const port = reservedPort ?? await allocatePort(excludedPorts);
640
- const [command, args] = BASH_RS_BIN ? [BASH_RS_BIN, [String(port)]] : ["bun", ["run", serverFile, `--port=${port}`]];
641
- const process2 = spawnImpl(command, args, {
641
+ const process2 = spawnImpl(bashRsBin, [String(port)], {
642
642
  stdio: "ignore",
643
643
  detached: false,
644
644
  env: {
@@ -2173,7 +2173,7 @@ var init_claude_registry = __esm(() => {
2173
2173
  });
2174
2174
 
2175
2175
  // ../../packages/core/src/version.ts
2176
- var NEGOTIUM_VERSION = "0.2.13";
2176
+ var NEGOTIUM_VERSION = "0.2.15";
2177
2177
 
2178
2178
  // ../../packages/core/src/agents/codex-native-multi-agent.ts
2179
2179
  import { spawn as spawn2 } from "child_process";
@@ -16343,6 +16343,7 @@ function startAiTurn(params) {
16343
16343
  bgBashPort = await ensureBgBash(userId, topic.id);
16344
16344
  } catch (err2) {
16345
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>");
16346
16347
  }
16347
16348
  }
16348
16349
  if (playwrightRequested && !browserProfileOwner) {
@@ -18578,4 +18579,4 @@ export {
18578
18579
  DEFAULT_SELF_CONFIG_PRODUCT
18579
18580
  };
18580
18581
 
18581
- //# debugId=A8E944CDAD243E8C64756E2164756E21
18582
+ //# debugId=C80646F5B5A065DA64756E2164756E21