negotium 0.2.7 → 0.2.9
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 +40 -24
- package/dist/agent-helpers.js.map +9 -9
- package/dist/background-bash.js +2 -2
- package/dist/background-bash.js.map +2 -2
- package/dist/browser-runtime.js +4 -3
- package/dist/browser-runtime.js.map +4 -4
- package/dist/{chunk-qmbcbhyy.js → chunk-knv045mn.js} +2 -2
- package/dist/{chunk-qmbcbhyy.js.map → chunk-knv045mn.js.map} +2 -2
- package/dist/hosted-agent.js +8 -4
- package/dist/hosted-agent.js.map +5 -5
- package/dist/main.js +40 -24
- package/dist/main.js.map +9 -9
- package/dist/mcp-factories.js +40 -24
- package/dist/mcp-factories.js.map +9 -9
- package/dist/prompts.js +14 -4
- package/dist/prompts.js.map +4 -4
- package/dist/query-runtime.js +2 -2
- package/dist/query-runtime.js.map +2 -2
- package/dist/registry.js +10 -5
- package/dist/registry.js.map +4 -4
- package/dist/rollout.js +1 -1
- package/dist/runtime/src/agents/claude-provider.ts +7 -0
- package/dist/runtime/src/agents/maestro-registry.ts +37 -2
- package/dist/runtime/src/agents/model-catalog.ts +18 -4
- package/dist/runtime/src/mcp/background-bash-server.ts +194 -17
- package/dist/runtime/src/platform/config.ts +1 -1
- package/dist/runtime/src/platform/playwright/vault-broker.ts +7 -0
- package/dist/runtime/src/runtime/turn-runner.ts +34 -11
- package/dist/runtime/src/version.ts +1 -1
- package/dist/runtime-helpers.js +2 -2
- package/dist/runtime-helpers.js.map +2 -2
- package/dist/types/packages/core/src/agents/model-catalog.d.ts +4 -3
- package/dist/types/packages/core/src/platform/config.d.ts +1 -1
- package/dist/types/packages/core/src/version.d.ts +1 -1
- package/dist/vault.js +2 -2
- package/dist/vault.js.map +2 -2
- package/install-browser-rs.mjs +3 -3
- package/package.json +2 -2
package/dist/mcp-factories.js
CHANGED
|
@@ -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.
|
|
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;
|
|
244
244
|
var init_config = __esm(() => {
|
|
245
245
|
init_config_helpers();
|
|
246
246
|
init_logger();
|
|
@@ -940,7 +940,7 @@ var init_claude_registry = __esm(() => {
|
|
|
940
940
|
});
|
|
941
941
|
|
|
942
942
|
// ../../packages/core/src/version.ts
|
|
943
|
-
var NEGOTIUM_VERSION = "0.2.
|
|
943
|
+
var NEGOTIUM_VERSION = "0.2.9";
|
|
944
944
|
|
|
945
945
|
// ../../packages/core/src/agents/codex-native-multi-agent.ts
|
|
946
946
|
import { spawn as spawn2 } from "child_process";
|
|
@@ -3131,6 +3131,9 @@ function existingCreatedAt(path) {
|
|
|
3131
3131
|
return;
|
|
3132
3132
|
}
|
|
3133
3133
|
}
|
|
3134
|
+
function nonEmptyTurnText(text) {
|
|
3135
|
+
return text.trim().length > 0 ? text : BLANK_TURN_PLACEHOLDER;
|
|
3136
|
+
}
|
|
3134
3137
|
function writeRollout(options) {
|
|
3135
3138
|
const sessionId = options.reuseSessionId ?? randomUUID4();
|
|
3136
3139
|
assertUuidLike("sessionId", sessionId);
|
|
@@ -3138,8 +3141,8 @@ function writeRollout(options) {
|
|
|
3138
3141
|
const path = maestroSessionPath(sessionId);
|
|
3139
3142
|
mkdirSync7(maestroSessionsDir(), { recursive: true });
|
|
3140
3143
|
const messages = extractChatPairs(options.entries).flatMap((pair) => [
|
|
3141
|
-
{ role: "user", content: pair.userText },
|
|
3142
|
-
{ role: "assistant", content: pair.assistantText }
|
|
3144
|
+
{ role: "user", content: nonEmptyTurnText(pair.userText) },
|
|
3145
|
+
{ role: "assistant", content: nonEmptyTurnText(pair.assistantText) }
|
|
3143
3146
|
]);
|
|
3144
3147
|
const lines = [
|
|
3145
3148
|
{
|
|
@@ -3159,13 +3162,14 @@ function writeRollout(options) {
|
|
|
3159
3162
|
});
|
|
3160
3163
|
return { sessionId, rolloutPath: path };
|
|
3161
3164
|
}
|
|
3162
|
-
var ALIAS_MAP2, VALID_MODELS, VALID_EFFORTS3, maestroRegistry, maestroRegistryOperations;
|
|
3165
|
+
var ALIAS_MAP2, VALID_MODELS, VALID_EFFORTS3, maestroRegistry, BLANK_TURN_PLACEHOLDER = "(no text content in this turn)", maestroRegistryOperations;
|
|
3163
3166
|
var init_maestro_registry = __esm(() => {
|
|
3164
3167
|
init_shared();
|
|
3165
3168
|
init_logger();
|
|
3166
3169
|
init_types();
|
|
3167
3170
|
ALIAS_MAP2 = {
|
|
3168
3171
|
"deepseek-pro": "deepseek-v4-pro",
|
|
3172
|
+
"deepseek-flash": "deepseek-v4-flash",
|
|
3169
3173
|
kimi: "kimi-k3",
|
|
3170
3174
|
"kimi-pro": "kimi-k3",
|
|
3171
3175
|
"kimi-code": "kimi-k2.7-code"
|
|
@@ -5073,7 +5077,7 @@ function resolveCompactionExecution(agent, registry) {
|
|
|
5073
5077
|
const effort = registry.validateEffort("medium") ? "medium" : registry.defaultEffort;
|
|
5074
5078
|
return { model, ...effort ? { effort } : {} };
|
|
5075
5079
|
}
|
|
5076
|
-
var MODEL_OWNER, MODEL_COST_RESEARCHED_AT = "2026-
|
|
5080
|
+
var MODEL_OWNER, MODEL_COST_RESEARCHED_AT = "2026-08-04", MODEL_COST_ROUTING_SUMMARY = "Cost basis (2026-08-04): Codex Pro 20x and Claude Max 20x are each $200/month; Maestro models are pay-per-token. DeepSeek Flash is cheapest.", CODEX_PRO_20X_COST = "ChatGPT Pro 20x subscription: $200/month", CODEX_COMMUNITY_WEEKLY = "Community plan-level observation: roughly 2\u20134B raw/cached tokens per week; fresh-input equivalent is much lower and unstable (low confidence)", CLAUDE_MAX_20X_COST = "Claude Max 20x subscription: $200/month", CLAUDE_COMMUNITY_SESSION = "Community observations vary from roughly 220\u2013250K locally displayed tokens per 5-hour session to billions of cache-heavy raw tokens per week; calibrated reports value a full weekly allowance around $680\u2013$1,900 at API rates. Recent heavy-model reports reach the weekly cap after about 4\u20135 full sessions (low confidence; not a token cap)", SELECTABLE_MODELS, SELECTABLE_MODEL_ALIASES, FALLBACK_ORDER, AGENT_DISPLAY_NAME;
|
|
5077
5081
|
var init_model_catalog = __esm(() => {
|
|
5078
5082
|
init_config();
|
|
5079
5083
|
MODEL_OWNER = {
|
|
@@ -5180,10 +5184,20 @@ var init_model_catalog = __esm(() => {
|
|
|
5180
5184
|
agent: "maestro",
|
|
5181
5185
|
description: "API-priced Sonnet-level route for cost-efficient everyday work.",
|
|
5182
5186
|
intelligenceTier: "sonnet",
|
|
5183
|
-
routingSummary: "cost-efficient everyday work; pay-per-token
|
|
5187
|
+
routingSummary: "cost-efficient everyday work; pay-per-token, pricier than DeepSeek Flash",
|
|
5184
5188
|
accessCost: "DeepSeek V4 Pro pay-as-you-go API; no monthly subscription required",
|
|
5185
5189
|
marginalTokenCost: "DeepSeek API: $0.435/M uncached input, $0.003625/M cached input, $0.87/M output",
|
|
5186
5190
|
estimatedUsage: "No subscription token cap; pay per token. Official account concurrency limit is 500 requests."
|
|
5191
|
+
},
|
|
5192
|
+
{
|
|
5193
|
+
model: "deepseek-flash",
|
|
5194
|
+
agent: "maestro",
|
|
5195
|
+
description: "Faster, cheaper DeepSeek V4 variant (DeepSeek-V4-Flash-0731) at similar Sonnet-level quality for high-volume everyday work.",
|
|
5196
|
+
intelligenceTier: "sonnet",
|
|
5197
|
+
routingSummary: "cheapest overall route; pay-per-token, 1M context, 5x Pro's concurrency limit",
|
|
5198
|
+
accessCost: "DeepSeek V4 Flash pay-as-you-go API; no monthly subscription required",
|
|
5199
|
+
marginalTokenCost: "DeepSeek API: $0.14/M uncached input, $0.0028/M cached input, $0.28/M output",
|
|
5200
|
+
estimatedUsage: "No subscription token cap; pay per token. Official account concurrency limit is 2500 requests."
|
|
5187
5201
|
}
|
|
5188
5202
|
];
|
|
5189
5203
|
SELECTABLE_MODEL_ALIASES = {
|
|
@@ -5894,7 +5908,8 @@ var init_vault_broker = __esm(async () => {
|
|
|
5894
5908
|
browser_snapshot: { argument: "maxLength", field: "snapshot" },
|
|
5895
5909
|
browser_api_request: { argument: "maxBytes", field: "body" },
|
|
5896
5910
|
browser_get_visible_text: { argument: "maxLength", field: "text" },
|
|
5897
|
-
browser_get_visible_html: { argument: "maxLength", field: "html" }
|
|
5911
|
+
browser_get_visible_html: { argument: "maxLength", field: "html" },
|
|
5912
|
+
browser_iframe_read: { argument: "maxLength", field: "content" }
|
|
5898
5913
|
};
|
|
5899
5914
|
});
|
|
5900
5915
|
|
|
@@ -8111,7 +8126,11 @@ var init_claude_provider = __esm(async () => {
|
|
|
8111
8126
|
"TaskCreate",
|
|
8112
8127
|
"TaskUpdate",
|
|
8113
8128
|
"TaskList",
|
|
8114
|
-
"TaskGet"
|
|
8129
|
+
"TaskGet",
|
|
8130
|
+
"ScheduleWakeup",
|
|
8131
|
+
"CronCreate",
|
|
8132
|
+
"CronList",
|
|
8133
|
+
"CronDelete"
|
|
8115
8134
|
];
|
|
8116
8135
|
CLAUDE_NATIVE_AGENT_TOOLS = ["Task", "Agent", "TaskOutput", "TaskStop"];
|
|
8117
8136
|
CLAUDE_IMAGE_MAX_BYTES = 10 * 1024 * 1024;
|
|
@@ -16201,10 +16220,9 @@ function startAiTurn(params) {
|
|
|
16201
16220
|
].join(`
|
|
16202
16221
|
`);
|
|
16203
16222
|
}
|
|
16223
|
+
const turnReminders = [];
|
|
16204
16224
|
if (params.from === FROM_AUTO_CONTINUE) {
|
|
16205
|
-
|
|
16206
|
-
|
|
16207
|
-
<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>`;
|
|
16225
|
+
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>");
|
|
16208
16226
|
}
|
|
16209
16227
|
if (!silent && !sessionRetried) {
|
|
16210
16228
|
const promptsToRecord = userConversationPromptsToRecord(renderedUserPrompts, loggedUserMessageCount, agentPrompt);
|
|
@@ -16287,26 +16305,24 @@ function startAiTurn(params) {
|
|
|
16287
16305
|
logger.warn({ topicId, err }, "ai: ensureBgBash failed \u2014 proceeding without background bash tools");
|
|
16288
16306
|
}
|
|
16289
16307
|
}
|
|
16290
|
-
let effectiveSystemPrompt = systemPrompt;
|
|
16291
16308
|
if (playwrightRequested && !browserProfileOwner) {
|
|
16292
|
-
|
|
16293
|
-
effectiveSystemPrompt = `${effectiveSystemPrompt}
|
|
16294
|
-
|
|
16295
|
-
${ownerOnlyNote}`;
|
|
16309
|
+
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>");
|
|
16296
16310
|
}
|
|
16297
16311
|
if (consumePlaywrightUnavailable(userId, topic.title)) {
|
|
16298
|
-
|
|
16299
|
-
effectiveSystemPrompt = `${effectiveSystemPrompt}
|
|
16300
|
-
|
|
16301
|
-
${playwrightNote}`;
|
|
16312
|
+
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>");
|
|
16302
16313
|
}
|
|
16314
|
+
const effectivePrompt = turnReminders.length > 0 ? `${agentPrompt}
|
|
16315
|
+
|
|
16316
|
+
${turnReminders.join(`
|
|
16317
|
+
|
|
16318
|
+
`)}` : agentPrompt;
|
|
16303
16319
|
try {
|
|
16304
16320
|
yield* runAgent({
|
|
16305
16321
|
agent: agentKind,
|
|
16306
|
-
prompt:
|
|
16322
|
+
prompt: effectivePrompt,
|
|
16307
16323
|
attachments: promptAttachments,
|
|
16308
16324
|
cwd: workspaceCwd,
|
|
16309
|
-
systemPrompt
|
|
16325
|
+
systemPrompt,
|
|
16310
16326
|
sessionId,
|
|
16311
16327
|
userId,
|
|
16312
16328
|
vaultUserId,
|
|
@@ -19653,4 +19669,4 @@ export {
|
|
|
19653
19669
|
createAgentHealthMcpServer
|
|
19654
19670
|
};
|
|
19655
19671
|
|
|
19656
|
-
//# debugId=
|
|
19672
|
+
//# debugId=748AFA809FA3BD1164756E2164756E21
|