@vellumai/assistant 0.10.12-staging.2 → 0.10.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vellumai/assistant",
3
- "version": "0.10.12-staging.2",
3
+ "version": "0.10.12",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "exports": {
@@ -855,10 +855,9 @@ describe("loadConfig startup behavior", () => {
855
855
  expect(effective.balanced?.model).toBe("accounts/fireworks/models/glm-5p2");
856
856
  expect(effective.balanced?.effort).toBe("high");
857
857
  expect(effective.balanced?.source).toBe("managed");
858
- // Quality pins Anthropic Fable, the most capable managed model.
858
+ // Quality pins OpenAI Sol, the most capable managed model.
859
859
  expect(effective["quality-optimized"]?.provider).toBe("vellum");
860
- expect(effective["quality-optimized"]?.model).toBe("claude-fable-5");
861
- expect(effective["quality-optimized"]?.model).toBe("claude-fable-5");
860
+ expect(effective["quality-optimized"]?.model).toBe("gpt-5.6-sol");
862
861
  // Speed is served by DeepSeek V4 Flash on Fireworks.
863
862
  expect(effective["cost-optimized"]?.provider).toBe("vellum");
864
863
  expect(effective["cost-optimized"]?.model).toBe(
@@ -916,7 +915,7 @@ describe("loadConfig startup behavior", () => {
916
915
  const raw = JSON.parse(readFileSync(CONFIG_PATH, "utf-8"));
917
916
 
918
917
  expect(raw.llm.profiles["quality-optimized"]).toEqual(legacy);
919
- // The shadow wins over the catalog body (which serves claude-fable-5).
918
+ // The shadow wins over the catalog body (which serves gpt-5.6-sol).
920
919
  const effectiveQuality = getEffectiveProfile(
921
920
  raw.llm.profiles,
922
921
  "quality-optimized",
@@ -941,7 +940,7 @@ describe("loadConfig startup behavior", () => {
941
940
  "quality-optimized",
942
941
  );
943
942
  expect(effectiveQuality?.source).toBe("managed");
944
- expect(effectiveQuality?.model).toBe("claude-fable-5");
943
+ expect(effectiveQuality?.model).toBe("gpt-5.6-sol");
945
944
  });
946
945
 
947
946
  test("platform boot leaves a drifted managed entry byte-identical; resolution serves catalog content", () => {
@@ -53,6 +53,15 @@ describe("getEffectiveProfiles", () => {
53
53
  }
54
54
  });
55
55
 
56
+ test("the managed Quality profile routes GPT-5.6 Sol through OpenAI", () => {
57
+ const quality = CODE_DEFAULT_PROFILE_ENTRIES["quality-optimized"];
58
+ expect(quality.model).toBe("gpt-5.6-sol");
59
+ expect(resolveRoutingIdentity(quality.provider, quality.model)).toEqual({
60
+ connectionName: "vellum",
61
+ expectedProvider: "openai",
62
+ });
63
+ });
64
+
56
65
  test("defaults absent from the workspace resolve from the catalog; os-beta stays flag-gated", () => {
57
66
  const effective = getEffectiveProfiles(undefined);
58
67
  expect(Object.keys(effective).sort()).toEqual(
@@ -79,7 +79,7 @@ const VELLUM_PROFILE_IMPLS: Record<ProfileMatrixKey, DefaultProfileTemplate> = {
79
79
  },
80
80
  },
81
81
  "quality-optimized": {
82
- model: "claude-fable-5",
82
+ model: "gpt-5.6-sol",
83
83
  provider: "vellum",
84
84
  source: "managed",
85
85
  label: "Quality",
@@ -973,17 +973,19 @@ export class AnthropicProvider implements Provider {
973
973
  (restConfig as Record<string, unknown>).model?.toString() ?? this.model;
974
974
  const isHaiku = effectiveModel.includes("haiku");
975
975
  const supportsEffort = !isHaiku;
976
- // opus-4-7 / opus-4-8 and sonnet-5 reject `temperature`, `top_p`, and
977
- // `top_k` with a 400 "`temperature`/`top_p` is deprecated for this model"
978
- // — model-wide, not effort-conditional (verified 2026-06-23). opus-4-6 /
979
- // sonnet-4-6 / haiku-4-5 still accept them. fable-5 is included
980
- // conservatively (a frontier model that could not be verified directly
981
- // but follows the same deprecation direction). Stripping the params here
982
- // keeps callers that set them (e.g. the memory-v3 L2 selector's
983
- // `temperature: 0`) from 400ing. OpenRouter `anthropic/...` models
984
- // delegate to this provider, so the bare-id suffix is what matches.
976
+ // opus-4-7 / opus-4-8 / opus-5 and sonnet-5 reject `temperature`,
977
+ // `top_p`, and `top_k` with a 400 "`temperature`/`top_p` is deprecated
978
+ // for this model" — model-wide, not effort-conditional (verified
979
+ // 2026-06-23). opus-4-6 / sonnet-4-6 / haiku-4-5 still accept them.
980
+ // fable-5 is included conservatively (a frontier model that could not be
981
+ // verified directly but follows the same deprecation direction).
982
+ // Stripping the params here keeps callers that set them (e.g. the
983
+ // memory-v3 L2 selector's `temperature: 0`) from 400ing. OpenRouter
984
+ // `anthropic/...` models delegate to this provider, so the bare-id
985
+ // suffix is what matches.
985
986
  const deprecatesSamplingParams =
986
987
  /claude-opus-4-[78]\b/.test(effectiveModel) ||
988
+ /claude-opus-5\b/.test(effectiveModel) ||
987
989
  /claude-sonnet-5\b/.test(effectiveModel) ||
988
990
  effectiveModel.startsWith("claude-fable-");
989
991
  const mergedOutputConfig = {
@@ -179,6 +179,23 @@ const RAW_PROVIDER_CATALOG: ProviderCatalogEntry[] = [
179
179
  cacheReadPer1mTokens: 1,
180
180
  },
181
181
  },
182
+ {
183
+ id: "claude-opus-5",
184
+ displayName: "Claude Opus 5",
185
+ contextWindowTokens: 1000000,
186
+ maxOutputTokens: 128000,
187
+ longContextPricingThresholdTokens: 200000,
188
+ supportsThinking: true,
189
+ supportsCaching: true,
190
+ supportsVision: true,
191
+ supportsToolUse: true,
192
+ pricing: {
193
+ inputPer1mTokens: 5,
194
+ outputPer1mTokens: 25,
195
+ cacheWritePer1mTokens: 6.25,
196
+ cacheReadPer1mTokens: 0.5,
197
+ },
198
+ },
182
199
  {
183
200
  id: "claude-opus-4-8",
184
201
  displayName: "Claude Opus 4.8",
@@ -1000,6 +1017,23 @@ const RAW_PROVIDER_CATALOG: ProviderCatalogEntry[] = [
1000
1017
  cacheReadPer1mTokens: 1,
1001
1018
  },
1002
1019
  },
1020
+ {
1021
+ id: "anthropic/claude-opus-5",
1022
+ displayName: "Claude Opus 5",
1023
+ contextWindowTokens: 1000000,
1024
+ maxOutputTokens: 128000,
1025
+ longContextPricingThresholdTokens: 200000,
1026
+ supportsThinking: true,
1027
+ supportsCaching: true,
1028
+ supportsVision: true,
1029
+ supportsToolUse: true,
1030
+ pricing: {
1031
+ inputPer1mTokens: 5,
1032
+ outputPer1mTokens: 25,
1033
+ cacheWritePer1mTokens: 6.25,
1034
+ cacheReadPer1mTokens: 0.5,
1035
+ },
1036
+ },
1003
1037
  {
1004
1038
  id: "anthropic/claude-opus-4.8",
1005
1039
  displayName: "Claude Opus 4.8",
@@ -1733,6 +1767,23 @@ const RAW_PROVIDER_CATALOG: ProviderCatalogEntry[] = [
1733
1767
  cacheReadPer1mTokens: 1,
1734
1768
  },
1735
1769
  },
1770
+ {
1771
+ id: "anthropic/claude-opus-5",
1772
+ displayName: "Claude Opus 5",
1773
+ contextWindowTokens: 1000000,
1774
+ maxOutputTokens: 128000,
1775
+ longContextPricingThresholdTokens: 200000,
1776
+ supportsThinking: true,
1777
+ supportsCaching: true,
1778
+ supportsVision: true,
1779
+ supportsToolUse: true,
1780
+ pricing: {
1781
+ inputPer1mTokens: 5,
1782
+ outputPer1mTokens: 25,
1783
+ cacheWritePer1mTokens: 6.25,
1784
+ cacheReadPer1mTokens: 0.5,
1785
+ },
1786
+ },
1736
1787
  {
1737
1788
  id: "anthropic/claude-opus-4.8",
1738
1789
  displayName: "Claude Opus 4.8",