@simulacra-ai/anthropic 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,68 @@
1
+ # Simulacra Anthropic Provider
2
+
3
+ Anthropic Claude provider for the Simulacra conversation engine.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @simulacra-ai/core @simulacra-ai/anthropic @anthropic-ai/sdk
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ```typescript
14
+ import { Conversation } from "@simulacra-ai/core";
15
+ import { AnthropicProvider } from "@simulacra-ai/anthropic";
16
+ import Anthropic from "@anthropic-ai/sdk";
17
+
18
+ const provider = new AnthropicProvider(new Anthropic(), { model: MODEL_NAME });
19
+ const conversation = new Conversation(provider);
20
+ ```
21
+
22
+ ### AnthropicProviderConfig
23
+
24
+ ```typescript
25
+ interface AnthropicProviderConfig {
26
+ model: string;
27
+ max_tokens?: number;
28
+ thinking?: { enable: boolean; budget_tokens?: number };
29
+ prompt_caching?: { system_prompt?: boolean; toolkit?: boolean };
30
+ }
31
+ ```
32
+
33
+ Additional properties (`temperature`, `top_p`, etc.) spread into the API request.
34
+
35
+ ## Extended Thinking
36
+
37
+ Enable extended thinking to capture the model's chain-of-thought as `ThinkingMessageContent` blocks.
38
+
39
+ ```typescript
40
+ const provider = new AnthropicProvider(new Anthropic(), {
41
+ model,
42
+ max_tokens: 16384,
43
+ thinking: { enable: true, budget_tokens: 10000 },
44
+ });
45
+ ```
46
+
47
+ Both `thinking` and `redacted_thinking` blocks from the API are converted to Simulacra's `ThinkingMessageContent` type. If `max_tokens` is not set, it defaults to 8192.
48
+
49
+ ## Prompt Caching
50
+
51
+ Prompt caching is enabled by default. The provider adds `cache_control` markers to the system prompt and tool definitions, avoiding re-processing static content on every turn.
52
+
53
+ ```typescript
54
+ const provider = new AnthropicProvider(new Anthropic(), {
55
+ model,
56
+ max_tokens: 4096,
57
+ prompt_caching: {
58
+ system_prompt: true, // default
59
+ toolkit: true, // default
60
+ },
61
+ });
62
+ ```
63
+
64
+ Cache writes cost slightly more per token than standard requests. Multi-turn conversations benefit because subsequent turns read from the cache at a reduced rate. Disable by setting both flags to `false`.
65
+
66
+ ## License
67
+
68
+ MIT
@@ -0,0 +1,60 @@
1
+ import Anthropic from "@anthropic-ai/sdk";
2
+ import type { CancellationToken, ModelProvider, ModelRequest, ProviderContextTransformer, StreamReceiver } from "@simulacra-ai/core";
3
+ /**
4
+ * Configuration options for the Anthropic provider.
5
+ */
6
+ export interface AnthropicProviderConfig extends Record<string, unknown> {
7
+ /** The model identifier to use. */
8
+ model: string;
9
+ /** The maximum number of tokens to generate in the response. */
10
+ max_tokens?: number;
11
+ /** Configuration for extended thinking mode. */
12
+ thinking?: {
13
+ /** Whether to enable extended thinking. */
14
+ enable: boolean;
15
+ /** The token budget allocated for thinking. */
16
+ budget_tokens?: number;
17
+ };
18
+ /** Configuration for prompt caching. Enabled by default when omitted. Cache writes cost more per token than standard requests, but cache reads on subsequent turns cost less. */
19
+ prompt_caching?: {
20
+ /** Whether to cache the system prompt. */
21
+ system_prompt?: boolean;
22
+ /** Whether to cache the tool definitions. */
23
+ toolkit?: boolean;
24
+ };
25
+ }
26
+ /**
27
+ * Model provider implementation for Anthropic's Claude models.
28
+ *
29
+ * This provider wraps the Anthropic SDK to provide streaming completions with support
30
+ * for tool use, extended thinking, and prompt caching. It handles message formatting,
31
+ * content streaming, and usage tracking according to the ModelProvider interface.
32
+ */
33
+ export declare class AnthropicProvider implements ModelProvider {
34
+ #private;
35
+ readonly context_transformers: ProviderContextTransformer[];
36
+ /**
37
+ * Creates a new Anthropic provider instance.
38
+ *
39
+ * @param sdk - The initialized Anthropic SDK client.
40
+ * @param config - Configuration options for the provider.
41
+ * @param context_transformers - Provider-level context transformers.
42
+ */
43
+ constructor(sdk: Anthropic, config: AnthropicProviderConfig, context_transformers?: ProviderContextTransformer[]);
44
+ /**
45
+ * Executes a model request and streams the response through the provided receiver.
46
+ *
47
+ * @param request - The request containing messages, tools, and system prompt.
48
+ * @param receiver - The receiver that handles streaming events.
49
+ * @param cancellation - Token to signal cancellation of the request.
50
+ * @returns A promise that resolves when the request completes.
51
+ */
52
+ execute_request(request: ModelRequest, receiver: StreamReceiver, cancellation: CancellationToken): Promise<void>;
53
+ /**
54
+ * Creates a clone of this provider with the same configuration.
55
+ *
56
+ * @returns A new provider instance with identical configuration.
57
+ */
58
+ clone(): ModelProvider;
59
+ }
60
+ //# sourceMappingURL=anthropic-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic-provider.d.ts","sourceRoot":"","sources":["../src/anthropic-provider.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAE1C,OAAO,KAAK,EAGV,iBAAiB,EAGjB,aAAa,EACb,YAAY,EAEZ,0BAA0B,EAC1B,cAAc,EAEf,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACtE,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,QAAQ,CAAC,EAAE;QACT,2CAA2C;QAC3C,MAAM,EAAE,OAAO,CAAC;QAChB,+CAA+C;QAC/C,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,iLAAiL;IACjL,cAAc,CAAC,EAAE;QACf,0CAA0C;QAC1C,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,6CAA6C;QAC7C,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;CACH;AAED;;;;;;GAMG;AACH,qBAAa,iBAAkB,YAAW,aAAa;;IAGrD,QAAQ,CAAC,oBAAoB,EAAE,0BAA0B,EAAE,CAAC;IAE5D;;;;;;OAMG;gBAED,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,uBAAuB,EAC/B,oBAAoB,GAAE,0BAA0B,EAAO;IAOzD;;;;;;;OAOG;IACG,eAAe,CACnB,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,cAAc,EACxB,YAAY,EAAE,iBAAiB,GAC9B,OAAO,CAAC,IAAI,CAAC;IA8ChB;;;;OAIG;IACH,KAAK,IAAI,aAAa;CAqIvB"}
@@ -0,0 +1,415 @@
1
+ /**
2
+ * Model provider implementation for Anthropic's Claude models.
3
+ *
4
+ * This provider wraps the Anthropic SDK to provide streaming completions with support
5
+ * for tool use, extended thinking, and prompt caching. It handles message formatting,
6
+ * content streaming, and usage tracking according to the ModelProvider interface.
7
+ */
8
+ export class AnthropicProvider {
9
+ #sdk;
10
+ #config;
11
+ context_transformers;
12
+ /**
13
+ * Creates a new Anthropic provider instance.
14
+ *
15
+ * @param sdk - The initialized Anthropic SDK client.
16
+ * @param config - Configuration options for the provider.
17
+ * @param context_transformers - Provider-level context transformers.
18
+ */
19
+ constructor(sdk, config, context_transformers = []) {
20
+ this.#sdk = sdk;
21
+ this.#config = config;
22
+ this.context_transformers = context_transformers;
23
+ }
24
+ /**
25
+ * Executes a model request and streams the response through the provided receiver.
26
+ *
27
+ * @param request - The request containing messages, tools, and system prompt.
28
+ * @param receiver - The receiver that handles streaming events.
29
+ * @param cancellation - Token to signal cancellation of the request.
30
+ * @returns A promise that resolves when the request completes.
31
+ */
32
+ async execute_request(request, receiver, cancellation) {
33
+ const { model, max_tokens, thinking, prompt_caching, ...api_extras } = this.#config;
34
+ const cache_system = prompt_caching?.system_prompt !== false;
35
+ const cache_tools = prompt_caching?.toolkit !== false;
36
+ const tools = request.tools.map((t) => to_anthropic_tool(t));
37
+ if (cache_tools && tools.length > 0) {
38
+ const last = tools.length - 1;
39
+ tools[last].cache_control = { type: "ephemeral" };
40
+ }
41
+ const system = cache_system && request.system
42
+ ? [{ type: "text", text: request.system, cache_control: { type: "ephemeral" } }]
43
+ : request.system;
44
+ const params = {
45
+ ...api_extras,
46
+ model,
47
+ stream: true,
48
+ system,
49
+ max_tokens: max_tokens ?? 8_192,
50
+ thinking: thinking?.enable && thinking?.budget_tokens
51
+ ? {
52
+ type: "enabled",
53
+ budget_tokens: thinking.budget_tokens,
54
+ }
55
+ : {
56
+ type: "disabled",
57
+ },
58
+ tools,
59
+ messages: request.messages.map((m) => to_anthropic_message(m)),
60
+ };
61
+ receiver.before_request({ params });
62
+ receiver.request_raw(params);
63
+ const response = await this.#sdk.messages.create(params);
64
+ // Intentionally not awaited. Streaming is event-driven through the receiver.
65
+ // The policy wraps only connection establishment; chunk processing flows
66
+ // asynchronously via StreamListener events back to the conversation.
67
+ this.#stream_response(response, receiver, cancellation);
68
+ }
69
+ /**
70
+ * Creates a clone of this provider with the same configuration.
71
+ *
72
+ * @returns A new provider instance with identical configuration.
73
+ */
74
+ clone() {
75
+ return new AnthropicProvider(this.#sdk, this.#config, this.context_transformers);
76
+ }
77
+ async #stream_response(stream, receiver, cancellation) {
78
+ try {
79
+ let usage = {};
80
+ let message = {
81
+ content: [],
82
+ };
83
+ const json = [];
84
+ for await (const chunk of stream) {
85
+ if (cancellation.is_cancellation_requested) {
86
+ receiver.cancel();
87
+ return;
88
+ }
89
+ receiver.stream_raw(chunk);
90
+ switch (chunk.type) {
91
+ case "message_start": {
92
+ usage = Object.fromEntries(Object.entries(chunk.message.usage).filter(([, v]) => typeof v === "number"));
93
+ message = chunk.message;
94
+ receiver.start_message({
95
+ usage,
96
+ message: from_anthropic_message(message),
97
+ });
98
+ break;
99
+ }
100
+ case "message_delta": {
101
+ usage = {
102
+ ...usage,
103
+ ...Object.fromEntries(Object.entries(chunk.usage).filter(([, v]) => typeof v === "number")),
104
+ };
105
+ message = { ...message, ...chunk.delta };
106
+ receiver.update_message({
107
+ usage,
108
+ message: from_anthropic_message(message),
109
+ });
110
+ break;
111
+ }
112
+ case "message_stop": {
113
+ const raw_stop = message.stop_reason ?? "end_turn";
114
+ const stop_reason = (["tool_use", "stop_sequence", "end_turn", "max_tokens", "error"].includes(raw_stop)
115
+ ? raw_stop
116
+ : "other");
117
+ receiver.complete_message({
118
+ usage,
119
+ stop_reason,
120
+ message: from_anthropic_message(message),
121
+ });
122
+ break;
123
+ }
124
+ case "content_block_start": {
125
+ message.content[chunk.index] = chunk.content_block;
126
+ receiver.start_content({
127
+ usage,
128
+ message: from_anthropic_message(message),
129
+ content: from_anthropic_content(chunk.content_block),
130
+ });
131
+ receiver.update_message({
132
+ usage,
133
+ message: from_anthropic_message(message),
134
+ });
135
+ break;
136
+ }
137
+ case "content_block_delta": {
138
+ switch (chunk.delta.type) {
139
+ case "text_delta": {
140
+ const content = message.content[chunk.index];
141
+ content.text += chunk.delta.text;
142
+ break;
143
+ }
144
+ case "citations_delta": {
145
+ const content = message.content[chunk.index];
146
+ content.citations = [...(content.citations ?? []), chunk.delta.citation];
147
+ break;
148
+ }
149
+ case "thinking_delta": {
150
+ const content = message.content[chunk.index];
151
+ content.thinking += chunk.delta.thinking;
152
+ break;
153
+ }
154
+ case "input_json_delta": {
155
+ if (!json[chunk.index]) {
156
+ json[chunk.index] = "";
157
+ }
158
+ json[chunk.index] += chunk.delta.partial_json;
159
+ break;
160
+ }
161
+ case "signature_delta": {
162
+ const content = message.content[chunk.index];
163
+ content.signature = (content.signature ?? "") + chunk.delta.signature;
164
+ break;
165
+ }
166
+ }
167
+ receiver.update_content({
168
+ usage,
169
+ message: from_anthropic_message(message),
170
+ content: from_anthropic_content(message.content[chunk.index]),
171
+ });
172
+ break;
173
+ }
174
+ case "content_block_stop": {
175
+ const content_block = message.content[chunk.index];
176
+ if (content_block.type === "tool_use" && json[chunk.index]) {
177
+ content_block.input = {
178
+ ...(content_block.input ?? {}),
179
+ ...JSON.parse(json[chunk.index]),
180
+ };
181
+ }
182
+ receiver.complete_content({
183
+ usage,
184
+ message: from_anthropic_message(message),
185
+ content: from_anthropic_content(content_block),
186
+ });
187
+ break;
188
+ }
189
+ }
190
+ }
191
+ receiver.response_raw(message);
192
+ }
193
+ catch (error) {
194
+ receiver.error(error);
195
+ }
196
+ }
197
+ }
198
+ function parameter_to_json_schema(param) {
199
+ switch (param.type) {
200
+ case "object": {
201
+ const properties = {};
202
+ const required = [];
203
+ for (const [key, child] of Object.entries(param.properties)) {
204
+ properties[key] = parameter_to_json_schema(child);
205
+ if (child.required) {
206
+ required.push(key);
207
+ }
208
+ }
209
+ return {
210
+ type: "object",
211
+ ...(param.description ? { description: param.description } : {}),
212
+ ...(Object.keys(properties).length ? { properties } : {}),
213
+ ...(required.length ? { required } : {}),
214
+ };
215
+ }
216
+ case "array":
217
+ return {
218
+ type: "array",
219
+ ...(param.description ? { description: param.description } : {}),
220
+ items: parameter_to_json_schema(param.items),
221
+ };
222
+ case "number":
223
+ return {
224
+ type: "number",
225
+ ...(param.description ? { description: param.description } : {}),
226
+ };
227
+ case "boolean":
228
+ return {
229
+ type: "boolean",
230
+ ...(param.description ? { description: param.description } : {}),
231
+ };
232
+ case "string":
233
+ return "enum" in param && param.enum
234
+ ? {
235
+ type: "string",
236
+ enum: param.enum,
237
+ ...(param.description ? { description: param.description } : {}),
238
+ }
239
+ : { type: "string", ...(param.description ? { description: param.description } : {}) };
240
+ }
241
+ }
242
+ function to_anthropic_tool(tool) {
243
+ const properties = {};
244
+ const required = [];
245
+ for (const param of tool.parameters) {
246
+ const schema = parameter_to_json_schema(param);
247
+ if (param.description) {
248
+ schema.description = param.description;
249
+ }
250
+ properties[param.name] = schema;
251
+ if (param.required) {
252
+ required.push(param.name);
253
+ }
254
+ }
255
+ return {
256
+ name: tool.name,
257
+ description: tool.description,
258
+ input_schema: {
259
+ type: "object",
260
+ ...(Object.keys(properties).length ? { properties } : {}),
261
+ ...(required.length ? { required } : {}),
262
+ },
263
+ };
264
+ }
265
+ function from_anthropic_message(message) {
266
+ if (typeof message.content === "string") {
267
+ return {
268
+ role: message.role,
269
+ content: [
270
+ {
271
+ type: "text",
272
+ text: message.content,
273
+ },
274
+ ],
275
+ };
276
+ }
277
+ return {
278
+ role: message.role,
279
+ content: (message.content ?? []).map((c) => from_anthropic_content(c, Array.isArray(message.content) ? message.content : undefined)),
280
+ };
281
+ }
282
+ function from_anthropic_content(content, allContent) {
283
+ switch (content.type) {
284
+ case "text": {
285
+ const { type: _, text, ...extended } = content;
286
+ return {
287
+ type: "text",
288
+ text,
289
+ extended,
290
+ };
291
+ }
292
+ case "tool_use": {
293
+ const { type: _, id, name, input, ...extended } = content;
294
+ return {
295
+ type: "tool",
296
+ tool_request_id: id,
297
+ tool: name,
298
+ params: input,
299
+ extended,
300
+ };
301
+ }
302
+ case "tool_result": {
303
+ const { type: _, tool_use_id, content: tool_content, ...extended } = content;
304
+ let tool_name = "";
305
+ if (allContent) {
306
+ const matching = allContent.find((c) => c.type === "tool_use" && "id" in c && c.id === tool_use_id);
307
+ if (matching) {
308
+ tool_name = matching.name ?? "";
309
+ }
310
+ }
311
+ return {
312
+ type: "tool_result",
313
+ tool_request_id: tool_use_id,
314
+ tool: tool_name,
315
+ result: typeof tool_content === "string"
316
+ ? (() => {
317
+ try {
318
+ return JSON.parse(tool_content);
319
+ }
320
+ catch {
321
+ return { text: tool_content };
322
+ }
323
+ })()
324
+ : tool_content,
325
+ extended,
326
+ };
327
+ }
328
+ case "thinking": {
329
+ const { type: _, thinking, ...extended } = content;
330
+ return {
331
+ type: "thinking",
332
+ thought: thinking,
333
+ extended,
334
+ };
335
+ }
336
+ case "redacted_thinking": {
337
+ const { type: _, ...extended } = content;
338
+ return {
339
+ type: "thinking",
340
+ thought: extended.data,
341
+ extended,
342
+ };
343
+ }
344
+ default:
345
+ return {
346
+ type: "raw",
347
+ model_kind: "anthropic",
348
+ data: JSON.stringify(content),
349
+ };
350
+ }
351
+ }
352
+ function to_anthropic_message(message) {
353
+ return {
354
+ role: message.role,
355
+ content: message.content.length === 1 && message.content[0].type === "text"
356
+ ? message.content[0].text
357
+ : message.content.map((c) => to_anthropic_content(c)),
358
+ };
359
+ }
360
+ function to_anthropic_content(content) {
361
+ switch (content.type) {
362
+ case "text":
363
+ return {
364
+ type: "text",
365
+ text: content.text,
366
+ citations: Array.isArray(content.extended?.citations) ? content.extended.citations : [],
367
+ };
368
+ case "tool":
369
+ return {
370
+ type: "tool_use",
371
+ id: content.tool_request_id,
372
+ name: content.tool,
373
+ input: content.params,
374
+ };
375
+ case "raw":
376
+ if (content.model_kind !== "anthropic") {
377
+ return {
378
+ type: "text",
379
+ text: content.data,
380
+ };
381
+ }
382
+ try {
383
+ return {
384
+ ...JSON.parse(content.data),
385
+ };
386
+ }
387
+ catch {
388
+ return {
389
+ data: content.data,
390
+ };
391
+ }
392
+ case "tool_result":
393
+ return {
394
+ type: "tool_result",
395
+ tool_use_id: content.tool_request_id,
396
+ is_error: content.result.result === false ? true : undefined,
397
+ content: JSON.stringify(content.result),
398
+ };
399
+ case "thinking":
400
+ if (!content.extended?.signature) {
401
+ return {
402
+ type: "text",
403
+ text: content.thought,
404
+ };
405
+ }
406
+ return {
407
+ type: "thinking",
408
+ thinking: content.thought,
409
+ signature: content.extended?.signature,
410
+ };
411
+ default:
412
+ throw new Error("unexpected content type");
413
+ }
414
+ }
415
+ //# sourceMappingURL=anthropic-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic-provider.js","sourceRoot":"","sources":["../src/anthropic-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { AnthropicProvider, type AnthropicProviderConfig } from "./anthropic-provider.ts";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,uBAAuB,EAAE,MAAM,yBAAyB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export { AnthropicProvider } from "./anthropic-provider.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAgC,MAAM,yBAAyB,CAAC"}
package/package.json ADDED
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "@simulacra-ai/anthropic",
3
+ "version": "0.0.1",
4
+ "description": "Anthropic Claude provider for the Simulacra conversation engine",
5
+ "type": "module",
6
+ "exports": {
7
+ ".": {
8
+ "types": "./dist/index.d.ts",
9
+ "default": "./dist/index.js"
10
+ }
11
+ },
12
+ "files": [
13
+ "dist"
14
+ ],
15
+ "scripts": {
16
+ "build": "tsc -p tsconfig.json",
17
+ "clean": "rm -rf dist *.tsbuildinfo"
18
+ },
19
+ "peerDependencies": {
20
+ "@simulacra-ai/core": "0.0.1",
21
+ "@anthropic-ai/sdk": ">=0.30.0 <1.0.0"
22
+ },
23
+ "license": "MIT"
24
+ }