pi-agent-python-sdk 0.2.2__py3-none-any.whl → 0.2.3__py3-none-any.whl
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.
- pi_agent/_launch.py +1 -1
- pi_agent/types.py +37 -1
- {pi_agent_python_sdk-0.2.2.dist-info → pi_agent_python_sdk-0.2.3.dist-info}/METADATA +40 -29
- {pi_agent_python_sdk-0.2.2.dist-info → pi_agent_python_sdk-0.2.3.dist-info}/RECORD +6 -6
- {pi_agent_python_sdk-0.2.2.dist-info → pi_agent_python_sdk-0.2.3.dist-info}/WHEEL +0 -0
- {pi_agent_python_sdk-0.2.2.dist-info → pi_agent_python_sdk-0.2.3.dist-info}/licenses/LICENSE +0 -0
pi_agent/_launch.py
CHANGED
|
@@ -13,7 +13,7 @@ from ._transport import _close_process_pipes, _wait_for_exit
|
|
|
13
13
|
from .errors import PiProcessError, PiVersionError
|
|
14
14
|
|
|
15
15
|
MINIMUM_PI_VERSION = "0.85.1"
|
|
16
|
-
TESTED_PI_VERSION = "0.
|
|
16
|
+
TESTED_PI_VERSION = "0.87.0"
|
|
17
17
|
|
|
18
18
|
# The client owns these options. In particular --print consumes an initial prompt.
|
|
19
19
|
_RESERVED = {
|
pi_agent/types.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"""Pi 0.
|
|
1
|
+
"""Pi 0.87.0 wire annotations and small Python conveniences.
|
|
2
2
|
|
|
3
3
|
Wire fields retain Pi's spelling and remain ordinary dictionaries. These
|
|
4
4
|
annotations describe known shapes, not a recursive runtime validator: extensions
|
|
@@ -221,6 +221,24 @@ class ModelPromptCache(TypedDict, total=False):
|
|
|
221
221
|
long: float
|
|
222
222
|
|
|
223
223
|
|
|
224
|
+
class ModelImageResizeOptions(TypedDict, total=False):
|
|
225
|
+
maxWidth: float
|
|
226
|
+
maxHeight: float
|
|
227
|
+
maxBytes: float
|
|
228
|
+
jpegQuality: float
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
class ModelImageInputLimits(TypedDict, total=False):
|
|
232
|
+
resize: ModelImageResizeOptions
|
|
233
|
+
maxPerMessage: float
|
|
234
|
+
maxPerRequest: float
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
class ModelInputLimits(TypedDict, total=False):
|
|
238
|
+
maxRequestBytes: float
|
|
239
|
+
images: ModelImageInputLimits
|
|
240
|
+
|
|
241
|
+
|
|
224
242
|
class Model(TypedDict):
|
|
225
243
|
id: str
|
|
226
244
|
name: str
|
|
@@ -230,6 +248,7 @@ class Model(TypedDict):
|
|
|
230
248
|
reasoning: bool
|
|
231
249
|
thinkingLevelMap: NotRequired[dict[ThinkingLevel, str | None]]
|
|
232
250
|
input: list[Literal["text", "image"]]
|
|
251
|
+
inputLimits: NotRequired[ModelInputLimits]
|
|
233
252
|
cost: ModelCost
|
|
234
253
|
contextWindow: float
|
|
235
254
|
maxTokens: float
|
|
@@ -378,6 +397,22 @@ class CustomMessageEntry(_EntryBase):
|
|
|
378
397
|
display: bool
|
|
379
398
|
|
|
380
399
|
|
|
400
|
+
# Keep the list arms separate so typing rejects mixed ToolCall and ImageContent lists.
|
|
401
|
+
ContextEditableContent: TypeAlias = (
|
|
402
|
+
str | list[TextContent | ImageContent] | list[TextContent | ThinkingContent | ToolCall]
|
|
403
|
+
)
|
|
404
|
+
|
|
405
|
+
|
|
406
|
+
class ContextEditReplacement(TypedDict):
|
|
407
|
+
content: ContextEditableContent
|
|
408
|
+
|
|
409
|
+
|
|
410
|
+
class ContextEditEntry(_EntryBase):
|
|
411
|
+
type: Literal["context_edit"]
|
|
412
|
+
targetId: str
|
|
413
|
+
replacement: ContextEditReplacement | None
|
|
414
|
+
|
|
415
|
+
|
|
381
416
|
class LabelEntry(_EntryBase):
|
|
382
417
|
type: Literal["label"]
|
|
383
418
|
targetId: str
|
|
@@ -398,6 +433,7 @@ SessionEntry: TypeAlias = (
|
|
|
398
433
|
| BranchSummaryEntry
|
|
399
434
|
| CustomEntry
|
|
400
435
|
| CustomMessageEntry
|
|
436
|
+
| ContextEditEntry
|
|
401
437
|
| LabelEntry
|
|
402
438
|
| SessionInfoEntry
|
|
403
439
|
)
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: pi-agent-python-sdk
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.3
|
|
4
4
|
Summary: Typed async and synchronous Python clients for Pi's agent RPC runtime
|
|
5
5
|
Project-URL: Homepage, https://github.com/cheenulabs/pi-agent-python-sdk
|
|
6
|
-
Project-URL: Documentation, https://github.com/cheenulabs/pi-agent-python-sdk/tree/v0.2.
|
|
6
|
+
Project-URL: Documentation, https://github.com/cheenulabs/pi-agent-python-sdk/tree/v0.2.3/docs
|
|
7
7
|
Project-URL: Issues, https://github.com/cheenulabs/pi-agent-python-sdk/issues
|
|
8
|
-
Project-URL: Changelog, https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.
|
|
8
|
+
Project-URL: Changelog, https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.3/CHANGELOG.md
|
|
9
9
|
Author: cheenulabs
|
|
10
10
|
License-Expression: MIT
|
|
11
11
|
License-File: LICENSE
|
|
@@ -23,17 +23,28 @@ Description-Content-Type: text/markdown
|
|
|
23
23
|
|
|
24
24
|
# Pi Agent Python SDK
|
|
25
25
|
|
|
26
|
+
<p align="center">
|
|
27
|
+
<strong>Your terminal agent. Your Python API.</strong>
|
|
28
|
+
</p>
|
|
29
|
+
|
|
30
|
+
<p align="center">
|
|
31
|
+
<a href="https://github.com/cheenulabs/pi-agent-python-sdk">
|
|
32
|
+
<img alt="Pi Agent Python SDK" src="https://raw.githubusercontent.com/cheenulabs/pi-agent-python-sdk/v0.2.3/docs/logo.svg" width="160">
|
|
33
|
+
</a>
|
|
34
|
+
</p>
|
|
35
|
+
|
|
26
36
|
[][pypi]
|
|
27
37
|
[][metadata]
|
|
28
38
|
[][license]
|
|
29
39
|
|
|
30
|
-
|
|
31
|
-
|
|
40
|
+
[Pi](https://github.com/earendil-works/pi) is the coding agent that runs in your
|
|
41
|
+
terminal. This unofficial community SDK puts *your* Pi behind a typed sync and
|
|
42
|
+
async Python API — run prompts, stream events, and keep sessions going without
|
|
43
|
+
leaving Python.
|
|
32
44
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
synchronous and asynchronous Python APIs.
|
|
45
|
+
<!-- Inline player: GitHub only auto-embeds bare user-attachments URLs
|
|
46
|
+
(repo-relative / raw / release URLs are stripped or become download links). -->
|
|
47
|
+
https://github.com/user-attachments/assets/c64dde3a-e812-42d4-a005-aa60df861e92
|
|
37
48
|
|
|
38
49
|
```python
|
|
39
50
|
from pi_agent import PiClient
|
|
@@ -66,8 +77,8 @@ Requires an installed, configured Pi CLI — see [Prerequisites](#prerequisites)
|
|
|
66
77
|
| Requirement | Notes |
|
|
67
78
|
| --- | --- |
|
|
68
79
|
| Python **3.11+** | Package metadata requires 3.11 or newer |
|
|
69
|
-
| Node.js **22.19.0+** | Required by Pi 0.
|
|
70
|
-
| Pi **0.85.1+** | Minimum accepted version; **0.
|
|
80
|
+
| Node.js **22.19.0+** | Required by Pi 0.87.0 |
|
|
81
|
+
| Pi **0.85.1+** | Minimum accepted version; **0.87.0** is the tested baseline |
|
|
71
82
|
| Model provider | Required; configure with the Pi CLI (see Quick start) |
|
|
72
83
|
|
|
73
84
|
## Quick start
|
|
@@ -75,7 +86,7 @@ Requires an installed, configured Pi CLI — see [Prerequisites](#prerequisites)
|
|
|
75
86
|
Install Pi with Node.js **22.19.0 or newer** (pin matches the tested baseline):
|
|
76
87
|
|
|
77
88
|
```sh
|
|
78
|
-
npm install -g @earendil-works/pi-coding-agent@0.
|
|
89
|
+
npm install -g @earendil-works/pi-coding-agent@0.87.0
|
|
79
90
|
pi --version
|
|
80
91
|
```
|
|
81
92
|
|
|
@@ -304,7 +315,7 @@ the [command reference][commands] for every method.
|
|
|
304
315
|
| [RPC structure][rpc] | How the Python client maps to Pi's protocol |
|
|
305
316
|
| [Compatibility][compatibility] | Runtime versions and platform validation |
|
|
306
317
|
| [Examples][examples] | Runnable sync, async, streaming, sessions, steering, and UI examples |
|
|
307
|
-
| [Release notes][release] | Changes included in 0.2.
|
|
318
|
+
| [Release notes][release] | Changes included in 0.2.3 |
|
|
308
319
|
|
|
309
320
|
Examples use your configured Pi and may make provider calls. Development checks
|
|
310
321
|
use an isolated local test provider; see [CONTRIBUTING.md][contributing] for
|
|
@@ -315,7 +326,7 @@ setup and validation commands.
|
|
|
315
326
|
| Symptom | What to check |
|
|
316
327
|
| --- | --- |
|
|
317
328
|
| `pi` not found / launch fails | Ensure the Pi CLI is on `PATH`, or pass `executable=` to the client |
|
|
318
|
-
| Version rejected | Upgrade to Pi **0.85.1+**; prefer the tested baseline **0.
|
|
329
|
+
| Version rejected | Upgrade to Pi **0.85.1+**; prefer the tested baseline **0.87.0** |
|
|
319
330
|
| No model / auth errors | Run `pi` once and complete provider setup |
|
|
320
331
|
| Unexpected file or command changes | Review Pi tool/extension settings before automation |
|
|
321
332
|
|
|
@@ -330,20 +341,20 @@ setup and validation commands.
|
|
|
330
341
|
[MIT][license]
|
|
331
342
|
|
|
332
343
|
[pypi]: https://pypi.org/project/pi-agent-python-sdk/
|
|
333
|
-
[release]: https://github.com/cheenulabs/pi-agent-python-sdk/releases/tag/v0.2.
|
|
334
|
-
[metadata]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.
|
|
335
|
-
[license]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.
|
|
336
|
-
[compatibility]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.
|
|
337
|
-
[errors]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.
|
|
338
|
-
[stream-example]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.
|
|
339
|
-
[constructor-options]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.
|
|
340
|
-
[extensions]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.
|
|
341
|
-
[ui-example]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.
|
|
342
|
-
[rpc]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.
|
|
343
|
-
[commands]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.
|
|
344
|
-
[usage]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.
|
|
345
|
-
[api]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.
|
|
346
|
-
[examples]: https://github.com/cheenulabs/pi-agent-python-sdk/tree/v0.2.
|
|
347
|
-
[contributing]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.
|
|
344
|
+
[release]: https://github.com/cheenulabs/pi-agent-python-sdk/releases/tag/v0.2.3
|
|
345
|
+
[metadata]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.3/pyproject.toml
|
|
346
|
+
[license]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.3/LICENSE
|
|
347
|
+
[compatibility]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.3/docs/compatibility.md
|
|
348
|
+
[errors]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.3/docs/errors.md
|
|
349
|
+
[stream-example]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.3/examples/stream.py
|
|
350
|
+
[constructor-options]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.3/docs/api.md#constructor-options
|
|
351
|
+
[extensions]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.3/docs/usage.md#using-your-own-extensions
|
|
352
|
+
[ui-example]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.3/examples/ui.py
|
|
353
|
+
[rpc]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.3/docs/rpc.md
|
|
354
|
+
[commands]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.3/docs/api.md#all-33-rpc-commands
|
|
355
|
+
[usage]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.3/docs/usage.md
|
|
356
|
+
[api]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.3/docs/api.md
|
|
357
|
+
[examples]: https://github.com/cheenulabs/pi-agent-python-sdk/tree/v0.2.3/examples
|
|
358
|
+
[contributing]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.3/CONTRIBUTING.md
|
|
348
359
|
[issues]: https://github.com/cheenulabs/pi-agent-python-sdk/issues
|
|
349
360
|
[security]: https://github.com/cheenulabs/pi-agent-python-sdk/security/advisories/new
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
pi_agent/__init__.py,sha256=Tb-KJ6Ur9H0WfwGdk5DkPQtTNKsLPeqcJx3lEh67gJI,1117
|
|
2
2
|
pi_agent/_collections.py,sha256=1oSSh9u2OAXlVCu5t392go3wTQ2AruYm74prVfKBbgc,2174
|
|
3
3
|
pi_agent/_events.py,sha256=fkt5KAM5esgdYHxzGX6fLXrTDv4jhzhcypPYy9z3HvM,5068
|
|
4
|
-
pi_agent/_launch.py,sha256=
|
|
4
|
+
pi_agent/_launch.py,sha256=4wzgrWdkKLWdnhIbZoTaVCP_XJM_1TbU0_iuu_esxRg,6965
|
|
5
5
|
pi_agent/_observation.py,sha256=GUe5VkoB5dFx1NY9VwAILjSRFa-th8O17OHMmcQ8q9Y,3297
|
|
6
6
|
pi_agent/_runs.py,sha256=hxKhs5Oi8NLMdufJ72cdXy8tffdZ04XEb2xJzWfOiaQ,14219
|
|
7
7
|
pi_agent/_transport.py,sha256=7mFkVjNSWBzvZw4zGwjtDNTe_FxF0Vxl0SD2z-58QuM,20040
|
|
@@ -10,8 +10,8 @@ pi_agent/client.py,sha256=gsCV9CyDmjrUf21DpqX3TVKyHXMu5e_CXUzY4D1pcOE,43867
|
|
|
10
10
|
pi_agent/errors.py,sha256=FJtF8jwfGITMp_MzNHbUKutYRrdx_BH8kJI7-17WbJk,2573
|
|
11
11
|
pi_agent/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
12
12
|
pi_agent/sync.py,sha256=dPyGHpJGmhg09u3QFrYdSJYGUB7_8_kupBxXCm8gu6o,33658
|
|
13
|
-
pi_agent/types.py,sha256=
|
|
14
|
-
pi_agent_python_sdk-0.2.
|
|
15
|
-
pi_agent_python_sdk-0.2.
|
|
16
|
-
pi_agent_python_sdk-0.2.
|
|
17
|
-
pi_agent_python_sdk-0.2.
|
|
13
|
+
pi_agent/types.py,sha256=WWwrAdb3zxaK8K91R1cx50Ub8x5n7AaIKi55WYod6gg,24289
|
|
14
|
+
pi_agent_python_sdk-0.2.3.dist-info/METADATA,sha256=truhh5EMadGiGnfKGAyG3_7VBLkaFILAlufVV1bv2BU,13077
|
|
15
|
+
pi_agent_python_sdk-0.2.3.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
|
|
16
|
+
pi_agent_python_sdk-0.2.3.dist-info/licenses/LICENSE,sha256=VVC0d0PIT1GtbRUJluzmcIv-UYtsqsBfvWLFu5Qrbco,1067
|
|
17
|
+
pi_agent_python_sdk-0.2.3.dist-info/RECORD,,
|
|
File without changes
|
{pi_agent_python_sdk-0.2.2.dist-info → pi_agent_python_sdk-0.2.3.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|