negotium 0.2.8 → 0.2.10

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 (35) hide show
  1. package/dist/agent-helpers.js +21 -20
  2. package/dist/agent-helpers.js.map +6 -6
  3. package/dist/background-bash.js +2 -1
  4. package/dist/background-bash.js.map +3 -3
  5. package/dist/browser-runtime.js +2 -1
  6. package/dist/browser-runtime.js.map +3 -3
  7. package/dist/{chunk-knv045mn.js → chunk-dcfmsrnb.js} +2 -1
  8. package/dist/{chunk-knv045mn.js.map → chunk-dcfmsrnb.js.map} +3 -3
  9. package/dist/hosted-agent.js +3 -2
  10. package/dist/hosted-agent.js.map +4 -4
  11. package/dist/main.js +522 -269
  12. package/dist/main.js.map +11 -9
  13. package/dist/mcp-factories.js +21 -20
  14. package/dist/mcp-factories.js.map +6 -6
  15. package/dist/prompts.js +2 -1
  16. package/dist/prompts.js.map +3 -3
  17. package/dist/query-runtime.js +2 -1
  18. package/dist/query-runtime.js.map +3 -3
  19. package/dist/registry.js +9 -5
  20. package/dist/registry.js.map +4 -4
  21. package/dist/rollout.js +1 -1
  22. package/dist/runtime/src/agents/maestro-registry.ts +32 -2
  23. package/dist/runtime/src/agents/mcp-tools/inline-assets.ts +193 -0
  24. package/dist/runtime/src/agents/mcp-tools/publish-html.ts +183 -0
  25. package/dist/runtime/src/mcp-runtime-host.ts +1 -0
  26. package/dist/runtime/src/platform/config.ts +12 -0
  27. package/dist/runtime/src/runtime/turn-runner.ts +34 -11
  28. package/dist/runtime/src/version.ts +1 -1
  29. package/dist/runtime-helpers.js +2 -1
  30. package/dist/runtime-helpers.js.map +3 -3
  31. package/dist/types/packages/core/src/platform/config.d.ts +7 -0
  32. package/dist/types/packages/core/src/version.d.ts +1 -1
  33. package/dist/vault.js +2 -1
  34. package/dist/vault.js.map +3 -3
  35. package/package.json +2 -2
