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
@@ -331,7 +331,7 @@ function resolveDefaultModel(agent, registryDefaultModel) {
331
331
  function codexAuthFilePath() {
332
332
  return process.env.NEGOTIUM_CODEX_AUTH_FILE || join(process.env.CODEX_HOME || join(homedir(), ".codex"), "auth.json");
333
333
  }
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.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;
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.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;
335
335
  var init_config = __esm(() => {
336
336
  init_config_helpers();
337
337
  init_logger();
@@ -352,6 +352,7 @@ var init_config = __esm(() => {
352
352
  SESSION_WORKSPACE_DIR = resolve2(STATE_DIR, "data", "sessions");
353
353
  CLAUDE_EXECUTABLE_ENV = envText("NEGOTIUM_CLAUDE_EXECUTABLE");
354
354
  CLAUDE_EXECUTABLE = CLAUDE_EXECUTABLE_ENV ? resolve2(CLAUDE_EXECUTABLE_ENV) : undefined;
355
+ SNIPPETS_API_URL = (envText("NEGOTIUM_SNIPPETS_API_URL") ?? envText("SNIPPETS_API_URL") ?? "").replace(/\/+$/, "");
355
356
  BROWSER_RS_BIN = resolveBrowserRsBin(envText("NEGOTIUM_BROWSER_RS_BIN"));
356
357
  PLAYWRIGHT_MCP_BIN = resolveBrowserMcpBin(envText("NEGOTIUM_BROWSER_MCP_BIN"));
357
358
  TSX_BIN = resolveDependencyBin("tsx");
@@ -2147,7 +2148,7 @@ var init_claude_registry = __esm(() => {
2147
2148
  });
2148
2149
 
2149
2150
  // ../../packages/core/src/version.ts
2150
- var NEGOTIUM_VERSION = "0.2.8";
2151
+ var NEGOTIUM_VERSION = "0.2.10";
2151
2152
 
2152
2153
  // ../../packages/core/src/agents/codex-native-multi-agent.ts
2153
2154
  import { spawn as spawn2 } from "child_process";
@@ -3088,6 +3089,9 @@ function existingCreatedAt(path) {
3088
3089
  return;
3089
3090
  }
3090
3091
  }
3092
+ function nonEmptyTurnText(text) {
3093
+ return text.trim().length > 0 ? text : BLANK_TURN_PLACEHOLDER;
3094
+ }
3091
3095
  function writeRollout(options) {
3092
3096
  const sessionId = options.reuseSessionId ?? randomUUID3();
3093
3097
  assertUuidLike("sessionId", sessionId);
@@ -3095,8 +3099,8 @@ function writeRollout(options) {
3095
3099
  const path = maestroSessionPath(sessionId);
3096
3100
  mkdirSync6(maestroSessionsDir(), { recursive: true });
3097
3101
  const messages = extractChatPairs(options.entries).flatMap((pair) => [
3098
- { role: "user", content: pair.userText },
3099
- { role: "assistant", content: pair.assistantText }
3102
+ { role: "user", content: nonEmptyTurnText(pair.userText) },
3103
+ { role: "assistant", content: nonEmptyTurnText(pair.assistantText) }
3100
3104
  ]);
3101
3105
  const lines = [
3102
3106
  {
@@ -3116,7 +3120,7 @@ function writeRollout(options) {
3116
3120
  });
3117
3121
  return { sessionId, rolloutPath: path };
3118
3122
  }
3119
- var ALIAS_MAP2, VALID_MODELS, VALID_EFFORTS3, maestroRegistry, maestroRegistryOperations;
3123
+ var ALIAS_MAP2, VALID_MODELS, VALID_EFFORTS3, maestroRegistry, BLANK_TURN_PLACEHOLDER = "(no text content in this turn)", maestroRegistryOperations;
3120
3124
  var init_maestro_registry = __esm(() => {
3121
3125
  init_shared();
3122
3126
  init_logger();
@@ -16231,10 +16235,9 @@ function startAiTurn(params) {
16231
16235
  ].join(`
16232
16236
  `);
16233
16237
  }
16238
+ const turnReminders = [];
16234
16239
  if (params.from === FROM_AUTO_CONTINUE) {
16235
- systemPrompt += `
16236
-
16237
- <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>`;
16240
+ 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>");
16238
16241
  }
16239
16242
  if (!silent && !sessionRetried) {
16240
16243
  const promptsToRecord = userConversationPromptsToRecord(renderedUserPrompts, loggedUserMessageCount, agentPrompt);
@@ -16317,26 +16320,24 @@ function startAiTurn(params) {
16317
16320
  logger.warn({ topicId, err: err2 }, "ai: ensureBgBash failed \u2014 proceeding without background bash tools");
16318
16321
  }
16319
16322
  }
16320
- let effectiveSystemPrompt = systemPrompt;
16321
16323
  if (playwrightRequested && !browserProfileOwner) {
16322
- 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>";
16323
- effectiveSystemPrompt = `${effectiveSystemPrompt}
16324
-
16325
- ${ownerOnlyNote}`;
16324
+ 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>");
16326
16325
  }
16327
16326
  if (consumePlaywrightUnavailable(userId, topic.title)) {
16328
- 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>";
16329
- effectiveSystemPrompt = `${effectiveSystemPrompt}
16330
-
16331
- ${playwrightNote}`;
16327
+ 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>");
16332
16328
  }
16329
+ const effectivePrompt = turnReminders.length > 0 ? `${agentPrompt}
16330
+
16331
+ ${turnReminders.join(`
16332
+
16333
+ `)}` : agentPrompt;
16333
16334
  try {
16334
16335
  yield* runAgent({
16335
16336
  agent: agentKind,
16336
- prompt: agentPrompt,
16337
+ prompt: effectivePrompt,
16337
16338
  attachments: promptAttachments,
16338
16339
  cwd: workspaceCwd,
16339
- systemPrompt: effectiveSystemPrompt,
16340
+ systemPrompt,
16340
16341
  sessionId,
16341
16342
  userId,
16342
16343
  vaultUserId,
@@ -18309,4 +18310,4 @@ export {
18309
18310
  DEFAULT_SELF_CONFIG_PRODUCT
18310
18311
  };
18311
18312
 
18312
- //# debugId=579AFA2A32EAAC7164756E2164756E21
18313
+ //# debugId=9D7DFE7928DB7C4D64756E2164756E21