negotium 0.10.0 → 0.10.1

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 (48) hide show
  1. package/README.md +1 -1
  2. package/dist/agent-helpers.js +68 -12
  3. package/dist/agent-helpers.js.map +10 -10
  4. package/dist/background-bash.js +3 -3
  5. package/dist/background-bash.js.map +2 -2
  6. package/dist/browser-runtime.js +3 -3
  7. package/dist/browser-runtime.js.map +2 -2
  8. package/dist/{chunk-06zc96py.js → chunk-ej0q23pd.js} +1 -1
  9. package/dist/{chunk-mqq04nr5.js → chunk-ejsvb6fn.js} +3 -3
  10. package/dist/{chunk-mqq04nr5.js.map → chunk-ejsvb6fn.js.map} +2 -2
  11. package/dist/{chunk-pp6dvrzq.js → chunk-x4rda52h.js} +3 -3
  12. package/dist/{chunk-pp6dvrzq.js.map → chunk-x4rda52h.js.map} +2 -2
  13. package/dist/hosted-agent.js +8 -6
  14. package/dist/hosted-agent.js.map +5 -5
  15. package/dist/main.js +70 -12
  16. package/dist/main.js.map +11 -11
  17. package/dist/mcp-factories.js +68 -12
  18. package/dist/mcp-factories.js.map +10 -10
  19. package/dist/media.js +3 -3
  20. package/dist/media.js.map +2 -2
  21. package/dist/prompts.js +33 -3
  22. package/dist/prompts.js.map +4 -4
  23. package/dist/query-runtime.js +3 -3
  24. package/dist/query-runtime.js.map +2 -2
  25. package/dist/registry.js +9 -5
  26. package/dist/registry.js.map +3 -3
  27. package/dist/rollout.js +2 -2
  28. package/dist/runtime/src/agents/auth-check.ts +14 -5
  29. package/dist/runtime/src/agents/maestro-provider.ts +7 -7
  30. package/dist/runtime/src/agents/maestro-registry.ts +4 -0
  31. package/dist/runtime/src/agents/model-catalog.ts +48 -0
  32. package/dist/runtime/src/platform/config.ts +2 -2
  33. package/dist/runtime/src/runtime/errors.ts +2 -2
  34. package/dist/runtime/src/storage/token-stats.ts +5 -0
  35. package/dist/runtime/src/version.ts +1 -1
  36. package/dist/runtime-helpers.js +3 -3
  37. package/dist/runtime-helpers.js.map +2 -2
  38. package/dist/storage.js +4 -1
  39. package/dist/storage.js.map +3 -3
  40. package/dist/types/packages/core/src/agents/maestro-provider.d.ts +4 -7
  41. package/dist/types/packages/core/src/agents/model-catalog.d.ts +2 -0
  42. package/dist/types/packages/core/src/platform/config.d.ts +2 -2
  43. package/dist/types/packages/core/src/version.d.ts +1 -1
  44. package/dist/vault.js +3 -3
  45. package/dist/vault.js.map +2 -2
  46. package/install-browser-rs.mjs +3 -3
  47. package/package.json +2 -2
  48. /package/dist/{chunk-06zc96py.js.map → chunk-ej0q23pd.js.map} +0 -0
