negotium 0.13.0 → 0.14.0
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 +179 -8
- package/dist/agent-helpers.js.map +16 -14
- package/dist/background-bash.js +13 -2
- package/dist/background-bash.js.map +4 -4
- package/dist/browser-runtime.js +13 -2
- package/dist/browser-runtime.js.map +4 -4
- package/dist/{chunk-vmfesy73.js → chunk-8qx32snm.js} +22 -4
- package/dist/{chunk-vmfesy73.js.map → chunk-8qx32snm.js.map} +6 -6
- package/dist/{chunk-m19cf9kc.js → chunk-fhz6y2tn.js} +1 -1
- package/dist/{chunk-tnptx2ba.js → chunk-rhzs133d.js} +3 -3
- package/dist/{chunk-tnptx2ba.js.map → chunk-rhzs133d.js.map} +2 -2
- package/dist/hosted-agent.js +23 -5
- package/dist/hosted-agent.js.map +7 -7
- package/dist/main.js +446 -32
- package/dist/main.js.map +28 -25
- package/dist/mcp-factories.js +109 -8
- package/dist/mcp-factories.js.map +11 -11
- package/dist/media.js +13 -2
- package/dist/media.js.map +5 -5
- package/dist/outbox.js.map +2 -2
- package/dist/prompts.js +13 -2
- package/dist/prompts.js.map +4 -4
- package/dist/query-runtime.js +13 -2
- package/dist/query-runtime.js.map +4 -4
- package/dist/registry.js +3 -3
- package/dist/rollout.js +2 -2
- package/dist/runtime/src/agents/archiver.ts +4 -0
- package/dist/runtime/src/agents/mcp-tools/self-config.ts +62 -3
- package/dist/runtime/src/agents/public-helpers.ts +12 -0
- package/dist/runtime/src/agents/topic-defaults.ts +128 -0
- package/dist/runtime/src/application/topic-service.ts +11 -1
- package/dist/runtime/src/index.ts +6 -2
- package/dist/runtime/src/mcp/runtime-spec.ts +6 -0
- package/dist/runtime/src/mcp/wiki-server.ts +148 -4
- package/dist/runtime/src/mcp-runtime-host.ts +7 -1
- package/dist/runtime/src/media/text-extractor.ts +0 -5
- package/dist/runtime/src/outbox/file-ops.ts +0 -1
- package/dist/runtime/src/platform/config.ts +15 -2
- package/dist/runtime/src/platform/mcp-config.ts +10 -1
- package/dist/runtime/src/prompts/agents/wiki-archiver.md +27 -3
- package/dist/runtime/src/storage/api-messages.ts +9 -27
- package/dist/runtime/src/storage/api-topics.ts +6 -18
- package/dist/runtime/src/storage/storage-public.ts +2 -0
- package/dist/runtime/src/storage/topic-default-assignments.ts +140 -0
- package/dist/runtime/src/topics/create.ts +81 -6
- package/dist/runtime/src/types.ts +6 -0
- package/dist/runtime/src/version.ts +1 -1
- package/dist/runtime-helpers.js +6 -2
- package/dist/runtime-helpers.js.map +5 -5
- package/dist/storage.js +81 -1
- package/dist/storage.js.map +7 -6
- package/dist/types/packages/core/src/agents/mcp-tools/self-config.d.ts +30 -2
- package/dist/types/packages/core/src/agents/public-helpers.d.ts +2 -1
- package/dist/types/packages/core/src/agents/topic-defaults.d.ts +41 -0
- package/dist/types/packages/core/src/mcp/runtime-spec.d.ts +2 -0
- package/dist/types/packages/core/src/mcp/wiki-server.d.ts +20 -0
- package/dist/types/packages/core/src/platform/config.d.ts +9 -2
- package/dist/types/packages/core/src/platform/mcp-config.d.ts +3 -0
- package/dist/types/packages/core/src/storage/storage-public.d.ts +2 -0
- package/dist/types/packages/core/src/storage/topic-default-assignments.d.ts +34 -0
- package/dist/types/packages/core/src/types.d.ts +6 -0
- package/dist/types/packages/core/src/version.d.ts +1 -1
- package/dist/vault.js +13 -2
- package/dist/vault.js.map +4 -4
- package/install-browser-rs.mjs +3 -3
- package/package.json +1 -1
- /package/dist/{chunk-m19cf9kc.js.map → chunk-fhz6y2tn.js.map} +0 -0
package/dist/agent-helpers.js
CHANGED
|
@@ -343,7 +343,7 @@ function resolveWhisperBackend() {
|
|
|
343
343
|
function codexAuthFilePath() {
|
|
344
344
|
return process.env.NEGOTIUM_CODEX_AUTH_FILE || join(process.env.CODEX_HOME || join(homedir(), ".codex"), "auth.json");
|
|
345
345
|
}
|
|
346
|
-
var HOME, PROJECT_ROOT, 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.3.
|
|
346
|
+
var HOME, PROJECT_ROOT, 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.3.1", BROWSER_RS_MIN_SECURE_VERSION = "0.2.1", BROWSER_RS_VERSION_PROBE_TIMEOUT_MS = 15000, SNIPPETS_API_URL, BROWSER_RS_BIN, BASH_RS_VERSION = "v0.1.7", BASH_RS_BIN, PLAYWRIGHT_MCP_BIN, TSX_BIN, TSX_LOADER, TSCONFIG_PATH, SESSION_COMM_SERVER, TASK_SERVER, DECISION_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, NODE_ID, 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-1", FALLBACK_AGENT, SESSION_AGENT, GATEWAY_AGENT, FALLBACK_MODEL, SESSION_MODEL, GATEWAY_MODEL, DEFAULT_TOPIC_EFFORT, FFMPEG_BIN, FFPROBE_BIN, PYTHON_BIN, FASTER_WHISPER_WRAPPER, WHISPER_MODEL, TESSERACT_BIN, PDFTOTEXT_BIN, WHISPER_BACKEND, MLX_WHISPER_BIN, WHISPER_MODEL_MLX, _envMaxTellDepth, MAX_TELL_DEPTH;
|
|
347
347
|
var init_config = __esm(() => {
|
|
348
348
|
init_config_helpers();
|
|
349
349
|
init_logger();
|
|
@@ -437,6 +437,10 @@ var init_config = __esm(() => {
|
|
|
437
437
|
FALLBACK_MODEL = envText("FALLBACK_MODEL") ?? envText("DEFAULT_MODEL");
|
|
438
438
|
SESSION_MODEL = resolveModelEnv("SESSION_MODEL", SESSION_AGENT);
|
|
439
439
|
GATEWAY_MODEL = resolveModelEnv("GATEWAY_MODEL", GATEWAY_AGENT);
|
|
440
|
+
DEFAULT_TOPIC_EFFORT = (() => {
|
|
441
|
+
const raw = envText("NEGOTIUM_DEFAULT_EFFORT")?.toLowerCase();
|
|
442
|
+
return raw && EFFORT_VALUES.includes(raw) ? raw : "medium";
|
|
443
|
+
})();
|
|
440
444
|
FFMPEG_BIN = envText("FFMPEG_BIN");
|
|
441
445
|
FFPROBE_BIN = envText("FFPROBE_BIN");
|
|
442
446
|
PYTHON_BIN = envText("PYTHON_BIN") ?? "python3";
|
|
@@ -537,7 +541,8 @@ function hostedMcpCacheIdentity(surface, ctx) {
|
|
|
537
541
|
case "skills":
|
|
538
542
|
semanticContext = {
|
|
539
543
|
userId: ctx.userId,
|
|
540
|
-
topicId: ctx.wikiTopicId ?? ctx.topicId ?? null
|
|
544
|
+
topicId: ctx.wikiTopicId ?? ctx.topicId ?? null,
|
|
545
|
+
memoryKey: ctx.wikiMemoryKey ?? null
|
|
541
546
|
};
|
|
542
547
|
break;
|
|
543
548
|
case "vault":
|
|
@@ -924,6 +929,7 @@ function buildBuiltinMcpServer(surface, ctx, stdio) {
|
|
|
924
929
|
...ctx.topicId ? { topicId: ctx.topicId } : {},
|
|
925
930
|
...ctx.queryId ? { queryId: ctx.queryId } : {},
|
|
926
931
|
...ctx.wikiTopicId ? { wikiTopicId: ctx.wikiTopicId } : {},
|
|
932
|
+
...ctx.wikiMemoryKey ? { wikiMemoryKey: ctx.wikiMemoryKey } : {},
|
|
927
933
|
...ctx.subagentParentTopicId ? { subagentParentTopicId: ctx.subagentParentTopicId } : {},
|
|
928
934
|
...ctx.threadRootId ? { threadRootId: ctx.threadRootId } : {},
|
|
929
935
|
cwd: ctx.cwd ?? (ctx.topicId ? resolveTopicWorkspaceDir(ctx.topicId) : process.cwd()),
|
|
@@ -1073,6 +1079,7 @@ function getForumMcpServers(opts) {
|
|
|
1073
1079
|
subagentParentTopicId,
|
|
1074
1080
|
queryId,
|
|
1075
1081
|
wikiTopicId,
|
|
1082
|
+
wikiMemoryKey,
|
|
1076
1083
|
agent,
|
|
1077
1084
|
cwd,
|
|
1078
1085
|
model,
|
|
@@ -1106,6 +1113,7 @@ function getForumMcpServers(opts) {
|
|
|
1106
1113
|
subagentParentTopicId,
|
|
1107
1114
|
queryId,
|
|
1108
1115
|
wikiTopicId,
|
|
1116
|
+
wikiMemoryKey,
|
|
1109
1117
|
agent,
|
|
1110
1118
|
cwd,
|
|
1111
1119
|
model,
|
|
@@ -1202,6 +1210,7 @@ function getMcpServersForQuery(opts) {
|
|
|
1202
1210
|
subagentParentTopicId: opts.subagentParentTopicId,
|
|
1203
1211
|
queryId: opts.queryId,
|
|
1204
1212
|
wikiTopicId: opts.wikiTopicId,
|
|
1213
|
+
wikiMemoryKey: opts.wikiMemoryKey,
|
|
1205
1214
|
agent: opts.agent,
|
|
1206
1215
|
cwd: opts.cwd,
|
|
1207
1216
|
model: opts.model,
|
|
@@ -1379,7 +1388,7 @@ var init_mcp_config = __esm(() => {
|
|
|
1379
1388
|
wiki: {
|
|
1380
1389
|
...commonRuntimeMcpPolicy("wiki"),
|
|
1381
1390
|
build(ctx) {
|
|
1382
|
-
const { userId, session, topicId, queryId, wikiTopicId, agent, peerBridge } = ctx;
|
|
1391
|
+
const { userId, session, topicId, queryId, wikiTopicId, wikiMemoryKey, agent, peerBridge } = ctx;
|
|
1383
1392
|
if (peerBridge) {
|
|
1384
1393
|
if (!topicId || !queryId)
|
|
1385
1394
|
return null;
|
|
@@ -1398,6 +1407,8 @@ var init_mcp_config = __esm(() => {
|
|
|
1398
1407
|
const resolvedWikiTopicId = wikiTopicId ?? topicId ?? (session !== "dm" ? session : undefined);
|
|
1399
1408
|
if (resolvedWikiTopicId)
|
|
1400
1409
|
args.push(`--topic-id=${resolvedWikiTopicId}`);
|
|
1410
|
+
if (wikiMemoryKey)
|
|
1411
|
+
args.push(`--memory-key=${wikiMemoryKey}`);
|
|
1401
1412
|
args.push("--surface=wiki");
|
|
1402
1413
|
return buildBuiltinMcpServer("wiki", { ...ctx, wikiTopicId: resolvedWikiTopicId }, () => buildStdioMcpServer(agent, WIKI_SERVER, args));
|
|
1403
1414
|
}
|
|
@@ -3061,7 +3072,7 @@ var init_codex = __esm(async () => {
|
|
|
3061
3072
|
});
|
|
3062
3073
|
|
|
3063
3074
|
// ../../packages/core/src/version.ts
|
|
3064
|
-
var NEGOTIUM_VERSION = "0.
|
|
3075
|
+
var NEGOTIUM_VERSION = "0.14.0";
|
|
3065
3076
|
|
|
3066
3077
|
// ../../packages/core/src/agents/codex-native-multi-agent.ts
|
|
3067
3078
|
import { spawn as spawn2 } from "child_process";
|
|
@@ -8664,6 +8675,7 @@ function createArchiverRuntime(host) {
|
|
|
8664
8675
|
session: `__archiver_${safeTopic}`,
|
|
8665
8676
|
sessionType: "forum",
|
|
8666
8677
|
topicId,
|
|
8678
|
+
wikiMemoryKey: topicTitle,
|
|
8667
8679
|
abortController: new AbortController,
|
|
8668
8680
|
model,
|
|
8669
8681
|
mcpEnabled: ["wiki"],
|
|
@@ -20062,6 +20074,33 @@ var defaultSelfConfigCore = createSelfConfigCore(defaultSelfConfigHost);
|
|
|
20062
20074
|
|
|
20063
20075
|
// ../../packages/core/src/agents/mcp-tools/self-config.ts
|
|
20064
20076
|
init_types();
|
|
20077
|
+
var SELF_CONFIG_CAPABILITIES = {
|
|
20078
|
+
model: ["get_model", "set_model"],
|
|
20079
|
+
agent: ["get_agent", "set_agent"],
|
|
20080
|
+
effort: ["get_effort", "set_effort"],
|
|
20081
|
+
schedules: ["schedule_self", "get_self_schedule", "update_self_schedule", "cancel_self_schedule"],
|
|
20082
|
+
"derived-topics": ["spawn_topic", "fork_topic"]
|
|
20083
|
+
};
|
|
20084
|
+
function expandCapabilitySelectors(selectors) {
|
|
20085
|
+
const names = new Set;
|
|
20086
|
+
for (const selector of selectors) {
|
|
20087
|
+
const group = SELF_CONFIG_CAPABILITIES[selector];
|
|
20088
|
+
if (group) {
|
|
20089
|
+
for (const name of group)
|
|
20090
|
+
names.add(name);
|
|
20091
|
+
continue;
|
|
20092
|
+
}
|
|
20093
|
+
names.add(selector);
|
|
20094
|
+
}
|
|
20095
|
+
return names;
|
|
20096
|
+
}
|
|
20097
|
+
function applySelfConfigCapabilityFilter(tools, filter) {
|
|
20098
|
+
if (!filter?.include && !filter?.exclude)
|
|
20099
|
+
return tools;
|
|
20100
|
+
const included = filter.include ? expandCapabilitySelectors(filter.include) : undefined;
|
|
20101
|
+
const excluded = filter.exclude ? expandCapabilitySelectors(filter.exclude) : undefined;
|
|
20102
|
+
return tools.filter((tool) => (!included || included.has(tool.name)) && !(excluded?.has(tool.name) ?? false));
|
|
20103
|
+
}
|
|
20065
20104
|
var AGENT_VALUES = SUPPORTED_AGENTS;
|
|
20066
20105
|
function mcpResult(result) {
|
|
20067
20106
|
return {
|
|
@@ -20080,11 +20119,12 @@ function createSelfConfigRuntime(options) {
|
|
|
20080
20119
|
const runtime = {
|
|
20081
20120
|
core,
|
|
20082
20121
|
mcpKey: core.product.mcpKey,
|
|
20083
|
-
|
|
20122
|
+
...options.capabilities ? { capabilities: options.capabilities } : {},
|
|
20123
|
+
createToolDefinitions: (ctx) => createSelfConfigToolDefinitionsForCore(core, ctx, options.capabilities)
|
|
20084
20124
|
};
|
|
20085
20125
|
return Object.freeze(runtime);
|
|
20086
20126
|
}
|
|
20087
|
-
function createSelfConfigToolDefinitionsForCore(core, ctx) {
|
|
20127
|
+
function createSelfConfigToolDefinitionsForCore(core, ctx, capabilities) {
|
|
20088
20128
|
const getCtx = contextGetter(ctx);
|
|
20089
20129
|
let derivedCount = 0;
|
|
20090
20130
|
const tools = [
|
|
@@ -20225,7 +20265,7 @@ function createSelfConfigToolDefinitionsForCore(core, ctx) {
|
|
|
20225
20265
|
}
|
|
20226
20266
|
});
|
|
20227
20267
|
}
|
|
20228
|
-
return tools;
|
|
20268
|
+
return applySelfConfigCapabilityFilter(tools, capabilities);
|
|
20229
20269
|
}
|
|
20230
20270
|
|
|
20231
20271
|
// ../../packages/core/src/agents/public-helpers.ts
|
|
@@ -20294,10 +20334,137 @@ var otiumVisualToolDefinitions = [
|
|
|
20294
20334
|
await init_task_events();
|
|
20295
20335
|
init_tool_format();
|
|
20296
20336
|
await init_topic_cleanup();
|
|
20337
|
+
|
|
20338
|
+
// ../../packages/core/src/agents/topic-defaults.ts
|
|
20339
|
+
init_model_catalog();
|
|
20340
|
+
await init_registry();
|
|
20341
|
+
init_config();
|
|
20342
|
+
init_logger();
|
|
20343
|
+
|
|
20344
|
+
// ../../packages/core/src/storage/topic-default-assignments.ts
|
|
20345
|
+
await init_forum_db();
|
|
20346
|
+
await init_storage_host();
|
|
20347
|
+
init_wiki_summary_names();
|
|
20348
|
+
registerStorageSchemaInitializer((database) => {
|
|
20349
|
+
database.exec(`
|
|
20350
|
+
CREATE TABLE IF NOT EXISTS topic_default_assignments (
|
|
20351
|
+
memory_key TEXT PRIMARY KEY,
|
|
20352
|
+
model TEXT NOT NULL,
|
|
20353
|
+
effort TEXT,
|
|
20354
|
+
reason TEXT,
|
|
20355
|
+
assign_count INTEGER NOT NULL DEFAULT 1,
|
|
20356
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
20357
|
+
)
|
|
20358
|
+
`);
|
|
20359
|
+
}, 31);
|
|
20360
|
+
function normalizeMemoryKey(memoryKey) {
|
|
20361
|
+
const raw = memoryKey.trim().replace(/^topic\//, "").replace(/\.md$/i, "").trim();
|
|
20362
|
+
if (!raw)
|
|
20363
|
+
return "";
|
|
20364
|
+
return wikiSummarySlug(raw).toLowerCase();
|
|
20365
|
+
}
|
|
20366
|
+
function rowToAssignment(row) {
|
|
20367
|
+
return {
|
|
20368
|
+
memoryKey: row.memory_key,
|
|
20369
|
+
model: row.model,
|
|
20370
|
+
effort: row.effort ?? undefined,
|
|
20371
|
+
reason: row.reason ?? undefined,
|
|
20372
|
+
assignCount: row.assign_count,
|
|
20373
|
+
updatedAt: row.updated_at
|
|
20374
|
+
};
|
|
20375
|
+
}
|
|
20376
|
+
var SELECT_COLUMNS = "memory_key, model, effort, reason, assign_count, updated_at";
|
|
20377
|
+
function getTopicDefaultAssignment(memoryKey) {
|
|
20378
|
+
const key = normalizeMemoryKey(memoryKey);
|
|
20379
|
+
if (!key)
|
|
20380
|
+
return null;
|
|
20381
|
+
const row = db.query(`SELECT ${SELECT_COLUMNS} FROM topic_default_assignments WHERE memory_key = ?`).get(key);
|
|
20382
|
+
return row ? rowToAssignment(row) : null;
|
|
20383
|
+
}
|
|
20384
|
+
function upsertTopicDefaultAssignment(input) {
|
|
20385
|
+
const key = normalizeMemoryKey(input.memoryKey);
|
|
20386
|
+
const model = input.model.trim();
|
|
20387
|
+
if (!key || !model)
|
|
20388
|
+
return null;
|
|
20389
|
+
db.query(`INSERT INTO topic_default_assignments (memory_key, model, effort, reason, assign_count, updated_at)
|
|
20390
|
+
VALUES (?, ?, ?, ?, 1, ?)
|
|
20391
|
+
ON CONFLICT(memory_key) DO UPDATE SET
|
|
20392
|
+
model = excluded.model,
|
|
20393
|
+
effort = excluded.effort,
|
|
20394
|
+
reason = excluded.reason,
|
|
20395
|
+
assign_count = topic_default_assignments.assign_count + 1,
|
|
20396
|
+
updated_at = excluded.updated_at`).run(key, model, input.effort?.trim() || null, input.reason?.trim() || null, new Date().toISOString());
|
|
20397
|
+
return getTopicDefaultAssignment(key);
|
|
20398
|
+
}
|
|
20399
|
+
|
|
20400
|
+
// ../../packages/core/src/agents/topic-defaults.ts
|
|
20401
|
+
function validateAssignedDefaults(model, effort) {
|
|
20402
|
+
const candidate = canonicalModelId(model.trim());
|
|
20403
|
+
if (!candidate)
|
|
20404
|
+
return null;
|
|
20405
|
+
const agent = modelOwner(candidate);
|
|
20406
|
+
if (!agent)
|
|
20407
|
+
return null;
|
|
20408
|
+
let registry;
|
|
20409
|
+
try {
|
|
20410
|
+
registry = getRegistry(agent);
|
|
20411
|
+
} catch {
|
|
20412
|
+
return null;
|
|
20413
|
+
}
|
|
20414
|
+
if (!registry?.validateModel(candidate))
|
|
20415
|
+
return null;
|
|
20416
|
+
const requestedEffort = effort?.trim().toLowerCase();
|
|
20417
|
+
const resolvedEffort = requestedEffort && registry.validateEffort(requestedEffort) ? requestedEffort : registry.validateEffort(DEFAULT_TOPIC_EFFORT) ? DEFAULT_TOPIC_EFFORT : undefined;
|
|
20418
|
+
if (!resolvedEffort)
|
|
20419
|
+
return null;
|
|
20420
|
+
return { agent, model: candidate, effort: resolvedEffort };
|
|
20421
|
+
}
|
|
20422
|
+
function resolveAssignedTopicDefaults(memoryKey) {
|
|
20423
|
+
const key = memoryKey ? normalizeMemoryKey(memoryKey) : "";
|
|
20424
|
+
if (!key)
|
|
20425
|
+
return null;
|
|
20426
|
+
let stored;
|
|
20427
|
+
try {
|
|
20428
|
+
stored = getTopicDefaultAssignment(key);
|
|
20429
|
+
} catch (err2) {
|
|
20430
|
+
logger.warn({ err: err2, memoryKey: key }, "topic-defaults: assignment lookup failed");
|
|
20431
|
+
return null;
|
|
20432
|
+
}
|
|
20433
|
+
if (!stored)
|
|
20434
|
+
return null;
|
|
20435
|
+
const validated = validateAssignedDefaults(stored.model, stored.effort);
|
|
20436
|
+
if (!validated) {
|
|
20437
|
+
logger.info({ memoryKey: key, model: stored.model, effort: stored.effort }, "topic-defaults: stored assignment is stale - falling back to node defaults");
|
|
20438
|
+
return null;
|
|
20439
|
+
}
|
|
20440
|
+
return {
|
|
20441
|
+
memoryKey: key,
|
|
20442
|
+
...validated,
|
|
20443
|
+
...stored.reason ? { reason: stored.reason } : {}
|
|
20444
|
+
};
|
|
20445
|
+
}
|
|
20446
|
+
function assignTopicDefaults(input) {
|
|
20447
|
+
const validated = validateAssignedDefaults(input.model, input.effort);
|
|
20448
|
+
if (!validated)
|
|
20449
|
+
return null;
|
|
20450
|
+
try {
|
|
20451
|
+
const stored = upsertTopicDefaultAssignment({
|
|
20452
|
+
memoryKey: input.memoryKey,
|
|
20453
|
+
model: validated.model,
|
|
20454
|
+
effort: validated.effort,
|
|
20455
|
+
...input.reason ? { reason: input.reason } : {}
|
|
20456
|
+
});
|
|
20457
|
+
return stored ? { ...validated, assignCount: stored.assignCount } : null;
|
|
20458
|
+
} catch (err2) {
|
|
20459
|
+
logger.warn({ err: err2, memoryKey: input.memoryKey }, "topic-defaults: assignment write failed");
|
|
20460
|
+
return null;
|
|
20461
|
+
}
|
|
20462
|
+
}
|
|
20297
20463
|
export {
|
|
20298
20464
|
withTaskSnapshots,
|
|
20299
20465
|
withCodexSpawnSerial,
|
|
20300
20466
|
visualToolDefinitions,
|
|
20467
|
+
validateAssignedDefaults,
|
|
20301
20468
|
unregisterOwnedCodexPids,
|
|
20302
20469
|
summarizeToolInput,
|
|
20303
20470
|
summarizeShellCommand,
|
|
@@ -20309,6 +20476,7 @@ export {
|
|
|
20309
20476
|
showHtmlTool,
|
|
20310
20477
|
rotateTopicLogs,
|
|
20311
20478
|
resolveTaskEventScope,
|
|
20479
|
+
resolveAssignedTopicDefaults,
|
|
20312
20480
|
registerOwnedCodexPids,
|
|
20313
20481
|
purgeTopicLogs,
|
|
20314
20482
|
otiumVisualToolDefinitions,
|
|
@@ -20337,11 +20505,14 @@ export {
|
|
|
20337
20505
|
checkAgentModelAuth,
|
|
20338
20506
|
checkAgentAuth,
|
|
20339
20507
|
buildNumberedDiffSummary,
|
|
20508
|
+
assignTopicDefaults,
|
|
20340
20509
|
archiveActiveTopicForMemory,
|
|
20510
|
+
applySelfConfigCapabilityFilter,
|
|
20341
20511
|
acquireCodexSpawnLock,
|
|
20342
20512
|
VISUALS_MCP_KEY,
|
|
20513
|
+
SELF_CONFIG_CAPABILITIES,
|
|
20343
20514
|
MIN_MEMORY_ARCHIVE_EXCHANGES,
|
|
20344
20515
|
DEFAULT_SELF_CONFIG_PRODUCT
|
|
20345
20516
|
};
|
|
20346
20517
|
|
|
20347
|
-
//# debugId=
|
|
20518
|
+
//# debugId=B45278EF209D769B64756E2164756E21
|