@fastpaca/cria 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/README.md +273 -83
  2. package/dist/dsl/builder.d.ts +69 -41
  3. package/dist/dsl/builder.d.ts.map +1 -1
  4. package/dist/dsl/builder.js +122 -43
  5. package/dist/dsl/builder.js.map +1 -1
  6. package/dist/dsl/index.d.ts +4 -5
  7. package/dist/dsl/index.d.ts.map +1 -1
  8. package/dist/dsl/index.js.map +1 -1
  9. package/dist/dsl/strategies.d.ts +2 -1
  10. package/dist/dsl/strategies.d.ts.map +1 -1
  11. package/dist/dsl/strategies.js +5 -4
  12. package/dist/dsl/strategies.js.map +1 -1
  13. package/dist/dsl/vector-search.d.ts +8 -41
  14. package/dist/dsl/vector-search.d.ts.map +1 -1
  15. package/dist/dsl/vector-search.js +10 -62
  16. package/dist/dsl/vector-search.js.map +1 -1
  17. package/dist/eval/index.d.ts +3 -3
  18. package/dist/eval/index.d.ts.map +1 -1
  19. package/dist/index.d.ts +2 -2
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js.map +1 -1
  22. package/dist/instrumentation/otel.d.ts.map +1 -1
  23. package/dist/instrumentation/otel.js +124 -11
  24. package/dist/instrumentation/otel.js.map +1 -1
  25. package/dist/provider.d.ts +16 -3
  26. package/dist/provider.d.ts.map +1 -1
  27. package/dist/provider.js +4 -4
  28. package/dist/provider.js.map +1 -1
  29. package/dist/providers/anthropic.d.ts +6 -4
  30. package/dist/providers/anthropic.d.ts.map +1 -1
  31. package/dist/providers/anthropic.js +152 -26
  32. package/dist/providers/anthropic.js.map +1 -1
  33. package/dist/providers/openai.d.ts +36 -21
  34. package/dist/providers/openai.d.ts.map +1 -1
  35. package/dist/providers/openai.js +56 -27
  36. package/dist/providers/openai.js.map +1 -1
  37. package/dist/render.d.ts.map +1 -1
  38. package/dist/render.js +53 -8
  39. package/dist/render.js.map +1 -1
  40. package/dist/types.d.ts +38 -0
  41. package/dist/types.d.ts.map +1 -1
  42. package/dist/types.js.map +1 -1
  43. package/package.json +2 -1
  44. package/dist/testing/plaintext.d.ts +0 -29
  45. package/dist/testing/plaintext.d.ts.map +0 -1
  46. package/dist/testing/plaintext.js +0 -106
  47. package/dist/testing/plaintext.js.map +0 -1