package/README.md CHANGED
@@ -21,7 +21,7 @@ negotium -v
21
21
  ```
22
22
 
23
23
  Authenticate Claude with `claude`, Codex with `codex login`, or Maestro with
24
- `DEEPSEEK_API_KEY` for DeepSeek or `MOONSHOT_API_KEY` for Kimi. See the
24
+ `DEEPSEEK_API_KEY` for DeepSeek, `MOONSHOT_API_KEY` for Kimi, or `GLM_API_KEY` for GLM. See the
25
25
  [main repository](https://github.com/maestrojeong/negotium) for configuration, security guidance,
26
26
  and architecture.
27
27
 
@@ -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.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.2.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", 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;
347
347
  var init_config = __esm(() => {
348
348
  init_config_helpers();
349
349
  init_logger();
@@ -3001,7 +3001,7 @@ var init_codex = __esm(async () => {
3001
3001
  });
3002
3002
 
3003
3003
  // ../../packages/core/src/version.ts
3004
- var NEGOTIUM_VERSION = "0.10.0";
3004
+ var NEGOTIUM_VERSION = "0.10.1";
3005
3005
 
3006
3006
  // ../../packages/core/src/agents/codex-native-multi-agent.ts
3007
3007
  import { spawn as spawn2 } from "child_process";
@@ -3491,7 +3491,11 @@ var init_maestro_registry = __esm(() => {
3491
3491
  "deepseek-flash": "deepseek-v4-flash",
3492
3492
  kimi: "kimi-k3",
3493
3493
  "kimi-pro": "kimi-k3",
3494
- "kimi-code": "kimi-k2.7-code"
3494
+ "kimi-code": "kimi-k2.7-code",
3495
+ glm: "glm-5.3",
3496
+ "glm-pro": "glm-5.3",
3497
+ "glm-flash": "glm-5.3-flash",
3498
+ "glm-5.2": "glm-5.2"
3495
3499
  };
3496
3500
  VALID_MODELS = new Set([...Object.keys(ALIAS_MAP2), ...Object.values(ALIAS_MAP2)]);
3497
3501
  VALID_EFFORTS3 = new Set(MAESTRO_EFFORT_VALUES);
@@ -6149,11 +6153,13 @@ function resolveMaestroApiKeyOverrides(userId) {
6149
6153
  return;
6150
6154
  const deepseek = vaultGetValue(userId, "DEEPSEEK_API_KEY")?.trim();
6151
6155
  const moonshot = vaultGetValue(userId, "MOONSHOT_API_KEY")?.trim();
6152
- if (!deepseek && !moonshot)
6156
+ const glm = vaultGetValue(userId, "GLM_API_KEY")?.trim();
6157
+ if (!deepseek && !moonshot && !glm)
6153
6158
  return;
6154
6159
  return {
6155
6160
  ...deepseek ? { deepseek } : {},
6156
- ...moonshot ? { moonshot } : {}
6161
+ ...moonshot ? { moonshot } : {},
6162
+ ...glm ? { glm } : {}
6157
6163
  };
6158
6164
  }
6159
6165
  function buildProviderOwnedToolBlockHook() {
@@ -6648,6 +6654,8 @@ function modelOwner(model) {
6648
6654
  return "maestro";
6649
6655
  if (model.startsWith("kimi-"))
6650
6656
  return "maestro";
6657
+ if (model.startsWith("glm-"))
6658
+ return "maestro";
6651
6659
  if (model.startsWith("gpt-"))
6652
6660
  return "codex";
6653
6661
  return MODEL_OWNER[model];
@@ -6687,7 +6695,13 @@ var init_model_catalog = __esm(() => {
6687
6695
  "kimi-pro": "maestro",
6688
6696
  "kimi-k3": "maestro",
6689
6697
  "kimi-code": "maestro",
6690
- "kimi-k2.7-code": "maestro"
6698
+ "kimi-k2.7-code": "maestro",
6699
+ glm: "maestro",
6700
+ "glm-pro": "maestro",
6701
+ "glm-flash": "maestro",
6702
+ "glm-5.3": "maestro",
6703
+ "glm-5.2": "maestro",
6704
+ "glm-5.3-flash": "maestro"
6691
6705
  };
6692
6706
  SELECTABLE_MODELS = [
6693
6707
  {
@@ -6770,6 +6784,36 @@ var init_model_catalog = __esm(() => {
6770
6784
  marginalTokenCost: "Kimi API: $0.95/M cache-miss input, $0.19/M cached input, $4/M output",
6771
6785
  estimatedUsage: "No subscription token cap; pay per token. Always uses thinking and supports a 256K context window."
6772
6786
  },
6787
+ {
6788
+ model: "glm-5.3",
6789
+ agent: "maestro",
6790
+ description: "Coding-focused GLM flagship with Opus-tier benchmark performance.",
6791
+ intelligenceTier: "opus",
6792
+ routingSummary: "coding-focused flagship route; 1M context; competitive with Opus-tier coding benchmarks at a fraction of the cost",
6793
+ accessCost: "Zhipu AI pay-as-you-go API; no monthly subscription required",
6794
+ marginalTokenCost: "Approximate GLM API rate: $1.40/M input, $4.40/M output",
6795
+ estimatedUsage: "No subscription token cap; pay per token. Always uses thinking and supports a 1M-token context window; text-only input."
6796
+ },
6797
+ {
6798
+ model: "glm-5.2",
6799
+ agent: "maestro",
6800
+ description: "Previous-generation GLM flagship for cost-efficient everyday work.",
6801
+ intelligenceTier: "sonnet",
6802
+ routingSummary: "previous-gen flagship; 1M context; cost-efficient everyday work, cheaper than glm-5.3",
6803
+ accessCost: "Zhipu AI pay-as-you-go API; no monthly subscription required",
6804
+ marginalTokenCost: "Approximate GLM API rate: $0.95/M input, $3/M output",
6805
+ estimatedUsage: "No subscription token cap; pay per token. Always uses thinking and supports a 1M-token context window; text-only input."
6806
+ },
6807
+ {
6808
+ model: "glm-5.3-flash",
6809
+ agent: "maestro",
6810
+ description: "Low-cost multimodal GLM route with native image input.",
6811
+ intelligenceTier: "sonnet",
6812
+ routingSummary: "cheapest GLM route; 1M context; the only GLM model with native vision/multimodal support",
6813
+ accessCost: "Zhipu AI pay-as-you-go API; no monthly subscription required",
6814
+ marginalTokenCost: "Approximate GLM API rate: $0.15/M input, $0.50/M output",
6815
+ estimatedUsage: "No subscription token cap; pay per token. Always uses thinking, supports a 1M-token context window, and accepts native image input."
6816
+ },
6773
6817
  {
6774
6818
  model: "deepseek-pro",
6775
6819
  agent: "maestro",
@@ -6794,7 +6838,10 @@ var init_model_catalog = __esm(() => {
6794
6838
  SELECTABLE_MODEL_ALIASES = {
6795
6839
  kimi: "kimi-k3",
6796
6840
  "kimi-pro": "kimi-k3",
6797
- "kimi-code": "kimi-k2.7-code"
6841
+ "kimi-code": "kimi-k2.7-code",
6842
+ glm: "glm-5.3",
6843
+ "glm-pro": "glm-5.3",
6844
+ "glm-flash": "glm-5.3-flash"
6798
6845
  };
6799
6846
  FALLBACK_ORDER = {
6800
6847
  claude: [
@@ -8818,12 +8865,12 @@ function checkAgentAuth(agent, host = defaultAgentAuthHost, userId) {
8818
8865
  };
8819
8866
  }
8820
8867
  case "maestro": {
8821
- if (hasMaestroCredential(host, "DEEPSEEK_API_KEY", userId) || hasMaestroCredential(host, "MOONSHOT_API_KEY", userId)) {
8868
+ if (hasMaestroCredential(host, "DEEPSEEK_API_KEY", userId) || hasMaestroCredential(host, "MOONSHOT_API_KEY", userId) || hasMaestroCredential(host, "GLM_API_KEY", userId)) {
8822
8869
  return { ok: true };
8823
8870
  }
8824
8871
  return {
8825
8872
  ok: false,
8826
- error: "maestro is not authenticated (set DEEPSEEK_API_KEY or MOONSHOT_API_KEY via /vault set, or as an env var)"
8873
+ error: "maestro is not authenticated (set DEEPSEEK_API_KEY, MOONSHOT_API_KEY, or GLM_API_KEY via /vault set, or as an env var)"
8827
8874
  };
8828
8875
  }
8829
8876
  }
@@ -8843,6 +8890,12 @@ function checkAgentModelAuth(agent, model, host = defaultAgentAuthHost, userId)
8843
8890
  error: `maestro is not authenticated for model '${model}' (set DEEPSEEK_API_KEY via /vault set, or as an env var)`
8844
8891
  };
8845
8892
  }
8893
+ if (model.startsWith("glm")) {
8894
+ return hasMaestroCredential(host, "GLM_API_KEY", userId) ? { ok: true } : {
8895
+ ok: false,
8896
+ error: `maestro is not authenticated for model '${model}' (set GLM_API_KEY via /vault set, or as an env var)`
8897
+ };
8898
+ }
8846
8899
  return checkAgentAuth(agent, host, userId);
8847
8900
  }
8848
8901
  var defaultAgentAuthHost;
@@ -12380,6 +12433,9 @@ var init_token_stats = __esm(async () => {
12380
12433
  "claude:sonnet": { input: 2, cacheWrite: 2.5, cacheRead: 0.2, output: 10 },
12381
12434
  "maestro:kimi-k3": { input: 3, cacheRead: 0.3, output: 15 },
12382
12435
  "maestro:kimi-k2.7-code": { input: 0.95, cacheRead: 0.19, output: 4 },
12436
+ "maestro:glm-5.3": { input: 1.4, cacheRead: 1.4, output: 4.4 },
12437
+ "maestro:glm-5.2": { input: 0.95, cacheRead: 0.95, output: 3 },
12438
+ "maestro:glm-5.3-flash": { input: 0.15, cacheRead: 0.15, output: 0.5 },
12383
12439
  "maestro:deepseek-pro": { input: 0.435, cacheRead: 0.003625, output: 0.87 },
12384
12440
  "maestro:deepseek-flash": { input: 0.14, cacheRead: 0.0028, output: 0.28 }
12385
12441
  };
@@ -15631,7 +15687,7 @@ function authRecoveryHint(agent) {
15631
15687
  case "codex":
15632
15688
  return "Please log in again with `codex login` (~/.codex/auth.json)";
15633
15689
  case "maestro":
15634
- return "Please check the DEEPSEEK_API_KEY or MOONSHOT_API_KEY environment variable";
15690
+ return "Please check the DEEPSEEK_API_KEY, MOONSHOT_API_KEY, or GLM_API_KEY environment variable";
15635
15691
  }
15636
15692
  }
15637
15693
  function classifyAgentError(err2, agent) {
@@ -15647,7 +15703,7 @@ function classifyAgentError(err2, agent) {
15647
15703
  return status === 529 ? `${name} server is overloaded. Please try again in a moment. (529)` : `${name} server error occurred. Please try again in a moment. (500)`;
15648
15704
  }
15649
15705
  const s = stringifyError(err2);
15650
- if (/401|authentication.error|invalid.*api.key|not logged|ANTHROPIC_API_KEY|DEEPSEEK_API_KEY|MOONSHOT_API_KEY/i.test(s)) {
15706
+ if (/401|authentication.error|invalid.*api.key|not logged|ANTHROPIC_API_KEY|DEEPSEEK_API_KEY|MOONSHOT_API_KEY|GLM_API_KEY/i.test(s)) {
15651
15707
  return `${name} authentication expired. ${hint}. (401)`;
15652
15708
  }
15653
15709
  if (/429|rate.limit/i.test(s))
@@ -20177,4 +20233,4 @@ export {
20177
20233
  DEFAULT_SELF_CONFIG_PRODUCT
20178
20234
  };
20179
20235
 
20180
- //# debugId=BFD41C0F2C3A7B4264756E2164756E21
20236
+ //# debugId=6125C3400F8555BD64756E2164756E21