negotium 0.5.11 → 0.5.12

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 +50 -11
  2. package/dist/agent-helpers.js.map +9 -8
  3. package/dist/background-bash.js +7 -3
  4. package/dist/background-bash.js.map +3 -3
  5. package/dist/browser-runtime.js +7 -3
  6. package/dist/browser-runtime.js.map +3 -3
  7. package/dist/{chunk-n9g0wk3p.js → chunk-qgm6m2hc.js} +7 -3
  8. package/dist/{chunk-n9g0wk3p.js.map → chunk-qgm6m2hc.js.map} +3 -3
  9. package/dist/hosted-agent.js +8 -4
  10. package/dist/hosted-agent.js.map +4 -4
  11. package/dist/main.js +442 -216
  12. package/dist/main.js.map +20 -19
  13. package/dist/mcp-factories.js +50 -11
  14. package/dist/mcp-factories.js.map +9 -8
  15. package/dist/media.js +7 -3
  16. package/dist/media.js.map +3 -3
  17. package/dist/prompts.js +7 -3
  18. package/dist/prompts.js.map +3 -3
  19. package/dist/query-runtime.js +7 -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 +6 -0
  25. package/dist/runtime/src/mcp/session-comm/default-host.ts +35 -23
  26. package/dist/runtime/src/mcp/session-comm/server.ts +24 -20
  27. package/dist/runtime/src/mcp-runtime-host.ts +1 -0
  28. package/dist/runtime/src/platform/config.ts +11 -2
  29. package/dist/runtime/src/platform/lifecycle.ts +3 -0
  30. package/dist/runtime/src/query/session-inbox-cleanup.ts +2 -1
  31. package/dist/runtime/src/query/session-inbox-path.ts +1 -1
  32. package/dist/runtime/src/runtime/bashrs-completions.ts +13 -9
  33. package/dist/runtime/src/runtime/inbox.ts +175 -106
  34. package/dist/runtime/src/runtime/turn-runner.ts +10 -4
  35. package/dist/runtime/src/storage/session-inbox.ts +157 -0
  36. package/dist/runtime/src/version.ts +1 -1
  37. package/dist/runtime-helpers.js +64 -31
  38. package/dist/runtime-helpers.js.map +7 -7
  39. package/dist/types/packages/core/src/query/session-inbox-path.d.ts +1 -1
  40. package/dist/types/packages/core/src/storage/session-inbox.d.ts +36 -0
  41. package/dist/types/packages/core/src/version.d.ts +1 -1
  42. package/dist/vault.js +7 -3
  43. package/dist/vault.js.map +3 -3
  44. package/package.json +1 -1
@@ -175,6 +175,11 @@ function resolveAgentEnv(envKey, fallback, legacyEnvKey) {
175
175
  const value = envText(envKey) ?? (legacyEnvKey ? envText(legacyEnvKey) : undefined);
176
176
  return isAgentKind(value) ? value : fallback;
177
177
  }
