vivus-agent 1.0.5 → 1.0.7

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 (2) hide show
  1. package/dist/main.js +292 -102
  2. package/package.json +1 -1
package/dist/main.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  // Vivus CLI — local AI coding agent
3
- // Built from source at 2026-06-05T23:04:50.182Z
3
+ // Built from source at 2026-06-05T23:30:25.551Z
4
4
  import { createRequire } from "node:module";
5
5
  var __create = Object.create;
6
6
  var __getProtoOf = Object.getPrototypeOf;
@@ -113373,6 +113373,117 @@ var init_modelAllowlist = __esm(() => {
113373
113373
  init_modelStrings();
113374
113374
  });
113375
113375
 
113376
+ // src/utils/model/proxyModelLabels.ts
113377
+ function stripTag(name) {
113378
+ const i2 = name.indexOf(":");
113379
+ return i2 === -1 ? name : name.slice(0, i2);
113380
+ }
113381
+ function titleCaseFromName(stripped) {
113382
+ return stripped.split(/[-_/]/).filter(Boolean).map((p) => p.charAt(0).toUpperCase() + p.slice(1)).join(" ");
113383
+ }
113384
+ function extractSizeFromTag(name) {
113385
+ const i2 = name.indexOf(":");
113386
+ if (i2 === -1)
113387
+ return null;
113388
+ const tag2 = name.slice(i2 + 1);
113389
+ const m = tag2.match(/^(\d+(?:\.\d+)?)b\b/i);
113390
+ return m ? `${m[1]}B` : null;
113391
+ }
113392
+ function lookupProxyModelLabel(name, fallback) {
113393
+ const base2 = stripTag(name).toLowerCase();
113394
+ const sizeFromTag = extractSizeFromTag(name);
113395
+ const entry = PROXY_MODEL_LABELS[base2];
113396
+ if (entry) {
113397
+ return {
113398
+ label: entry.label + (sizeFromTag ? ` (${sizeFromTag})` : ""),
113399
+ description: entry.description
113400
+ };
113401
+ }
113402
+ const label = titleCaseFromName(stripTag(name));
113403
+ const size = sizeFromTag ?? fallback?.parameterSize?.replace(/\s+/g, "") ?? null;
113404
+ const descParts = [];
113405
+ if (fallback?.family)
113406
+ descParts.push(fallback.family);
113407
+ if (size)
113408
+ descParts.push(size);
113409
+ return {
113410
+ label: label + (sizeFromTag ? ` (${sizeFromTag})` : ""),
113411
+ description: descParts.length > 0 ? descParts.join(" · ") : "Custom model"
113412
+ };
113413
+ }
113414
+ function isProxyModelName(name) {
113415
+ if (!name)
113416
+ return false;
113417
+ if (name.includes(":"))
113418
+ return true;
113419
+ return PROXY_MODEL_LABELS[name.toLowerCase()] !== undefined;
113420
+ }
113421
+ var PROXY_MODEL_LABELS;
113422
+ var init_proxyModelLabels = __esm(() => {
113423
+ PROXY_MODEL_LABELS = {
113424
+ "minimax-m3": {
113425
+ label: "MiniMax M3",
113426
+ description: "Balanced default · strong general reasoning, long context"
113427
+ },
113428
+ "qwen3-coder-next": {
113429
+ label: "Qwen3 Coder Next",
113430
+ description: "Latest coding model · best for code tasks"
113431
+ },
113432
+ "qwen3-coder": {
113433
+ label: "Qwen3 Coder",
113434
+ description: "Coding-focused MoE"
113435
+ },
113436
+ "qwen3-vl": {
113437
+ label: "Qwen3 VL",
113438
+ description: "Vision-capable · multimodal input"
113439
+ },
113440
+ qwen3: {
113441
+ label: "Qwen3",
113442
+ description: "General-purpose Alibaba Qwen"
113443
+ },
113444
+ "qwen3.6": {
113445
+ label: "Qwen 3.6",
113446
+ description: "Latest Qwen · improved reasoning"
113447
+ },
113448
+ "deepseek-v4-flash": {
113449
+ label: "DeepSeek V4 Flash",
113450
+ description: "Fast responses · low latency"
113451
+ },
113452
+ "deepseek-v4-pro": {
113453
+ label: "DeepSeek V4 Pro",
113454
+ description: "Advanced reasoning · deep analysis"
113455
+ },
113456
+ "deepseek-v3.1": {
113457
+ label: "DeepSeek V3.1",
113458
+ description: "Strong reasoning · MoE"
113459
+ },
113460
+ "glm-5.1": {
113461
+ label: "GLM 5.1",
113462
+ description: "General-purpose · long context"
113463
+ },
113464
+ "kimi-k2.6": {
113465
+ label: "Kimi K2.6",
113466
+ description: "Deep reasoning · trillion-parameter scale"
113467
+ },
113468
+ "gpt-oss": {
113469
+ label: "GPT-OSS",
113470
+ description: "Open-weight GPT-style model"
113471
+ },
113472
+ gemma4: {
113473
+ label: "Gemma 4",
113474
+ description: "Google Gemma · compact and capable"
113475
+ },
113476
+ "granite4.1": {
113477
+ label: "Granite 4.1",
113478
+ description: "IBM Granite · enterprise coder"
113479
+ },
113480
+ nemotron3: {
113481
+ label: "Nemotron 3",
113482
+ description: "NVIDIA Nemotron · multimodal"
113483
+ }
113484
+ };
113485
+ });
113486
+
113376
113487
  // src/utils/model/model.ts
113377
113488
  var exports_model = {};
