@marinoscar/platform-api 0.1.0-next.5 → 0.1.0-next.6

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 (241) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/ai/core/ai-error.d.ts +15 -158
  3. package/dist/ai/core/ai-error.d.ts.map +1 -1
  4. package/dist/ai/core/ai-error.js +58 -221
  5. package/dist/ai/core/ai-error.js.map +1 -1
  6. package/dist/ai/core/capabilities.d.ts +3 -126
  7. package/dist/ai/core/capabilities.d.ts.map +1 -1
  8. package/dist/ai/core/capabilities.js +13 -109
  9. package/dist/ai/core/capabilities.js.map +1 -1
  10. package/dist/ai/core/conversation.d.ts +2 -15
  11. package/dist/ai/core/conversation.d.ts.map +1 -1
  12. package/dist/ai/core/conversation.js +9 -54
  13. package/dist/ai/core/conversation.js.map +1 -1
  14. package/dist/ai/core/hosted-tools.d.ts +3 -172
  15. package/dist/ai/core/hosted-tools.d.ts.map +1 -1
  16. package/dist/ai/core/hosted-tools.js +20 -286
  17. package/dist/ai/core/hosted-tools.js.map +1 -1
  18. package/dist/ai/core/provider-adapter.interface.d.ts +3 -260
  19. package/dist/ai/core/provider-adapter.interface.d.ts.map +1 -1
  20. package/dist/ai/core/provider-adapter.interface.js +7 -29
  21. package/dist/ai/core/provider-adapter.interface.js.map +1 -1
  22. package/dist/ai/core/structured-output.d.ts +3 -49
  23. package/dist/ai/core/structured-output.d.ts.map +1 -1
  24. package/dist/ai/core/structured-output.js +9 -80
  25. package/dist/ai/core/structured-output.js.map +1 -1
  26. package/dist/ai/core/tools.d.ts +3 -93
  27. package/dist/ai/core/tools.d.ts.map +1 -1
  28. package/dist/ai/core/tools.js +9 -73
  29. package/dist/ai/core/tools.js.map +1 -1
  30. package/dist/ai/core/types/file-inputs.types.d.ts +3 -102
  31. package/dist/ai/core/types/file-inputs.types.d.ts.map +1 -1
  32. package/dist/ai/core/types/file-inputs.types.js +14 -78
  33. package/dist/ai/core/types/file-inputs.types.js.map +1 -1
  34. package/dist/ai/core/types/media.types.d.ts +3 -616
  35. package/dist/ai/core/types/media.types.d.ts.map +1 -1
  36. package/dist/ai/core/types/media.types.js +33 -203
  37. package/dist/ai/core/types/media.types.js.map +1 -1
  38. package/dist/ai/core/types/responses.types.d.ts +3 -619
  39. package/dist/ai/core/types/responses.types.d.ts.map +1 -1
  40. package/dist/ai/core/types/responses.types.js +9 -57
  41. package/dist/ai/core/types/responses.types.js.map +1 -1
  42. package/dist/ai/http/dto/ai-images.dto.d.ts +4 -4
  43. package/dist/ai/index.d.ts +1 -1
  44. package/dist/ai/index.d.ts.map +1 -1
  45. package/dist/ai/index.js +3 -3
  46. package/dist/ai/index.js.map +1 -1
  47. package/dist/ai/providers/anthropic/anthropic-client.factory.d.ts +13 -15
  48. package/dist/ai/providers/anthropic/anthropic-client.factory.d.ts.map +1 -1
  49. package/dist/ai/providers/anthropic/anthropic-client.factory.js +23 -52
  50. package/dist/ai/providers/anthropic/anthropic-client.factory.js.map +1 -1
  51. package/dist/ai/providers/anthropic/anthropic.adapter.d.ts +15 -51
  52. package/dist/ai/providers/anthropic/anthropic.adapter.d.ts.map +1 -1
  53. package/dist/ai/providers/anthropic/anthropic.adapter.js +29 -293
  54. package/dist/ai/providers/anthropic/anthropic.adapter.js.map +1 -1
  55. package/dist/ai/providers/azure-openai/azure-openai-client.factory.d.ts +10 -14
  56. package/dist/ai/providers/azure-openai/azure-openai-client.factory.d.ts.map +1 -1
  57. package/dist/ai/providers/azure-openai/azure-openai-client.factory.js +20 -53
  58. package/dist/ai/providers/azure-openai/azure-openai-client.factory.js.map +1 -1
  59. package/dist/ai/providers/azure-openai/azure-openai.adapter.d.ts +14 -31
  60. package/dist/ai/providers/azure-openai/azure-openai.adapter.d.ts.map +1 -1
  61. package/dist/ai/providers/azure-openai/azure-openai.adapter.js +25 -170
  62. package/dist/ai/providers/azure-openai/azure-openai.adapter.js.map +1 -1
  63. package/dist/ai/providers/gemini/gemini-client.factory.d.ts +13 -18
  64. package/dist/ai/providers/gemini/gemini-client.factory.d.ts.map +1 -1
  65. package/dist/ai/providers/gemini/gemini-client.factory.js +24 -68
  66. package/dist/ai/providers/gemini/gemini-client.factory.js.map +1 -1
  67. package/dist/ai/providers/gemini/gemini.adapter.d.ts +15 -58
  68. package/dist/ai/providers/gemini/gemini.adapter.d.ts.map +1 -1
  69. package/dist/ai/providers/gemini/gemini.adapter.js +29 -348
  70. package/dist/ai/providers/gemini/gemini.adapter.js.map +1 -1
  71. package/dist/ai/providers/openai/openai-client.factory.d.ts +13 -35
  72. package/dist/ai/providers/openai/openai-client.factory.d.ts.map +1 -1
  73. package/dist/ai/providers/openai/openai-client.factory.js +25 -64
  74. package/dist/ai/providers/openai/openai-client.factory.js.map +1 -1
  75. package/dist/ai/providers/openai/openai.adapter.d.ts +15 -48
  76. package/dist/ai/providers/openai/openai.adapter.d.ts.map +1 -1
  77. package/dist/ai/providers/openai/openai.adapter.js +27 -206
  78. package/dist/ai/providers/openai/openai.adapter.js.map +1 -1
  79. package/dist/ai/providers/openai-compatible/openai-compatible-client.factory.d.ts +11 -11
  80. package/dist/ai/providers/openai-compatible/openai-compatible-client.factory.d.ts.map +1 -1
  81. package/dist/ai/providers/openai-compatible/openai-compatible-client.factory.js +18 -41
  82. package/dist/ai/providers/openai-compatible/openai-compatible-client.factory.js.map +1 -1
  83. package/dist/ai/providers/openai-compatible/openai-compatible.adapter.d.ts +14 -32
  84. package/dist/ai/providers/openai-compatible/openai-compatible.adapter.d.ts.map +1 -1
  85. package/dist/ai/providers/openai-compatible/openai-compatible.adapter.js +25 -149
  86. package/dist/ai/providers/openai-compatible/openai-compatible.adapter.js.map +1 -1
  87. package/dist/ai/providers/platform-ai-tracer.d.ts +4 -0
  88. package/dist/ai/providers/platform-ai-tracer.d.ts.map +1 -0
  89. package/dist/ai/providers/platform-ai-tracer.js +20 -0
  90. package/dist/ai/providers/platform-ai-tracer.js.map +1 -0
  91. package/dist/ai/runtime/ai-image-run-request.d.ts +1 -1
  92. package/dist/ai/testing/conformance/ai-no-sdk-leak.suite.d.ts +28 -5
  93. package/dist/ai/testing/conformance/ai-no-sdk-leak.suite.d.ts.map +1 -1
  94. package/dist/ai/testing/conformance/ai-no-sdk-leak.suite.js +54 -9
  95. package/dist/ai/testing/conformance/ai-no-sdk-leak.suite.js.map +1 -1
  96. package/dist/ai/testing/index.d.ts +1 -1
  97. package/dist/ai/testing/index.d.ts.map +1 -1
  98. package/dist/ai/testing/index.js +2 -1
  99. package/dist/ai/testing/index.js.map +1 -1
  100. package/dist/jobs/rate-limit.error.d.ts +2 -26
  101. package/dist/jobs/rate-limit.error.d.ts.map +1 -1
  102. package/dist/jobs/rate-limit.error.js +4 -52
  103. package/dist/jobs/rate-limit.error.js.map +1 -1
  104. package/dist/storage/config/storage-config.controller.d.ts +1 -1
  105. package/package.json +3 -2
  106. package/dist/ai/providers/anthropic/anthropic-errors.d.ts +0 -16
  107. package/dist/ai/providers/anthropic/anthropic-errors.d.ts.map +0 -1
  108. package/dist/ai/providers/anthropic/anthropic-errors.js +0 -156
  109. package/dist/ai/providers/anthropic/anthropic-errors.js.map +0 -1
  110. package/dist/ai/providers/anthropic/anthropic-messages.mapper.d.ts +0 -80
  111. package/dist/ai/providers/anthropic/anthropic-messages.mapper.d.ts.map +0 -1
  112. package/dist/ai/providers/anthropic/anthropic-messages.mapper.js +0 -536
  113. package/dist/ai/providers/anthropic/anthropic-messages.mapper.js.map +0 -1
  114. package/dist/ai/providers/anthropic/anthropic-model-catalog.d.ts +0 -49
  115. package/dist/ai/providers/anthropic/anthropic-model-catalog.d.ts.map +0 -1
  116. package/dist/ai/providers/anthropic/anthropic-model-catalog.js +0 -198
  117. package/dist/ai/providers/anthropic/anthropic-model-catalog.js.map +0 -1
  118. package/dist/ai/providers/anthropic/anthropic-stream.mapper.d.ts +0 -35
  119. package/dist/ai/providers/anthropic/anthropic-stream.mapper.d.ts.map +0 -1
  120. package/dist/ai/providers/anthropic/anthropic-stream.mapper.js +0 -203
  121. package/dist/ai/providers/anthropic/anthropic-stream.mapper.js.map +0 -1
  122. package/dist/ai/providers/anthropic/testing/anthropic-fixtures.d.ts +0 -18
  123. package/dist/ai/providers/anthropic/testing/anthropic-fixtures.d.ts.map +0 -1
  124. package/dist/ai/providers/anthropic/testing/anthropic-fixtures.js +0 -120
  125. package/dist/ai/providers/anthropic/testing/anthropic-fixtures.js.map +0 -1
  126. package/dist/ai/providers/anthropic/testing/anthropic-mock-transport.d.ts +0 -59
  127. package/dist/ai/providers/anthropic/testing/anthropic-mock-transport.d.ts.map +0 -1
  128. package/dist/ai/providers/anthropic/testing/anthropic-mock-transport.js +0 -206
  129. package/dist/ai/providers/anthropic/testing/anthropic-mock-transport.js.map +0 -1
  130. package/dist/ai/providers/azure-openai/azure-openai-settings.d.ts +0 -23
  131. package/dist/ai/providers/azure-openai/azure-openai-settings.d.ts.map +0 -1
  132. package/dist/ai/providers/azure-openai/azure-openai-settings.js +0 -54
  133. package/dist/ai/providers/azure-openai/azure-openai-settings.js.map +0 -1
  134. package/dist/ai/providers/gemini/gemini-content.mapper.d.ts +0 -98
  135. package/dist/ai/providers/gemini/gemini-content.mapper.d.ts.map +0 -1
  136. package/dist/ai/providers/gemini/gemini-content.mapper.js +0 -665
  137. package/dist/ai/providers/gemini/gemini-content.mapper.js.map +0 -1
  138. package/dist/ai/providers/gemini/gemini-embeddings.mapper.d.ts +0 -13
  139. package/dist/ai/providers/gemini/gemini-embeddings.mapper.d.ts.map +0 -1
  140. package/dist/ai/providers/gemini/gemini-embeddings.mapper.js +0 -78
  141. package/dist/ai/providers/gemini/gemini-embeddings.mapper.js.map +0 -1
  142. package/dist/ai/providers/gemini/gemini-errors.d.ts +0 -32
  143. package/dist/ai/providers/gemini/gemini-errors.d.ts.map +0 -1
  144. package/dist/ai/providers/gemini/gemini-errors.js +0 -191
  145. package/dist/ai/providers/gemini/gemini-errors.js.map +0 -1
  146. package/dist/ai/providers/gemini/gemini-model-catalog.d.ts +0 -45
  147. package/dist/ai/providers/gemini/gemini-model-catalog.d.ts.map +0 -1
  148. package/dist/ai/providers/gemini/gemini-model-catalog.js +0 -264
  149. package/dist/ai/providers/gemini/gemini-model-catalog.js.map +0 -1
  150. package/dist/ai/providers/gemini/gemini-stream.mapper.d.ts +0 -31
  151. package/dist/ai/providers/gemini/gemini-stream.mapper.d.ts.map +0 -1
  152. package/dist/ai/providers/gemini/gemini-stream.mapper.js +0 -118
  153. package/dist/ai/providers/gemini/gemini-stream.mapper.js.map +0 -1
  154. package/dist/ai/providers/gemini/testing/gemini-fixtures.d.ts +0 -80
  155. package/dist/ai/providers/gemini/testing/gemini-fixtures.d.ts.map +0 -1
  156. package/dist/ai/providers/gemini/testing/gemini-fixtures.js +0 -118
  157. package/dist/ai/providers/gemini/testing/gemini-fixtures.js.map +0 -1
  158. package/dist/ai/providers/gemini/testing/gemini-mock-transport.d.ts +0 -82
  159. package/dist/ai/providers/gemini/testing/gemini-mock-transport.d.ts.map +0 -1
  160. package/dist/ai/providers/gemini/testing/gemini-mock-transport.js +0 -342
  161. package/dist/ai/providers/gemini/testing/gemini-mock-transport.js.map +0 -1
  162. package/dist/ai/providers/openai/openai-audio.mapper.d.ts +0 -42
  163. package/dist/ai/providers/openai/openai-audio.mapper.d.ts.map +0 -1
  164. package/dist/ai/providers/openai/openai-audio.mapper.js +0 -266
  165. package/dist/ai/providers/openai/openai-audio.mapper.js.map +0 -1
  166. package/dist/ai/providers/openai/openai-call-telemetry.d.ts +0 -25
  167. package/dist/ai/providers/openai/openai-call-telemetry.d.ts.map +0 -1
  168. package/dist/ai/providers/openai/openai-call-telemetry.js +0 -93
  169. package/dist/ai/providers/openai/openai-call-telemetry.js.map +0 -1
  170. package/dist/ai/providers/openai/openai-chat-completions-stream.mapper.d.ts +0 -41
  171. package/dist/ai/providers/openai/openai-chat-completions-stream.mapper.d.ts.map +0 -1
  172. package/dist/ai/providers/openai/openai-chat-completions-stream.mapper.js +0 -173
  173. package/dist/ai/providers/openai/openai-chat-completions-stream.mapper.js.map +0 -1
  174. package/dist/ai/providers/openai/openai-chat-completions.engine.d.ts +0 -33
  175. package/dist/ai/providers/openai/openai-chat-completions.engine.d.ts.map +0 -1
  176. package/dist/ai/providers/openai/openai-chat-completions.engine.js +0 -165
  177. package/dist/ai/providers/openai/openai-chat-completions.engine.js.map +0 -1
  178. package/dist/ai/providers/openai/openai-chat-completions.mapper.d.ts +0 -42
  179. package/dist/ai/providers/openai/openai-chat-completions.mapper.d.ts.map +0 -1
  180. package/dist/ai/providers/openai/openai-chat-completions.mapper.js +0 -304
  181. package/dist/ai/providers/openai/openai-chat-completions.mapper.js.map +0 -1
  182. package/dist/ai/providers/openai/openai-embeddings.mapper.d.ts +0 -25
  183. package/dist/ai/providers/openai/openai-embeddings.mapper.d.ts.map +0 -1
  184. package/dist/ai/providers/openai/openai-embeddings.mapper.js +0 -81
  185. package/dist/ai/providers/openai/openai-embeddings.mapper.js.map +0 -1
  186. package/dist/ai/providers/openai/openai-errors.d.ts +0 -45
  187. package/dist/ai/providers/openai/openai-errors.d.ts.map +0 -1
  188. package/dist/ai/providers/openai/openai-errors.js +0 -247
  189. package/dist/ai/providers/openai/openai-errors.js.map +0 -1
  190. package/dist/ai/providers/openai/openai-family-guards.d.ts +0 -4
  191. package/dist/ai/providers/openai/openai-family-guards.d.ts.map +0 -1
  192. package/dist/ai/providers/openai/openai-family-guards.js +0 -19
  193. package/dist/ai/providers/openai/openai-family-guards.js.map +0 -1
  194. package/dist/ai/providers/openai/openai-images.mapper.d.ts +0 -23
  195. package/dist/ai/providers/openai/openai-images.mapper.d.ts.map +0 -1
  196. package/dist/ai/providers/openai/openai-images.mapper.js +0 -164
  197. package/dist/ai/providers/openai/openai-images.mapper.js.map +0 -1
  198. package/dist/ai/providers/openai/openai-model-catalog.d.ts +0 -36
  199. package/dist/ai/providers/openai/openai-model-catalog.d.ts.map +0 -1
  200. package/dist/ai/providers/openai/openai-model-catalog.js +0 -209
  201. package/dist/ai/providers/openai/openai-model-catalog.js.map +0 -1
  202. package/dist/ai/providers/openai/openai-realtime.mapper.d.ts +0 -18
  203. package/dist/ai/providers/openai/openai-realtime.mapper.d.ts.map +0 -1
  204. package/dist/ai/providers/openai/openai-realtime.mapper.js +0 -159
  205. package/dist/ai/providers/openai/openai-realtime.mapper.js.map +0 -1
  206. package/dist/ai/providers/openai/openai-redirect-guard.d.ts +0 -9
  207. package/dist/ai/providers/openai/openai-redirect-guard.d.ts.map +0 -1
  208. package/dist/ai/providers/openai/openai-redirect-guard.js +0 -61
  209. package/dist/ai/providers/openai/openai-redirect-guard.js.map +0 -1
  210. package/dist/ai/providers/openai/openai-responses.engine.d.ts +0 -50
  211. package/dist/ai/providers/openai/openai-responses.engine.d.ts.map +0 -1
  212. package/dist/ai/providers/openai/openai-responses.engine.js +0 -206
  213. package/dist/ai/providers/openai/openai-responses.engine.js.map +0 -1
  214. package/dist/ai/providers/openai/openai-responses.mapper.d.ts +0 -64
  215. package/dist/ai/providers/openai/openai-responses.mapper.d.ts.map +0 -1
  216. package/dist/ai/providers/openai/openai-responses.mapper.js +0 -580
  217. package/dist/ai/providers/openai/openai-responses.mapper.js.map +0 -1
  218. package/dist/ai/providers/openai/openai-stream.mapper.d.ts +0 -28
  219. package/dist/ai/providers/openai/openai-stream.mapper.d.ts.map +0 -1
  220. package/dist/ai/providers/openai/openai-stream.mapper.js +0 -139
  221. package/dist/ai/providers/openai/openai-stream.mapper.js.map +0 -1
  222. package/dist/ai/providers/openai/testing/chat-completions-fixtures.d.ts +0 -24
  223. package/dist/ai/providers/openai/testing/chat-completions-fixtures.d.ts.map +0 -1
  224. package/dist/ai/providers/openai/testing/chat-completions-fixtures.js +0 -72
  225. package/dist/ai/providers/openai/testing/chat-completions-fixtures.js.map +0 -1
  226. package/dist/ai/providers/openai/testing/conformance-responders.d.ts +0 -7
  227. package/dist/ai/providers/openai/testing/conformance-responders.d.ts.map +0 -1
  228. package/dist/ai/providers/openai/testing/conformance-responders.js +0 -64
  229. package/dist/ai/providers/openai/testing/conformance-responders.js.map +0 -1
  230. package/dist/ai/providers/openai/testing/openai-fixtures.d.ts +0 -52
  231. package/dist/ai/providers/openai/testing/openai-fixtures.d.ts.map +0 -1
  232. package/dist/ai/providers/openai/testing/openai-fixtures.js +0 -208
  233. package/dist/ai/providers/openai/testing/openai-fixtures.js.map +0 -1
  234. package/dist/ai/providers/openai/testing/openai-mock-transport.d.ts +0 -242
  235. package/dist/ai/providers/openai/testing/openai-mock-transport.d.ts.map +0 -1
  236. package/dist/ai/providers/openai/testing/openai-mock-transport.js +0 -523
  237. package/dist/ai/providers/openai/testing/openai-mock-transport.js.map +0 -1
  238. package/dist/ai/providers/openai-compatible/openai-compatible-settings.d.ts +0 -13
  239. package/dist/ai/providers/openai-compatible/openai-compatible-settings.d.ts.map +0 -1
  240. package/dist/ai/providers/openai-compatible/openai-compatible-settings.js +0 -29
  241. package/dist/ai/providers/openai-compatible/openai-compatible-settings.js.map +0 -1
