@ai-sdk/openai 3.0.13 → 3.0.15

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 (118) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/index.d.mts +1 -1
  3. package/dist/index.d.ts +1 -1
  4. package/dist/index.js +1 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.mjs +1 -1
  7. package/dist/index.mjs.map +1 -1
  8. package/dist/internal/index.d.mts +1 -1
  9. package/dist/internal/index.d.ts +1 -1
  10. package/dist/internal/index.js.map +1 -1
  11. package/dist/internal/index.mjs.map +1 -1
  12. package/package.json +5 -4
  13. package/src/chat/__fixtures__/azure-model-router.1.chunks.txt +8 -0
  14. package/src/chat/__snapshots__/openai-chat-language-model.test.ts.snap +88 -0
  15. package/src/chat/convert-openai-chat-usage.ts +57 -0
  16. package/src/chat/convert-to-openai-chat-messages.test.ts +516 -0
  17. package/src/chat/convert-to-openai-chat-messages.ts +225 -0
  18. package/src/chat/get-response-metadata.ts +15 -0
  19. package/src/chat/map-openai-finish-reason.ts +19 -0
  20. package/src/chat/openai-chat-api.ts +198 -0
  21. package/src/chat/openai-chat-language-model.test.ts +3496 -0
  22. package/src/chat/openai-chat-language-model.ts +700 -0
  23. package/src/chat/openai-chat-options.ts +186 -0
  24. package/src/chat/openai-chat-prepare-tools.test.ts +322 -0
  25. package/src/chat/openai-chat-prepare-tools.ts +84 -0
  26. package/src/chat/openai-chat-prompt.ts +70 -0
  27. package/src/completion/convert-openai-completion-usage.ts +46 -0
  28. package/src/completion/convert-to-openai-completion-prompt.ts +93 -0
  29. package/src/completion/get-response-metadata.ts +15 -0
  30. package/src/completion/map-openai-finish-reason.ts +19 -0
  31. package/src/completion/openai-completion-api.ts +81 -0
  32. package/src/completion/openai-completion-language-model.test.ts +752 -0
  33. package/src/completion/openai-completion-language-model.ts +336 -0
  34. package/src/completion/openai-completion-options.ts +58 -0
  35. package/src/embedding/__snapshots__/openai-embedding-model.test.ts.snap +43 -0
  36. package/src/embedding/openai-embedding-api.ts +13 -0
  37. package/src/embedding/openai-embedding-model.test.ts +146 -0
  38. package/src/embedding/openai-embedding-model.ts +95 -0
  39. package/src/embedding/openai-embedding-options.ts +30 -0
  40. package/src/image/openai-image-api.ts +35 -0
  41. package/src/image/openai-image-model.test.ts +722 -0
  42. package/src/image/openai-image-model.ts +305 -0
  43. package/src/image/openai-image-options.ts +28 -0
  44. package/src/index.ts +9 -0
  45. package/src/internal/index.ts +19 -0
  46. package/src/openai-config.ts +18 -0
  47. package/src/openai-error.test.ts +34 -0
  48. package/src/openai-error.ts +22 -0
  49. package/src/openai-language-model-capabilities.test.ts +93 -0
  50. package/src/openai-language-model-capabilities.ts +54 -0
  51. package/src/openai-provider.test.ts +98 -0
  52. package/src/openai-provider.ts +270 -0
  53. package/src/openai-tools.ts +114 -0
  54. package/src/responses/__fixtures__/openai-apply-patch-tool-delete.1.chunks.txt +5 -0
  55. package/src/responses/__fixtures__/openai-apply-patch-tool.1.chunks.txt +38 -0
  56. package/src/responses/__fixtures__/openai-apply-patch-tool.1.json +69 -0
  57. package/src/responses/__fixtures__/openai-code-interpreter-tool.1.chunks.txt +393 -0
  58. package/src/responses/__fixtures__/openai-code-interpreter-tool.1.json +137 -0
  59. package/src/responses/__fixtures__/openai-error.1.chunks.txt +4 -0
  60. package/src/responses/__fixtures__/openai-error.1.json +8 -0
  61. package/src/responses/__fixtures__/openai-file-search-tool.1.chunks.txt +94 -0
  62. package/src/responses/__fixtures__/openai-file-search-tool.1.json +89 -0
  63. package/src/responses/__fixtures__/openai-file-search-tool.2.chunks.txt +93 -0
  64. package/src/responses/__fixtures__/openai-file-search-tool.2.json +112 -0
  65. package/src/responses/__fixtures__/openai-image-generation-tool.1.chunks.txt +16 -0
  66. package/src/responses/__fixtures__/openai-image-generation-tool.1.json +96 -0
  67. package/src/responses/__fixtures__/openai-local-shell-tool.1.chunks.txt +7 -0
  68. package/src/responses/__fixtures__/openai-local-shell-tool.1.json +70 -0
  69. package/src/responses/__fixtures__/openai-mcp-tool-approval.1.chunks.txt +11 -0
  70. package/src/responses/__fixtures__/openai-mcp-tool-approval.1.json +169 -0
  71. package/src/responses/__fixtures__/openai-mcp-tool-approval.2.chunks.txt +123 -0
  72. package/src/responses/__fixtures__/openai-mcp-tool-approval.2.json +176 -0
  73. package/src/responses/__fixtures__/openai-mcp-tool-approval.3.chunks.txt +11 -0
  74. package/src/responses/__fixtures__/openai-mcp-tool-approval.3.json +169 -0
  75. package/src/responses/__fixtures__/openai-mcp-tool-approval.4.chunks.txt +84 -0
  76. package/src/responses/__fixtures__/openai-mcp-tool-approval.4.json +182 -0
  77. package/src/responses/__fixtures__/openai-mcp-tool.1.chunks.txt +373 -0
  78. package/src/responses/__fixtures__/openai-mcp-tool.1.json +159 -0
  79. package/src/responses/__fixtures__/openai-reasoning-encrypted-content.1.chunks.txt +110 -0
  80. package/src/responses/__fixtures__/openai-reasoning-encrypted-content.1.json +117 -0
  81. package/src/responses/__fixtures__/openai-shell-tool.1.chunks.txt +182 -0
  82. package/src/responses/__fixtures__/openai-shell-tool.1.json +73 -0
  83. package/src/responses/__fixtures__/openai-web-search-tool.1.chunks.txt +185 -0
  84. package/src/responses/__fixtures__/openai-web-search-tool.1.json +266 -0
  85. package/src/responses/__snapshots__/openai-responses-language-model.test.ts.snap +10955 -0
  86. package/src/responses/convert-openai-responses-usage.ts +53 -0
  87. package/src/responses/convert-to-openai-responses-input.test.ts +2976 -0
  88. package/src/responses/convert-to-openai-responses-input.ts +578 -0
  89. package/src/responses/map-openai-responses-finish-reason.ts +22 -0
  90. package/src/responses/openai-responses-api.test.ts +89 -0
  91. package/src/responses/openai-responses-api.ts +1086 -0
  92. package/src/responses/openai-responses-language-model.test.ts +6927 -0
  93. package/src/responses/openai-responses-language-model.ts +1932 -0
  94. package/src/responses/openai-responses-options.ts +312 -0
  95. package/src/responses/openai-responses-prepare-tools.test.ts +924 -0
  96. package/src/responses/openai-responses-prepare-tools.ts +264 -0
  97. package/src/responses/openai-responses-provider-metadata.ts +39 -0
  98. package/src/speech/openai-speech-api.ts +38 -0
  99. package/src/speech/openai-speech-model.test.ts +202 -0
  100. package/src/speech/openai-speech-model.ts +137 -0
  101. package/src/speech/openai-speech-options.ts +22 -0
  102. package/src/tool/apply-patch.ts +141 -0
  103. package/src/tool/code-interpreter.ts +104 -0
  104. package/src/tool/file-search.ts +145 -0
  105. package/src/tool/image-generation.ts +126 -0
  106. package/src/tool/local-shell.test-d.ts +20 -0
  107. package/src/tool/local-shell.ts +72 -0
  108. package/src/tool/mcp.ts +125 -0
  109. package/src/tool/shell.ts +85 -0
  110. package/src/tool/web-search-preview.ts +139 -0
  111. package/src/tool/web-search.test-d.ts +13 -0
  112. package/src/tool/web-search.ts +179 -0
  113. package/src/transcription/openai-transcription-api.ts +37 -0
  114. package/src/transcription/openai-transcription-model.test.ts +507 -0
  115. package/src/transcription/openai-transcription-model.ts +232 -0
  116. package/src/transcription/openai-transcription-options.ts +50 -0
  117. package/src/transcription/transcription-test.mp3 +0 -0
  118. package/src/version.ts +6 -0