@@ -240,7 +240,7 @@ function resolveDefaultModel(agent, registryDefaultModel) {
240
240
  function codexAuthFilePath() {
241
241
  return process.env.NEGOTIUM_CODEX_AUTH_FILE || join(process.env.CODEX_HOME || join(homedir(), ".codex"), "auth.json");
242
242
  }
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.17", BROWSER_RS_MIN_SECURE_VERSION = "0.1.15", 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, 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, 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;
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.17", 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, 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, 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
244
  var init_config = __esm(() => {
245
245
  init_config_helpers();
246
246
  init_logger();
@@ -261,6 +261,7 @@ var init_config = __esm(() => {
261
261
  SESSION_WORKSPACE_DIR = resolve(STATE_DIR, "data", "sessions");
262
262
  CLAUDE_EXECUTABLE_ENV = envText("NEGOTIUM_CLAUDE_EXECUTABLE");
263
263
  CLAUDE_EXECUTABLE = CLAUDE_EXECUTABLE_ENV ? resolve(CLAUDE_EXECUTABLE_ENV) : undefined;
264
+ SNIPPETS_API_URL = (envText("NEGOTIUM_SNIPPETS_API_URL") ?? envText("SNIPPETS_API_URL") ?? "").replace(/\/+$/, "");
264
265
  BROWSER_RS_BIN = resolveBrowserRsBin(envText("NEGOTIUM_BROWSER_RS_BIN"));
265
266
  PLAYWRIGHT_MCP_BIN = resolveBrowserMcpBin(envText("NEGOTIUM_BROWSER_MCP_BIN"));
266
267
  TSX_BIN = resolveDependencyBin("tsx");
@@ -940,7 +941,7 @@ var init_claude_registry = __esm(() => {
940
941
  });
941
942
 
942
943
  // ../../packages/core/src/version.ts
943
- var NEGOTIUM_VERSION = "0.2.8";
944
+ var NEGOTIUM_VERSION = "0.2.10";
944
945
 
945
946
  // ../../packages/core/src/agents/codex-native-multi-agent.ts
946
947
  import { spawn as spawn2 } from "child_process";
@@ -3131,6 +3132,9 @@ function existingCreatedAt(path) {
3131
3132
  return;
3132
3133
  }
3133
3134
  }
3135
+ function nonEmptyTurnText(text) {
3136
+ return text.trim().length > 0 ? text : BLANK_TURN_PLACEHOLDER;
3137
+ }
3134
3138
  function writeRollout(options) {
3135
3139
  const sessionId = options.reuseSessionId ?? randomUUID4();
3136
3140
  assertUuidLike("sessionId", sessionId);
@@ -3138,8 +3142,8 @@ function writeRollout(options) {
3138
3142
  const path = maestroSessionPath(sessionId);
3139
3143
  mkdirSync7(maestroSessionsDir(), { recursive: true });
3140
3144
  const messages = extractChatPairs(options.entries).flatMap((pair) => [
3141
- { role: "user", content: pair.userText },
3142
- { role: "assistant", content: pair.assistantText }
3145
+ { role: "user", content: nonEmptyTurnText(pair.userText) },
3146
+ { role: "assistant", content: nonEmptyTurnText(pair.assistantText) }
3143
3147
  ]);
3144
3148
  const lines = [
3145
3149
  {
@@ -3159,7 +3163,7 @@ function writeRollout(options) {
3159
3163
  });
3160
3164
  return { sessionId, rolloutPath: path };
3161
3165
  }
3162
- var ALIAS_MAP2, VALID_MODELS, VALID_EFFORTS3, maestroRegistry, maestroRegistryOperations;
3166
+ var ALIAS_MAP2, VALID_MODELS, VALID_EFFORTS3, maestroRegistry, BLANK_TURN_PLACEHOLDER = "(no text content in this turn)", maestroRegistryOperations;
3163
3167
  var init_maestro_registry = __esm(() => {
3164
3168
  init_shared();
3165
3169
  init_logger();
@@ -16217,10 +16221,9 @@ function startAiTurn(params) {
16217
16221
  ].join(`
16218
16222
  `);
16219
16223
  }
16224
+ const turnReminders = [];
16220
16225
  if (params.from === FROM_AUTO_CONTINUE) {
16221
- systemPrompt += `
16222
-
16223
- <system-reminder>\uC774 \uD134\uC740 \uC124\uC815 \uC790\uB3D9 \uC870\uC815(effort/model/agent) \uD6C4 \uC790\uB3D9 \uC7AC\uAC1C\uB41C \uD134\uC774\uB2E4. effort/model/agent \uB09C\uC774\uB3C4 \uC7AC\uD3C9\uAC00 \uBC0F \uC124\uC815 \uBCC0\uACBD \uC5C6\uC774 \uC989\uC2DC \uC791\uC5C5\uC744 \uC2DC\uC791\uD560 \uAC83.</system-reminder>`;
16226
+ turnReminders.push("<system-reminder>\uC774 \uD134\uC740 \uC124\uC815 \uC790\uB3D9 \uC870\uC815(effort/model/agent) \uD6C4 \uC790\uB3D9 \uC7AC\uAC1C\uB41C \uD134\uC774\uB2E4. effort/model/agent \uB09C\uC774\uB3C4 \uC7AC\uD3C9\uAC00 \uBC0F \uC124\uC815 \uBCC0\uACBD \uC5C6\uC774 \uC989\uC2DC \uC791\uC5C5\uC744 \uC2DC\uC791\uD560 \uAC83.</system-reminder>");
16224
16227
  }
16225
16228
  if (!silent && !sessionRetried) {
16226
16229
  const promptsToRecord = userConversationPromptsToRecord(renderedUserPrompts, loggedUserMessageCount, agentPrompt);
@@ -16303,26 +16306,24 @@ function startAiTurn(params) {
16303
16306
  logger.warn({ topicId, err }, "ai: ensureBgBash failed \u2014 proceeding without background bash tools");
16304
16307
  }
16305
16308
  }
16306
- let effectiveSystemPrompt = systemPrompt;
16307
16309
  if (playwrightRequested && !browserProfileOwner) {
16308
- const ownerOnlyNote = "<system-reminder>Browser tools are unavailable in this turn because browser profiles are private to the topic owner. Do not attempt browser calls or ask to reuse the owner's login state.</system-reminder>";
16309
- effectiveSystemPrompt = `${effectiveSystemPrompt}
16310
-
16311
- ${ownerOnlyNote}`;
16310
+ turnReminders.push("<system-reminder>Browser tools are unavailable in this turn because browser profiles are private to the topic owner. Do not attempt browser calls or ask to reuse the owner's login state.</system-reminder>");
16312
16311
  }
16313
16312
  if (consumePlaywrightUnavailable(userId, topic.title)) {
16314
- const playwrightNote = "<system-reminder>Playwright browser tools are UNAVAILABLE this turn. The `mcp__playwright__*` tools have been removed from this turn's catalog because the long-lived browser MCP could not be prepared. Do not attempt to call browser tools. If browser interaction is required, ask the user to retry shortly or use a non-browser alternative.</system-reminder>";
16315
- effectiveSystemPrompt = `${effectiveSystemPrompt}
16316
-
16317
- ${playwrightNote}`;
16313
+ turnReminders.push("<system-reminder>Playwright browser tools are UNAVAILABLE this turn. The `mcp__playwright__*` tools have been removed from this turn's catalog because the long-lived browser MCP could not be prepared. Do not attempt to call browser tools. If browser interaction is required, ask the user to retry shortly or use a non-browser alternative.</system-reminder>");
16318
16314
  }
16315
+ const effectivePrompt = turnReminders.length > 0 ? `${agentPrompt}
16316
+
16317
+ ${turnReminders.join(`
16318
+
16319
+ `)}` : agentPrompt;
16319
16320
  try {
16320
16321
  yield* runAgent({
16321
16322
  agent: agentKind,
16322
- prompt: agentPrompt,
16323
+ prompt: effectivePrompt,
16323
16324
  attachments: promptAttachments,
16324
16325
  cwd: workspaceCwd,
16325
- systemPrompt: effectiveSystemPrompt,
16326
+ systemPrompt,
16326
16327
  sessionId,
16327
16328
  userId,
16328
16329
  vaultUserId,
@@ -19669,4 +19670,4 @@ export {
19669
19670
  createAgentHealthMcpServer
19670
19671
  };
19671
19672
 
19672
- //# debugId=15A7CD240C45C31264756E2164756E21
19673
+ //# debugId=8A3B72F3FF0CEEE664756E2164756E21