@preapexis/piexis 0.2.2 → 0.2.5
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/README.md +85 -131
- package/apps/server/src/index.ts +97 -0
- package/apps/server/src/session-manager.ts +95 -0
- package/apps/server/src/workspace.ts +39 -0
- package/{tsconfig.json → apps/server/tsconfig.json} +3 -3
- package/apps/web/dist/assets/index-D4n3_lAw.js +10 -0
- package/apps/web/dist/assets/index-igiK0FPY.css +1 -0
- package/apps/web/dist/index.html +3 -0
- package/bin/piexis-web.mjs +24 -0
- 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/extensions/webui.ts +45 -0
- 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 +41 -14
- package/packages/pi-integration/src/rpc-client.ts +99 -0
- package/packages/shared/src/index.ts +27 -0
- package/prompts/init.md +10 -2
- package/prompts/summary.md +7 -6
- package/schemas/agent.schema.json +48 -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/themes/midnight.json +81 -0
- package/.github/workflows/publish.yml +0 -35
- package/AGENTS.md +0 -58
- 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/scripts/release.mjs +0 -32
- 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/skills-lock.json +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/skills-routing.test.mjs +0 -51
- 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,179 +0,0 @@
|
|
|
1
|
-
# Streaming - Python
|
|
2
|
-
|
|
3
|
-
## Quick Start
|
|
4
|
-
|
|
5
|
-
```python
|
|
6
|
-
with client.messages.stream(
|
|
7
|
-
model="claude-opus-5",
|
|
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-5",
|
|
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
|
-
### Low-level: `stream=True`
|
|
28
|
-
|
|
29
|
-
`messages.stream()` (above) is the recommended helper - it accumulates state and exposes `text_stream` / `get_final_message()`. If you only need the raw event iterator and want lower memory use, pass `stream=True` to `messages.create()` instead:
|
|
30
|
-
|
|
31
|
-
```python
|
|
32
|
-
for event in client.messages.create(
|
|
33
|
-
model="claude-opus-5",
|
|
34
|
-
max_tokens=64000,
|
|
35
|
-
messages=[{"role": "user", "content": "Write a story"}],
|
|
36
|
-
stream=True,
|
|
37
|
-
):
|
|
38
|
-
print(event.type)
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
No final-message accumulation is done for you in this form.
|
|
42
|
-
|
|
43
|
-
---
|
|
44
|
-
|
|
45
|
-
## Handling Different Content Types
|
|
46
|
-
|
|
47
|
-
Claude may return text, thinking blocks, or tool use. Handle each appropriately:
|
|
48
|
-
|
|
49
|
-
> **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.
|
|
50
|
-
|
|
51
|
-
```python
|
|
52
|
-
with client.messages.stream(
|
|
53
|
-
model="claude-opus-5",
|
|
54
|
-
max_tokens=64000,
|
|
55
|
-
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
|
|
56
|
-
messages=[{"role": "user", "content": "Analyze this problem"}]
|
|
57
|
-
) as stream:
|
|
58
|
-
for event in stream:
|
|
59
|
-
if event.type == "content_block_start":
|
|
60
|
-
if event.content_block.type == "thinking":
|
|
61
|
-
print("\n[Thinking...]")
|
|
62
|
-
elif event.content_block.type == "text":
|
|
63
|
-
print("\n[Response:]")
|
|
64
|
-
|
|
65
|
-
elif event.type == "content_block_delta":
|
|
66
|
-
if event.delta.type == "thinking_delta":
|
|
67
|
-
print(event.delta.thinking, end="", flush=True)
|
|
68
|
-
elif event.delta.type == "text_delta":
|
|
69
|
-
print(event.delta.text, end="", flush=True)
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
---
|
|
73
|
-
|
|
74
|
-
## Streaming with Tool Use
|
|
75
|
-
|
|
76
|
-
The Python tool runner supports streaming: pass `stream=True` to `client.beta.messages.tool_runner(...)` and each iteration yields a stream you consume event-by-event, with `get_final_message()` for the accumulated message per turn (see `shared/tool-use-concepts.md` -> Tool Runner vs Manual Loop). Use the manual-loop pattern below only when you're not using the tool runner and need per-token streaming with tools:
|
|
77
|
-
|
|
78
|
-
```python
|
|
79
|
-
with client.messages.stream(
|
|
80
|
-
model="claude-opus-5",
|
|
81
|
-
max_tokens=64000,
|
|
82
|
-
tools=tools,
|
|
83
|
-
messages=messages
|
|
84
|
-
) as stream:
|
|
85
|
-
for text in stream.text_stream:
|
|
86
|
-
print(text, end="", flush=True)
|
|
87
|
-
|
|
88
|
-
response = stream.get_final_message()
|
|
89
|
-
# Continue with tool execution if response.stop_reason == "tool_use"
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
---
|
|
93
|
-
|
|
94
|
-
## Getting the Final Message
|
|
95
|
-
|
|
96
|
-
```python
|
|
97
|
-
with client.messages.stream(
|
|
98
|
-
model="claude-opus-5",
|
|
99
|
-
max_tokens=64000,
|
|
100
|
-
messages=[{"role": "user", "content": "Hello"}]
|
|
101
|
-
) as stream:
|
|
102
|
-
for text in stream.text_stream:
|
|
103
|
-
print(text, end="", flush=True)
|
|
104
|
-
|
|
105
|
-
# Get full message after streaming
|
|
106
|
-
final_message = stream.get_final_message()
|
|
107
|
-
print(f"\n\nTokens used: {final_message.usage.output_tokens}")
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
---
|
|
111
|
-
|
|
112
|
-
## Streaming with Progress Updates
|
|
113
|
-
|
|
114
|
-
```python
|
|
115
|
-
def stream_with_progress(client, **kwargs):
|
|
116
|
-
"""Stream a response with progress updates."""
|
|
117
|
-
total_tokens = 0
|
|
118
|
-
content_parts = []
|
|
119
|
-
|
|
120
|
-
with client.messages.stream(**kwargs) as stream:
|
|
121
|
-
for event in stream:
|
|
122
|
-
if event.type == "content_block_delta":
|
|
123
|
-
if event.delta.type == "text_delta":
|
|
124
|
-
text = event.delta.text
|
|
125
|
-
content_parts.append(text)
|
|
126
|
-
print(text, end="", flush=True)
|
|
127
|
-
|
|
128
|
-
elif event.type == "message_delta":
|
|
129
|
-
if event.usage and event.usage.output_tokens is not None:
|
|
130
|
-
total_tokens = event.usage.output_tokens
|
|
131
|
-
|
|
132
|
-
final_message = stream.get_final_message()
|
|
133
|
-
|
|
134
|
-
print(f"\n\n[Tokens used: {total_tokens}]")
|
|
135
|
-
return "".join(content_parts)
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
---
|
|
139
|
-
|
|
140
|
-
## Error Handling in Streams
|
|
141
|
-
|
|
142
|
-
```python
|
|
143
|
-
try:
|
|
144
|
-
with client.messages.stream(
|
|
145
|
-
model="claude-opus-5",
|
|
146
|
-
max_tokens=64000,
|
|
147
|
-
messages=[{"role": "user", "content": "Write a story"}]
|
|
148
|
-
) as stream:
|
|
149
|
-
for text in stream.text_stream:
|
|
150
|
-
print(text, end="", flush=True)
|
|
151
|
-
except anthropic.APIConnectionError:
|
|
152
|
-
print("\nConnection lost. Please retry.")
|
|
153
|
-
except anthropic.RateLimitError:
|
|
154
|
-
print("\nRate limited. Please wait and retry.")
|
|
155
|
-
except anthropic.APIStatusError as e:
|
|
156
|
-
print(f"\nAPI error: {e.status_code}")
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
---
|
|
160
|
-
|
|
161
|
-
## Stream Event Types
|
|
162
|
-
|
|
163
|
-
| Event Type | Description | When it fires |
|
|
164
|
-
| --------------------- | --------------------------- | --------------------------------- |
|
|
165
|
-
| `message_start` | Contains message metadata | Once at the beginning |
|
|
166
|
-
| `content_block_start` | New content block beginning | When a text/tool_use block starts |
|
|
167
|
-
| `content_block_delta` | Incremental content update | For each token/chunk |
|
|
168
|
-
| `content_block_stop` | Content block complete | When a block finishes |
|
|
169
|
-
| `message_delta` | Message-level updates | Contains `stop_reason`, usage |
|
|
170
|
-
| `message_stop` | Message complete | Once at the end |
|
|
171
|
-
|
|
172
|
-
## Best Practices
|
|
173
|
-
|
|
174
|
-
1. **Always flush output** - Use `flush=True` to show tokens immediately
|
|
175
|
-
2. **Handle partial responses** - If the stream is interrupted, you may have incomplete content
|
|
176
|
-
3. **Track token usage** - The `message_delta` event contains usage information
|
|
177
|
-
4. **Use timeouts** - Set appropriate timeouts for your application
|
|
178
|
-
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
|
|
179
|
-
6. **Large `max_tokens` without streaming raises `ValueError`** - The SDK refuses non-streaming requests it estimates will exceed ~10 minutes (idle connections drop). Pass `stream=True` / use `messages.stream()`, or explicitly override `timeout`, to suppress the guard.
|