opencode-python-sdk 0.1.0__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.
- opencode/.generated.json +39 -0
- opencode/__init__.py +156 -0
- opencode/_base_client.py +518 -0
- opencode/_client.py +167 -0
- opencode/_constants.py +27 -0
- opencode/_errors.py +547 -0
- opencode/_exceptions.py +249 -0
- opencode/_models.py +54 -0
- opencode/_pagination.py +192 -0
- opencode/_qs.py +95 -0
- opencode/_resource.py +42 -0
- opencode/_server.py +327 -0
- opencode/_streaming.py +227 -0
- opencode/_types.py +77 -0
- opencode/_unions.py +46 -0
- opencode/_version.py +8 -0
- opencode/py.typed +0 -0
- opencode/resources/__init__.py +364 -0
- opencode/resources/agent.py +177 -0
- opencode/resources/command.py +98 -0
- opencode/resources/config.py +238 -0
- opencode/resources/credential.py +382 -0
- opencode/resources/debug.py +174 -0
- opencode/resources/event.py +84 -0
- opencode/resources/experimental.py +760 -0
- opencode/resources/file.py +353 -0
- opencode/resources/form.py +98 -0
- opencode/resources/generate.py +108 -0
- opencode/resources/integration.py +1023 -0
- opencode/resources/location.py +160 -0
- opencode/resources/mcp.py +488 -0
- opencode/resources/message.py +151 -0
- opencode/resources/migration.py +118 -0
- opencode/resources/model.py +175 -0
- opencode/resources/permission.py +698 -0
- opencode/resources/plugin.py +248 -0
- opencode/resources/project.py +185 -0
- opencode/resources/provider.py +181 -0
- opencode/resources/pty.py +517 -0
- opencode/resources/reference.py +98 -0
- opencode/resources/rpc.py +111 -0
- opencode/resources/server.py +228 -0
- opencode/resources/session.py +3553 -0
- opencode/resources/shell.py +410 -0
- opencode/resources/skill.py +98 -0
- opencode/resources/vcs.py +496 -0
- opencode/resources/voice.py +111 -0
- opencode/resources/websearch.py +182 -0
- opencode/resources/worktree.py +334 -0
- opencode/types/__init__.py +1462 -0
- opencode/types/_generated.py +8540 -0
- opencode_python_sdk-0.1.0.dist-info/METADATA +317 -0
- opencode_python_sdk-0.1.0.dist-info/RECORD +55 -0
- opencode_python_sdk-0.1.0.dist-info/WHEEL +4 -0
- opencode_python_sdk-0.1.0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: opencode-python-sdk
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Typed Python client for the OpenCode 2.x server API
|
|
5
|
+
Project-URL: Homepage, https://github.com/shrijayan/opencode-python-sdk
|
|
6
|
+
Project-URL: Documentation, https://github.com/shrijayan/opencode-python-sdk#readme
|
|
7
|
+
Project-URL: Repository, https://github.com/shrijayan/opencode-python-sdk
|
|
8
|
+
Project-URL: Issues, https://github.com/shrijayan/opencode-python-sdk/issues
|
|
9
|
+
Project-URL: Changelog, https://github.com/shrijayan/opencode-python-sdk/blob/main/CHANGELOG.md
|
|
10
|
+
Author: Shrijayan Rajendran
|
|
11
|
+
License-Expression: MIT
|
|
12
|
+
License-File: LICENSE
|
|
13
|
+
Keywords: agents,ai,client,coding-agent,opencode,sdk
|
|
14
|
+
Classifier: Development Status :: 4 - Beta
|
|
15
|
+
Classifier: Framework :: AsyncIO
|
|
16
|
+
Classifier: Framework :: Pydantic :: 2
|
|
17
|
+
Classifier: Framework :: Trio
|
|
18
|
+
Classifier: Intended Audience :: Developers
|
|
19
|
+
Classifier: Operating System :: OS Independent
|
|
20
|
+
Classifier: Programming Language :: Python :: 3
|
|
21
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
25
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
26
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
27
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
28
|
+
Classifier: Typing :: Typed
|
|
29
|
+
Requires-Python: >=3.10
|
|
30
|
+
Requires-Dist: anyio<5,>=4.4
|
|
31
|
+
Requires-Dist: httpx<1,>=0.27
|
|
32
|
+
Requires-Dist: pydantic<3,>=2.12
|
|
33
|
+
Requires-Dist: typing-extensions>=4.12
|
|
34
|
+
Description-Content-Type: text/markdown
|
|
35
|
+
|
|
36
|
+
# opencode-python-sdk
|
|
37
|
+
|
|
38
|
+
[](https://github.com/shrijayan/opencode-python-sdk/actions/workflows/ci.yml)
|
|
39
|
+
[](https://pypi.org/project/opencode-python-sdk/)
|
|
40
|
+
[](https://pypi.org/project/opencode-python-sdk/)
|
|
41
|
+
|
|
42
|
+
Typed Python client for the [OpenCode](https://github.com/anomalyco/opencode) 2.x server API.
|
|
43
|
+
|
|
44
|
+
> **Unofficial, community-maintained.** This package is not affiliated with or endorsed by the OpenCode team.
|
|
45
|
+
> If the OpenCode maintainers want to take it over, we are happy to transfer this repository and the `opencode-python-sdk`
|
|
46
|
+
> name on PyPI. Open an issue and we will hand it over.
|
|
47
|
+
|
|
48
|
+
- **Complete.** All 142 operations of the OpenCode 2.1 API, sync and async, with typed models for every request,
|
|
49
|
+
response and event (96 event types).
|
|
50
|
+
- **Generated from the source of truth.** The contract is exported from the same Effect `HttpApi` the official
|
|
51
|
+
TypeScript client is built from, so method names and request shapes match it exactly.
|
|
52
|
+
- **Safe to run in production.** Retries only when a request cannot have changed server state, bounded backoff that
|
|
53
|
+
honors `Retry-After`, typed errors for every declared server error, and timeouts on everything.
|
|
54
|
+
- **Forward compatible.** New fields, enum values, union variants and event types from newer servers are kept, not
|
|
55
|
+
rejected, so an older client keeps working after a server upgrade.
|
|
56
|
+
- **Batteries included.** Starts and stops `opencode serve` for you, auto-paginates lists, and streams events.
|
|
57
|
+
|
|
58
|
+
## Install
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
pip install opencode-python-sdk
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
The package imports as `opencode`. Requires Python 3.10 or newer. To start a server from Python, install the [OpenCode CLI](https://opencode.ai) too.
|
|
65
|
+
|
|
66
|
+
## Quick start
|
|
67
|
+
|
|
68
|
+
```python
|
|
69
|
+
from opencode import OpencodeServer
|
|
70
|
+
|
|
71
|
+
with OpencodeServer(cwd="/path/to/repo") as server, server.client() as client:
|
|
72
|
+
session = client.session.create(title="Review")
|
|
73
|
+
client.session.prompt(session.id, text="Summarize the open TODOs in this repository")
|
|
74
|
+
client.session.wait(session.id)
|
|
75
|
+
|
|
76
|
+
for message in client.message.list(session.id):
|
|
77
|
+
print(message.type)
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
To connect to a server that is already running:
|
|
81
|
+
|
|
82
|
+
```python
|
|
83
|
+
from opencode import Opencode
|
|
84
|
+
|
|
85
|
+
client = Opencode("http://127.0.0.1:4096", password="...")
|
|
86
|
+
print(client.server.info().version)
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
`base_url` and `password` default to the `OPENCODE_BASE_URL` and `OPENCODE_PASSWORD` environment variables. The
|
|
90
|
+
password variable is the same one the OpenCode CLI reads.
|
|
91
|
+
|
|
92
|
+
## Async
|
|
93
|
+
|
|
94
|
+
`AsyncOpencode` has the same methods. It works with asyncio and trio.
|
|
95
|
+
|
|
96
|
+
```python
|
|
97
|
+
import asyncio
|
|
98
|
+
|
|
99
|
+
from opencode import AsyncOpencode
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
async def main() -> None:
|
|
103
|
+
async with AsyncOpencode("http://127.0.0.1:4096", password="...") as client:
|
|
104
|
+
session = await client.session.create(title="Async")
|
|
105
|
+
await client.session.prompt(session.id, text="Hello")
|
|
106
|
+
|
|
107
|
+
async for message in client.message.list(session.id):
|
|
108
|
+
print(message.type)
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
asyncio.run(main())
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## Calling the API
|
|
115
|
+
|
|
116
|
+
Methods mirror the official TypeScript client: `client.<group>.<operation>()`, with names in `snake_case`. Path
|
|
117
|
+
parameters are positional; everything else is keyword-only.
|
|
118
|
+
|
|
119
|
+
```python
|
|
120
|
+
client.session.get("ses_...")
|
|
121
|
+
client.session.prompt("ses_...", text="Fix the failing test", resume=True)
|
|
122
|
+
client.session.revert.stage("ses_...", message_id="msg_...")
|
|
123
|
+
client.mcp.list()
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
The full list is in [api.md](api.md).
|
|
127
|
+
|
|
128
|
+
### Optional and null arguments
|
|
129
|
+
|
|
130
|
+
The server distinguishes a field that is absent from a field set to `null`. Optional arguments default to
|
|
131
|
+
`NOT_GIVEN` and are left out of the request; passing `None` sends `null`:
|
|
132
|
+
|
|
133
|
+
```python
|
|
134
|
+
client.session.update("ses_...", title="New title") # sends {"title": "New title"}
|
|
135
|
+
client.session.list(parent_id=None) # only root sessions: parentID=null
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### Models
|
|
139
|
+
|
|
140
|
+
Responses are [pydantic](https://docs.pydantic.dev) models. Attributes are `snake_case`; the wire names stay
|
|
141
|
+
available as aliases, so a model validates server JSON and serializes back to it unchanged.
|
|
142
|
+
|
|
143
|
+
```python
|
|
144
|
+
from opencode.types import ModelRef
|
|
145
|
+
|
|
146
|
+
session = client.session.create(model=ModelRef(id="claude-sonnet-5-5", provider_id="anthropic"))
|
|
147
|
+
session.project_id # attribute access
|
|
148
|
+
session.to_dict() # {"id": "...", "projectID": "...", ...}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Unions are discriminated, so `isinstance` and `match` narrow them:
|
|
152
|
+
|
|
153
|
+
```python
|
|
154
|
+
from opencode.types import SessionMessageAssistant, SessionMessageUser
|
|
155
|
+
|
|
156
|
+
for message in client.message.list(session.id):
|
|
157
|
+
match message:
|
|
158
|
+
case SessionMessageUser(text=text):
|
|
159
|
+
print("user:", text)
|
|
160
|
+
case SessionMessageAssistant():
|
|
161
|
+
print("assistant replied")
|
|
162
|
+
case _:
|
|
163
|
+
pass # includes variants added by newer servers
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### Project directory
|
|
167
|
+
|
|
168
|
+
Most endpoints take a `location`. Set a default for the client once:
|
|
169
|
+
|
|
170
|
+
```python
|
|
171
|
+
client = Opencode("http://127.0.0.1:4096", directory="/path/to/repo")
|
|
172
|
+
client.agent.list() # uses /path/to/repo
|
|
173
|
+
client.agent.list(location={"directory": "/other"}) # per call
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
## Pagination
|
|
177
|
+
|
|
178
|
+
List endpoints with cursors return a page. Iterating it fetches the following pages as needed.
|
|
179
|
+
|
|
180
|
+
```python
|
|
181
|
+
for session in client.session.list(limit=50):
|
|
182
|
+
print(session.title)
|
|
183
|
+
|
|
184
|
+
page = client.session.list(limit=50)
|
|
185
|
+
page.data # this page only
|
|
186
|
+
page.has_next_page()
|
|
187
|
+
next_page = page.next_page()
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
Async list methods return a paginator: `await` it for the first page, or `async for` over every item.
|
|
191
|
+
|
|
192
|
+
## Events
|
|
193
|
+
|
|
194
|
+
```python
|
|
195
|
+
with client.event.subscribe() as events:
|
|
196
|
+
for event in events:
|
|
197
|
+
print(event.type)
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
Events are typed (`SessionCreatedEvent`, `SessionTextDeltaEvent`, and so on). Event types this client version does
|
|
201
|
+
not know arrive as `UnknownEvent` with all their fields kept. Streams apply only the connect timeout by default, since
|
|
202
|
+
they stay open between events.
|
|
203
|
+
|
|
204
|
+
## Errors
|
|
205
|
+
|
|
206
|
+
Every error derives from `opencode.OpencodeError`. Errors the server declares are raised as their own class, with a
|
|
207
|
+
typed body:
|
|
208
|
+
|
|
209
|
+
```python
|
|
210
|
+
import opencode
|
|
211
|
+
|
|
212
|
+
try:
|
|
213
|
+
client.session.get("ses_missing")
|
|
214
|
+
except opencode.SessionNotFoundError as error:
|
|
215
|
+
print(error.error.session_id, error.status_code)
|
|
216
|
+
except opencode.NotFoundError:
|
|
217
|
+
... # any other 404
|
|
218
|
+
except opencode.APIConnectionError:
|
|
219
|
+
... # server unreachable
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
| Status | Class |
|
|
223
|
+
| --- | --- |
|
|
224
|
+
| 400 | `BadRequestError` |
|
|
225
|
+
| 401 | `AuthenticationError` |
|
|
226
|
+
| 403 | `PermissionDeniedError` |
|
|
227
|
+
| 404 | `NotFoundError` |
|
|
228
|
+
| 409 | `ConflictError` |
|
|
229
|
+
| 413 | `ContentTooLargeError` |
|
|
230
|
+
| 429 | `RateLimitError` |
|
|
231
|
+
| 5xx | `InternalServerError` |
|
|
232
|
+
| No response | `APIConnectionError`, `APITimeoutError` |
|
|
233
|
+
| Unexpected body | `APIResponseValidationError` |
|
|
234
|
+
|
|
235
|
+
## Retries and timeouts
|
|
236
|
+
|
|
237
|
+
The client retries twice by default, with exponential backoff and jitter, and honors `Retry-After` up to 60 seconds.
|
|
238
|
+
|
|
239
|
+
- `GET`, `PUT` and `DELETE` are retried on connection errors and on 408, 429, 500, 502, 503 and 504.
|
|
240
|
+
- `POST` and `PATCH` are retried only when the request cannot have run: when the connection could not be opened, or
|
|
241
|
+
on 429 and 503. A prompt is never sent twice because a response was slow.
|
|
242
|
+
|
|
243
|
+
```python
|
|
244
|
+
client = Opencode(max_retries=5, timeout=30.0)
|
|
245
|
+
client.with_options(timeout=None).session.wait(session.id) # wait as long as it takes
|
|
246
|
+
client.session.get("ses_...", timeout=5.0) # per call
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
The default timeout is 10 minutes with a 10 second connect timeout.
|
|
250
|
+
|
|
251
|
+
## Running a server
|
|
252
|
+
|
|
253
|
+
`OpencodeServer` runs `opencode serve` as a child process on a free local port with a random password:
|
|
254
|
+
|
|
255
|
+
```python
|
|
256
|
+
from opencode import OpencodeServer
|
|
257
|
+
|
|
258
|
+
server = OpencodeServer(
|
|
259
|
+
cwd="/path/to/repo",
|
|
260
|
+
isolated=True, # ignore project opencode.json, AGENTS.md and Claude Code files
|
|
261
|
+
config={"model": "anthropic/claude-sonnet-5-5"}, # passed as OPENCODE_CONFIG_CONTENT
|
|
262
|
+
)
|
|
263
|
+
with server:
|
|
264
|
+
client = server.client()
|
|
265
|
+
...
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
The server runs in `--stdio` mode, so it also exits when the Python process dies. `AsyncOpencodeServer` is the
|
|
269
|
+
async equivalent.
|
|
270
|
+
|
|
271
|
+
## Advanced
|
|
272
|
+
|
|
273
|
+
```python
|
|
274
|
+
import httpx
|
|
275
|
+
|
|
276
|
+
from opencode import Opencode
|
|
277
|
+
|
|
278
|
+
client = Opencode(
|
|
279
|
+
"https://opencode.internal.example.com",
|
|
280
|
+
http_client=httpx.Client(proxy="http://proxy:8080", verify="/etc/ssl/ca.pem"),
|
|
281
|
+
default_headers={"X-Team": "platform"},
|
|
282
|
+
)
|
|
283
|
+
|
|
284
|
+
client.session.create(title="t", extra_headers={"X-Trace": "1"}, extra_body={"future": True})
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
Logs go to the `opencode` logger. `logging.getLogger("opencode").setLevel(logging.DEBUG)` shows every request and
|
|
288
|
+
retry; credentials are never logged.
|
|
289
|
+
|
|
290
|
+
## Versioning
|
|
291
|
+
|
|
292
|
+
| `opencode-python-sdk` (this package) | OpenCode server |
|
|
293
|
+
| --- | --- |
|
|
294
|
+
| 0.1.x | 2.1.x |
|
|
295
|
+
|
|
296
|
+
`opencode.API_VERSION` is the server version the client was generated from. The package follows semantic
|
|
297
|
+
versioning and releases automatically on every merge to `main`; until 1.0, minor versions may contain breaking
|
|
298
|
+
changes. See the [releases page](https://github.com/shrijayan/opencode-python-sdk/releases).
|
|
299
|
+
|
|
300
|
+
## How it is built
|
|
301
|
+
|
|
302
|
+
```
|
|
303
|
+
@opencode/protocol (npm) ──bun codegen/extract──▶ spec/contract.json ──python -m codegen──▶ src/opencode
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
1. `codegen/extract/extract.ts` loads `ClientApi` from the published `@opencode/protocol` package and exports
|
|
307
|
+
every endpoint, its inputs, outputs and declared errors, and every schema as JSON Schema.
|
|
308
|
+
2. `python -m codegen` turns the contract into pydantic models (`opencode/types`), resources
|
|
309
|
+
(`opencode/resources`), error classes (`opencode/_errors.py`) and [api.md](api.md).
|
|
310
|
+
3. The transport, retries, streaming, pagination and server launcher are written by hand.
|
|
311
|
+
|
|
312
|
+
Generated code is committed. CI regenerates it and fails if anything changed. See
|
|
313
|
+
[CONTRIBUTING.md](CONTRIBUTING.md).
|
|
314
|
+
|
|
315
|
+
## License
|
|
316
|
+
|
|
317
|
+
MIT
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
opencode/.generated.json,sha256=QNCFazAYhcwsGf0l4A2EeSpm2HOM7TRBE648Zyoeq_s,1383
|
|
2
|
+
opencode/__init__.py,sha256=UGraxBEfh90WBSAQ7ccwxJsXE5AxYDDTyKlcXhqzykc,4106
|
|
3
|
+
opencode/_base_client.py,sha256=3BwhIXL-cFGoRUuwDzTeFH21O7pihUR5CryOlS1Wylo,20108
|
|
4
|
+
opencode/_client.py,sha256=ip-UhWyHTViMnqgX3jhUmCkscahFtXnIWM2Jd2zn61I,6723
|
|
5
|
+
opencode/_constants.py,sha256=-B_D8RHElL4mYN__WVf4bag4D12dJHbL69_EMfi7bXo,1132
|
|
6
|
+
opencode/_errors.py,sha256=dWjsyGV0aDBKsvJrGNKGJn41Yue66yBBwGTT2pTV7E8,16431
|
|
7
|
+
opencode/_exceptions.py,sha256=-a4nw3bKU239kn6boBAcw7Fszw6nF1mqzHFJKEcX-Pc,7996
|
|
8
|
+
opencode/_models.py,sha256=2esvD2CmslOHCbuLNkN0sGDcgMAqeoMmB7hZMPzo1uA,1988
|
|
9
|
+
opencode/_pagination.py,sha256=uvB-0IwfkGqbYIYiUW_ax_oAE-ldZJSWHtjluVcZlNk,7052
|
|
10
|
+
opencode/_qs.py,sha256=8EWbLzd-iLComngGRyO95f_z76j4tUeBihYJdHI5NP8,3643
|
|
11
|
+
opencode/_resource.py,sha256=ovuG85mWcuXNTu5m6H9FKPN2rrD5o52oRFAGBHimPyg,1263
|
|
12
|
+
opencode/_server.py,sha256=o_YgzX8x2gUuWXbOKptgF-7AJPhjN8T-1pCzmUSKelw,12297
|
|
13
|
+
opencode/_streaming.py,sha256=OJJNoFdvx6degaVnnQNhv9augigImoYjGzEdnI3FVkk,7905
|
|
14
|
+
opencode/_types.py,sha256=Z8bYxzpZhPRtisvPUv9R5g4oBlC23iXR70fFzReTOc0,2194
|
|
15
|
+
opencode/_unions.py,sha256=dW0dTmP2QK2lL6RhyK2YsjD2yNbO8Ah6pk-i5ySW3lo,1518
|
|
16
|
+
opencode/_version.py,sha256=zNErHu8z_g6ScOeYcO8QAiktg036FVPaUiIIZefeoLU,259
|
|
17
|
+
opencode/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
18
|
+
opencode/resources/__init__.py,sha256=wNPQqEDgNYedtWhub2wVWL85jEoE2qCQQHks5WHyAoM,13239
|
|
19
|
+
opencode/resources/agent.py,sha256=Dm1RUA00EiF2nh4GBMjPj-dDxfN_cplcpV0fvokwnzw,5194
|
|
20
|
+
opencode/resources/command.py,sha256=XWclziA5le4bwXhgGP3FDvBL-n8SECqT3qCtZlUn6Bk,2863
|
|
21
|
+
opencode/resources/config.py,sha256=o8Ep5qkD5Dz3P7_Q7j2rmkWLo1iky3tgcfTLAZusnec,7169
|
|
22
|
+
opencode/resources/credential.py,sha256=fTaS-Zz48U6QN0rKuMIVF4mn_7YO5BKoJxmpEr5GoNc,11446
|
|
23
|
+
opencode/resources/debug.py,sha256=PK9BAURu_E66wgrS_8NgWvoviFnwBM5w0ZQgED_3UAs,5159
|
|
24
|
+
opencode/resources/event.py,sha256=1r0lWil6rbN-NOWhZlLmrxrvoAeqtMpqyBrHqXgEAKo,2590
|
|
25
|
+
opencode/resources/experimental.py,sha256=MijdyFk6cYyFNFmigb6eBdWtiKaRJyismTWCpbMzAHo,25947
|
|
26
|
+
opencode/resources/file.py,sha256=cDn1cMCXBUY8EMImvpRwdzLIUBwbOIeRGNVuBsnMa04,12215
|
|
27
|
+
opencode/resources/form.py,sha256=AunzhyF3zBT8Y_e8vZlDKe8EVAHLO5kaKTI2QYwIYAk,2811
|
|
28
|
+
opencode/resources/generate.py,sha256=pSRD_s0vAe2EOfRndXCwauG63l-u0WKVNXQQM0tS700,3547
|
|
29
|
+
opencode/resources/integration.py,sha256=dQIjpRt2SPPFhgIDijjFTSKRGJEhWv2-xFqwYawYR1g,34861
|
|
30
|
+
opencode/resources/location.py,sha256=ZbuH1IGRBI84VeIg6QYTPBZk7BX0SOuemzIs6_VEYhQ,4991
|
|
31
|
+
opencode/resources/mcp.py,sha256=IDSfsLNGUEDWRZOXKo5cKosUge42MyQLT1_vdbXvlEU,15131
|
|
32
|
+
opencode/resources/message.py,sha256=6noqDNBLqOsqXye5ijU-aAKhY8yjLeb3Y9531oDcx24,5686
|
|
33
|
+
opencode/resources/migration.py,sha256=6GjaHwj1wGpOjjkbYc-G-32EdwiZZc0V_CIUxKu-KvY,4042
|
|
34
|
+
opencode/resources/model.py,sha256=QcpIcE4kLumV8RhFlz4nq0UqoXLgOCq71RON8wFFIos,5397
|
|
35
|
+
opencode/resources/permission.py,sha256=wMi2ifGzazbQ3AJ1uuVYrqbpLbf5Bqx9HZpjVwuQkqQ,22506
|
|
36
|
+
opencode/resources/plugin.py,sha256=2yVeINHnwNVHi6YQPqcCJ7uJnUwfEdwSqvaPOiLzi0k,7639
|
|
37
|
+
opencode/resources/project.py,sha256=ZCRWQdSSk6YvVz_J98Rs92woe6Ts8sTEmfJxVUqQSvU,5750
|
|
38
|
+
opencode/resources/provider.py,sha256=SBJdP0SDf7qiDwxYGlu45-jTuppU4yYyg52WEtHZvVs,5666
|
|
39
|
+
opencode/resources/pty.py,sha256=jOX2CrFO-grFz3kr5BCr-dVIivj1JDulkMGOIQqceVw,16174
|
|
40
|
+
opencode/resources/reference.py,sha256=iiDzB6rfooys1O6rZIGL4dW07HpS8nYu0-G83AsUtIo,2933
|
|
41
|
+
opencode/resources/rpc.py,sha256=4Q7jkLWa4dKG8n-foWtMp-b9QU5S8B3xi_qFc7t7GXA,3370
|
|
42
|
+
opencode/resources/server.py,sha256=hGtDtm3vPzghvR_U5CihpdIr5sEbdcdxz_4EbdqgCJU,6620
|
|
43
|
+
opencode/resources/session.py,sha256=9adcy6D0I7cFlpntOyxxEHX2CdDEyJz0SJlfjWfykgI,116310
|
|
44
|
+
opencode/resources/shell.py,sha256=UHQvJCGJWKkywsRx-5-wriGaczr9NIkYuy1ZArZeMxA,12945
|
|
45
|
+
opencode/resources/skill.py,sha256=w06gWcoempzGaFqVFMQZJ3EOyga6q6-gEbACAcRw9JQ,2815
|
|
46
|
+
opencode/resources/vcs.py,sha256=_00yFMlt6SjSft7GRBdhdr0KAruLjFmuNGk5cMFadU4,16417
|
|
47
|
+
opencode/resources/voice.py,sha256=N6v_Eeg3G5PCAzCgup2CnIAuZD-0-JNMqAIV5dsFYmQ,3726
|
|
48
|
+
opencode/resources/websearch.py,sha256=spYgRg0SoC6bhvk7ZVKzrPkRJ9UZvY9DSTT7hRmNHxE,5789
|
|
49
|
+
opencode/resources/worktree.py,sha256=jlBa4RuocApapVAMLr4qnUhc2e_AdFeVoPXGxJPIGiM,10170
|
|
50
|
+
opencode/types/__init__.py,sha256=5JEAe89RPSwJw1yz0kufBxtEJgRsMpZXj7KTbzGX45A,60935
|
|
51
|
+
opencode/types/_generated.py,sha256=c3zBAfVpZGJ9TX4FqrMZASmoxRntel_QzVuP85BOJwU,235015
|
|
52
|
+
opencode_python_sdk-0.1.0.dist-info/METADATA,sha256=VuwTwpUpnuei27jYXrDjUHRvRskei1k4bKv5BtsUBFA,11316
|
|
53
|
+
opencode_python_sdk-0.1.0.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
|
|
54
|
+
opencode_python_sdk-0.1.0.dist-info/licenses/LICENSE,sha256=SbiOG1an_-gZ0gwGLS0tsbUnMHA7tYX22FgP1EqzrH4,1093
|
|
55
|
+
opencode_python_sdk-0.1.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Shrijayan Rajendran and contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|