negotium 0.1.39 → 0.1.41

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/main.js CHANGED
@@ -4012,7 +4012,7 @@ var exports_version = {};
4012
4012
  __export(exports_version, {
4013
4013
  NEGOTIUM_VERSION: () => NEGOTIUM_VERSION
4014
4014
  });
4015
- var NEGOTIUM_VERSION = "0.1.39";
4015
+ var NEGOTIUM_VERSION = "0.1.41";
4016
4016
 
4017
4017
  // ../../packages/core/src/agents/codex-native-multi-agent.ts
4018
4018
  import { spawn as spawn3 } from "child_process";
@@ -7359,15 +7359,18 @@ function beginRuntimeTopicMaintenance(topicId, options = {}) {
7359
7359
  var TOPIC_MAINTENANCE_STALE_MS = 30000, TOPIC_MAINTENANCE_HEARTBEAT_MS = 1000;
7360
7360
  var init_runtime_topic_state = __esm(async () => {
7361
7361
  await init_forum_db();
7362
- db.exec(`
7363
- CREATE TABLE IF NOT EXISTS runtime_topic_state (
7364
- topic_id TEXT PRIMARY KEY,
7365
- epoch INTEGER NOT NULL DEFAULT 0,
7366
- maintenance INTEGER NOT NULL DEFAULT 0 CHECK (maintenance IN (0, 1)),
7367
- maintenance_owner TEXT,
7368
- heartbeat_at INTEGER
7369
- )
7370
- `);
7362
+ await init_storage_host();
7363
+ registerStorageSchemaInitializer((database) => {
7364
+ database.exec(`
7365
+ CREATE TABLE IF NOT EXISTS runtime_topic_state (
7366
+ topic_id TEXT PRIMARY KEY,
7367
+ epoch INTEGER NOT NULL DEFAULT 0,
7368
+ maintenance INTEGER NOT NULL DEFAULT 0 CHECK (maintenance IN (0, 1)),
7369
+ maintenance_owner TEXT,
7370
+ heartbeat_at INTEGER
7371
+ )
7372
+ `);
7373
+ }, 32);
7371
7374
  });
7372
7375
 
7373
7376
  // ../../packages/core/src/storage/runtime-leases.ts
@@ -7455,20 +7458,23 @@ var RUNTIME_INSTANCE_ID, TURN_LEASE_STALE_MS = 1e4;
7455
7458
  var init_runtime_leases = __esm(async () => {
7456
7459
  await init_forum_db();
7457
7460
  await init_runtime_topic_state();
7461
+ await init_storage_host();
7458
7462
  RUNTIME_INSTANCE_ID = `${process.pid}-${randomUUID5()}`;
7459
- db.exec(`
7460
- CREATE TABLE IF NOT EXISTS runtime_turn_leases (
7461
- topic_id TEXT PRIMARY KEY,
7462
- query_id TEXT NOT NULL UNIQUE,
7463
- owner_id TEXT NOT NULL,
7464
- origin TEXT NOT NULL,
7465
- started_at INTEGER NOT NULL,
7466
- heartbeat_at INTEGER NOT NULL,
7467
- abort_requested INTEGER NOT NULL DEFAULT 0 CHECK (abort_requested IN (0, 1)),
7468
- abort_reason TEXT CHECK (abort_reason IS NULL OR abort_reason IN ('internal', 'external'))
7469
- )
7470
- `);
7471
- db.exec("CREATE INDEX IF NOT EXISTS idx_runtime_turn_leases_heartbeat ON runtime_turn_leases(heartbeat_at)");
7463
+ registerStorageSchemaInitializer((database) => {
7464
+ database.exec(`
7465
+ CREATE TABLE IF NOT EXISTS runtime_turn_leases (
7466
+ topic_id TEXT PRIMARY KEY,
7467
+ query_id TEXT NOT NULL UNIQUE,
7468
+ owner_id TEXT NOT NULL,
7469
+ origin TEXT NOT NULL,
7470
+ started_at INTEGER NOT NULL,
7471
+ heartbeat_at INTEGER NOT NULL,
7472
+ abort_requested INTEGER NOT NULL DEFAULT 0 CHECK (abort_requested IN (0, 1)),
7473
+ abort_reason TEXT CHECK (abort_reason IS NULL OR abort_reason IN ('internal', 'external'))
7474
+ );
7475
+ CREATE INDEX IF NOT EXISTS idx_runtime_turn_leases_heartbeat ON runtime_turn_leases(heartbeat_at);
7476
+ `);
7477
+ }, 33);
7472
7478
  });
7473
7479
 
7474
7480
  // ../../packages/core/src/storage/runtime-process-leases.ts
@@ -7614,16 +7620,19 @@ var PROCESS_LEASE_STALE_MS = 5000, PROCESS_LEASE_HEARTBEAT_MS = 1000;
7614
7620
  var init_runtime_process_leases = __esm(async () => {
7615
7621
  await init_forum_db();
7616
7622
  await init_runtime_leases();
7617
- db.exec(`
7618
- CREATE TABLE IF NOT EXISTS runtime_process_leases (
7619
- role TEXT PRIMARY KEY,
7620
- owner_id TEXT NOT NULL UNIQUE,
7621
- pid INTEGER NOT NULL,
7622
- started_at INTEGER NOT NULL,
7623
- heartbeat_at INTEGER NOT NULL
7624
- )
7625
- `);
7626
- db.exec("CREATE INDEX IF NOT EXISTS idx_runtime_process_leases_heartbeat ON runtime_process_leases(heartbeat_at)");
7623
+ await init_storage_host();
7624
+ registerStorageSchemaInitializer((database) => {
7625
+ database.exec(`
7626
+ CREATE TABLE IF NOT EXISTS runtime_process_leases (
7627
+ role TEXT PRIMARY KEY,
7628
+ owner_id TEXT NOT NULL UNIQUE,
7629
+ pid INTEGER NOT NULL,
7630
+ started_at INTEGER NOT NULL,
7631
+ heartbeat_at INTEGER NOT NULL
7632
+ );
7633
+ CREATE INDEX IF NOT EXISTS idx_runtime_process_leases_heartbeat ON runtime_process_leases(heartbeat_at);
7634
+ `);
7635
+ }, 34);
7627
7636
  });
7628
7637
 
7629
7638
  // ../../packages/core/src/agents/mcp-tools/ask-user.ts
@@ -7941,7 +7950,7 @@ function cancelPendingAskUserQuestions(topicId, queryId) {
7941
7950
  function createAskUserToolDefinition(ctx) {
7942
7951
  return defaultAskUserRuntime.createToolDefinition(ctx);
7943
7952
  }
7944
- var MAX_QUESTION_CHARS = 2000, MAX_CHOICE_LABEL_CHARS = 128, MAX_CHOICE_DESCRIPTION_CHARS = 500, MAX_CHOICES = 12, MAX_IDEMPOTENCY_KEY_CHARS = 200, ASK_GATE_OWNER_ID, ASK_GATE_LEASE_ROLE_PREFIX = "ask-user-gate:", defaultAskUserRuntime;
7953
+ var MAX_QUESTION_CHARS = 2000, MAX_CHOICE_LABEL_CHARS = 128, MAX_CHOICE_DESCRIPTION_CHARS = 500, MAX_CHOICES = 12, MAX_IDEMPOTENCY_KEY_CHARS = 200, ASK_GATE_OWNER_ID, ASK_GATE_LEASE_ROLE_PREFIX = "ask-user-gate:", defaultAskUserDurabilityHost, defaultAskUserRuntime;
7945
7954
  var init_ask_user = __esm(async () => {
7946
7955
  init_common();
7947
7956
  await init_bus();
@@ -7951,6 +7960,21 @@ var init_ask_user = __esm(async () => {
7951
7960
  await init_ask_user_gates();
7952
7961
  await init_runtime_process_leases();
7953
7962
  ASK_GATE_OWNER_ID = `ask-user-${process.pid}-${randomUUID6()}`;
7963
+ defaultAskUserDurabilityHost = {
7964
+ gates: {
7965
+ prepare: prepareAskUserGate,
7966
+ claimAndSelect: claimAskUserGateAndSelect,
7967
+ cancel: cancelAskUserGate,
7968
+ quarantine: quarantineAskUserGate,
7969
+ quarantineForeign: quarantineForeignAskUserGates
7970
+ },
7971
+ processLeases: {
7972
+ acquire: (role, ownerId) => acquireRuntimeProcessLease(role, { ownerId }),
7973
+ list: listRuntimeProcessLeases,
7974
+ isAlive: isRuntimeProcessLeaseAlive,
7975
+ removeDead: removeDeadRuntimeProcessLeases
7976
+ }
7977
+ };
7954
7978
  defaultAskUserRuntime = createAskUserRuntime({
7955
7979
  messaging: {
7956
7980
  persistence: {
@@ -7969,21 +7993,7 @@ var init_ask_user = __esm(async () => {
7969
7993
  getTopic,
7970
7994
  getConfig: getApiTopicConfig
7971
7995
  },
7972
- durability: {
7973
- gates: {
7974
- prepare: prepareAskUserGate,
7975
- claimAndSelect: claimAskUserGateAndSelect,
7976
- cancel: cancelAskUserGate,
7977
- quarantine: quarantineAskUserGate,
7978
- quarantineForeign: quarantineForeignAskUserGates
7979
- },
7980
- processLeases: {
7981
- acquire: (role, ownerId) => acquireRuntimeProcessLease(role, { ownerId }),
7982
- list: listRuntimeProcessLeases,
7983
- isAlive: isRuntimeProcessLeaseAlive,
7984
- removeDead: removeDeadRuntimeProcessLeases
7985
- }
7986
- },
7996
+ durability: defaultAskUserDurabilityHost,
7987
7997
  runtime: {
7988
7998
  ownerId: ASK_GATE_OWNER_ID,
7989
7999
  createId: randomUUID6,
@@ -9993,7 +10003,8 @@ function buildRuntimeToolSection(opts, extensions) {
9993
10003
  currentModel,
9994
10004
  currentEffort,
9995
10005
  subagentParentTitle,
9996
- subagentReportMode = "auto"
10006
+ subagentReportMode = "auto",
10007
+ scheduleSelf = true
9997
10008
  } = opts;
9998
10009
  const runtimeNamespace = "mcp__runtime";
9999
10010
  const taskNamespace = "mcp__task";
@@ -10041,7 +10052,7 @@ function buildRuntimeToolSection(opts, extensions) {
10041
10052
  askUserToolLine,
10042
10053
  'Do not use provider built-in "AskUserQuestion"; it is disabled or unsupported in this headless chat runtime. Use the runtime ask_user_question tool instead.'
10043
10054
  ],
10044
- scheduleSelfToolLine,
10055
+ ...scheduleSelf ? [scheduleSelfToolLine] : [],
10045
10056
  ...visualTools && extensions.visualDesignGuide ? ["", extensions.visualDesignGuide] : [],
10046
10057
  ...extensions.render("after-runtime-tools"),
10047
10058
  "",
@@ -10112,6 +10123,7 @@ function buildRuntimeToolSection(opts, extensions) {
10112
10123
  }
10113
10124
  function createPromptBuilders(host = {}) {
10114
10125
  const loadTemplate = host.loadTemplate;
10126
+ const scheduleSelf = host.scheduleSelf ?? true;
10115
10127
  const sections = (host.extraSections ?? []).map((section) => {
10116
10128
  const render = section.render;
10117
10129
  const snapshot = {
@@ -10161,7 +10173,8 @@ function createPromptBuilders(host = {}) {
10161
10173
  currentModel: opts.currentModel,
10162
10174
  currentEffort: opts.currentEffort,
10163
10175
  subagentParentTitle: opts.subagentParentTitle,
10164
- subagentReportMode: opts.subagentReportMode
10176
+ subagentReportMode: opts.subagentReportMode,
10177
+ scheduleSelf
10165
10178
  }, {
10166
10179
  render,
10167
10180
  visualDesignGuide: template({
@@ -11575,7 +11588,8 @@ function listBackgroundSessionsForUser(userId) {
11575
11588
  const providedCronTopicIds = new Set(provided.filter((session) => session.kind === "cron").map((session) => session.topicId).filter((topicId) => Boolean(topicId)));
11576
11589
  const cron = listRuntimeTurnLeases().filter((lease) => lease.origin.startsWith("cron:")).flatMap((lease) => {
11577
11590
  const topic = getTopic(lease.topicId);
11578
- if (!topic || !isParticipant(topic, userId) || providedCronTopicIds.has(lease.topicId)) {
11591
+ const isParticipant = topic?.participants.some((participant) => participant.userId === userId);
11592
+ if (!topic || !isParticipant || providedCronTopicIds.has(lease.topicId)) {
11579
11593
  return [];
11580
11594
  }
11581
11595
  const progress = backgroundSessionProgress(lease.topicId, lease.queryId);
@@ -11603,7 +11617,6 @@ var init_background_sessions = __esm(async () => {
11603
11617
  await init_api_topics();
11604
11618
  await init_runtime_events();
11605
11619
  await init_runtime_leases();
11606
- await init_derive();
11607
11620
  init_background_session_policy();
11608
11621
  providers = new Set;
11609
11622
  transientSessions = new Map;
@@ -37924,4 +37937,4 @@ switch (command) {
37924
37937
  }
37925
37938
  }
37926
37939
 
37927
- //# debugId=CD7DF11C6395321764756E2164756E21
37940
+ //# debugId=9F0D700EF3C5CB0E64756E2164756E21