@prismer/runtime 2.0.7 → 2.0.8

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 (207) hide show
  1. package/CHANGELOG.md +201 -0
  2. package/built-in-skills/agent-coordination/SKILL.md +235 -0
  3. package/built-in-skills/agent-meta/SKILL.md +52 -0
  4. package/built-in-skills/assets/SKILL.md +131 -0
  5. package/built-in-skills/canvas-design/LICENSE.txt +202 -0
  6. package/built-in-skills/canvas-design/SKILL.md +156 -0
  7. package/built-in-skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  8. package/built-in-skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  9. package/built-in-skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  10. package/built-in-skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
  11. package/built-in-skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  12. package/built-in-skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
  13. package/built-in-skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
  14. package/built-in-skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  15. package/built-in-skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  16. package/built-in-skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  17. package/built-in-skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  18. package/built-in-skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  19. package/built-in-skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  20. package/built-in-skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  21. package/built-in-skills/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
  22. package/built-in-skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
  23. package/built-in-skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
  24. package/built-in-skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
  25. package/built-in-skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
  26. package/built-in-skills/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
  27. package/built-in-skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
  28. package/built-in-skills/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
  29. package/built-in-skills/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
  30. package/built-in-skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  31. package/built-in-skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  32. package/built-in-skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  33. package/built-in-skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  34. package/built-in-skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  35. package/built-in-skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  36. package/built-in-skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  37. package/built-in-skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  38. package/built-in-skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  39. package/built-in-skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  40. package/built-in-skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  41. package/built-in-skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  42. package/built-in-skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  43. package/built-in-skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  44. package/built-in-skills/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
  45. package/built-in-skills/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
  46. package/built-in-skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  47. package/built-in-skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  48. package/built-in-skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  49. package/built-in-skills/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
  50. package/built-in-skills/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
  51. package/built-in-skills/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
  52. package/built-in-skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  53. package/built-in-skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  54. package/built-in-skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
  55. package/built-in-skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  56. package/built-in-skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
  57. package/built-in-skills/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
  58. package/built-in-skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
  59. package/built-in-skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
  60. package/built-in-skills/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
  61. package/built-in-skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
  62. package/built-in-skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  63. package/built-in-skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  64. package/built-in-skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
  65. package/built-in-skills/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
  66. package/built-in-skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
  67. package/built-in-skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  68. package/built-in-skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
  69. package/built-in-skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
  70. package/built-in-skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  71. package/built-in-skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  72. package/built-in-skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
  73. package/built-in-skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  74. package/built-in-skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
  75. package/built-in-skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  76. package/built-in-skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  77. package/built-in-skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
  78. package/built-in-skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
  79. package/built-in-skills/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
  80. package/built-in-skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
  81. package/built-in-skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
  82. package/built-in-skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  83. package/built-in-skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
  84. package/built-in-skills/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
  85. package/built-in-skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
  86. package/built-in-skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
  87. package/built-in-skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  88. package/built-in-skills/claim-agent-ownership/SKILL.md +254 -0
  89. package/built-in-skills/claude-api/LICENSE.txt +202 -0
  90. package/built-in-skills/claude-api/SKILL.md +324 -0
  91. package/built-in-skills/claude-api/csharp/claude-api.md +402 -0
  92. package/built-in-skills/claude-api/curl/examples.md +216 -0
  93. package/built-in-skills/claude-api/curl/managed-agents.md +336 -0
  94. package/built-in-skills/claude-api/go/claude-api.md +421 -0
  95. package/built-in-skills/claude-api/go/managed-agents/README.md +561 -0
  96. package/built-in-skills/claude-api/java/claude-api.md +432 -0
  97. package/built-in-skills/claude-api/java/managed-agents/README.md +442 -0
  98. package/built-in-skills/claude-api/php/claude-api.md +375 -0
  99. package/built-in-skills/claude-api/php/managed-agents/README.md +435 -0
  100. package/built-in-skills/claude-api/python/claude-api/README.md +420 -0
  101. package/built-in-skills/claude-api/python/claude-api/batches.md +185 -0
  102. package/built-in-skills/claude-api/python/claude-api/files-api.md +165 -0
  103. package/built-in-skills/claude-api/python/claude-api/streaming.md +162 -0
  104. package/built-in-skills/claude-api/python/claude-api/tool-use.md +590 -0
  105. package/built-in-skills/claude-api/python/managed-agents/README.md +332 -0
  106. package/built-in-skills/claude-api/ruby/claude-api.md +113 -0
  107. package/built-in-skills/claude-api/ruby/managed-agents/README.md +389 -0
  108. package/built-in-skills/claude-api/shared/agent-design.md +101 -0
  109. package/built-in-skills/claude-api/shared/error-codes.md +213 -0
  110. package/built-in-skills/claude-api/shared/live-sources.md +135 -0
  111. package/built-in-skills/claude-api/shared/managed-agents-api-reference.md +378 -0
  112. package/built-in-skills/claude-api/shared/managed-agents-client-patterns.md +209 -0
  113. package/built-in-skills/claude-api/shared/managed-agents-core.md +238 -0
  114. package/built-in-skills/claude-api/shared/managed-agents-environments.md +215 -0
  115. package/built-in-skills/claude-api/shared/managed-agents-events.md +195 -0
  116. package/built-in-skills/claude-api/shared/managed-agents-memory.md +197 -0
  117. package/built-in-skills/claude-api/shared/managed-agents-multiagent.md +99 -0
  118. package/built-in-skills/claude-api/shared/managed-agents-onboarding.md +114 -0
  119. package/built-in-skills/claude-api/shared/managed-agents-outcomes.md +106 -0
  120. package/built-in-skills/claude-api/shared/managed-agents-overview.md +68 -0
  121. package/built-in-skills/claude-api/shared/managed-agents-self-hosted-sandboxes.md +173 -0
  122. package/built-in-skills/claude-api/shared/managed-agents-tools.md +321 -0
  123. package/built-in-skills/claude-api/shared/managed-agents-webhooks.md +110 -0
  124. package/built-in-skills/claude-api/shared/model-migration.md +779 -0
  125. package/built-in-skills/claude-api/shared/models.md +121 -0
  126. package/built-in-skills/claude-api/shared/prompt-caching.md +171 -0
  127. package/built-in-skills/claude-api/shared/tool-use-concepts.md +327 -0
  128. package/built-in-skills/claude-api/typescript/claude-api/README.md +333 -0
  129. package/built-in-skills/claude-api/typescript/claude-api/batches.md +106 -0
  130. package/built-in-skills/claude-api/typescript/claude-api/files-api.md +98 -0
  131. package/built-in-skills/claude-api/typescript/claude-api/streaming.md +178 -0
  132. package/built-in-skills/claude-api/typescript/claude-api/tool-use.md +527 -0
  133. package/built-in-skills/claude-api/typescript/managed-agents/README.md +359 -0
  134. package/built-in-skills/doc-coauthoring/SKILL.md +375 -0
  135. package/built-in-skills/frontend-design/LICENSE.txt +177 -0
  136. package/built-in-skills/frontend-design/SKILL.md +42 -0
  137. package/built-in-skills/human-approval/SKILL.md +114 -0
  138. package/built-in-skills/image-generate/SKILL.md +327 -0
  139. package/built-in-skills/ingest/SKILL.md +105 -0
  140. package/built-in-skills/internal-comms/LICENSE.txt +202 -0
  141. package/built-in-skills/internal-comms/SKILL.md +32 -0
  142. package/built-in-skills/internal-comms/examples/3p-updates.md +47 -0
  143. package/built-in-skills/internal-comms/examples/company-newsletter.md +65 -0
  144. package/built-in-skills/internal-comms/examples/faq-answers.md +30 -0
  145. package/built-in-skills/internal-comms/examples/general-comms.md +16 -0
  146. package/built-in-skills/liteparse/SKILL.md +156 -0
  147. package/built-in-skills/mcp-builder/LICENSE.txt +202 -0
  148. package/built-in-skills/mcp-builder/SKILL.md +236 -0
  149. package/built-in-skills/mcp-builder/reference/evaluation.md +602 -0
  150. package/built-in-skills/mcp-builder/reference/mcp_best_practices.md +249 -0
  151. package/built-in-skills/mcp-builder/reference/node_mcp_server.md +970 -0
  152. package/built-in-skills/mcp-builder/reference/python_mcp_server.md +719 -0
  153. package/built-in-skills/mcp-builder/scripts/connections.py +151 -0
  154. package/built-in-skills/mcp-builder/scripts/evaluation.py +373 -0
  155. package/built-in-skills/mcp-builder/scripts/example_evaluation.xml +22 -0
  156. package/built-in-skills/mcp-builder/scripts/requirements.txt +2 -0
  157. package/built-in-skills/memory/SKILL.md +106 -0
  158. package/built-in-skills/memory-curation/SKILL.md +135 -0
  159. package/built-in-skills/office-artifacts/SKILL.md +198 -0
  160. package/built-in-skills/prismer-im-collab/SKILL.md +148 -0
  161. package/built-in-skills/skill-authoring/SKILL.md +124 -0
  162. package/built-in-skills/skill-authoring/skill.json +74 -0
  163. package/built-in-skills/skill-creator/LICENSE.txt +202 -0
  164. package/built-in-skills/skill-creator/SKILL.md +485 -0
  165. package/built-in-skills/skill-creator/agents/analyzer.md +274 -0
  166. package/built-in-skills/skill-creator/agents/comparator.md +202 -0
  167. package/built-in-skills/skill-creator/agents/grader.md +223 -0
  168. package/built-in-skills/skill-creator/assets/eval_review.html +146 -0
  169. package/built-in-skills/skill-creator/eval-viewer/generate_review.py +471 -0
  170. package/built-in-skills/skill-creator/eval-viewer/viewer.html +1325 -0
  171. package/built-in-skills/skill-creator/references/schemas.md +430 -0
  172. package/built-in-skills/skill-creator/scripts/__init__.py +0 -0
  173. package/built-in-skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  174. package/built-in-skills/skill-creator/scripts/generate_report.py +326 -0
  175. package/built-in-skills/skill-creator/scripts/improve_description.py +247 -0
  176. package/built-in-skills/skill-creator/scripts/package_skill.py +136 -0
  177. package/built-in-skills/skill-creator/scripts/quick_validate.py +103 -0
  178. package/built-in-skills/skill-creator/scripts/run_eval.py +310 -0
  179. package/built-in-skills/skill-creator/scripts/run_loop.py +328 -0
  180. package/built-in-skills/skill-creator/scripts/utils.py +47 -0
  181. package/built-in-skills/slack-gif-creator/LICENSE.txt +202 -0
  182. package/built-in-skills/slack-gif-creator/SKILL.md +271 -0
  183. package/built-in-skills/slack-gif-creator/core/easing.py +234 -0
  184. package/built-in-skills/slack-gif-creator/core/frame_composer.py +176 -0
  185. package/built-in-skills/slack-gif-creator/core/gif_builder.py +269 -0
  186. package/built-in-skills/slack-gif-creator/core/validators.py +136 -0
  187. package/built-in-skills/slack-gif-creator/requirements.txt +4 -0
  188. package/built-in-skills/tasks/SKILL.md +398 -0
  189. package/built-in-skills/team/SKILL.md +76 -0
  190. package/built-in-skills/web-artifacts-builder/LICENSE.txt +202 -0
  191. package/built-in-skills/web-artifacts-builder/SKILL.md +104 -0
  192. package/built-in-skills/web-artifacts-builder/scripts/bundle-artifact.sh +54 -0
  193. package/built-in-skills/web-artifacts-builder/scripts/init-artifact.sh +334 -0
  194. package/built-in-skills/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
  195. package/built-in-skills/webapp-testing/LICENSE.txt +202 -0
  196. package/built-in-skills/webapp-testing/SKILL.md +96 -0
  197. package/built-in-skills/webapp-testing/examples/console_logging.py +35 -0
  198. package/built-in-skills/webapp-testing/examples/element_discovery.py +40 -0
  199. package/built-in-skills/webapp-testing/examples/static_html_automation.py +33 -0
  200. package/built-in-skills/webapp-testing/scripts/with_server.py +106 -0
  201. package/dist/cli.cjs +6195 -1631
  202. package/dist/cli.js +6148 -1585
  203. package/dist/index.cjs +6032 -1468
  204. package/dist/index.d.cts +813 -43
  205. package/dist/index.d.ts +813 -43
  206. package/dist/index.js +6017 -1454
  207. package/package.json +4 -2
