@modular-prompt/driver 0.12.0 → 0.13.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.
Files changed (108) hide show
  1. package/dist/anthropic/anthropic-driver.d.ts +38 -8
  2. package/dist/anthropic/anthropic-driver.d.ts.map +1 -1
  3. package/dist/anthropic/anthropic-driver.js +180 -164
  4. package/dist/anthropic/anthropic-driver.js.map +1 -1
  5. package/dist/cache-controller.d.ts +28 -0
  6. package/dist/cache-controller.d.ts.map +1 -0
  7. package/dist/cache-controller.js +2 -0
  8. package/dist/cache-controller.js.map +1 -0
  9. package/dist/cache-utils.d.ts +20 -0
  10. package/dist/cache-utils.d.ts.map +1 -0
  11. package/dist/cache-utils.js +71 -0
  12. package/dist/cache-utils.js.map +1 -0
  13. package/dist/content-utils.d.ts.map +1 -1
  14. package/dist/content-utils.js +20 -0
  15. package/dist/content-utils.js.map +1 -1
  16. package/dist/driver-registry/config-based-factory.d.ts.map +1 -1
  17. package/dist/driver-registry/config-based-factory.js +7 -0
  18. package/dist/driver-registry/config-based-factory.js.map +1 -1
  19. package/dist/driver-registry/factory-helper.d.ts.map +1 -1
  20. package/dist/driver-registry/factory-helper.js +7 -4
  21. package/dist/driver-registry/factory-helper.js.map +1 -1
  22. package/dist/driver-registry/types.d.ts +6 -0
  23. package/dist/driver-registry/types.d.ts.map +1 -1
  24. package/dist/formatter/converter.js +1 -1
  25. package/dist/formatter/converter.js.map +1 -1
  26. package/dist/google-genai/element-converter.d.ts +11 -0
  27. package/dist/google-genai/element-converter.d.ts.map +1 -0
  28. package/dist/google-genai/element-converter.js +126 -0
  29. package/dist/google-genai/element-converter.js.map +1 -0
  30. package/dist/google-genai/google-genai-cache-controller.d.ts +24 -0
  31. package/dist/google-genai/google-genai-cache-controller.d.ts.map +1 -0
  32. package/dist/google-genai/google-genai-cache-controller.js +127 -0
  33. package/dist/google-genai/google-genai-cache-controller.js.map +1 -0
  34. package/dist/google-genai/google-genai-driver.d.ts +5 -29
  35. package/dist/google-genai/google-genai-driver.d.ts.map +1 -1
  36. package/dist/google-genai/google-genai-driver.js +92 -255
  37. package/dist/google-genai/google-genai-driver.js.map +1 -1
  38. package/dist/index.d.ts +4 -0
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +3 -0
  41. package/dist/index.js.map +1 -1
  42. package/dist/mlx-ml/mlx-cache-controller.d.ts +66 -0
  43. package/dist/mlx-ml/mlx-cache-controller.d.ts.map +1 -0
  44. package/dist/mlx-ml/mlx-cache-controller.js +600 -0
  45. package/dist/mlx-ml/mlx-cache-controller.js.map +1 -0
  46. package/dist/mlx-ml/mlx-driver.d.ts +12 -7
  47. package/dist/mlx-ml/mlx-driver.d.ts.map +1 -1
  48. package/dist/mlx-ml/mlx-driver.js +192 -124
  49. package/dist/mlx-ml/mlx-driver.js.map +1 -1
  50. package/dist/mlx-ml/mlx-message-utils.d.ts +9 -0
  51. package/dist/mlx-ml/mlx-message-utils.d.ts.map +1 -0
  52. package/dist/mlx-ml/mlx-message-utils.js +71 -0
  53. package/dist/mlx-ml/mlx-message-utils.js.map +1 -0
  54. package/dist/mlx-ml/process/index.d.ts +7 -3
  55. package/dist/mlx-ml/process/index.d.ts.map +1 -1
  56. package/dist/mlx-ml/process/index.js +22 -7
  57. package/dist/mlx-ml/process/index.js.map +1 -1
  58. package/dist/mlx-ml/process/model-handlers.d.ts +4 -59
  59. package/dist/mlx-ml/process/model-handlers.d.ts.map +1 -1
  60. package/dist/mlx-ml/process/model-handlers.js +15 -14
  61. package/dist/mlx-ml/process/model-handlers.js.map +1 -1
  62. package/dist/mlx-ml/process/model-specific.d.ts +7 -0
  63. package/dist/mlx-ml/process/model-specific.d.ts.map +1 -1
  64. package/dist/mlx-ml/process/model-specific.js +3 -0
  65. package/dist/mlx-ml/process/model-specific.js.map +1 -1
  66. package/dist/mlx-ml/process/process-communication.d.ts +3 -0
  67. package/dist/mlx-ml/process/process-communication.d.ts.map +1 -1
  68. package/dist/mlx-ml/process/process-communication.js +13 -0
  69. package/dist/mlx-ml/process/process-communication.js.map +1 -1
  70. package/dist/mlx-ml/process/queue.d.ts +5 -2
  71. package/dist/mlx-ml/process/queue.d.ts.map +1 -1
  72. package/dist/mlx-ml/process/queue.js +101 -14
  73. package/dist/mlx-ml/process/queue.js.map +1 -1
  74. package/dist/mlx-ml/process/response-processor.d.ts +10 -0
  75. package/dist/mlx-ml/process/response-processor.d.ts.map +1 -1
  76. package/dist/mlx-ml/process/response-processor.js +23 -1
  77. package/dist/mlx-ml/process/response-processor.js.map +1 -1
  78. package/dist/mlx-ml/process/types.d.ts +50 -4
  79. package/dist/mlx-ml/process/types.d.ts.map +1 -1
  80. package/dist/mlx-ml/tool-call-parser.d.ts.map +1 -1
  81. package/dist/mlx-ml/tool-call-parser.js +44 -25
  82. package/dist/mlx-ml/tool-call-parser.js.map +1 -1
  83. package/dist/types.d.ts +2 -0
  84. package/dist/types.d.ts.map +1 -1
  85. package/package.json +7 -4
  86. package/src/mlx-ml/python/__main__.py +41 -449
  87. package/src/mlx-ml/python/backends/__init__.py +3 -0
  88. package/src/mlx-ml/python/backends/base.py +84 -0
  89. package/src/mlx-ml/python/backends/mlx_lm.py +202 -0
  90. package/src/mlx-ml/python/backends/mlx_vlm.py +99 -0
  91. package/src/mlx-ml/python/handlers/__init__.py +6 -0
  92. package/src/mlx-ml/python/handlers/cache.py +81 -0
  93. package/src/mlx-ml/python/handlers/capabilities.py +6 -0
  94. package/src/mlx-ml/python/handlers/chat.py +221 -0
  95. package/src/mlx-ml/python/handlers/completion.py +36 -0
  96. package/src/mlx-ml/python/handlers/format_test.py +70 -0
  97. package/src/mlx-ml/python/handlers/tokenize.py +63 -0
  98. package/src/mlx-ml/python/pyproject.toml +13 -3
  99. package/src/mlx-ml/python/server.py +126 -0
  100. package/src/mlx-ml/python/tests/__init__.py +0 -0
  101. package/src/mlx-ml/python/utils/__init__.py +0 -0
  102. package/src/mlx-ml/python/utils/prompt_builder.py +54 -0
  103. package/src/mlx-ml/python/{token_utils.py → utils/token_utils.py} +1 -2
  104. package/src/mlx-ml/python/uv.lock +266 -41
  105. /package/src/mlx-ml/python/{example_basic.py → examples/example_basic.py} +0 -0
  106. /package/src/mlx-ml/python/{example_tool_call.py → examples/example_tool_call.py} +0 -0
  107. /package/src/mlx-ml/python/{chat_template_constraints.py → utils/chat_template_constraints.py} +0 -0
  108. /package/src/mlx-ml/python/{vlm_utils.py → utils/vlm_utils.py} +0 -0
