@anvia/anthropic 1.0.8 → 1.0.9
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/index.d.ts +29 -15
- package/dist/index.js +58 -3
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
import Anthropic from '@anthropic-ai/sdk';
|
|
2
|
-
import { ModelContextLimits, StreamingCompletionModel } from '@anvia/core/completion';
|
|
2
|
+
import { ReasoningEffortControls, NoCompletionModelControls, CompletionModelControls, ModelContextLimits, StreamingCompletionModel } from '@anvia/core/completion';
|
|
3
3
|
import { ModelId, ModelListingClient, ModelList } from '@anvia/core/model-listing';
|
|
4
4
|
import { ClientOptions, AnthropicVertex } from '@anthropic-ai/vertex-sdk';
|
|
5
5
|
|
|
6
6
|
type KnownAnthropicCompletionModelId = "claude-3-5-sonnet-20240620" | "claude-3-5-sonnet-20241022" | "claude-3-7-sonnet-20250219" | "claude-3-haiku-20240307" | "claude-3-opus-20240229" | "claude-3-sonnet-20240229" | "claude-fable-5" | "claude-haiku-4-5" | "claude-haiku-4-5-20251001" | "claude-opus-4-0" | "claude-opus-4-1" | "claude-opus-4-1-20250805" | "claude-opus-4-20250514" | "claude-opus-4-5" | "claude-opus-4-5-20251101" | "claude-opus-4-6" | "claude-opus-4-7" | "claude-opus-4-8" | "claude-opus-5" | "claude-mythos-5" | "claude-mythos-preview" | "claude-sonnet-4-0" | "claude-sonnet-4-20250514" | "claude-sonnet-4-5" | "claude-sonnet-4-5-20250929" | "claude-sonnet-4-6" | "claude-sonnet-5";
|
|
7
7
|
type AnthropicCompletionModelId = ModelId<KnownAnthropicCompletionModelId>;
|
|
8
8
|
|
|
9
|
+
declare const ANTHROPIC_REASONING_EFFORTS: readonly ["low", "medium", "high", "xhigh", "max"];
|
|
10
|
+
type AnthropicReasoningEffort = (typeof ANTHROPIC_REASONING_EFFORTS)[number];
|
|
11
|
+
type AnthropicReasoningControls = ReasoningEffortControls<AnthropicReasoningEffort>;
|
|
12
|
+
type AdvancedEffortModel = "claude-fable-5" | "claude-mythos-5" | "claude-opus-4-7" | "claude-opus-4-8" | "claude-opus-5" | "claude-sonnet-5";
|
|
13
|
+
type MaxEffortModel = AdvancedEffortModel | "claude-mythos-preview" | "claude-opus-4-6" | "claude-sonnet-4-6";
|
|
14
|
+
type EffortModel = MaxEffortModel | "claude-opus-4-5" | "claude-opus-4-5-20251101";
|
|
15
|
+
type AnthropicControlsFor<ModelId extends AnthropicCompletionModelId> = ModelId extends AdvancedEffortModel ? AnthropicReasoningControls : ModelId extends MaxEffortModel ? ReasoningEffortControls<"low" | "medium" | "high" | "max"> : ModelId extends EffortModel ? ReasoningEffortControls<"low" | "medium" | "high"> : NoCompletionModelControls;
|
|
16
|
+
|
|
9
17
|
type AnthropicManagedClientOptions = {
|
|
10
18
|
apiKey: string;
|
|
11
19
|
baseUrl?: string | undefined;
|
|
@@ -17,15 +25,16 @@ type AnthropicInjectedClientOptions = {
|
|
|
17
25
|
baseUrl?: never;
|
|
18
26
|
};
|
|
19
27
|
type AnthropicClientOptions = AnthropicManagedClientOptions | AnthropicInjectedClientOptions;
|
|
20
|
-
type AnthropicCompletionModelOptions = {
|
|
21
|
-
modelId:
|
|
28
|
+
type AnthropicCompletionModelOptions<ModelId extends AnthropicCompletionModelId = AnthropicCompletionModelId, Controls extends CompletionModelControls = AnthropicControlsFor<ModelId>> = {
|
|
29
|
+
modelId: ModelId;
|
|
22
30
|
contextLimits?: ModelContextLimits | undefined;
|
|
31
|
+
controls?: Controls | undefined;
|
|
23
32
|
};
|
|
24
|
-
type AnthropicCompletionModelHandle = StreamingCompletionModel<unknown>;
|
|
33
|
+
type AnthropicCompletionModelHandle<Controls extends CompletionModelControls = CompletionModelControls> = StreamingCompletionModel<unknown, Controls>;
|
|
25
34
|
declare class AnthropicClient implements ModelListingClient {
|
|
26
35
|
private readonly sdk;
|
|
27
36
|
constructor(options: AnthropicClientOptions);
|
|
28
|
-
completionModel(options: AnthropicCompletionModelOptions): AnthropicCompletionModelHandle
|
|
37
|
+
completionModel<const ModelId extends AnthropicCompletionModelId, const Controls extends CompletionModelControls = AnthropicControlsFor<ModelId>>(options: AnthropicCompletionModelOptions<ModelId, Controls>): AnthropicCompletionModelHandle<Controls>;
|
|
29
38
|
listModels(options?: {
|
|
30
39
|
abortSignal?: AbortSignal | undefined;
|
|
31
40
|
}): Promise<ModelList>;
|
|
@@ -40,31 +49,36 @@ type AnthropicVertexInjectedClientOptions = {
|
|
|
40
49
|
[Key in Exclude<keyof AnthropicVertexManagedClientOptions, "client">]?: never;
|
|
41
50
|
};
|
|
42
51
|
type AnthropicVertexClientOptions = AnthropicVertexManagedClientOptions | AnthropicVertexInjectedClientOptions;
|
|
43
|
-
type AnthropicVertexCompletionModelOptions = {
|
|
44
|
-
modelId:
|
|
52
|
+
type AnthropicVertexCompletionModelOptions<ModelId extends AnthropicCompletionModelId = AnthropicCompletionModelId, Controls extends CompletionModelControls = AnthropicControlsFor<ModelId>> = {
|
|
53
|
+
modelId: ModelId;
|
|
45
54
|
contextLimits?: ModelContextLimits | undefined;
|
|
55
|
+
controls?: Controls | undefined;
|
|
46
56
|
};
|
|
47
|
-
type AnthropicVertexCompletionModelHandle = StreamingCompletionModel<unknown>;
|
|
57
|
+
type AnthropicVertexCompletionModelHandle<Controls extends CompletionModelControls = CompletionModelControls> = StreamingCompletionModel<unknown, Controls>;
|
|
48
58
|
declare class AnthropicVertexClient {
|
|
49
59
|
private readonly sdk;
|
|
50
60
|
constructor(options: AnthropicVertexClientOptions);
|
|
51
|
-
completionModel(options: AnthropicVertexCompletionModelOptions): AnthropicVertexCompletionModelHandle
|
|
61
|
+
completionModel<const ModelId extends AnthropicCompletionModelId, const Controls extends CompletionModelControls = AnthropicControlsFor<ModelId>>(options: AnthropicVertexCompletionModelOptions<ModelId, Controls>): AnthropicVertexCompletionModelHandle<Controls>;
|
|
52
62
|
}
|
|
53
63
|
|
|
64
|
+
declare const index_ANTHROPIC_REASONING_EFFORTS: typeof ANTHROPIC_REASONING_EFFORTS;
|
|
54
65
|
type index_AnthropicClient = AnthropicClient;
|
|
55
66
|
declare const index_AnthropicClient: typeof AnthropicClient;
|
|
56
67
|
type index_AnthropicClientOptions = AnthropicClientOptions;
|
|
57
|
-
type index_AnthropicCompletionModelHandle = AnthropicCompletionModelHandle
|
|
68
|
+
type index_AnthropicCompletionModelHandle<Controls extends CompletionModelControls = CompletionModelControls> = AnthropicCompletionModelHandle<Controls>;
|
|
58
69
|
type index_AnthropicCompletionModelId = AnthropicCompletionModelId;
|
|
59
|
-
type index_AnthropicCompletionModelOptions = AnthropicCompletionModelOptions
|
|
70
|
+
type index_AnthropicCompletionModelOptions<ModelId extends AnthropicCompletionModelId = AnthropicCompletionModelId, Controls extends CompletionModelControls = AnthropicControlsFor<ModelId>> = AnthropicCompletionModelOptions<ModelId, Controls>;
|
|
71
|
+
type index_AnthropicControlsFor<ModelId extends AnthropicCompletionModelId> = AnthropicControlsFor<ModelId>;
|
|
72
|
+
type index_AnthropicReasoningControls = AnthropicReasoningControls;
|
|
73
|
+
type index_AnthropicReasoningEffort = AnthropicReasoningEffort;
|
|
60
74
|
type index_AnthropicVertexClient = AnthropicVertexClient;
|
|
61
75
|
declare const index_AnthropicVertexClient: typeof AnthropicVertexClient;
|
|
62
76
|
type index_AnthropicVertexClientOptions = AnthropicVertexClientOptions;
|
|
63
|
-
type index_AnthropicVertexCompletionModelHandle = AnthropicVertexCompletionModelHandle
|
|
64
|
-
type index_AnthropicVertexCompletionModelOptions = AnthropicVertexCompletionModelOptions
|
|
77
|
+
type index_AnthropicVertexCompletionModelHandle<Controls extends CompletionModelControls = CompletionModelControls> = AnthropicVertexCompletionModelHandle<Controls>;
|
|
78
|
+
type index_AnthropicVertexCompletionModelOptions<ModelId extends AnthropicCompletionModelId = AnthropicCompletionModelId, Controls extends CompletionModelControls = AnthropicControlsFor<ModelId>> = AnthropicVertexCompletionModelOptions<ModelId, Controls>;
|
|
65
79
|
type index_KnownAnthropicCompletionModelId = KnownAnthropicCompletionModelId;
|
|
66
80
|
declare namespace index {
|
|
67
|
-
export { index_AnthropicClient as AnthropicClient, type index_AnthropicClientOptions as AnthropicClientOptions, type index_AnthropicCompletionModelHandle as AnthropicCompletionModelHandle, type index_AnthropicCompletionModelId as AnthropicCompletionModelId, type index_AnthropicCompletionModelOptions as AnthropicCompletionModelOptions, index_AnthropicVertexClient as AnthropicVertexClient, type index_AnthropicVertexClientOptions as AnthropicVertexClientOptions, type index_AnthropicVertexCompletionModelHandle as AnthropicVertexCompletionModelHandle, type index_AnthropicVertexCompletionModelOptions as AnthropicVertexCompletionModelOptions, type index_KnownAnthropicCompletionModelId as KnownAnthropicCompletionModelId };
|
|
81
|
+
export { index_ANTHROPIC_REASONING_EFFORTS as ANTHROPIC_REASONING_EFFORTS, index_AnthropicClient as AnthropicClient, type index_AnthropicClientOptions as AnthropicClientOptions, type index_AnthropicCompletionModelHandle as AnthropicCompletionModelHandle, type index_AnthropicCompletionModelId as AnthropicCompletionModelId, type index_AnthropicCompletionModelOptions as AnthropicCompletionModelOptions, type index_AnthropicControlsFor as AnthropicControlsFor, type index_AnthropicReasoningControls as AnthropicReasoningControls, type index_AnthropicReasoningEffort as AnthropicReasoningEffort, index_AnthropicVertexClient as AnthropicVertexClient, type index_AnthropicVertexClientOptions as AnthropicVertexClientOptions, type index_AnthropicVertexCompletionModelHandle as AnthropicVertexCompletionModelHandle, type index_AnthropicVertexCompletionModelOptions as AnthropicVertexCompletionModelOptions, type index_KnownAnthropicCompletionModelId as KnownAnthropicCompletionModelId };
|
|
68
82
|
}
|
|
69
83
|
|
|
70
|
-
export { AnthropicClient, type AnthropicClientOptions, type AnthropicCompletionModelHandle, type AnthropicCompletionModelId, type AnthropicCompletionModelOptions, AnthropicVertexClient, type AnthropicVertexClientOptions, type AnthropicVertexCompletionModelHandle, type AnthropicVertexCompletionModelOptions, type KnownAnthropicCompletionModelId, index as anthropic };
|
|
84
|
+
export { ANTHROPIC_REASONING_EFFORTS, AnthropicClient, type AnthropicClientOptions, type AnthropicCompletionModelHandle, type AnthropicCompletionModelId, type AnthropicCompletionModelOptions, type AnthropicControlsFor, type AnthropicReasoningControls, type AnthropicReasoningEffort, AnthropicVertexClient, type AnthropicVertexClientOptions, type AnthropicVertexCompletionModelHandle, type AnthropicVertexCompletionModelOptions, type KnownAnthropicCompletionModelId, index as anthropic };
|
package/dist/index.js
CHANGED
|
@@ -7,6 +7,7 @@ var __export = (target, all) => {
|
|
|
7
7
|
// src/anthropic/index.ts
|
|
8
8
|
var anthropic_exports = {};
|
|
9
9
|
__export(anthropic_exports, {
|
|
10
|
+
ANTHROPIC_REASONING_EFFORTS: () => ANTHROPIC_REASONING_EFFORTS,
|
|
10
11
|
AnthropicClient: () => AnthropicClient,
|
|
11
12
|
AnthropicVertexClient: () => AnthropicVertexClient
|
|
12
13
|
});
|
|
@@ -14,6 +15,7 @@ __export(anthropic_exports, {
|
|
|
14
15
|
// src/anthropic/client.ts
|
|
15
16
|
import Anthropic from "@anthropic-ai/sdk";
|
|
16
17
|
import {
|
|
18
|
+
defineCompletionModelControls as defineCompletionModelControls2,
|
|
17
19
|
resolveModelContextLimits
|
|
18
20
|
} from "@anvia/core/completion";
|
|
19
21
|
import {
|
|
@@ -61,14 +63,16 @@ function stringFrom(value) {
|
|
|
61
63
|
// src/anthropic/completion.ts
|
|
62
64
|
var DEFAULT_MAX_TOKENS = 1024;
|
|
63
65
|
var AnthropicCompletionModel = class {
|
|
64
|
-
constructor(client, modelId, contextLimits) {
|
|
66
|
+
constructor(client, modelId, contextLimits, controls) {
|
|
65
67
|
this.client = client;
|
|
66
68
|
this.modelId = modelId;
|
|
67
69
|
this.contextLimits = contextLimits;
|
|
70
|
+
this.controls = controls;
|
|
68
71
|
}
|
|
69
72
|
client;
|
|
70
73
|
modelId;
|
|
71
74
|
contextLimits;
|
|
75
|
+
controls;
|
|
72
76
|
provider = "anthropic";
|
|
73
77
|
capabilities = {
|
|
74
78
|
streaming: true,
|
|
@@ -427,6 +431,11 @@ function toAnthropicMessagesParams(modelId, request) {
|
|
|
427
431
|
max_tokens: request.maxTokens ?? DEFAULT_MAX_TOKENS,
|
|
428
432
|
messages: messages.flatMap(messageToAnthropicMessages)
|
|
429
433
|
};
|
|
434
|
+
const reasoningEffort = request.controls?.reasoningEffort;
|
|
435
|
+
if (reasoningEffort !== void 0) {
|
|
436
|
+
const outputConfig = isPlainObject(params.output_config) ? params.output_config : {};
|
|
437
|
+
params.output_config = { ...outputConfig, effort: reasoningEffort };
|
|
438
|
+
}
|
|
430
439
|
delete params.tools;
|
|
431
440
|
if (system !== void 0) {
|
|
432
441
|
params.system = system;
|
|
@@ -965,6 +974,46 @@ function toolCallDelta(id, values) {
|
|
|
965
974
|
return event;
|
|
966
975
|
}
|
|
967
976
|
|
|
977
|
+
// src/anthropic/controls.ts
|
|
978
|
+
import {
|
|
979
|
+
defineCompletionModelControls
|
|
980
|
+
} from "@anvia/core/completion";
|
|
981
|
+
var ANTHROPIC_REASONING_EFFORTS = ["low", "medium", "high", "xhigh", "max"];
|
|
982
|
+
var STANDARD_CONTROLS = reasoningControls(["low", "medium", "high"]);
|
|
983
|
+
var MAX_CONTROLS = reasoningControls(["low", "medium", "high", "max"]);
|
|
984
|
+
var ADVANCED_CONTROLS = reasoningControls(ANTHROPIC_REASONING_EFFORTS);
|
|
985
|
+
function anthropicControlsForModel(modelId) {
|
|
986
|
+
if (isAdvancedEffortModel(modelId)) return ADVANCED_CONTROLS;
|
|
987
|
+
if (modelId === "claude-mythos-preview" || modelId === "claude-opus-4-6" || modelId === "claude-sonnet-4-6") {
|
|
988
|
+
return MAX_CONTROLS;
|
|
989
|
+
}
|
|
990
|
+
if (modelId === "claude-opus-4-5" || modelId === "claude-opus-4-5-20251101") {
|
|
991
|
+
return STANDARD_CONTROLS;
|
|
992
|
+
}
|
|
993
|
+
return void 0;
|
|
994
|
+
}
|
|
995
|
+
function isAdvancedEffortModel(modelId) {
|
|
996
|
+
return [
|
|
997
|
+
"claude-fable-5",
|
|
998
|
+
"claude-mythos-5",
|
|
999
|
+
"claude-opus-4-7",
|
|
1000
|
+
"claude-opus-4-8",
|
|
1001
|
+
"claude-opus-5",
|
|
1002
|
+
"claude-sonnet-5"
|
|
1003
|
+
].includes(modelId);
|
|
1004
|
+
}
|
|
1005
|
+
function reasoningControls(efforts) {
|
|
1006
|
+
return defineCompletionModelControls({
|
|
1007
|
+
reasoningEffort: {
|
|
1008
|
+
type: "select",
|
|
1009
|
+
label: "Reasoning effort",
|
|
1010
|
+
description: "Controls how much reasoning the model applies before responding.",
|
|
1011
|
+
options: efforts,
|
|
1012
|
+
defaultValue: "high"
|
|
1013
|
+
}
|
|
1014
|
+
});
|
|
1015
|
+
}
|
|
1016
|
+
|
|
968
1017
|
// src/anthropic/models.ts
|
|
969
1018
|
var CONTEXT_200K_32K = { contextWindow: 2e5, maxOutputTokens: 32e3 };
|
|
970
1019
|
var CONTEXT_200K_64K = { contextWindow: 2e5, maxOutputTokens: 64e3 };
|
|
@@ -1016,6 +1065,7 @@ var AnthropicClient = class {
|
|
|
1016
1065
|
}
|
|
1017
1066
|
completionModel(options) {
|
|
1018
1067
|
const modelId = requireModelId(options.modelId);
|
|
1068
|
+
const controls = options.controls === void 0 ? anthropicControlsForModel(modelId) : defineCompletionModelControls2(options.controls);
|
|
1019
1069
|
return new AnthropicCompletionModel(
|
|
1020
1070
|
this.sdk,
|
|
1021
1071
|
modelId,
|
|
@@ -1023,7 +1073,8 @@ var AnthropicClient = class {
|
|
|
1023
1073
|
modelId,
|
|
1024
1074
|
ANTHROPIC_COMPLETION_MODEL_CONTEXT_LIMITS,
|
|
1025
1075
|
options.contextLimits
|
|
1026
|
-
)
|
|
1076
|
+
),
|
|
1077
|
+
controls
|
|
1027
1078
|
);
|
|
1028
1079
|
}
|
|
1029
1080
|
async listModels(options = {}) {
|
|
@@ -1154,6 +1205,7 @@ import {
|
|
|
1154
1205
|
AnthropicVertex
|
|
1155
1206
|
} from "@anthropic-ai/vertex-sdk";
|
|
1156
1207
|
import {
|
|
1208
|
+
defineCompletionModelControls as defineCompletionModelControls3,
|
|
1157
1209
|
resolveModelContextLimits as resolveModelContextLimits2
|
|
1158
1210
|
} from "@anvia/core/completion";
|
|
1159
1211
|
var AnthropicVertexClient = class {
|
|
@@ -1172,6 +1224,7 @@ var AnthropicVertexClient = class {
|
|
|
1172
1224
|
}
|
|
1173
1225
|
completionModel(options) {
|
|
1174
1226
|
const modelId = requireModelId2(options.modelId);
|
|
1227
|
+
const controls = options.controls === void 0 ? anthropicControlsForModel(modelId) : defineCompletionModelControls3(options.controls);
|
|
1175
1228
|
return new AnthropicCompletionModel(
|
|
1176
1229
|
this.sdk,
|
|
1177
1230
|
modelId,
|
|
@@ -1179,7 +1232,8 @@ var AnthropicVertexClient = class {
|
|
|
1179
1232
|
modelId,
|
|
1180
1233
|
ANTHROPIC_COMPLETION_MODEL_CONTEXT_LIMITS,
|
|
1181
1234
|
options.contextLimits
|
|
1182
|
-
)
|
|
1235
|
+
),
|
|
1236
|
+
controls
|
|
1183
1237
|
);
|
|
1184
1238
|
}
|
|
1185
1239
|
};
|
|
@@ -1190,6 +1244,7 @@ function requireModelId2(modelId) {
|
|
|
1190
1244
|
return modelId;
|
|
1191
1245
|
}
|
|
1192
1246
|
export {
|
|
1247
|
+
ANTHROPIC_REASONING_EFFORTS,
|
|
1193
1248
|
AnthropicClient,
|
|
1194
1249
|
AnthropicVertexClient,
|
|
1195
1250
|
anthropic_exports as anthropic
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/anthropic/index.ts","../src/anthropic/client.ts","../src/anthropic/completion.ts","../src/request-messages.ts","../src/utils.ts","../src/anthropic/models.ts","../src/anthropic/vertex-client.ts"],"sourcesContent":["export {\n AnthropicClient,\n type AnthropicClientOptions,\n type AnthropicCompletionModelHandle,\n type AnthropicCompletionModelOptions,\n} from \"./client\";\nexport type { AnthropicCompletionModelId, KnownAnthropicCompletionModelId } from \"./models\";\nexport {\n AnthropicVertexClient,\n type AnthropicVertexClientOptions,\n type AnthropicVertexCompletionModelHandle,\n type AnthropicVertexCompletionModelOptions,\n} from \"./vertex-client\";\n","import Anthropic from \"@anthropic-ai/sdk\";\nimport {\n type ModelContextLimits,\n resolveModelContextLimits,\n type StreamingCompletionModel,\n} from \"@anvia/core/completion\";\nimport {\n type ModelList,\n type ModelListingClient,\n ModelListingError,\n} from \"@anvia/core/model-listing\";\nimport { AnthropicCompletionModel } from \"./completion\";\nimport {\n ANTHROPIC_COMPLETION_MODEL_CONTEXT_LIMITS,\n type AnthropicCompletionModelId,\n} from \"./models\";\n\ntype AnthropicManagedClientOptions = {\n apiKey: string;\n baseUrl?: string | undefined;\n client?: never;\n};\n\ntype AnthropicInjectedClientOptions = {\n client: Anthropic;\n apiKey?: never;\n baseUrl?: never;\n};\n\nexport type AnthropicClientOptions = AnthropicManagedClientOptions | AnthropicInjectedClientOptions;\n\nexport type AnthropicCompletionModelOptions = {\n modelId: AnthropicCompletionModelId;\n contextLimits?: ModelContextLimits | undefined;\n};\n\nexport type AnthropicCompletionModelHandle = StreamingCompletionModel<unknown>;\n\nexport class AnthropicClient implements ModelListingClient {\n private readonly sdk: Anthropic;\n\n constructor(options: AnthropicClientOptions) {\n if (options.client !== undefined) {\n rejectManagedOptionsWithInjectedClient(options, [\"apiKey\", \"baseUrl\"]);\n this.sdk = options.client;\n return;\n }\n this.sdk = new Anthropic({\n apiKey: requireApiKey(options.apiKey),\n baseURL: options.baseUrl,\n maxRetries: 0,\n });\n }\n\n completionModel(options: AnthropicCompletionModelOptions): AnthropicCompletionModelHandle {\n const modelId = requireModelId(options.modelId);\n return new AnthropicCompletionModel(\n this.sdk,\n modelId,\n resolveModelContextLimits(\n modelId,\n ANTHROPIC_COMPLETION_MODEL_CONTEXT_LIMITS,\n options.contextLimits,\n ),\n );\n }\n\n async listModels(options: { abortSignal?: AbortSignal | undefined } = {}): Promise<ModelList> {\n try {\n const response = await this.sdk.models.list(undefined, {\n signal: options.abortSignal,\n maxRetries: 0,\n });\n const data = (await collectModelsFromResponse(response))\n .map(toListedModel)\n .filter(isListedModel);\n return { data };\n } catch (error) {\n throw toModelListingError(\"Anthropic\", error);\n }\n }\n}\n\nfunction rejectManagedOptionsWithInjectedClient(options: object, keys: readonly string[]): void {\n const conflict = keys.find((key) => key in options);\n if (conflict !== undefined) {\n throw new TypeError(`AnthropicClient cannot combine client with ${conflict}.`);\n }\n}\n\nfunction requireApiKey(apiKey: string | undefined): string {\n if (apiKey === undefined || apiKey.trim().length === 0) {\n throw new Error(\n \"Missing Anthropic credentials. Pass apiKey when constructing AnthropicClient.\",\n );\n }\n\n return apiKey;\n}\n\nfunction requireModelId<ModelId extends string>(modelId: ModelId): ModelId {\n if (modelId.trim().length === 0) {\n throw new TypeError(\"modelId must be a non-empty string\");\n }\n return modelId;\n}\n\nasync function collectModelsFromResponse(response: unknown): Promise<unknown[]> {\n if (isAsyncIterable(response)) {\n const models: unknown[] = [];\n for await (const model of response) {\n models.push(model);\n }\n return models;\n }\n\n if (Array.isArray(response)) {\n return response;\n }\n\n if (isObject(response) && Array.isArray(response.data)) {\n return response.data;\n }\n\n return [];\n}\n\nfunction toListedModel(model: unknown): ModelList[\"data\"][number] | undefined {\n if (!isObject(model) || typeof model.id !== \"string\") {\n return undefined;\n }\n\n const createdAt =\n typeof model.created_at === \"string\"\n ? secondsFromDateString(model.created_at)\n : typeof model.created_at === \"number\"\n ? model.created_at\n : undefined;\n\n const listedModel: ModelList[\"data\"][number] = {\n id: model.id,\n };\n if (typeof model.display_name === \"string\") {\n listedModel.name = model.display_name;\n }\n if (typeof model.name === \"string\") {\n listedModel.name = model.name;\n }\n if (typeof model.description === \"string\") {\n listedModel.description = model.description;\n }\n if (typeof model.type === \"string\") {\n listedModel.type = model.type;\n }\n if (createdAt !== undefined) {\n listedModel.createdAt = createdAt;\n }\n if (typeof model.owned_by === \"string\") {\n listedModel.ownedBy = model.owned_by;\n }\n if (typeof model.max_input_tokens === \"number\") {\n listedModel.contextLength = model.max_input_tokens;\n }\n if (typeof model.context_length === \"number\") {\n listedModel.contextLength = model.context_length;\n }\n return listedModel;\n}\n\nfunction secondsFromDateString(value: string): number | undefined {\n const time = Date.parse(value);\n return Number.isNaN(time) ? undefined : Math.floor(time / 1000);\n}\n\nfunction isListedModel(\n model: ModelList[\"data\"][number] | undefined,\n): model is ModelList[\"data\"][number] {\n return model !== undefined;\n}\n\nfunction toModelListingError(provider: string, error: unknown): ModelListingError {\n if (error instanceof ModelListingError) {\n return error;\n }\n\n const statusCode = getStatusCode(error);\n return new ModelListingError(`${provider} model listing failed: ${getErrorMessage(error)}`, {\n provider,\n statusCode,\n cause: error,\n });\n}\n\nfunction getStatusCode(error: unknown): number | undefined {\n if (!isObject(error)) {\n return undefined;\n }\n\n if (typeof error.status === \"number\") {\n return error.status;\n }\n\n if (typeof error.statusCode === \"number\") {\n return error.statusCode;\n }\n\n return undefined;\n}\n\nfunction getErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nfunction isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nfunction isAsyncIterable(value: unknown): value is AsyncIterable<unknown> {\n return isObject(value) && Symbol.asyncIterator in value;\n}\n","import type { Anthropic } from \"@anthropic-ai/sdk\";\nimport type { AnthropicVertex } from \"@anthropic-ai/vertex-sdk\";\nimport type { ModelContextLimits } from \"@anvia/core/completion\";\nimport {\n type AssistantContentPart,\n assertCompletionRequestSupported,\n type CompletionFinishReason,\n type CompletionModelCapabilities,\n type CompletionModelInfo,\n type CompletionModelStreamEvent,\n CompletionProviderOutputError,\n type CompletionProviderOutputErrorKind,\n type CompletionRequest,\n type CompletionResponse,\n type FilePart,\n type ImagePart,\n isJsonValue,\n type JsonObject,\n type JsonValue,\n type Message as MessageType,\n type ModelCallOptions,\n type ReasoningDetail,\n type StreamingCompletionModel,\n type ToolChoice,\n type ToolDefinition,\n type ToolResultContentPart,\n type ToolResultPart,\n Usage,\n type UserContentPart,\n withContextUsage,\n} from \"@anvia/core/completion\";\nimport { orderedRequestMessages } from \"../request-messages\";\nimport { isPlainObject, numberFrom, stringFrom } from \"../utils\";\nimport type { AnthropicCompletionModelId } from \"./models\";\n\ntype AnthropicCreateParams = Record<string, unknown>;\ntype AnthropicMessage = Record<string, unknown>;\ntype AnthropicContentBlock = Record<string, unknown>;\ntype AnthropicMessageCreate = (\n params: AnthropicCreateParams,\n options: ReturnType<typeof anthropicRequestOptions>,\n) => Promise<unknown>;\n\ntype AnthropicStreamToolInput = { type: \"empty\" } | { type: \"complete\"; text: string };\n\ntype AnthropicStreamToolState = {\n index: number;\n id: string;\n name: string;\n initialInput: AnthropicStreamToolInput;\n partialJson: string;\n hasPartialJson: boolean;\n closed: boolean;\n finalized: boolean;\n};\n\nconst DEFAULT_MAX_TOKENS = 1024;\n\nexport class AnthropicCompletionModel implements StreamingCompletionModel<unknown> {\n readonly provider = \"anthropic\";\n readonly capabilities: CompletionModelCapabilities = {\n streaming: true,\n tools: true,\n toolChoice: true,\n imageInput: true,\n documentInput: true,\n outputSchema: false,\n reasoning: true,\n };\n constructor(\n private readonly client: Anthropic | AnthropicVertex,\n readonly modelId: AnthropicCompletionModelId,\n readonly contextLimits?: ModelContextLimits,\n ) {}\n\n private modelInfo(): CompletionModelInfo | undefined {\n return this.contextLimits === undefined\n ? undefined\n : { modelId: this.modelId, context: this.contextLimits };\n }\n\n traceRequest(\n request: CompletionRequest,\n options: { stream?: boolean | undefined } = {},\n ): JsonObject {\n const params = toAnthropicMessagesParams(this.modelId, request);\n if (options.stream === true) {\n params.stream = true;\n }\n return providerRequestSummary(params, request, options);\n }\n\n async completion(\n request: CompletionRequest,\n options?: ModelCallOptions,\n ): Promise<CompletionResponse> {\n assertCompletionRequestSupported(this, request);\n const params = toAnthropicMessagesParams(this.modelId, request);\n const response = await this.createMessage(params, anthropicRequestOptions(options));\n return withContextUsage(fromAnthropicMessage(response), this.modelInfo());\n }\n\n private createMessage(\n params: AnthropicCreateParams,\n options: ReturnType<typeof anthropicRequestOptions>,\n ): Promise<unknown> {\n const messages = this.client.messages;\n const create = messages.create as unknown as AnthropicMessageCreate;\n return create.call(messages, params, options);\n }\n\n async *streamCompletion(\n request: CompletionRequest,\n options?: ModelCallOptions,\n ): AsyncIterable<CompletionModelStreamEvent> {\n assertCompletionRequestSupported(this, request, { streaming: true });\n const params = { ...toAnthropicMessagesParams(this.modelId, request), stream: true };\n const stream = await this.createMessage(params, anthropicRequestOptions(options));\n const toolsByIndex = new Map<number, AnthropicStreamToolState>();\n const toolIndexesById = new Map<string, number>();\n const streamUsage = Usage.empty();\n const streamUsageFields = emptyAnthropicStreamUsageFields();\n let hasStreamUsage = false;\n let hasToolProgress = false;\n let hasTerminalEvent = false;\n let streamMessageId: string | undefined;\n let streamProviderFinishReason: unknown;\n for await (const event of stream as unknown as AsyncIterable<unknown>) {\n const hadProviderFinishReason = streamProviderFinishReason !== undefined;\n if (isPlainObject(event)) {\n if (event.type === \"message_start\" && isPlainObject(event.message)) {\n streamMessageId = stringFrom(event.message.id) ?? streamMessageId;\n if (event.message.stop_reason !== undefined && event.message.stop_reason !== null) {\n streamProviderFinishReason = acceptAnthropicStreamFinishReason(\n streamProviderFinishReason,\n event.message.stop_reason,\n streamUsage,\n );\n }\n }\n if (event.type === \"message_delta\" && isPlainObject(event.delta)) {\n if (event.delta.stop_reason !== undefined && event.delta.stop_reason !== null) {\n streamProviderFinishReason = acceptAnthropicStreamFinishReason(\n streamProviderFinishReason,\n event.delta.stop_reason,\n streamUsage,\n );\n }\n }\n hasStreamUsage =\n applyAnthropicStreamUsage(event, streamUsage, streamUsageFields) || hasStreamUsage;\n }\n\n if (hadProviderFinishReason && isAnthropicSemanticProgressEvent(event)) {\n throw providerOutputError(\"invalid-tool-call\", streamUsage);\n }\n\n if (\n isPlainObject(event) &&\n event.type === \"content_block_start\" &&\n isPlainObject(event.content_block) &&\n event.content_block.type === \"tool_use\"\n ) {\n const state = startAnthropicStreamTool(event.index, event.content_block, streamUsage);\n if (toolsByIndex.has(state.index) || toolIndexesById.has(state.id)) {\n throw providerOutputError(\"invalid-tool-call\", streamUsage, state.id);\n }\n toolsByIndex.set(state.index, state);\n toolIndexesById.set(state.id, state.index);\n hasToolProgress = true;\n yield toolCallDelta(state.id, {\n name: state.name,\n argumentsDelta:\n state.initialInput.type === \"complete\" ? state.initialInput.text : undefined,\n });\n continue;\n }\n\n if (\n isPlainObject(event) &&\n event.type === \"content_block_delta\" &&\n isPlainObject(event.delta) &&\n event.delta.type === \"input_json_delta\"\n ) {\n const index = anthropicToolStreamIndex(event.index, streamUsage);\n const state = toolsByIndex.get(index);\n if (state === undefined) {\n throw providerOutputError(\"invalid-tool-call\", streamUsage);\n }\n if (state.closed || state.finalized) {\n throw providerOutputError(\"invalid-tool-call\", streamUsage, state.id);\n }\n if (typeof event.delta.partial_json !== \"string\") {\n throw providerOutputError(\"invalid-tool-arguments\", streamUsage, state.id);\n }\n if (state.initialInput.type === \"complete\") {\n throw providerOutputError(\"invalid-tool-arguments\", streamUsage, state.id);\n }\n state.hasPartialJson = true;\n state.partialJson += event.delta.partial_json;\n yield toolCallDelta(state.id, { argumentsDelta: event.delta.partial_json });\n continue;\n }\n\n if (isPlainObject(event) && event.type === \"content_block_stop\") {\n const index = optionalAnthropicToolStreamIndex(event.index);\n const state = index === undefined ? undefined : toolsByIndex.get(index);\n if (state !== undefined) {\n if (state.closed) {\n throw providerOutputError(\"invalid-tool-call\", streamUsage, state.id);\n }\n state.closed = true;\n continue;\n }\n }\n\n if (isPlainObject(event) && event.type === \"message_stop\") {\n hasTerminalEvent = true;\n const finalMessage = isPlainObject(event.message) ? event.message : undefined;\n if (finalMessage?.stop_reason !== undefined && finalMessage.stop_reason !== null) {\n streamProviderFinishReason = acceptAnthropicStreamFinishReason(\n streamProviderFinishReason,\n finalMessage.stop_reason,\n streamUsage,\n );\n }\n const hasFinalMessageToolUse = anthropicMessageHasToolUse(finalMessage);\n if (hasToolProgress || hasFinalMessageToolUse) {\n const baseUsage =\n finalMessage === undefined ? Usage.empty() : anthropicMessageUsage(finalMessage);\n const terminalUsage = hasStreamUsage\n ? mergeUsage(baseUsage, streamUsage, streamUsageFields)\n : baseUsage;\n const terminalResponse = emptyAnthropicStreamResponse(\n event,\n streamMessageId,\n terminalUsage,\n );\n applyAnthropicFinishReason(terminalResponse, streamProviderFinishReason);\n assertAnthropicResponseIntegrity(terminalResponse, true);\n }\n for (const state of toolsByIndex.values()) {\n const finalDelta = finalizeAnthropicStreamTool(state, streamUsage);\n if (finalDelta !== undefined) yield finalDelta;\n }\n\n const baseResponse =\n finalMessage !== undefined\n ? fromAnthropicMessageUnchecked(finalMessage)\n : emptyAnthropicStreamResponse(event, streamMessageId, streamUsage);\n const response = hasStreamUsage\n ? {\n ...baseResponse,\n usage: mergeUsage(baseResponse.usage, streamUsage, streamUsageFields),\n }\n : baseResponse;\n applyAnthropicFinishReason(response, streamProviderFinishReason);\n assertAnthropicResponseIntegrity(response, hasToolProgress || hasFinalMessageToolUse);\n yield {\n type: \"final\",\n response: withContextUsage(response, this.modelInfo()),\n };\n return;\n }\n\n if (isPlainObject(event) && event.type === \"error\") {\n hasTerminalEvent = true;\n }\n\n for (const mapped of fromAnthropicStreamEvent(event)) {\n yield mapped;\n }\n\n if (hasTerminalEvent) return;\n }\n\n if (hasToolProgress && !hasTerminalEvent) {\n throw providerOutputError(\"incomplete-stream\", streamUsage);\n }\n }\n}\n\nfunction isAnthropicSemanticProgressEvent(event: unknown): boolean {\n return (\n isPlainObject(event) &&\n (event.type === \"content_block_start\" || event.type === \"content_block_delta\")\n );\n}\n\ntype AnthropicStreamUsageFields = {\n inputTokens: boolean;\n outputTokens: boolean;\n cachedInputTokens: boolean;\n cacheCreationInputTokens: boolean;\n};\n\nfunction emptyAnthropicStreamUsageFields(): AnthropicStreamUsageFields {\n return {\n inputTokens: false,\n outputTokens: false,\n cachedInputTokens: false,\n cacheCreationInputTokens: false,\n };\n}\n\nfunction applyAnthropicStreamUsage(\n event: Record<string, unknown>,\n usage: Usage,\n fields: AnthropicStreamUsageFields,\n): boolean {\n let changed = false;\n let uncachedInputTokens = Math.max(\n 0,\n usage.inputTokens - usage.cachedInputTokens - usage.cacheCreationInputTokens,\n );\n\n if (event.type === \"message_start\" && isPlainObject(event.message)) {\n const source = isPlainObject(event.message.usage) ? event.message.usage : undefined;\n if (source !== undefined) {\n if (\"input_tokens\" in source) {\n uncachedInputTokens = numberFrom(source.input_tokens);\n fields.inputTokens = true;\n changed = true;\n }\n if (\"cache_read_input_tokens\" in source) {\n usage.cachedInputTokens = numberFrom(source.cache_read_input_tokens);\n fields.cachedInputTokens = true;\n changed = true;\n }\n if (\"cache_creation_input_tokens\" in source) {\n usage.cacheCreationInputTokens = numberFrom(source.cache_creation_input_tokens);\n fields.cacheCreationInputTokens = true;\n changed = true;\n }\n }\n }\n\n if (event.type === \"message_delta\") {\n const source = isPlainObject(event.usage) ? event.usage : undefined;\n if (source !== undefined && \"output_tokens\" in source) {\n usage.outputTokens = Math.max(usage.outputTokens, numberFrom(source.output_tokens));\n fields.outputTokens = true;\n changed = true;\n }\n }\n\n if (changed) {\n Object.assign(\n usage,\n anthropicUsage(\n uncachedInputTokens,\n usage.outputTokens,\n usage.cachedInputTokens,\n usage.cacheCreationInputTokens,\n ),\n );\n }\n\n return changed;\n}\n\nfunction mergeUsage(base: Usage, stream: Usage, fields: AnthropicStreamUsageFields): Usage {\n const baseUncachedInputTokens = Math.max(\n 0,\n base.inputTokens - base.cachedInputTokens - base.cacheCreationInputTokens,\n );\n const streamUncachedInputTokens = Math.max(\n 0,\n stream.inputTokens - stream.cachedInputTokens - stream.cacheCreationInputTokens,\n );\n const uncachedInputTokens = fields.inputTokens\n ? streamUncachedInputTokens\n : baseUncachedInputTokens;\n const outputTokens = fields.outputTokens ? stream.outputTokens : base.outputTokens;\n const cachedInputTokens = fields.cachedInputTokens\n ? stream.cachedInputTokens\n : base.cachedInputTokens;\n const cacheCreationInputTokens = fields.cacheCreationInputTokens\n ? stream.cacheCreationInputTokens\n : base.cacheCreationInputTokens;\n return anthropicUsage(\n uncachedInputTokens,\n outputTokens,\n cachedInputTokens,\n cacheCreationInputTokens,\n );\n}\n\nfunction copyUsage(usage: Usage): Usage {\n let copy: Usage = { ...usage };\n if (usage.details !== undefined) copy = { ...copy, details: { ...usage.details } };\n return copy;\n}\n\nfunction emptyAnthropicStreamResponse(\n rawResponse: unknown,\n messageId: string | undefined,\n usage: Usage,\n): CompletionResponse {\n const response: CompletionResponse = {\n choice: [],\n usage: copyUsage(usage),\n rawResponse,\n };\n if (messageId !== undefined) response.messageId = messageId;\n return response;\n}\n\nfunction startAnthropicStreamTool(\n indexValue: unknown,\n block: Record<string, unknown>,\n usage: Usage,\n): AnthropicStreamToolState {\n const index = anthropicToolStreamIndex(indexValue, usage);\n const id = requiredToolCallId(block.id, usage);\n const name = requiredToolName(block.name, id, usage);\n return {\n index,\n id,\n name,\n initialInput: anthropicStreamToolInput(block.input, id, usage),\n partialJson: \"\",\n hasPartialJson: false,\n closed: false,\n finalized: false,\n };\n}\n\nfunction anthropicStreamToolInput(\n input: unknown,\n toolCallId: string,\n usage: Usage,\n): AnthropicStreamToolInput {\n if (!isPlainObject(input) || !isJsonValue(input)) {\n throw providerOutputError(\"invalid-tool-arguments\", usage, toolCallId);\n }\n\n if (isEmptyJsonObject(input)) {\n return { type: \"empty\" };\n }\n\n const text = JSON.stringify(input);\n if (text === undefined) {\n throw providerOutputError(\"invalid-tool-arguments\", usage, toolCallId);\n }\n return { type: \"complete\", text };\n}\n\nfunction finalizeAnthropicStreamTool(\n state: AnthropicStreamToolState,\n usage: Usage,\n): CompletionModelStreamEvent | undefined {\n if (state.finalized) return undefined;\n\n if (state.initialInput.type === \"complete\") {\n state.finalized = true;\n return undefined;\n }\n\n if (state.hasPartialJson) {\n assertSerializedToolInput(state.partialJson, state.id, usage);\n state.finalized = true;\n return undefined;\n }\n state.finalized = true;\n return toolCallDelta(state.id, { argumentsDelta: \"{}\" });\n}\n\nfunction assertSerializedToolInput(text: string, toolCallId: string, usage: Usage): void {\n const parsed = parseSerializedToolInput(text);\n if (parsed.type === \"malformed\") {\n throw providerOutputError(\"malformed-tool-arguments\", usage, toolCallId);\n }\n if (parsed.type === \"invalid\") {\n throw providerOutputError(\"invalid-tool-arguments\", usage, toolCallId);\n }\n}\n\nfunction parseSerializedToolInput(\n text: string,\n): { type: \"valid\"; value: JsonValue } | { type: \"malformed\" } | { type: \"invalid\" } {\n let value: unknown;\n try {\n value = JSON.parse(text);\n } catch {\n return { type: \"malformed\" };\n }\n return isJsonValue(value) ? { type: \"valid\", value } : { type: \"invalid\" };\n}\n\nfunction isEmptyJsonObject(value: JsonValue): boolean {\n return (\n !Array.isArray(value) &&\n typeof value === \"object\" &&\n value !== null &&\n Object.keys(value).length === 0\n );\n}\n\nfunction requiredToolCallId(value: unknown, usage: Usage): string {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw providerOutputError(\"invalid-tool-call\", usage);\n }\n return value;\n}\n\nfunction requiredToolName(value: unknown, toolCallId: string, usage: Usage): string {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw providerOutputError(\"invalid-tool-call\", usage, toolCallId);\n }\n return value;\n}\n\nfunction anthropicToolStreamIndex(value: unknown, usage: Usage): number {\n const index = optionalAnthropicToolStreamIndex(value);\n if (index === undefined) {\n throw providerOutputError(\"invalid-tool-call\", usage);\n }\n return index;\n}\n\nfunction optionalAnthropicToolStreamIndex(value: unknown): number | undefined {\n return typeof value === \"number\" && Number.isInteger(value) && value >= 0 ? value : undefined;\n}\n\nexport function toAnthropicMessagesParams(\n modelId: AnthropicCompletionModelId,\n request: CompletionRequest,\n): AnthropicCreateParams {\n const messages = requestMessages(request);\n const system = systemFromMessages(request, messages);\n if (\n request.providerOptions !== undefined &&\n (!isPlainObject(request.providerOptions) || !isJsonValue(request.providerOptions))\n ) {\n throw new TypeError(\"Anthropic providerOptions must be a JSON object.\");\n }\n const providerOptions = request.providerOptions ?? {};\n const params: AnthropicCreateParams = {\n ...providerOptions,\n model: modelId,\n max_tokens: request.maxTokens ?? DEFAULT_MAX_TOKENS,\n messages: messages.flatMap(messageToAnthropicMessages),\n };\n\n delete params.tools;\n\n if (system !== undefined) {\n params.system = system;\n }\n\n if (request.tools.length > 0) {\n params.tools = request.tools.map(toolDefinitionToAnthropic);\n }\n\n if (request.temperature !== undefined) {\n params.temperature = request.temperature;\n }\n\n if (request.toolChoice !== undefined) {\n params.tool_choice = toolChoiceToAnthropic(request.toolChoice);\n }\n\n return params;\n}\n\nfunction anthropicRequestOptions(options: ModelCallOptions | undefined): {\n signal?: AbortSignal | undefined;\n maxRetries: 0;\n} {\n return { signal: options?.abortSignal, maxRetries: 0 };\n}\n\nfunction providerRequestSummary(\n params: AnthropicCreateParams,\n request: CompletionRequest,\n options: { stream?: boolean | undefined },\n): JsonObject {\n return compactJsonObject({\n provider: \"anthropic\",\n api: \"messages\",\n stream: options.stream === true,\n model: stringFrom(params.model),\n parameterKeys: Object.keys(params).sort(),\n messageCount: Array.isArray(params.messages) ? params.messages.length : undefined,\n toolCount: request.tools.length,\n toolNames: request.tools.map((tool) => tool.name),\n hasSystem: typeof params.system === \"string\" && params.system.length > 0,\n temperature: request.temperature,\n maxTokens: request.maxTokens ?? numberFrom(params.max_tokens),\n toolChoice: toolChoiceSummary(request.toolChoice),\n providerOptionKeys: isPlainObject(request.providerOptions)\n ? Object.keys(request.providerOptions).sort()\n : undefined,\n });\n}\n\nfunction toolChoiceSummary(toolChoice: ToolChoice | undefined): JsonValue | undefined {\n if (toolChoice === undefined || typeof toolChoice === \"string\") {\n return toolChoice;\n }\n return { type: toolChoice.type, name: toolChoice.name };\n}\n\nfunction compactJsonObject(values: Record<string, unknown>): JsonObject {\n return Object.fromEntries(\n Object.entries(values).flatMap(([key, value]) => {\n if (!isJsonValue(value)) {\n return [];\n }\n return [[key, value]];\n }),\n ) as JsonObject;\n}\n\nfunction requestMessages(request: CompletionRequest): MessageType[] {\n return orderedRequestMessages(request);\n}\n\nfunction systemFromMessages(\n request: CompletionRequest,\n messages: MessageType[],\n): string | undefined {\n const systemMessages = messages.flatMap((message) =>\n message.role === \"system\" ? [message.content] : [],\n );\n if (request.instructions !== undefined) {\n systemMessages.unshift(request.instructions);\n }\n return systemMessages.length === 0 ? undefined : systemMessages.join(\"\\n\\n\");\n}\n\nexport function fromAnthropicMessage(response: unknown): CompletionResponse {\n assertAnthropicRawToolFinish(response);\n const result = fromAnthropicMessageUnchecked(response);\n assertAnthropicResponseIntegrity(result, false);\n return result;\n}\n\nfunction fromAnthropicMessageUnchecked(response: unknown): CompletionResponse {\n const raw = isPlainObject(response) ? response : {};\n const content = Array.isArray(raw.content) ? raw.content : [];\n const choice: AssistantContentPart[] = [];\n const usage = anthropicMessageUsage(raw);\n\n for (const block of content) {\n if (!isPlainObject(block)) {\n continue;\n }\n\n if (block.type === \"text\" && typeof block.text === \"string\") {\n choice.push({ type: \"text\", text: block.text });\n }\n\n if (block.type === \"thinking\" && typeof block.thinking === \"string\") {\n const text: Extract<ReasoningDetail, { type: \"text\" }> =\n typeof block.signature === \"string\"\n ? { type: \"text\", text: block.thinking, signature: block.signature }\n : { type: \"text\", text: block.thinking };\n choice.push({ type: \"reasoning\", text: block.thinking, details: [text] });\n }\n\n if (block.type === \"redacted_thinking\" && typeof block.data === \"string\") {\n choice.push({\n type: \"reasoning\",\n text: \"\",\n details: [{ type: \"redacted\", data: block.data }],\n });\n }\n\n if (block.type === \"tool_use\") {\n const id = requiredToolCallId(block.id, usage);\n const name = requiredToolName(block.name, id, usage);\n if (!isPlainObject(block.input) || !isJsonValue(block.input)) {\n throw providerOutputError(\"invalid-tool-arguments\", usage, id);\n }\n choice.push({\n type: \"tool-call\",\n toolCallId: id,\n callId: id,\n toolName: name,\n input: block.input,\n });\n }\n }\n\n const result: CompletionResponse = {\n choice,\n usage,\n rawResponse: response,\n };\n applyAnthropicFinishReason(result, raw.stop_reason);\n\n if (typeof raw.id === \"string\") {\n result.messageId = raw.id;\n }\n\n return result;\n}\n\nfunction applyAnthropicFinishReason(response: CompletionResponse, value: unknown): void {\n if (value === undefined || value === null) return;\n response.finishReason = typeof value === \"string\" ? anthropicFinishReason(value) : \"other\";\n if (typeof value === \"string\") response.providerFinishReason = value;\n}\n\nfunction anthropicFinishReason(value: string): CompletionFinishReason {\n if (value === \"end_turn\" || value === \"stop_sequence\") return \"stop\";\n if (value === \"max_tokens\" || value === \"model_context_window_exceeded\") return \"length\";\n if (value === \"tool_use\") return \"tool-calls\";\n if (value === \"refusal\") return \"content-filter\";\n return \"other\";\n}\n\nfunction assertAnthropicResponseIntegrity(\n response: CompletionResponse,\n hasAccumulatedToolProgress: boolean,\n): void {\n const toolCalls = response.choice.filter((content) => content.type === \"tool-call\");\n if (hasAccumulatedToolProgress || toolCalls.length > 0) {\n assertSafeToolFinishReason(response);\n } else if (response.finishReason === \"tool-calls\") {\n throw providerOutputError(\n \"invalid-tool-call\",\n response.usage,\n undefined,\n response.finishReason,\n );\n }\n\n const ids = new Set<string>();\n for (const toolCall of toolCalls) {\n if (ids.has(toolCall.toolCallId)) {\n throw providerOutputError(\"invalid-tool-call\", response.usage, toolCall.toolCallId);\n }\n ids.add(toolCall.toolCallId);\n }\n}\n\nfunction assertAnthropicRawToolFinish(response: unknown): void {\n if (!isPlainObject(response) || !anthropicMessageHasToolUse(response)) return;\n const usage = anthropicMessageUsage(response);\n const terminal: CompletionResponse = { choice: [], usage, rawResponse: response };\n applyAnthropicFinishReason(terminal, response.stop_reason);\n assertAnthropicResponseIntegrity(terminal, true);\n}\n\nfunction anthropicMessageHasToolUse(message: unknown): boolean {\n return (\n isPlainObject(message) &&\n Array.isArray(message.content) &&\n message.content.some((block) => isPlainObject(block) && block.type === \"tool_use\")\n );\n}\n\nfunction anthropicMessageUsage(message: Record<string, unknown>): Usage {\n const usage = isPlainObject(message.usage) ? message.usage : {};\n return anthropicUsage(\n numberFrom(usage.input_tokens),\n numberFrom(usage.output_tokens),\n numberFrom(usage.cache_read_input_tokens),\n numberFrom(usage.cache_creation_input_tokens),\n );\n}\n\nfunction assertSafeToolFinishReason(response: CompletionResponse): void {\n if (response.finishReason === undefined) {\n throw providerOutputError(\"incomplete-tool-call\", response.usage);\n }\n if (response.finishReason === \"length\") {\n throw providerOutputError(\n \"truncated-tool-call\",\n response.usage,\n undefined,\n response.finishReason,\n );\n }\n if (response.finishReason === \"content-filter\") {\n throw providerOutputError(\n \"filtered-tool-call\",\n response.usage,\n undefined,\n response.finishReason,\n );\n }\n if (response.finishReason === \"other\") {\n throw providerOutputError(\n \"invalid-tool-call\",\n response.usage,\n undefined,\n response.finishReason,\n );\n }\n if (response.finishReason !== \"tool-calls\") {\n throw providerOutputError(\n \"invalid-tool-call\",\n response.usage,\n undefined,\n response.finishReason,\n );\n }\n}\n\nfunction acceptAnthropicStreamFinishReason(current: unknown, next: unknown, usage: Usage): unknown {\n if (current === undefined) return next;\n if (current !== next) {\n throw providerOutputError(\"invalid-tool-call\", usage);\n }\n return current;\n}\n\nfunction providerOutputError(\n kind: CompletionProviderOutputErrorKind,\n usage: Usage,\n toolCallId?: string,\n finishReason?: CompletionFinishReason,\n): CompletionProviderOutputError {\n const copiedUsage = copyUsage(usage);\n if (kind === \"truncated-tool-call\") {\n if (finishReason !== \"length\") {\n throw new TypeError('Anthropic truncated-tool-call errors require finish reason \"length\".');\n }\n return new CompletionProviderOutputError({\n kind,\n usage: copiedUsage,\n toolCallId,\n finishReason,\n });\n }\n if (kind === \"filtered-tool-call\") {\n if (finishReason !== \"content-filter\") {\n throw new TypeError(\n 'Anthropic filtered-tool-call errors require finish reason \"content-filter\".',\n );\n }\n return new CompletionProviderOutputError({\n kind,\n usage: copiedUsage,\n toolCallId,\n finishReason,\n });\n }\n if (finishReason === \"length\" || finishReason === \"content-filter\") {\n throw new TypeError(\"Anthropic provider output error kind contradicts its finish reason.\");\n }\n return new CompletionProviderOutputError({\n kind,\n usage: copiedUsage,\n toolCallId,\n finishReason,\n });\n}\n\nfunction anthropicUsage(\n uncachedInputTokens: number,\n outputTokens: number,\n cachedInputTokens: number,\n cacheCreationInputTokens: number,\n): Usage {\n const inputTokens = uncachedInputTokens + cachedInputTokens + cacheCreationInputTokens;\n const totalTokens = inputTokens + outputTokens;\n return {\n ...Usage.empty(),\n inputTokens,\n outputTokens,\n totalTokens,\n cachedInputTokens,\n cacheCreationInputTokens,\n details: {\n input: uncachedInputTokens,\n cache_read_input_tokens: cachedInputTokens,\n cache_creation_input_tokens: cacheCreationInputTokens,\n output: outputTokens,\n total: totalTokens,\n },\n };\n}\n\nexport function fromAnthropicStreamEvent(event: unknown): CompletionModelStreamEvent[] {\n if (!isPlainObject(event) || typeof event.type !== \"string\") {\n return [];\n }\n\n if (event.type === \"message_start\" && isPlainObject(event.message)) {\n const id = stringFrom(event.message.id);\n return id === undefined ? [] : [{ type: \"message_id\", id }];\n }\n\n if (event.type === \"content_block_start\" && isPlainObject(event.content_block)) {\n const block = event.content_block;\n if (block.type === \"tool_use\") {\n const state = startAnthropicStreamTool(event.index, block, Usage.empty());\n return [\n toolCallDelta(state.id, {\n name: state.name,\n argumentsDelta: state.initialInput.type === \"empty\" ? undefined : state.initialInput.text,\n }),\n ];\n }\n if (block.type === \"redacted_thinking\" && typeof block.data === \"string\") {\n return [\n {\n type: \"reasoning_delta\",\n delta: block.data,\n id: `thinking_${numberFrom(event.index)}`,\n contentType: \"redacted\",\n },\n ];\n }\n return [];\n }\n\n if (event.type === \"content_block_delta\" && isPlainObject(event.delta)) {\n const delta = event.delta;\n if (delta.type === \"text_delta\" && typeof delta.text === \"string\") {\n return [{ type: \"text_delta\", delta: delta.text }];\n }\n\n if (delta.type === \"thinking_delta\" && typeof delta.thinking === \"string\") {\n return [\n {\n type: \"reasoning_delta\",\n delta: delta.thinking,\n id: `thinking_${numberFrom(event.index)}`,\n contentType: \"text\",\n },\n ];\n }\n\n if (delta.type === \"signature_delta\" && typeof delta.signature === \"string\") {\n return [\n {\n type: \"reasoning_delta\",\n delta: \"\",\n id: `thinking_${numberFrom(event.index)}`,\n contentType: \"text\",\n signature: delta.signature,\n },\n ];\n }\n\n // Tool argument deltas do not repeat the tool id and require stream-level state.\n if (delta.type === \"input_json_delta\") return [];\n }\n\n if (event.type === \"message_stop\" && isPlainObject(event.message)) {\n return [{ type: \"final\", response: fromAnthropicMessage(event.message) }];\n }\n\n if (event.type === \"error\") {\n return [{ type: \"error\", error: event.error ?? event }];\n }\n\n return [];\n}\n\nfunction messageToAnthropicMessages(message: MessageType): AnthropicMessage[] {\n if (message.role === \"system\") {\n return [];\n }\n\n if (message.role === \"user\") {\n if (typeof message.content === \"string\") {\n return [{ role: \"user\", content: message.content }];\n }\n return [\n {\n role: \"user\",\n content: message.content.map(userContentToAnthropicBlock),\n },\n ];\n }\n\n if (message.role === \"tool\") {\n return [\n {\n role: \"user\",\n content: message.content.map((content) => {\n if (content.type !== \"tool-result\") {\n throw new TypeError(\n \"Anvia interaction responses must be resolved by Agent before provider calls.\",\n );\n }\n return toolContentToAnthropicBlock(content);\n }),\n },\n ];\n }\n\n return [\n {\n role: \"assistant\",\n content:\n typeof message.content === \"string\"\n ? message.content\n : message.content.flatMap((content): AnthropicContentBlock[] => {\n if (content.type === \"text\") {\n return [{ type: \"text\", text: content.text }];\n }\n\n if (content.type === \"tool-call\") {\n return [\n {\n type: \"tool_use\",\n id: content.callId ?? content.toolCallId,\n name: content.toolName,\n input: content.input,\n },\n ];\n }\n\n if (content.type === \"reasoning\" && content.details !== undefined) {\n return content.details.flatMap(reasoningContentToAnthropicBlocks);\n }\n\n if (content.type === \"image\" || content.type === \"file\") {\n throw new Error(\n \"Anthropic Messages does not support image or file content in assistant history\",\n );\n }\n\n return [];\n }),\n },\n ];\n}\n\nfunction toolContentToAnthropicBlock(content: ToolResultPart): AnthropicContentBlock {\n const block: AnthropicContentBlock = {\n type: \"tool_result\",\n tool_use_id: content.callId ?? content.toolCallId,\n content: toolResultToAnthropicContent(content),\n };\n if (\n content.output.type === \"error-text\" ||\n content.output.type === \"error-json\" ||\n content.output.type === \"execution-denied\"\n ) {\n block.is_error = true;\n }\n return block;\n}\n\nfunction toolResultContentToAnthropicContent(\n content: readonly ToolResultContentPart[],\n): string | AnthropicContentBlock[] {\n if (content.every((item) => item.type === \"text\")) {\n return content.map((item) => item.text).join(\"\\n\");\n }\n\n return content.map((item) => {\n if (item.type === \"text\") {\n return { type: \"text\", text: item.text };\n }\n return fileToAnthropicBlock(item);\n });\n}\n\nfunction toolResultToAnthropicContent(content: ToolResultPart): string | AnthropicContentBlock[] {\n const output = content.output;\n if (output.type === \"text\" || output.type === \"error-text\") {\n return output.value;\n }\n if (output.type === \"json\" || output.type === \"error-json\") {\n return JSON.stringify(output.value);\n }\n if (output.type === \"execution-denied\") {\n return output.reason ?? \"Tool execution was denied.\";\n }\n return toolResultContentToAnthropicContent(output.value);\n}\n\nfunction reasoningContentToAnthropicBlocks(content: ReasoningDetail): AnthropicContentBlock[] {\n if (content.type === \"text\" || content.type === \"summary\") {\n const block: AnthropicContentBlock = {\n type: \"thinking\",\n thinking: content.text,\n };\n if (content.type === \"text\" && content.signature !== undefined) {\n block.signature = content.signature;\n }\n return [block];\n }\n\n if (content.type === \"redacted\") {\n return [{ type: \"redacted_thinking\", data: content.data }];\n }\n\n return [];\n}\n\nfunction userContentToAnthropicBlock(content: UserContentPart): AnthropicContentBlock {\n if (content.type === \"text\") {\n return { type: \"text\", text: content.text };\n }\n\n if (content.type === \"image\") {\n return imageToAnthropicBlock(content);\n }\n\n if (content.type === \"file\") {\n return fileToAnthropicBlock(content);\n }\n\n throw new Error(\"Tool results must be mapped before user content blocks\");\n}\n\nfunction imageToAnthropicBlock(image: ImagePart): AnthropicContentBlock {\n if (image.image.type === \"url\") {\n return {\n type: \"image\",\n source: {\n type: \"url\",\n url: image.image.url,\n },\n };\n }\n\n return {\n type: \"image\",\n source: {\n type: \"base64\",\n media_type: image.mediaType ?? \"image/png\",\n data: image.image.data,\n },\n };\n}\n\nfunction fileToAnthropicBlock(file: FilePart): AnthropicContentBlock {\n if (file.data.type === \"text\") {\n return { type: \"text\", text: file.data.text };\n }\n\n if (file.mediaType.startsWith(\"image/\")) {\n return imageToAnthropicBlock({\n type: \"image\",\n image: file.data,\n mediaType: file.mediaType,\n });\n }\n\n if (file.mediaType !== \"application/pdf\") {\n throw new Error(\"Anthropic Messages only supports image and PDF file attachments\");\n }\n\n if (file.data.type === \"url\") {\n return {\n type: \"document\",\n source: {\n type: \"url\",\n url: file.data.url,\n },\n };\n }\n\n return {\n type: \"document\",\n source: {\n type: \"base64\",\n media_type: file.mediaType,\n data: file.data.data,\n },\n };\n}\n\nfunction toolDefinitionToAnthropic(tool: ToolDefinition): AnthropicContentBlock {\n return {\n name: tool.name,\n description: tool.description,\n input_schema: tool.parameters,\n };\n}\n\nfunction toolChoiceToAnthropic(toolChoice: ToolChoice): unknown {\n if (toolChoice === \"auto\") {\n return { type: \"auto\" };\n }\n\n if (toolChoice === \"required\") {\n return { type: \"any\" };\n }\n\n if (toolChoice === \"none\") {\n return { type: \"none\" };\n }\n\n return {\n type: \"tool\",\n name: toolChoice.name,\n };\n}\n\nfunction toolCallDelta(\n id: string,\n values: { name?: string | undefined; argumentsDelta?: string | undefined },\n): CompletionModelStreamEvent {\n const event: CompletionModelStreamEvent = { type: \"tool_call_delta\", id };\n if (values.name !== undefined) event.name = values.name;\n if (values.argumentsDelta !== undefined) event.argumentsDelta = values.argumentsDelta;\n return event;\n}\n\nexport const anthropicMessageHelpers = {\n messageToAnthropicMessages,\n toolDefinitionToAnthropic,\n};\n","import {\n type CompletionRequest,\n type Message as MessageType,\n normalizeDocuments,\n} from \"@anvia/core/completion\";\n\nexport type OrderedRequestMessagesOptions = {\n includeInstructionsAsSystem?: boolean;\n};\n\nexport function orderedRequestMessages(\n request: CompletionRequest,\n options: OrderedRequestMessagesOptions = {},\n): MessageType[] {\n const messages: MessageType[] = [];\n if (options.includeInstructionsAsSystem === true && request.instructions !== undefined) {\n messages.push({ role: \"system\", content: request.instructions });\n }\n messages.push(...request.chatHistory.filter((message) => message.role === \"system\"));\n const documents = normalizeDocuments(request.documents);\n if (documents !== undefined) {\n messages.push(documents);\n }\n messages.push(...request.chatHistory.filter((message) => message.role !== \"system\"));\n return messages;\n}\n","import type { JsonObject } from \"@anvia/core/completion\";\n\nexport function isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nexport function numberFrom(value: unknown): number {\n return typeof value === \"number\" && Number.isFinite(value) ? Math.max(0, value) : 0;\n}\n\nexport function stringFrom(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\n\nexport function schemaName(schema: JsonObject): string {\n return typeof schema.title === \"string\" ? schema.title : \"response_schema\";\n}\n","import type { ModelContextLimits } from \"@anvia/core/completion\";\nimport type { ModelId } from \"@anvia/core/model-listing\";\n\nexport type KnownAnthropicCompletionModelId =\n | \"claude-3-5-sonnet-20240620\"\n | \"claude-3-5-sonnet-20241022\"\n | \"claude-3-7-sonnet-20250219\"\n | \"claude-3-haiku-20240307\"\n | \"claude-3-opus-20240229\"\n | \"claude-3-sonnet-20240229\"\n | \"claude-fable-5\"\n | \"claude-haiku-4-5\"\n | \"claude-haiku-4-5-20251001\"\n | \"claude-opus-4-0\"\n | \"claude-opus-4-1\"\n | \"claude-opus-4-1-20250805\"\n | \"claude-opus-4-20250514\"\n | \"claude-opus-4-5\"\n | \"claude-opus-4-5-20251101\"\n | \"claude-opus-4-6\"\n | \"claude-opus-4-7\"\n | \"claude-opus-4-8\"\n | \"claude-opus-5\"\n | \"claude-mythos-5\"\n | \"claude-mythos-preview\"\n | \"claude-sonnet-4-0\"\n | \"claude-sonnet-4-20250514\"\n | \"claude-sonnet-4-5\"\n | \"claude-sonnet-4-5-20250929\"\n | \"claude-sonnet-4-6\"\n | \"claude-sonnet-5\";\n\nexport type AnthropicCompletionModelId = ModelId<KnownAnthropicCompletionModelId>;\n\nconst CONTEXT_200K_32K = { contextWindow: 200_000, maxOutputTokens: 32_000 };\nconst CONTEXT_200K_64K = { contextWindow: 200_000, maxOutputTokens: 64_000 };\nconst CONTEXT_1M_128K = { contextWindow: 1_000_000, maxOutputTokens: 128_000 };\n\nexport const ANTHROPIC_COMPLETION_MODEL_CONTEXT_LIMITS = {\n \"claude-3-5-sonnet-20240620\": { contextWindow: 200_000, maxOutputTokens: 8_192 },\n \"claude-3-5-sonnet-20241022\": { contextWindow: 200_000, maxOutputTokens: 8_192 },\n \"claude-3-7-sonnet-20250219\": CONTEXT_200K_64K,\n \"claude-3-haiku-20240307\": { contextWindow: 200_000, maxOutputTokens: 4_096 },\n \"claude-3-opus-20240229\": { contextWindow: 200_000, maxOutputTokens: 4_096 },\n \"claude-3-sonnet-20240229\": { contextWindow: 200_000, maxOutputTokens: 4_096 },\n \"claude-fable-5\": CONTEXT_1M_128K,\n \"claude-haiku-4-5\": CONTEXT_200K_64K,\n \"claude-haiku-4-5-20251001\": CONTEXT_200K_64K,\n \"claude-opus-4-0\": CONTEXT_200K_32K,\n \"claude-opus-4-1\": CONTEXT_200K_32K,\n \"claude-opus-4-1-20250805\": CONTEXT_200K_32K,\n \"claude-opus-4-20250514\": CONTEXT_200K_32K,\n \"claude-opus-4-5\": CONTEXT_200K_64K,\n \"claude-opus-4-5-20251101\": CONTEXT_200K_64K,\n \"claude-opus-4-6\": CONTEXT_1M_128K,\n \"claude-opus-4-7\": CONTEXT_1M_128K,\n \"claude-opus-4-8\": CONTEXT_1M_128K,\n \"claude-opus-5\": CONTEXT_1M_128K,\n \"claude-mythos-5\": CONTEXT_1M_128K,\n \"claude-mythos-preview\": CONTEXT_1M_128K,\n \"claude-sonnet-4-0\": CONTEXT_200K_64K,\n \"claude-sonnet-4-20250514\": CONTEXT_200K_64K,\n \"claude-sonnet-4-5\": CONTEXT_200K_64K,\n \"claude-sonnet-4-5-20250929\": CONTEXT_200K_64K,\n \"claude-sonnet-4-6\": { contextWindow: 1_000_000, maxOutputTokens: 64_000 },\n \"claude-sonnet-5\": CONTEXT_1M_128K,\n} satisfies Readonly<Record<KnownAnthropicCompletionModelId, ModelContextLimits>>;\n","import {\n AnthropicVertex,\n type ClientOptions as AnthropicVertexSdkOptions,\n} from \"@anthropic-ai/vertex-sdk\";\nimport {\n type ModelContextLimits,\n resolveModelContextLimits,\n type StreamingCompletionModel,\n} from \"@anvia/core/completion\";\nimport { AnthropicCompletionModel } from \"./completion\";\nimport {\n ANTHROPIC_COMPLETION_MODEL_CONTEXT_LIMITS,\n type AnthropicCompletionModelId,\n} from \"./models\";\n\ntype AnthropicVertexManagedClientOptions = Omit<AnthropicVertexSdkOptions, \"maxRetries\"> & {\n client?: never;\n};\n\ntype AnthropicVertexInjectedClientOptions = {\n client: AnthropicVertex;\n} & {\n [Key in Exclude<keyof AnthropicVertexManagedClientOptions, \"client\">]?: never;\n};\n\nexport type AnthropicVertexClientOptions =\n | AnthropicVertexManagedClientOptions\n | AnthropicVertexInjectedClientOptions;\n\nexport type AnthropicVertexCompletionModelOptions = {\n modelId: AnthropicCompletionModelId;\n contextLimits?: ModelContextLimits | undefined;\n};\n\nexport type AnthropicVertexCompletionModelHandle = StreamingCompletionModel<unknown>;\n\nexport class AnthropicVertexClient {\n private readonly sdk: AnthropicVertex;\n\n constructor(options: AnthropicVertexClientOptions) {\n const { client, ...clientOptions } = options;\n if (client !== undefined) {\n const conflict = Object.keys(clientOptions)[0];\n if (conflict !== undefined) {\n throw new TypeError(`AnthropicVertexClient cannot combine client with ${conflict}.`);\n }\n this.sdk = client;\n return;\n }\n this.sdk = new AnthropicVertex({ ...clientOptions, maxRetries: 0 });\n }\n\n completionModel(\n options: AnthropicVertexCompletionModelOptions,\n ): AnthropicVertexCompletionModelHandle {\n const modelId = requireModelId(options.modelId);\n return new AnthropicCompletionModel(\n this.sdk,\n modelId,\n resolveModelContextLimits(\n modelId,\n ANTHROPIC_COMPLETION_MODEL_CONTEXT_LIMITS,\n options.contextLimits,\n ),\n );\n }\n}\n\nfunction requireModelId<ModelId extends string>(modelId: ModelId): ModelId {\n if (modelId.trim().length === 0) {\n throw new TypeError(\"modelId must be a non-empty string\");\n }\n return modelId;\n}\n"],"mappings":"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","names":["resolveModelContextLimits","requireModelId","resolveModelContextLimits"]}
|
|
1
|
+
{"version":3,"sources":["../src/anthropic/index.ts","../src/anthropic/client.ts","../src/anthropic/completion.ts","../src/request-messages.ts","../src/utils.ts","../src/anthropic/controls.ts","../src/anthropic/models.ts","../src/anthropic/vertex-client.ts"],"sourcesContent":["export {\n AnthropicClient,\n type AnthropicClientOptions,\n type AnthropicCompletionModelHandle,\n type AnthropicCompletionModelOptions,\n} from \"./client\";\nexport {\n ANTHROPIC_REASONING_EFFORTS,\n type AnthropicControlsFor,\n type AnthropicReasoningControls,\n type AnthropicReasoningEffort,\n} from \"./controls\";\nexport type { AnthropicCompletionModelId, KnownAnthropicCompletionModelId } from \"./models\";\nexport {\n AnthropicVertexClient,\n type AnthropicVertexClientOptions,\n type AnthropicVertexCompletionModelHandle,\n type AnthropicVertexCompletionModelOptions,\n} from \"./vertex-client\";\n","import Anthropic from \"@anthropic-ai/sdk\";\nimport {\n type CompletionModelControls,\n defineCompletionModelControls,\n type ModelContextLimits,\n resolveModelContextLimits,\n type StreamingCompletionModel,\n} from \"@anvia/core/completion\";\nimport {\n type ModelList,\n type ModelListingClient,\n ModelListingError,\n} from \"@anvia/core/model-listing\";\nimport { AnthropicCompletionModel } from \"./completion\";\nimport { anthropicControlsForModel, type AnthropicControlsFor } from \"./controls\";\nimport {\n ANTHROPIC_COMPLETION_MODEL_CONTEXT_LIMITS,\n type AnthropicCompletionModelId,\n} from \"./models\";\n\ntype AnthropicManagedClientOptions = {\n apiKey: string;\n baseUrl?: string | undefined;\n client?: never;\n};\n\ntype AnthropicInjectedClientOptions = {\n client: Anthropic;\n apiKey?: never;\n baseUrl?: never;\n};\n\nexport type AnthropicClientOptions = AnthropicManagedClientOptions | AnthropicInjectedClientOptions;\n\nexport type AnthropicCompletionModelOptions<\n ModelId extends AnthropicCompletionModelId = AnthropicCompletionModelId,\n Controls extends CompletionModelControls = AnthropicControlsFor<ModelId>,\n> = {\n modelId: ModelId;\n contextLimits?: ModelContextLimits | undefined;\n controls?: Controls | undefined;\n};\n\nexport type AnthropicCompletionModelHandle<\n Controls extends CompletionModelControls = CompletionModelControls,\n> = StreamingCompletionModel<unknown, Controls>;\n\nexport class AnthropicClient implements ModelListingClient {\n private readonly sdk: Anthropic;\n\n constructor(options: AnthropicClientOptions) {\n if (options.client !== undefined) {\n rejectManagedOptionsWithInjectedClient(options, [\"apiKey\", \"baseUrl\"]);\n this.sdk = options.client;\n return;\n }\n this.sdk = new Anthropic({\n apiKey: requireApiKey(options.apiKey),\n baseURL: options.baseUrl,\n maxRetries: 0,\n });\n }\n\n completionModel<\n const ModelId extends AnthropicCompletionModelId,\n const Controls extends CompletionModelControls = AnthropicControlsFor<ModelId>,\n >(\n options: AnthropicCompletionModelOptions<ModelId, Controls>,\n ): AnthropicCompletionModelHandle<Controls> {\n const modelId = requireModelId(options.modelId);\n const controls = (\n options.controls === undefined\n ? anthropicControlsForModel(modelId)\n : defineCompletionModelControls(options.controls)\n ) as Controls | undefined;\n return new AnthropicCompletionModel(\n this.sdk,\n modelId,\n resolveModelContextLimits(\n modelId,\n ANTHROPIC_COMPLETION_MODEL_CONTEXT_LIMITS,\n options.contextLimits,\n ),\n controls,\n );\n }\n\n async listModels(options: { abortSignal?: AbortSignal | undefined } = {}): Promise<ModelList> {\n try {\n const response = await this.sdk.models.list(undefined, {\n signal: options.abortSignal,\n maxRetries: 0,\n });\n const data = (await collectModelsFromResponse(response))\n .map(toListedModel)\n .filter(isListedModel);\n return { data };\n } catch (error) {\n throw toModelListingError(\"Anthropic\", error);\n }\n }\n}\n\nfunction rejectManagedOptionsWithInjectedClient(options: object, keys: readonly string[]): void {\n const conflict = keys.find((key) => key in options);\n if (conflict !== undefined) {\n throw new TypeError(`AnthropicClient cannot combine client with ${conflict}.`);\n }\n}\n\nfunction requireApiKey(apiKey: string | undefined): string {\n if (apiKey === undefined || apiKey.trim().length === 0) {\n throw new Error(\n \"Missing Anthropic credentials. Pass apiKey when constructing AnthropicClient.\",\n );\n }\n\n return apiKey;\n}\n\nfunction requireModelId<ModelId extends string>(modelId: ModelId): ModelId {\n if (modelId.trim().length === 0) {\n throw new TypeError(\"modelId must be a non-empty string\");\n }\n return modelId;\n}\n\nasync function collectModelsFromResponse(response: unknown): Promise<unknown[]> {\n if (isAsyncIterable(response)) {\n const models: unknown[] = [];\n for await (const model of response) {\n models.push(model);\n }\n return models;\n }\n\n if (Array.isArray(response)) {\n return response;\n }\n\n if (isObject(response) && Array.isArray(response.data)) {\n return response.data;\n }\n\n return [];\n}\n\nfunction toListedModel(model: unknown): ModelList[\"data\"][number] | undefined {\n if (!isObject(model) || typeof model.id !== \"string\") {\n return undefined;\n }\n\n const createdAt =\n typeof model.created_at === \"string\"\n ? secondsFromDateString(model.created_at)\n : typeof model.created_at === \"number\"\n ? model.created_at\n : undefined;\n\n const listedModel: ModelList[\"data\"][number] = {\n id: model.id,\n };\n if (typeof model.display_name === \"string\") {\n listedModel.name = model.display_name;\n }\n if (typeof model.name === \"string\") {\n listedModel.name = model.name;\n }\n if (typeof model.description === \"string\") {\n listedModel.description = model.description;\n }\n if (typeof model.type === \"string\") {\n listedModel.type = model.type;\n }\n if (createdAt !== undefined) {\n listedModel.createdAt = createdAt;\n }\n if (typeof model.owned_by === \"string\") {\n listedModel.ownedBy = model.owned_by;\n }\n if (typeof model.max_input_tokens === \"number\") {\n listedModel.contextLength = model.max_input_tokens;\n }\n if (typeof model.context_length === \"number\") {\n listedModel.contextLength = model.context_length;\n }\n return listedModel;\n}\n\nfunction secondsFromDateString(value: string): number | undefined {\n const time = Date.parse(value);\n return Number.isNaN(time) ? undefined : Math.floor(time / 1000);\n}\n\nfunction isListedModel(\n model: ModelList[\"data\"][number] | undefined,\n): model is ModelList[\"data\"][number] {\n return model !== undefined;\n}\n\nfunction toModelListingError(provider: string, error: unknown): ModelListingError {\n if (error instanceof ModelListingError) {\n return error;\n }\n\n const statusCode = getStatusCode(error);\n return new ModelListingError(`${provider} model listing failed: ${getErrorMessage(error)}`, {\n provider,\n statusCode,\n cause: error,\n });\n}\n\nfunction getStatusCode(error: unknown): number | undefined {\n if (!isObject(error)) {\n return undefined;\n }\n\n if (typeof error.status === \"number\") {\n return error.status;\n }\n\n if (typeof error.statusCode === \"number\") {\n return error.statusCode;\n }\n\n return undefined;\n}\n\nfunction getErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nfunction isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nfunction isAsyncIterable(value: unknown): value is AsyncIterable<unknown> {\n return isObject(value) && Symbol.asyncIterator in value;\n}\n","import type { Anthropic } from \"@anthropic-ai/sdk\";\nimport type { AnthropicVertex } from \"@anthropic-ai/vertex-sdk\";\nimport type { ModelContextLimits } from \"@anvia/core/completion\";\nimport {\n type AssistantContentPart,\n assertCompletionRequestSupported,\n type CompletionFinishReason,\n type CompletionModelCapabilities,\n type CompletionModelControls,\n type CompletionModelInfo,\n type CompletionModelStreamEvent,\n CompletionProviderOutputError,\n type CompletionProviderOutputErrorKind,\n type CompletionRequest,\n type CompletionResponse,\n type FilePart,\n type ImagePart,\n isJsonValue,\n type JsonObject,\n type JsonValue,\n type Message as MessageType,\n type ModelCallOptions,\n type ReasoningDetail,\n type StreamingCompletionModel,\n type ToolChoice,\n type ToolDefinition,\n type ToolResultContentPart,\n type ToolResultPart,\n Usage,\n type UserContentPart,\n withContextUsage,\n} from \"@anvia/core/completion\";\nimport { orderedRequestMessages } from \"../request-messages\";\nimport { isPlainObject, numberFrom, stringFrom } from \"../utils\";\nimport type { AnthropicCompletionModelId } from \"./models\";\n\ntype AnthropicCreateParams = Record<string, unknown>;\ntype AnthropicMessage = Record<string, unknown>;\ntype AnthropicContentBlock = Record<string, unknown>;\ntype AnthropicMessageCreate = (\n params: AnthropicCreateParams,\n options: ReturnType<typeof anthropicRequestOptions>,\n) => Promise<unknown>;\n\ntype AnthropicStreamToolInput = { type: \"empty\" } | { type: \"complete\"; text: string };\n\ntype AnthropicStreamToolState = {\n index: number;\n id: string;\n name: string;\n initialInput: AnthropicStreamToolInput;\n partialJson: string;\n hasPartialJson: boolean;\n closed: boolean;\n finalized: boolean;\n};\n\nconst DEFAULT_MAX_TOKENS = 1024;\n\nexport class AnthropicCompletionModel<\n Controls extends CompletionModelControls = CompletionModelControls,\n> implements StreamingCompletionModel<unknown, Controls> {\n readonly provider = \"anthropic\";\n readonly capabilities: CompletionModelCapabilities = {\n streaming: true,\n tools: true,\n toolChoice: true,\n imageInput: true,\n documentInput: true,\n outputSchema: false,\n reasoning: true,\n };\n constructor(\n private readonly client: Anthropic | AnthropicVertex,\n readonly modelId: AnthropicCompletionModelId,\n readonly contextLimits?: ModelContextLimits,\n readonly controls?: Controls,\n ) {}\n\n private modelInfo(): CompletionModelInfo | undefined {\n return this.contextLimits === undefined\n ? undefined\n : { modelId: this.modelId, context: this.contextLimits };\n }\n\n traceRequest(\n request: CompletionRequest,\n options: { stream?: boolean | undefined } = {},\n ): JsonObject {\n const params = toAnthropicMessagesParams(this.modelId, request);\n if (options.stream === true) {\n params.stream = true;\n }\n return providerRequestSummary(params, request, options);\n }\n\n async completion(\n request: CompletionRequest,\n options?: ModelCallOptions,\n ): Promise<CompletionResponse> {\n assertCompletionRequestSupported(this, request);\n const params = toAnthropicMessagesParams(this.modelId, request);\n const response = await this.createMessage(params, anthropicRequestOptions(options));\n return withContextUsage(fromAnthropicMessage(response), this.modelInfo());\n }\n\n private createMessage(\n params: AnthropicCreateParams,\n options: ReturnType<typeof anthropicRequestOptions>,\n ): Promise<unknown> {\n const messages = this.client.messages;\n const create = messages.create as unknown as AnthropicMessageCreate;\n return create.call(messages, params, options);\n }\n\n async *streamCompletion(\n request: CompletionRequest,\n options?: ModelCallOptions,\n ): AsyncIterable<CompletionModelStreamEvent> {\n assertCompletionRequestSupported(this, request, { streaming: true });\n const params = { ...toAnthropicMessagesParams(this.modelId, request), stream: true };\n const stream = await this.createMessage(params, anthropicRequestOptions(options));\n const toolsByIndex = new Map<number, AnthropicStreamToolState>();\n const toolIndexesById = new Map<string, number>();\n const streamUsage = Usage.empty();\n const streamUsageFields = emptyAnthropicStreamUsageFields();\n let hasStreamUsage = false;\n let hasToolProgress = false;\n let hasTerminalEvent = false;\n let streamMessageId: string | undefined;\n let streamProviderFinishReason: unknown;\n for await (const event of stream as unknown as AsyncIterable<unknown>) {\n const hadProviderFinishReason = streamProviderFinishReason !== undefined;\n if (isPlainObject(event)) {\n if (event.type === \"message_start\" && isPlainObject(event.message)) {\n streamMessageId = stringFrom(event.message.id) ?? streamMessageId;\n if (event.message.stop_reason !== undefined && event.message.stop_reason !== null) {\n streamProviderFinishReason = acceptAnthropicStreamFinishReason(\n streamProviderFinishReason,\n event.message.stop_reason,\n streamUsage,\n );\n }\n }\n if (event.type === \"message_delta\" && isPlainObject(event.delta)) {\n if (event.delta.stop_reason !== undefined && event.delta.stop_reason !== null) {\n streamProviderFinishReason = acceptAnthropicStreamFinishReason(\n streamProviderFinishReason,\n event.delta.stop_reason,\n streamUsage,\n );\n }\n }\n hasStreamUsage =\n applyAnthropicStreamUsage(event, streamUsage, streamUsageFields) || hasStreamUsage;\n }\n\n if (hadProviderFinishReason && isAnthropicSemanticProgressEvent(event)) {\n throw providerOutputError(\"invalid-tool-call\", streamUsage);\n }\n\n if (\n isPlainObject(event) &&\n event.type === \"content_block_start\" &&\n isPlainObject(event.content_block) &&\n event.content_block.type === \"tool_use\"\n ) {\n const state = startAnthropicStreamTool(event.index, event.content_block, streamUsage);\n if (toolsByIndex.has(state.index) || toolIndexesById.has(state.id)) {\n throw providerOutputError(\"invalid-tool-call\", streamUsage, state.id);\n }\n toolsByIndex.set(state.index, state);\n toolIndexesById.set(state.id, state.index);\n hasToolProgress = true;\n yield toolCallDelta(state.id, {\n name: state.name,\n argumentsDelta:\n state.initialInput.type === \"complete\" ? state.initialInput.text : undefined,\n });\n continue;\n }\n\n if (\n isPlainObject(event) &&\n event.type === \"content_block_delta\" &&\n isPlainObject(event.delta) &&\n event.delta.type === \"input_json_delta\"\n ) {\n const index = anthropicToolStreamIndex(event.index, streamUsage);\n const state = toolsByIndex.get(index);\n if (state === undefined) {\n throw providerOutputError(\"invalid-tool-call\", streamUsage);\n }\n if (state.closed || state.finalized) {\n throw providerOutputError(\"invalid-tool-call\", streamUsage, state.id);\n }\n if (typeof event.delta.partial_json !== \"string\") {\n throw providerOutputError(\"invalid-tool-arguments\", streamUsage, state.id);\n }\n if (state.initialInput.type === \"complete\") {\n throw providerOutputError(\"invalid-tool-arguments\", streamUsage, state.id);\n }\n state.hasPartialJson = true;\n state.partialJson += event.delta.partial_json;\n yield toolCallDelta(state.id, { argumentsDelta: event.delta.partial_json });\n continue;\n }\n\n if (isPlainObject(event) && event.type === \"content_block_stop\") {\n const index = optionalAnthropicToolStreamIndex(event.index);\n const state = index === undefined ? undefined : toolsByIndex.get(index);\n if (state !== undefined) {\n if (state.closed) {\n throw providerOutputError(\"invalid-tool-call\", streamUsage, state.id);\n }\n state.closed = true;\n continue;\n }\n }\n\n if (isPlainObject(event) && event.type === \"message_stop\") {\n hasTerminalEvent = true;\n const finalMessage = isPlainObject(event.message) ? event.message : undefined;\n if (finalMessage?.stop_reason !== undefined && finalMessage.stop_reason !== null) {\n streamProviderFinishReason = acceptAnthropicStreamFinishReason(\n streamProviderFinishReason,\n finalMessage.stop_reason,\n streamUsage,\n );\n }\n const hasFinalMessageToolUse = anthropicMessageHasToolUse(finalMessage);\n if (hasToolProgress || hasFinalMessageToolUse) {\n const baseUsage =\n finalMessage === undefined ? Usage.empty() : anthropicMessageUsage(finalMessage);\n const terminalUsage = hasStreamUsage\n ? mergeUsage(baseUsage, streamUsage, streamUsageFields)\n : baseUsage;\n const terminalResponse = emptyAnthropicStreamResponse(\n event,\n streamMessageId,\n terminalUsage,\n );\n applyAnthropicFinishReason(terminalResponse, streamProviderFinishReason);\n assertAnthropicResponseIntegrity(terminalResponse, true);\n }\n for (const state of toolsByIndex.values()) {\n const finalDelta = finalizeAnthropicStreamTool(state, streamUsage);\n if (finalDelta !== undefined) yield finalDelta;\n }\n\n const baseResponse =\n finalMessage !== undefined\n ? fromAnthropicMessageUnchecked(finalMessage)\n : emptyAnthropicStreamResponse(event, streamMessageId, streamUsage);\n const response = hasStreamUsage\n ? {\n ...baseResponse,\n usage: mergeUsage(baseResponse.usage, streamUsage, streamUsageFields),\n }\n : baseResponse;\n applyAnthropicFinishReason(response, streamProviderFinishReason);\n assertAnthropicResponseIntegrity(response, hasToolProgress || hasFinalMessageToolUse);\n yield {\n type: \"final\",\n response: withContextUsage(response, this.modelInfo()),\n };\n return;\n }\n\n if (isPlainObject(event) && event.type === \"error\") {\n hasTerminalEvent = true;\n }\n\n for (const mapped of fromAnthropicStreamEvent(event)) {\n yield mapped;\n }\n\n if (hasTerminalEvent) return;\n }\n\n if (hasToolProgress && !hasTerminalEvent) {\n throw providerOutputError(\"incomplete-stream\", streamUsage);\n }\n }\n}\n\nfunction isAnthropicSemanticProgressEvent(event: unknown): boolean {\n return (\n isPlainObject(event) &&\n (event.type === \"content_block_start\" || event.type === \"content_block_delta\")\n );\n}\n\ntype AnthropicStreamUsageFields = {\n inputTokens: boolean;\n outputTokens: boolean;\n cachedInputTokens: boolean;\n cacheCreationInputTokens: boolean;\n};\n\nfunction emptyAnthropicStreamUsageFields(): AnthropicStreamUsageFields {\n return {\n inputTokens: false,\n outputTokens: false,\n cachedInputTokens: false,\n cacheCreationInputTokens: false,\n };\n}\n\nfunction applyAnthropicStreamUsage(\n event: Record<string, unknown>,\n usage: Usage,\n fields: AnthropicStreamUsageFields,\n): boolean {\n let changed = false;\n let uncachedInputTokens = Math.max(\n 0,\n usage.inputTokens - usage.cachedInputTokens - usage.cacheCreationInputTokens,\n );\n\n if (event.type === \"message_start\" && isPlainObject(event.message)) {\n const source = isPlainObject(event.message.usage) ? event.message.usage : undefined;\n if (source !== undefined) {\n if (\"input_tokens\" in source) {\n uncachedInputTokens = numberFrom(source.input_tokens);\n fields.inputTokens = true;\n changed = true;\n }\n if (\"cache_read_input_tokens\" in source) {\n usage.cachedInputTokens = numberFrom(source.cache_read_input_tokens);\n fields.cachedInputTokens = true;\n changed = true;\n }\n if (\"cache_creation_input_tokens\" in source) {\n usage.cacheCreationInputTokens = numberFrom(source.cache_creation_input_tokens);\n fields.cacheCreationInputTokens = true;\n changed = true;\n }\n }\n }\n\n if (event.type === \"message_delta\") {\n const source = isPlainObject(event.usage) ? event.usage : undefined;\n if (source !== undefined && \"output_tokens\" in source) {\n usage.outputTokens = Math.max(usage.outputTokens, numberFrom(source.output_tokens));\n fields.outputTokens = true;\n changed = true;\n }\n }\n\n if (changed) {\n Object.assign(\n usage,\n anthropicUsage(\n uncachedInputTokens,\n usage.outputTokens,\n usage.cachedInputTokens,\n usage.cacheCreationInputTokens,\n ),\n );\n }\n\n return changed;\n}\n\nfunction mergeUsage(base: Usage, stream: Usage, fields: AnthropicStreamUsageFields): Usage {\n const baseUncachedInputTokens = Math.max(\n 0,\n base.inputTokens - base.cachedInputTokens - base.cacheCreationInputTokens,\n );\n const streamUncachedInputTokens = Math.max(\n 0,\n stream.inputTokens - stream.cachedInputTokens - stream.cacheCreationInputTokens,\n );\n const uncachedInputTokens = fields.inputTokens\n ? streamUncachedInputTokens\n : baseUncachedInputTokens;\n const outputTokens = fields.outputTokens ? stream.outputTokens : base.outputTokens;\n const cachedInputTokens = fields.cachedInputTokens\n ? stream.cachedInputTokens\n : base.cachedInputTokens;\n const cacheCreationInputTokens = fields.cacheCreationInputTokens\n ? stream.cacheCreationInputTokens\n : base.cacheCreationInputTokens;\n return anthropicUsage(\n uncachedInputTokens,\n outputTokens,\n cachedInputTokens,\n cacheCreationInputTokens,\n );\n}\n\nfunction copyUsage(usage: Usage): Usage {\n let copy: Usage = { ...usage };\n if (usage.details !== undefined) copy = { ...copy, details: { ...usage.details } };\n return copy;\n}\n\nfunction emptyAnthropicStreamResponse(\n rawResponse: unknown,\n messageId: string | undefined,\n usage: Usage,\n): CompletionResponse {\n const response: CompletionResponse = {\n choice: [],\n usage: copyUsage(usage),\n rawResponse,\n };\n if (messageId !== undefined) response.messageId = messageId;\n return response;\n}\n\nfunction startAnthropicStreamTool(\n indexValue: unknown,\n block: Record<string, unknown>,\n usage: Usage,\n): AnthropicStreamToolState {\n const index = anthropicToolStreamIndex(indexValue, usage);\n const id = requiredToolCallId(block.id, usage);\n const name = requiredToolName(block.name, id, usage);\n return {\n index,\n id,\n name,\n initialInput: anthropicStreamToolInput(block.input, id, usage),\n partialJson: \"\",\n hasPartialJson: false,\n closed: false,\n finalized: false,\n };\n}\n\nfunction anthropicStreamToolInput(\n input: unknown,\n toolCallId: string,\n usage: Usage,\n): AnthropicStreamToolInput {\n if (!isPlainObject(input) || !isJsonValue(input)) {\n throw providerOutputError(\"invalid-tool-arguments\", usage, toolCallId);\n }\n\n if (isEmptyJsonObject(input)) {\n return { type: \"empty\" };\n }\n\n const text = JSON.stringify(input);\n if (text === undefined) {\n throw providerOutputError(\"invalid-tool-arguments\", usage, toolCallId);\n }\n return { type: \"complete\", text };\n}\n\nfunction finalizeAnthropicStreamTool(\n state: AnthropicStreamToolState,\n usage: Usage,\n): CompletionModelStreamEvent | undefined {\n if (state.finalized) return undefined;\n\n if (state.initialInput.type === \"complete\") {\n state.finalized = true;\n return undefined;\n }\n\n if (state.hasPartialJson) {\n assertSerializedToolInput(state.partialJson, state.id, usage);\n state.finalized = true;\n return undefined;\n }\n state.finalized = true;\n return toolCallDelta(state.id, { argumentsDelta: \"{}\" });\n}\n\nfunction assertSerializedToolInput(text: string, toolCallId: string, usage: Usage): void {\n const parsed = parseSerializedToolInput(text);\n if (parsed.type === \"malformed\") {\n throw providerOutputError(\"malformed-tool-arguments\", usage, toolCallId);\n }\n if (parsed.type === \"invalid\") {\n throw providerOutputError(\"invalid-tool-arguments\", usage, toolCallId);\n }\n}\n\nfunction parseSerializedToolInput(\n text: string,\n): { type: \"valid\"; value: JsonValue } | { type: \"malformed\" } | { type: \"invalid\" } {\n let value: unknown;\n try {\n value = JSON.parse(text);\n } catch {\n return { type: \"malformed\" };\n }\n return isJsonValue(value) ? { type: \"valid\", value } : { type: \"invalid\" };\n}\n\nfunction isEmptyJsonObject(value: JsonValue): boolean {\n return (\n !Array.isArray(value) &&\n typeof value === \"object\" &&\n value !== null &&\n Object.keys(value).length === 0\n );\n}\n\nfunction requiredToolCallId(value: unknown, usage: Usage): string {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw providerOutputError(\"invalid-tool-call\", usage);\n }\n return value;\n}\n\nfunction requiredToolName(value: unknown, toolCallId: string, usage: Usage): string {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw providerOutputError(\"invalid-tool-call\", usage, toolCallId);\n }\n return value;\n}\n\nfunction anthropicToolStreamIndex(value: unknown, usage: Usage): number {\n const index = optionalAnthropicToolStreamIndex(value);\n if (index === undefined) {\n throw providerOutputError(\"invalid-tool-call\", usage);\n }\n return index;\n}\n\nfunction optionalAnthropicToolStreamIndex(value: unknown): number | undefined {\n return typeof value === \"number\" && Number.isInteger(value) && value >= 0 ? value : undefined;\n}\n\nexport function toAnthropicMessagesParams(\n modelId: AnthropicCompletionModelId,\n request: CompletionRequest,\n): AnthropicCreateParams {\n const messages = requestMessages(request);\n const system = systemFromMessages(request, messages);\n if (\n request.providerOptions !== undefined &&\n (!isPlainObject(request.providerOptions) || !isJsonValue(request.providerOptions))\n ) {\n throw new TypeError(\"Anthropic providerOptions must be a JSON object.\");\n }\n const providerOptions = request.providerOptions ?? {};\n const params: AnthropicCreateParams = {\n ...providerOptions,\n model: modelId,\n max_tokens: request.maxTokens ?? DEFAULT_MAX_TOKENS,\n messages: messages.flatMap(messageToAnthropicMessages),\n };\n\n const reasoningEffort = request.controls?.reasoningEffort;\n if (reasoningEffort !== undefined) {\n const outputConfig = isPlainObject(params.output_config) ? params.output_config : {};\n params.output_config = { ...outputConfig, effort: reasoningEffort };\n }\n\n delete params.tools;\n\n if (system !== undefined) {\n params.system = system;\n }\n\n if (request.tools.length > 0) {\n params.tools = request.tools.map(toolDefinitionToAnthropic);\n }\n\n if (request.temperature !== undefined) {\n params.temperature = request.temperature;\n }\n\n if (request.toolChoice !== undefined) {\n params.tool_choice = toolChoiceToAnthropic(request.toolChoice);\n }\n\n return params;\n}\n\nfunction anthropicRequestOptions(options: ModelCallOptions | undefined): {\n signal?: AbortSignal | undefined;\n maxRetries: 0;\n} {\n return { signal: options?.abortSignal, maxRetries: 0 };\n}\n\nfunction providerRequestSummary(\n params: AnthropicCreateParams,\n request: CompletionRequest,\n options: { stream?: boolean | undefined },\n): JsonObject {\n return compactJsonObject({\n provider: \"anthropic\",\n api: \"messages\",\n stream: options.stream === true,\n model: stringFrom(params.model),\n parameterKeys: Object.keys(params).sort(),\n messageCount: Array.isArray(params.messages) ? params.messages.length : undefined,\n toolCount: request.tools.length,\n toolNames: request.tools.map((tool) => tool.name),\n hasSystem: typeof params.system === \"string\" && params.system.length > 0,\n temperature: request.temperature,\n maxTokens: request.maxTokens ?? numberFrom(params.max_tokens),\n toolChoice: toolChoiceSummary(request.toolChoice),\n providerOptionKeys: isPlainObject(request.providerOptions)\n ? Object.keys(request.providerOptions).sort()\n : undefined,\n });\n}\n\nfunction toolChoiceSummary(toolChoice: ToolChoice | undefined): JsonValue | undefined {\n if (toolChoice === undefined || typeof toolChoice === \"string\") {\n return toolChoice;\n }\n return { type: toolChoice.type, name: toolChoice.name };\n}\n\nfunction compactJsonObject(values: Record<string, unknown>): JsonObject {\n return Object.fromEntries(\n Object.entries(values).flatMap(([key, value]) => {\n if (!isJsonValue(value)) {\n return [];\n }\n return [[key, value]];\n }),\n ) as JsonObject;\n}\n\nfunction requestMessages(request: CompletionRequest): MessageType[] {\n return orderedRequestMessages(request);\n}\n\nfunction systemFromMessages(\n request: CompletionRequest,\n messages: MessageType[],\n): string | undefined {\n const systemMessages = messages.flatMap((message) =>\n message.role === \"system\" ? [message.content] : [],\n );\n if (request.instructions !== undefined) {\n systemMessages.unshift(request.instructions);\n }\n return systemMessages.length === 0 ? undefined : systemMessages.join(\"\\n\\n\");\n}\n\nexport function fromAnthropicMessage(response: unknown): CompletionResponse {\n assertAnthropicRawToolFinish(response);\n const result = fromAnthropicMessageUnchecked(response);\n assertAnthropicResponseIntegrity(result, false);\n return result;\n}\n\nfunction fromAnthropicMessageUnchecked(response: unknown): CompletionResponse {\n const raw = isPlainObject(response) ? response : {};\n const content = Array.isArray(raw.content) ? raw.content : [];\n const choice: AssistantContentPart[] = [];\n const usage = anthropicMessageUsage(raw);\n\n for (const block of content) {\n if (!isPlainObject(block)) {\n continue;\n }\n\n if (block.type === \"text\" && typeof block.text === \"string\") {\n choice.push({ type: \"text\", text: block.text });\n }\n\n if (block.type === \"thinking\" && typeof block.thinking === \"string\") {\n const text: Extract<ReasoningDetail, { type: \"text\" }> =\n typeof block.signature === \"string\"\n ? { type: \"text\", text: block.thinking, signature: block.signature }\n : { type: \"text\", text: block.thinking };\n choice.push({ type: \"reasoning\", text: block.thinking, details: [text] });\n }\n\n if (block.type === \"redacted_thinking\" && typeof block.data === \"string\") {\n choice.push({\n type: \"reasoning\",\n text: \"\",\n details: [{ type: \"redacted\", data: block.data }],\n });\n }\n\n if (block.type === \"tool_use\") {\n const id = requiredToolCallId(block.id, usage);\n const name = requiredToolName(block.name, id, usage);\n if (!isPlainObject(block.input) || !isJsonValue(block.input)) {\n throw providerOutputError(\"invalid-tool-arguments\", usage, id);\n }\n choice.push({\n type: \"tool-call\",\n toolCallId: id,\n callId: id,\n toolName: name,\n input: block.input,\n });\n }\n }\n\n const result: CompletionResponse = {\n choice,\n usage,\n rawResponse: response,\n };\n applyAnthropicFinishReason(result, raw.stop_reason);\n\n if (typeof raw.id === \"string\") {\n result.messageId = raw.id;\n }\n\n return result;\n}\n\nfunction applyAnthropicFinishReason(response: CompletionResponse, value: unknown): void {\n if (value === undefined || value === null) return;\n response.finishReason = typeof value === \"string\" ? anthropicFinishReason(value) : \"other\";\n if (typeof value === \"string\") response.providerFinishReason = value;\n}\n\nfunction anthropicFinishReason(value: string): CompletionFinishReason {\n if (value === \"end_turn\" || value === \"stop_sequence\") return \"stop\";\n if (value === \"max_tokens\" || value === \"model_context_window_exceeded\") return \"length\";\n if (value === \"tool_use\") return \"tool-calls\";\n if (value === \"refusal\") return \"content-filter\";\n return \"other\";\n}\n\nfunction assertAnthropicResponseIntegrity(\n response: CompletionResponse,\n hasAccumulatedToolProgress: boolean,\n): void {\n const toolCalls = response.choice.filter((content) => content.type === \"tool-call\");\n if (hasAccumulatedToolProgress || toolCalls.length > 0) {\n assertSafeToolFinishReason(response);\n } else if (response.finishReason === \"tool-calls\") {\n throw providerOutputError(\n \"invalid-tool-call\",\n response.usage,\n undefined,\n response.finishReason,\n );\n }\n\n const ids = new Set<string>();\n for (const toolCall of toolCalls) {\n if (ids.has(toolCall.toolCallId)) {\n throw providerOutputError(\"invalid-tool-call\", response.usage, toolCall.toolCallId);\n }\n ids.add(toolCall.toolCallId);\n }\n}\n\nfunction assertAnthropicRawToolFinish(response: unknown): void {\n if (!isPlainObject(response) || !anthropicMessageHasToolUse(response)) return;\n const usage = anthropicMessageUsage(response);\n const terminal: CompletionResponse = { choice: [], usage, rawResponse: response };\n applyAnthropicFinishReason(terminal, response.stop_reason);\n assertAnthropicResponseIntegrity(terminal, true);\n}\n\nfunction anthropicMessageHasToolUse(message: unknown): boolean {\n return (\n isPlainObject(message) &&\n Array.isArray(message.content) &&\n message.content.some((block) => isPlainObject(block) && block.type === \"tool_use\")\n );\n}\n\nfunction anthropicMessageUsage(message: Record<string, unknown>): Usage {\n const usage = isPlainObject(message.usage) ? message.usage : {};\n return anthropicUsage(\n numberFrom(usage.input_tokens),\n numberFrom(usage.output_tokens),\n numberFrom(usage.cache_read_input_tokens),\n numberFrom(usage.cache_creation_input_tokens),\n );\n}\n\nfunction assertSafeToolFinishReason(response: CompletionResponse): void {\n if (response.finishReason === undefined) {\n throw providerOutputError(\"incomplete-tool-call\", response.usage);\n }\n if (response.finishReason === \"length\") {\n throw providerOutputError(\n \"truncated-tool-call\",\n response.usage,\n undefined,\n response.finishReason,\n );\n }\n if (response.finishReason === \"content-filter\") {\n throw providerOutputError(\n \"filtered-tool-call\",\n response.usage,\n undefined,\n response.finishReason,\n );\n }\n if (response.finishReason === \"other\") {\n throw providerOutputError(\n \"invalid-tool-call\",\n response.usage,\n undefined,\n response.finishReason,\n );\n }\n if (response.finishReason !== \"tool-calls\") {\n throw providerOutputError(\n \"invalid-tool-call\",\n response.usage,\n undefined,\n response.finishReason,\n );\n }\n}\n\nfunction acceptAnthropicStreamFinishReason(current: unknown, next: unknown, usage: Usage): unknown {\n if (current === undefined) return next;\n if (current !== next) {\n throw providerOutputError(\"invalid-tool-call\", usage);\n }\n return current;\n}\n\nfunction providerOutputError(\n kind: CompletionProviderOutputErrorKind,\n usage: Usage,\n toolCallId?: string,\n finishReason?: CompletionFinishReason,\n): CompletionProviderOutputError {\n const copiedUsage = copyUsage(usage);\n if (kind === \"truncated-tool-call\") {\n if (finishReason !== \"length\") {\n throw new TypeError('Anthropic truncated-tool-call errors require finish reason \"length\".');\n }\n return new CompletionProviderOutputError({\n kind,\n usage: copiedUsage,\n toolCallId,\n finishReason,\n });\n }\n if (kind === \"filtered-tool-call\") {\n if (finishReason !== \"content-filter\") {\n throw new TypeError(\n 'Anthropic filtered-tool-call errors require finish reason \"content-filter\".',\n );\n }\n return new CompletionProviderOutputError({\n kind,\n usage: copiedUsage,\n toolCallId,\n finishReason,\n });\n }\n if (finishReason === \"length\" || finishReason === \"content-filter\") {\n throw new TypeError(\"Anthropic provider output error kind contradicts its finish reason.\");\n }\n return new CompletionProviderOutputError({\n kind,\n usage: copiedUsage,\n toolCallId,\n finishReason,\n });\n}\n\nfunction anthropicUsage(\n uncachedInputTokens: number,\n outputTokens: number,\n cachedInputTokens: number,\n cacheCreationInputTokens: number,\n): Usage {\n const inputTokens = uncachedInputTokens + cachedInputTokens + cacheCreationInputTokens;\n const totalTokens = inputTokens + outputTokens;\n return {\n ...Usage.empty(),\n inputTokens,\n outputTokens,\n totalTokens,\n cachedInputTokens,\n cacheCreationInputTokens,\n details: {\n input: uncachedInputTokens,\n cache_read_input_tokens: cachedInputTokens,\n cache_creation_input_tokens: cacheCreationInputTokens,\n output: outputTokens,\n total: totalTokens,\n },\n };\n}\n\nexport function fromAnthropicStreamEvent(event: unknown): CompletionModelStreamEvent[] {\n if (!isPlainObject(event) || typeof event.type !== \"string\") {\n return [];\n }\n\n if (event.type === \"message_start\" && isPlainObject(event.message)) {\n const id = stringFrom(event.message.id);\n return id === undefined ? [] : [{ type: \"message_id\", id }];\n }\n\n if (event.type === \"content_block_start\" && isPlainObject(event.content_block)) {\n const block = event.content_block;\n if (block.type === \"tool_use\") {\n const state = startAnthropicStreamTool(event.index, block, Usage.empty());\n return [\n toolCallDelta(state.id, {\n name: state.name,\n argumentsDelta: state.initialInput.type === \"empty\" ? undefined : state.initialInput.text,\n }),\n ];\n }\n if (block.type === \"redacted_thinking\" && typeof block.data === \"string\") {\n return [\n {\n type: \"reasoning_delta\",\n delta: block.data,\n id: `thinking_${numberFrom(event.index)}`,\n contentType: \"redacted\",\n },\n ];\n }\n return [];\n }\n\n if (event.type === \"content_block_delta\" && isPlainObject(event.delta)) {\n const delta = event.delta;\n if (delta.type === \"text_delta\" && typeof delta.text === \"string\") {\n return [{ type: \"text_delta\", delta: delta.text }];\n }\n\n if (delta.type === \"thinking_delta\" && typeof delta.thinking === \"string\") {\n return [\n {\n type: \"reasoning_delta\",\n delta: delta.thinking,\n id: `thinking_${numberFrom(event.index)}`,\n contentType: \"text\",\n },\n ];\n }\n\n if (delta.type === \"signature_delta\" && typeof delta.signature === \"string\") {\n return [\n {\n type: \"reasoning_delta\",\n delta: \"\",\n id: `thinking_${numberFrom(event.index)}`,\n contentType: \"text\",\n signature: delta.signature,\n },\n ];\n }\n\n // Tool argument deltas do not repeat the tool id and require stream-level state.\n if (delta.type === \"input_json_delta\") return [];\n }\n\n if (event.type === \"message_stop\" && isPlainObject(event.message)) {\n return [{ type: \"final\", response: fromAnthropicMessage(event.message) }];\n }\n\n if (event.type === \"error\") {\n return [{ type: \"error\", error: event.error ?? event }];\n }\n\n return [];\n}\n\nfunction messageToAnthropicMessages(message: MessageType): AnthropicMessage[] {\n if (message.role === \"system\") {\n return [];\n }\n\n if (message.role === \"user\") {\n if (typeof message.content === \"string\") {\n return [{ role: \"user\", content: message.content }];\n }\n return [\n {\n role: \"user\",\n content: message.content.map(userContentToAnthropicBlock),\n },\n ];\n }\n\n if (message.role === \"tool\") {\n return [\n {\n role: \"user\",\n content: message.content.map((content) => {\n if (content.type !== \"tool-result\") {\n throw new TypeError(\n \"Anvia interaction responses must be resolved by Agent before provider calls.\",\n );\n }\n return toolContentToAnthropicBlock(content);\n }),\n },\n ];\n }\n\n return [\n {\n role: \"assistant\",\n content:\n typeof message.content === \"string\"\n ? message.content\n : message.content.flatMap((content): AnthropicContentBlock[] => {\n if (content.type === \"text\") {\n return [{ type: \"text\", text: content.text }];\n }\n\n if (content.type === \"tool-call\") {\n return [\n {\n type: \"tool_use\",\n id: content.callId ?? content.toolCallId,\n name: content.toolName,\n input: content.input,\n },\n ];\n }\n\n if (content.type === \"reasoning\" && content.details !== undefined) {\n return content.details.flatMap(reasoningContentToAnthropicBlocks);\n }\n\n if (content.type === \"image\" || content.type === \"file\") {\n throw new Error(\n \"Anthropic Messages does not support image or file content in assistant history\",\n );\n }\n\n return [];\n }),\n },\n ];\n}\n\nfunction toolContentToAnthropicBlock(content: ToolResultPart): AnthropicContentBlock {\n const block: AnthropicContentBlock = {\n type: \"tool_result\",\n tool_use_id: content.callId ?? content.toolCallId,\n content: toolResultToAnthropicContent(content),\n };\n if (\n content.output.type === \"error-text\" ||\n content.output.type === \"error-json\" ||\n content.output.type === \"execution-denied\"\n ) {\n block.is_error = true;\n }\n return block;\n}\n\nfunction toolResultContentToAnthropicContent(\n content: readonly ToolResultContentPart[],\n): string | AnthropicContentBlock[] {\n if (content.every((item) => item.type === \"text\")) {\n return content.map((item) => item.text).join(\"\\n\");\n }\n\n return content.map((item) => {\n if (item.type === \"text\") {\n return { type: \"text\", text: item.text };\n }\n return fileToAnthropicBlock(item);\n });\n}\n\nfunction toolResultToAnthropicContent(content: ToolResultPart): string | AnthropicContentBlock[] {\n const output = content.output;\n if (output.type === \"text\" || output.type === \"error-text\") {\n return output.value;\n }\n if (output.type === \"json\" || output.type === \"error-json\") {\n return JSON.stringify(output.value);\n }\n if (output.type === \"execution-denied\") {\n return output.reason ?? \"Tool execution was denied.\";\n }\n return toolResultContentToAnthropicContent(output.value);\n}\n\nfunction reasoningContentToAnthropicBlocks(content: ReasoningDetail): AnthropicContentBlock[] {\n if (content.type === \"text\" || content.type === \"summary\") {\n const block: AnthropicContentBlock = {\n type: \"thinking\",\n thinking: content.text,\n };\n if (content.type === \"text\" && content.signature !== undefined) {\n block.signature = content.signature;\n }\n return [block];\n }\n\n if (content.type === \"redacted\") {\n return [{ type: \"redacted_thinking\", data: content.data }];\n }\n\n return [];\n}\n\nfunction userContentToAnthropicBlock(content: UserContentPart): AnthropicContentBlock {\n if (content.type === \"text\") {\n return { type: \"text\", text: content.text };\n }\n\n if (content.type === \"image\") {\n return imageToAnthropicBlock(content);\n }\n\n if (content.type === \"file\") {\n return fileToAnthropicBlock(content);\n }\n\n throw new Error(\"Tool results must be mapped before user content blocks\");\n}\n\nfunction imageToAnthropicBlock(image: ImagePart): AnthropicContentBlock {\n if (image.image.type === \"url\") {\n return {\n type: \"image\",\n source: {\n type: \"url\",\n url: image.image.url,\n },\n };\n }\n\n return {\n type: \"image\",\n source: {\n type: \"base64\",\n media_type: image.mediaType ?? \"image/png\",\n data: image.image.data,\n },\n };\n}\n\nfunction fileToAnthropicBlock(file: FilePart): AnthropicContentBlock {\n if (file.data.type === \"text\") {\n return { type: \"text\", text: file.data.text };\n }\n\n if (file.mediaType.startsWith(\"image/\")) {\n return imageToAnthropicBlock({\n type: \"image\",\n image: file.data,\n mediaType: file.mediaType,\n });\n }\n\n if (file.mediaType !== \"application/pdf\") {\n throw new Error(\"Anthropic Messages only supports image and PDF file attachments\");\n }\n\n if (file.data.type === \"url\") {\n return {\n type: \"document\",\n source: {\n type: \"url\",\n url: file.data.url,\n },\n };\n }\n\n return {\n type: \"document\",\n source: {\n type: \"base64\",\n media_type: file.mediaType,\n data: file.data.data,\n },\n };\n}\n\nfunction toolDefinitionToAnthropic(tool: ToolDefinition): AnthropicContentBlock {\n return {\n name: tool.name,\n description: tool.description,\n input_schema: tool.parameters,\n };\n}\n\nfunction toolChoiceToAnthropic(toolChoice: ToolChoice): unknown {\n if (toolChoice === \"auto\") {\n return { type: \"auto\" };\n }\n\n if (toolChoice === \"required\") {\n return { type: \"any\" };\n }\n\n if (toolChoice === \"none\") {\n return { type: \"none\" };\n }\n\n return {\n type: \"tool\",\n name: toolChoice.name,\n };\n}\n\nfunction toolCallDelta(\n id: string,\n values: { name?: string | undefined; argumentsDelta?: string | undefined },\n): CompletionModelStreamEvent {\n const event: CompletionModelStreamEvent = { type: \"tool_call_delta\", id };\n if (values.name !== undefined) event.name = values.name;\n if (values.argumentsDelta !== undefined) event.argumentsDelta = values.argumentsDelta;\n return event;\n}\n\nexport const anthropicMessageHelpers = {\n messageToAnthropicMessages,\n toolDefinitionToAnthropic,\n};\n","import {\n type CompletionRequest,\n type Message as MessageType,\n normalizeDocuments,\n} from \"@anvia/core/completion\";\n\nexport type OrderedRequestMessagesOptions = {\n includeInstructionsAsSystem?: boolean;\n};\n\nexport function orderedRequestMessages(\n request: CompletionRequest,\n options: OrderedRequestMessagesOptions = {},\n): MessageType[] {\n const messages: MessageType[] = [];\n if (options.includeInstructionsAsSystem === true && request.instructions !== undefined) {\n messages.push({ role: \"system\", content: request.instructions });\n }\n messages.push(...request.chatHistory.filter((message) => message.role === \"system\"));\n const documents = normalizeDocuments(request.documents);\n if (documents !== undefined) {\n messages.push(documents);\n }\n messages.push(...request.chatHistory.filter((message) => message.role !== \"system\"));\n return messages;\n}\n","import type { JsonObject } from \"@anvia/core/completion\";\n\nexport function isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nexport function numberFrom(value: unknown): number {\n return typeof value === \"number\" && Number.isFinite(value) ? Math.max(0, value) : 0;\n}\n\nexport function stringFrom(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\n\nexport function schemaName(schema: JsonObject): string {\n return typeof schema.title === \"string\" ? schema.title : \"response_schema\";\n}\n","import {\n defineCompletionModelControls,\n type NoCompletionModelControls,\n type ReasoningEffortControls,\n} from \"@anvia/core/completion\";\nimport type { AnthropicCompletionModelId } from \"./models\";\n\nexport const ANTHROPIC_REASONING_EFFORTS = [\"low\", \"medium\", \"high\", \"xhigh\", \"max\"] as const;\n\nexport type AnthropicReasoningEffort = (typeof ANTHROPIC_REASONING_EFFORTS)[number];\nexport type AnthropicReasoningControls = ReasoningEffortControls<AnthropicReasoningEffort>;\n\ntype AdvancedEffortModel =\n | \"claude-fable-5\"\n | \"claude-mythos-5\"\n | \"claude-opus-4-7\"\n | \"claude-opus-4-8\"\n | \"claude-opus-5\"\n | \"claude-sonnet-5\";\n\ntype MaxEffortModel =\n | AdvancedEffortModel\n | \"claude-mythos-preview\"\n | \"claude-opus-4-6\"\n | \"claude-sonnet-4-6\";\n\ntype EffortModel = MaxEffortModel | \"claude-opus-4-5\" | \"claude-opus-4-5-20251101\";\n\nexport type AnthropicControlsFor<ModelId extends AnthropicCompletionModelId> =\n ModelId extends AdvancedEffortModel\n ? AnthropicReasoningControls\n : ModelId extends MaxEffortModel\n ? ReasoningEffortControls<\"low\" | \"medium\" | \"high\" | \"max\">\n : ModelId extends EffortModel\n ? ReasoningEffortControls<\"low\" | \"medium\" | \"high\">\n : NoCompletionModelControls;\n\nconst STANDARD_CONTROLS = reasoningControls([\"low\", \"medium\", \"high\"] as const);\nconst MAX_CONTROLS = reasoningControls([\"low\", \"medium\", \"high\", \"max\"] as const);\nconst ADVANCED_CONTROLS = reasoningControls(ANTHROPIC_REASONING_EFFORTS);\n\nexport function anthropicControlsForModel(modelId: string): AnthropicReasoningControls | undefined {\n if (isAdvancedEffortModel(modelId)) return ADVANCED_CONTROLS;\n if (\n modelId === \"claude-mythos-preview\" ||\n modelId === \"claude-opus-4-6\" ||\n modelId === \"claude-sonnet-4-6\"\n ) {\n return MAX_CONTROLS;\n }\n if (modelId === \"claude-opus-4-5\" || modelId === \"claude-opus-4-5-20251101\") {\n return STANDARD_CONTROLS;\n }\n return undefined;\n}\n\nfunction isAdvancedEffortModel(modelId: string): modelId is AdvancedEffortModel {\n return [\n \"claude-fable-5\",\n \"claude-mythos-5\",\n \"claude-opus-4-7\",\n \"claude-opus-4-8\",\n \"claude-opus-5\",\n \"claude-sonnet-5\",\n ].includes(modelId as AdvancedEffortModel);\n}\n\nfunction reasoningControls<const Efforts extends readonly AnthropicReasoningEffort[]>(\n efforts: Efforts,\n): ReasoningEffortControls<Efforts[number]> {\n return defineCompletionModelControls({\n reasoningEffort: {\n type: \"select\",\n label: \"Reasoning effort\",\n description: \"Controls how much reasoning the model applies before responding.\",\n options: efforts,\n defaultValue: \"high\" as Efforts[number],\n },\n });\n}\n","import type { ModelContextLimits } from \"@anvia/core/completion\";\nimport type { ModelId } from \"@anvia/core/model-listing\";\n\nexport type KnownAnthropicCompletionModelId =\n | \"claude-3-5-sonnet-20240620\"\n | \"claude-3-5-sonnet-20241022\"\n | \"claude-3-7-sonnet-20250219\"\n | \"claude-3-haiku-20240307\"\n | \"claude-3-opus-20240229\"\n | \"claude-3-sonnet-20240229\"\n | \"claude-fable-5\"\n | \"claude-haiku-4-5\"\n | \"claude-haiku-4-5-20251001\"\n | \"claude-opus-4-0\"\n | \"claude-opus-4-1\"\n | \"claude-opus-4-1-20250805\"\n | \"claude-opus-4-20250514\"\n | \"claude-opus-4-5\"\n | \"claude-opus-4-5-20251101\"\n | \"claude-opus-4-6\"\n | \"claude-opus-4-7\"\n | \"claude-opus-4-8\"\n | \"claude-opus-5\"\n | \"claude-mythos-5\"\n | \"claude-mythos-preview\"\n | \"claude-sonnet-4-0\"\n | \"claude-sonnet-4-20250514\"\n | \"claude-sonnet-4-5\"\n | \"claude-sonnet-4-5-20250929\"\n | \"claude-sonnet-4-6\"\n | \"claude-sonnet-5\";\n\nexport type AnthropicCompletionModelId = ModelId<KnownAnthropicCompletionModelId>;\n\nconst CONTEXT_200K_32K = { contextWindow: 200_000, maxOutputTokens: 32_000 };\nconst CONTEXT_200K_64K = { contextWindow: 200_000, maxOutputTokens: 64_000 };\nconst CONTEXT_1M_128K = { contextWindow: 1_000_000, maxOutputTokens: 128_000 };\n\nexport const ANTHROPIC_COMPLETION_MODEL_CONTEXT_LIMITS = {\n \"claude-3-5-sonnet-20240620\": { contextWindow: 200_000, maxOutputTokens: 8_192 },\n \"claude-3-5-sonnet-20241022\": { contextWindow: 200_000, maxOutputTokens: 8_192 },\n \"claude-3-7-sonnet-20250219\": CONTEXT_200K_64K,\n \"claude-3-haiku-20240307\": { contextWindow: 200_000, maxOutputTokens: 4_096 },\n \"claude-3-opus-20240229\": { contextWindow: 200_000, maxOutputTokens: 4_096 },\n \"claude-3-sonnet-20240229\": { contextWindow: 200_000, maxOutputTokens: 4_096 },\n \"claude-fable-5\": CONTEXT_1M_128K,\n \"claude-haiku-4-5\": CONTEXT_200K_64K,\n \"claude-haiku-4-5-20251001\": CONTEXT_200K_64K,\n \"claude-opus-4-0\": CONTEXT_200K_32K,\n \"claude-opus-4-1\": CONTEXT_200K_32K,\n \"claude-opus-4-1-20250805\": CONTEXT_200K_32K,\n \"claude-opus-4-20250514\": CONTEXT_200K_32K,\n \"claude-opus-4-5\": CONTEXT_200K_64K,\n \"claude-opus-4-5-20251101\": CONTEXT_200K_64K,\n \"claude-opus-4-6\": CONTEXT_1M_128K,\n \"claude-opus-4-7\": CONTEXT_1M_128K,\n \"claude-opus-4-8\": CONTEXT_1M_128K,\n \"claude-opus-5\": CONTEXT_1M_128K,\n \"claude-mythos-5\": CONTEXT_1M_128K,\n \"claude-mythos-preview\": CONTEXT_1M_128K,\n \"claude-sonnet-4-0\": CONTEXT_200K_64K,\n \"claude-sonnet-4-20250514\": CONTEXT_200K_64K,\n \"claude-sonnet-4-5\": CONTEXT_200K_64K,\n \"claude-sonnet-4-5-20250929\": CONTEXT_200K_64K,\n \"claude-sonnet-4-6\": { contextWindow: 1_000_000, maxOutputTokens: 64_000 },\n \"claude-sonnet-5\": CONTEXT_1M_128K,\n} satisfies Readonly<Record<KnownAnthropicCompletionModelId, ModelContextLimits>>;\n","import {\n AnthropicVertex,\n type ClientOptions as AnthropicVertexSdkOptions,\n} from \"@anthropic-ai/vertex-sdk\";\nimport {\n type CompletionModelControls,\n defineCompletionModelControls,\n type ModelContextLimits,\n resolveModelContextLimits,\n type StreamingCompletionModel,\n} from \"@anvia/core/completion\";\nimport { AnthropicCompletionModel } from \"./completion\";\nimport { anthropicControlsForModel, type AnthropicControlsFor } from \"./controls\";\nimport {\n ANTHROPIC_COMPLETION_MODEL_CONTEXT_LIMITS,\n type AnthropicCompletionModelId,\n} from \"./models\";\n\ntype AnthropicVertexManagedClientOptions = Omit<AnthropicVertexSdkOptions, \"maxRetries\"> & {\n client?: never;\n};\n\ntype AnthropicVertexInjectedClientOptions = {\n client: AnthropicVertex;\n} & {\n [Key in Exclude<keyof AnthropicVertexManagedClientOptions, \"client\">]?: never;\n};\n\nexport type AnthropicVertexClientOptions =\n | AnthropicVertexManagedClientOptions\n | AnthropicVertexInjectedClientOptions;\n\nexport type AnthropicVertexCompletionModelOptions<\n ModelId extends AnthropicCompletionModelId = AnthropicCompletionModelId,\n Controls extends CompletionModelControls = AnthropicControlsFor<ModelId>,\n> = {\n modelId: ModelId;\n contextLimits?: ModelContextLimits | undefined;\n controls?: Controls | undefined;\n};\n\nexport type AnthropicVertexCompletionModelHandle<\n Controls extends CompletionModelControls = CompletionModelControls,\n> = StreamingCompletionModel<unknown, Controls>;\n\nexport class AnthropicVertexClient {\n private readonly sdk: AnthropicVertex;\n\n constructor(options: AnthropicVertexClientOptions) {\n const { client, ...clientOptions } = options;\n if (client !== undefined) {\n const conflict = Object.keys(clientOptions)[0];\n if (conflict !== undefined) {\n throw new TypeError(`AnthropicVertexClient cannot combine client with ${conflict}.`);\n }\n this.sdk = client;\n return;\n }\n this.sdk = new AnthropicVertex({ ...clientOptions, maxRetries: 0 });\n }\n\n completionModel<\n const ModelId extends AnthropicCompletionModelId,\n const Controls extends CompletionModelControls = AnthropicControlsFor<ModelId>,\n >(\n options: AnthropicVertexCompletionModelOptions<ModelId, Controls>,\n ): AnthropicVertexCompletionModelHandle<Controls> {\n const modelId = requireModelId(options.modelId);\n const controls = (\n options.controls === undefined\n ? anthropicControlsForModel(modelId)\n : defineCompletionModelControls(options.controls)\n ) as Controls | undefined;\n return new AnthropicCompletionModel(\n this.sdk,\n modelId,\n resolveModelContextLimits(\n modelId,\n ANTHROPIC_COMPLETION_MODEL_CONTEXT_LIMITS,\n options.contextLimits,\n ),\n controls,\n );\n }\n}\n\nfunction requireModelId<ModelId extends string>(modelId: ModelId): ModelId {\n if (modelId.trim().length === 0) {\n throw new TypeError(\"modelId must be a non-empty string\");\n }\n return modelId;\n}\n"],"mappings":"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","names":["defineCompletionModelControls","defineCompletionModelControls","defineCompletionModelControls","resolveModelContextLimits","requireModelId","defineCompletionModelControls","resolveModelContextLimits"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@anvia/anthropic",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.9",
|
|
4
4
|
"description": "Anthropic provider adapter for Anvia.",
|
|
5
5
|
"author": "anvia",
|
|
6
6
|
"maintainer": "Indra Zulfi",
|
|
@@ -34,10 +34,10 @@
|
|
|
34
34
|
"tsup": "^8.5.0",
|
|
35
35
|
"typescript": "^5.9.3",
|
|
36
36
|
"vitest": "^4.0.8",
|
|
37
|
-
"@anvia/core": "1.0.
|
|
37
|
+
"@anvia/core": "1.0.9"
|
|
38
38
|
},
|
|
39
39
|
"peerDependencies": {
|
|
40
|
-
"@anvia/core": "1.0.
|
|
40
|
+
"@anvia/core": "1.0.9"
|
|
41
41
|
},
|
|
42
42
|
"scripts": {
|
|
43
43
|
"prebuild": "test -f ../core/dist/index.d.ts || pnpm --filter @anvia/core build",
|