@@ -0,0 +1,112 @@
1
+ {
2
+ "id": "resp_0365d26c32c64c650068cabb02fea4819495862c2bc58440ad",
3
+ "object": "response",
4
+ "created_at": 1758116611,
5
+ "status": "completed",
6
+ "background": false,
7
+ "error": null,
8
+ "incomplete_details": null,
9
+ "instructions": null,
10
+ "max_output_tokens": null,
11
+ "max_tool_calls": null,
12
+ "model": "gpt-5-mini-2025-08-07",
13
+ "output": [
14
+ {
15
+ "id": "rs_0365d26c32c64c650068cabb03bcc48194bfbd973152bca8f6",
16
+ "type": "reasoning",
17
+ "summary": []
18
+ },
19
+ {
20
+ "id": "fs_0365d26c32c64c650068cabb04aa388194b53c59de50a3951e",
21
+ "type": "file_search_call",
22
+ "status": "completed",
23
+ "queries": [
24
+ "What is an embedding model according to this document?",
25
+ "What is an embedding model in the document?",
26
+ "definition of embedding model",
27
+ "embedding model explanation 'embedding model'"
28
+ ],
29
+ "results": [
30
+ {
31
+ "attributes": {},
32
+ "file_id": "file-Ebzhf8H4DPGPr9pUhr7n7v",
33
+ "filename": "ai.pdf",
34
+ "score": 0.9311,
35
+ "text": "AI 1\n\nAI\nGenerative artificial intelligence refers to models that predict and generate \nvarious types of outputs (such as text, images, or audio) based on whatʼs \nstatistically likely, pulling from patterns theyʼve learned from their training data. \nFor example:\n\nGiven a photo, a generative model can generate a caption.\n\nGiven an audio file, a generative model can generate a transcription.\n\nGiven a text description, a generative model can generate an image.\n\nA large language model LLM is a subset of generative models focused \nprimarily on text. An LLM takes a sequence of words as input and aims to \npredict the most likely sequence to follow. It assigns probabilities to potential \nnext sequences and then selects one. The model continues to generate \nsequences until it meets a specified stopping criterion.\n\nLLMs learn by training on massive collections of written text, which means they \nwill be better suited to some use cases than others. For example, a model \ntrained on GitHub data would understand the probabilities of sequences in \nsource code particularly well.\n\nHowever, it's crucial to understand LLMs' limitations. When asked about less \nknown or absent information, like the birthday of a personal relative, LLMs \nmight \"hallucinate\" or make up information. It's essential to consider how well-\nrepresented the information you need is in the model.\n\nAn embedding model is used to convert complex data (like words or images) \ninto a dense vector (a list of numbers) representation, known as an embedding. \nUnlike generative models, embedding models do not generate new text or data. \nInstead, they provide representations of semantic and synactic relationships \nbetween entities that can be used as input for other models or other natural \nlanguage processing tasks.\n\nIn the next section, you will learn about the difference between models \nproviders and models, and which ones are available in the AI SDK."
36
+ }
37
+ ]
38
+ },
39
+ {
40
+ "id": "rs_0365d26c32c64c650068cabb061740819491324d349d0f07ca",
41
+ "type": "reasoning",
42
+ "summary": []
43
+ },
44
+ {
45
+ "id": "msg_0365d26c32c64c650068cabb0e66b081949f66f61dacef39f3",
46
+ "type": "message",
47
+ "status": "completed",
48
+ "content": [
49
+ {
50
+ "type": "output_text",
51
+ "annotations": [
52
+ {
53
+ "type": "file_citation",
54
+ "file_id": "file-Ebzhf8H4DPGPr9pUhr7n7v",
55
+ "filename": "ai.pdf",
56
+ "index": 350
57
+ }
58
+ ],
59
+ "logprobs": [],
60
+ "text": "According to the document, an embedding model converts complex data (like words or images) into a dense vector — a list of numbers — called an embedding. It does not generate new text or data; instead it encodes semantic and syntactic relationships between entities so those vector representations can be used as inputs for other models or NLP tasks ."
61
+ }
62
+ ],
63
+ "role": "assistant"
64
+ }
65
+ ],
66
+ "parallel_tool_calls": true,
67
+ "previous_response_id": null,
68
+ "prompt_cache_key": null,
69
+ "reasoning": {
70
+ "effort": "medium",
71
+ "summary": null
72
+ },
73
+ "safety_identifier": null,
74
+ "service_tier": "default",
75
+ "store": true,
76
+ "temperature": 1,
77
+ "text": {
78
+ "format": {
79
+ "type": "text"
80
+ },
81
+ "verbosity": "medium"
82
+ },
83
+ "tool_choice": "auto",
84
+ "tools": [
85
+ {
86
+ "type": "file_search",
87
+ "filters": null,
88
+ "max_num_results": 20,
89
+ "ranking_options": {
90
+ "ranker": "auto",
91
+ "score_threshold": 0
92
+ },
93
+ "vector_store_ids": ["vs_68caad8bd5d88191ab766cf043d89a18"]
94
+ }
95
+ ],
96
+ "top_logprobs": 0,
97
+ "top_p": 1,
98
+ "truncation": "disabled",
99
+ "usage": {
100
+ "input_tokens": 3678,
101
+ "input_tokens_details": {
102
+ "cached_tokens": 2304
103
+ },
104
+ "output_tokens": 536,
105
+ "output_tokens_details": {
106
+ "reasoning_tokens": 448
107
+ },
108
+ "total_tokens": 4214
109
+ },
110
+ "user": null,
111
+ "metadata": {}
112
+ }
@@ -0,0 +1,16 @@
1
+ {"type":"response.created","sequence_number":0,"response":{"id":"resp_0df93c0bb83a72f20068c979db26ac819e8b5a444fad3f0d7f","object":"response","created_at":1758034395,"status":"in_progress","background":false,"error":null,"incomplete_details":null,"instructions":null,"max_output_tokens":null,"max_tool_calls":null,"model":"gpt-5-2025-08-07","output":[],"parallel_tool_calls":true,"previous_response_id":null,"prompt_cache_key":null,"reasoning":{"effort":"medium","summary":null},"safety_identifier":null,"service_tier":"auto","store":true,"temperature":1,"text":{"format":{"type":"text"},"verbosity":"medium"},"tool_choice":"auto","tools":[{"type":"image_generation","background":"auto","moderation":"auto","n":1,"output_compression":100,"output_format":"webp","quality":"low","size":"auto"}],"top_logprobs":0,"top_p":1,"truncation":"disabled","usage":null,"user":null,"metadata":{}}}
2
+ {"type":"response.in_progress","sequence_number":1,"response":{"id":"resp_0df93c0bb83a72f20068c979db26ac819e8b5a444fad3f0d7f","object":"response","created_at":1758034395,"status":"in_progress","background":false,"error":null,"incomplete_details":null,"instructions":null,"max_output_tokens":null,"max_tool_calls":null,"model":"gpt-5-2025-08-07","output":[],"parallel_tool_calls":true,"previous_response_id":null,"prompt_cache_key":null,"reasoning":{"effort":"medium","summary":null},"safety_identifier":null,"service_tier":"auto","store":true,"temperature":1,"text":{"format":{"type":"text"},"verbosity":"medium"},"tool_choice":"auto","tools":[{"type":"image_generation","background":"auto","moderation":"auto","n":1,"output_compression":100,"output_format":"webp","quality":"low","size":"auto"}],"top_logprobs":0,"top_p":1,"truncation":"disabled","usage":null,"user":null,"metadata":{}}}
3
+ {"type":"response.output_item.added","sequence_number":2,"output_index":0,"item":{"id":"rs_0df93c0bb83a72f20068c979db90b4819e94cedbfda2d49af6","type":"reasoning","summary":[]}}
4
+ {"type":"response.output_item.done","sequence_number":3,"output_index":0,"item":{"id":"rs_0df93c0bb83a72f20068c979db90b4819e94cedbfda2d49af6","type":"reasoning","summary":[]}}
5
+ {"type":"response.output_item.added","sequence_number":4,"output_index":1,"item":{"id":"ig_0df93c0bb83a72f20068c979f589c0819e9f0fc2d1a27aa1b8","type":"image_generation_call","status":"in_progress"}}
6
+ {"type":"response.image_generation_call.in_progress","sequence_number":5,"output_index":1,"item_id":"ig_0df93c0bb83a72f20068c979f589c0819e9f0fc2d1a27aa1b8"}
7
+ {"type":"response.image_generation_call.generating","sequence_number":6,"output_index":1,"item_id":"ig_0df93c0bb83a72f20068c979f589c0819e9f0fc2d1a27aa1b8"}
8
+ {"type":"response.image_generation_call.partial_image","sequence_number":7,"output_index":1,"item_id":"ig_0df93c0bb83a72f20068c979f589c0819e9f0fc2d1a27aa1b8","partial_image_index":0,"partial_image_b64":"UklGRuIWGQBXRUJQVlA4TKAwGAAv/8X/ABlJbiNJkgRDwkID67D/P9gjl9nuEf2fgPyZzj1Jyu97SlIDX5iPbDv2F3U/+UU+JIlr+wVtEwKO7xiJ7dh26zu3NgZIasDGMcSYOIltx8MpJGFWJAaDE8g4AzhJzCAkCedAeJ17KsRCTxd5r4c1SfLsHwzwZ/2/f67rukb7R1yzavfWH3mdtqpvK4HU00+v2a1qb/...AAAPZYQFuWuM6Be+taQrxy8eMnvFntuAhnHLJbzoq1L9GGMdWs/9hArxYpBl4GS+zJ3eoEsBEkmxChF9k+m5HNgnA2uzI=","size":"1536x1024","quality":"low","background":"opaque","output_format":"webp"}
9
+ {"type":"response.image_generation_call.completed","sequence_number":8,"output_index":1,"item_id":"ig_0df93c0bb83a72f20068c979f589c0819e9f0fc2d1a27aa1b8"}
10
+ {"type":"response.output_item.done","sequence_number":9,"output_index":1,"item":{"id":"ig_0df93c0bb83a72f20068c979f589c0819e9f0fc2d1a27aa1b8","type":"image_generation_call","status":"completed","background":"opaque","output_format":"webp","quality":"low","result":"UklGRuIWGQBXRUJQVlA4TKAwGAAv/8X/ABlJbiNJkgRDwkID67D/P9gjl9nuEf2fgPyZzj1Jyu97SlIDX5iPbDv2F3U/+UU+JIlr+wVtEwKO7xiJ7dh26zu3NgZIasDGMcSYOIltx8MpJGFWJAaDE8g4AzhJzCAkCedAeJ17KsRCTxd5r4c1SfLsHwzwZ/2/f67rukb7R1yzavfWH3mdtqpvK4HU00+v2a1qb/...AAAPZYQFuWuM6Be+taQrxy8eMnvFntuAhnHLJbzoq1L9GGMdWs/9hArxYpBl4GS+zJ3eoEsBEkmxChF9k+m5HNgnA2uzI=","revised_prompt":"Create a high-resolution, hyperrealistic illustration of an echidna swimming across the Mozambique Channel. Composition: wide, cinematic aerial perspective over the Indian Ocean with Mozambique’s coastline faintly visible to the left and Madagascar’s coastline faintly visible to the right, both softened by atmospheric haze and no text labels. In the midground, feature a short-beaked echidna partially submerged: spines slick and glistening with seawater, small snout just above the surface, front limbs paddling and creating delicate ripples and a subtle V-shaped wake. Water: deep cobalt transitioning to turquoise, with gentle swells, current lines, and sparkling sun reflections. Lighting: warm golden-hour late afternoon, long highlights on wave crests and soft shadows. Add a few distant seabirds and soft cumulus clouds for scale and atmosphere. Style: richly detailed, natural colors, crisp yet painterly rendering, shallow depth of field emphasizing the echidna, 16:9 aspect ratio, 4K resolution.","size":"1536x1024"}}
11
+ {"type":"response.output_item.added","sequence_number":10,"output_index":2,"item":{"id":"msg_0df93c0bb83a72f20068c97a0b36f4819ea5906451007f95e2","type":"message","status":"in_progress","content":[],"role":"assistant"}}
12
+ {"type":"response.content_part.added","sequence_number":11,"item_id":"msg_0df93c0bb83a72f20068c97a0b36f4819ea5906451007f95e2","output_index":2,"content_index":0,"part":{"type":"output_text","annotations":[],"logprobs":[],"text":""}}
13
+ {"type":"response.output_text.done","sequence_number":12,"item_id":"msg_0df93c0bb83a72f20068c97a0b36f4819ea5906451007f95e2","output_index":2,"content_index":0,"text":"","logprobs":[]}
14
+ {"type":"response.content_part.done","sequence_number":13,"item_id":"msg_0df93c0bb83a72f20068c97a0b36f4819ea5906451007f95e2","output_index":2,"content_index":0,"part":{"type":"output_text","annotations":[],"logprobs":[],"text":""}}
15
+ {"type":"response.output_item.done","sequence_number":14,"output_index":2,"item":{"id":"msg_0df93c0bb83a72f20068c97a0b36f4819ea5906451007f95e2","type":"message","status":"completed","content":[{"type":"output_text","annotations":[],"logprobs":[],"text":""}],"role":"assistant"}}
16
+ {"type":"response.completed","sequence_number":15,"response":{"id":"resp_0df93c0bb83a72f20068c979db26ac819e8b5a444fad3f0d7f","object":"response","created_at":1758034395,"status":"completed","background":false,"error":null,"incomplete_details":null,"instructions":null,"max_output_tokens":null,"max_tool_calls":null,"model":"gpt-5-2025-08-07","output":[{"id":"rs_0df93c0bb83a72f20068c979db90b4819e94cedbfda2d49af6","type":"reasoning","summary":[]},{"id":"ig_0df93c0bb83a72f20068c979f589c0819e9f0fc2d1a27aa1b8","type":"image_generation_call","status":"completed","background":"opaque","output_format":"webp","quality":"low","result":"UklGRuIWGQBXRUJQVlA4TKAwGAAv/8X/ABlJbiNJkgRDwkID67D/P9gjl9nuEf2fgPyZzj1Jyu97SlIDX5iPbDv2F3U/+UU+JIlr+wVtEwKO7xiJ7dh26zu3NgZIasDGMcSYOIltx8MpJGFWJAaDE8g4AzhJzCAkCedAeJ17KsRCTxd5r4c1SfLsHwzwZ/2/f67rukb7R1yzavfWH3mdtqpvK4HU00+v2a1qb/...AAAPZYQFuWuM6Be+taQrxy8eMnvFntuAhnHLJbzoq1L9GGMdWs/9hArxYpBl4GS+zJ3eoEsBEkmxChF9k+m5HNgnA2uzI=","revised_prompt":"Create a high-resolution, hyperrealistic illustration of an echidna swimming across the Mozambique Channel. Composition: wide, cinematic aerial perspective over the Indian Ocean with Mozambique’s coastline faintly visible to the left and Madagascar’s coastline faintly visible to the right, both softened by atmospheric haze and no text labels. In the midground, feature a short-beaked echidna partially submerged: spines slick and glistening with seawater, small snout just above the surface, front limbs paddling and creating delicate ripples and a subtle V-shaped wake. Water: deep cobalt transitioning to turquoise, with gentle swells, current lines, and sparkling sun reflections. Lighting: warm golden-hour late afternoon, long highlights on wave crests and soft shadows. Add a few distant seabirds and soft cumulus clouds for scale and atmosphere. Style: richly detailed, natural colors, crisp yet painterly rendering, shallow depth of field emphasizing the echidna, 16:9 aspect ratio, 4K resolution.","size":"1536x1024"},{"id":"msg_0df93c0bb83a72f20068c97a0b36f4819ea5906451007f95e2","type":"message","status":"completed","content":[{"type":"output_text","annotations":[],"logprobs":[],"text":""}],"role":"assistant"}],"parallel_tool_calls":true,"previous_response_id":null,"prompt_cache_key":null,"reasoning":{"effort":"medium","summary":null},"safety_identifier":null,"service_tier":"default","store":true,"temperature":1,"text":{"format":{"type":"text"},"verbosity":"medium"},"tool_choice":"auto","tools":[{"type":"image_generation","background":"auto","moderation":"auto","n":1,"output_compression":100,"output_format":"webp","quality":"low","size":"auto"}],"top_logprobs":0,"top_p":1,"truncation":"disabled","usage":{"input_tokens":2941,"input_tokens_details":{"cached_tokens":1920},"output_tokens":1249,"output_tokens_details":{"reasoning_tokens":1024},"total_tokens":4190},"user":null,"metadata":{}}}
@@ -0,0 +1,96 @@
1
+ {
2
+ "id": "resp_0a33d15155cb126d0068c96c54970481958484dea31f07926d",
3
+ "object": "response",
4
+ "created_at": 1758030932,
5
+ "status": "completed",
6
+ "background": false,
7
+ "error": null,
8
+ "incomplete_details": null,
9
+ "instructions": null,
10
+ "max_output_tokens": null,
11
+ "max_tool_calls": null,
12
+ "model": "gpt-5-nano-2025-08-07",
13
+ "output": [
14
+ {
15
+ "id": "rs_0a33d15155cb126d0068c96c5527808195a933b468ccb5dfd9",
16
+ "type": "reasoning",
17
+ "summary": []
18
+ },
19
+ {
20
+ "id": "ig_0a33d15155cb126d0068c96c59bc14819599154c9988b82996",
21
+ "type": "image_generation_call",
22
+ "status": "completed",
23
+ "background": "opaque",
24
+ "output_format": "webp",
25
+ "quality": "low",
26
+ "result": "UklGRoitEQBXRUJQVlA4TEGzEAAv/8P/AM1AbNtGkITZhU4fH9J/wTOT+xIi+j8BuT4kABkCibNAZrlwIPyQ7W/bH5L2RHMzMBKgXmfZeYi9tLtrrQkZvN1yXHLLgG71gPkpDxmI/gc03YFulQR...AA9lhA0Y9rVdqQs/W4w/MOxeRW5+R1/UXmmNVi9yQ7x/vG0q2VRk01seZIuj5OmRYhD+yY82dZqMH1BCueTeOcNfGKxQ==",
27
+ "revised_prompt": "A cute fluffy cat sitting on a sunlit windowsill, warm sunlight, soft fur, expressive eyes, photorealistic style.",
28
+ "size": "1024x1024"
29
+ },
30
+ {
31
+ "id": "rs_0a33d15155cb126d0068c96c6c0ef48195bc73e30faf832ba3",
32
+ "type": "reasoning",
33
+ "summary": []
34
+ },
35
+ {
36
+ "id": "msg_0a33d15155cb126d0068c96c723ed88195b1405bc370bb8a65",
37
+ "type": "message",
38
+ "status": "completed",
39
+ "content": [
40
+ {
41
+ "type": "output_text",
42
+ "annotations": [],
43
+ "logprobs": [],
44
+ "text": ""
45
+ }
46
+ ],
47
+ "role": "assistant"
48
+ }
49
+ ],
50
+ "parallel_tool_calls": true,
51
+ "previous_response_id": null,
52
+ "prompt_cache_key": null,
53
+ "reasoning": {
54
+ "effort": "medium",
55
+ "summary": null
56
+ },
57
+ "safety_identifier": null,
58
+ "service_tier": "default",
59
+ "store": true,
60
+ "temperature": 1,
61
+ "text": {
62
+ "format": {
63
+ "type": "text"
64
+ },
65
+ "verbosity": "medium"
66
+ },
67
+ "tool_choice": "auto",
68
+ "tools": [
69
+ {
70
+ "type": "image_generation",
71
+ "background": "auto",
72
+ "moderation": "auto",
73
+ "n": 1,
74
+ "output_compression": 100,
75
+ "output_format": "webp",
76
+ "quality": "low",
77
+ "size": "1024x1024"
78
+ }
79
+ ],
80
+ "top_logprobs": 0,
81
+ "top_p": 1,
82
+ "truncation": "disabled",
83
+ "usage": {
84
+ "input_tokens": 3151,
85
+ "input_tokens_details": {
86
+ "cached_tokens": 0
87
+ },
88
+ "output_tokens": 1970,
89
+ "output_tokens_details": {
90
+ "reasoning_tokens": 1920
91
+ },
92
+ "total_tokens": 5121
93
+ },
94
+ "user": null,
95
+ "metadata": {}
96
+ }
@@ -0,0 +1,7 @@
1
+ {"type":"response.created","sequence_number":0,"response":{"id":"resp_68da7fd5d24481949fc2cf1cc60377050faf5df54b42d9a6","object":"response","created_at":1759150037,"status":"in_progress","background":false,"error":null,"incomplete_details":null,"instructions":null,"max_output_tokens":null,"max_tool_calls":null,"model":"gpt-5-codex","output":[],"parallel_tool_calls":true,"previous_response_id":null,"prompt_cache_key":null,"reasoning":{"effort":"medium","summary":null},"safety_identifier":null,"service_tier":"auto","store":true,"temperature":1,"text":{"format":{"type":"text"},"verbosity":"medium"},"tool_choice":"auto","tools":[],"top_logprobs":0,"top_p":1,"truncation":"disabled","usage":null,"user":null,"metadata":{}}}
2
+ {"type":"response.in_progress","sequence_number":1,"response":{"id":"resp_68da7fd5d24481949fc2cf1cc60377050faf5df54b42d9a6","object":"response","created_at":1759150037,"status":"in_progress","background":false,"error":null,"incomplete_details":null,"instructions":null,"max_output_tokens":null,"max_tool_calls":null,"model":"gpt-5-codex","output":[],"parallel_tool_calls":true,"previous_response_id":null,"prompt_cache_key":null,"reasoning":{"effort":"medium","summary":null},"safety_identifier":null,"service_tier":"auto","store":true,"temperature":1,"text":{"format":{"type":"text"},"verbosity":"medium"},"tool_choice":"auto","tools":[],"top_logprobs":0,"top_p":1,"truncation":"disabled","usage":null,"user":null,"metadata":{}}}
3
+ {"type":"response.output_item.added","sequence_number":2,"output_index":0,"item":{"id":"rs_68da7fd65a3481948bbb35ff2c79c6c20faf5df54b42d9a6","type":"reasoning","summary":[]}}
4
+ {"type":"response.output_item.done","sequence_number":3,"output_index":0,"item":{"id":"rs_68da7fd65a3481948bbb35ff2c79c6c20faf5df54b42d9a6","type":"reasoning","summary":[]}}
5
+ {"type":"response.output_item.added","sequence_number":4,"output_index":1,"item":{"id":"lsh_68da7fd99b3c8194bd624b18c0c0851b0faf5df54b42d9a6","type":"local_shell_call","status":"in_progress","action":{"type":"exec","command":[],"env":{}},"call_id":"call_h3nm8hUG0KO9tVNuRACkL1ri"}}
6
+ {"type":"response.output_item.done","sequence_number":5,"output_index":1,"item":{"id":"lsh_68da7fd99b3c8194bd624b18c0c0851b0faf5df54b42d9a6","type":"local_shell_call","status":"completed","action":{"type":"exec","command":["ls","-a","~"],"env":{}},"call_id":"call_h3nm8hUG0KO9tVNuRACkL1ri"}}
7
+ {"type":"response.completed","sequence_number":6,"response":{"id":"resp_68da7fd5d24481949fc2cf1cc60377050faf5df54b42d9a6","object":"response","created_at":1759150037,"status":"completed","background":false,"error":null,"incomplete_details":null,"instructions":null,"max_output_tokens":null,"max_tool_calls":null,"model":"gpt-5-codex","output":[{"id":"rs_68da7fd65a3481948bbb35ff2c79c6c20faf5df54b42d9a6","type":"reasoning","summary":[]},{"id":"lsh_68da7fd99b3c8194bd624b18c0c0851b0faf5df54b42d9a6","type":"local_shell_call","status":"completed","action":{"type":"exec","command":["ls","-a","~"],"env":{}},"call_id":"call_h3nm8hUG0KO9tVNuRACkL1ri"}],"parallel_tool_calls":true,"previous_response_id":null,"prompt_cache_key":null,"reasoning":{"effort":"medium","summary":null},"safety_identifier":null,"service_tier":"default","store":true,"temperature":1,"text":{"format":{"type":"text"},"verbosity":"medium"},"tool_choice":"auto","tools":[],"top_logprobs":0,"top_p":1,"truncation":"disabled","usage":{"input_tokens":407,"input_tokens_details":{"cached_tokens":0},"output_tokens":151,"output_tokens_details":{"reasoning_tokens":128},"total_tokens":558},"user":null,"metadata":{}}}
@@ -0,0 +1,70 @@
1
+ {
2
+ "id": "resp_68da74aaae58819ca776fbd20244e8df0fdbc19a07110799",
3
+ "object": "response",
4
+ "created_at": 1759147178,
5
+ "status": "completed",
6
+ "background": false,
7
+ "billing": {
8
+ "payer": "developer"
9
+ },
10
+ "error": null,
11
+ "incomplete_details": null,
12
+ "instructions": null,
13
+ "max_output_tokens": null,
14
+ "max_tool_calls": null,
15
+ "model": "gpt-5-codex",
16
+ "output": [
17
+ {
18
+ "id": "rs_68da74ab2c48819cb435ff526bd1ba1d0fdbc19a07110799",
19
+ "type": "reasoning",
20
+ "summary": []
21
+ },
22
+ {
23
+ "id": "lsh_68da74abdaec819c9aa19c124308f4600fdbc19a07110799",
24
+ "type": "local_shell_call",
25
+ "status": "completed",
26
+ "action": {
27
+ "type": "exec",
28
+ "command": ["ls"],
29
+ "env": {},
30
+ "working_directory": "/root"
31
+ },
32
+ "call_id": "call_XWgeTylovOiS8xLNz2TONOgO"
33
+ }
34
+ ],
35
+ "parallel_tool_calls": true,
36
+ "previous_response_id": null,
37
+ "prompt_cache_key": null,
38
+ "reasoning": {
39
+ "effort": "medium",
40
+ "summary": null
41
+ },
42
+ "safety_identifier": null,
43
+ "service_tier": "default",
44
+ "store": true,
45
+ "temperature": 1.0,
46
+ "text": {
47
+ "format": {
48
+ "type": "text"
49
+ },
50
+ "verbosity": "medium"
51
+ },
52
+ "tool_choice": "auto",
53
+ "tools": [],
54
+ "top_logprobs": 0,
55
+ "top_p": 1.0,
56
+ "truncation": "disabled",
57
+ "usage": {
58
+ "input_tokens": 407,
59
+ "input_tokens_details": {
60
+ "cached_tokens": 0
61
+ },
62
+ "output_tokens": 24,
63
+ "output_tokens_details": {
64
+ "reasoning_tokens": 0
65
+ },
66
+ "total_tokens": 431
67
+ },
68
+ "user": null,
69
+ "metadata": {}
70
+ }
@@ -0,0 +1,11 @@
1
+ {"type":"response.created","sequence_number":0,"response":{"id":"resp_04a97b4fce127879006949a837a3a48195b37f26ae73f550c0","object":"response","created_at":1766434871,"status":"in_progress","background":false,"completed_at":null,"error":null,"incomplete_details":null,"instructions":null,"max_output_tokens":null,"max_tool_calls":null,"model":"gpt-5-mini-2025-08-07","output":[],"parallel_tool_calls":true,"previous_response_id":null,"prompt_cache_key":null,"prompt_cache_retention":null,"reasoning":{"effort":"medium","summary":null},"safety_identifier":null,"service_tier":"auto","store":true,"temperature":1,"text":{"format":{"type":"text"},"verbosity":"medium"},"tool_choice":"auto","tools":[{"type":"mcp","allowed_tools":null,"headers":null,"require_approval":"always","server_description":"Link shortener","server_label":"zip1","server_url":"https://zip1.io/mcp"}],"top_logprobs":0,"top_p":1,"truncation":"disabled","usage":null,"user":null,"metadata":{}}}
2
+ {"type":"response.in_progress","sequence_number":1,"response":{"id":"resp_04a97b4fce127879006949a837a3a48195b37f26ae73f550c0","object":"response","created_at":1766434871,"status":"in_progress","background":false,"completed_at":null,"error":null,"incomplete_details":null,"instructions":null,"max_output_tokens":null,"max_tool_calls":null,"model":"gpt-5-mini-2025-08-07","output":[],"parallel_tool_calls":true,"previous_response_id":null,"prompt_cache_key":null,"prompt_cache_retention":null,"reasoning":{"effort":"medium","summary":null},"safety_identifier":null,"service_tier":"auto","store":true,"temperature":1,"text":{"format":{"type":"text"},"verbosity":"medium"},"tool_choice":"auto","tools":[{"type":"mcp","allowed_tools":null,"headers":null,"require_approval":"always","server_description":"Link shortener","server_label":"zip1","server_url":"https://zip1.io/mcp"}],"top_logprobs":0,"top_p":1,"truncation":"disabled","usage":null,"user":null,"metadata":{}}}
3
+ {"type":"response.output_item.added","sequence_number":2,"output_index":0,"item":{"id":"mcpl_04a97b4fce127879006949a837ada08195abf62939840a3d5c","type":"mcp_list_tools","server_label":"zip1","tools":[]}}
4
+ {"type":"response.mcp_list_tools.in_progress","sequence_number":3,"output_index":0,"item_id":"mcpl_04a97b4fce127879006949a837ada08195abf62939840a3d5c"}
5
+ {"type":"response.mcp_list_tools.completed","sequence_number":4,"output_index":0,"item_id":"mcpl_04a97b4fce127879006949a837ada08195abf62939840a3d5c"}
6
+ {"type":"response.output_item.done","sequence_number":5,"output_index":0,"item":{"id":"mcpl_04a97b4fce127879006949a837ada08195abf62939840a3d5c","type":"mcp_list_tools","server_label":"zip1","tools":[{"annotations":{"read_only":false},"description":"Create a shortened URL using zip1.io with optional custom alias, password protection, and max clicks limit","input_schema":{"properties":{"alias":{"description":"Custom alias for the short URL (optional, alphanumeric and hyphens only)","type":"string"},"description":{"description":"Description for the short URL (optional, max 100 characters)","type":"string"},"max_clicks":{"description":"Maximum number of clicks allowed before the link expires (optional)","minimum":1,"type":"integer"},"password":{"description":"Password to protect the short URL (optional)","type":"string"},"url":{"description":"The long URL to shorten (must include http:// or https://)","type":"string"}},"required":["url"],"type":"object"},"name":"create_short_url"},{"annotations":{"read_only":false},"description":"Get detailed statistics and analytics for a shortened URL including click counts, countries, and recent activity","input_schema":{"properties":{"short_code":{"description":"The short code or custom alias of the URL to get stats for","type":"string"}},"required":["short_code"],"type":"object"},"name":"get_url_stats"},{"annotations":{"read_only":false},"description":"Check if a URL is valid and can be shortened by zip1.io","input_schema":{"properties":{"url":{"description":"The URL to validate","type":"string"}},"required":["url"],"type":"object"},"name":"validate_url"},{"annotations":{"read_only":false},"description":"Generate a random 6-character alphanumeric short code suggestion (the actual code will be generated when creating the URL)","input_schema":{"properties":{},"type":"object"},"name":"generate_short_code"}]}}
7
+ {"type":"response.output_item.added","sequence_number":6,"output_index":1,"item":{"id":"rs_04a97b4fce127879006949a83904c88195977de6cc3f06064a","type":"reasoning","summary":[]}}
8
+ {"type":"response.output_item.done","sequence_number":7,"output_index":1,"item":{"id":"rs_04a97b4fce127879006949a83904c88195977de6cc3f06064a","type":"reasoning","summary":[]}}
9
+ {"type":"response.output_item.added","sequence_number":8,"output_index":2,"item":{"id":"mcpr_04a97b4fce127879006949a83ac9308195a7f7b69ea82e91fe","type":"mcp_approval_request","arguments":"{\"alias\":\"\",\"description\":\"Shortened link for ai-sdk.dev\",\"max_clicks\":100,\"password\":\"\",\"url\":\"https://ai-sdk.dev/\"}","name":"create_short_url","server_label":"zip1"}}
10
+ {"type":"response.output_item.done","sequence_number":9,"output_index":2,"item":{"id":"mcpr_04a97b4fce127879006949a83ac9308195a7f7b69ea82e91fe","type":"mcp_approval_request","arguments":"{\"alias\":\"\",\"description\":\"Shortened link for ai-sdk.dev\",\"max_clicks\":100,\"password\":\"\",\"url\":\"https://ai-sdk.dev/\"}","name":"create_short_url","server_label":"zip1"}}
11
+ {"type":"response.completed","sequence_number":10,"response":{"id":"resp_04a97b4fce127879006949a837a3a48195b37f26ae73f550c0","object":"response","created_at":1766434871,"status":"completed","background":false,"completed_at":1766434874,"error":null,"incomplete_details":null,"instructions":null,"max_output_tokens":null,"max_tool_calls":null,"model":"gpt-5-mini-2025-08-07","output":[{"id":"mcpl_04a97b4fce127879006949a837ada08195abf62939840a3d5c","type":"mcp_list_tools","server_label":"zip1","tools":[{"annotations":{"read_only":false},"description":"Create a shortened URL using zip1.io with optional custom alias, password protection, and max clicks limit","input_schema":{"properties":{"alias":{"description":"Custom alias for the short URL (optional, alphanumeric and hyphens only)","type":"string"},"description":{"description":"Description for the short URL (optional, max 100 characters)","type":"string"},"max_clicks":{"description":"Maximum number of clicks allowed before the link expires (optional)","minimum":1,"type":"integer"},"password":{"description":"Password to protect the short URL (optional)","type":"string"},"url":{"description":"The long URL to shorten (must include http:// or https://)","type":"string"}},"required":["url"],"type":"object"},"name":"create_short_url"},{"annotations":{"read_only":false},"description":"Get detailed statistics and analytics for a shortened URL including click counts, countries, and recent activity","input_schema":{"properties":{"short_code":{"description":"The short code or custom alias of the URL to get stats for","type":"string"}},"required":["short_code"],"type":"object"},"name":"get_url_stats"},{"annotations":{"read_only":false},"description":"Check if a URL is valid and can be shortened by zip1.io","input_schema":{"properties":{"url":{"description":"The URL to validate","type":"string"}},"required":["url"],"type":"object"},"name":"validate_url"},{"annotations":{"read_only":false},"description":"Generate a random 6-character alphanumeric short code suggestion (the actual code will be generated when creating the URL)","input_schema":{"properties":{},"type":"object"},"name":"generate_short_code"}]},{"id":"rs_04a97b4fce127879006949a83904c88195977de6cc3f06064a","type":"reasoning","summary":[]},{"id":"mcpr_04a97b4fce127879006949a83ac9308195a7f7b69ea82e91fe","type":"mcp_approval_request","arguments":"{\"alias\":\"\",\"description\":\"Shortened link for ai-sdk.dev\",\"max_clicks\":100,\"password\":\"\",\"url\":\"https://ai-sdk.dev/\"}","name":"create_short_url","server_label":"zip1"}],"parallel_tool_calls":true,"previous_response_id":null,"prompt_cache_key":null,"prompt_cache_retention":null,"reasoning":{"effort":"medium","summary":null},"safety_identifier":null,"service_tier":"default","store":true,"temperature":1,"text":{"format":{"type":"text"},"verbosity":"medium"},"tool_choice":"auto","tools":[{"type":"mcp","allowed_tools":null,"headers":null,"require_approval":"always","server_description":"Link shortener","server_label":"zip1","server_url":"https://zip1.io/mcp"}],"top_logprobs":0,"top_p":1,"truncation":"disabled","usage":{"input_tokens":422,"input_tokens_details":{"cached_tokens":0},"output_tokens":48,"output_tokens_details":{"reasoning_tokens":0},"total_tokens":470},"user":null,"metadata":{}}}
@@ -0,0 +1,169 @@
1
+ {
2
+ "id": "resp_04f6b17429cf2b02006949a66d56088196a2d1b86e820556ce",
3
+ "object": "response",
4
+ "created_at": 1766434413,
5
+ "status": "completed",
6
+ "background": false,
7
+ "billing": {
8
+ "payer": "developer"
9
+ },
10
+ "completed_at": 1766434417,
11
+ "error": null,
12
+ "incomplete_details": null,
13
+ "instructions": null,
14
+ "max_output_tokens": null,
15
+ "max_tool_calls": null,
16
+ "model": "gpt-5-mini-2025-08-07",
17
+ "output": [
18
+ {
19
+ "id": "mcpl_04f6b17429cf2b02006949a66d64188196993ab2bed8e07268",
20
+ "type": "mcp_list_tools",
21
+ "server_label": "zip1",
22
+ "tools": [
23
+ {
24
+ "annotations": {
25
+ "read_only": false
26
+ },
27
+ "description": "Create a shortened URL using zip1.io with optional custom alias, password protection, and max clicks limit",
28
+ "input_schema": {
29
+ "properties": {
30
+ "alias": {
31
+ "description": "Custom alias for the short URL (optional, alphanumeric and hyphens only)",
32
+ "type": "string"
33
+ },
34
+ "description": {
35
+ "description": "Description for the short URL (optional, max 100 characters)",
36
+ "type": "string"
37
+ },
38
+ "max_clicks": {
39
+ "description": "Maximum number of clicks allowed before the link expires (optional)",
40
+ "minimum": 1,
41
+ "type": "integer"
42
+ },
43
+ "password": {
44
+ "description": "Password to protect the short URL (optional)",
45
+ "type": "string"
46
+ },
47
+ "url": {
48
+ "description": "The long URL to shorten (must include http:// or https://)",
49
+ "type": "string"
50
+ }
51
+ },
52
+ "required": [
53
+ "url"
54
+ ],
55
+ "type": "object"
56
+ },
57
+ "name": "create_short_url"
58
+ },
59
+ {
60
+ "annotations": {
61
+ "read_only": false
62
+ },
63
+ "description": "Get detailed statistics and analytics for a shortened URL including click counts, countries, and recent activity",
64
+ "input_schema": {
65
+ "properties": {
66
+ "short_code": {
67
+ "description": "The short code or custom alias of the URL to get stats for",
68
+ "type": "string"
69
+ }
70
+ },
71
+ "required": [
72
+ "short_code"
73
+ ],
74
+ "type": "object"
75
+ },
76
+ "name": "get_url_stats"
77
+ },
78
+ {
79
+ "annotations": {
80
+ "read_only": false
81
+ },
82
+ "description": "Check if a URL is valid and can be shortened by zip1.io",
83
+ "input_schema": {
84
+ "properties": {
85
+ "url": {
86
+ "description": "The URL to validate",
87
+ "type": "string"
88
+ }
89
+ },
90
+ "required": [
91
+ "url"
92
+ ],
93
+ "type": "object"
94
+ },
95
+ "name": "validate_url"
96
+ },
97
+ {
98
+ "annotations": {
99
+ "read_only": false
100
+ },
101
+ "description": "Generate a random 6-character alphanumeric short code suggestion (the actual code will be generated when creating the URL)",
102
+ "input_schema": {
103
+ "properties": {},
104
+ "type": "object"
105
+ },
106
+ "name": "generate_short_code"
107
+ }
108
+ ]
109
+ },
110
+ {
111
+ "id": "rs_04f6b17429cf2b02006949a66f4df88196a44362d8a21f9cea",
112
+ "type": "reasoning",
113
+ "summary": []
114
+ },
115
+ {
116
+ "id": "mcpr_04f6b17429cf2b02006949a6712b1081968b3c7a72dec695d8",
117
+ "type": "mcp_approval_request",
118
+ "arguments": "{\"alias\":\"\",\"description\":\"\",\"max_clicks\":100,\"password\":\"\",\"url\":\"https://ai-sdk.dev/\"}",
119
+ "name": "create_short_url",
120
+ "server_label": "zip1"
121
+ }
122
+ ],
123
+ "parallel_tool_calls": true,
124
+ "previous_response_id": null,
125
+ "prompt_cache_key": null,
126
+ "prompt_cache_retention": null,
127
+ "reasoning": {
128
+ "effort": "medium",
129
+ "summary": null
130
+ },
131
+ "safety_identifier": null,
132
+ "service_tier": "default",
133
+ "store": true,
134
+ "temperature": 1,
135
+ "text": {
136
+ "format": {
137
+ "type": "text"
138
+ },
139
+ "verbosity": "medium"
140
+ },
141
+ "tool_choice": "auto",
142
+ "tools": [
143
+ {
144
+ "type": "mcp",
145
+ "allowed_tools": null,
146
+ "headers": null,
147
+ "require_approval": "always",
148
+ "server_description": "Link shortener",
149
+ "server_label": "zip1",
150
+ "server_url": "https://zip1.io/mcp"
151
+ }
152
+ ],
153
+ "top_logprobs": 0,
154
+ "top_p": 1,
155
+ "truncation": "disabled",
156
+ "usage": {
157
+ "input_tokens": 422,
158
+ "input_tokens_details": {
159
+ "cached_tokens": 0
160
+ },
161
+ "output_tokens": 104,
162
+ "output_tokens_details": {
163
+ "reasoning_tokens": 64
164
+ },
165
+ "total_tokens": 526
166
+ },
167
+ "user": null,
168
+ "metadata": {}
169
+ }