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.
Files changed (55) hide show
  1. opencode/.generated.json +39 -0
  2. opencode/__init__.py +156 -0
  3. opencode/_base_client.py +518 -0
  4. opencode/_client.py +167 -0
  5. opencode/_constants.py +27 -0
  6. opencode/_errors.py +547 -0
  7. opencode/_exceptions.py +249 -0
  8. opencode/_models.py +54 -0
  9. opencode/_pagination.py +192 -0
  10. opencode/_qs.py +95 -0
  11. opencode/_resource.py +42 -0
  12. opencode/_server.py +327 -0
  13. opencode/_streaming.py +227 -0
  14. opencode/_types.py +77 -0
  15. opencode/_unions.py +46 -0
  16. opencode/_version.py +8 -0
  17. opencode/py.typed +0 -0
  18. opencode/resources/__init__.py +364 -0
  19. opencode/resources/agent.py +177 -0
  20. opencode/resources/command.py +98 -0
  21. opencode/resources/config.py +238 -0
  22. opencode/resources/credential.py +382 -0
  23. opencode/resources/debug.py +174 -0
  24. opencode/resources/event.py +84 -0
  25. opencode/resources/experimental.py +760 -0
  26. opencode/resources/file.py +353 -0
  27. opencode/resources/form.py +98 -0
  28. opencode/resources/generate.py +108 -0
  29. opencode/resources/integration.py +1023 -0
  30. opencode/resources/location.py +160 -0
  31. opencode/resources/mcp.py +488 -0
  32. opencode/resources/message.py +151 -0
  33. opencode/resources/migration.py +118 -0
  34. opencode/resources/model.py +175 -0
  35. opencode/resources/permission.py +698 -0
  36. opencode/resources/plugin.py +248 -0
  37. opencode/resources/project.py +185 -0
  38. opencode/resources/provider.py +181 -0
  39. opencode/resources/pty.py +517 -0
  40. opencode/resources/reference.py +98 -0
  41. opencode/resources/rpc.py +111 -0
  42. opencode/resources/server.py +228 -0
  43. opencode/resources/session.py +3553 -0
  44. opencode/resources/shell.py +410 -0
  45. opencode/resources/skill.py +98 -0
  46. opencode/resources/vcs.py +496 -0
  47. opencode/resources/voice.py +111 -0
  48. opencode/resources/websearch.py +182 -0
  49. opencode/resources/worktree.py +334 -0
  50. opencode/types/__init__.py +1462 -0
  51. opencode/types/_generated.py +8540 -0
  52. opencode_python_sdk-0.1.0.dist-info/METADATA +317 -0
  53. opencode_python_sdk-0.1.0.dist-info/RECORD +55 -0
  54. opencode_python_sdk-0.1.0.dist-info/WHEEL +4 -0
  55. opencode_python_sdk-0.1.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,151 @@
