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 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.86.1"
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.86.1 wire annotations and small Python conveniences.
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.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.2/docs
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.2/CHANGELOG.md
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](https://img.shields.io/pypi/v/pi-agent-python-sdk.svg?style=flat-square)][pypi]
27
37
  [![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-3776AB?style=flat-square)][metadata]
28
38
  [![MIT license](https://img.shields.io/badge/license-MIT-blue?style=flat-square)][license]
29
39
 
30
- **Use your installed Pi coding agent as a Python API. Stream responses,
31
- continue conversations, and control sessions from Python.**
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
- [Pi](https://github.com/earendil-works/pi) is an open-source coding agent that
34
- runs in your terminal. This unofficial community SDK launches the Pi CLI in RPC
35
- mode and exposes prompts, streaming events, and sessions through typed
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.86.1 |
70
- | Pi **0.85.1+** | Minimum accepted version; **0.86.1** is the tested baseline |
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.86.1
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.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.86.1** |
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.2
334
- [metadata]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.2/pyproject.toml
335
- [license]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.2/LICENSE
336
- [compatibility]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.2/docs/compatibility.md
337
- [errors]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.2/docs/errors.md
338
- [stream-example]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.2/examples/stream.py
339
- [constructor-options]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.2/docs/api.md#constructor-options
340
- [extensions]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.2/docs/usage.md#using-your-own-extensions
341
- [ui-example]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.2/examples/ui.py
342
- [rpc]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.2/docs/rpc.md
343
- [commands]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.2/docs/api.md#all-33-rpc-commands
344
- [usage]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.2/docs/usage.md
345
- [api]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.2/docs/api.md
346
- [examples]: https://github.com/cheenulabs/pi-agent-python-sdk/tree/v0.2.2/examples
347
- [contributing]: https://github.com/cheenulabs/pi-agent-python-sdk/blob/v0.2.2/CONTRIBUTING.md
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=u4MGYX9IiPUfiXzeiY8UUdKnJ5IBq2s1BFhsQMgwJlU,6965
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=R7LoyIyc0z7gzOL38ZOcbxOhL9ky7owL22RtELp6aMU,23389
14
- pi_agent_python_sdk-0.2.2.dist-info/METADATA,sha256=5GvsUBJtw2fWBUBmyx02VEWwhmpwoYATaHBTO5PXA5I,12671
15
- pi_agent_python_sdk-0.2.2.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
16
- pi_agent_python_sdk-0.2.2.dist-info/licenses/LICENSE,sha256=VVC0d0PIT1GtbRUJluzmcIv-UYtsqsBfvWLFu5Qrbco,1067
17
- pi_agent_python_sdk-0.2.2.dist-info/RECORD,,
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,,