113378
113489
  __export(exports_model, {
@@ -113469,6 +113580,9 @@ function getRuntimeMainLoopModel(params) {
113469
113580
  return mainLoopModel;
113470
113581
  }
113471
113582
  function getDefaultMainLoopModelSetting() {
113583
+ if (!isFirstPartyAnthropicBaseUrl()) {
113584
+ return process.env.VIVUS_DEFAULT_PROXY_MODEL || process.env.ANTHROPIC_MODEL || "minimax-m3:cloud";
113585
+ }
113472
113586
  if (process.env.USER_TYPE === "ant") {
113473
113587
  return getAntModelOverrideConfig()?.defaultModel ?? getDefaultOpusModel() + "[1m]";
113474
113588
  }
@@ -113618,6 +113732,9 @@ function maskModelCodename(baseName) {
113618
113732
  return [masked, ...rest].join("-");
113619
113733
  }
113620
113734
  function renderModelName(model) {
113735
+ if (isProxyModelName(model)) {
113736
+ return lookupProxyModelLabel(model).label;
113737
+ }
113621
113738
  const publicName = getPublicModelDisplayName(model);
113622
113739
  if (publicName) {
113623
113740
  return publicName;
@@ -113767,6 +113884,7 @@ var init_model = __esm(() => {
113767
113884
  init_modelAllowlist();
113768
113885
  init_aliases();
113769
113886
  init_stringUtils();
113887
+ init_proxyModelLabels();
113770
113888
  LEGACY_OPUS_FIRSTPARTY = [
113771
113889
  "vivus-opus-4-20250514",
113772
113890
  "vivus-opus-4-1-20250805",
@@ -115958,7 +116076,7 @@ var init_auth = __esm(() => {
115958
116076
 
115959
116077
  // src/utils/userAgent.ts
115960
116078
  function getVivusCodeUserAgent() {
115961
- return `vivus/${"1.0.5+c258d3c"}`;
116079
+ return `vivus/${"1.0.7+5259b6e"}`;
115962
116080
  }
115963
116081
 
115964
116082
  // src/utils/workloadContext.ts
@@ -115980,7 +116098,7 @@ function getUserAgent() {
115980
116098
  const clientApp = process.env.VIVUS_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.VIVUS_AGENT_SDK_CLIENT_APP}` : "";
115981
116099
  const workload = getWorkload();
115982
116100
  const workloadSuffix = workload ? `, workload/${workload}` : "";
115983
- return `vivus-cli/${"1.0.5+c258d3c"} (${process.env.USER_TYPE}, ${process.env.VIVUS_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
116101
+ return `vivus-cli/${"1.0.7+5259b6e"} (${process.env.USER_TYPE}, ${process.env.VIVUS_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
115984
116102
  }
115985
116103
  function getMCPUserAgent() {
115986
116104
  const parts = [];
@@ -115994,7 +116112,7 @@ function getMCPUserAgent() {
115994
116112
  parts.push(`client-app/${process.env.VIVUS_AGENT_SDK_CLIENT_APP}`);
115995
116113
  }
115996
116114
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
115997
- return `vivus/${"1.0.5+c258d3c"}${suffix}`;
116115
+ return `vivus/${"1.0.7+5259b6e"}${suffix}`;
115998
116116
  }
115999
116117
  function getWebFetchUserAgent() {
116000
116118
  return `Vivus-User (${getVivusCodeUserAgent()}; +https://support.anthropic.com/)`;
@@ -116132,7 +116250,7 @@ var init_user = __esm(() => {
116132
116250
  deviceId,
116133
116251
  sessionId: getSessionId(),
116134
116252
  email: getEmail(),
116135
- appVersion: "1.0.5+c258d3c",
116253
+ appVersion: "1.0.7+5259b6e",
116136
116254
  platform: getHostPlatformForAnalytics(),
116137
116255
  organizationUuid,
116138
116256
  accountUuid,
@@ -127798,7 +127916,7 @@ var init_metadata = __esm(() => {
127798
127916
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
127799
127917
  WHITESPACE_REGEX = /\s+/;
127800
127918
  getVersionBase = memoize_default(() => {
127801
- const match = "1.0.5+c258d3c".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
127919
+ const match = "1.0.7+5259b6e".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
127802
127920
  return match ? match[0] : undefined;
127803
127921
  });
127804
127922
  buildEnvContext = memoize_default(async () => {
@@ -127838,9 +127956,9 @@ var init_metadata = __esm(() => {
127838
127956
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
127839
127957
  isVivusCodeAction: isEnvTruthy(process.env.VIVUS_CODE_ACTION),
127840
127958
  isVivusAiAuth: isVivusAISubscriber(),
127841
- version: "1.0.5+c258d3c",
127959
+ version: "1.0.7+5259b6e",
127842
127960
  versionBase: getVersionBase(),
127843
- buildTime: "2026-06-05T23:04:49.594Z",
127961
+ buildTime: "2026-06-05T23:30:24.955Z",
127844
127962
  deploymentEnvironment: env2.detectDeploymentEnvironment(),
127845
127963
  ...isEnvTruthy(process.env.GITHUB_ACTIONS) && {
127846
127964
  githubEventName: process.env.GITHUB_EVENT_NAME,
@@ -128508,7 +128626,7 @@ function initialize1PEventLogging() {
128508
128626
  const platform2 = getPlatform();
128509
128627
  const attributes = {
128510
128628
  [import_semantic_conventions.ATTR_SERVICE_NAME]: "vivus",
128511
- [import_semantic_conventions.ATTR_SERVICE_VERSION]: "1.0.5+c258d3c"
128629
+ [import_semantic_conventions.ATTR_SERVICE_VERSION]: "1.0.7+5259b6e"
128512
128630
  };
128513
128631
  if (platform2 === "wsl") {
128514
128632
  const wslVersion = getWslVersion();
@@ -128535,7 +128653,7 @@ function initialize1PEventLogging() {
128535
128653
  })
128536
128654
  ]
128537
128655
  });
128538
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.anthropic.vivus_code.events", "1.0.5+c258d3c");
128656
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.anthropic.vivus_code.events", "1.0.7+5259b6e");
128539
128657
  }
128540
128658
  async function reinitialize1PEventLoggingIfConfigChanged() {
128541
128659
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -162624,7 +162742,7 @@ function getAttributionHeader(fingerprint) {
162624
162742
  if (!isAttributionHeaderEnabled()) {
162625
162743
  return "";
162626
162744
  }
162627
- const version2 = `${"1.0.5+c258d3c"}.${fingerprint}`;
162745
+ const version2 = `${"1.0.7+5259b6e"}.${fingerprint}`;
162628
162746
  const entrypoint = process.env.VIVUS_CODE_ENTRYPOINT ?? "unknown";
162629
162747
  const cch = "";
162630
162748
  const workload = getWorkload();
@@ -175781,7 +175899,7 @@ function getTelemetryAttributes() {
175781
175899
  attributes["session.id"] = sessionId;
175782
175900
  }
175783
175901
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
175784
- attributes["app.version"] = "1.0.5+c258d3c";
175902
+ attributes["app.version"] = "1.0.7+5259b6e";
175785
175903
  }
175786
175904
  const oauthAccount = getOauthAccountInfo();
175787
175905
  if (oauthAccount) {
@@ -207597,7 +207715,8 @@ function FallbackToolUseErrorMessage(t0) {
207597
207715
  const withoutErrorTags = withoutSandboxViolations.replace(/<\/?error>/g, "");
207598
207716
  const trimmed = withoutErrorTags.trim();
207599
207717
  if (!verbose && trimmed.includes("InputValidationError: ")) {
207600
- error41 = "Invalid tool parameters";
207718
+ const stripped = trimmed.replace(/^InputValidationError:\s*/, "");
207719
+ error41 = `Invalid tool parameters: ${stripped}`;
207601
207720
  } else {
207602
207721
  if (trimmed.startsWith("Error: ") || trimmed.startsWith("Cancelled: ")) {
207603
207722
  error41 = trimmed;
@@ -235915,7 +236034,7 @@ function computeFingerprint(messageText, version2) {
235915
236034
  }
235916
236035
  function computeFingerprintFromMessages(messages) {
235917
236036
  const firstMessageText = extractFirstMessageText(messages);
235918
- return computeFingerprint(firstMessageText, "1.0.5+c258d3c");
236037
+ return computeFingerprint(firstMessageText, "1.0.7+5259b6e");
235919
236038
  }
235920
236039
  var FINGERPRINT_SALT = "59cf53e54c78";
235921
236040
  var init_fingerprint = () => {};
@@ -235957,7 +236076,7 @@ async function sideQuery(opts) {
235957
236076
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
235958
236077
  }
235959
236078
  const messageText = extractFirstUserMessageText(messages);
235960
- const fingerprint = computeFingerprint(messageText, "1.0.5+c258d3c");
236079
+ const fingerprint = computeFingerprint(messageText, "1.0.7+5259b6e");
235961
236080
  const attributionHeader = getAttributionHeader(fingerprint);
235962
236081
  const systemBlocks = [
235963
236082
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -237109,7 +237228,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
237109
237228
  const client2 = new Client({
237110
237229
  name: "vivus",
237111
237230
  title: "Vivus",
237112
- version: "1.0.5+c258d3c",
237231
+ version: "1.0.7+5259b6e",
237113
237232
  description: "Anthropic's agentic coding tool",
237114
237233
  websiteUrl: PRODUCT_URL
237115
237234
  }, {
@@ -237463,7 +237582,7 @@ var init_client6 = __esm(() => {
237463
237582
  const client2 = new Client({
237464
237583
  name: "vivus",
237465
237584
  title: "Vivus",
237466
- version: "1.0.5+c258d3c",
237585
+ version: "1.0.7+5259b6e",
237467
237586
  description: "Anthropic's agentic coding tool",
237468
237587
  websiteUrl: PRODUCT_URL
237469
237588
  }, {
@@ -239521,7 +239640,7 @@ function getInstallationEnv() {
239521
239640
  return;
239522
239641
  }
239523
239642
  function getVivusCodeVersion() {
239524
- return "1.0.5+c258d3c";
239643
+ return "1.0.7+5259b6e";
239525
239644
  }
239526
239645
  async function getInstalledVSCodeExtensionVersion(command) {
239527
239646
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -272011,7 +272130,7 @@ async function initializeBetaTracing(resource) {
272011
272130
  });
272012
272131
  import_api_logs.logs.setGlobalLoggerProvider(loggerProvider);
272013
272132
  setLoggerProvider(loggerProvider);
272014
- const eventLogger = import_api_logs.logs.getLogger("com.anthropic.vivus_code.events", "1.0.5+c258d3c");
272133
+ const eventLogger = import_api_logs.logs.getLogger("com.anthropic.vivus_code.events", "1.0.7+5259b6e");
272015
272134
  setEventLogger(eventLogger);
272016
272135
  process.on("beforeExit", async () => {
272017
272136
  await loggerProvider?.forceFlush();
@@ -272051,7 +272170,7 @@ async function initializeTelemetry() {
272051
272170
  const platform5 = getPlatform();
272052
272171
  const baseAttributes = {
272053
272172
  [import_semantic_conventions2.ATTR_SERVICE_NAME]: "vivus",
272054
- [import_semantic_conventions2.ATTR_SERVICE_VERSION]: "1.0.5+c258d3c"
272173
+ [import_semantic_conventions2.ATTR_SERVICE_VERSION]: "1.0.7+5259b6e"
272055
272174
  };
272056
272175
  if (platform5 === "wsl") {
272057
272176
  const wslVersion = getWslVersion();
@@ -272096,7 +272215,7 @@ async function initializeTelemetry() {
272096
272215
  } catch {}
272097
272216
  };
272098
272217
  registerCleanup(shutdownTelemetry2);
272099
- return meterProvider2.getMeter("com.anthropic.vivus_code", "1.0.5+c258d3c");
272218
+ return meterProvider2.getMeter("com.anthropic.vivus_code", "1.0.7+5259b6e");
272100
272219
  }
272101
272220
  const meterProvider = new import_sdk_metrics2.MeterProvider({
272102
272221
  resource,
@@ -272116,7 +272235,7 @@ async function initializeTelemetry() {
272116
272235
  });
272117
272236
  import_api_logs.logs.setGlobalLoggerProvider(loggerProvider);
272118
272237
  setLoggerProvider(loggerProvider);
272119
- const eventLogger = import_api_logs.logs.getLogger("com.anthropic.vivus_code.events", "1.0.5+c258d3c");
272238
+ const eventLogger = import_api_logs.logs.getLogger("com.anthropic.vivus_code.events", "1.0.7+5259b6e");
272120
272239
  setEventLogger(eventLogger);
272121
272240
  logForDebugging("[3P telemetry] Event logger set successfully");
272122
272241
  process.on("beforeExit", async () => {
@@ -272178,7 +272297,7 @@ Current timeout: ${timeoutMs}ms
272178
272297
  }
272179
272298
  };
272180
272299
  registerCleanup(shutdownTelemetry);
272181
- return meterProvider.getMeter("com.anthropic.vivus_code", "1.0.5+c258d3c");
272300
+ return meterProvider.getMeter("com.anthropic.vivus_code", "1.0.7+5259b6e");
272182
272301
  }
272183
272302
  async function flushTelemetry() {
272184
272303
  const meterProvider = getMeterProvider();
@@ -272864,9 +272983,9 @@ async function assertMinVersion() {
272864
272983
  if (false) {}
272865
272984
  try {
272866
272985
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
272867
- if (versionConfig.minVersion && lt("1.0.5+c258d3c", versionConfig.minVersion)) {
272986
+ if (versionConfig.minVersion && lt("1.0.7+5259b6e", versionConfig.minVersion)) {
272868
272987
  console.error(`
272869
- It looks like your version of Vivus (${"1.0.5+c258d3c"}) needs an update.
272988
+ It looks like your version of Vivus (${"1.0.7+5259b6e"}) needs an update.
272870
272989
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
272871
272990
 
272872
272991
  To update, please run:
@@ -273082,7 +273201,7 @@ async function installGlobalPackage(specificVersion) {
273082
273201
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
273083
273202
  logEvent("tengu_auto_updater_lock_contention", {
273084
273203
  pid: process.pid,
273085
- currentVersion: "1.0.5+c258d3c"
273204
+ currentVersion: "1.0.7+5259b6e"
273086
273205
  });
273087
273206
  return "in_progress";
273088
273207
  }
@@ -273091,7 +273210,7 @@ async function installGlobalPackage(specificVersion) {
273091
273210
  if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
273092
273211
  logError2(new Error("Windows NPM detected in WSL environment"));
273093
273212
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
273094
- currentVersion: "1.0.5+c258d3c"
273213
+ currentVersion: "1.0.7+5259b6e"
273095
273214
  });
273096
273215
  console.error(`
273097
273216
  Error: Windows NPM detected in WSL
@@ -273624,7 +273743,7 @@ function detectLinuxGlobPatternWarnings() {
273624
273743
  }
273625
273744
  async function getDoctorDiagnostic() {
273626
273745
  const installationType = await getCurrentInstallationType();
273627
- const version2 = typeof MACRO !== "undefined" ? "1.0.5+c258d3c" : "unknown";
273746
+ const version2 = typeof MACRO !== "undefined" ? "1.0.7+5259b6e" : "unknown";
273628
273747
  const installationPath = await getInstallationPath();
273629
273748
  const invokedBinary = getInvokedBinary();
273630
273749
  const multipleInstallations = await detectMultipleInstallations();
@@ -274557,8 +274676,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
274557
274676
  const maxVersion = await getMaxVersion();
274558
274677
  if (maxVersion && gt(version2, maxVersion)) {
274559
274678
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
274560
- if (gte("1.0.5+c258d3c", maxVersion)) {
274561
- logForDebugging(`Native installer: current version ${"1.0.5+c258d3c"} is already at or above maxVersion ${maxVersion}, skipping update`);
274679
+ if (gte("1.0.7+5259b6e", maxVersion)) {
274680
+ logForDebugging(`Native installer: current version ${"1.0.7+5259b6e"} is already at or above maxVersion ${maxVersion}, skipping update`);
274562
274681
  logEvent("tengu_native_update_skipped_max_version", {
274563
274682
  latency_ms: Date.now() - startTime,
274564
274683
  max_version: maxVersion,
@@ -274569,7 +274688,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
274569
274688
  version2 = maxVersion;
274570
274689
  }
274571
274690
  }
274572
- if (!forceReinstall && version2 === "1.0.5+c258d3c" && await versionIsAvailable(version2) && await isPossibleVivusBinary(executablePath)) {
274691
+ if (!forceReinstall && version2 === "1.0.7+5259b6e" && await versionIsAvailable(version2) && await isPossibleVivusBinary(executablePath)) {
274573
274692
  logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
274574
274693
  logEvent("tengu_native_update_complete", {
274575
274694
  latency_ms: Date.now() - startTime,
@@ -327026,6 +327145,68 @@ var init_toolErrors = __esm(() => {
327026
327145
  init_messages3();
327027
327146
  });
327028
327147
 
327148
+ // src/utils/toolInputCoercion.ts
327149
+ function looksLikeNumericKeyedArray(obj) {
327150
+ const keys2 = Object.keys(obj);
327151
+ if (keys2.length === 0)
327152
+ return false;
327153
+ for (const k2 of keys2) {
327154
+ if (!/^\d+$/.test(k2))
327155
+ return false;
327156
+ }
327157
+ return true;
327158
+ }
327159
+ function objectToArray(obj) {
327160
+ return Object.keys(obj).map((k2) => Number.parseInt(k2, 10)).sort((a2, b) => a2 - b).map((i2) => obj[String(i2)]);
327161
+ }
327162
+ function coerceValue(value, depth) {
327163
+ if (depth > MAX_COERCE_DEPTH)
327164
+ return value;
327165
+ if (value == null)
327166
+ return value;
327167
+ if (typeof value === "string") {
327168
+ const trimmed = value.trim();
327169
+ if (trimmed === "true")
327170
+ return true;
327171
+ if (trimmed === "false")
327172
+ return false;
327173
+ if (trimmed === "null")
327174
+ return null;
327175
+ if (trimmed.startsWith("{") && trimmed.endsWith("}") || trimmed.startsWith("[") && trimmed.endsWith("]")) {
327176
+ try {
327177
+ const parsed = JSON.parse(trimmed);
327178
+ return coerceValue(parsed, depth + 1);
327179
+ } catch {
327180
+ return value;
327181
+ }
327182
+ }
327183
+ return value;
327184
+ }
327185
+ if (Array.isArray(value)) {
327186
+ return value.map((v) => coerceValue(v, depth + 1));
327187
+ }
327188
+ if (typeof value === "object") {
327189
+ const obj = value;
327190
+ if (looksLikeNumericKeyedArray(obj)) {
327191
+ return objectToArray(obj).map((v) => coerceValue(v, depth + 1));
327192
+ }
327193
+ const out = {};
327194
+ for (const [k2, v] of Object.entries(obj)) {
327195
+ out[k2] = coerceValue(v, depth + 1);
327196
+ }
327197
+ return out;
327198
+ }
327199
+ return value;
327200
+ }
327201
+ function coerceToolInput(input) {
327202
+ const coerced = coerceValue(input, 0);
327203
+ if (coerced && typeof coerced === "object" && !Array.isArray(coerced)) {
327204
+ return coerced;
327205
+ }
327206
+ return input ?? {};
327207
+ }
327208
+ var MAX_COERCE_DEPTH = 12;
327209
+
327029
327210
  // src/utils/permissions/PermissionResult.ts
327030
327211
  function getRuleBehaviorDescription(permissionResult) {
327031
327212
  switch (permissionResult) {
@@ -327711,7 +327892,14 @@ function buildSchemaNotSentHint(tool, messages, tools) {
327711
327892
  This tool's schema was not sent to the API — it was not in the discovered-tool set derived from message history. ` + `Without the schema in your prompt, typed parameters (arrays, numbers, booleans) get emitted as strings and the client-side parser rejects them. ` + `Load the tool first: call ${TOOL_SEARCH_TOOL_NAME} with query "select:${tool.name}", then retry this call.`;
327712
327893
  }
327713
327894
  async function checkPermissionsAndCallTool(tool, toolUseID, input, toolUseContext, canUseTool, assistantMessage, messageId, requestId, mcpServerType, mcpServerBaseUrl, onToolProgress) {
327714
- const parsedInput = tool.inputSchema.safeParse(input);
327895
+ const coercedInput = coerceToolInput(input);
327896
+ let parsedInput = tool.inputSchema.safeParse(coercedInput);
327897
+ if (!parsedInput.success && coercedInput !== input) {
327898
+ const original = tool.inputSchema.safeParse(input);
327899
+ if (original.success) {
327900
+ parsedInput = original;
327901
+ }
327902
+ }
327715
327903
  if (!parsedInput.success) {
327716
327904
  let errorContent = formatZodValidationError(tool.name, parsedInput.error);
327717
327905
  const schemaHint = buildSchemaNotSentHint(tool, toolUseContext.messages, toolUseContext.options.tools);
@@ -330609,7 +330797,7 @@ function getAnthropicEnvMetadata() {
330609
330797
  function getBuildAgeMinutes() {
330610
330798
  if (false)
330611
330799
  ;
330612
- const buildTime = new Date("2026-06-05T23:04:49.594Z").getTime();
330800
+ const buildTime = new Date("2026-06-05T23:30:24.955Z").getTime();
330613
330801
  if (isNaN(buildTime))
330614
330802
  return;
330615
330803
  return Math.floor((Date.now() - buildTime) / 60000);
@@ -360760,6 +360948,15 @@ function getDefaultOptionForUser(fastMode = false) {
360760
360948
  descriptionForModel: `Default model (currently ${currentModel})`
360761
360949
  };
360762
360950
  }
360951
+ if (!isFirstPartyAnthropicBaseUrl()) {
360952
+ const currentModel = renderDefaultModelSetting(getDefaultMainLoopModelSetting());
360953
+ return {
360954
+ value: null,
360955
+ label: "Default (recommended)",
360956
+ description: `Use the default model (currently ${currentModel})`,
360957
+ descriptionForModel: `Default model (currently ${currentModel})`
360958
+ };
360959
+ }
360763
360960
  if (isVivusAISubscriber()) {
360764
360961
  return {
360765
360962
  value: null,
@@ -377830,7 +378027,7 @@ var init_filesystem = __esm(() => {
377830
378027
  });
377831
378028
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
377832
378029
  const nonce = randomBytes17(16).toString("hex");
377833
- return join106(getVivusTempDir(), "bundled-skills", "1.0.5+c258d3c", nonce);
378030
+ return join106(getVivusTempDir(), "bundled-skills", "1.0.7+5259b6e", nonce);
377834
378031
  });
377835
378032
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
377836
378033
  });
@@ -379590,7 +379787,7 @@ function Feedback({
379590
379787
  platform: env2.platform,
379591
379788
  gitRepo: envInfo.isGit,
379592
379789
  terminal: env2.terminal,
379593
- version: "1.0.5+c258d3c",
379790
+ version: "1.0.7+5259b6e",
379594
379791
  transcript: normalizeMessagesForAPI(messages),
379595
379792
  errors: sanitizedErrors,
379596
379793
  lastApiRequest: getLastAPIRequest(),
@@ -379782,7 +379979,7 @@ function Feedback({
379782
379979
  ", ",
379783
379980
  env2.terminal,
379784
379981
  ", v",
379785
- "1.0.5+c258d3c"
379982
+ "1.0.7+5259b6e"
379786
379983
  ]
379787
379984
  }, undefined, true, undefined, this)
379788
379985
  ]
@@ -379888,7 +380085,7 @@ ${sanitizedDescription}
379888
380085
  ` + `**Environment Info**
379889
380086
  ` + `- Platform: ${env2.platform}
379890
380087
  ` + `- Terminal: ${env2.terminal}
379891
- ` + `- Version: ${"1.0.5+c258d3c"}
380088
+ ` + `- Version: ${"1.0.7+5259b6e"}
379892
380089
  ` + `- Feedback ID: ${feedbackId}
379893
380090
  ` + `
379894
380091
  **Errors**
@@ -383019,7 +383216,7 @@ function buildPrimarySection() {
383019
383216
  }, undefined, false, undefined, this);
383020
383217
  return [{
383021
383218
  label: "Version",
383022
- value: "1.0.5+c258d3c"
383219
+ value: "1.0.7+5259b6e"
383023
383220
  }, {
383024
383221
  label: "Session name",
383025
383222
  value: nameValue
@@ -386770,7 +386967,7 @@ function Config({
386770
386967
  }
386771
386968
  }, undefined, false, undefined, this)
386772
386969
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime178.jsxDEV(ChannelDowngradeDialog, {
386773
- currentVersion: "1.0.5+c258d3c",
386970
+ currentVersion: "1.0.7+5259b6e",
386774
386971
  onChoice: (choice) => {
386775
386972
  setShowSubmenu(null);
386776
386973
  setTabsHidden(false);
@@ -386782,7 +386979,7 @@ function Config({
386782
386979
  autoUpdatesChannel: "stable"
386783
386980
  };
386784
386981
  if (choice === "stay") {
386785
- newSettings.minimumVersion = "1.0.5+c258d3c";
386982
+ newSettings.minimumVersion = "1.0.7+5259b6e";
386786
386983
  }
386787
386984
  updateSettingsForSource("userSettings", newSettings);
386788
386985
  setSettingsData((prev_27) => ({
@@ -394868,7 +395065,7 @@ function HelpV2(t0) {
394868
395065
  let t6;
394869
395066
  if ($2[31] !== tabs) {
394870
395067
  t6 = /* @__PURE__ */ jsx_dev_runtime205.jsxDEV(Tabs, {
394871
- title: `Vivus v${"1.0.5+c258d3c"}`,
395068
+ title: `Vivus v${"1.0.7+5259b6e"}`,
394872
395069
  color: "professionalBlue",
394873
395070
  defaultTab: "general",
394874
395071
  children: tabs
@@ -419093,7 +419290,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
419093
419290
  return [];
419094
419291
  }
419095
419292
  }
419096
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.0.5+c258d3c") {
419293
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.0.7+5259b6e") {
419097
419294
  if (process.env.USER_TYPE === "ant") {
419098
419295
  const changelog = "";
419099
419296
  if (changelog) {
@@ -419120,7 +419317,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.0.5+c25
419120
419317
  releaseNotes
419121
419318
  };
419122
419319
  }
419123
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.0.5+c258d3c") {
419320
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.0.7+5259b6e") {
419124
419321
  if (process.env.USER_TYPE === "ant") {
419125
419322
  const changelog = "";
419126
419323
  if (changelog) {
@@ -420290,7 +420487,7 @@ function getRecentActivitySync() {
420290
420487
  return cachedActivity;
420291
420488
  }
420292
420489
  function getLogoDisplayData() {
420293
- const version2 = process.env.DEMO_VERSION ?? "1.0.5+c258d3c";
420490
+ const version2 = process.env.DEMO_VERSION ?? "1.0.7+5259b6e";
420294
420491
  const serverUrl = getDirectConnectServerUrl();
420295
420492
  const displayPath = process.env.DEMO_VERSION ? "/code/vivus" : getDisplayPath(getCwd());
420296
420493
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -421817,7 +422014,7 @@ function LogoV2() {
421817
422014
  if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
421818
422015
  t2 = () => {
421819
422016
  const currentConfig = getGlobalConfig();
421820
- if (currentConfig.lastReleaseNotesSeen === "1.0.5+c258d3c") {
422017
+ if (currentConfig.lastReleaseNotesSeen === "1.0.7+5259b6e") {
421821
422018
  return;
421822
422019
  }
421823
422020
  saveGlobalConfig(_temp329);
@@ -422493,12 +422690,12 @@ function LogoV2() {
422493
422690
  return t41;
422494
422691
  }
422495
422692
  function _temp329(current) {
422496
- if (current.lastReleaseNotesSeen === "1.0.5+c258d3c") {
422693
+ if (current.lastReleaseNotesSeen === "1.0.7+5259b6e") {
422497
422694
  return current;
422498
422695
  }
422499
422696
  return {
422500
422697
  ...current,
422501
- lastReleaseNotesSeen: "1.0.5+c258d3c"
422698
+ lastReleaseNotesSeen: "1.0.7+5259b6e"
422502
422699
  };
422503
422700
  }
422504
422701
  function _temp245(s_0) {
@@ -448795,7 +448992,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
448795
448992
  smapsRollup,
448796
448993
  platform: process.platform,
448797
448994
  nodeVersion: process.version,
448798
- ccVersion: "1.0.5+c258d3c"
448995
+ ccVersion: "1.0.7+5259b6e"
448799
448996
  };
448800
448997
  }
448801
448998
  async function performHeapDump(trigger = "manual", dumpNumber = 0) {
@@ -449381,7 +449578,7 @@ var init_bridge_kick = __esm(() => {
449381
449578
  var call56 = async () => {
449382
449579
  return {
449383
449580
  type: "text",
449384
- value: `${"1.0.5+c258d3c"} (built ${"2026-06-05T23:04:49.594Z"})`
449581
+ value: `${"1.0.7+5259b6e"} (built ${"2026-06-05T23:30:24.955Z"})`
449385
449582
  };
449386
449583
  }, version2, version_default;
449387
449584
  var init_version = __esm(() => {
@@ -458344,7 +458541,7 @@ function generateHtmlReport(data, insights) {
458344
458541
  </html>`;
458345
458542
  }
458346
458543
  function buildExportData(data, insights, facets, remoteStats) {
458347
- const version3 = typeof MACRO !== "undefined" ? "1.0.5+c258d3c" : "unknown";
458544
+ const version3 = typeof MACRO !== "undefined" ? "1.0.7+5259b6e" : "unknown";
458348
458545
  const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
458349
458546
  const facets_summary = {
458350
458547
  total: facets.size,
@@ -462453,7 +462650,7 @@ var init_sessionStorage = __esm(() => {
462453
462650
  init_settings2();
462454
462651
  init_slowOperations();
462455
462652
  init_uuid();
462456
- VERSION5 = typeof MACRO !== "undefined" ? "1.0.5+c258d3c" : "unknown";
462653
+ VERSION5 = typeof MACRO !== "undefined" ? "1.0.7+5259b6e" : "unknown";
462457
462654
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
462458
462655
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
462459
462656
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -465324,7 +465521,7 @@ function buildSystemInitMessage(inputs) {
465324
465521
  slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
465325
465522
  apiKeySource: getAnthropicApiKeyWithSource().source,
465326
465523
  betas: getSdkBetas(),
465327
- vivus_code_version: "1.0.5+c258d3c",
465524
+ vivus_code_version: "1.0.7+5259b6e",
465328
465525
  output_style: outputStyle2,
465329
465526
  agents: inputs.agents.map((agent) => agent.agentType),
465330
465527
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill) => skill.name),
@@ -479952,7 +480149,7 @@ var init_useVoiceEnabled = __esm(() => {
479952
480149
  function getSemverPart(version3) {
479953
480150
  return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
479954
480151
  }
479955
- function useUpdateNotification(updatedVersion, initialVersion = "1.0.5+c258d3c") {
480152
+ function useUpdateNotification(updatedVersion, initialVersion = "1.0.7+5259b6e") {
479956
480153
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react227.useState(() => getSemverPart(initialVersion));
479957
480154
  if (!updatedVersion) {
479958
480155
  return null;
@@ -479992,7 +480189,7 @@ function AutoUpdater({
479992
480189
  return;
479993
480190
  }
479994
480191
  if (false) {}
479995
- const currentVersion = "1.0.5+c258d3c";
480192
+ const currentVersion = "1.0.7+5259b6e";
479996
480193
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
479997
480194
  let latestVersion = await getLatestVersion(channel);
479998
480195
  const isDisabled = isAutoUpdaterDisabled();
@@ -480205,12 +480402,12 @@ function NativeAutoUpdater({
480205
480402
  logEvent("tengu_native_auto_updater_start", {});
480206
480403
  try {
480207
480404
  const maxVersion = await getMaxVersion();
480208
- if (maxVersion && gt("1.0.5+c258d3c", maxVersion)) {
480405
+ if (maxVersion && gt("1.0.7+5259b6e", maxVersion)) {
480209
480406
  const msg = await getMaxVersionMessage();
480210
480407
  setMaxVersionIssue(msg ?? "affects your version");
480211
480408
  }
480212
480409
  const result = await installLatest(channel);
480213
- const currentVersion = "1.0.5+c258d3c";
480410
+ const currentVersion = "1.0.7+5259b6e";
480214
480411
  const latencyMs = Date.now() - startTime;
480215
480412
  if (result.lockFailed) {
480216
480413
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -480347,17 +480544,17 @@ function PackageManagerAutoUpdater(t0) {
480347
480544
  const maxVersion = await getMaxVersion();
480348
480545
  if (maxVersion && latest && gt(latest, maxVersion)) {
480349
480546
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
480350
- if (gte("1.0.5+c258d3c", maxVersion)) {
480351
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.0.5+c258d3c"} is already at or above maxVersion ${maxVersion}, skipping update`);
480547
+ if (gte("1.0.7+5259b6e", maxVersion)) {
480548
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.0.7+5259b6e"} is already at or above maxVersion ${maxVersion}, skipping update`);
480352
480549
  setUpdateAvailable(false);
480353
480550
  return;
480354
480551
  }
480355
480552
  latest = maxVersion;
480356
480553
  }
480357
- const hasUpdate = latest && !gte("1.0.5+c258d3c", latest) && !shouldSkipVersion(latest);
480554
+ const hasUpdate = latest && !gte("1.0.7+5259b6e", latest) && !shouldSkipVersion(latest);
480358
480555
  setUpdateAvailable(!!hasUpdate);
480359
480556
  if (hasUpdate) {
480360
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.0.5+c258d3c"} -> ${latest}`);
480557
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.0.7+5259b6e"} -> ${latest}`);
480361
480558
  }
480362
480559
  };
480363
480560
  $2[0] = t1;
@@ -480391,7 +480588,7 @@ function PackageManagerAutoUpdater(t0) {
480391
480588
  wrap: "truncate",
480392
480589
  children: [
480393
480590
  "currentVersion: ",
480394
- "1.0.5+c258d3c"
480591
+ "1.0.7+5259b6e"
480395
480592
  ]
480396
480593
  }, undefined, true, undefined, this);
480397
480594
  $2[3] = verbose;
@@ -488559,7 +488756,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
488559
488756
  project_dir: getOriginalCwd(),
488560
488757
  added_dirs: addedDirs
488561
488758
  },
488562
- version: "1.0.5+c258d3c",
488759
+ version: "1.0.7+5259b6e",
488563
488760
  output_style: {
488564
488761
  name: outputStyleName
488565
488762
  },
@@ -500043,7 +500240,7 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
500043
500240
  } catch {}
500044
500241
  const data = {
500045
500242
  trigger,
500046
- version: "1.0.5+c258d3c",
500243
+ version: "1.0.7+5259b6e",
500047
500244
  platform: process.platform,
500048
500245
  transcript,
500049
500246
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -511449,7 +511646,7 @@ function WelcomeV2() {
511449
511646
  dimColor: true,
511450
511647
  children: [
511451
511648
  "v",
511452
- "1.0.5+c258d3c",
511649
+ "1.0.7+5259b6e",
511453
511650
  " "
511454
511651
  ]
511455
511652
  }, undefined, true, undefined, this)
@@ -511649,7 +511846,7 @@ function WelcomeV2() {
511649
511846
  dimColor: true,
511650
511847
  children: [
511651
511848
  "v",
511652
- "1.0.5+c258d3c",
511849
+ "1.0.7+5259b6e",
511653
511850
  " "
511654
511851
  ]
511655
511852
  }, undefined, true, undefined, this)
@@ -511875,7 +512072,7 @@ function AppleTerminalWelcomeV2(t0) {
511875
512072
  dimColor: true,
511876
512073
  children: [
511877
512074
  "v",
511878
- "1.0.5+c258d3c",
512075
+ "1.0.7+5259b6e",
511879
512076
  " "
511880
512077
  ]
511881
512078
  }, undefined, true, undefined, this);
@@ -512129,7 +512326,7 @@ function AppleTerminalWelcomeV2(t0) {
512129
512326
  dimColor: true,
512130
512327
  children: [
512131
512328
  "v",
512132
- "1.0.5+c258d3c",
512329
+ "1.0.7+5259b6e",
512133
512330
  " "
512134
512331
  ]
512135
512332
  }, undefined, true, undefined, this);
@@ -515193,7 +515390,7 @@ function appendToLog(path25, message) {
515193
515390
  cwd: getFsImplementation().cwd(),
515194
515391
  userType: process.env.USER_TYPE,
515195
515392
  sessionId: getSessionId(),
515196
- version: "1.0.5+c258d3c"
515393
+ version: "1.0.7+5259b6e"
515197
515394
  };
515198
515395
  getLogWriter(path25).write(messageWithTimestamp);
515199
515396
  }
@@ -519178,8 +519375,8 @@ async function getEnvLessBridgeConfig() {
519178
519375
  }
519179
519376
  async function checkEnvLessBridgeMinVersion() {
519180
519377
  const cfg = await getEnvLessBridgeConfig();
519181
- if (cfg.min_version && lt("1.0.5+c258d3c", cfg.min_version)) {
519182
- return `Your version of Vivus (${"1.0.5+c258d3c"}) is too old for Remote Control.
519378
+ if (cfg.min_version && lt("1.0.7+5259b6e", cfg.min_version)) {
519379
+ return `Your version of Vivus (${"1.0.7+5259b6e"}) is too old for Remote Control.
519183
519380
  Version ${cfg.min_version} or higher is required. Run \`vivus update\` to update.`;
519184
519381
  }
519185
519382
  return null;
@@ -519653,7 +519850,7 @@ async function initBridgeCore(params) {
519653
519850
  const rawApi = createBridgeApiClient({
519654
519851
  baseUrl,
519655
519852
  getAccessToken,
519656
- runnerVersion: "1.0.5+c258d3c",
519853
+ runnerVersion: "1.0.7+5259b6e",
519657
519854
  onDebug: logForDebugging,
519658
519855
  onAuth401,
519659
519856
  getTrustedDeviceToken
@@ -525317,7 +525514,7 @@ async function startMCPServer(cwd3, debug2, verbose) {
525317
525514
  setCwd(cwd3);
525318
525515
  const server = new Server({
525319
525516
  name: "vivus/tengu",
525320
- version: "1.0.5+c258d3c"
525517
+ version: "1.0.7+5259b6e"
525321
525518
  }, {
525322
525519
  capabilities: {
525323
525520
  tools: {}
@@ -526928,7 +527125,7 @@ __export(exports_update, {
526928
527125
  });
526929
527126
  async function update() {
526930
527127
  logEvent("tengu_update_check", {});
526931
- writeToStdout(`Current version: ${"1.0.5+c258d3c"}
527128
+ writeToStdout(`Current version: ${"1.0.7+5259b6e"}
526932
527129
  `);
526933
527130
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
526934
527131
  writeToStdout(`Checking for updates to ${channel} version...
@@ -527003,8 +527200,8 @@ async function update() {
527003
527200
  writeToStdout(`Vivus is managed by Homebrew.
527004
527201
  `);
527005
527202
  const latest = await getLatestVersion(channel);
527006
- if (latest && !gte("1.0.5+c258d3c", latest)) {
527007
- writeToStdout(`Update available: ${"1.0.5+c258d3c"} → ${latest}
527203
+ if (latest && !gte("1.0.7+5259b6e", latest)) {
527204
+ writeToStdout(`Update available: ${"1.0.7+5259b6e"} → ${latest}
527008
527205
  `);
527009
527206
  writeToStdout(`
527010
527207
  `);
@@ -527020,8 +527217,8 @@ async function update() {
527020
527217
  writeToStdout(`Vivus is managed by winget.
527021
527218
  `);
527022
527219
  const latest = await getLatestVersion(channel);
527023
- if (latest && !gte("1.0.5+c258d3c", latest)) {
527024
- writeToStdout(`Update available: ${"1.0.5+c258d3c"} → ${latest}
527220
+ if (latest && !gte("1.0.7+5259b6e", latest)) {
527221
+ writeToStdout(`Update available: ${"1.0.7+5259b6e"} → ${latest}
527025
527222
  `);
527026
527223
  writeToStdout(`
527027
527224
  `);
@@ -527037,8 +527234,8 @@ async function update() {
527037
527234
  writeToStdout(`Vivus is managed by apk.
527038
527235
  `);
527039
527236
  const latest = await getLatestVersion(channel);
527040
- if (latest && !gte("1.0.5+c258d3c", latest)) {
527041
- writeToStdout(`Update available: ${"1.0.5+c258d3c"} → ${latest}
527237
+ if (latest && !gte("1.0.7+5259b6e", latest)) {
527238
+ writeToStdout(`Update available: ${"1.0.7+5259b6e"} → ${latest}
527042
527239
  `);
527043
527240
  writeToStdout(`
527044
527241
  `);
@@ -527103,11 +527300,11 @@ async function update() {
527103
527300
  `);
527104
527301
  await gracefulShutdown(1);
527105
527302
  }
527106
- if (result.latestVersion === "1.0.5+c258d3c") {
527107
- writeToStdout(source_default.green(`Vivus is up to date (${"1.0.5+c258d3c"})`) + `
527303
+ if (result.latestVersion === "1.0.7+5259b6e") {
527304
+ writeToStdout(source_default.green(`Vivus is up to date (${"1.0.7+5259b6e"})`) + `
527108
527305
  `);
527109
527306
  } else {
527110
- writeToStdout(source_default.green(`Successfully updated from ${"1.0.5+c258d3c"} to version ${result.latestVersion}`) + `
527307
+ writeToStdout(source_default.green(`Successfully updated from ${"1.0.7+5259b6e"} to version ${result.latestVersion}`) + `
527111
527308
  `);
527112
527309
  await regenerateCompletionCache();
527113
527310
  }
@@ -527164,12 +527361,12 @@ async function update() {
527164
527361
  `);
527165
527362
  await gracefulShutdown(1);
527166
527363
  }
527167
- if (latestVersion === "1.0.5+c258d3c") {
527168
- writeToStdout(source_default.green(`Vivus is up to date (${"1.0.5+c258d3c"})`) + `
527364
+ if (latestVersion === "1.0.7+5259b6e") {
527365
+ writeToStdout(source_default.green(`Vivus is up to date (${"1.0.7+5259b6e"})`) + `
527169
527366
  `);
527170
527367
  await gracefulShutdown(0);
527171
527368
  }
527172
- writeToStdout(`New version available: ${latestVersion} (current: ${"1.0.5+c258d3c"})
527369
+ writeToStdout(`New version available: ${latestVersion} (current: ${"1.0.7+5259b6e"})
527173
527370
  `);
527174
527371
  writeToStdout(`Installing update...
527175
527372
  `);
@@ -527214,7 +527411,7 @@ async function update() {
527214
527411
  logForDebugging(`update: Installation status: ${status2}`);
527215
527412
  switch (status2) {
527216
527413
  case "success":
527217
- writeToStdout(source_default.green(`Successfully updated from ${"1.0.5+c258d3c"} to version ${latestVersion}`) + `
527414
+ writeToStdout(source_default.green(`Successfully updated from ${"1.0.7+5259b6e"} to version ${latestVersion}`) + `
527218
527415
  `);
527219
527416
  await regenerateCompletionCache();
527220
527417
  break;
@@ -527577,6 +527774,7 @@ init_debug();
527577
527774
  init_http2();
527578
527775
  init_log3();
527579
527776
  init_providers();
527777
+ init_proxyModelLabels();
527580
527778
  var bootstrapResponseSchema = lazySchema(() => exports_external2.object({
527581
527779
  client_data: exports_external2.record(exports_external2.unknown()).nullish(),
527582
527780
  additional_model_options: exports_external2.array(exports_external2.object({
@@ -527642,12 +527840,6 @@ async function fetchBootstrapAPI() {
527642
527840
  throw error41;
527643
527841
  }
527644
527842
  }
527645
- function titleCaseModelName(name) {
527646
- const base2 = name.replace(/:latest$/, "");
527647
- if (!base2)
527648
- return name;
527649
- return base2.split(/[-_/:]/).filter(Boolean).map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join(" ");
527650
- }
527651
527843
  async function fetchProxyModelOptions() {
527652
527844
  if (isFirstPartyAnthropicBaseUrl())
527653
527845
  return null;
@@ -527679,15 +527871,13 @@ async function fetchProxyModelOptions() {
527679
527871
  const details = m.details ?? {};
527680
527872
  const family = typeof details.family === "string" ? details.family : null;
527681
527873
  const paramSize = typeof details.parameter_size === "string" ? details.parameter_size : null;
527682
- const descParts = [];
527683
- if (family)
527684
- descParts.push(family);
527685
- if (paramSize)
527686
- descParts.push(paramSize);
527687
- const description = descParts.length > 0 ? descParts.join(" · ") : name;
527874
+ const { label, description } = lookupProxyModelLabel(name, {
527875
+ family,
527876
+ parameterSize: paramSize
527877
+ });
527688
527878
  options2.push({
527689
527879
  value: name,
527690
- label: titleCaseModelName(name),
527880
+ label,
527691
527881
  description
527692
527882
  });
527693
527883
  }
@@ -528251,7 +528441,7 @@ function completeOnboarding() {
528251
528441
  saveGlobalConfig((current) => ({
528252
528442
  ...current,
528253
528443
  hasCompletedOnboarding: true,
528254
- lastOnboardingVersion: "1.0.5+c258d3c"
528444
+ lastOnboardingVersion: "1.0.7+5259b6e"
528255
528445
  }));
528256
528446
  }
528257
528447
  function showDialog(root2, renderer) {
@@ -532340,7 +532530,7 @@ ${customInstructions}` : customInstructions;
532340
532530
  }
532341
532531
  }
532342
532532
  logForDiagnosticsNoPII("info", "started", {
532343
- version: "1.0.5+c258d3c",
532533
+ version: "1.0.7+5259b6e",
532344
532534
  is_native_binary: isInBundledMode()
532345
532535
  });
532346
532536
  registerCleanup(async () => {
@@ -533124,7 +533314,7 @@ Usage: vivus --remote "your task description"`, () => gracefulShutdown(1));
533124
533314
  pendingHookMessages
533125
533315
  }, renderAndRun);
533126
533316
  }
533127
- }).version("1.0.5+c258d3c (Vivus)", "-v, --version", "Output the version number");
533317
+ }).version("1.0.7+5259b6e (Vivus)", "-v, --version", "Output the version number");
533128
533318
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
533129
533319
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
533130
533320
  if (canUserConfigureAdvisor()) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vivus-agent",
3
- "version": "1.0.5",
3
+ "version": "1.0.7",
4
4
  "description": "Vivus — local AI coding agent",
5
5
  "type": "module",
6
6
  "main": "dist/main.js",