1
+ # This file is generated by `python -m codegen` from spec/contract.json. Do not edit it by hand.
2
+ # OpenCode 2.1.2
3
+
4
+ """The ``message`` resource."""
5
+
6
+ from __future__ import annotations
7
+
8
+ from typing import Literal
9
+
10
+ from .._base_client import RequestOptions
11
+ from .._pagination import AsyncPaginator, SyncCursorPage
12
+ from .._qs import encode_path_segment
13
+ from .._resource import AsyncAPIResource, SyncAPIResource
14
+ from .._types import NOT_GIVEN, Body, Headers, NotGiven, OpenEnum, Query, Timeout
15
+ from ..types import (
16
+ SessionID,
17
+ SessionMessageInfo,
18
+ SessionMessagesResponse,
19
+ )
20
+
21
+ __all__ = ["MessageResource", "AsyncMessageResource"]
22
+
23
+
24
+ class MessageResource(SyncAPIResource):
25
+ """Operations under ``client.message`` (OpenCode ``message``)."""
26
+
27
+ def list(
28
+ self,
29
+ session_id: SessionID,
30
+ *,
31
+ limit: int | NotGiven | None = NOT_GIVEN,
32
+ order: OpenEnum[Literal["asc", "desc"]] | NotGiven | None = NOT_GIVEN,
33
+ cursor: str | NotGiven | None = NOT_GIVEN,
34
+ type: OpenEnum[
35
+ Literal[
36
+ "agent-switched",
37
+ "model-switched",
38
+ "location-switched",
39
+ "user",
40
+ "synthetic",
41
+ "system",
42
+ "skill",
43
+ "shell",
44
+ "assistant",
45
+ "compaction",
46
+ "idle",
47
+ ]
48
+ ]
49
+ | NotGiven
50
+ | None = NOT_GIVEN,
51
+ extra_headers: Headers | None = None,
52
+ extra_query: Query | None = None,
53
+ extra_body: Body | None = None,
54
+ timeout: Timeout | NotGiven = NOT_GIVEN,
55
+ ) -> SyncCursorPage[SessionMessageInfo]:
56
+ """Get session messages.
57
+
58
+ Retrieve projected messages for a session, optionally filtered by type. Items keep the requested order across pages; use cursor.next or cursor.previous to move through the ordered timeline, passing the same type filter on each page.
59
+
60
+ Args:
61
+ limit: Maximum number of messages to return. When omitted, the endpoint returns its default page size.
62
+ order: Message order for the first page. Use desc for newest first or asc for oldest first.
63
+ cursor: Opaque pagination cursor returned as cursor.previous or cursor.next in the previous response. Do not combine with order.
64
+ type: Filter by message type before pagination. When omitted, all message types are returned. Pass the same type when following cursors.
65
+
66
+ Raises:
67
+ InvalidCursorError
68
+ InvalidRequestError
69
+ UnauthorizedError
70
+ SessionNotFoundError
71
+ UnknownError
72
+
73
+ ``GET /api/session/:sessionID/message``
74
+ """
75
+ return self._client.page(
76
+ RequestOptions(
77
+ method="GET",
78
+ path=f"/api/session/{encode_path_segment(session_id)}/message",
79
+ query={"limit": limit, "order": order, "cursor": cursor, "type": type},
80
+ extra_headers=extra_headers,
81
+ extra_query=extra_query,
82
+ extra_body=extra_body,
83
+ timeout=timeout,
84
+ ),
85
+ response_type=SessionMessagesResponse,
86
+ )
87
+
88
+
89
+ class AsyncMessageResource(AsyncAPIResource):
90
+ """Operations under ``client.message`` (OpenCode ``message``)."""
91
+
92
+ def list(
93
+ self,
94
+ session_id: SessionID,
95
+ *,
96
+ limit: int | NotGiven | None = NOT_GIVEN,
97
+ order: OpenEnum[Literal["asc", "desc"]] | NotGiven | None = NOT_GIVEN,
98
+ cursor: str | NotGiven | None = NOT_GIVEN,
99
+ type: OpenEnum[
100
+ Literal[
101
+ "agent-switched",
102
+ "model-switched",
103
+ "location-switched",
104
+ "user",
105
+ "synthetic",
106
+ "system",
107
+ "skill",
108
+ "shell",
109
+ "assistant",
110
+ "compaction",
111
+ "idle",
112
+ ]
113
+ ]
114
+ | NotGiven
115
+ | None = NOT_GIVEN,
116
+ extra_headers: Headers | None = None,
117
+ extra_query: Query | None = None,
118
+ extra_body: Body | None = None,
119
+ timeout: Timeout | NotGiven = NOT_GIVEN,
120
+ ) -> AsyncPaginator[SessionMessageInfo]:
121
+ """Get session messages.
122
+
123
+ Retrieve projected messages for a session, optionally filtered by type. Items keep the requested order across pages; use cursor.next or cursor.previous to move through the ordered timeline, passing the same type filter on each page.
124
+
125
+ Args:
126
+ limit: Maximum number of messages to return. When omitted, the endpoint returns its default page size.
127
+ order: Message order for the first page. Use desc for newest first or asc for oldest first.
128
+ cursor: Opaque pagination cursor returned as cursor.previous or cursor.next in the previous response. Do not combine with order.
129
+ type: Filter by message type before pagination. When omitted, all message types are returned. Pass the same type when following cursors.
130
+
131
+ Raises:
132
+ InvalidCursorError
133
+ InvalidRequestError
134
+ UnauthorizedError
135
+ SessionNotFoundError
136
+ UnknownError
137
+
138
+ ``GET /api/session/:sessionID/message``
139
+ """
140
+ return self._client.page(
141
+ RequestOptions(
142
+ method="GET",
143
+ path=f"/api/session/{encode_path_segment(session_id)}/message",
144
+ query={"limit": limit, "order": order, "cursor": cursor, "type": type},
145
+ extra_headers=extra_headers,
146
+ extra_query=extra_query,
147
+ extra_body=extra_body,
148
+ timeout=timeout,
149
+ ),
150
+ response_type=SessionMessagesResponse,
151
+ )
@@ -0,0 +1,118 @@
1
+ # This file is generated by `python -m codegen` from spec/contract.json. Do not edit it by hand.
2
+ # OpenCode 2.1.2
3
+
4
+ """The ``migration`` resource."""
5
+
6
+ from __future__ import annotations
7
+
8
+ from functools import cached_property
9
+ from typing import cast
10
+
11
+ from .._base_client import RequestOptions
12
+ from .._resource import AsyncAPIResource, SyncAPIResource
13
+ from .._types import NOT_GIVEN, Body, Headers, NotGiven, Query, Timeout
14
+ from ..types import (
15
+ MigrationV1StatusResponseOption1,
16
+ MigrationV1StatusResponseOption2,
17
+ MigrationV1StatusResponseOption3,
18
+ )
19
+
20
+ __all__ = ["MigrationResource", "AsyncMigrationResource"]
21
+
22
+
23
+ class MigrationV1Resource(SyncAPIResource):
24
+ """Operations under ``client.migration.v1`` (OpenCode ``migration.v1``)."""
25
+
26
+ def status(
27
+ self,
28
+ *,
29
+ extra_headers: Headers | None = None,
30
+ extra_query: Query | None = None,
31
+ extra_body: Body | None = None,
32
+ timeout: Timeout | NotGiven = NOT_GIVEN,
33
+ ) -> MigrationV1StatusResponseOption1 | MigrationV1StatusResponseOption2 | MigrationV1StatusResponseOption3:
34
+ """Get V1 migration status.
35
+
36
+ Return the progress of the V1 to V2 session history migration.
37
+
38
+ This endpoint is experimental in OpenCode and may change without notice.
39
+
40
+ Raises:
41
+ InvalidRequestError
42
+ UnauthorizedError
43
+
44
+ ``GET /api/experimental/migration/v1``
45
+ """
46
+ return cast(
47
+ "MigrationV1StatusResponseOption1 | MigrationV1StatusResponseOption2 | MigrationV1StatusResponseOption3",
48
+ self._client.request(
49
+ RequestOptions(
50
+ method="GET",
51
+ path="/api/experimental/migration/v1",
52
+ extra_headers=extra_headers,
53
+ extra_query=extra_query,
54
+ extra_body=extra_body,
55
+ timeout=timeout,
56
+ ),
57
+ response_type=MigrationV1StatusResponseOption1
58
+ | MigrationV1StatusResponseOption2
59
+ | MigrationV1StatusResponseOption3,
60
+ ),
61
+ )
62
+
63
+
64
+ class MigrationResource(SyncAPIResource):
65
+ """Operations under ``client.migration`` (OpenCode ``migration``)."""
66
+
67
+ @cached_property
68
+ def v1(self) -> MigrationV1Resource:
69
+ return MigrationV1Resource(self._client)
70
+
71
+
72
+ class AsyncMigrationV1Resource(AsyncAPIResource):
73
+ """Operations under ``client.migration.v1`` (OpenCode ``migration.v1``)."""
74
+
75
+ async def status(
76
+ self,
77
+ *,
78
+ extra_headers: Headers | None = None,
79
+ extra_query: Query | None = None,
80
+ extra_body: Body | None = None,
81
+ timeout: Timeout | NotGiven = NOT_GIVEN,
82
+ ) -> MigrationV1StatusResponseOption1 | MigrationV1StatusResponseOption2 | MigrationV1StatusResponseOption3:
83
+ """Get V1 migration status.
84
+
85
+ Return the progress of the V1 to V2 session history migration.
86
+
87
+ This endpoint is experimental in OpenCode and may change without notice.
88
+
89
+ Raises:
90
+ InvalidRequestError
91
+ UnauthorizedError
92
+
93
+ ``GET /api/experimental/migration/v1``
94
+ """
95
+ return cast(
96
+ "MigrationV1StatusResponseOption1 | MigrationV1StatusResponseOption2 | MigrationV1StatusResponseOption3",
97
+ await self._client.request(
98
+ RequestOptions(
99
+ method="GET",
100
+ path="/api/experimental/migration/v1",
101
+ extra_headers=extra_headers,
102
+ extra_query=extra_query,
103
+ extra_body=extra_body,
104
+ timeout=timeout,
105
+ ),
106
+ response_type=MigrationV1StatusResponseOption1
107
+ | MigrationV1StatusResponseOption2
108
+ | MigrationV1StatusResponseOption3,
109
+ ),
110
+ )
111
+
112
+
113
+ class AsyncMigrationResource(AsyncAPIResource):
114
+ """Operations under ``client.migration`` (OpenCode ``migration``)."""
115
+
116
+ @cached_property
117
+ def v1(self) -> AsyncMigrationV1Resource:
118
+ return AsyncMigrationV1Resource(self._client)
@@ -0,0 +1,175 @@
1
+ # This file is generated by `python -m codegen` from spec/contract.json. Do not edit it by hand.
2
+ # OpenCode 2.1.2
3
+
4
+ """The ``model`` resource."""
5
+
6
+ from __future__ import annotations
7
+
8
+ from typing import cast
9
+
10
+ from .._base_client import RequestOptions
11
+ from .._resource import AsyncAPIResource, SyncAPIResource
12
+ from .._types import NOT_GIVEN, Body, Headers, NotGiven, Query, Timeout
13
+ from ..types import (
14
+ Location,
15
+ ModelDefaultResponse,
16
+ ModelListResponse,
17
+ )
18
+
19
+ __all__ = ["ModelResource", "AsyncModelResource"]
20
+
21
+
22
+ class ModelResource(SyncAPIResource):
23
+ """Operations under ``client.model`` (OpenCode ``model``)."""
24
+
25
+ def list(
26
+ self,
27
+ *,
28
+ location: Location | NotGiven | None = NOT_GIVEN,
29
+ extra_headers: Headers | None = None,
30
+ extra_query: Query | None = None,
31
+ extra_body: Body | None = None,
32
+ timeout: Timeout | NotGiven = NOT_GIVEN,
33
+ ) -> ModelListResponse:
34
+ """List models.
35
+
36
+ Retrieve the current snapshot of available models ordered by release date. The snapshot may precede initial plugin settlement.
37
+
38
+ Raises:
39
+ InvalidRequestError
40
+ UnauthorizedError
41
+ LocationNotFoundError
42
+ ServiceUnavailableError
43
+
44
+ ``GET /api/model``
45
+ """
46
+ return cast(
47
+ "ModelListResponse",
48
+ self._client.request(
49
+ RequestOptions(
50
+ method="GET",
51
+ path="/api/model",
52
+ query={"location": self._location(location)},
53
+ extra_headers=extra_headers,
54
+ extra_query=extra_query,
55
+ extra_body=extra_body,
56
+ timeout=timeout,
57
+ ),
58
+ response_type=ModelListResponse,
59
+ ),
60
+ )
61
+
62
+ def default(
63
+ self,
64
+ *,
65
+ location: Location | NotGiven | None = NOT_GIVEN,
66
+ extra_headers: Headers | None = None,
67
+ extra_query: Query | None = None,
68
+ extra_body: Body | None = None,
69
+ timeout: Timeout | NotGiven = NOT_GIVEN,
70
+ ) -> ModelDefaultResponse:
71
+ """Get default model.
72
+
73
+ Retrieve the model used when a session has no explicit model selection.
74
+
75
+ Raises:
76
+ InvalidRequestError
77
+ UnauthorizedError
78
+ LocationNotFoundError
79
+ ServiceUnavailableError
80
+
81
+ ``GET /api/model/default``
82
+ """
83
+ return cast(
84
+ "ModelDefaultResponse",
85
+ self._client.request(
86
+ RequestOptions(
87
+ method="GET",
88
+ path="/api/model/default",
89
+ query={"location": self._location(location)},
90
+ extra_headers=extra_headers,
91
+ extra_query=extra_query,
92
+ extra_body=extra_body,
93
+ timeout=timeout,
94
+ ),
95
+ response_type=ModelDefaultResponse,
96
+ ),
97
+ )
98
+
99
+
100
+ class AsyncModelResource(AsyncAPIResource):
101
+ """Operations under ``client.model`` (OpenCode ``model``)."""
102
+
103
+ async def list(
104
+ self,
105
+ *,
106
+ location: Location | NotGiven | None = NOT_GIVEN,
107
+ extra_headers: Headers | None = None,
108
+ extra_query: Query | None = None,
109
+ extra_body: Body | None = None,
110
+ timeout: Timeout | NotGiven = NOT_GIVEN,
111
+ ) -> ModelListResponse:
112
+ """List models.
113
+
114
+ Retrieve the current snapshot of available models ordered by release date. The snapshot may precede initial plugin settlement.
115
+
116
+ Raises:
117
+ InvalidRequestError
118
+ UnauthorizedError
119
+ LocationNotFoundError
120
+ ServiceUnavailableError
121
+
122
+ ``GET /api/model``
123
+ """
124
+ return cast(
125
+ "ModelListResponse",
126
+ await self._client.request(
127
+ RequestOptions(
128
+ method="GET",
129
+ path="/api/model",
130
+ query={"location": self._location(location)},
131
+ extra_headers=extra_headers,
132
+ extra_query=extra_query,
133
+ extra_body=extra_body,
134
+ timeout=timeout,
135
+ ),
136
+ response_type=ModelListResponse,
137
+ ),
138
+ )
139
+
140
+ async def default(
141
+ self,
142
+ *,
143
+ location: Location | NotGiven | None = NOT_GIVEN,
144
+ extra_headers: Headers | None = None,
145
+ extra_query: Query | None = None,
146
+ extra_body: Body | None = None,
147
+ timeout: Timeout | NotGiven = NOT_GIVEN,
148
+ ) -> ModelDefaultResponse:
149
+ """Get default model.
150
+
151
+ Retrieve the model used when a session has no explicit model selection.
152
+
153
+ Raises:
154
+ InvalidRequestError
155
+ UnauthorizedError
156
+ LocationNotFoundError
157
+ ServiceUnavailableError
158
+
159
+ ``GET /api/model/default``
160
+ """
161
+ return cast(
162
+ "ModelDefaultResponse",
163
+ await self._client.request(
164
+ RequestOptions(
165
+ method="GET",
166
+ path="/api/model/default",
167
+ query={"location": self._location(location)},
168
+ extra_headers=extra_headers,
169
+ extra_query=extra_query,
170
+ extra_body=extra_body,
171
+ timeout=timeout,
172
+ ),
173
+ response_type=ModelDefaultResponse,
174
+ ),
175
+ )