178
+ function resolveStateDir() {
179
+ const configured = envText("NEGOTIUM_STATE_DIR");
180
+ if (false) {}
181
+ return configured ? resolve2(configured) : resolve2(HOME, ".negotium");
182
+ }
178
183
  function resolveProjectRoot() {
179
184
  const moduleDir = dirname(fileURLToPath(import.meta.url));
180
185
  const packagedRuntime = resolve2(moduleDir, "runtime");
@@ -338,15 +343,14 @@ function resolveWhisperBackend() {
338
343
  function codexAuthFilePath() {
339
344
  return process.env.NEGOTIUM_CODEX_AUTH_FILE || join(process.env.CODEX_HOME || join(homedir(), ".codex"), "auth.json");
340
345
  }
341
- 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.23", BROWSER_RS_MIN_SECURE_VERSION = "0.1.15", 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", 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, WHISPER_BACKEND, MLX_WHISPER_BIN, WHISPER_MODEL_MLX, _envMaxTellDepth, MAX_TELL_DEPTH;
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.1.23", BROWSER_RS_MIN_SECURE_VERSION = "0.1.15", 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", 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, WHISPER_BACKEND, MLX_WHISPER_BIN, WHISPER_MODEL_MLX, _envMaxTellDepth, MAX_TELL_DEPTH;
342
347
  var init_config = __esm(() => {
343
348
  init_config_helpers();
344
349
  init_logger();
345
350
  init_types();
346
351
  HOME = homedir();
347
352
  PROJECT_ROOT = resolveProjectRoot();
348
- STATE_DIR_ENV = envText("NEGOTIUM_STATE_DIR");
349
- STATE_DIR = STATE_DIR_ENV ? resolve2(STATE_DIR_ENV) : resolve2(HOME, ".negotium");
353
+ STATE_DIR = resolveStateDir();
350
354
  WORKSPACE_DIR = resolveLocalStateDir("NEGOTIUM_WORKSPACE_DIR", "workspace");
351
355
  TOPIC_WORKSPACE_DIR = resolve2(WORKSPACE_DIR, "topics");
352
356
  SHARED_WIKI_DIR = resolve2(WORKSPACE_DIR, "wiki");
@@ -2439,7 +2443,7 @@ var init_claude_registry = __esm(() => {
2439
2443
  });
2440
2444
 
2441
2445
  // ../../packages/core/src/version.ts
2442
- var NEGOTIUM_VERSION = "0.5.11";
2446
+ var NEGOTIUM_VERSION = "0.5.12";
2443
2447
 
2444
2448
  // ../../packages/core/src/agents/codex-native-multi-agent.ts
2445
2449
  import { spawn as spawn2 } from "child_process";
@@ -13304,6 +13308,35 @@ var init_session_inbox_path = __esm(() => {
13304
13308
  init_config();
13305
13309
  });
13306
13310
 
13311
+ // ../../packages/core/src/storage/session-inbox.ts
13312
+ function deleteSessionInboxForTopic(topicId) {
13313
+ return Number(db.run("DELETE FROM session_inbox WHERE topic_id = ?", [topicId]).changes ?? 0);
13314
+ }
13315
+ var init_session_inbox = __esm(async () => {
13316
+ await init_forum_db();
13317
+ await init_storage_host();
13318
+ registerStorageSchemaInitializer((database) => {
13319
+ database.exec(`
13320
+ CREATE TABLE IF NOT EXISTS session_inbox (
13321
+ sequence INTEGER PRIMARY KEY AUTOINCREMENT,
13322
+ id TEXT NOT NULL UNIQUE,
13323
+ user_id TEXT NOT NULL,
13324
+ topic_id TEXT NOT NULL,
13325
+ payload TEXT NOT NULL,
13326
+ status TEXT NOT NULL DEFAULT 'pending'
13327
+ CHECK (status IN ('pending', 'processing')),
13328
+ claimed_by TEXT,
13329
+ claimed_at INTEGER,
13330
+ created_at INTEGER NOT NULL
13331
+ );
13332
+ CREATE INDEX IF NOT EXISTS idx_session_inbox_ready
13333
+ ON session_inbox(status, user_id, topic_id, sequence);
13334
+ CREATE INDEX IF NOT EXISTS idx_session_inbox_topic
13335
+ ON session_inbox(topic_id);
13336
+ `);
13337
+ }, 35);
13338
+ });
13339
+
13307
13340
  // ../../packages/core/src/query/session-inbox-cleanup.ts
13308
13341
  import { unlinkSync as unlinkSync14 } from "fs";
13309
13342
  import { basename as basename3, join as join23 } from "path";
@@ -13317,7 +13350,7 @@ function cleanupSessionInboxFiles(userId, topicId, legacyTopicTitle) {
13317
13350
  candidates.add(`${legacyBase}${suffix}`);
13318
13351
  }
13319
13352
  }
13320
- let deleted = 0;
13353
+ let deleted = deleteSessionInboxForTopic(topicId);
13321
13354
  for (const path of candidates) {
13322
13355
  try {
13323
13356
  unlinkSync14(path);
@@ -13330,10 +13363,11 @@ function cleanupSessionInboxFiles(userId, topicId, legacyTopicTitle) {
13330
13363
  }
13331
13364
  return deleted;
13332
13365
  }
13333
- var init_session_inbox_cleanup = __esm(() => {
13366
+ var init_session_inbox_cleanup = __esm(async () => {
13334
13367
  init_config();
13335
13368
  init_logger();
13336
13369
  init_session_inbox_path();
13370
+ await init_session_inbox();
13337
13371
  });
13338
13372
 
13339
13373
  // ../../packages/core/src/query/state.ts
@@ -14513,7 +14547,7 @@ var init_lifecycle = __esm(async () => {
14513
14547
  init_logger();
14514
14548
  await init_manager2();
14515
14549
  await init_active_rooms();
14516
- init_session_inbox_cleanup();
14550
+ await init_session_inbox_cleanup();
14517
14551
  init_state();
14518
14552
  await init_ask_callbacks();
14519
14553
  init_file_hooks();
@@ -17194,7 +17228,7 @@ function triggerTopicAiTurn(topicId, userId, prompt, agentType, opts) {
17194
17228
  if (!opts?.silent && !opts?.hideInjectMessage) {
17195
17229
  const now = new Date().toISOString();
17196
17230
  const injectMsg = {
17197
- id: `tell-${randomUUID16()}`,
17231
+ id: opts?.requestId ? `tell-${opts.requestId}` : `tell-${randomUUID16()}`,
17198
17232
  topicId,
17199
17233
  authorId: opts?.injectAuthorId ?? userId,
17200
17234
  sourceAdapter: opts?.injectSourceAdapter,
@@ -17206,8 +17240,13 @@ function triggerTopicAiTurn(topicId, userId, prompt, agentType, opts) {
17206
17240
  model: execution.model,
17207
17241
  createdAt: now
17208
17242
  };
17209
- appendApiMessage(injectMsg);
17210
- WsHub.get().broadcastMessage(topicId, injectMsg);
17243
+ try {
17244
+ appendApiMessage(injectMsg);
17245
+ WsHub.get().broadcastMessage(topicId, injectMsg);
17246
+ } catch (error) {
17247
+ if (!opts?.requestId || !getApiMessage(topicId, injectMsg.id))
17248
+ throw error;
17249
+ }
17211
17250
  }
17212
17251
  return startAiTurn({
17213
17252
  topic: topicCfg,
@@ -19180,4 +19219,4 @@ export {
19180
19219
  DEFAULT_SELF_CONFIG_PRODUCT
19181
19220
  };
19182
19221
 
19183
- //# debugId=45ECD1D1620CDA8E64756E2164756E21
19222
+ //# debugId=751F37A04AE5257A64756E2164756E21