hive-skills 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +28 -0
- package/README.md +235 -0
- package/assets/LICENSE +32 -0
- package/assets/THIRD_PARTY_NOTICES.md +72 -0
- package/assets/manifest.json +1290 -0
- package/assets/skills/authored/code-review/composable/BUNDLE.md +192 -0
- package/assets/skills/authored/code-review/composable/INDEX.md +13 -0
- package/assets/skills/authored/code-review/composable/VERSION +1 -0
- package/assets/skills/authored/code-review/composable/mini/01-review-method.md +34 -0
- package/assets/skills/authored/code-review/composable/mini/02-security-review.md +20 -0
- package/assets/skills/authored/code-review/composable/mini/03-correctness-bugs.md +19 -0
- package/assets/skills/authored/code-review/composable/mini/04-concurrency.md +16 -0
- package/assets/skills/authored/code-review/composable/mini/05-error-handling.md +12 -0
- package/assets/skills/authored/code-review/composable/mini/06-performance.md +11 -0
- package/assets/skills/authored/code-review/composable/mini/07-api-design.md +20 -0
- package/assets/skills/authored/code-review/composable/mini/08-missing-tests.md +25 -0
- package/assets/skills/authored/code-review/composable/mini/09-refactoring-and-communication.md +32 -0
- package/assets/skills/authored/data-analysis/composable/BUNDLE.md +186 -0
- package/assets/skills/authored/data-analysis/composable/INDEX.md +13 -0
- package/assets/skills/authored/data-analysis/composable/VERSION +1 -0
- package/assets/skills/authored/data-analysis/composable/mini/01-data-quality-profiling.md +26 -0
- package/assets/skills/authored/data-analysis/composable/mini/02-aggregation-pitfalls.md +21 -0
- package/assets/skills/authored/data-analysis/composable/mini/03-time-series.md +19 -0
- package/assets/skills/authored/data-analysis/composable/mini/04-segmentation.md +23 -0
- package/assets/skills/authored/data-analysis/composable/mini/05-discount-pricing.md +17 -0
- package/assets/skills/authored/data-analysis/composable/mini/06-insight-generation.md +25 -0
- package/assets/skills/authored/data-analysis/composable/mini/07-executive-writing.md +26 -0
- package/assets/skills/authored/data-analysis/composable/mini/08-recommendations.md +20 -0
- package/assets/skills/authored/data-analysis/composable/mini/09-reproducibility-assumptions.md +20 -0
- package/assets/skills/authored/financial-analysis/composable/BUNDLE.md +1293 -0
- package/assets/skills/authored/financial-analysis/composable/INDEX.md +17 -0
- package/assets/skills/authored/financial-analysis/composable/VERSION +1 -0
- package/assets/skills/authored/financial-analysis/composable/mini/00-core.md +69 -0
- package/assets/skills/authored/financial-analysis/composable/mini/01-profitability-efficiency-ratios.md +173 -0
- package/assets/skills/authored/financial-analysis/composable/mini/02-liquidity-leverage-ratios.md +120 -0
- package/assets/skills/authored/financial-analysis/composable/mini/03-valuation-ratios-interpretation.md +107 -0
- package/assets/skills/authored/financial-analysis/composable/mini/04-dcf-projection-wacc.md +122 -0
- package/assets/skills/authored/financial-analysis/composable/mini/05-dcf-terminal-value-sensitivity.md +75 -0
- package/assets/skills/authored/financial-analysis/composable/mini/06-comparables-precedents.md +78 -0
- package/assets/skills/authored/financial-analysis/composable/mini/07-budget-variance-analysis.md +47 -0
- package/assets/skills/authored/financial-analysis/composable/mini/08-driver-based-forecasting-scenarios.md +111 -0
- package/assets/skills/authored/financial-analysis/composable/mini/09-rolling-forecasts-accuracy.md +114 -0
- package/assets/skills/authored/financial-analysis/composable/mini/10-reporting-exec-summary.md +58 -0
- package/assets/skills/authored/financial-analysis/composable/mini/11-industry-adaptations.md +130 -0
- package/assets/skills/authored/financial-analysis/composable/mini/12-toolkit-scripts-io.md +102 -0
- package/assets/skills/authored/python-api/composable/BUNDLE.md +389 -0
- package/assets/skills/authored/python-api/composable/INDEX.md +13 -0
- package/assets/skills/authored/python-api/composable/VERSION +1 -0
- package/assets/skills/authored/python-api/composable/mini/01-project-structure.md +44 -0
- package/assets/skills/authored/python-api/composable/mini/02-routing-and-app.md +38 -0
- package/assets/skills/authored/python-api/composable/mini/03-pydantic-models.md +45 -0
- package/assets/skills/authored/python-api/composable/mini/04-validation-and-errors.md +59 -0
- package/assets/skills/authored/python-api/composable/mini/05-dependencies-and-auth.md +60 -0
- package/assets/skills/authored/python-api/composable/mini/06-pagination-filtering.md +44 -0
- package/assets/skills/authored/python-api/composable/mini/07-async-performance.md +30 -0
- package/assets/skills/authored/python-api/composable/mini/08-testing.md +45 -0
- package/assets/skills/authored/python-api/composable/mini/09-middleware-observability.md +29 -0
- package/assets/skills/authored/tech-writing/composable/BUNDLE.md +220 -0
- package/assets/skills/authored/tech-writing/composable/INDEX.md +12 -0
- package/assets/skills/authored/tech-writing/composable/VERSION +1 -0
- package/assets/skills/authored/tech-writing/composable/mini/01-audience-analysis.md +26 -0
- package/assets/skills/authored/tech-writing/composable/mini/02-document-types.md +27 -0
- package/assets/skills/authored/tech-writing/composable/mini/03-readme-quickstart-changelog.md +22 -0
- package/assets/skills/authored/tech-writing/composable/mini/04-information-architecture.md +21 -0
- package/assets/skills/authored/tech-writing/composable/mini/05-style-clarity.md +29 -0
- package/assets/skills/authored/tech-writing/composable/mini/06-breaking-changes-migrations.md +33 -0
- package/assets/skills/authored/tech-writing/composable/mini/07-troubleshooting-security.md +30 -0
- package/assets/skills/authored/tech-writing/composable/mini/08-faq-voice-tone.md +32 -0
- package/assets/skills/converted/claude-api/composable/BUNDLE.md +14996 -0
- package/assets/skills/converted/claude-api/composable/INDEX.md +98 -0
- package/assets/skills/converted/claude-api/composable/VERSION +1 -0
- package/assets/skills/converted/claude-api/composable/mini/00-core.md +235 -0
- package/assets/skills/converted/claude-api/composable/mini/01-model-api-quick-reference.md +258 -0
- package/assets/skills/converted/claude-api/composable/mini/02-common-pitfalls.md +42 -0
- package/assets/skills/converted/claude-api/composable/mini/10-models.md +135 -0
- package/assets/skills/converted/claude-api/composable/mini/11-platform-availability.md +96 -0
- package/assets/skills/converted/claude-api/composable/mini/12-claude-platform-on-aws.md +59 -0
- package/assets/skills/converted/claude-api/composable/mini/13-live-sources.md +143 -0
- package/assets/skills/converted/claude-api/composable/mini/14-error-codes.md +256 -0
- package/assets/skills/converted/claude-api/composable/mini/15-prompt-caching.md +223 -0
- package/assets/skills/converted/claude-api/composable/mini/16-token-counting.md +56 -0
- package/assets/skills/converted/claude-api/composable/mini/17-tool-use-concepts.md +444 -0
- package/assets/skills/converted/claude-api/composable/mini/18-agent-design.md +101 -0
- package/assets/skills/converted/claude-api/composable/mini/19-anthropic-cli.md +246 -0
- package/assets/skills/converted/claude-api/composable/mini/20-model-migration.md +1301 -0
- package/assets/skills/converted/claude-api/composable/mini/30-managed-agents-overview.md +71 -0
- package/assets/skills/converted/claude-api/composable/mini/31-managed-agents-core.md +278 -0
- package/assets/skills/converted/claude-api/composable/mini/32-managed-agents-environments.md +219 -0
- package/assets/skills/converted/claude-api/composable/mini/33-managed-agents-tools.md +366 -0
- package/assets/skills/converted/claude-api/composable/mini/34-managed-agents-events.md +252 -0
- package/assets/skills/converted/claude-api/composable/mini/35-managed-agents-outcomes.md +106 -0
- package/assets/skills/converted/claude-api/composable/mini/36-managed-agents-multiagent.md +101 -0
- package/assets/skills/converted/claude-api/composable/mini/37-managed-agents-webhooks.md +123 -0
- package/assets/skills/converted/claude-api/composable/mini/38-managed-agents-memory.md +197 -0
- package/assets/skills/converted/claude-api/composable/mini/39-managed-agents-scheduled-deployments.md +146 -0
- package/assets/skills/converted/claude-api/composable/mini/40-managed-agents-client-patterns.md +211 -0
- package/assets/skills/converted/claude-api/composable/mini/41-managed-agents-onboarding.md +82 -0
- package/assets/skills/converted/claude-api/composable/mini/42-managed-agents-api-reference.md +441 -0
- package/assets/skills/converted/claude-api/composable/mini/43-managed-agents-self-hosted-sandboxes.md +174 -0
- package/assets/skills/converted/claude-api/composable/mini/50-python-readme.md +564 -0
- package/assets/skills/converted/claude-api/composable/mini/51-python-tool-use.md +590 -0
- package/assets/skills/converted/claude-api/composable/mini/52-python-streaming-batches-files.md +549 -0
- package/assets/skills/converted/claude-api/composable/mini/53-python-managed-agents.md +335 -0
- package/assets/skills/converted/claude-api/composable/mini/55-typescript-readme.md +404 -0
- package/assets/skills/converted/claude-api/composable/mini/56-typescript-tool-use.md +548 -0
- package/assets/skills/converted/claude-api/composable/mini/57-typescript-streaming-batches-files.md +384 -0
- package/assets/skills/converted/claude-api/composable/mini/58-typescript-managed-agents.md +358 -0
- package/assets/skills/converted/claude-api/composable/mini/60-csharp-readme.md +361 -0
- package/assets/skills/converted/claude-api/composable/mini/61-csharp-tool-use.md +163 -0
- package/assets/skills/converted/claude-api/composable/mini/62-csharp-streaming-batches-files.md +64 -0
- package/assets/skills/converted/claude-api/composable/mini/65-go-readme.md +185 -0
- package/assets/skills/converted/claude-api/composable/mini/66-go-tool-use.md +219 -0
- package/assets/skills/converted/claude-api/composable/mini/67-go-streaming-files.md +63 -0
- package/assets/skills/converted/claude-api/composable/mini/68-go-managed-agents.md +564 -0
- package/assets/skills/converted/claude-api/composable/mini/70-java-readme.md +237 -0
- package/assets/skills/converted/claude-api/composable/mini/71-java-tool-use.md +227 -0
- package/assets/skills/converted/claude-api/composable/mini/72-java-streaming-files.md +49 -0
- package/assets/skills/converted/claude-api/composable/mini/73-java-managed-agents.md +443 -0
- package/assets/skills/converted/claude-api/composable/mini/75-php-readme.md +173 -0
- package/assets/skills/converted/claude-api/composable/mini/76-php-tool-use.md +252 -0
- package/assets/skills/converted/claude-api/composable/mini/77-php-streaming-batches-files.md +53 -0
- package/assets/skills/converted/claude-api/composable/mini/78-php-managed-agents.md +443 -0
- package/assets/skills/converted/claude-api/composable/mini/80-ruby-readme.md +133 -0
- package/assets/skills/converted/claude-api/composable/mini/81-ruby-tool-use-streaming.md +56 -0
- package/assets/skills/converted/claude-api/composable/mini/82-ruby-managed-agents.md +394 -0
- package/assets/skills/converted/claude-api/composable/mini/85-curl-examples.md +255 -0
- package/assets/skills/converted/claude-api/composable/mini/86-curl-managed-agents.md +340 -0
- package/assets/skills/converted/claude-api/composable/presets/csharp.md +1151 -0
- package/assets/skills/converted/claude-api/composable/presets/curl.md +1154 -0
- package/assets/skills/converted/claude-api/composable/presets/go.md +1598 -0
- package/assets/skills/converted/claude-api/composable/presets/java.md +1523 -0
- package/assets/skills/converted/claude-api/composable/presets/php.md +1488 -0
- package/assets/skills/converted/claude-api/composable/presets/python.md +2605 -0
- package/assets/skills/converted/claude-api/composable/presets/ruby.md +1146 -0
- package/assets/skills/converted/claude-api/composable/presets/shared.md +6478 -0
- package/assets/skills/converted/claude-api/composable/presets/typescript.md +2261 -0
- package/assets/skills/converted/docx/composable/BUNDLE.md +617 -0
- package/assets/skills/converted/docx/composable/INDEX.md +12 -0
- package/assets/skills/converted/docx/composable/VERSION +1 -0
- package/assets/skills/converted/docx/composable/mini/00-core.md +26 -0
- package/assets/skills/converted/docx/composable/mini/01-reading-converting.md +36 -0
- package/assets/skills/converted/docx/composable/mini/02-creating-setup-layout.md +85 -0
- package/assets/skills/converted/docx/composable/mini/03-creating-elements.md +257 -0
- package/assets/skills/converted/docx/composable/mini/04-editing-existing.md +57 -0
- package/assets/skills/converted/docx/composable/mini/05-xml-reference.md +128 -0
- package/assets/skills/converted/internal-comms/composable/BUNDLE.md +220 -0
- package/assets/skills/converted/internal-comms/composable/INDEX.md +11 -0
- package/assets/skills/converted/internal-comms/composable/VERSION +1 -0
- package/assets/skills/converted/internal-comms/composable/mini/00-core.md +30 -0
- package/assets/skills/converted/internal-comms/composable/mini/01-3p-updates.md +49 -0
- package/assets/skills/converted/internal-comms/composable/mini/02-company-newsletter.md +67 -0
- package/assets/skills/converted/internal-comms/composable/mini/03-faq-answers.md +32 -0
- package/assets/skills/converted/internal-comms/composable/mini/04-general-comms.md +18 -0
- package/assets/skills/converted/mcp-builder/composable/BUNDLE.md +2460 -0
- package/assets/skills/converted/mcp-builder/composable/INDEX.md +23 -0
- package/assets/skills/converted/mcp-builder/composable/VERSION +1 -0
- package/assets/skills/converted/mcp-builder/composable/mini/00-core.md +43 -0
- package/assets/skills/converted/mcp-builder/composable/mini/01-workflow-research-planning.md +54 -0
- package/assets/skills/converted/mcp-builder/composable/mini/02-implementation-process.md +78 -0
- package/assets/skills/converted/mcp-builder/composable/mini/03-naming-conventions.md +33 -0
- package/assets/skills/converted/mcp-builder/composable/mini/04-response-formats.md +21 -0
- package/assets/skills/converted/mcp-builder/composable/mini/05-pagination.md +24 -0
- package/assets/skills/converted/mcp-builder/composable/mini/06-transport.md +47 -0
- package/assets/skills/converted/mcp-builder/composable/mini/07-annotations.md +20 -0
- package/assets/skills/converted/mcp-builder/composable/mini/08-security.md +35 -0
- package/assets/skills/converted/mcp-builder/composable/mini/09-error-handling.md +32 -0
- package/assets/skills/converted/mcp-builder/composable/mini/10-testing-and-documentation.md +21 -0
- package/assets/skills/converted/mcp-builder/composable/mini/11-python-implementation.md +432 -0
- package/assets/skills/converted/mcp-builder/composable/mini/12-python-advanced-and-checklist.md +233 -0
- package/assets/skills/converted/mcp-builder/composable/mini/13-node-implementation.md +717 -0
- package/assets/skills/converted/mcp-builder/composable/mini/14-node-advanced-and-checklist.md +200 -0
- package/assets/skills/converted/mcp-builder/composable/mini/15-evaluation-design.md +200 -0
- package/assets/skills/converted/mcp-builder/composable/mini/16-evaluation-running.md +198 -0
- package/assets/skills/converted/mcp-builder/composable/presets/node-server.md +1381 -0
- package/assets/skills/converted/mcp-builder/composable/presets/python-server.md +1129 -0
- package/assets/skills/converted/pdf/composable/BUNDLE.md +1284 -0
- package/assets/skills/converted/pdf/composable/INDEX.md +14 -0
- package/assets/skills/converted/pdf/composable/VERSION +1 -0
- package/assets/skills/converted/pdf/composable/mini/00-core.md +46 -0
- package/assets/skills/converted/pdf/composable/mini/01-creation.md +176 -0
- package/assets/skills/converted/pdf/composable/mini/02-extraction.md +178 -0
- package/assets/skills/converted/pdf/composable/mini/03-merge-split-manipulate.md +240 -0
- package/assets/skills/converted/pdf/composable/mini/04-images-ocr.md +168 -0
- package/assets/skills/converted/pdf/composable/mini/05-encryption.md +51 -0
- package/assets/skills/converted/pdf/composable/mini/06-forms.md +300 -0
- package/assets/skills/converted/pdf/composable/mini/07-libraries-reference.md +89 -0
- package/assets/skills/converted/pptx/composable/BUNDLE.md +911 -0
- package/assets/skills/converted/pptx/composable/INDEX.md +12 -0
- package/assets/skills/converted/pptx/composable/VERSION +1 -0
- package/assets/skills/converted/pptx/composable/mini/00-core.md +37 -0
- package/assets/skills/converted/pptx/composable/mini/01-reading.md +37 -0
- package/assets/skills/converted/pptx/composable/mini/02-creating-from-scratch.md +422 -0
- package/assets/skills/converted/pptx/composable/mini/03-editing-templates.md +207 -0
- package/assets/skills/converted/pptx/composable/mini/04-design.md +89 -0
- package/assets/skills/converted/pptx/composable/mini/05-qa-and-rendering.md +91 -0
- package/assets/skills/converted/pptx/composable/presets/creating.md +659 -0
- package/assets/skills/converted/pptx/composable/presets/editing.md +485 -0
- package/assets/skills/converted/skill-creator/composable/BUNDLE.md +1681 -0
- package/assets/skills/converted/skill-creator/composable/INDEX.md +21 -0
- package/assets/skills/converted/skill-creator/composable/VERSION +1 -0
- package/assets/skills/converted/skill-creator/composable/mini/00-core.md +59 -0
- package/assets/skills/converted/skill-creator/composable/mini/01-creating-a-skill.md +27 -0
- package/assets/skills/converted/skill-creator/composable/mini/02-skill-writing-guide.md +71 -0
- package/assets/skills/converted/skill-creator/composable/mini/03-test-cases.md +21 -0
- package/assets/skills/converted/skill-creator/composable/mini/04-running-and-evaluating.md +128 -0
- package/assets/skills/converted/skill-creator/composable/mini/05-improving-the-skill.md +30 -0
- package/assets/skills/converted/skill-creator/composable/mini/06-blind-comparison.md +5 -0
- package/assets/skills/converted/skill-creator/composable/mini/07-description-optimization.md +74 -0
- package/assets/skills/converted/skill-creator/composable/mini/08-packaging.md +11 -0
- package/assets/skills/converted/skill-creator/composable/mini/09-environment-specific.md +38 -0
- package/assets/skills/converted/skill-creator/composable/mini/10-scripts-and-references.md +34 -0
- package/assets/skills/converted/skill-creator/composable/mini/11-json-schemas.md +414 -0
- package/assets/skills/converted/skill-creator/composable/mini/12-agent-grader.md +225 -0
- package/assets/skills/converted/skill-creator/composable/mini/13-agent-comparator.md +204 -0
- package/assets/skills/converted/skill-creator/composable/mini/14-agent-analyzer.md +276 -0
- package/assets/skills/converted/skill-creator/composable/presets/authoring.md +198 -0
- package/assets/skills/converted/skill-creator/composable/presets/evaluating.md +1334 -0
- package/assets/skills/converted/skill-creator/composable/presets/optimizing.md +160 -0
- package/assets/skills/converted/skill-creator/composable/presets.json +5 -0
- package/assets/skills/meta/ccs-skill-creator/composable/BUNDLE.md +465 -0
- package/assets/skills/meta/ccs-skill-creator/composable/INDEX.md +8 -0
- package/assets/skills/meta/ccs-skill-creator/composable/VERSION +1 -0
- package/assets/skills/meta/ccs-skill-creator/composable/mini/00-core.md +46 -0
- package/assets/skills/meta/ccs-skill-creator/composable/mini/01-create-new-skill.md +167 -0
- package/assets/skills/meta/ccs-skill-creator/composable/mini/02-convert-existing-skill.md +120 -0
- package/assets/skills/meta/ccs-skill-creator/composable/mini/03-review-and-maintain.md +112 -0
- package/assets/skills/sources/anthropic/PROVENANCE.md +3 -0
- package/assets/skills/sources/anthropic/claude-api/LICENSE.txt +202 -0
- package/assets/skills/sources/anthropic/docx/LICENSE.txt +30 -0
- package/assets/skills/sources/anthropic/internal-comms/LICENSE.txt +202 -0
- package/assets/skills/sources/anthropic/mcp-builder/LICENSE.txt +202 -0
- package/assets/skills/sources/anthropic/pdf/LICENSE.txt +30 -0
- package/assets/skills/sources/anthropic/pptx/LICENSE.txt +30 -0
- package/assets/skills/sources/anthropic/skill-creator/LICENSE.txt +202 -0
- package/assets/skills/sources/financial-analyst/PROVENANCE.md +1 -0
- package/assets/tools/hive.py +728 -0
- package/dist/cli.js +7494 -0
- package/package.json +40 -0
package/assets/skills/converted/claude-api/composable/mini/57-typescript-streaming-batches-files.md
ADDED
|
@@ -0,0 +1,384 @@
|
|
|
1
|
+
# Streaming — TypeScript
|
|
2
|
+
|
|
3
|
+
## Quick Start
|
|
4
|
+
|
|
5
|
+
```typescript
|
|
6
|
+
const stream = client.messages.stream({
|
|
7
|
+
model: "claude-opus-4-8",
|
|
8
|
+
max_tokens: 64000,
|
|
9
|
+
messages: [{ role: "user", content: "Write a story" }],
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
for await (const event of stream) {
|
|
13
|
+
if (
|
|
14
|
+
event.type === "content_block_delta" &&
|
|
15
|
+
event.delta.type === "text_delta"
|
|
16
|
+
) {
|
|
17
|
+
process.stdout.write(event.delta.text);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Handling Different Content Types
|
|
25
|
+
|
|
26
|
+
> **Fable 5 / Opus 4.8 / Opus 4.7 / Opus 4.6:** Use `thinking: {type: "adaptive"}`. On older models, use `thinking: {type: "enabled", budget_tokens: N}` instead.
|
|
27
|
+
|
|
28
|
+
```typescript
|
|
29
|
+
const stream = client.messages.stream({
|
|
30
|
+
model: "claude-opus-4-8",
|
|
31
|
+
max_tokens: 64000,
|
|
32
|
+
thinking: { type: "adaptive", display: "summarized" }, // display opt-in: default is omitted (empty thinking text) on Fable 5 / Mythos 5 / Opus 4.8 / 4.7
|
|
33
|
+
messages: [{ role: "user", content: "Analyze this problem" }],
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
for await (const event of stream) {
|
|
37
|
+
switch (event.type) {
|
|
38
|
+
case "content_block_start":
|
|
39
|
+
switch (event.content_block.type) {
|
|
40
|
+
case "thinking":
|
|
41
|
+
console.log("\n[Thinking...]");
|
|
42
|
+
break;
|
|
43
|
+
case "text":
|
|
44
|
+
console.log("\n[Response:]");
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
break;
|
|
48
|
+
case "content_block_delta":
|
|
49
|
+
switch (event.delta.type) {
|
|
50
|
+
case "thinking_delta":
|
|
51
|
+
process.stdout.write(event.delta.thinking);
|
|
52
|
+
break;
|
|
53
|
+
case "text_delta":
|
|
54
|
+
process.stdout.write(event.delta.text);
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Streaming with Tool Use (Tool Runner)
|
|
65
|
+
|
|
66
|
+
Use the tool runner with `stream: true`. The outer loop iterates over tool runner iterations (messages), the inner loop processes stream events:
|
|
67
|
+
|
|
68
|
+
```typescript
|
|
69
|
+
import Anthropic from "@anthropic-ai/sdk";
|
|
70
|
+
import { betaZodTool } from "@anthropic-ai/sdk/helpers/beta/zod";
|
|
71
|
+
import { z } from "zod";
|
|
72
|
+
|
|
73
|
+
const client = new Anthropic();
|
|
74
|
+
|
|
75
|
+
const getWeather = betaZodTool({
|
|
76
|
+
name: "get_weather",
|
|
77
|
+
description: "Get current weather for a location",
|
|
78
|
+
inputSchema: z.object({
|
|
79
|
+
location: z.string().describe("City and state, e.g., San Francisco, CA"),
|
|
80
|
+
}),
|
|
81
|
+
run: async ({ location }) => `72°F and sunny in ${location}`,
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
const runner = client.beta.messages.toolRunner({
|
|
85
|
+
model: "claude-opus-4-8",
|
|
86
|
+
max_tokens: 64000,
|
|
87
|
+
tools: [getWeather],
|
|
88
|
+
messages: [
|
|
89
|
+
{ role: "user", content: "What's the weather in Paris and London?" },
|
|
90
|
+
],
|
|
91
|
+
stream: true,
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
// Outer loop: each tool runner iteration
|
|
95
|
+
for await (const messageStream of runner) {
|
|
96
|
+
// Inner loop: stream events for this iteration
|
|
97
|
+
for await (const event of messageStream) {
|
|
98
|
+
switch (event.type) {
|
|
99
|
+
case "content_block_delta":
|
|
100
|
+
switch (event.delta.type) {
|
|
101
|
+
case "text_delta":
|
|
102
|
+
process.stdout.write(event.delta.text);
|
|
103
|
+
break;
|
|
104
|
+
case "input_json_delta":
|
|
105
|
+
// Tool input being streamed
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Getting the Final Message
|
|
117
|
+
|
|
118
|
+
```typescript
|
|
119
|
+
const stream = client.messages.stream({
|
|
120
|
+
model: "claude-opus-4-8",
|
|
121
|
+
max_tokens: 64000,
|
|
122
|
+
messages: [{ role: "user", content: "Hello" }],
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
for await (const event of stream) {
|
|
126
|
+
// Process events...
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
const finalMessage = await stream.finalMessage();
|
|
130
|
+
console.log(`Tokens used: ${finalMessage.usage.output_tokens}`);
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Stream Event Types
|
|
136
|
+
|
|
137
|
+
| Event Type | Description | When it fires |
|
|
138
|
+
| --------------------- | --------------------------- | --------------------------------- |
|
|
139
|
+
| `message_start` | Contains message metadata | Once at the beginning |
|
|
140
|
+
| `content_block_start` | New content block beginning | When a text/tool_use block starts |
|
|
141
|
+
| `content_block_delta` | Incremental content update | For each token/chunk |
|
|
142
|
+
| `content_block_stop` | Content block complete | When a block finishes |
|
|
143
|
+
| `message_delta` | Message-level updates | Contains `stop_reason`, usage |
|
|
144
|
+
| `message_stop` | Message complete | Once at the end |
|
|
145
|
+
|
|
146
|
+
## Best Practices
|
|
147
|
+
|
|
148
|
+
1. **Always flush output** — Use `process.stdout.write()` for immediate display
|
|
149
|
+
2. **Handle partial responses** — If the stream is interrupted, you may have incomplete content
|
|
150
|
+
3. **Track token usage** — The `message_delta` event contains usage information
|
|
151
|
+
4. **Use `finalMessage()`** — Get the complete `Anthropic.Message` object even when streaming. Don't wrap `.on()` events in `new Promise()` — `finalMessage()` handles all completion/error/abort states internally
|
|
152
|
+
5. **Buffer for web UIs** — Consider buffering a few tokens before rendering to avoid excessive DOM updates
|
|
153
|
+
6. **Use `stream.on("text", ...)` for deltas** — The `text` event provides just the delta string, simpler than manually filtering `content_block_delta` events
|
|
154
|
+
7. **For agentic loops with streaming** — See the [Streaming Manual Loop](./tool-use.md#streaming-manual-loop) section in tool-use.md for combining `stream()` + `finalMessage()` with a tool-use loop
|
|
155
|
+
|
|
156
|
+
## Raw SSE Format
|
|
157
|
+
|
|
158
|
+
If using raw HTTP (not SDKs), the stream returns Server-Sent Events:
|
|
159
|
+
|
|
160
|
+
```
|
|
161
|
+
event: message_start
|
|
162
|
+
data: {"type":"message_start","message":{"id":"msg_...","type":"message",...}}
|
|
163
|
+
|
|
164
|
+
event: content_block_start
|
|
165
|
+
data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}
|
|
166
|
+
|
|
167
|
+
event: content_block_delta
|
|
168
|
+
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Hello"}}
|
|
169
|
+
|
|
170
|
+
event: content_block_stop
|
|
171
|
+
data: {"type":"content_block_stop","index":0}
|
|
172
|
+
|
|
173
|
+
event: message_delta
|
|
174
|
+
data: {"type":"message_delta","delta":{"stop_reason":"end_turn"},"usage":{"output_tokens":12}}
|
|
175
|
+
|
|
176
|
+
event: message_stop
|
|
177
|
+
data: {"type":"message_stop"}
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
# Message Batches API — TypeScript
|
|
181
|
+
|
|
182
|
+
The Batches API (`POST /v1/messages/batches`) processes Messages API requests asynchronously at 50% of standard prices.
|
|
183
|
+
|
|
184
|
+
## Key Facts
|
|
185
|
+
|
|
186
|
+
- Up to 100,000 requests or 256 MB per batch
|
|
187
|
+
- Most batches complete within 1 hour; maximum 24 hours
|
|
188
|
+
- Results available for 29 days after creation
|
|
189
|
+
- 50% cost reduction on all token usage
|
|
190
|
+
- All Messages API features supported (vision, tools, caching, etc.)
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## Create a Batch
|
|
195
|
+
|
|
196
|
+
```typescript
|
|
197
|
+
import Anthropic from "@anthropic-ai/sdk";
|
|
198
|
+
|
|
199
|
+
const client = new Anthropic();
|
|
200
|
+
|
|
201
|
+
const messageBatch = await client.messages.batches.create({
|
|
202
|
+
requests: [
|
|
203
|
+
{
|
|
204
|
+
custom_id: "request-1",
|
|
205
|
+
params: {
|
|
206
|
+
model: "claude-opus-4-8",
|
|
207
|
+
max_tokens: 16000,
|
|
208
|
+
messages: [
|
|
209
|
+
{ role: "user", content: "Summarize climate change impacts" },
|
|
210
|
+
],
|
|
211
|
+
},
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
custom_id: "request-2",
|
|
215
|
+
params: {
|
|
216
|
+
model: "claude-opus-4-8",
|
|
217
|
+
max_tokens: 16000,
|
|
218
|
+
messages: [
|
|
219
|
+
{ role: "user", content: "Explain quantum computing basics" },
|
|
220
|
+
],
|
|
221
|
+
},
|
|
222
|
+
},
|
|
223
|
+
],
|
|
224
|
+
});
|
|
225
|
+
|
|
226
|
+
console.log(`Batch ID: ${messageBatch.id}`);
|
|
227
|
+
console.log(`Status: ${messageBatch.processing_status}`);
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## Poll for Completion
|
|
233
|
+
|
|
234
|
+
```typescript
|
|
235
|
+
let batch;
|
|
236
|
+
while (true) {
|
|
237
|
+
batch = await client.messages.batches.retrieve(messageBatch.id);
|
|
238
|
+
if (batch.processing_status === "ended") break;
|
|
239
|
+
console.log(
|
|
240
|
+
`Status: ${batch.processing_status}, processing: ${batch.request_counts.processing}`,
|
|
241
|
+
);
|
|
242
|
+
await new Promise((resolve) => setTimeout(resolve, 60_000));
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
console.log("Batch complete!");
|
|
246
|
+
console.log(`Succeeded: ${batch.request_counts.succeeded}`);
|
|
247
|
+
console.log(`Errored: ${batch.request_counts.errored}`);
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
## Retrieve Results
|
|
253
|
+
|
|
254
|
+
```typescript
|
|
255
|
+
for await (const result of await client.messages.batches.results(
|
|
256
|
+
messageBatch.id,
|
|
257
|
+
)) {
|
|
258
|
+
switch (result.result.type) {
|
|
259
|
+
case "succeeded":
|
|
260
|
+
console.log(
|
|
261
|
+
`[${result.custom_id}] ${result.result.message.content[0].text.slice(0, 100)}`,
|
|
262
|
+
);
|
|
263
|
+
break;
|
|
264
|
+
case "errored":
|
|
265
|
+
if (result.result.error.type === "invalid_request") {
|
|
266
|
+
console.log(`[${result.custom_id}] Validation error - fix and retry`);
|
|
267
|
+
} else {
|
|
268
|
+
console.log(`[${result.custom_id}] Server error - safe to retry`);
|
|
269
|
+
}
|
|
270
|
+
break;
|
|
271
|
+
case "expired":
|
|
272
|
+
console.log(`[${result.custom_id}] Expired - resubmit`);
|
|
273
|
+
break;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
## Cancel a Batch
|
|
281
|
+
|
|
282
|
+
```typescript
|
|
283
|
+
const cancelled = await client.messages.batches.cancel(messageBatch.id);
|
|
284
|
+
console.log(`Status: ${cancelled.processing_status}`); // "canceling"
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
# Files API — TypeScript
|
|
288
|
+
|
|
289
|
+
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.
|
|
290
|
+
|
|
291
|
+
**Beta:** Pass `betas: ["files-api-2025-04-14"]` in your API calls (the SDK sets the required header automatically).
|
|
292
|
+
|
|
293
|
+
## Key Facts
|
|
294
|
+
|
|
295
|
+
- Maximum file size: 500 MB
|
|
296
|
+
- Total storage: 100 GB per organization
|
|
297
|
+
- Files persist until deleted
|
|
298
|
+
- File operations (upload, list, delete) are free; content used in messages is billed as input tokens
|
|
299
|
+
- Not available on Amazon Bedrock or Google Vertex AI
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
## Upload a File
|
|
304
|
+
|
|
305
|
+
```typescript
|
|
306
|
+
import Anthropic, { toFile } from "@anthropic-ai/sdk";
|
|
307
|
+
import fs from "fs";
|
|
308
|
+
|
|
309
|
+
const client = new Anthropic();
|
|
310
|
+
|
|
311
|
+
const uploaded = await client.beta.files.upload({
|
|
312
|
+
file: await toFile(fs.createReadStream("report.pdf"), undefined, {
|
|
313
|
+
type: "application/pdf",
|
|
314
|
+
}),
|
|
315
|
+
betas: ["files-api-2025-04-14"],
|
|
316
|
+
});
|
|
317
|
+
|
|
318
|
+
console.log(`File ID: ${uploaded.id}`);
|
|
319
|
+
console.log(`Size: ${uploaded.size_bytes} bytes`);
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
---
|
|
323
|
+
|
|
324
|
+
## Use a File in Messages
|
|
325
|
+
|
|
326
|
+
### PDF / Text Document
|
|
327
|
+
|
|
328
|
+
```typescript
|
|
329
|
+
const response = await client.beta.messages.create({
|
|
330
|
+
model: "claude-opus-4-8",
|
|
331
|
+
max_tokens: 16000,
|
|
332
|
+
messages: [
|
|
333
|
+
{
|
|
334
|
+
role: "user",
|
|
335
|
+
content: [
|
|
336
|
+
{ type: "text", text: "Summarize the key findings in this report." },
|
|
337
|
+
{
|
|
338
|
+
type: "document",
|
|
339
|
+
source: { type: "file", file_id: uploaded.id },
|
|
340
|
+
title: "Q4 Report",
|
|
341
|
+
citations: { enabled: true },
|
|
342
|
+
},
|
|
343
|
+
],
|
|
344
|
+
},
|
|
345
|
+
],
|
|
346
|
+
betas: ["files-api-2025-04-14"],
|
|
347
|
+
});
|
|
348
|
+
|
|
349
|
+
console.log(response.content[0].text);
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
---
|
|
353
|
+
|
|
354
|
+
## Manage Files
|
|
355
|
+
|
|
356
|
+
### List Files
|
|
357
|
+
|
|
358
|
+
```typescript
|
|
359
|
+
const files = await client.beta.files.list({
|
|
360
|
+
betas: ["files-api-2025-04-14"],
|
|
361
|
+
});
|
|
362
|
+
for (const f of files.data) {
|
|
363
|
+
console.log(`${f.id}: ${f.filename} (${f.size_bytes} bytes)`);
|
|
364
|
+
}
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
### Delete a File
|
|
368
|
+
|
|
369
|
+
```typescript
|
|
370
|
+
await client.beta.files.delete("file_011CNha8iCJcU1wXNR6q4V8w", {
|
|
371
|
+
betas: ["files-api-2025-04-14"],
|
|
372
|
+
});
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
### Download a File
|
|
376
|
+
|
|
377
|
+
```typescript
|
|
378
|
+
const response = await client.beta.files.download(
|
|
379
|
+
"file_011CNha8iCJcU1wXNR6q4V8w",
|
|
380
|
+
{ betas: ["files-api-2025-04-14"] },
|
|
381
|
+
);
|
|
382
|
+
const content = Buffer.from(await response.arrayBuffer());
|
|
383
|
+
await fs.promises.writeFile("output.txt", content);
|
|
384
|
+
```
|