@preapexis/piexis 0.1.2 → 0.2.4
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/.github/workflows/publish.yml +35 -0
- package/AGENTS.md +21 -41
- package/README.md +75 -142
- package/extensions/agents.ts +205 -0
- package/extensions/ask-question.ts +54 -95
- package/extensions/recommended-tools.ts +62 -0
- package/extensions/ui.ts +204 -58
- package/lib/agent-config.ts +55 -0
- package/lib/agents.ts +208 -0
- package/lib/question-model.ts +98 -0
- package/lib/question-ui.ts +214 -0
- package/lib/recommended-tools.ts +119 -0
- package/lib/subagent-runner.ts +146 -0
- package/lib/ui-tips.json +41 -0
- package/package.json +9 -12
- package/prompts/init.md +10 -2
- package/prompts/summary.md +7 -6
- package/schemas/agent.schema.json +48 -0
- package/scripts/release.mjs +32 -0
- package/skills/{claude-api/LICENSE.txt → caveman/LICENSE} +2 -2
- package/skills/caveman/LICENSE-MIT +21 -0
- package/skills/caveman/NOTICE +10 -0
- package/skills/caveman/SKILL.md +89 -0
- package/skills/find-skills/SKILL.md +141 -0
- package/skills/ponytail/LICENSE +21 -0
- package/skills/ponytail/NOTICE +9 -0
- package/skills/ponytail/SKILL.md +52 -0
- package/skills-lock.json +6 -0
- package/tests/agents.test.mjs +605 -0
- package/tests/ask-question-pty.test.mjs +16 -0
- package/tests/ask-question.test.mjs +269 -0
- package/tests/fixtures/agents-provider.ts +55 -0
- package/tests/fixtures/ask-question-pty.py +91 -0
- package/tests/fixtures/ask-question-terminal.mjs +69 -0
- package/tests/fixtures/recommended-tools-terminal.mjs +103 -0
- package/tests/init-workflow.test.mjs +31 -0
- package/tests/recommended-tools-pty.test.mjs +16 -0
- package/tests/recommended-tools.test.mjs +423 -0
- package/tests/resources.test.mjs +66 -0
- package/tests/skills-routing.test.mjs +7 -4
- package/tests/ui-tip-reload.test.mjs +70 -0
- package/tests/ui.test.mjs +450 -0
- package/tsconfig.json +1 -0
- package/.github/workflows/npm-publish.yml +0 -63
- package/PERMISSION_MODES_PLAN.md +0 -279
- package/WHAT_YOU_GET.md +0 -153
- package/eval/README.md +0 -72
- package/eval/permission-cases.json +0 -28
- package/eval/permissions.mjs +0 -103
- package/extensions/background-tasks.ts +0 -433
- package/extensions/background-worker.ts +0 -50
- package/extensions/glob.ts +0 -32
- package/extensions/mode.ts +0 -397
- package/lib/bash-approvals.ts +0 -113
- package/lib/bash-policy.ts +0 -164
- package/lib/mode-policy.ts +0 -174
- package/lib/path-policy.ts +0 -182
- package/lib/permission-classifier.ts +0 -128
- package/lib/permission-config.ts +0 -91
- package/lib/permission-denials.ts +0 -32
- package/lib/permission-intent.ts +0 -128
- package/lib/permission-taxonomy.ts +0 -15
- package/lib/task-broker.ts +0 -65
- package/lib/task-checkout.ts +0 -39
- package/lib/task-git.ts +0 -44
- package/lib/task-patch.ts +0 -106
- package/lib/task-permissions.ts +0 -51
- package/lib/task-report.ts +0 -62
- package/lib/task-worktree-policy.ts +0 -56
- package/skills/claude-api/SKILL.md +0 -572
- package/skills/claude-api/csharp/claude-api/README.md +0 -362
- package/skills/claude-api/csharp/claude-api/batches.md +0 -14
- package/skills/claude-api/csharp/claude-api/files-api.md +0 -25
- package/skills/claude-api/csharp/claude-api/streaming.md +0 -28
- package/skills/claude-api/csharp/claude-api/tool-use.md +0 -164
- package/skills/claude-api/curl/examples.md +0 -256
- package/skills/claude-api/curl/managed-agents.md +0 -371
- package/skills/claude-api/go/claude-api/README.md +0 -188
- package/skills/claude-api/go/claude-api/files-api.md +0 -23
- package/skills/claude-api/go/claude-api/streaming.md +0 -43
- package/skills/claude-api/go/claude-api/tool-use.md +0 -220
- package/skills/claude-api/go/managed-agents/README.md +0 -564
- package/skills/claude-api/java/claude-api/README.md +0 -238
- package/skills/claude-api/java/claude-api/files-api.md +0 -27
- package/skills/claude-api/java/claude-api/streaming.md +0 -24
- package/skills/claude-api/java/claude-api/tool-use.md +0 -228
- package/skills/claude-api/java/managed-agents/README.md +0 -443
- package/skills/claude-api/php/claude-api/README.md +0 -174
- package/skills/claude-api/php/claude-api/batches.md +0 -15
- package/skills/claude-api/php/claude-api/files-api.md +0 -13
- package/skills/claude-api/php/claude-api/streaming.md +0 -27
- package/skills/claude-api/php/claude-api/tool-use.md +0 -253
- package/skills/claude-api/php/managed-agents/README.md +0 -443
- package/skills/claude-api/python/claude-api/README.md +0 -565
- package/skills/claude-api/python/claude-api/batches.md +0 -198
- package/skills/claude-api/python/claude-api/files-api.md +0 -170
- package/skills/claude-api/python/claude-api/sdk-upgrade.md +0 -286
- package/skills/claude-api/python/claude-api/streaming.md +0 -179
- package/skills/claude-api/python/claude-api/tool-use.md +0 -627
- package/skills/claude-api/python/managed-agents/README.md +0 -335
- package/skills/claude-api/ruby/claude-api/README.md +0 -134
- package/skills/claude-api/ruby/claude-api/streaming.md +0 -16
- package/skills/claude-api/ruby/claude-api/tool-use.md +0 -41
- package/skills/claude-api/ruby/managed-agents/README.md +0 -394
- package/skills/claude-api/shared/admin-api.md +0 -179
- package/skills/claude-api/shared/agent-design.md +0 -101
- package/skills/claude-api/shared/anthropic-cli.md +0 -269
- package/skills/claude-api/shared/claude-platform-on-aws.md +0 -59
- package/skills/claude-api/shared/cost-optimization.md +0 -233
- package/skills/claude-api/shared/error-codes.md +0 -262
- package/skills/claude-api/shared/live-sources.md +0 -166
- package/skills/claude-api/shared/managed-agents-api-reference.md +0 -455
- package/skills/claude-api/shared/managed-agents-client-patterns.md +0 -220
- package/skills/claude-api/shared/managed-agents-core.md +0 -359
- package/skills/claude-api/shared/managed-agents-environments.md +0 -226
- package/skills/claude-api/shared/managed-agents-events.md +0 -290
- package/skills/claude-api/shared/managed-agents-memory.md +0 -201
- package/skills/claude-api/shared/managed-agents-multiagent.md +0 -260
- package/skills/claude-api/shared/managed-agents-onboarding.md +0 -82
- package/skills/claude-api/shared/managed-agents-outcomes.md +0 -108
- package/skills/claude-api/shared/managed-agents-overview.md +0 -77
- package/skills/claude-api/shared/managed-agents-scheduled-deployments.md +0 -156
- package/skills/claude-api/shared/managed-agents-self-hosted-sandboxes.md +0 -282
- package/skills/claude-api/shared/managed-agents-tools.md +0 -504
- package/skills/claude-api/shared/managed-agents-webhooks.md +0 -143
- package/skills/claude-api/shared/model-migration.md +0 -1872
- package/skills/claude-api/shared/models.md +0 -142
- package/skills/claude-api/shared/platform-availability.md +0 -53
- package/skills/claude-api/shared/prompt-audit.md +0 -223
- package/skills/claude-api/shared/prompt-caching.md +0 -292
- package/skills/claude-api/shared/token-counting.md +0 -56
- package/skills/claude-api/shared/tool-use-concepts.md +0 -526
- package/skills/claude-api/typescript/claude-api/README.md +0 -405
- package/skills/claude-api/typescript/claude-api/batches.md +0 -106
- package/skills/claude-api/typescript/claude-api/files-api.md +0 -98
- package/skills/claude-api/typescript/claude-api/streaming.md +0 -178
- package/skills/claude-api/typescript/claude-api/tool-use.md +0 -586
- package/skills/claude-api/typescript/managed-agents/README.md +0 -359
- package/tests/auto-permissions.test.mjs +0 -315
- package/tests/background-tasks.test.mjs +0 -27
- package/tests/background-worker.test.mjs +0 -60
- package/tests/bash-permissions.test.mjs +0 -276
- package/tests/glob.test.mjs +0 -31
- package/tests/mode.test.mjs +0 -62
- package/tests/permission-evaluation.test.mjs +0 -70
- package/tests/permission-foundation.test.mjs +0 -194
- package/tests/permission-policy.test.mjs +0 -158
- package/tests/runtime/README.md +0 -51
- package/tests/runtime/harness.mjs +0 -190
- package/tests/runtime/permissions.test.mjs +0 -192
- package/tests/runtime/tui.test.mjs +0 -60
- package/tests/task-integration.test.mjs +0 -324
- package/tests/task-permissions.test.mjs +0 -178
- package/tests/task-worktree-policy.test.mjs +0 -53
|
@@ -1,178 +0,0 @@
|
|
|
1
|
-
# Streaming - TypeScript
|
|
2
|
-
|
|
3
|
-
## Quick Start
|
|
4
|
-
|
|
5
|
-
```typescript
|
|
6
|
-
const stream = client.messages.stream({
|
|
7
|
-
model: "claude-opus-5",
|
|
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 / Claude Opus 5 / Opus 4.8 / Opus 4.7 / Opus 4.6:** Use `thinking: {type: "adaptive"}`. On Claude Opus 5 adaptive is also what you get by omitting `thinking` entirely. On older models, use `thinking: {type: "enabled", budget_tokens: N}` instead.
|
|
27
|
-
|
|
28
|
-
```typescript
|
|
29
|
-
const stream = client.messages.stream({
|
|
30
|
-
model: "claude-opus-5",
|
|
31
|
-
max_tokens: 64000,
|
|
32
|
-
thinking: { type: "adaptive", display: "summarized" }, // display opt-in: default is omitted (empty thinking text) on Fable 5 / Mythos 5 / Claude Opus 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-5",
|
|
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-5",
|
|
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
|
-
```
|