@@ -0,0 +1,165 @@
1
+ # Files API — Python
2
+
3
+ The Files API uploads files for use in Messages API requests. Reference files via `file_id` in content blocks, avoiding re-uploads across multiple API calls.
4
+
5
+ **Beta:** Pass `betas=["files-api-2025-04-14"]` in your API calls (the SDK sets the required header automatically).
6
+
7
+ ## Key Facts
8
+
9
+ - Maximum file size: 500 MB
10
+ - Total storage: 100 GB per organization
11
+ - Files persist until deleted
12
+ - File operations (upload, list, delete) are free; content used in messages is billed as input tokens
13
+ - Not available on Amazon Bedrock or Google Vertex AI
14
+
15
+ ---
16
+
17
+ ## Upload a File
18
+
19
+ ```python
20
+ import anthropic
21
+
22
+ client = anthropic.Anthropic()
23
+
24
+ uploaded = client.beta.files.upload(
25
+ file=("report.pdf", open("report.pdf", "rb"), "application/pdf"),
26
+ )
27
+ print(f"File ID: {uploaded.id}")
28
+ print(f"Size: {uploaded.size_bytes} bytes")
29
+ ```
30
+
31
+ ---
32
+
33
+ ## Use a File in Messages
34
+
35
+ ### PDF / Text Document
36
+
37
+ ```python
38
+ response = client.beta.messages.create(
39
+ model="claude-opus-4-7",
40
+ max_tokens=16000,
41
+ messages=[{
42
+ "role": "user",
43
+ "content": [
44
+ {"type": "text", "text": "Summarize the key findings in this report."},
45
+ {
46
+ "type": "document",
47
+ "source": {"type": "file", "file_id": uploaded.id},
48
+ "title": "Q4 Report", # optional
49
+ "citations": {"enabled": True} # optional, enables citations
50
+ }
51
+ ]
52
+ }],
53
+ betas=["files-api-2025-04-14"],
54
+ )
55
+ for block in response.content:
56
+ if block.type == "text":
57
+ print(block.text)
58
+ ```
59
+
60
+ ### Image
61
+
62
+ ```python
63
+ image_file = client.beta.files.upload(
64
+ file=("photo.png", open("photo.png", "rb"), "image/png"),
65
+ )
66
+
67
+ response = client.beta.messages.create(
68
+ model="claude-opus-4-7",
69
+ max_tokens=16000,
70
+ messages=[{
71
+ "role": "user",
72
+ "content": [
73
+ {"type": "text", "text": "What's in this image?"},
74
+ {
75
+ "type": "image",
76
+ "source": {"type": "file", "file_id": image_file.id}
77
+ }
78
+ ]
79
+ }],
80
+ betas=["files-api-2025-04-14"],
81
+ )
82
+ ```
83
+
84
+ ---
85
+
86
+ ## Manage Files
87
+
88
+ ### List Files
89
+
90
+ ```python
91
+ files = client.beta.files.list()
92
+ for f in files.data:
93
+ print(f"{f.id}: {f.filename} ({f.size_bytes} bytes)")
94
+ ```
95
+
96
+ ### Get File Metadata
97
+
98
+ ```python
99
+ file_info = client.beta.files.retrieve_metadata("file_011CNha8iCJcU1wXNR6q4V8w")
100
+ print(f"Filename: {file_info.filename}")
101
+ print(f"MIME type: {file_info.mime_type}")
102
+ ```
103
+
104
+ ### Delete a File
105
+
106
+ ```python
107
+ client.beta.files.delete("file_011CNha8iCJcU1wXNR6q4V8w")
108
+ ```
109
+
110
+ ### Download a File
111
+
112
+ Only files created by the code execution tool or skills can be downloaded (not user-uploaded files).
113
+
114
+ ```python
115
+ file_content = client.beta.files.download("file_011CNha8iCJcU1wXNR6q4V8w")
116
+ file_content.write_to_file("output.txt")
117
+ ```
118
+
119
+ ---
120
+
121
+ ## Full End-to-End Example
122
+
123
+ Upload a document once, ask multiple questions about it:
124
+
125
+ ```python
126
+ import anthropic
127
+
128
+ client = anthropic.Anthropic()
129
+
130
+ # 1. Upload once
131
+ uploaded = client.beta.files.upload(
132
+ file=("contract.pdf", open("contract.pdf", "rb"), "application/pdf"),
133
+ )
134
+ print(f"Uploaded: {uploaded.id}")
135
+
136
+ # 2. Ask multiple questions using the same file_id
137
+ questions = [
138
+ "What are the key terms and conditions?",
139
+ "What is the termination clause?",
140
+ "Summarize the payment schedule.",
141
+ ]
142
+
143
+ for question in questions:
144
+ response = client.beta.messages.create(
145
+ model="claude-opus-4-7",
146
+ max_tokens=16000,
147
+ messages=[{
148
+ "role": "user",
149
+ "content": [
150
+ {"type": "text", "text": question},
151
+ {
152
+ "type": "document",
153
+ "source": {"type": "file", "file_id": uploaded.id}
154
+ }
155
+ ]
156
+ }],
157
+ betas=["files-api-2025-04-14"],
158
+ )
159
+ print(f"\nQ: {question}")
160
+ text = next((b.text for b in response.content if b.type == "text"), "")
161
+ print(f"A: {text[:200]}")
162
+
163
+ # 3. Clean up when done
164
+ client.beta.files.delete(uploaded.id)
165
+ ```
@@ -0,0 +1,162 @@
1
+ # Streaming — Python
2
+
3
+ ## Quick Start
4
+
5
+ ```python
6
+ with client.messages.stream(
7
+ model="claude-opus-4-7",
8
+ max_tokens=64000,
9
+ messages=[{"role": "user", "content": "Write a story"}]
10
+ ) as stream:
11
+ for text in stream.text_stream:
12
+ print(text, end="", flush=True)
13
+ ```
14
+
15
+ ### Async
16
+
17
+ ```python
18
+ async with async_client.messages.stream(
19
+ model="claude-opus-4-7",
20
+ max_tokens=64000,
21
+ messages=[{"role": "user", "content": "Write a story"}]
22
+ ) as stream:
23
+ async for text in stream.text_stream:
24
+ print(text, end="", flush=True)
25
+ ```
26
+
27
+ ---
28
+
29
+ ## Handling Different Content Types
30
+
31
+ Claude may return text, thinking blocks, or tool use. Handle each appropriately:
32
+
33
+ > **Opus 4.7 / Opus 4.6:** Use `thinking: {type: "adaptive"}`. On older models, use `thinking: {type: "enabled", budget_tokens: N}` instead.
34
+
35
+ ```python
36
+ with client.messages.stream(
37
+ model="claude-opus-4-7",
38
+ max_tokens=64000,
39
+ thinking={"type": "adaptive"},
40
+ messages=[{"role": "user", "content": "Analyze this problem"}]
41
+ ) as stream:
42
+ for event in stream:
43
+ if event.type == "content_block_start":
44
+ if event.content_block.type == "thinking":
45
+ print("\n[Thinking...]")
46
+ elif event.content_block.type == "text":
47
+ print("\n[Response:]")
48
+
49
+ elif event.type == "content_block_delta":
50
+ if event.delta.type == "thinking_delta":
51
+ print(event.delta.thinking, end="", flush=True)
52
+ elif event.delta.type == "text_delta":
53
+ print(event.delta.text, end="", flush=True)
54
+ ```
55
+
56
+ ---
57
+
58
+ ## Streaming with Tool Use
59
+
60
+ The Python tool runner currently returns complete messages. Use streaming for individual API calls within a manual loop if you need per-token streaming with tools:
61
+
62
+ ```python
63
+ with client.messages.stream(
64
+ model="claude-opus-4-7",
65
+ max_tokens=64000,
66
+ tools=tools,
67
+ messages=messages
68
+ ) as stream:
69
+ for text in stream.text_stream:
70
+ print(text, end="", flush=True)
71
+
72
+ response = stream.get_final_message()
73
+ # Continue with tool execution if response.stop_reason == "tool_use"
74
+ ```
75
+
76
+ ---
77
+
78
+ ## Getting the Final Message
79
+
80
+ ```python
81
+ with client.messages.stream(
82
+ model="claude-opus-4-7",
83
+ max_tokens=64000,
84
+ messages=[{"role": "user", "content": "Hello"}]
85
+ ) as stream:
86
+ for text in stream.text_stream:
87
+ print(text, end="", flush=True)
88
+
89
+ # Get full message after streaming
90
+ final_message = stream.get_final_message()
91
+ print(f"\n\nTokens used: {final_message.usage.output_tokens}")
92
+ ```
93
+
94
+ ---
95
+
96
+ ## Streaming with Progress Updates
97
+
98
+ ```python
99
+ def stream_with_progress(client, **kwargs):
100
+ """Stream a response with progress updates."""
101
+ total_tokens = 0
102
+ content_parts = []
103
+
104
+ with client.messages.stream(**kwargs) as stream:
105
+ for event in stream:
106
+ if event.type == "content_block_delta":
107
+ if event.delta.type == "text_delta":
108
+ text = event.delta.text
109
+ content_parts.append(text)
110
+ print(text, end="", flush=True)
111
+
112
+ elif event.type == "message_delta":
113
+ if event.usage and event.usage.output_tokens is not None:
114
+ total_tokens = event.usage.output_tokens
115
+
116
+ final_message = stream.get_final_message()
117
+
118
+ print(f"\n\n[Tokens used: {total_tokens}]")
119
+ return "".join(content_parts)
120
+ ```
121
+
122
+ ---
123
+
124
+ ## Error Handling in Streams
125
+
126
+ ```python
127
+ try:
128
+ with client.messages.stream(
129
+ model="claude-opus-4-7",
130
+ max_tokens=64000,
131
+ messages=[{"role": "user", "content": "Write a story"}]
132
+ ) as stream:
133
+ for text in stream.text_stream:
134
+ print(text, end="", flush=True)
135
+ except anthropic.APIConnectionError:
136
+ print("\nConnection lost. Please retry.")
137
+ except anthropic.RateLimitError:
138
+ print("\nRate limited. Please wait and retry.")
139
+ except anthropic.APIStatusError as e:
140
+ print(f"\nAPI error: {e.status_code}")
141
+ ```
142
+
143
+ ---
144
+
145
+ ## Stream Event Types
146
+
147
+ | Event Type | Description | When it fires |
148
+ | --------------------- | --------------------------- | --------------------------------- |
149
+ | `message_start` | Contains message metadata | Once at the beginning |
150
+ | `content_block_start` | New content block beginning | When a text/tool_use block starts |
151
+ | `content_block_delta` | Incremental content update | For each token/chunk |
152
+ | `content_block_stop` | Content block complete | When a block finishes |
153
+ | `message_delta` | Message-level updates | Contains `stop_reason`, usage |
154
+ | `message_stop` | Message complete | Once at the end |
155
+
156
+ ## Best Practices
157
+
158
+ 1. **Always flush output** — Use `flush=True` to show tokens immediately
159
+ 2. **Handle partial responses** — If the stream is interrupted, you may have incomplete content
160
+ 3. **Track token usage** — The `message_delta` event contains usage information
161
+ 4. **Use timeouts** — Set appropriate timeouts for your application
162
+ 5. **Default to streaming** — Use `.get_final_message()` to get the complete response even when streaming, giving you timeout protection without needing to handle individual events