@code-yeongyu/senpi-ai 2026.9.28 → 2026.9.29-2
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/api/anthropic-messages.d.ts.map +1 -1
- package/dist/api/anthropic-messages.js +76 -24
- package/dist/api/anthropic-messages.js.map +1 -1
- package/dist/api/bedrock-converse-stream.d.ts.map +1 -1
- package/dist/api/bedrock-converse-stream.js +10 -3
- package/dist/api/bedrock-converse-stream.js.map +1 -1
- package/dist/api/github-copilot-endpoint.d.ts +19 -0
- package/dist/api/github-copilot-endpoint.d.ts.map +1 -0
- package/dist/api/github-copilot-endpoint.js +48 -0
- package/dist/api/github-copilot-endpoint.js.map +1 -0
- package/dist/api/github-copilot-errors.d.ts +9 -0
- package/dist/api/github-copilot-errors.d.ts.map +1 -0
- package/dist/api/github-copilot-errors.js +78 -0
- package/dist/api/github-copilot-errors.js.map +1 -0
- package/dist/api/github-copilot-headers.d.ts +1 -0
- package/dist/api/github-copilot-headers.d.ts.map +1 -1
- package/dist/api/github-copilot-headers.js +3 -0
- package/dist/api/github-copilot-headers.js.map +1 -1
- package/dist/api/openai-completions.d.ts.map +1 -1
- package/dist/api/openai-completions.js +31 -20
- package/dist/api/openai-completions.js.map +1 -1
- package/dist/api/openai-responses-shared.d.ts.map +1 -1
- package/dist/api/openai-responses-shared.js +4 -1
- package/dist/api/openai-responses-shared.js.map +1 -1
- package/dist/api/openai-responses.d.ts.map +1 -1
- package/dist/api/openai-responses.js +48 -9
- package/dist/api/openai-responses.js.map +1 -1
- package/dist/auth/helpers.d.ts +1 -0
- package/dist/auth/helpers.d.ts.map +1 -1
- package/dist/auth/helpers.js +1 -0
- package/dist/auth/helpers.js.map +1 -1
- package/dist/auth/oauth/github-copilot-model-catalog.d.ts +7 -0
- package/dist/auth/oauth/github-copilot-model-catalog.d.ts.map +1 -0
- package/dist/auth/oauth/github-copilot-model-catalog.js +46 -0
- package/dist/auth/oauth/github-copilot-model-catalog.js.map +1 -0
- package/dist/auth/oauth/github-copilot.d.ts.map +1 -1
- package/dist/auth/oauth/github-copilot.js +24 -77
- package/dist/auth/oauth/github-copilot.js.map +1 -1
- package/dist/auth/pool/slots.d.ts.map +1 -1
- package/dist/auth/pool/slots.js +21 -3
- package/dist/auth/pool/slots.js.map +1 -1
- package/dist/auth/resolve.d.ts +6 -0
- package/dist/auth/resolve.d.ts.map +1 -1
- package/dist/auth/resolve.js +6 -5
- package/dist/auth/resolve.js.map +1 -1
- package/dist/auth/types.d.ts +14 -0
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/auth/types.js.map +1 -1
- package/dist/cursor/context-limit-store.d.ts.map +1 -1
- package/dist/cursor/context-limit-store.js +23 -18
- package/dist/cursor/context-limit-store.js.map +1 -1
- package/dist/models.d.ts.map +1 -1
- package/dist/models.js +3 -2
- package/dist/models.js.map +1 -1
- package/dist/openai-responses-compat.d.ts +6 -0
- package/dist/openai-responses-compat.d.ts.map +1 -1
- package/dist/openai-responses-compat.js.map +1 -1
- package/dist/providers/amazon-bedrock.js +13 -13
- package/dist/providers/amazon-bedrock.js.map +1 -1
- package/dist/providers/data/.manifest.json +1 -1
- package/dist/providers/data/amazon-bedrock.json +1 -1
- package/dist/providers/data/anthropic.json +1 -1
- package/dist/providers/data/azure-openai-responses.json +1 -1
- package/dist/providers/data/cloudflare-ai-gateway.json +1 -1
- package/dist/providers/data/cloudflare-workers-ai.json +1 -1
- package/dist/providers/data/github-copilot.json +1 -1
- package/dist/providers/data/mistral.json +1 -1
- package/dist/providers/data/openai.json +1 -1
- package/dist/providers/data/opencode-go.json +1 -1
- package/dist/providers/data/opencode.json +1 -1
- package/dist/providers/data/opengateway.json +1 -1
- package/dist/providers/data/openrouter.json +1 -1
- package/dist/providers/data/together.json +1 -1
- package/dist/providers/data/venice.json +1 -1
- package/dist/providers/data/vercel-ai-gateway.json +1 -1
- package/dist/providers/devin.models.d.ts +5 -3
- package/dist/providers/devin.models.d.ts.map +1 -1
- package/dist/providers/devin.models.js +6 -5
- package/dist/providers/devin.models.js.map +1 -1
- package/dist/providers/github-copilot-limits.d.ts +11 -0
- package/dist/providers/github-copilot-limits.d.ts.map +1 -0
- package/dist/providers/github-copilot-limits.js +65 -0
- package/dist/providers/github-copilot-limits.js.map +1 -0
- package/dist/providers/github-copilot.d.ts.map +1 -1
- package/dist/providers/github-copilot.js +24 -3
- package/dist/providers/github-copilot.js.map +1 -1
- package/dist/providers/google-vertex.d.ts.map +1 -1
- package/dist/providers/google-vertex.js +3 -5
- package/dist/providers/google-vertex.js.map +1 -1
- package/dist/session-resources.d.ts.map +1 -1
- package/dist/session-resources.js +2 -1
- package/dist/session-resources.js.map +1 -1
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/block-symbols.d.ts +4 -0
- package/dist/utils/block-symbols.d.ts.map +1 -1
- package/dist/utils/block-symbols.js +10 -6
- package/dist/utils/block-symbols.js.map +1 -1
- package/dist/utils/claude-code-version-cache.d.ts +12 -0
- package/dist/utils/claude-code-version-cache.d.ts.map +1 -0
- package/dist/utils/claude-code-version-cache.js +60 -0
- package/dist/utils/claude-code-version-cache.js.map +1 -0
- package/dist/utils/claude-code-version.d.ts +78 -0
- package/dist/utils/claude-code-version.d.ts.map +1 -0
- package/dist/utils/claude-code-version.js +203 -0
- package/dist/utils/claude-code-version.js.map +1 -0
- package/dist/utils/cursor-context-limit.d.ts.map +1 -1
- package/dist/utils/cursor-context-limit.js +51 -45
- package/dist/utils/cursor-context-limit.js.map +1 -1
- package/dist/utils/github-copilot-tool-limit.d.ts +10 -0
- package/dist/utils/github-copilot-tool-limit.d.ts.map +1 -0
- package/dist/utils/github-copilot-tool-limit.js +75 -0
- package/dist/utils/github-copilot-tool-limit.js.map +1 -0
- package/dist/utils/overflow.d.ts.map +1 -1
- package/dist/utils/overflow.js +3 -1
- package/dist/utils/overflow.js.map +1 -1
- package/dist/utils/process-singleton.d.ts +10 -0
- package/dist/utils/process-singleton.d.ts.map +1 -0
- package/dist/utils/process-singleton.js +18 -0
- package/dist/utils/process-singleton.js.map +1 -0
- package/dist/utils/prompt-cache-ttl.d.ts +3 -1
- package/dist/utils/prompt-cache-ttl.d.ts.map +1 -1
- package/dist/utils/prompt-cache-ttl.js +4 -2
- package/dist/utils/prompt-cache-ttl.js.map +1 -1
- package/dist/utils/retry.d.ts +3 -0
- package/dist/utils/retry.d.ts.map +1 -1
- package/dist/utils/retry.js +15 -3
- package/dist/utils/retry.js.map +1 -1
- package/dist/utils/tool-choice-fallback.d.ts +29 -0
- package/dist/utils/tool-choice-fallback.d.ts.map +1 -1
- package/dist/utils/tool-choice-fallback.js +50 -2
- package/dist/utils/tool-choice-fallback.js.map +1 -1
- package/dist/utils/tool-schema-compat.d.ts +2 -0
- package/dist/utils/tool-schema-compat.d.ts.map +1 -1
- package/dist/utils/tool-schema-compat.js +28 -9
- package/dist/utils/tool-schema-compat.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic-messages.d.ts","sourceRoot":"","sources":["../../src/api/anthropic-messages.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAC1C,OAAO,KAAK,EAMX,+BAA+B,EAK/B,MAAM,uDAAuD,CAAC;AAI/D,OAAO,KAAK,EACX,wBAAwB,EAKxB,OAAO,EAGP,KAAK,EAGL,mBAAmB,EAEnB,cAAc,EACd,aAAa,EAGb,IAAI,EAIJ,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"anthropic-messages.d.ts","sourceRoot":"","sources":["../../src/api/anthropic-messages.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAC1C,OAAO,KAAK,EAMX,+BAA+B,EAK/B,MAAM,uDAAuD,CAAC;AAI/D,OAAO,KAAK,EACX,wBAAwB,EAKxB,OAAO,EAGP,KAAK,EAGL,mBAAmB,EAEnB,cAAc,EACd,aAAa,EAGb,IAAI,EAIJ,MAAM,aAAa,CAAC;AAwDrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AA6ElE,eAAO,MAAM,gBAAgB,SAAU,MAAM,WAC2B,CAAC;AACzE,eAAO,MAAM,kBAAkB,SAAU,MAAM,UAAU,IAAI,EAAE,WAS9D,CAAC;AA4EF,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;AAE1E,MAAM,MAAM,wBAAwB,GAAG,YAAY,GAAG,SAAS,CAAC;AAsGhE,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACtD;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB;;;;;;;;;;;OAWG;IACH,eAAe,CAAC,EAAE,wBAAwB,CAAC;IAC3C;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,wEAAwE;IACxE,gBAAgB,CAAC,EAAE,wBAAwB,CAAC;IAC5C;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE;;;;OAIG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;CACnB;AAmvBD,eAAO,MAAM,MAAM,EAAE,cAAc,CAAC,oBAAoB,EAAE,gBAAgB,CA0gBzE,CAAC;AAyFF,eAAO,MAAM,YAAY,EAAE,cAAc,CAAC,oBAAoB,EAAE,mBAAmB,CA+ClF,CAAC;AAoJF,wBAAgB,mCAAmC,CAClD,KAAK,EAAE,KAAK,CAAC,oBAAoB,CAAC,EAClC,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,gBAAgB,GACxB,+BAA+B,CAkBjC"}
|
|
@@ -4,9 +4,11 @@ import { readProviderDiagnostic } from "../provider-diagnostic.js";
|
|
|
4
4
|
import { registerSessionResourceCleanup } from "../session-resources.js";
|
|
5
5
|
import { isVideoMimeType } from "../types.js";
|
|
6
6
|
import { combineAbortSignals } from "../utils/abort-signals.js";
|
|
7
|
+
import { claudeCodeVersionTooOldHint, getClaudeCodeVersion, isClaudeCodeVersionTooOldError, recoverClaudeCodeVersion, } from "../utils/claude-code-version.js";
|
|
7
8
|
import { splitDeferredTools } from "../utils/deferred-tools.js";
|
|
8
9
|
import { appendAssistantMessageDiagnostic } from "../utils/diagnostics.js";
|
|
9
10
|
import { AssistantMessageEventStream } from "../utils/event-stream.js";
|
|
11
|
+
import { formatGitHubCopilotToolLimitError, limitGitHubCopilotTools, recordGitHubCopilotToolLimit, } from "../utils/github-copilot-tool-limit.js";
|
|
10
12
|
import { headersToRecord, providerHeadersToRecord } from "../utils/headers.js";
|
|
11
13
|
import { parseJsonWithRepair, parseStreamingJson } from "../utils/json-parse.js";
|
|
12
14
|
import { getPiUserAgent } from "../utils/pi-user-agent.js";
|
|
@@ -20,12 +22,13 @@ import { normalizeAnthropicRetryFailure } from "../utils/retry-profile/failure.j
|
|
|
20
22
|
import { sanitizeSurrogates } from "../utils/sanitize-unicode.js";
|
|
21
23
|
import { applyServerFallbackAbort, applyServerFallbackContinuation, parseServerFallbackReceipt, parseStickyFallbackReceipt, } from "../utils/server-fallback-receipt.js";
|
|
22
24
|
import { normalizeToolCallId } from "../utils/tool-call-id.js";
|
|
23
|
-
import {
|
|
25
|
+
import { sendWithForcedToolChoiceFallback } from "../utils/tool-choice-fallback.js";
|
|
24
26
|
import { resolveRootObjectSchema } from "../utils/tool-schema-compat.js";
|
|
25
27
|
import { sanitizeAnthropicToolPairs } from "./anthropic-tool-pairs.js";
|
|
26
28
|
import { demoteUnavailableToolReferences } from "./anthropic-tool-references.js";
|
|
27
29
|
import { resolveCloudflareBaseUrl } from "./cloudflare.js";
|
|
28
30
|
import { getJsonSchemaToolParameters, resolveJsonSchemaStrictSampling } from "./constrained-sampling.js";
|
|
31
|
+
import { withGitHubCopilotFailureNote } from "./github-copilot-errors.js";
|
|
29
32
|
import { buildCopilotDynamicHeaders, hasCopilotVisionInput } from "./github-copilot-headers.js";
|
|
30
33
|
import { ANTHROPIC_RESERVED_BODY_KEYS, adjustMaxTokensForThinking, buildBaseOptions, clampMaxTokensToContext, } from "./simple-options.js";
|
|
31
34
|
import { transformMessages } from "./transform-messages.js";
|
|
@@ -61,8 +64,11 @@ function getCacheControl(model, cacheRetention, env) {
|
|
|
61
64
|
cacheControl: { type: "ephemeral", ...(ttl && { ttl }) },
|
|
62
65
|
};
|
|
63
66
|
}
|
|
64
|
-
// Stealth mode: Mimic Claude Code's tool naming exactly
|
|
65
|
-
|
|
67
|
+
// Stealth mode: Mimic Claude Code's identity and tool naming exactly.
|
|
68
|
+
// The bundled Claude Code version and the floor of the advertised `claude-cli/<version>`
|
|
69
|
+
// (see utils/claude-code-version.ts). Keep this exact declaration: a downstream installer
|
|
70
|
+
// (oh-my-openagent) rewrites it byte-for-byte in the installed dist and bundle.
|
|
71
|
+
const claudeCodeVersion = "2.1.284";
|
|
66
72
|
// Claude Code 2.x tool names (canonical casing)
|
|
67
73
|
// Source: https://cchistory.mariozechner.at/data/prompts-2.1.11.md
|
|
68
74
|
// To update: https://github.com/badlogic/cchistory
|
|
@@ -176,7 +182,14 @@ const NATIVE_XHIGH_EFFORT_MODEL_MARKERS = [
|
|
|
176
182
|
* this as `compat.supportsDisabledThinking: false`, but `models.json` entries and third-party
|
|
177
183
|
* gateway rows carry no generated compat, so the family fact has to live here as well.
|
|
178
184
|
*/
|
|
179
|
-
const DISABLED_THINKING_REJECTING_MODEL_MARKERS = [
|
|
185
|
+
const DISABLED_THINKING_REJECTING_MODEL_MARKERS = [
|
|
186
|
+
"fable-5",
|
|
187
|
+
"mythos-5",
|
|
188
|
+
"opus-5-5",
|
|
189
|
+
"opus-5.5",
|
|
190
|
+
"sonnet-5-5",
|
|
191
|
+
"sonnet-5.5",
|
|
192
|
+
];
|
|
180
193
|
const UNSUPPORTED_NATIVE_COMPUTER_TOOL_MODEL_MARKERS = [
|
|
181
194
|
"opus-4-6",
|
|
182
195
|
"opus-4.6",
|
|
@@ -845,12 +858,13 @@ export const stream = (model, context, options) => {
|
|
|
845
858
|
const requestSignal = combinedAbort.signal;
|
|
846
859
|
try {
|
|
847
860
|
let client;
|
|
848
|
-
let isOAuth;
|
|
861
|
+
let isOAuth = false;
|
|
862
|
+
let advertisedClaudeCodeVersion;
|
|
849
863
|
let usageModel = model;
|
|
850
864
|
let inputTransformations;
|
|
865
|
+
let openClient;
|
|
851
866
|
if (options?.client) {
|
|
852
867
|
client = options.client;
|
|
853
|
-
isOAuth = false;
|
|
854
868
|
}
|
|
855
869
|
else {
|
|
856
870
|
const apiKey = options?.apiKey;
|
|
@@ -866,10 +880,36 @@ export const stream = (model, context, options) => {
|
|
|
866
880
|
}
|
|
867
881
|
const cacheRetention = resolveCacheRetention(options?.cacheRetention ?? model.cacheRetention, options?.env, "short");
|
|
868
882
|
const cacheSessionId = cacheRetention === "none" ? undefined : options?.sessionId;
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
883
|
+
openClient = () => {
|
|
884
|
+
const created = createClient(model, apiKey, options?.interleavedThinking ?? true, shouldUseFineGrainedToolStreamingBeta(model, context), options?.refusalFallbacks !== undefined, optionsHeaders, options?.fetch, copilotDynamicHeaders, cacheSessionId, options?.env);
|
|
885
|
+
client = created.client;
|
|
886
|
+
isOAuth = created.isOAuthToken;
|
|
887
|
+
advertisedClaudeCodeVersion = created.claudeCodeVersion;
|
|
888
|
+
};
|
|
889
|
+
openClient();
|
|
872
890
|
}
|
|
891
|
+
// One retry per request: a `claude_code_version_too_old` 400 names the version Anthropic
|
|
892
|
+
// wants, so the fingerprint is raised and the same request goes out again with it.
|
|
893
|
+
let claudeCodeVersionRetried = false;
|
|
894
|
+
const retryWithNewerClaudeCode = async (error) => {
|
|
895
|
+
if (claudeCodeVersionRetried ||
|
|
896
|
+
openClient === undefined ||
|
|
897
|
+
advertisedClaudeCodeVersion === undefined ||
|
|
898
|
+
!isClaudeCodeVersionTooOldError(error)) {
|
|
899
|
+
return false;
|
|
900
|
+
}
|
|
901
|
+
const next = await recoverClaudeCodeVersion(error, claudeCodeVersion, advertisedClaudeCodeVersion, options?.env);
|
|
902
|
+
if (next === undefined)
|
|
903
|
+
return false;
|
|
904
|
+
claudeCodeVersionRetried = true;
|
|
905
|
+
openClient();
|
|
906
|
+
return true;
|
|
907
|
+
};
|
|
908
|
+
const noteTooOldClaudeCode = (error) => {
|
|
909
|
+
if (advertisedClaudeCodeVersion !== undefined && isClaudeCodeVersionTooOldError(error)) {
|
|
910
|
+
error.message = `${error.message}\n${claudeCodeVersionTooOldHint(advertisedClaudeCodeVersion)}`;
|
|
911
|
+
}
|
|
912
|
+
};
|
|
873
913
|
const fallbackKey = unsignedThinkingFallbackKey(model, options?.sessionId);
|
|
874
914
|
let unsignedThinkingReplay = fallbackKey && unsignedThinkingTextReplayFallbacks.has(fallbackKey)
|
|
875
915
|
? "text"
|
|
@@ -885,6 +925,11 @@ export const stream = (model, context, options) => {
|
|
|
885
925
|
params = sanitizeAnthropicToolPairs(demoteUnavailableToolReferences(params));
|
|
886
926
|
const payloadRequestMetadata = extractPayloadRequestMetadata(params);
|
|
887
927
|
params = payloadRequestMetadata.params;
|
|
928
|
+
const limitedTools = limitGitHubCopilotTools(model.provider, params.tools, params.tool_choice);
|
|
929
|
+
if (limitedTools.omittedCount > 0) {
|
|
930
|
+
params = { ...params, tools: limitedTools.tools };
|
|
931
|
+
recordGitHubCopilotToolLimit(output, limitedTools.omittedCount);
|
|
932
|
+
}
|
|
888
933
|
const requestOptions = {
|
|
889
934
|
...(requestSignal ? { signal: requestSignal } : {}),
|
|
890
935
|
...(options?.timeoutMs !== undefined ? { timeout: options.timeoutMs } : {}),
|
|
@@ -892,18 +937,14 @@ export const stream = (model, context, options) => {
|
|
|
892
937
|
...(payloadRequestMetadata.headers ? { headers: payloadRequestMetadata.headers } : {}),
|
|
893
938
|
};
|
|
894
939
|
const send = (body) => awaitProviderTransport(() => client.beta.messages.create({ ...body, stream: true }, requestOptions).asResponse(), anthropicProviderDiagnosticFromError);
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
return { params, response };
|
|
904
|
-
}
|
|
905
|
-
throw error;
|
|
906
|
-
}
|
|
940
|
+
const sent = await sendWithForcedToolChoiceFallback({
|
|
941
|
+
target: model,
|
|
942
|
+
params,
|
|
943
|
+
acceptsForcedToolChoice: getAnthropicCompat(model).supportsForcedToolChoice,
|
|
944
|
+
isForced: isForcedAnthropicToolChoice,
|
|
945
|
+
send,
|
|
946
|
+
});
|
|
947
|
+
return { params: sent.params, response: sent.result };
|
|
907
948
|
};
|
|
908
949
|
let requestOutcome;
|
|
909
950
|
try {
|
|
@@ -918,6 +959,16 @@ export const stream = (model, context, options) => {
|
|
|
918
959
|
unsignedThinkingTextReplayFallbacks.add(fallbackKey);
|
|
919
960
|
return createRequest();
|
|
920
961
|
}
|
|
962
|
+
if (await retryWithNewerClaudeCode(error)) {
|
|
963
|
+
try {
|
|
964
|
+
return await createRequest();
|
|
965
|
+
}
|
|
966
|
+
catch (retryError) {
|
|
967
|
+
noteTooOldClaudeCode(retryError);
|
|
968
|
+
throw retryError;
|
|
969
|
+
}
|
|
970
|
+
}
|
|
971
|
+
noteTooOldClaudeCode(error);
|
|
921
972
|
throw error;
|
|
922
973
|
}
|
|
923
974
|
}, {
|
|
@@ -1257,7 +1308,7 @@ export const stream = (model, context, options) => {
|
|
|
1257
1308
|
const providerDiagnostic = output.stopReason === "error" ? readProviderDiagnostic(error) : undefined;
|
|
1258
1309
|
if (providerDiagnostic !== undefined)
|
|
1259
1310
|
output.providerDiagnostic = providerDiagnostic;
|
|
1260
|
-
output.errorMessage = errorMessage;
|
|
1311
|
+
output.errorMessage = withGitHubCopilotFailureNote(formatGitHubCopilotToolLimitError(output, errorMessage), model.provider, error);
|
|
1261
1312
|
stream.push({ type: "error", reason: output.stopReason, error: output });
|
|
1262
1313
|
stream.end();
|
|
1263
1314
|
}
|
|
@@ -1418,6 +1469,7 @@ function createClient(model, apiKey, interleavedThinking, useFineGrainedToolStre
|
|
|
1418
1469
|
}
|
|
1419
1470
|
// OAuth: Bearer auth, Claude Code identity headers
|
|
1420
1471
|
if (apiKey && isOAuthToken(apiKey)) {
|
|
1472
|
+
const advertisedClaudeCodeVersion = getClaudeCodeVersion(claudeCodeVersion, env);
|
|
1421
1473
|
const client = new Anthropic({
|
|
1422
1474
|
apiKey: null,
|
|
1423
1475
|
authToken: apiKey,
|
|
@@ -1428,11 +1480,11 @@ function createClient(model, apiKey, interleavedThinking, useFineGrainedToolStre
|
|
|
1428
1480
|
accept: "application/json",
|
|
1429
1481
|
"anthropic-dangerous-direct-browser-access": "true",
|
|
1430
1482
|
"anthropic-beta": ["claude-code-20250219", "oauth-2025-04-20", ...betaFeatures].join(","),
|
|
1431
|
-
"user-agent": `claude-cli/${
|
|
1483
|
+
"user-agent": `claude-cli/${advertisedClaudeCodeVersion}`,
|
|
1432
1484
|
"x-app": "cli",
|
|
1433
1485
|
}, model.headers, optionsHeaders)),
|
|
1434
1486
|
});
|
|
1435
|
-
return { client, isOAuthToken: true };
|
|
1487
|
+
return { client, isOAuthToken: true, claudeCodeVersion: advertisedClaudeCodeVersion };
|
|
1436
1488
|
}
|
|
1437
1489
|
// API key auth
|
|
1438
1490
|
const affinityCompat = getAnthropicCompat(model);
|