@@ -1,5 +1,27 @@
1
+ import type { TextBlockParam, CacheControlEphemeral } from '@anthropic-ai/sdk/resources/messages';
1
2
  import type { CompiledPrompt } from '@modular-prompt/core';
2
3
  import type { AIDriver, QueryOptions, QueryResult, StreamResult, ToolChoice, ToolDefinition } from '../types.js';
4
+ type AnthropicContentBlock = {
5
+ type: 'text';
6
+ text: string;
7
+ cache_control?: CacheControlEphemeral;
8
+ } | {
9
+ type: 'tool_use';
10
+ id: string;
11
+ name: string;
12
+ input: unknown;
13
+ } | {
14
+ type: 'tool_result';
15
+ tool_use_id: string;
16
+ content: string;
17
+ is_error?: boolean;
18
+ };
19
+ type AnthropicMessageContent = string | AnthropicContentBlock[];
20
+ interface AnthropicMessage {
21
+ role: 'user' | 'assistant';
22
+ content: AnthropicMessageContent;
23
+ }
24
+ type AnthropicSystem = string | TextBlockParam[];
3
25
  /**
4
26
  * VertexAI経由でのClaude利用設定
5
27
  */
@@ -46,14 +68,21 @@ export declare class AnthropicDriver implements AIDriver {
46
68
  get defaultOptions(): Partial<AnthropicQueryOptions>;
47
69
  set defaultOptions(value: Partial<AnthropicQueryOptions>);
48
70
  constructor(config?: AnthropicDriverConfig);
49
- /**
50
- * Convert ChatMessage to Anthropic message format
51
- */
52
- private chatMessageToAnthropic;
53
- /**
54
- * Convert CompiledPrompt to Anthropic messages
55
- */
56
- private compiledPromptToAnthropic;
71
+ private static formatSectionElement;
72
+ private pushMessageElement;
73
+ private processElements;
74
+ private static ensureAlternation;
75
+ private static isDataElementCacheable;
76
+ compiledPromptToAnthropic(prompt: CompiledPrompt, options?: {
77
+ cache?: boolean;
78
+ }): {
79
+ system?: AnthropicSystem;
80
+ messages: AnthropicMessage[];
81
+ };
82
+ private static partitionDataElements;
83
+ private static applyCacheBreakpoint;
84
+ private buildCue;
85
+ private static buildSystem;
57
86
  /**
58
87
  * Query the AI model
59
88
  */
@@ -67,4 +96,5 @@ export declare class AnthropicDriver implements AIDriver {
67
96
  */
68
97
  close(): Promise<void>;
69
98
  }
99
+ export {};
70
100
  //# sourceMappingURL=anthropic-driver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic-driver.d.ts","sourceRoot":"","sources":["../../src/anthropic/anthropic-driver.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAW,MAAM,sBAAsB,CAAC;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAY,UAAU,EAAE,cAAc,EAAe,MAAM,aAAa,CAAC;AAMxI;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,kBAAkB;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAChD,2CAA2C;IAC3C,MAAM,CAAC,EAAE,qBAAqB,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,YAAY;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,kEAAkE;IAClE,QAAQ,CAAC,EAAE;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;CACrC;AAiCD,qBAAa,eAAgB,YAAW,QAAQ;IAC9C,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,eAAe,CAAiC;IACxD,OAAO,CAAC,WAAW,CAAgC;IAEnD,IAAI,cAAc,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAEnD;IAED,IAAI,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC,EAEvD;gBAEW,MAAM,GAAE,qBAA0B;IAiB9C;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA4C9B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IA6IjC;;OAEG;IACG,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;IAMjF;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAmLxF;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
1
+ {"version":3,"file":"anthropic-driver.d.ts","sourceRoot":"","sources":["../../src/anthropic/anthropic-driver.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import Anthropic from '@anthropic-ai/sdk';
2
2
  import { AnthropicVertex } from '@anthropic-ai/vertex-sdk';
3
3
  import { extractJSON } from '@modular-prompt/utils';
4
- import { hasToolCalls, isToolResult } from '../types.js';
5
4
  import { contentToString } from '../content-utils.js';
6
5
  import { QueryLogger } from '../query-logger.js';
7
6
  /**
@@ -60,195 +59,212 @@ export class AnthropicDriver {
60
59
  this.defaultModel = config.model || 'claude-3-5-sonnet-20241022';
61
60
  this._defaultOptions = config.defaultOptions || {};
62
61
  }
63
- /**
64
- * Convert ChatMessage to Anthropic message format
65
- */
66
- chatMessageToAnthropic(message) {
67
- if (hasToolCalls(message)) {
68
- // AssistantToolCallMessage
69
- const blocks = [];
70
- if (message.content) {
71
- blocks.push({ type: 'text', text: contentToString(message.content) });
62
+ static formatSectionElement(el) {
63
+ const parts = [];
64
+ const prefix = el.type === 'section' ? '##' : '###';
65
+ if (el.title)
66
+ parts.push(`${prefix} ${el.title}`);
67
+ for (const item of el.items) {
68
+ if (typeof item === 'string') {
69
+ parts.push(item);
72
70
  }
73
- for (const tc of message.toolCalls) {
74
- blocks.push({
75
- type: 'tool_use',
76
- id: tc.id,
77
- name: tc.name,
78
- input: tc.arguments
79
- });
71
+ else if (typeof item === 'object' && item !== null && 'type' in item) {
72
+ const sub = item;
73
+ if (sub.type === 'subsection') {
74
+ if (sub.title)
75
+ parts.push(`### ${sub.title}`);
76
+ parts.push(...sub.items.filter((i) => typeof i === 'string'));
77
+ }
80
78
  }
81
- return { role: 'assistant', content: blocks };
82
79
  }
83
- else if (isToolResult(message)) {
84
- // ToolResultMessage - convert kind+value to Anthropic content format
85
- let content;
86
- if (message.kind === 'text') {
87
- content = String(message.value);
80
+ return parts.join('\n');
81
+ }
82
+ pushMessageElement(el, messages, systemParts) {
83
+ if (el.role === 'tool') {
84
+ let toolContent;
85
+ if (el.kind === 'text') {
86
+ toolContent = String(el.value);
88
87
  }
89
- else if (message.kind === 'data') {
90
- content = JSON.stringify(message.value);
88
+ else if (el.kind === 'data') {
89
+ toolContent = JSON.stringify(el.value);
91
90
  }
92
- else { // 'error'
93
- content = String(message.value);
91
+ else {
92
+ toolContent = String(el.value);
94
93
  }
95
- return {
94
+ messages.push({
96
95
  role: 'user',
97
- content: [{
98
- type: 'tool_result',
99
- tool_use_id: message.toolCallId,
100
- content,
101
- is_error: message.kind === 'error'
102
- }]
103
- };
96
+ content: [{ type: 'tool_result', tool_use_id: el.toolCallId, content: toolContent, is_error: el.kind === 'error' }]
97
+ });
98
+ }
99
+ else if (el.toolCalls && el.toolCalls.length > 0) {
100
+ const messageContent = contentToString(el.content);
101
+ const blocks = [];
102
+ if (messageContent)
103
+ blocks.push({ type: 'text', text: messageContent });
104
+ for (const tc of el.toolCalls) {
105
+ blocks.push({ type: 'tool_use', id: tc.id, name: tc.name, input: tc.arguments });
106
+ }
107
+ messages.push({ role: 'assistant', content: blocks });
104
108
  }
105
109
  else {
106
- // StandardChatMessage (system role is not expected in options.messages)
107
- return {
108
- role: message.role,
109
- content: contentToString(message.content)
110
- };
110
+ const messageContent = contentToString(el.content);
111
+ const role = el.role === 'system' ? 'system' : el.role === 'user' ? 'user' : 'assistant';
112
+ if (role === 'system') {
113
+ systemParts.push(messageContent);
114
+ }
115
+ else {
116
+ messages.push({ role: role, content: messageContent });
117
+ }
111
118
  }
112
119
  }
113
- /**
114
- * Convert CompiledPrompt to Anthropic messages
115
- */
116
- compiledPromptToAnthropic(prompt) {
117
- let system;
118
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
119
- const messages = [];
120
- // Helper to process elements
121
- const processElements = (elements, target) => {
122
- const content = [];
123
- const flushContent = () => {
124
- if (content.length > 0) {
125
- const text = content.join('\n');
126
- if (target === 'system') {
127
- system = system ? `${system}\n\n${text}` : text;
128
- }
129
- else {
130
- messages.push({ role: 'user', content: text });
131
- }
132
- content.length = 0;
133
- }
134
- };
135
- for (const element of elements) {
136
- if (typeof element === 'string') {
137
- content.push(element);
120
+ processElements(elements, target, messages, systemParts) {
121
+ const content = [];
122
+ const flushContent = () => {
123
+ if (content.length > 0) {
124
+ const text = content.join('\n');
125
+ if (target === 'system') {
126
+ systemParts.push(text);
138
127
  }
139
- else if (typeof element === 'object' && element !== null && 'type' in element) {
140
- const el = element;
141
- if (el.type === 'text') {
142
- content.push(el.content);
143
- }
144
- else if (el.type === 'message') {
145
- // Flush accumulated content before processing MessageElement
146
- flushContent();
147
- // Handle message elements separately
148
- if (el.role === 'tool') {
149
- // ToolResultMessageElement - convert kind+value to Anthropic content format
150
- const toolResultEl = el;
151
- let toolContent;
152
- if (toolResultEl.kind === 'text') {
153
- toolContent = String(toolResultEl.value);
154
- }
155
- else if (toolResultEl.kind === 'data') {
156
- toolContent = JSON.stringify(toolResultEl.value);
157
- }
158
- else { // 'error'
159
- toolContent = String(toolResultEl.value);
160
- }
161
- messages.push({
162
- role: 'user',
163
- content: [{
164
- type: 'tool_result',
165
- tool_use_id: toolResultEl.toolCallId,
166
- content: toolContent,
167
- is_error: toolResultEl.kind === 'error'
168
- }]
169
- });
170
- }
171
- else if ('toolCalls' in el && el.toolCalls) {
172
- const messageContent = contentToString(el.content);
173
- const blocks = [];
174
- if (messageContent)
175
- blocks.push({ type: 'text', text: messageContent });
176
- for (const tc of el.toolCalls) {
177
- blocks.push({ type: 'tool_use', id: tc.id, name: tc.name, input: tc.arguments });
178
- }
179
- messages.push({ role: 'assistant', content: blocks });
180
- }
181
- else {
182
- const messageContent = contentToString(el.content);
183
- const role = el.role === 'system' ? 'system' : el.role === 'user' ? 'user' : 'assistant';
184
- if (role === 'system') {
185
- system = system ? `${system}\n\n${messageContent}` : messageContent;
186
- }
187
- else {
188
- messages.push({ role: role, content: messageContent });
189
- }
190
- }
191
- }
192
- else if (el.type === 'section' || el.type === 'subsection') {
193
- // Process section content
194
- if (el.title)
195
- content.push(`## ${el.title}`);
196
- if (el.items) {
197
- for (const item of el.items) {
198
- if (typeof item === 'string') {
199
- content.push(item);
200
- }
201
- else if (typeof item === 'object' && item !== null && 'type' in item && item.type === 'subsection') {
202
- if (item.title)
203
- content.push(`### ${item.title}`);
204
- if ('items' in item && item.items) {
205
- content.push(...item.items.filter((i) => typeof i === 'string'));
206
- }
207
- }
208
- }
209
- }
210
- }
211
- else {
212
- // Default formatting for other elements
213
- content.push(JSON.stringify(el));
214
- }
128
+ else {
129
+ messages.push({ role: 'user', content: text });
215
130
  }
131
+ content.length = 0;
216
132
  }
217
- // Flush remaining content after processing all elements
218
- flushContent();
219
133
  };
220
- // Process instructions as system message
221
- if (prompt.instructions && prompt.instructions.length > 0) {
222
- processElements(prompt.instructions, 'system');
223
- }
224
- // Add JSON instruction if schema is provided
225
- if (prompt.metadata?.outputSchema) {
226
- const jsonInstruction = '\n\nYou must respond with valid JSON that matches the provided schema. Output only the JSON object, no additional text or markdown formatting.';
227
- system = system ? `${system}${jsonInstruction}` : jsonInstruction;
228
- }
229
- // Process data as user message
230
- if (prompt.data && prompt.data.length > 0) {
231
- processElements(prompt.data, 'user');
232
- }
233
- // Process output as user message
234
- if (prompt.output && prompt.output.length > 0) {
235
- processElements(prompt.output, 'user');
134
+ for (const el of elements) {
135
+ if (el.type === 'text') {
136
+ content.push(el.content);
137
+ }
138
+ else if (el.type === 'message') {
139
+ flushContent();
140
+ this.pushMessageElement(el, messages, systemParts);
141
+ }
142
+ else if (el.type === 'section' || el.type === 'subsection') {
143
+ content.push(AnthropicDriver.formatSectionElement(el));
144
+ }
145
+ else {
146
+ content.push(JSON.stringify(el));
147
+ }
236
148
  }
237
- // Ensure messages alternate between user and assistant
238
- // If first message is not user, add a dummy user message
149
+ flushContent();
150
+ }
151
+ static ensureAlternation(messages) {
239
152
  if (messages.length > 0 && messages[0].role !== 'user') {
240
153
  messages.unshift({ role: 'user', content: 'Continue.' });
241
154
  }
242
- // If last message is assistant, add a dummy user message
243
155
  if (messages.length > 0 && messages[messages.length - 1].role === 'assistant') {
244
156
  messages.push({ role: 'user', content: 'Continue.' });
245
157
  }
246
- // If no messages, add a default
247
158
  if (messages.length === 0) {
248
159
  messages.push({ role: 'user', content: 'Please respond according to the instructions.' });
249
160
  }
161
+ }
162
+ static isDataElementCacheable(el) {
163
+ if ('cacheHint' in el && el.cacheHint != null)
164
+ return el.cacheHint === 'static' || el.cacheHint === 'immutable';
165
+ if (el.type === 'message')
166
+ return true;
167
+ if (el.type === 'chunk')
168
+ return false;
169
+ return true;
170
+ }
171
+ compiledPromptToAnthropic(prompt, options) {
172
+ const cache = options?.cache ?? false;
173
+ const systemParts = [];
174
+ const messages = [];
175
+ // 1. instructions → system
176
+ if (prompt.instructions?.length) {
177
+ this.processElements(prompt.instructions, 'system', messages, systemParts);
178
+ }
179
+ // 2. outputSchema → JSON指示をsystemに追加(Anthropicにはformat APIがないため)
180
+ if (prompt.metadata?.outputSchema) {
181
+ systemParts.push('You must respond with valid JSON that matches the provided schema. Output only the JSON object, no additional text or markdown formatting.');
182
+ }
183
+ // 3. data処理
184
+ let recentMessage = null;
185
+ if (cache && prompt.data?.length) {
186
+ const partition = AnthropicDriver.partitionDataElements(prompt.data);
187
+ recentMessage = partition.recentMessage;
188
+ if (partition.cacheable.length > 0)
189
+ this.processElements(partition.cacheable, 'user', messages, systemParts);
190
+ AnthropicDriver.applyCacheBreakpoint(messages);
191
+ if (partition.nonCacheable.length > 0)
192
+ this.processElements(partition.nonCacheable, 'user', messages, systemParts);
193
+ }
194
+ else if (prompt.data?.length) {
195
+ this.processElements(prompt.data, 'user', messages, systemParts);
196
+ }
197
+ // 4. output処理
198
+ if (cache) {
199
+ this.buildCue(prompt.output, recentMessage, messages, systemParts);
200
+ }
201
+ else if (prompt.output?.length) {
202
+ this.processElements(prompt.output, 'user', messages, systemParts);
203
+ }
204
+ // 5. system構築
205
+ const system = AnthropicDriver.buildSystem(systemParts, cache);
206
+ AnthropicDriver.ensureAlternation(messages);
250
207
  return { system, messages };
251
208
  }
209
+ static partitionDataElements(data) {
210
+ const cacheable = [];
211
+ const nonCacheable = [];
212
+ let recentMessage = null;
213
+ for (const el of data) {
214
+ if (AnthropicDriver.isDataElementCacheable(el)) {
215
+ cacheable.push(el);
216
+ if (el.type === 'message' && el.role === 'user') {
217
+ recentMessage = el;
218
+ }
219
+ }
220
+ else {
221
+ nonCacheable.push(el);
222
+ }
223
+ }
224
+ if (recentMessage) {
225
+ const idx = cacheable.indexOf(recentMessage);
226
+ if (idx >= 0)
227
+ cacheable.splice(idx, 1);
228
+ }
229
+ return { cacheable, nonCacheable, recentMessage };
230
+ }
231
+ static applyCacheBreakpoint(messages) {
232
+ for (let i = messages.length - 1; i >= 0; i--) {
233
+ if (messages[i].role === 'user') {
234
+ const content = messages[i].content;
235
+ if (typeof content === 'string') {
236
+ messages[i].content = [{ type: 'text', text: content, cache_control: { type: 'ephemeral' } }];
237
+ }
238
+ else if (Array.isArray(content) && content.length > 0) {
239
+ const last = content[content.length - 1];
240
+ if (last.type === 'text') {
241
+ content[content.length - 1] = { ...last, cache_control: { type: 'ephemeral' } };
242
+ }
243
+ else {
244
+ content.push({ type: 'text', text: '', cache_control: { type: 'ephemeral' } });
245
+ }
246
+ }
247
+ break;
248
+ }
249
+ }
250
+ }
251
+ buildCue(output, recentMessage, messages, systemParts) {
252
+ if (output?.length) {
253
+ this.processElements(output, 'user', messages, systemParts);
254
+ }
255
+ if (recentMessage) {
256
+ messages.push({ role: 'user', content: contentToString(recentMessage.content) });
257
+ }
258
+ }
259
+ static buildSystem(parts, cache) {
260
+ if (parts.length === 0)
261
+ return undefined;
262
+ const text = parts.join('\n\n');
263
+ if (cache) {
264
+ return [{ type: 'text', text, cache_control: { type: 'ephemeral' } }];
265
+ }
266
+ return text;
267
+ }
252
268
  /**
253
269
  * Query the AI model
254
270
  */
@@ -266,7 +282,7 @@ export class AnthropicDriver {
266
282
  const mergedOptions = { ...this.defaultOptions, ...anthropicOptions };
267
283
  this.queryLogger.mark(mergedOptions);
268
284
  // Convert prompt
269
- const { system, messages } = this.compiledPromptToAnthropic(prompt);
285
+ const { system, messages } = this.compiledPromptToAnthropic(prompt, { cache: mergedOptions.cache });
270
286
  // Extended Thinking: mode === 'thinking' with thinking config
271
287
  const useThinking = mergedOptions.mode === 'thinking' && mergedOptions.thinking;
272
288
  // Build API params
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic-driver.js","sourceRoot":"","sources":["../../src/anthropic/anthropic-driver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"anthropic-driver.js","sourceRoot":"","sources":["../../src/anthropic/anthropic-driver.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAI3D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAuDjD;;GAEG;AACH;;GAEG;AACH,SAAS,YAAY,CAAC,KAAuB;IAC3C,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,YAAY,EAAE;YACZ,IAAI,EAAE,QAAiB;YACvB,GAAG,IAAI,CAAC,UAAU;SACnB;KACF,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,UAAsB;IAC/C,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACnC,QAAQ,UAAU,EAAE,CAAC;YACnB,KAAK,MAAM,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YACrC,KAAK,MAAM,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YACrC,KAAK,UAAU,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC;AACjD,CAAC;AAED,MAAM,OAAO,eAAe;IAClB,MAAM,CAA8B;IACpC,YAAY,CAAS;IACrB,eAAe,CAAiC;IAChD,WAAW,GAAG,IAAI,WAAW,CAAC,WAAW,CAAC,CAAC;IAEnD,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,IAAI,cAAc,CAAC,KAAqC;QACtD,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IAC/B,CAAC;IAED,YAAY,SAAgC,EAAE;QAC5C,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC;gBAChC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO;gBAChC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,UAAU;gBAC5C,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,IAAI,IAAI;aAC/C,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC;gBAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB;aACvD,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,KAAK,IAAI,4BAA4B,CAAC;QACjE,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,cAAc,IAAI,EAAE,CAAC;IACrD,CAAC;IAEO,MAAM,CAAC,oBAAoB,CAAC,EAAwD;QAC1F,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QACpD,IAAI,EAAE,CAAC,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;QAClD,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;YAC5B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;iBAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACvE,MAAM,GAAG,GAAG,IAAkC,CAAC;gBAC/C,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBAC9B,IAAI,GAAG,CAAC,KAAK;wBAAE,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;oBAC9C,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC;gBAC7E,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAEO,kBAAkB,CAAC,EAAiC,EAAE,QAA4B,EAAE,WAAqB;QAC/G,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACvB,IAAI,WAAmB,CAAC;YACxB,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACvB,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;iBAAM,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC9B,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACN,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;aACpH,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnD,MAAM,cAAc,GAAG,eAAe,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;YACnD,MAAM,MAAM,GAA4B,EAAE,CAAC;YAC3C,IAAI,cAAc;gBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;YACxE,KAAK,MAAM,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;YACnF,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QACxD,CAAC;aAAM,CAAC;YACN,MAAM,cAAc,GAAG,eAAe,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;YACnD,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC;YACzF,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtB,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAA4B,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;IACH,CAAC;IAEO,eAAe,CACrB,QAAmB,EACnB,MAAyB,EACzB,QAA4B,EAC5B,WAAqB;QAErB,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,MAAM,YAAY,GAAG,GAAG,EAAE;YACxB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChC,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;oBACxB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzB,CAAC;qBAAM,CAAC;oBACN,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBACjD,CAAC;gBACD,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;YACrB,CAAC;QACH,CAAC,CAAC;QAEF,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACvB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;YAC3B,CAAC;iBAAM,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACjC,YAAY,EAAE,CAAC;gBACf,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;YACrD,CAAC;iBAAM,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC7D,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC;YACzD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QACD,YAAY,EAAE,CAAC;IACjB,CAAC;IAEO,MAAM,CAAC,iBAAiB,CAAC,QAA4B;QAC3D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACvD,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC9E,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,+CAA+C,EAAE,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,sBAAsB,CAAC,EAAW;QAC/C,IAAI,WAAW,IAAI,EAAE,IAAI,EAAE,CAAC,SAAS,IAAI,IAAI;YAAE,OAAO,EAAE,CAAC,SAAS,KAAK,QAAQ,IAAI,EAAE,CAAC,SAAS,KAAK,WAAW,CAAC;QAChH,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACvC,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO;YAAE,OAAO,KAAK,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,yBAAyB,CAAC,MAAsB,EAAE,OAA6B;QAI7E,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,KAAK,CAAC;QACtC,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAuB,EAAE,CAAC;QAExC,2BAA2B;QAC3B,IAAI,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;YAChC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC7E,CAAC;QAED,iEAAiE;QACjE,IAAI,MAAM,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC;YAClC,WAAW,CAAC,IAAI,CAAC,4IAA4I,CAAC,CAAC;QACjK,CAAC;QAED,YAAY;QACZ,IAAI,aAAa,GAAkC,IAAI,CAAC;QACxD,IAAI,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;YACjC,MAAM,SAAS,GAAG,eAAe,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACrE,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC;YACxC,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;gBAAE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;YAC7G,eAAe,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YAC/C,IAAI,SAAS,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;gBAAE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QACrH,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;YAC/B,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QACnE,CAAC;QAED,cAAc;QACd,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QACrE,CAAC;aAAM,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;YACjC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QACrE,CAAC;QAED,cAAc;QACd,MAAM,MAAM,GAAG,eAAe,CAAC,WAAW,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAE/D,eAAe,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAC5C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC9B,CAAC;IAEO,MAAM,CAAC,qBAAqB,CAAC,IAAe;QAKlD,MAAM,SAAS,GAAc,EAAE,CAAC;QAChC,MAAM,YAAY,GAAc,EAAE,CAAC;QACnC,IAAI,aAAa,GAAkC,IAAI,CAAC;QAExD,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;YACtB,IAAI,eAAe,CAAC,sBAAsB,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC/C,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACnB,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAChD,aAAa,GAAG,EAAE,CAAC;gBACrB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QACD,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAC7C,IAAI,GAAG,IAAI,CAAC;gBAAE,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;IACpD,CAAC;IAEO,MAAM,CAAC,oBAAoB,CAAC,QAA4B;QAC9D,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAChC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBACpC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;oBAChC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;gBAChG,CAAC;qBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBACzC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;wBACzB,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC;oBAClF,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;oBACjF,CAAC;gBACH,CAAC;gBACD,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAEO,QAAQ,CAAC,MAA6B,EAAE,aAA4C,EAAE,QAA4B,EAAE,WAAqB;QAC/I,IAAI,MAAM,EAAE,MAAM,EAAE,CAAC;YACnB,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,aAAa,EAAE,CAAC;YAClB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,WAAW,CAAC,KAAe,EAAE,KAAc;QACxD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QACzC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,WAAoB,EAAE,EAAE,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,MAAsB,EAAE,OAAsB;QACxD,kCAAkC;QAClC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3D,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,MAAsB,EAAE,OAAsB;QAC9D,IAAI,CAAC;YACL,MAAM,gBAAgB,GAAG,OAAgC,IAAI,EAAE,CAAC;YAChE,MAAM,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,gBAAgB,EAAE,CAAC;YACtE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAErC,iBAAiB;YACjB,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC;YAEpG,8DAA8D;YAC9D,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,KAAK,UAAU,IAAI,aAAa,CAAC,QAAQ,CAAC;YAEhF,mBAAmB;YACnB,8DAA8D;YAC9D,MAAM,MAAM,GAAwB;gBAClC,KAAK,EAAE,aAAa,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY;gBAC/C,QAAQ;gBACR,UAAU,EAAE,aAAa,CAAC,SAAS,IAAI,IAAI;gBAC3C,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW;gBAChE,KAAK,EAAE,aAAa,CAAC,IAAI;gBACzB,KAAK,EAAE,aAAa,CAAC,IAAI;gBACzB,cAAc,EAAE,aAAa,CAAC,aAAa;gBAC3C,MAAM;gBACN,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC1E,WAAW,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC/F,MAAM,EAAE,IAAI;gBACZ,GAAG,CAAC,WAAW,IAAI;oBACjB,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,CAAC,QAAS,CAAC,YAAY,EAAE;iBACnF,CAAC;aACH,CAAC;YAEF,0BAA0B;YAC1B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBAChC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;oBAC9B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,gBAAgB;YAChB,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAsC,CAAC,CAAC;YAElG,eAAe;YACf,IAAI,WAAW,GAAG,EAAE,CAAC;YACrB,IAAI,WAAW,GAAG,CAAC,CAAC;YACpB,IAAI,YAAY,GAAG,CAAC,CAAC;YACrB,IAAI,YAAY,GAAgC,MAAM,CAAC;YACvD,IAAI,cAAc,GAAG,KAAK,CAAC;YAC3B,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,MAAM,cAAc,GAAG,IAAI,GAAG,EAA2D,CAAC;YAE1F,qBAAqB;YACrB,MAAM,aAAa,GAAG,KAAK,IAAI,EAAE;gBAC/B,IAAI,CAAC;oBACL,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;wBAC1C,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;4BAC9E,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;4BACjC,WAAW,IAAI,OAAO,CAAC;4BACvB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBACvB,CAAC;6BAAM,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,IAAI,KAAK,CAAC,aAAa,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;4BAC3F,yBAAyB;4BACzB,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE;gCAC9B,EAAE,EAAE,KAAK,CAAC,aAAa,CAAC,EAAE;gCAC1B,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,IAAI;gCAC9B,SAAS,EAAE,EAAE;6BACd,CAAC,CAAC;wBACL,CAAC;6BAAM,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;4BAC3F,iCAAiC;4BACjC,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;4BACjD,IAAI,QAAQ,EAAE,CAAC;gCACb,QAAQ,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC;4BACjD,CAAC;wBACH,CAAC;6BAAM,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;4BAC1C,sCAAsC;4BACtC,IAAI,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;gCACzB,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC;4BACjD,CAAC;wBACH,CAAC;6BAAM,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;4BAC1C,uDAAuD;4BACvD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gCAChB,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC;4BAC3C,CAAC;4BACD,IAAI,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC;gCAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;gCACvC,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;oCAC1B,YAAY,GAAG,YAAY,CAAC;gCAC9B,CAAC;qCAAM,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;oCACnC,YAAY,GAAG,QAAQ,CAAC;gCAC1B,CAAC;qCAAM,CAAC;oCACN,YAAY,GAAG,MAAM,CAAC;gCACxB,CAAC;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;gBACD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;oBACpG,YAAY,GAAG,OAAO,CAAC;gBACzB,CAAC;gBACD,cAAc,GAAG,IAAI,CAAC;YACxB,CAAC,CAAC;YAEF,mBAAmB;YACnB,MAAM,iBAAiB,GAAG,aAAa,EAAE,CAAC;YAE1C,0BAA0B;YAC1B,MAAM,eAAe,GAAG,KAAK,SAAS,CAAC;gBACrC,IAAI,KAAK,GAAG,CAAC,CAAC;gBACd,OAAO,CAAC,cAAc,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;oBAChD,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;wBAC1B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;oBACxB,CAAC;yBAAM,CAAC;wBACN,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;oBACxD,CAAC;gBACH,CAAC;YACH,CAAC,CAAC;YAEF,wBAAwB;YACxB,MAAM,aAAa,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,EAAE;gBAChD,kDAAkD;gBAClD,IAAI,gBAAqC,CAAC;gBAC1C,IAAI,MAAM,CAAC,QAAQ,EAAE,YAAY,IAAI,WAAW,EAAE,CAAC;oBACjD,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;oBAChE,IAAI,SAAS,CAAC,MAAM,KAAK,MAAM,IAAI,SAAS,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;wBAC3D,gBAAgB,GAAG,SAAS,CAAC,IAAI,CAAC;oBACpC,CAAC;gBACH,CAAC;gBAED,2CAA2C;gBAC3C,IAAI,SAAiC,CAAC;gBACtC,IAAI,cAAc,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;oBAC5B,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;wBACvD,mCAAmC;wBACnC,IAAI,UAAmC,CAAC;wBACxC,IAAI,CAAC;4BACH,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;wBACxC,CAAC;wBAAC,MAAM,CAAC;4BACP,qCAAqC;4BACrC,UAAU,GAAG,EAAE,CAAC;wBAClB,CAAC;wBACD,OAAO;4BACL,EAAE,EAAE,EAAE,CAAC,EAAE;4BACT,IAAI,EAAE,EAAE,CAAC,IAAI;4BACb,SAAS,EAAE,UAAU;yBACtB,CAAC;oBACJ,CAAC,CAAC,CAAC;gBACL,CAAC;gBAED,cAAc;gBACd,MAAM,KAAK,GACT,CAAC,WAAW,GAAG,CAAC,IAAI,YAAY,GAAG,CAAC,CAAC;oBACnC,CAAC,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,GAAG,YAAY,EAAE;oBACxG,CAAC,CAAC,SAAS,CAAC;gBAEhB,OAAO;oBACL,OAAO,EAAE,WAAW;oBACpB,gBAAgB;oBAChB,KAAK;oBACL,SAAS;oBACT,YAAY;oBACZ,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;iBAC9B,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,OAAO;gBACL,MAAM,EAAE,eAAe,EAAE;gBACzB,MAAM,EAAE,aAAa;aACtB,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACnG,OAAO;gBACL,MAAM,EAAE,CAAC,KAAK,SAAS,CAAC,MAAK,CAAC,CAAC,EAAE;gBACjC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC;oBACtB,OAAO,EAAE,EAAE;oBACX,YAAY,EAAE,OAAgB;oBAC9B,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;iBAC9B,CAAC;aACH,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,iDAAiD;IACnD,CAAC;CACF"}
@@ -0,0 +1,28 @@
1
+ import type { Element } from '@modular-prompt/core';
2
+ import type { ToolDefinition } from './types.js';
3
+ export interface CachePrepareParams {
4
+ model: string;
5
+ instructions?: Element[];
6
+ data?: Element[];
7
+ tools?: ToolDefinition[];
8
+ reasoningEffort?: 'low' | 'medium' | 'high';
9
+ }
10
+ export interface CacheHandle {
11
+ ref: string;
12
+ /** If set, trim the KV cache to this many tokens after loading */
13
+ trimTokens?: number;
14
+ /** What the cache contains. Drivers use these flags to avoid sending duplicate content. */
15
+ includes: {
16
+ instructions: boolean;
17
+ dataElementCount: number;
18
+ tools: boolean;
19
+ };
20
+ }
21
+ export interface PromptCacheController {
22
+ /** Record that a query was issued (regardless of cache usage) */
23
+ recordQuery?(): void;
24
+ prepare(params: CachePrepareParams): Promise<CacheHandle>;
25
+ invalidate(handle: CacheHandle): Promise<void>;
26
+ close(): Promise<void>;
27
+ }
28
+ //# sourceMappingURL=cache-controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-controller.d.ts","sourceRoot":"","sources":["../src/cache-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,eAAe,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CAC7C;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2FAA2F;IAC3F,QAAQ,EAAE;QACR,YAAY,EAAE,OAAO,CAAC;QACtB,gBAAgB,EAAE,MAAM,CAAC;QACzB,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,qBAAqB;IACpC,iEAAiE;IACjE,WAAW,CAAC,IAAI,IAAI,CAAC;IACrB,OAAO,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1D,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cache-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-controller.js","sourceRoot":"","sources":["../src/cache-controller.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ import type { CompiledPrompt, Element } from '@modular-prompt/core';
2
+ export declare function isElementCacheable(el: Element): boolean;
3
+ export interface PromptPartition {
4
+ cacheable: {
5
+ instructions: Element[];
6
+ data: Element[];
7
+ };
8
+ volatile: {
9
+ instructions: Element[];
10
+ data: Element[];
11
+ output: Element[];
12
+ };
13
+ }
14
+ export interface CacheablePrefix {
15
+ instructions: Element[];
16
+ data: Element[];
17
+ }
18
+ export declare function extractCacheablePrefix(prompt: CompiledPrompt): CacheablePrefix;
19
+ export declare function partitionPrompt(prompt: CompiledPrompt): PromptPartition;
20
+ //# sourceMappingURL=cache-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-utils.d.ts","sourceRoot":"","sources":["../src/cache-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpE,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAevD;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE;QACT,YAAY,EAAE,OAAO,EAAE,CAAC;QACxB,IAAI,EAAE,OAAO,EAAE,CAAC;KACjB,CAAC;IACF,QAAQ,EAAE;QACR,YAAY,EAAE,OAAO,EAAE,CAAC;QACxB,IAAI,EAAE,OAAO,EAAE,CAAC;QAChB,MAAM,EAAE,OAAO,EAAE,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,OAAO,EAAE,CAAC;IACxB,IAAI,EAAE,OAAO,EAAE,CAAC;CACjB;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,eAAe,CAoB9E;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,eAAe,CAgCvE"}