package/dist/provider.js CHANGED
@@ -9,7 +9,7 @@ export class MessageCodec {
9
9
  */
10
10
  export class ListMessageCodec extends MessageCodec {
11
11
  render(layout) {
12
- return layout.flatMap((message) => this.toProviderMessage(message));
12
+ return layout.flatMap((message, index) => this.toProviderMessage({ message, index }));
13
13
  }
14
14
  parse(rendered) {
15
15
  return rendered.flatMap((message) => this.fromProviderMessage(message));
@@ -37,9 +37,9 @@ export class CompositeCodec extends MessageCodec {
37
37
  this.protocol = protocol;
38
38
  this.adapter = adapter;
39
39
  }
40
- /** Render PromptLayout into provider input via protocol + adapter. */
41
- render(layout) {
42
- return this.adapter.to(this.protocol.render(layout));
40
+ render(layout, context) {
41
+ const protocolInput = this.protocol.render(layout);
42
+ return this.adapter.to(protocolInput, context);
43
43
  }
44
44
  /** Parse provider input into PromptLayout via adapter + protocol. */
45
45
  parse(input) {
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAQA;;GAEG;AACH,MAAM,OAAgB,YAAY;CAGjC;AAED;;;GAGG;AACH,MAAM,OAAgB,gBAGpB,SAAQ,YAAkD;IAQjD,MAAM,CAAC,MAA6B;QAC3C,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;IACtE,CAAC;IAEQ,KAAK,CAAC,QAAqC;QAClD,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1E,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,OAAgB,aAAa;CAwBlC;AAkCD;;GAEG;AACH,MAAM,OAAO,cAIX,SAAQ,YAAqC;IAC5B,QAAQ,CAAwC;IAChD,OAAO,CAAkD;IAE1E,YACE,QAA+C,EAC/C,OAAwD;QAExD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,sEAAsE;IACtE,MAAM,CAAC,MAA6B;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,qEAAqE;IACrE,KAAK,CAAC,KAAqB;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAgB,gBAIpB,SAAQ,aAAsC;IACrC,KAAK,CAAwC;IAEtD,uEAAuE;IACvE,YACE,QAA+C,EAC/C,OAAwD;QAExD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,IAAI,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;CACF"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAoBA;;GAEG;AACH,MAAM,OAAgB,YAAY;CAGjC;AAED;;;GAGG;AACH,MAAM,OAAgB,gBAGpB,SAAQ,YAAkD;IASjD,MAAM,CAAC,MAA6B;QAC3C,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CACvC,IAAI,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAC3C,CAAC;IACJ,CAAC;IAEQ,KAAK,CAAC,QAAqC;QAClD,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1E,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,OAAgB,aAAa;CAwBlC;AAkCD;;GAEG;AACH,MAAM,OAAO,cAIX,SAAQ,YAAqC;IAC5B,QAAQ,CAAwC;IAChD,OAAO,CAAkD;IAE1E,YACE,QAA+C,EAC/C,OAAwD;QAExD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAID,MAAM,CACJ,MAA6B,EAC7B,OAA+B;QAE/B,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAED,qEAAqE;IACrE,KAAK,CAAC,KAAqB;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAgB,gBAIpB,SAAQ,aAAsC;IACrC,KAAK,CAAwC;IAEtD,uEAAuE;IACvE,YACE,QAA+C,EAC/C,OAAwD;QAExD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,IAAI,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;CACF"}
@@ -1,13 +1,14 @@
1
1
  import type Anthropic from "@anthropic-ai/sdk";
2
- import type { MessageParam, Model, ToolResultBlockParam, ToolUseBlockParam } from "@anthropic-ai/sdk/resources/messages";
2
+ import type { MessageParam, Model, TextBlockParam, ToolResultBlockParam, ToolUseBlockParam } from "@anthropic-ai/sdk/resources/messages";
3
3
  import type { z } from "zod";
4
4
  import type { ChatCompletionsInput } from "../protocols/chat-completions";
5
- import { ProtocolProvider, type ProviderAdapter } from "../provider";
5
+ import { ProtocolProvider, type ProviderAdapter, type ProviderRenderContext } from "../provider";
6
+ type AnthropicSystem = string | TextBlockParam[];
6
7
  /**
7
8
  * Rendered Anthropic input (system + messages array).
8
9
  */
9
10
  export interface AnthropicRenderResult {
10
- system?: string;
11
+ system?: AnthropicSystem;
11
12
  messages: MessageParam[];
12
13
  }
13
14
  /**
@@ -22,7 +23,7 @@ export interface AnthropicToolIO {
22
23
  */
23
24
  export declare class AnthropicAdapter implements ProviderAdapter<ChatCompletionsInput<AnthropicToolIO>, AnthropicRenderResult> {
24
25
  /** Convert protocol messages into Anthropic input. */
25
- to(input: ChatCompletionsInput<AnthropicToolIO>): AnthropicRenderResult;
26
+ to(input: ChatCompletionsInput<AnthropicToolIO>, context?: ProviderRenderContext): AnthropicRenderResult;
26
27
  /** Convert Anthropic input back into protocol messages. */
27
28
  from(input: AnthropicRenderResult): ChatCompletionsInput<AnthropicToolIO>;
28
29
  }
@@ -45,4 +46,5 @@ export declare class AnthropicProvider extends ProtocolProvider<AnthropicRenderR
45
46
  export declare function createProvider(client: Anthropic, model: Model, options?: {
46
47
  maxTokens?: number;
47
48
  }): AnthropicProvider;
49
+ export {};
48
50
  //# sourceMappingURL=anthropic.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAEV,YAAY,EACZ,KAAK,EACL,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,sCAAsC,CAAC;AAE9C,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EACV,oBAAoB,EAErB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,gBAAgB,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAMrE;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACtC,YAAY,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;CAC/C;AAOD;;GAEG;AACH,qBAAa,gBACX,YACE,eAAe,CACb,oBAAoB,CAAC,eAAe,CAAC,EACrC,qBAAqB,CACtB;IAEH,sDAAsD;IACtD,EAAE,CAAC,KAAK,EAAE,oBAAoB,CAAC,eAAe,CAAC,GAAG,qBAAqB;IA0CvE,2DAA2D;IAC3D,IAAI,CAAC,KAAK,EAAE,qBAAqB,GAAG,oBAAoB,CAAC,eAAe,CAAC;CAmB1E;AAgND;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,gBAAgB,CACrD,qBAAqB,EACrB,oBAAoB,CAAC,eAAe,CAAC,EACrC,eAAe,CAChB;IACC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM;IAU9D,iDAAiD;IACjD,WAAW,CAAC,CAAC,EAAE,qBAAqB,GAAG,MAAM;IAO7C,+DAA+D;IACzD,UAAU,CAAC,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC;IAU3D,iEAAiE;IAC3D,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,qBAAqB,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAS5E;AAED,sDAAsD;AACtD,wBAAgB,cAAc,CAC5B,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACnC,iBAAiB,CAEnB"}
1
+ {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAEV,YAAY,EACZ,KAAK,EACL,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,sCAAsC,CAAC;AAE9C,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EACV,oBAAoB,EAErB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,gBAAgB,EAChB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC3B,MAAM,aAAa,CAAC;AAuBrB,KAAK,eAAe,GAAG,MAAM,GAAG,cAAc,EAAE,CAAC;AAgKjD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACtC,YAAY,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;CAC/C;AAED;;GAEG;AACH,qBAAa,gBACX,YACE,eAAe,CACb,oBAAoB,CAAC,eAAe,CAAC,EACrC,qBAAqB,CACtB;IAEH,sDAAsD;IACtD,EAAE,CACA,KAAK,EAAE,oBAAoB,CAAC,eAAe,CAAC,EAC5C,OAAO,CAAC,EAAE,qBAAqB,GAC9B,qBAAqB;IA+ExB,2DAA2D;IAC3D,IAAI,CAAC,KAAK,EAAE,qBAAqB,GAAG,oBAAoB,CAAC,eAAe,CAAC;CAoB1E;AAgND;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,gBAAgB,CACrD,qBAAqB,EACrB,oBAAoB,CAAC,eAAe,CAAC,EACrC,eAAe,CAChB;IACC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM;IAU9D,iDAAiD;IACjD,WAAW,CAAC,CAAC,EAAE,qBAAqB,GAAG,MAAM;IAO7C,+DAA+D;IACzD,UAAU,CAAC,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC;IAU3D,iEAAiE;IAC3D,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,qBAAqB,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAa5E;AAED,sDAAsD;AACtD,wBAAgB,cAAc,CAC5B,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACnC,iBAAiB,CAEnB"}
@@ -1,43 +1,159 @@
1
1
  import { getEncoding } from "js-tiktoken";
2
2
  import { ChatCompletionsProtocol } from "../protocols/chat-completions";
3
- import { ProtocolProvider } from "../provider";
3
+ import { ProtocolProvider, } from "../provider";
4
4
  const encoder = getEncoding("cl100k_base");
5
5
  const countText = (text) => encoder.encode(text).length;
6
+ const toAnthropicTtl = (ttlSeconds) => {
7
+ if (ttlSeconds === undefined) {
8
+ return undefined;
9
+ }
10
+ return ttlSeconds >= 60 * 60 ? "1h" : "5m";
11
+ };
12
+ function buildCacheControl(ttlSeconds) {
13
+ const ttl = toAnthropicTtl(ttlSeconds);
14
+ return ttl ? { type: "ephemeral", ttl } : { type: "ephemeral" };
15
+ }
16
+ function applyCacheControlToBlock(block, cacheControl) {
17
+ return {
18
+ ...block,
19
+ cache_control: cacheControl,
20
+ };
21
+ }
22
+ function toContentBlocks(content) {
23
+ if (typeof content === "string") {
24
+ return content ? [{ type: "text", text: content }] : [];
25
+ }
26
+ return [...content];
27
+ }
28
+ function applyCacheControlToMessage(message, cacheControl) {
29
+ const blocks = toContentBlocks(message.content);
30
+ if (blocks.length === 0) {
31
+ return message;
32
+ }
33
+ const lastIndex = blocks.length - 1;
34
+ const lastBlock = blocks[lastIndex];
35
+ if (lastBlock) {
36
+ blocks[lastIndex] = applyCacheControlToBlock(lastBlock, cacheControl);
37
+ }
38
+ return { ...message, content: blocks };
39
+ }
40
+ function resolveCacheControlState(context) {
41
+ const pinnedPrefixCount = context?.cache?.pinnedPrefixMessageCount ?? 0;
42
+ const lastPinnedIndex = pinnedPrefixCount > 0 ? pinnedPrefixCount - 1 : -1;
43
+ const cacheControl = lastPinnedIndex >= 0
44
+ ? buildCacheControl(context?.cache?.ttlSeconds)
45
+ : undefined;
46
+ if (cacheControl) {
47
+ return { lastPinnedIndex, cacheControl };
48
+ }
49
+ return { lastPinnedIndex };
50
+ }
51
+ function createTextBlock(text) {
52
+ return { type: "text", text };
53
+ }
54
+ function maybeApplyCacheControl(block, shouldMarkCache, cacheControl) {
55
+ if (!(shouldMarkCache && cacheControl)) {
56
+ return block;
57
+ }
58
+ return applyCacheControlToBlock(block, cacheControl);
59
+ }
60
+ function renderToolResultMessages(message, shouldMarkCache, cacheControl) {
61
+ return message.content.map((result) => {
62
+ const block = {
63
+ type: "tool_result",
64
+ tool_use_id: result.toolCallId,
65
+ content: result.output ?? "",
66
+ };
67
+ const resolvedBlock = maybeApplyCacheControl(block, shouldMarkCache, cacheControl);
68
+ return { role: "user", content: [resolvedBlock] };
69
+ });
70
+ }
71
+ function renderUserOrAssistantMessage(message, shouldMarkCache, cacheControl) {
72
+ const rendered = renderAnthropicMessage(message);
73
+ if (!rendered.message) {
74
+ return null;
75
+ }
76
+ if (shouldMarkCache && cacheControl) {
77
+ return applyCacheControlToMessage(rendered.message, cacheControl);
78
+ }
79
+ return rendered.message;
80
+ }
81
+ function systemToString(system) {
82
+ if (!system) {
83
+ return undefined;
84
+ }
85
+ if (typeof system === "string") {
86
+ return system;
87
+ }
88
+ return system.map((block) => block.text).join("\n\n");
89
+ }
90
+ function systemToBlocks(system) {
91
+ if (!system) {
92
+ return [];
93
+ }
94
+ if (typeof system === "string") {
95
+ return system ? [{ type: "text", text: system }] : [];
96
+ }
97
+ return [...system];
98
+ }
99
+ function countSystemTokens(system) {
100
+ if (!system) {
101
+ return 0;
102
+ }
103
+ if (typeof system === "string") {
104
+ return countText(system);
105
+ }
106
+ return system.reduce((total, block) => total + countText(block.text), 0);
107
+ }
6
108
  /**
7
109
  * Adapter between chat-completions protocol messages and Anthropic messages.
8
110
  */
9
111
  export class AnthropicAdapter {
10
112
  /** Convert protocol messages into Anthropic input. */
11
- to(input) {
113
+ to(input, context) {
12
114
  const messages = [];
13
- let system = "";
14
- for (const message of input) {
115
+ const systemBlocks = [];
116
+ const { lastPinnedIndex, cacheControl } = resolveCacheControlState(context);
117
+ let hasSystemCacheControl = false;
118
+ for (const [index, message] of input.entries()) {
119
+ const shouldMarkCache = index === lastPinnedIndex;
15
120
  switch (message.role) {
16
121
  case "system":
17
- case "developer":
18
- // Anthropic uses a single system string; merge system + developer.
19
- system = system ? `${system}\n\n${message.content}` : message.content;
122
+ case "developer": {
123
+ // Anthropic uses a system field; keep system messages as text blocks.
124
+ if (!message.content) {
125
+ break;
126
+ }
127
+ const block = createTextBlock(message.content);
128
+ const shouldApplyCache = Boolean(shouldMarkCache && cacheControl);
129
+ const resolvedBlock = maybeApplyCacheControl(block, shouldMarkCache, cacheControl);
130
+ hasSystemCacheControl = shouldApplyCache || hasSystemCacheControl;
131
+ systemBlocks.push(resolvedBlock);
20
132
  break;
133
+ }
21
134
  case "tool":
22
135
  // Tool results are represented as user tool_result blocks.
23
- for (const result of message.content) {
24
- messages.push({
25
- role: "user",
26
- content: [
27
- {
28
- type: "tool_result",
29
- tool_use_id: result.toolCallId,
30
- content: result.output ?? "",
31
- },
32
- ],
33
- });
136
+ messages.push(...renderToolResultMessages(message, shouldMarkCache, cacheControl));
137
+ break;
138
+ case "user": {
139
+ const userMessage = {
140
+ role: "user",
141
+ content: message.content,
142
+ };
143
+ const rendered = renderUserOrAssistantMessage(userMessage, shouldMarkCache, cacheControl);
144
+ if (rendered) {
145
+ messages.push(rendered);
34
146
  }
35
147
  break;
36
- case "user":
148
+ }
37
149
  case "assistant": {
38
- const rendered = renderAnthropicMessage(message);
39
- if (rendered.message) {
40
- messages.push(rendered.message);
150
+ const assistantMessage = {
151
+ role: "assistant",
152
+ content: message.content,
153
+ };
154
+ const rendered = renderUserOrAssistantMessage(assistantMessage, shouldMarkCache, cacheControl);
155
+ if (rendered) {
156
+ messages.push(rendered);
41
157
  }
42
158
  break;
43
159
  }
@@ -45,14 +161,21 @@ export class AnthropicAdapter {
45
161
  break;
46
162
  }
47
163
  }
164
+ let system;
165
+ if (systemBlocks.length > 0) {
166
+ system = hasSystemCacheControl
167
+ ? systemBlocks
168
+ : systemToString(systemBlocks);
169
+ }
48
170
  return system ? { system, messages } : { messages };
49
171
  }
50
172
  /** Convert Anthropic input back into protocol messages. */
51
173
  from(input) {
52
174
  const output = [];
53
175
  const toolNameById = new Map();
54
- if (input.system) {
55
- output.push({ role: "system", content: input.system });
176
+ const systemText = systemToString(input.system);
177
+ if (systemText) {
178
+ output.push({ role: "system", content: systemText });
56
179
  }
57
180
  for (const message of input.messages) {
58
181
  if (message.role === "assistant") {
@@ -248,7 +371,7 @@ export class AnthropicProvider extends ProtocolProvider {
248
371
  }
249
372
  /** Count tokens for Anthropic rendered input. */
250
373
  countTokens(r) {
251
- return ((r.system ? countText(r.system) : 0) +
374
+ return (countSystemTokens(r.system) +
252
375
  r.messages.reduce((n, m) => n + countAnthropicMessageTokens(m), 0));
253
376
  }
254
377
  /** Generate a text completion using Anthropic messages API. */
@@ -263,10 +386,13 @@ export class AnthropicProvider extends ProtocolProvider {
263
386
  }
264
387
  /** Generate a structured object using Anthropic messages API. */
265
388
  async object(r, schema) {
389
+ const systemBlocks = systemToBlocks(r.system);
390
+ const jsonInstruction = "You must respond with valid JSON only.";
391
+ systemBlocks.push({ type: "text", text: jsonInstruction });
266
392
  const res = await this.client.messages.create({
267
393
  model: this.model,
268
394
  max_tokens: this.maxTokens,
269
- system: `${r.system ?? ""}\n\nYou must respond with valid JSON only.`,
395
+ ...(systemBlocks.length > 0 ? { system: systemBlocks } : {}),
270
396
  messages: r.messages,
271
397
  });
272
398
  return schema.parse(JSON.parse(extractText(res.content)));
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,21 @@
1
1
  import type OpenAI from "openai";
2
- import type { ChatCompletionMessageParam } from "openai/resources/chat/completions";
3
- import type { ResponseInputItem } from "openai/resources/responses/responses";
2
+ import type { ChatCompletionCreateParamsNonStreaming, ChatCompletionMessageParam } from "openai/resources/chat/completions";
3
+ import type { ResponseCreateParamsNonStreaming, ResponseInputItem } from "openai/resources/responses/responses";
4
4
  import type { z } from "zod";
5
5
  import type { ChatCompletionsInput } from "../protocols/chat-completions";
6
6
  import type { ResponsesInput, ResponsesToolIO } from "../protocols/responses";
7
- import { ProtocolProvider, type ProviderAdapter } from "../provider";
7
+ import { ProtocolProvider, type ProviderAdapter, type ProviderRenderContext } from "../provider";
8
+ /** Required model type for OpenAI Responses API (excludes undefined). */
9
+ export type ResponsesModel = Exclude<ResponseCreateParamsNonStreaming["model"], undefined>;
10
+ export type OpenAIModel = ChatCompletionCreateParamsNonStreaming["model"] | ResponsesModel;
11
+ export interface OpenAIChatRenderOutput {
12
+ messages: ChatCompletionMessageParam[];
13
+ cache_id?: string | undefined;
14
+ }
15
+ export interface OpenAIResponsesRenderOutput {
16
+ input: OpenAIResponses;
17
+ cache_id?: string | undefined;
18
+ }
8
19
  /** OpenAI tool IO matches the responses protocol tool IO. */
9
20
  export type OpenAiToolIO = ResponsesToolIO;
10
21
  /** OpenAI responses API item shape. */
@@ -14,51 +25,55 @@ export type OpenAIResponses = OpenAIResponsePart[];
14
25
  /**
15
26
  * Adapter between chat-completions protocol messages and OpenAI chat messages.
16
27
  */
17
- export declare class OpenAIChatAdapter implements ProviderAdapter<ChatCompletionsInput<OpenAiToolIO>, ChatCompletionMessageParam[]> {
28
+ export declare class OpenAIChatAdapter implements ProviderAdapter<ChatCompletionsInput<OpenAiToolIO>, OpenAIChatRenderOutput> {
29
+ private readonly model;
30
+ constructor(model: OpenAIModel);
18
31
  /** Convert protocol messages into OpenAI chat messages. */
19
- to(input: ChatCompletionsInput<OpenAiToolIO>): ChatCompletionMessageParam[];
32
+ to(input: ChatCompletionsInput<OpenAiToolIO>, context?: ProviderRenderContext): OpenAIChatRenderOutput;
20
33
  /** Convert OpenAI chat messages into protocol messages. */
21
- from(input: ChatCompletionMessageParam[]): ChatCompletionsInput<OpenAiToolIO>;
34
+ from(input: OpenAIChatRenderOutput): ChatCompletionsInput<OpenAiToolIO>;
22
35
  }
23
36
  /**
24
37
  * Adapter between responses protocol items and OpenAI responses items.
25
38
  */
26
- export declare class OpenAIResponsesAdapter implements ProviderAdapter<ResponsesInput, OpenAIResponses> {
39
+ export declare class OpenAIResponsesAdapter implements ProviderAdapter<ResponsesInput, OpenAIResponsesRenderOutput> {
40
+ private readonly model;
41
+ constructor(model: OpenAIModel);
27
42
  /** Convert protocol items into OpenAI responses input. */
28
- to(input: ResponsesInput): OpenAIResponses;
43
+ to(input: ResponsesInput, context?: ProviderRenderContext): OpenAIResponsesRenderOutput;
29
44
  /** Convert OpenAI responses input into protocol items. */
30
- from(input: OpenAIResponses): ResponsesInput;
45
+ from(input: OpenAIResponsesRenderOutput): ResponsesInput;
31
46
  }
32
47
  /**
33
48
  * OpenAI provider using the chat completions protocol.
34
49
  */
35
- export declare class OpenAIChatProvider extends ProtocolProvider<ChatCompletionMessageParam[], ChatCompletionsInput<OpenAiToolIO>, OpenAiToolIO> {
50
+ export declare class OpenAIChatProvider extends ProtocolProvider<OpenAIChatRenderOutput, ChatCompletionsInput<OpenAiToolIO>, OpenAiToolIO> {
36
51
  private readonly client;
37
52
  private readonly model;
38
- constructor(client: OpenAI, model: string);
53
+ constructor(client: OpenAI, model: ChatCompletionCreateParamsNonStreaming["model"]);
39
54
  /** Count tokens for OpenAI chat messages. */
40
- countTokens(messages: ChatCompletionMessageParam[]): number;
55
+ countTokens(output: OpenAIChatRenderOutput): number;
41
56
  /** Generate a text completion using chat completions. */
42
- completion(messages: ChatCompletionMessageParam[]): Promise<string>;
57
+ completion(output: OpenAIChatRenderOutput): Promise<string>;
43
58
  /** Generate a structured object using chat completions. */
44
- object<T>(messages: ChatCompletionMessageParam[], schema: z.ZodType<T>): Promise<T>;
59
+ object<T>(output: OpenAIChatRenderOutput, schema: z.ZodType<T>): Promise<T>;
45
60
  }
46
61
  /**
47
62
  * OpenAI provider using the responses protocol.
48
63
  */
49
- export declare class OpenAIResponsesProvider extends ProtocolProvider<OpenAIResponses, ResponsesInput, OpenAiToolIO> {
64
+ export declare class OpenAIResponsesProvider extends ProtocolProvider<OpenAIResponsesRenderOutput, ResponsesInput, OpenAiToolIO> {
50
65
  private readonly client;
51
66
  private readonly model;
52
- constructor(client: OpenAI, model: string);
67
+ constructor(client: OpenAI, model: ResponsesModel);
53
68
  /** Count tokens for OpenAI responses items. */
54
- countTokens(items: OpenAIResponses): number;
69
+ countTokens(output: OpenAIResponsesRenderOutput): number;
55
70
  /** Generate a text completion using the responses API. */
56
- completion(items: OpenAIResponses): Promise<string>;
71
+ completion(output: OpenAIResponsesRenderOutput): Promise<string>;
57
72
  /** Generate a structured object using the responses API. */
58
- object<T>(items: OpenAIResponses, schema: z.ZodType<T>): Promise<T>;
73
+ object<T>(output: OpenAIResponsesRenderOutput, schema: z.ZodType<T>): Promise<T>;
59
74
  }
60
75
  /** Convenience creator for the OpenAI chat provider. */
61
- export declare function createProvider(client: OpenAI, model: string): OpenAIChatProvider;
76
+ export declare function createProvider(client: OpenAI, model: ChatCompletionCreateParamsNonStreaming["model"]): OpenAIChatProvider;
62
77
  /** Convenience creator for the OpenAI responses provider. */
63
- export declare function createResponsesProvider(client: OpenAI, model: string): OpenAIResponsesProvider;
78
+ export declare function createResponsesProvider(client: OpenAI, model: ResponsesModel): OpenAIResponsesProvider;
64
79
  //# sourceMappingURL=openai.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,33 @@
1
1
  import { getEncoding } from "js-tiktoken";
2
2
  import { ChatCompletionsProtocol } from "../protocols/chat-completions";
3
3
  import { ResponsesProtocol } from "../protocols/responses";
4
- import { ProtocolProvider } from "../provider";
4
+ import { ProtocolProvider, } from "../provider";
5
5
  const encoder = getEncoding("cl100k_base");
6
6
  const countText = (text) => encoder.encode(text).length;
7
+ function derivePromptCacheKey(context, model) {
8
+ const descriptor = context?.cache;
9
+ const pinId = descriptor?.pinIdInPrefix;
10
+ const pinVersion = descriptor?.pinVersionInPrefix;
11
+ if (!(pinId && pinVersion)) {
12
+ return undefined;
13
+ }
14
+ const scopeKey = descriptor.scopeKey ?? "global";
15
+ const ttlSegment = descriptor.ttlSeconds !== undefined
16
+ ? `ttl:${descriptor.ttlSeconds}`
17
+ : "ttl:default";
18
+ return `cria:${model}:${scopeKey}:${ttlSegment}:${pinId}:${pinVersion}`;
19
+ }
7
20
  /**
8
21
  * Adapter between chat-completions protocol messages and OpenAI chat messages.
9
22
  */
10
23
  export class OpenAIChatAdapter {
24
+ model;
25
+ constructor(model) {
26
+ this.model = model;
27
+ }
11
28
  /** Convert protocol messages into OpenAI chat messages. */
12
- to(input) {
13
- return input.flatMap((message) => {
29
+ to(input, context) {
30
+ const messages = input.flatMap((message) => {
14
31
  switch (message.role) {
15
32
  case "assistant":
16
33
  return [renderOpenAiAssistantMessage(message.content)];
@@ -24,11 +41,14 @@ export class OpenAIChatAdapter {
24
41
  return [{ role: message.role, content: message.content }];
25
42
  }
26
43
  });
44
+ const cache_id = derivePromptCacheKey(context, this.model);
45
+ return cache_id ? { messages, cache_id } : { messages };
27
46
  }
28
47
  /** Convert OpenAI chat messages into protocol messages. */
29
48
  from(input) {
30
49
  const toolNameById = new Map();
31
- return input.map((message) => {
50
+ const messages = input.messages;
51
+ return messages.map((message) => {
32
52
  switch (message.role) {
33
53
  case "assistant": {
34
54
  const text = chatText(message.content);
@@ -93,13 +113,19 @@ export class OpenAIChatAdapter {
93
113
  * Adapter between responses protocol items and OpenAI responses items.
94
114
  */
95
115
  export class OpenAIResponsesAdapter {
116
+ model;
117
+ constructor(model) {
118
+ this.model = model;
119
+ }
96
120
  /** Convert protocol items into OpenAI responses input. */
97
- to(input) {
98
- return input.flatMap((item, index) => mapResponsesItemToOpenAi(item, index));
121
+ to(input, context) {
122
+ const items = input.flatMap((item, index) => mapResponsesItemToOpenAi(item, index));
123
+ const cache_id = derivePromptCacheKey(context, this.model);
124
+ return cache_id ? { input: items, cache_id } : { input: items };
99
125
  }
100
126
  /** Convert OpenAI responses input into protocol items. */
101
127
  from(input) {
102
- return input.flatMap((item) => mapOpenAiItemToResponses(item));
128
+ return input.input.flatMap((item) => mapOpenAiItemToResponses(item));
103
129
  }
104
130
  }
105
131
  /** Render assistant content into an OpenAI chat message. */
@@ -346,29 +372,31 @@ export class OpenAIChatProvider extends ProtocolProvider {
346
372
  client;
347
373
  model;
348
374
  constructor(client, model) {
349
- super(new ChatCompletionsProtocol(), new OpenAIChatAdapter());
375
+ super(new ChatCompletionsProtocol(), new OpenAIChatAdapter(model));
350
376
  this.client = client;
351
377
  this.model = model;
352
378
  }
353
379
  /** Count tokens for OpenAI chat messages. */
354
- countTokens(messages) {
355
- return messages.reduce((n, m) => n + countChatMessageTokens(m), 0);
380
+ countTokens(output) {
381
+ return output.messages.reduce((n, m) => n + countChatMessageTokens(m), 0);
356
382
  }
357
383
  /** Generate a text completion using chat completions. */
358
- async completion(messages) {
359
- const res = await this.client.chat.completions.create({
384
+ async completion(output) {
385
+ const request = {
360
386
  model: this.model,
361
- messages,
362
- });
387
+ messages: output.messages,
388
+ };
389
+ const res = await this.client.chat.completions.create(request);
363
390
  return res.choices[0]?.message?.content ?? "";
364
391
  }
365
392
  /** Generate a structured object using chat completions. */
366
- async object(messages, schema) {
367
- const res = await this.client.chat.completions.create({
393
+ async object(output, schema) {
394
+ const request = {
368
395
  model: this.model,
369
- messages,
396
+ messages: output.messages,
370
397
  response_format: { type: "json_object" },
371
- });
398
+ };
399
+ const res = await this.client.chat.completions.create(request);
372
400
  return schema.parse(JSON.parse(res.choices[0]?.message?.content ?? ""));
373
401
  }
374
402
  }
@@ -379,25 +407,26 @@ export class OpenAIResponsesProvider extends ProtocolProvider {
379
407
  client;
380
408
  model;
381
409
  constructor(client, model) {
382
- super(new ResponsesProtocol(), new OpenAIResponsesAdapter());
410
+ super(new ResponsesProtocol(), new OpenAIResponsesAdapter(model));
383
411
  this.client = client;
384
412
  this.model = model;
385
413
  }
386
414
  /** Count tokens for OpenAI responses items. */
387
- countTokens(items) {
388
- return items.reduce((n, i) => n + countResponseItemTokens(i), 0);
415
+ countTokens(output) {
416
+ return output.input.reduce((n, i) => n + countResponseItemTokens(i), 0);
389
417
  }
390
418
  /** Generate a text completion using the responses API. */
391
- async completion(items) {
392
- const res = await this.client.responses.create({
419
+ async completion(output) {
420
+ const request = {
393
421
  model: this.model,
394
- input: items,
395
- });
422
+ input: output.input,
423
+ };
424
+ const res = await this.client.responses.create(request);
396
425
  return res.output_text ?? "";
397
426
  }
398
427
  /** Generate a structured object using the responses API. */
399
- async object(items, schema) {
400
- return schema.parse(JSON.parse(await this.completion(items)));
428
+ async object(output, schema) {
429
+ return schema.parse(JSON.parse(await this.completion(output)));
401
430
  }
402
431
  }
403
432
  /** Convenience creator for the OpenAI chat provider. */