@@ -1,198 +0,0 @@
1
- "use strict";
2
- // =============================================================================
3
- // Anthropic model classifier (issue #446, epic #421)
4
- // =============================================================================
5
- //
6
- // This table is a best-effort default; admins override per model. Update it
7
- // when Anthropic ships a new family.
8
- //
9
- // Same contract as `openai-model-catalog.ts`: `GET /v1/models` lists ids, and
10
- // `classifyModel()` answers from this ORDERED rule list — FIRST MATCH WINS,
11
- // no match means `null` (the catalog stores the model as `unclassified` and
12
- // an administrator decides; docs/specs/ai-platform.md §2.17). Every pattern is a
13
- // prefix match so a dated snapshot (`claude-opus-4-5-20251101`) classifies
14
- // like its alias (`claude-opus-4-5`).
15
- //
16
- // Each rule carries an `AnthropicModelProfile`: the neutral capabilities the
17
- // catalog stores, plus three facts the REQUEST MAPPER needs that the neutral
18
- // vocabulary deliberately does not model:
19
- //
20
- // thinking how extended thinking is configured on this family —
21
- // 'adaptive': `thinking: { type: 'adaptive' }` with
22
- // `output_config.effort` (Claude 4.6 and
23
- // later; `budget_tokens` is deprecated or
24
- // rejected there),
25
- // 'budget': `thinking: { type: 'enabled',
26
- // budget_tokens }` (Claude 3.7 - 4.5),
27
- // 'none': no extended thinking (Claude 3 / 3.5);
28
- // structuredOutput 'native' — `output_config.format` (Anthropic's own
29
- // structured outputs), or 'tool' — a forced single tool
30
- // whose `input_schema` is the schema (older families);
31
- // sampling whether `temperature` is accepted at all (Claude 4.7+,
32
- // Sonnet 5, Opus 5 and Fable/Mythos 5 reject sampling
33
- // parameters with a 400).
34
- //
35
- // Every Claude model since Claude 3 calls tools and streams, and every
36
- // current one reads images; PDFs (`file_input`) arrived with Claude 3.5
37
- // Sonnet. `hosted_tools` is deliberately never declared: Anthropic's server
38
- // tools are a different set with different shapes, and this adapter maps
39
- // none of them yet.
40
- // =============================================================================
41
- Object.defineProperty(exports, "__esModule", { value: true });
42
- exports.ANTHROPIC_CLASSIFIER_RULES = exports.ANTHROPIC_UNCLASSIFIED_MAX_OUTPUT_TOKENS = exports.ANTHROPIC_DEFAULT_MAX_TOKENS = exports.ANTHROPIC_ADAPTIVE_EFFORTS = exports.ANTHROPIC_THINKING_BUDGETS = void 0;
43
- exports.anthropicModelProfile = anthropicModelProfile;
44
- exports.classifyAnthropicModel = classifyAnthropicModel;
45
- /** Every effort the neutral vocabulary has — each family maps all four (see below). */
46
- const ALL_EFFORTS = ['minimal', 'low', 'medium', 'high'];
47
- /**
48
- * `reasoning.effort` → `thinking.budget_tokens`, for the 'budget' families.
49
- *
50
- * Anthropic's minimum budget is 1024 tokens. The ladder doubles-to-triples
51
- * per step so the four efforts are genuinely different amounts of thinking,
52
- * and tops out at 16k so `high` fits inside the default answer allowance
53
- * (`ANTHROPIC_DEFAULT_MAX_TOKENS`) plus headroom on every budget-style model.
54
- * `max_tokens` must exceed the budget: see `resolveMaxTokens` in the mapper.
55
- */
56
- exports.ANTHROPIC_THINKING_BUDGETS = {
57
- minimal: 1024,
58
- low: 2048,
59
- medium: 6144,
60
- high: 16384,
61
- };
62
- /**
63
- * `reasoning.effort` → `output_config.effort`, for the 'adaptive' families.
64
- * Anthropic's ladder is `low | medium | high | xhigh | max`; ours has no
65
- * `xhigh`/`max` and adds `minimal`, which maps to Anthropic's lowest, `low`.
66
- */
67
- exports.ANTHROPIC_ADAPTIVE_EFFORTS = {
68
- minimal: 'low',
69
- low: 'low',
70
- medium: 'medium',
71
- high: 'high',
72
- };
73
- /**
74
- * `max_tokens` when the caller sets no `maxOutputTokens` (the Messages API
75
- * REQUIRES one). 16k keeps a non-streaming answer well inside the client's
76
- * ten-minute timeout, and is capped at the model's own output limit.
77
- */
78
- exports.ANTHROPIC_DEFAULT_MAX_TOKENS = 16_000;
79
- /** The output cap assumed for an unclassified model — the smallest any Claude 3+ model has. */
80
- exports.ANTHROPIC_UNCLASSIFIED_MAX_OUTPUT_TOKENS = 4096;
81
- function profile(spec) {
82
- const inputModalities = ['text'];
83
- if (spec.vision)
84
- inputModalities.push('image');
85
- if (spec.pdf)
86
- inputModalities.push('file');
87
- return {
88
- capabilities: {
89
- capabilities: [
90
- 'responses',
91
- ...(spec.thinking !== 'none' ? ['reasoning'] : []),
92
- 'tools',
93
- 'structured_output',
94
- 'streaming',
95
- ...(spec.vision ? ['vision_input'] : []),
96
- ...(spec.pdf ? ['file_input'] : []),
97
- ],
98
- inputModalities,
99
- outputModalities: ['text'],
100
- ...(spec.thinking !== 'none' ? { reasoningEfforts: [...ALL_EFFORTS] } : {}),
101
- contextWindow: spec.contextWindow,
102
- maxOutputTokens: spec.maxOutputTokens,
103
- },
104
- thinking: spec.thinking,
105
- structuredOutput: spec.structuredOutput,
106
- sampling: spec.sampling,
107
- };
108
- }
109
- const M = 1_000_000;
110
- const K200 = 200_000;
111
- /** Claude 4.7+ / 5.x: adaptive thinking only, native structured outputs, no sampling parameters. */
112
- const FRONTIER = profile({
113
- thinking: 'adaptive',
114
- structuredOutput: 'native',
115
- sampling: false,
116
- vision: true,
117
- pdf: true,
118
- contextWindow: M,
119
- maxOutputTokens: 128_000,
120
- });
121
- /** Opus 4.7: as FRONTIER, but native structured outputs are not listed for it — use the tool path. */
122
- const OPUS_4_7 = { ...FRONTIER, structuredOutput: 'tool' };
123
- /** Opus 4.6 / Sonnet 4.6: adaptive thinking, sampling still accepted, the tool path for schemas. */
124
- const GEN_4_6 = profile({
125
- thinking: 'adaptive',
126
- structuredOutput: 'tool',
127
- sampling: true,
128
- vision: true,
129
- pdf: true,
130
- contextWindow: M,
131
- maxOutputTokens: 128_000,
132
- });
133
- function budgetFamily(structuredOutput, maxOutputTokens) {
134
- return profile({
135
- thinking: 'budget',
136
- structuredOutput,
137
- sampling: true,
138
- vision: true,
139
- pdf: true,
140
- contextWindow: K200,
141
- maxOutputTokens,
142
- });
143
- }
144
- /** Ordered; first match wins. See the file header before reordering. */
145
- exports.ANTHROPIC_CLASSIFIER_RULES = [
146
- // ---- Fable / Mythos 5.x (and the Mythos preview): the frontier tier.
147
- { match: /^claude-(?:fable|mythos)-(?:5(?:-\d+)?|preview)(?:-|$)/, profile: FRONTIER },
148
- // ---- Opus 5 / 5.5, Sonnet 5.
149
- { match: /^claude-opus-5(?:-\d+)?(?:-|$)/, profile: FRONTIER },
150
- { match: /^claude-sonnet-5(?:-\d+)?(?:-|$)/, profile: FRONTIER },
151
- // ---- Claude 4.6 - 4.8: adaptive thinking.
152
- { match: /^claude-opus-4-8(?:-|$)/, profile: FRONTIER },
153
- { match: /^claude-opus-4-7(?:-|$)/, profile: OPUS_4_7 },
154
- { match: /^claude-(?:opus|sonnet)-4-6(?:-|$)/, profile: GEN_4_6 },
155
- // ---- Claude 4.5 / 4.1 / 4: extended thinking with a token budget.
156
- { match: /^claude-opus-4-5(?:-|$)/, profile: budgetFamily('native', 64_000) },
157
- { match: /^claude-haiku-4-5(?:-|$)/, profile: budgetFamily('native', 64_000) },
158
- { match: /^claude-sonnet-4-5(?:-|$)/, profile: budgetFamily('tool', 64_000) },
159
- { match: /^claude-opus-4-1(?:-|$)/, profile: budgetFamily('native', 32_000) },
160
- // `claude-opus-4-0`, `claude-opus-4-20250514`.
161
- { match: /^claude-opus-4(?:-0)?(?:-\d{8})?$/, profile: budgetFamily('tool', 32_000) },
162
- // `claude-sonnet-4-0`, `claude-sonnet-4-20250514`.
163
- { match: /^claude-sonnet-4(?:-0)?(?:-\d{8})?$/, profile: budgetFamily('tool', 64_000) },
164
- { match: /^claude-3-7-sonnet(?:-|$)/, profile: budgetFamily('tool', 64_000) },
165
- // ---- Claude 3.5 / 3: no extended thinking.
166
- {
167
- match: /^claude-3-5-sonnet(?:-|$)/,
168
- profile: profile({ thinking: 'none', structuredOutput: 'tool', sampling: true, vision: true, pdf: true, contextWindow: K200, maxOutputTokens: 8192 }),
169
- },
170
- {
171
- match: /^claude-3-5-haiku(?:-|$)/,
172
- profile: profile({ thinking: 'none', structuredOutput: 'tool', sampling: true, vision: false, pdf: false, contextWindow: K200, maxOutputTokens: 8192 }),
173
- },
174
- {
175
- match: /^claude-3-(?:opus|sonnet|haiku)(?:-|$)/,
176
- profile: profile({ thinking: 'none', structuredOutput: 'tool', sampling: true, vision: true, pdf: false, contextWindow: K200, maxOutputTokens: 4096 }),
177
- },
178
- // ---- Deliberately unclassified: pre-Messages-era models no port drives.
179
- { match: /^claude-(?:2|instant)/, profile: null },
180
- ];
181
- /**
182
- * The full profile for `modelId`, or `null` when this table does not
183
- * recognise it. A fresh copy each call, so a caller cannot corrupt the table.
184
- */
185
- function anthropicModelProfile(modelId, rules = exports.ANTHROPIC_CLASSIFIER_RULES) {
186
- const id = modelId.trim().toLowerCase();
187
- for (const rule of rules) {
188
- if (rule.match.test(id)) {
189
- return rule.profile ? structuredClone(rule.profile) : null;
190
- }
191
- }
192
- return null;
193
- }
194
- /** `classifyModel()`: the neutral capabilities only. */
195
- function classifyAnthropicModel(modelId) {
196
- return anthropicModelProfile(modelId)?.capabilities ?? null;
197
- }
198
- //# sourceMappingURL=anthropic-model-catalog.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"anthropic-model-catalog.js","sourceRoot":"","sources":["../../../../src/ai/providers/anthropic/anthropic-model-catalog.ts"],"names":[],"mappings":"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"}
@@ -1,35 +0,0 @@
1
- import type { RawMessageStreamEvent } from '@anthropic-ai/sdk/resources/messages/messages';
2
- import { AiError } from '../../core/ai-error';
3
- import type { AiResponseRequest, AiStreamEvent } from '../../core/types/responses.types';
4
- export interface AnthropicStreamMapperOptions {
5
- request: AiResponseRequest;
6
- providerRequestId?: string | null;
7
- /** The forced structured-output tool's name, when the request used that path. */
8
- structuredToolName?: string;
9
- }
10
- export declare class AnthropicStreamMapper {
11
- private readonly opts;
12
- private readonly blocks;
13
- /** Finished items by block index — the completed response keeps block order. */
14
- private readonly items;
15
- private id;
16
- private model;
17
- private stopReason;
18
- private usage;
19
- private startedFlag;
20
- private terminalFlag;
21
- constructor(opts: AnthropicStreamMapperOptions);
22
- /** Whether `response.created` has been emitted. */
23
- get started(): boolean;
24
- /** Whether a terminal event (`response.completed` or `error`) has been emitted. */
25
- get terminated(): boolean;
26
- /** Maps one SDK event to zero or more of ours. Nothing is emitted after a terminal event. */
27
- map(event: RawMessageStreamEvent): AiStreamEvent[];
28
- /** Ends the stream with an `error` event for `err` (idempotent). */
29
- fail(err: AiError): AiStreamEvent[];
30
- private open;
31
- private delta;
32
- private close;
33
- private complete;
34
- }
35
- //# sourceMappingURL=anthropic-stream.mapper.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"anthropic-stream.mapper.d.ts","sourceRoot":"","sources":["../../../../src/ai/providers/anthropic/anthropic-stream.mapper.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAE,qBAAqB,EAAqB,MAAM,+CAA+C,CAAC;AAE9G,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,EAAgB,iBAAiB,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAOvG,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,iBAAiB,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,iFAAiF;IACjF,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAiBD,qBAAa,qBAAqB;IAWpB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAVjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;IACvD,gFAAgF;IAChF,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmC;IACzD,OAAO,CAAC,EAAE,CAAM;IAChB,OAAO,CAAC,KAAK,CAAM;IACnB,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAS;gBAEA,IAAI,EAAE,4BAA4B;IAE/D,mDAAmD;IACnD,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,mFAAmF;IACnF,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,6FAA6F;IAC7F,GAAG,CAAC,KAAK,EAAE,qBAAqB,GAAG,aAAa,EAAE;IAuClD,oEAAoE;IACpE,IAAI,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,EAAE;IAOnC,OAAO,CAAC,IAAI;IA+BZ,OAAO,CAAC,KAAK;IAoCb,OAAO,CAAC,KAAK;IA0Cb,OAAO,CAAC,QAAQ;CAiBjB"}
@@ -1,203 +0,0 @@
1
- "use strict";
2
- // =============================================================================
3
- // Anthropic Messages stream events -> AiStreamEvent (issue #446, epic #421)
4
- // =============================================================================
5
- //
6
- // One `AnthropicStreamMapper` per stream: stateful, because a Messages stream
7
- // is a sequence of CONTENT BLOCKS assembled from deltas by index, while our
8
- // contract speaks in output items. The output contract is exactly the OpenAI
9
- // stream mapper's: `response.created` first, exactly one terminal event
10
- // (`response.completed` or `error`), and the concatenated
11
- // `output_text.delta`s equal the completed response's `outputText`.
12
- //
13
- // Event mapping (anything else is dropped):
14
- //
15
- // message_start -> response.created
16
- // content_block_start -> (the block is opened)
17
- // content_block_delta text_delta -> output_text.delta
18
- // thinking_delta -> reasoning_summary.delta
19
- // signature_delta -> (kept for replay, never emitted)
20
- // input_json_delta -> function_call.arguments.delta,
21
- // or output_text.delta for the
22
- // forced structured-output tool
23
- // citations_delta -> (dropped)
24
- // content_block_stop -> output_item.done
25
- // message_delta -> (stop reason and usage kept)
26
- // message_stop -> response.completed
27
- //
28
- // A failure (the SDK raises Anthropic's `event: error` frame as an error) is
29
- // the adapter's to catch; it calls `fail()`, which ends the stream with one
30
- // `error` event carrying OUR generic message, never Anthropic's text.
31
- //
32
- // The completed response is built by `finishAnthropicResponse`, the same
33
- // function `create` uses, so structured-output validation is identical; if
34
- // it fails, the stream ends with an `error` event carrying that code instead.
35
- // =============================================================================
36
- Object.defineProperty(exports, "__esModule", { value: true });
37
- exports.AnthropicStreamMapper = void 0;
38
- const ai_error_1 = require("../../core/ai-error");
39
- const anthropic_messages_mapper_1 = require("./anthropic-messages.mapper");
40
- function errorEvent(err) {
41
- return { type: 'error', code: err.code, message: err.message };
42
- }
43
- class AnthropicStreamMapper {
44
- opts;
45
- blocks = new Map();
46
- /** Finished items by block index — the completed response keeps block order. */
47
- items = new Map();
48
- id = '';
49
- model = '';
50
- stopReason = null;
51
- usage = {};
52
- startedFlag = false;
53
- terminalFlag = false;
54
- constructor(opts) {
55
- this.opts = opts;
56
- }
57
- /** Whether `response.created` has been emitted. */
58
- get started() {
59
- return this.startedFlag;
60
- }
61
- /** Whether a terminal event (`response.completed` or `error`) has been emitted. */
62
- get terminated() {
63
- return this.terminalFlag;
64
- }
65
- /** Maps one SDK event to zero or more of ours. Nothing is emitted after a terminal event. */
66
- map(event) {
67
- if (this.terminalFlag)
68
- return [];
69
- switch (event.type) {
70
- case 'message_start':
71
- if (this.startedFlag)
72
- return [];
73
- this.startedFlag = true;
74
- this.id = event.message.id;
75
- this.model = event.message.model;
76
- this.usage = { ...event.message.usage };
77
- return [{ type: 'response.created', id: event.message.id }];
78
- case 'content_block_start':
79
- return this.open(event.index, event.content_block);
80
- case 'content_block_delta':
81
- return this.delta(event.index, event.delta);
82
- case 'content_block_stop':
83
- return this.close(event.index);
84
- case 'message_delta':
85
- if (event.delta.stop_reason)
86
- this.stopReason = event.delta.stop_reason;
87
- // Cumulative counts; a null field leaves the message_start value.
88
- for (const [key, value] of Object.entries(event.usage ?? {})) {
89
- if (value !== null && value !== undefined)
90
- this.usage[key] = value;
91
- }
92
- return [];
93
- case 'message_stop':
94
- return this.complete();
95
- default:
96
- return [];
97
- }
98
- }
99
- /** Ends the stream with an `error` event for `err` (idempotent). */
100
- fail(err) {
101
- if (this.terminalFlag)
102
- return [];
103
- this.terminalFlag = true;
104
- return [errorEvent(err)];
105
- }
106
- open(index, block) {
107
- switch (block.type) {
108
- case 'text':
109
- this.blocks.set(index, { kind: 'text', text: '' });
110
- // A start block may already carry text; normally it is empty.
111
- return this.delta(index, { type: 'text_delta', text: block.text });
112
- case 'thinking':
113
- this.blocks.set(index, { kind: 'thinking', thinking: '', signature: block.signature ?? '' });
114
- return this.delta(index, { type: 'thinking_delta', thinking: block.thinking });
115
- case 'redacted_thinking':
116
- this.blocks.set(index, { kind: 'redacted_thinking', data: block.data });
117
- return [];
118
- case 'tool_use':
119
- this.blocks.set(index, {
120
- kind: 'tool_use',
121
- id: block.id,
122
- name: block.name,
123
- json: '',
124
- structured: block.name === this.opts.structuredToolName,
125
- });
126
- return [];
127
- default:
128
- this.blocks.set(index, { kind: 'other' });
129
- return [];
130
- }
131
- }
132
- delta(index, delta) {
133
- const block = this.blocks.get(index);
134
- if (!block)
135
- return [];
136
- if (delta.type === 'text_delta' && block.kind === 'text') {
137
- block.text += delta.text;
138
- return delta.text ? [{ type: 'output_text.delta', delta: delta.text }] : [];
139
- }
140
- if (delta.type === 'thinking_delta' && block.kind === 'thinking') {
141
- block.thinking += delta.thinking;
142
- return delta.thinking ? [{ type: 'reasoning_summary.delta', delta: delta.thinking }] : [];
143
- }
144
- if (delta.type === 'signature_delta' && block.kind === 'thinking') {
145
- block.signature += delta.signature;
146
- return [];
147
- }
148
- if (delta.type === 'input_json_delta' && block.kind === 'tool_use') {
149
- block.json += delta.partial_json;
150
- if (!delta.partial_json)
151
- return [];
152
- return block.structured
153
- ? [{ type: 'output_text.delta', delta: delta.partial_json }]
154
- : [{ type: 'function_call.arguments.delta', callId: block.id, delta: delta.partial_json }];
155
- }
156
- return [];
157
- }
158
- close(index) {
159
- const block = this.blocks.get(index);
160
- if (!block)
161
- return [];
162
- this.blocks.delete(index);
163
- let item = null;
164
- switch (block.kind) {
165
- case 'text':
166
- item = { type: 'message', text: block.text };
167
- break;
168
- case 'thinking':
169
- item = (0, anthropic_messages_mapper_1.anthropicReasoningItem)({ type: 'thinking', thinking: block.thinking, signature: block.signature });
170
- break;
171
- case 'redacted_thinking':
172
- item = (0, anthropic_messages_mapper_1.anthropicReasoningItem)({ type: 'redacted_thinking', data: block.data });
173
- break;
174
- case 'tool_use': {
175
- const json = block.json.length > 0 ? block.json : '{}';
176
- // The structured tool's streamed JSON IS the text: deltas and the
177
- // completed `outputText` stay equal (same parsed value as `create`).
178
- item = block.structured
179
- ? { type: 'message', text: json }
180
- : { type: 'function_call', callId: block.id, name: block.name, arguments: json };
181
- break;
182
- }
183
- default:
184
- return [];
185
- }
186
- this.items.set(index, item);
187
- return [{ type: 'output_item.done', item }];
188
- }
189
- complete() {
190
- const output = [...this.items.entries()].sort(([a], [b]) => a - b).map(([, item]) => item);
191
- let response;
192
- try {
193
- response = (0, anthropic_messages_mapper_1.finishAnthropicResponse)({ id: this.id, model: this.model, output, stopReason: this.stopReason, usage: (0, anthropic_messages_mapper_1.anthropicUsage)(this.usage) }, { request: this.opts.request, providerRequestId: this.opts.providerRequestId });
194
- }
195
- catch (err) {
196
- return this.fail(ai_error_1.AiError.wrap(err));
197
- }
198
- this.terminalFlag = true;
199
- return [{ type: 'response.completed', response }];
200
- }
201
- }
202
- exports.AnthropicStreamMapper = AnthropicStreamMapper;
203
- //# sourceMappingURL=anthropic-stream.mapper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"anthropic-stream.mapper.js","sourceRoot":"","sources":["../../../../src/ai/providers/anthropic/anthropic-stream.mapper.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- import type { ContentBlock, Message, RawMessageStreamEvent, RedactedThinkingBlock, StopReason, TextBlock, ThinkingBlock, ToolUseBlock, Usage } from '@anthropic-ai/sdk/resources/messages/messages';
2
- export declare function textBlock(text: string): TextBlock;
3
- export declare function toolUseBlock(name: string, input: unknown, id?: string): ToolUseBlock;
4
- export declare function thinkingBlock(thinking: string, signature?: string): ThinkingBlock;
5
- export declare function redactedThinkingBlock(data?: string): RedactedThinkingBlock;
6
- export declare function usageFixture(patch?: Partial<Usage>): Usage;
7
- export interface MessageFixtureOptions {
8
- id?: string;
9
- model?: string;
10
- content: ContentBlock[];
11
- stopReason?: StopReason | null;
12
- usage?: Partial<Usage>;
13
- }
14
- /** A complete `Message`. `stop_reason` defaults to `tool_use` when a tool is called, else `end_turn`. */
15
- export declare function messageFixture(opts: MessageFixtureOptions): Message;
16
- /** The Messages API event sequence that streams `message`, deltas of `chunkSize` characters. */
17
- export declare function streamEventsFor(message: Message, chunkSize?: number): RawMessageStreamEvent[];
18
- //# sourceMappingURL=anthropic-fixtures.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"anthropic-fixtures.d.ts","sourceRoot":"","sources":["../../../../../src/ai/providers/anthropic/testing/anthropic-fixtures.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,YAAY,EACZ,OAAO,EACP,qBAAqB,EACrB,qBAAqB,EACrB,UAAU,EACV,SAAS,EACT,aAAa,EACb,YAAY,EACZ,KAAK,EACN,MAAM,+CAA+C,CAAC;AAIvD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAEjD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,SAAuB,GAAG,YAAY,CAElG;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,SAAqB,GAAG,aAAa,CAE7F;AAED,wBAAgB,qBAAqB,CAAC,IAAI,SAAqB,GAAG,qBAAqB,CAEtF;AAED,wBAAgB,YAAY,CAAC,KAAK,GAAE,OAAO,CAAC,KAAK,CAAM,GAAG,KAAK,CAa9D;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;CACxB;AAED,yGAAyG;AACzG,wBAAgB,cAAc,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAkBnE;AAUD,gGAAgG;AAChG,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,SAAI,GAAG,qBAAqB,EAAE,CAuDxF"}
@@ -1,120 +0,0 @@
1
- "use strict";
2
- // Builders for Anthropic Messages API objects in tests (issue #446). Not
3
- // imported by production code.
4
- //
5
- // `messageFixture` builds a complete `Message`; `streamEventsFor` turns one
6
- // into the exact event sequence the Messages API streams for it
7
- // (`message_start`, per block `content_block_start` / `_delta`s /
8
- // `_stop`, `message_delta`, `message_stop`), so a streamed and a
9
- // non-streamed call can be driven from the same fixture.
10
- Object.defineProperty(exports, "__esModule", { value: true });
11
- exports.textBlock = textBlock;
12
- exports.toolUseBlock = toolUseBlock;
13
- exports.thinkingBlock = thinkingBlock;
14
- exports.redactedThinkingBlock = redactedThinkingBlock;
15
- exports.usageFixture = usageFixture;
16
- exports.messageFixture = messageFixture;
17
- exports.streamEventsFor = streamEventsFor;
18
- let counter = 0;
19
- function textBlock(text) {
20
- return { type: 'text', text, citations: null };
21
- }
22
- function toolUseBlock(name, input, id = `toolu_${++counter}`) {
23
- return { type: 'tool_use', id, name, input, caller: { type: 'direct' } };
24
- }
25
- function thinkingBlock(thinking, signature = `sig_${++counter}`) {
26
- return { type: 'thinking', thinking, signature };
27
- }
28
- function redactedThinkingBlock(data = `enc_${++counter}`) {
29
- return { type: 'redacted_thinking', data };
30
- }
31
- function usageFixture(patch = {}) {
32
- return {
33
- cache_creation: null,
34
- cache_creation_input_tokens: null,
35
- cache_read_input_tokens: null,
36
- inference_geo: null,
37
- input_tokens: 12,
38
- output_tokens: 7,
39
- output_tokens_details: null,
40
- server_tool_use: null,
41
- service_tier: 'standard',
42
- ...patch,
43
- };
44
- }
45
- /** A complete `Message`. `stop_reason` defaults to `tool_use` when a tool is called, else `end_turn`. */
46
- function messageFixture(opts) {
47
- return {
48
- id: opts.id ?? `msg_${++counter}`,
49
- type: 'message',
50
- role: 'assistant',
51
- model: opts.model ?? 'claude-sonnet-4-5',
52
- content: opts.content,
53
- container: null,
54
- stop_details: null,
55
- stop_reason: opts.stopReason !== undefined
56
- ? opts.stopReason
57
- : opts.content.some((block) => block.type === 'tool_use')
58
- ? 'tool_use'
59
- : 'end_turn',
60
- stop_sequence: null,
61
- usage: usageFixture(opts.usage),
62
- };
63
- }
64
- function chunks(text, size) {
65
- const out = [];
66
- for (let i = 0; i < text.length; i += size)
67
- out.push(text.slice(i, i + size));
68
- return out;
69
- }
70
- /** The Messages API event sequence that streams `message`, deltas of `chunkSize` characters. */
71
- function streamEventsFor(message, chunkSize = 5) {
72
- const events = [
73
- {
74
- type: 'message_start',
75
- message: { ...message, content: [], stop_reason: null, usage: { ...message.usage, output_tokens: 1 } },
76
- },
77
- ];
78
- message.content.forEach((block, index) => {
79
- switch (block.type) {
80
- case 'text':
81
- events.push({ type: 'content_block_start', index, content_block: { ...block, text: '' } });
82
- for (const text of chunks(block.text, chunkSize)) {
83
- events.push({ type: 'content_block_delta', index, delta: { type: 'text_delta', text } });
84
- }
85
- break;
86
- case 'thinking':
87
- events.push({ type: 'content_block_start', index, content_block: { ...block, thinking: '', signature: '' } });
88
- for (const thinking of chunks(block.thinking, chunkSize)) {
89
- events.push({ type: 'content_block_delta', index, delta: { type: 'thinking_delta', thinking } });
90
- }
91
- events.push({ type: 'content_block_delta', index, delta: { type: 'signature_delta', signature: block.signature } });
92
- break;
93
- case 'tool_use':
94
- events.push({ type: 'content_block_start', index, content_block: { ...block, input: {} } });
95
- for (const partial_json of chunks(JSON.stringify(block.input), chunkSize)) {
96
- events.push({ type: 'content_block_delta', index, delta: { type: 'input_json_delta', partial_json } });
97
- }
98
- break;
99
- default:
100
- events.push({ type: 'content_block_start', index, content_block: block });
101
- break;
102
- }
103
- events.push({ type: 'content_block_stop', index });
104
- });
105
- events.push({
106
- type: 'message_delta',
107
- delta: { stop_reason: message.stop_reason, stop_sequence: null, stop_details: null, container: null },
108
- usage: {
109
- output_tokens: message.usage.output_tokens,
110
- input_tokens: null,
111
- cache_creation_input_tokens: null,
112
- cache_read_input_tokens: null,
113
- output_tokens_details: message.usage.output_tokens_details,
114
- server_tool_use: null,
115
- },
116
- });
117
- events.push({ type: 'message_stop' });
118
- return events;
119
- }
120
- //# sourceMappingURL=anthropic-fixtures.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"anthropic-fixtures.js","sourceRoot":"","sources":["../../../../../src/ai/providers/anthropic/testing/anthropic-fixtures.ts"],"names":[],"mappings":"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"}