From 14ada9d7d1e93d85f357f417633b691b116c8ad5 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 28 Jul 2025 17:05:21 +0000 Subject: [PATCH 1/3] feat(api): api update --- .stats.yml | 4 +- api.md | 8 +- src/opencode_ai/resources/session.py | 4 + src/opencode_ai/types/__init__.py | 1 - src/opencode_ai/types/config.py | 25 +++++ src/opencode_ai/types/event_list_response.py | 104 +++++++++---------- src/opencode_ai/types/find_text_response.py | 46 +++++++- src/opencode_ai/types/match.py | 39 ------- src/opencode_ai/types/mode.py | 2 + src/opencode_ai/types/mode_config.py | 4 + src/opencode_ai/types/session.py | 2 + src/opencode_ai/types/session_chat_params.py | 2 + tests/api_resources/test_session.py | 2 + 13 files changed, 139 insertions(+), 104 deletions(-) delete mode 100644 src/opencode_ai/types/match.py diff --git a/.stats.yml b/.stats.yml index e9e292b..55ffae9 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 26 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/opencode%2Fopencode-5748199af356c3243a46a466e73b5d0bab7eaa0c56895e1d0f903d637f61d0bb.yml -openapi_spec_hash: c04f6b6be54b05d9b1283c24e870163b +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/opencode%2Fopencode-be4c3fb58765ee2b56c3b548182b9d0f1a9d5ebb7c340083bc578bcf3876b026.yml +openapi_spec_hash: dd5d801d838fd6b522b1dd892a75fce1 config_hash: 1ae82c93499b9f0b9ba828b8919f9cb3 diff --git a/api.md b/api.md index 1758023..a254328 100644 --- a/api.md +++ b/api.md @@ -46,13 +46,7 @@ Methods: Types: ```python -from opencode_ai.types import ( - Match, - Symbol, - FindFilesResponse, - FindSymbolsResponse, - FindTextResponse, -) +from opencode_ai.types import Symbol, FindFilesResponse, FindSymbolsResponse, FindTextResponse ``` Methods: diff --git a/src/opencode_ai/resources/session.py b/src/opencode_ai/resources/session.py index 9096fec..7e50413 100644 --- a/src/opencode_ai/resources/session.py +++ b/src/opencode_ai/resources/session.py @@ -163,6 +163,7 @@ def chat( provider_id: str, message_id: str | NotGiven = NOT_GIVEN, mode: str | NotGiven = NOT_GIVEN, + system: str | NotGiven = NOT_GIVEN, tools: Dict[str, bool] | NotGiven = NOT_GIVEN, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. @@ -196,6 +197,7 @@ def chat( "provider_id": provider_id, "message_id": message_id, "mode": mode, + "system": system, "tools": tools, }, session_chat_params.SessionChatParams, @@ -606,6 +608,7 @@ async def chat( provider_id: str, message_id: str | NotGiven = NOT_GIVEN, mode: str | NotGiven = NOT_GIVEN, + system: str | NotGiven = NOT_GIVEN, tools: Dict[str, bool] | NotGiven = NOT_GIVEN, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. @@ -639,6 +642,7 @@ async def chat( "provider_id": provider_id, "message_id": message_id, "mode": mode, + "system": system, "tools": tools, }, session_chat_params.SessionChatParams, diff --git a/src/opencode_ai/types/__init__.py b/src/opencode_ai/types/__init__.py index 2dc9b99..1d0663b 100644 --- a/src/opencode_ai/types/__init__.py +++ b/src/opencode_ai/types/__init__.py @@ -6,7 +6,6 @@ from .file import File as File from .mode import Mode as Mode from .part import Part as Part -from .match import Match as Match from .model import Model as Model from .config import Config as Config from .shared import ( diff --git a/src/opencode_ai/types/config.py b/src/opencode_ai/types/config.py index 2a0bfff..76f9348 100644 --- a/src/opencode_ai/types/config.py +++ b/src/opencode_ai/types/config.py @@ -14,6 +14,9 @@ __all__ = [ "Config", + "Agent", + "AgentGeneral", + "AgentAgentItem", "Experimental", "ExperimentalHook", "ExperimentalHookFileEdited", @@ -28,6 +31,25 @@ ] +class AgentGeneral(ModeConfig): + description: str + + +class AgentAgentItem(ModeConfig): + description: str + + +class Agent(BaseModel): + general: Optional[AgentGeneral] = None + + __pydantic_extra__: Dict[str, AgentAgentItem] = FieldInfo(init=False) # pyright: ignore[reportIncompatibleVariableOverride] + if TYPE_CHECKING: + # Stub to indicate that arbitrary properties are accepted. + # To access properties that are not valid identifiers you can use `getattr`, e.g. + # `getattr(obj, '$type')` + def __getattr__(self, attr: str) -> AgentAgentItem: ... + + class ExperimentalHookFileEdited(BaseModel): command: List[str] @@ -137,6 +159,9 @@ class Config(BaseModel): schema_: Optional[str] = FieldInfo(alias="$schema", default=None) """JSON schema reference for configuration validation""" + agent: Optional[Agent] = None + """Modes configuration, see https://opencode.ai/docs/modes""" + autoshare: Optional[bool] = None """@deprecated Use 'share' field instead. diff --git a/src/opencode_ai/types/event_list_response.py b/src/opencode_ai/types/event_list_response.py index 9c6d78f..1eb7421 100644 --- a/src/opencode_ai/types/event_list_response.py +++ b/src/opencode_ai/types/event_list_response.py @@ -16,15 +16,10 @@ __all__ = [ "EventListResponse", - "EventLspClientDiagnostics", - "EventLspClientDiagnosticsProperties", - "EventPermissionUpdated", - "EventPermissionUpdatedProperties", - "EventPermissionUpdatedPropertiesTime", - "EventFileEdited", - "EventFileEditedProperties", "EventInstallationUpdated", "EventInstallationUpdatedProperties", + "EventLspClientDiagnostics", + "EventLspClientDiagnosticsProperties", "EventMessageUpdated", "EventMessageUpdatedProperties", "EventMessageRemoved", @@ -35,6 +30,11 @@ "EventMessagePartRemovedProperties", "EventStorageWrite", "EventStorageWriteProperties", + "EventPermissionUpdated", + "EventPermissionUpdatedProperties", + "EventPermissionUpdatedPropertiesTime", + "EventFileEdited", + "EventFileEditedProperties", "EventSessionUpdated", "EventSessionUpdatedProperties", "EventSessionDeleted", @@ -52,6 +52,16 @@ ] +class EventInstallationUpdatedProperties(BaseModel): + version: str + + +class EventInstallationUpdated(BaseModel): + properties: EventInstallationUpdatedProperties + + type: Literal["installation.updated"] + + class EventLspClientDiagnosticsProperties(BaseModel): path: str @@ -64,48 +74,6 @@ class EventLspClientDiagnostics(BaseModel): type: Literal["lsp.client.diagnostics"] -class EventPermissionUpdatedPropertiesTime(BaseModel): - created: float - - -class EventPermissionUpdatedProperties(BaseModel): - id: str - - metadata: Dict[str, object] - - session_id: str = FieldInfo(alias="sessionID") - - time: EventPermissionUpdatedPropertiesTime - - title: str - - -class EventPermissionUpdated(BaseModel): - properties: EventPermissionUpdatedProperties - - type: Literal["permission.updated"] - - -class EventFileEditedProperties(BaseModel): - file: str - - -class EventFileEdited(BaseModel): - properties: EventFileEditedProperties - - type: Literal["file.edited"] - - -class EventInstallationUpdatedProperties(BaseModel): - version: str - - -class EventInstallationUpdated(BaseModel): - properties: EventInstallationUpdatedProperties - - type: Literal["installation.updated"] - - class EventMessageUpdatedProperties(BaseModel): info: Message @@ -162,6 +130,38 @@ class EventStorageWrite(BaseModel): type: Literal["storage.write"] +class EventPermissionUpdatedPropertiesTime(BaseModel): + created: float + + +class EventPermissionUpdatedProperties(BaseModel): + id: str + + metadata: Dict[str, object] + + session_id: str = FieldInfo(alias="sessionID") + + time: EventPermissionUpdatedPropertiesTime + + title: str + + +class EventPermissionUpdated(BaseModel): + properties: EventPermissionUpdatedProperties + + type: Literal["permission.updated"] + + +class EventFileEditedProperties(BaseModel): + file: str + + +class EventFileEdited(BaseModel): + properties: EventFileEditedProperties + + type: Literal["file.edited"] + + class EventSessionUpdatedProperties(BaseModel): info: Session @@ -242,15 +242,15 @@ class EventIdeInstalled(BaseModel): EventListResponse: TypeAlias = Annotated[ Union[ - EventLspClientDiagnostics, - EventPermissionUpdated, - EventFileEdited, EventInstallationUpdated, + EventLspClientDiagnostics, EventMessageUpdated, EventMessageRemoved, EventMessagePartUpdated, EventMessagePartRemoved, EventStorageWrite, + EventPermissionUpdated, + EventFileEdited, EventSessionUpdated, EventSessionDeleted, EventSessionIdle, diff --git a/src/opencode_ai/types/find_text_response.py b/src/opencode_ai/types/find_text_response.py index 8f47178..4557834 100644 --- a/src/opencode_ai/types/find_text_response.py +++ b/src/opencode_ai/types/find_text_response.py @@ -3,8 +3,48 @@ from typing import List from typing_extensions import TypeAlias -from .match import Match +from .._models import BaseModel -__all__ = ["FindTextResponse"] +__all__ = [ + "FindTextResponse", + "FindTextResponseItem", + "FindTextResponseItemLines", + "FindTextResponseItemPath", + "FindTextResponseItemSubmatch", + "FindTextResponseItemSubmatchMatch", +] -FindTextResponse: TypeAlias = List[Match] + +class FindTextResponseItemLines(BaseModel): + text: str + + +class FindTextResponseItemPath(BaseModel): + text: str + + +class FindTextResponseItemSubmatchMatch(BaseModel): + text: str + + +class FindTextResponseItemSubmatch(BaseModel): + end: float + + match: FindTextResponseItemSubmatchMatch + + start: float + + +class FindTextResponseItem(BaseModel): + absolute_offset: float + + line_number: float + + lines: FindTextResponseItemLines + + path: FindTextResponseItemPath + + submatches: List[FindTextResponseItemSubmatch] + + +FindTextResponse: TypeAlias = List[FindTextResponseItem] diff --git a/src/opencode_ai/types/match.py b/src/opencode_ai/types/match.py deleted file mode 100644 index 2f1ca3c..0000000 --- a/src/opencode_ai/types/match.py +++ /dev/null @@ -1,39 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing import List - -from .._models import BaseModel - -__all__ = ["Match", "Lines", "Path", "Submatch", "SubmatchMatch"] - - -class Lines(BaseModel): - text: str - - -class Path(BaseModel): - text: str - - -class SubmatchMatch(BaseModel): - text: str - - -class Submatch(BaseModel): - end: float - - match: SubmatchMatch - - start: float - - -class Match(BaseModel): - absolute_offset: float - - line_number: float - - lines: Lines - - path: Path - - submatches: List[Submatch] diff --git a/src/opencode_ai/types/mode.py b/src/opencode_ai/types/mode.py index 5e04502..041b7f3 100644 --- a/src/opencode_ai/types/mode.py +++ b/src/opencode_ai/types/mode.py @@ -23,3 +23,5 @@ class Mode(BaseModel): model: Optional[Model] = None prompt: Optional[str] = None + + temperature: Optional[float] = None diff --git a/src/opencode_ai/types/mode_config.py b/src/opencode_ai/types/mode_config.py index 542232a..d7561c2 100644 --- a/src/opencode_ai/types/mode_config.py +++ b/src/opencode_ai/types/mode_config.py @@ -8,8 +8,12 @@ class ModeConfig(BaseModel): + disable: Optional[bool] = None + model: Optional[str] = None prompt: Optional[str] = None + temperature: Optional[float] = None + tools: Optional[Dict[str, bool]] = None diff --git a/src/opencode_ai/types/session.py b/src/opencode_ai/types/session.py index 88b53ea..a0ed929 100644 --- a/src/opencode_ai/types/session.py +++ b/src/opencode_ai/types/session.py @@ -18,6 +18,8 @@ class Time(BaseModel): class Revert(BaseModel): message_id: str = FieldInfo(alias="messageID") + diff: Optional[str] = None + part_id: Optional[str] = FieldInfo(alias="partID", default=None) snapshot: Optional[str] = None diff --git a/src/opencode_ai/types/session_chat_params.py b/src/opencode_ai/types/session_chat_params.py index b1f197a..e827282 100644 --- a/src/opencode_ai/types/session_chat_params.py +++ b/src/opencode_ai/types/session_chat_params.py @@ -23,6 +23,8 @@ class SessionChatParams(TypedDict, total=False): mode: str + system: str + tools: Dict[str, bool] diff --git a/tests/api_resources/test_session.py b/tests/api_resources/test_session.py index c078c7b..9a3f384 100644 --- a/tests/api_resources/test_session.py +++ b/tests/api_resources/test_session.py @@ -203,6 +203,7 @@ def test_method_chat_with_all_params(self, client: Opencode) -> None: provider_id="providerID", message_id="msg", mode="mode", + system="system", tools={"foo": True}, ) assert_matches_type(AssistantMessage, session, path=["response"]) @@ -776,6 +777,7 @@ async def test_method_chat_with_all_params(self, async_client: AsyncOpencode) -> provider_id="providerID", message_id="msg", mode="mode", + system="system", tools={"foo": True}, ) assert_matches_type(AssistantMessage, session, path=["response"]) From 0bc92517109d280c22e22639ee4ffa58d63d837b Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 28 Jul 2025 17:08:12 +0000 Subject: [PATCH 2/3] feat(api): api update --- .stats.yml | 4 ++-- src/opencode_ai/types/event_list_response.py | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index 55ffae9..a1fba29 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 26 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/opencode%2Fopencode-be4c3fb58765ee2b56c3b548182b9d0f1a9d5ebb7c340083bc578bcf3876b026.yml -openapi_spec_hash: dd5d801d838fd6b522b1dd892a75fce1 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/opencode%2Fopencode-e43db0e3b4300d892558381c46238315784de13f980822a3224a956d94dbadb3.yml +openapi_spec_hash: eb2421d12fc2ffb165659b1af40a67e1 config_hash: 1ae82c93499b9f0b9ba828b8919f9cb3 diff --git a/src/opencode_ai/types/event_list_response.py b/src/opencode_ai/types/event_list_response.py index 1eb7421..1ac2771 100644 --- a/src/opencode_ai/types/event_list_response.py +++ b/src/opencode_ai/types/event_list_response.py @@ -111,6 +111,8 @@ class EventMessagePartRemovedProperties(BaseModel): part_id: str = FieldInfo(alias="partID") + session_id: str = FieldInfo(alias="sessionID") + class EventMessagePartRemoved(BaseModel): properties: EventMessagePartRemovedProperties From 51db6c4a1ce8f63ef752d6210401e3e1ee260682 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 28 Jul 2025 17:08:30 +0000 Subject: [PATCH 3/3] release: 0.1.0-alpha.34 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 9 +++++++++ pyproject.toml | 2 +- src/opencode_ai/_version.py | 2 +- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index ff4f9a5..36b2aff 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.1.0-alpha.33" + ".": "0.1.0-alpha.34" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index df97c95..dc6f9b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## 0.1.0-alpha.34 (2025-07-28) + +Full Changelog: [v0.1.0-alpha.33...v0.1.0-alpha.34](https://github.com/sst/opencode-sdk-python/compare/v0.1.0-alpha.33...v0.1.0-alpha.34) + +### Features + +* **api:** api update ([0bc9251](https://github.com/sst/opencode-sdk-python/commit/0bc92517109d280c22e22639ee4ffa58d63d837b)) +* **api:** api update ([14ada9d](https://github.com/sst/opencode-sdk-python/commit/14ada9d7d1e93d85f357f417633b691b116c8ad5)) + ## 0.1.0-alpha.33 (2025-07-25) Full Changelog: [v0.1.0-alpha.32...v0.1.0-alpha.33](https://github.com/sst/opencode-sdk-python/compare/v0.1.0-alpha.32...v0.1.0-alpha.33) diff --git a/pyproject.toml b/pyproject.toml index 770518f..fc1b239 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "opencode-ai" -version = "0.1.0-alpha.33" +version = "0.1.0-alpha.34" description = "The official Python library for the opencode API" dynamic = ["readme"] license = "MIT" diff --git a/src/opencode_ai/_version.py b/src/opencode_ai/_version.py index eb5009a..4b13d68 100644 --- a/src/opencode_ai/_version.py +++ b/src/opencode_ai/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "opencode_ai" -__version__ = "0.1.0-alpha.33" # x-release-please-version +__version__ = "0.1.0-alpha.34" # x-release-please-version