Browse Source

fix: blank version issue

Aiden Cline 3 months ago
parent
commit
ee1af0fe80

+ 1 - 1
packages/sdk/go/.release-please-manifest.json

@@ -1,3 +1,3 @@
 {
-  ".": "0.16.2"
+  ".": "0.18.0"
 }

+ 2 - 2
packages/sdk/go/.stats.yml

@@ -1,4 +1,4 @@
 configured_endpoints: 43
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/opencode%2Fopencode-273fc9fea965af661dfed0902d00f10d6ed844f0681ca861a58821c4902eac2f.yml
-openapi_spec_hash: c6144f23a1bac75f79be86edd405552b
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/opencode%2Fopencode-92f9d0f8daee2ea7458f8b9f1d7a7f941ff932442ad944bc7576254d5978b6d5.yml
+openapi_spec_hash: 5b785c4ff6fb69039915f0e746abdaf9
 config_hash: 026ef000d34bf2f930e7b41e77d2d3ff

+ 16 - 0
packages/sdk/go/CHANGELOG.md

@@ -1,5 +1,21 @@
 # Changelog
 
+## 0.18.0 (2025-10-10)
+
+Full Changelog: [v0.17.0...v0.18.0](https://github.com/sst/opencode-sdk-go/compare/v0.17.0...v0.18.0)
+
+### Features
+
+* **api:** api update ([0a7f5e7](https://github.com/sst/opencode-sdk-go/commit/0a7f5e710911506512a132ba39e0593c412beb77))
+
+## 0.17.0 (2025-10-07)
+
+Full Changelog: [v0.16.2...v0.17.0](https://github.com/sst/opencode-sdk-go/compare/v0.16.2...v0.17.0)
+
+### Features
+
+* **api:** api update ([84a3df5](https://github.com/sst/opencode-sdk-go/commit/84a3df50a7ff3d87e5593e4f29dfb5d561f71cc3))
+
 ## 0.16.2 (2025-09-26)
 
 Full Changelog: [v0.16.1...v0.16.2](https://github.com/sst/opencode-sdk-go/compare/v0.16.1...v0.16.2)

+ 1 - 1
packages/sdk/go/README.md

@@ -24,7 +24,7 @@ Or to pin the version:
 <!-- x-release-please-start-version -->
 
 ```sh
-go get -u 'github.com/sst/[email protected]6.2'
+go get -u 'github.com/sst/[email protected]8.0'
 ```
 
 <!-- x-release-please-end -->

+ 77 - 0
packages/sdk/go/app.go

@@ -62,7 +62,9 @@ type Model struct {
 	Temperature  bool                   `json:"temperature,required"`
 	ToolCall     bool                   `json:"tool_call,required"`
 	Experimental bool                   `json:"experimental"`
+	Modalities   ModelModalities        `json:"modalities"`
 	Provider     ModelProvider          `json:"provider"`
+	Status       ModelStatus            `json:"status"`
 	JSON         modelJSON              `json:"-"`
 }
 
@@ -79,7 +81,9 @@ type modelJSON struct {
 	Temperature  apijson.Field
 	ToolCall     apijson.Field
 	Experimental apijson.Field
+	Modalities   apijson.Field
 	Provider     apijson.Field
+	Status       apijson.Field
 	raw          string
 	ExtraFields  map[string]apijson.Field
 }
@@ -140,6 +144,64 @@ func (r modelLimitJSON) RawJSON() string {
 	return r.raw
 }
 
+type ModelModalities struct {
+	Input  []ModelModalitiesInput  `json:"input,required"`
+	Output []ModelModalitiesOutput `json:"output,required"`
+	JSON   modelModalitiesJSON     `json:"-"`
+}
+
+// modelModalitiesJSON contains the JSON metadata for the struct [ModelModalities]
+type modelModalitiesJSON struct {
+	Input       apijson.Field
+	Output      apijson.Field
+	raw         string
+	ExtraFields map[string]apijson.Field
+}
+
+func (r *ModelModalities) UnmarshalJSON(data []byte) (err error) {
+	return apijson.UnmarshalRoot(data, r)
+}
+
+func (r modelModalitiesJSON) RawJSON() string {
+	return r.raw
+}
+
+type ModelModalitiesInput string
+
+const (
+	ModelModalitiesInputText  ModelModalitiesInput = "text"
+	ModelModalitiesInputAudio ModelModalitiesInput = "audio"
+	ModelModalitiesInputImage ModelModalitiesInput = "image"
+	ModelModalitiesInputVideo ModelModalitiesInput = "video"
+	ModelModalitiesInputPdf   ModelModalitiesInput = "pdf"
+)
+
+func (r ModelModalitiesInput) IsKnown() bool {
+	switch r {
+	case ModelModalitiesInputText, ModelModalitiesInputAudio, ModelModalitiesInputImage, ModelModalitiesInputVideo, ModelModalitiesInputPdf:
+		return true
+	}
+	return false
+}
+
+type ModelModalitiesOutput string
+
+const (
+	ModelModalitiesOutputText  ModelModalitiesOutput = "text"
+	ModelModalitiesOutputAudio ModelModalitiesOutput = "audio"
+	ModelModalitiesOutputImage ModelModalitiesOutput = "image"
+	ModelModalitiesOutputVideo ModelModalitiesOutput = "video"
+	ModelModalitiesOutputPdf   ModelModalitiesOutput = "pdf"
+)
+
+func (r ModelModalitiesOutput) IsKnown() bool {
+	switch r {
+	case ModelModalitiesOutputText, ModelModalitiesOutputAudio, ModelModalitiesOutputImage, ModelModalitiesOutputVideo, ModelModalitiesOutputPdf:
+		return true
+	}
+	return false
+}
+
 type ModelProvider struct {
 	Npm  string            `json:"npm,required"`
 	JSON modelProviderJSON `json:"-"`
@@ -160,6 +222,21 @@ func (r modelProviderJSON) RawJSON() string {
 	return r.raw
 }
 
+type ModelStatus string
+
+const (
+	ModelStatusAlpha ModelStatus = "alpha"
+	ModelStatusBeta  ModelStatus = "beta"
+)
+
+func (r ModelStatus) IsKnown() bool {
+	switch r {
+	case ModelStatusAlpha, ModelStatusBeta:
+		return true
+	}
+	return false
+}
+
 type Provider struct {
 	ID     string           `json:"id,required"`
 	Env    []string         `json:"env,required"`

+ 91 - 13
packages/sdk/go/config.go

@@ -1567,19 +1567,21 @@ func (r configProviderJSON) RawJSON() string {
 }
 
 type ConfigProviderModel struct {
-	ID           string                       `json:"id"`
-	Attachment   bool                         `json:"attachment"`
-	Cost         ConfigProviderModelsCost     `json:"cost"`
-	Experimental bool                         `json:"experimental"`
-	Limit        ConfigProviderModelsLimit    `json:"limit"`
-	Name         string                       `json:"name"`
-	Options      map[string]interface{}       `json:"options"`
-	Provider     ConfigProviderModelsProvider `json:"provider"`
-	Reasoning    bool                         `json:"reasoning"`
-	ReleaseDate  string                       `json:"release_date"`
-	Temperature  bool                         `json:"temperature"`
-	ToolCall     bool                         `json:"tool_call"`
-	JSON         configProviderModelJSON      `json:"-"`
+	ID           string                         `json:"id"`
+	Attachment   bool                           `json:"attachment"`
+	Cost         ConfigProviderModelsCost       `json:"cost"`
+	Experimental bool                           `json:"experimental"`
+	Limit        ConfigProviderModelsLimit      `json:"limit"`
+	Modalities   ConfigProviderModelsModalities `json:"modalities"`
+	Name         string                         `json:"name"`
+	Options      map[string]interface{}         `json:"options"`
+	Provider     ConfigProviderModelsProvider   `json:"provider"`
+	Reasoning    bool                           `json:"reasoning"`
+	ReleaseDate  string                         `json:"release_date"`
+	Status       ConfigProviderModelsStatus     `json:"status"`
+	Temperature  bool                           `json:"temperature"`
+	ToolCall     bool                           `json:"tool_call"`
+	JSON         configProviderModelJSON        `json:"-"`
 }
 
 // configProviderModelJSON contains the JSON metadata for the struct
@@ -1590,11 +1592,13 @@ type configProviderModelJSON struct {
 	Cost         apijson.Field
 	Experimental apijson.Field
 	Limit        apijson.Field
+	Modalities   apijson.Field
 	Name         apijson.Field
 	Options      apijson.Field
 	Provider     apijson.Field
 	Reasoning    apijson.Field
 	ReleaseDate  apijson.Field
+	Status       apijson.Field
 	Temperature  apijson.Field
 	ToolCall     apijson.Field
 	raw          string
@@ -1659,6 +1663,65 @@ func (r configProviderModelsLimitJSON) RawJSON() string {
 	return r.raw
 }
 
+type ConfigProviderModelsModalities struct {
+	Input  []ConfigProviderModelsModalitiesInput  `json:"input,required"`
+	Output []ConfigProviderModelsModalitiesOutput `json:"output,required"`
+	JSON   configProviderModelsModalitiesJSON     `json:"-"`
+}
+
+// configProviderModelsModalitiesJSON contains the JSON metadata for the struct
+// [ConfigProviderModelsModalities]
+type configProviderModelsModalitiesJSON struct {
+	Input       apijson.Field
+	Output      apijson.Field
+	raw         string
+	ExtraFields map[string]apijson.Field
+}
+
+func (r *ConfigProviderModelsModalities) UnmarshalJSON(data []byte) (err error) {
+	return apijson.UnmarshalRoot(data, r)
+}
+
+func (r configProviderModelsModalitiesJSON) RawJSON() string {
+	return r.raw
+}
+
+type ConfigProviderModelsModalitiesInput string
+
+const (
+	ConfigProviderModelsModalitiesInputText  ConfigProviderModelsModalitiesInput = "text"
+	ConfigProviderModelsModalitiesInputAudio ConfigProviderModelsModalitiesInput = "audio"
+	ConfigProviderModelsModalitiesInputImage ConfigProviderModelsModalitiesInput = "image"
+	ConfigProviderModelsModalitiesInputVideo ConfigProviderModelsModalitiesInput = "video"
+	ConfigProviderModelsModalitiesInputPdf   ConfigProviderModelsModalitiesInput = "pdf"
+)
+
+func (r ConfigProviderModelsModalitiesInput) IsKnown() bool {
+	switch r {
+	case ConfigProviderModelsModalitiesInputText, ConfigProviderModelsModalitiesInputAudio, ConfigProviderModelsModalitiesInputImage, ConfigProviderModelsModalitiesInputVideo, ConfigProviderModelsModalitiesInputPdf:
+		return true
+	}
+	return false
+}
+
+type ConfigProviderModelsModalitiesOutput string
+
+const (
+	ConfigProviderModelsModalitiesOutputText  ConfigProviderModelsModalitiesOutput = "text"
+	ConfigProviderModelsModalitiesOutputAudio ConfigProviderModelsModalitiesOutput = "audio"
+	ConfigProviderModelsModalitiesOutputImage ConfigProviderModelsModalitiesOutput = "image"
+	ConfigProviderModelsModalitiesOutputVideo ConfigProviderModelsModalitiesOutput = "video"
+	ConfigProviderModelsModalitiesOutputPdf   ConfigProviderModelsModalitiesOutput = "pdf"
+)
+
+func (r ConfigProviderModelsModalitiesOutput) IsKnown() bool {
+	switch r {
+	case ConfigProviderModelsModalitiesOutputText, ConfigProviderModelsModalitiesOutputAudio, ConfigProviderModelsModalitiesOutputImage, ConfigProviderModelsModalitiesOutputVideo, ConfigProviderModelsModalitiesOutputPdf:
+		return true
+	}
+	return false
+}
+
 type ConfigProviderModelsProvider struct {
 	Npm  string                           `json:"npm,required"`
 	JSON configProviderModelsProviderJSON `json:"-"`
@@ -1680,6 +1743,21 @@ func (r configProviderModelsProviderJSON) RawJSON() string {
 	return r.raw
 }
 
+type ConfigProviderModelsStatus string
+
+const (
+	ConfigProviderModelsStatusAlpha ConfigProviderModelsStatus = "alpha"
+	ConfigProviderModelsStatusBeta  ConfigProviderModelsStatus = "beta"
+)
+
+func (r ConfigProviderModelsStatus) IsKnown() bool {
+	switch r {
+	case ConfigProviderModelsStatusAlpha, ConfigProviderModelsStatusBeta:
+		return true
+	}
+	return false
+}
+
 type ConfigProviderOptions struct {
 	APIKey  string `json:"apiKey"`
 	BaseURL string `json:"baseURL"`

+ 163 - 14
packages/sdk/go/event.go

@@ -65,6 +65,7 @@ type EventListResponse struct {
 	// [EventListResponseEventFileWatcherUpdatedProperties],
 	// [EventListResponseEventTodoUpdatedProperties],
 	// [EventListResponseEventSessionIdleProperties],
+	// [EventListResponseEventSessionCreatedProperties],
 	// [EventListResponseEventSessionUpdatedProperties],
 	// [EventListResponseEventSessionDeletedProperties],
 	// [EventListResponseEventSessionErrorProperties], [interface{}],
@@ -110,9 +111,10 @@ func (r *EventListResponse) UnmarshalJSON(data []byte) (err error) {
 // [EventListResponseEventPermissionUpdated],
 // [EventListResponseEventPermissionReplied], [EventListResponseEventFileEdited],
 // [EventListResponseEventFileWatcherUpdated], [EventListResponseEventTodoUpdated],
-// [EventListResponseEventSessionIdle], [EventListResponseEventSessionUpdated],
-// [EventListResponseEventSessionDeleted], [EventListResponseEventSessionError],
-// [EventListResponseEventServerConnected], [EventListResponseEventIdeInstalled].
+// [EventListResponseEventSessionIdle], [EventListResponseEventSessionCreated],
+// [EventListResponseEventSessionUpdated], [EventListResponseEventSessionDeleted],
+// [EventListResponseEventSessionError], [EventListResponseEventServerConnected],
+// [EventListResponseEventIdeInstalled].
 func (r EventListResponse) AsUnion() EventListResponseUnion {
 	return r.union
 }
@@ -126,9 +128,10 @@ func (r EventListResponse) AsUnion() EventListResponseUnion {
 // [EventListResponseEventPermissionUpdated],
 // [EventListResponseEventPermissionReplied], [EventListResponseEventFileEdited],
 // [EventListResponseEventFileWatcherUpdated], [EventListResponseEventTodoUpdated],
-// [EventListResponseEventSessionIdle], [EventListResponseEventSessionUpdated],
-// [EventListResponseEventSessionDeleted], [EventListResponseEventSessionError],
-// [EventListResponseEventServerConnected] or [EventListResponseEventIdeInstalled].
+// [EventListResponseEventSessionIdle], [EventListResponseEventSessionCreated],
+// [EventListResponseEventSessionUpdated], [EventListResponseEventSessionDeleted],
+// [EventListResponseEventSessionError], [EventListResponseEventServerConnected] or
+// [EventListResponseEventIdeInstalled].
 type EventListResponseUnion interface {
 	implementsEventListResponse()
 }
@@ -189,6 +192,10 @@ func init() {
 			TypeFilter: gjson.JSON,
 			Type:       reflect.TypeOf(EventListResponseEventSessionIdle{}),
 		},
+		apijson.UnionVariant{
+			TypeFilter: gjson.JSON,
+			Type:       reflect.TypeOf(EventListResponseEventSessionCreated{}),
+		},
 		apijson.UnionVariant{
 			TypeFilter: gjson.JSON,
 			Type:       reflect.TypeOf(EventListResponseEventSessionUpdated{}),
@@ -482,14 +489,16 @@ func (r eventListResponseEventMessagePartUpdatedJSON) RawJSON() string {
 func (r EventListResponseEventMessagePartUpdated) implementsEventListResponse() {}
 
 type EventListResponseEventMessagePartUpdatedProperties struct {
-	Part Part                                                   `json:"part,required"`
-	JSON eventListResponseEventMessagePartUpdatedPropertiesJSON `json:"-"`
+	Part  Part                                                   `json:"part,required"`
+	Delta string                                                 `json:"delta"`
+	JSON  eventListResponseEventMessagePartUpdatedPropertiesJSON `json:"-"`
 }
 
 // eventListResponseEventMessagePartUpdatedPropertiesJSON contains the JSON
 // metadata for the struct [EventListResponseEventMessagePartUpdatedProperties]
 type eventListResponseEventMessagePartUpdatedPropertiesJSON struct {
 	Part        apijson.Field
+	Delta       apijson.Field
 	raw         string
 	ExtraFields map[string]apijson.Field
 }
@@ -1034,6 +1043,66 @@ func (r EventListResponseEventSessionIdleType) IsKnown() bool {
 	return false
 }
 
+type EventListResponseEventSessionCreated struct {
+	Properties EventListResponseEventSessionCreatedProperties `json:"properties,required"`
+	Type       EventListResponseEventSessionCreatedType       `json:"type,required"`
+	JSON       eventListResponseEventSessionCreatedJSON       `json:"-"`
+}
+
+// eventListResponseEventSessionCreatedJSON contains the JSON metadata for the
+// struct [EventListResponseEventSessionCreated]
+type eventListResponseEventSessionCreatedJSON struct {
+	Properties  apijson.Field
+	Type        apijson.Field
+	raw         string
+	ExtraFields map[string]apijson.Field
+}
+
+func (r *EventListResponseEventSessionCreated) UnmarshalJSON(data []byte) (err error) {
+	return apijson.UnmarshalRoot(data, r)
+}
+
+func (r eventListResponseEventSessionCreatedJSON) RawJSON() string {
+	return r.raw
+}
+
+func (r EventListResponseEventSessionCreated) implementsEventListResponse() {}
+
+type EventListResponseEventSessionCreatedProperties struct {
+	Info Session                                            `json:"info,required"`
+	JSON eventListResponseEventSessionCreatedPropertiesJSON `json:"-"`
+}
+
+// eventListResponseEventSessionCreatedPropertiesJSON contains the JSON metadata
+// for the struct [EventListResponseEventSessionCreatedProperties]
+type eventListResponseEventSessionCreatedPropertiesJSON struct {
+	Info        apijson.Field
+	raw         string
+	ExtraFields map[string]apijson.Field
+}
+
+func (r *EventListResponseEventSessionCreatedProperties) UnmarshalJSON(data []byte) (err error) {
+	return apijson.UnmarshalRoot(data, r)
+}
+
+func (r eventListResponseEventSessionCreatedPropertiesJSON) RawJSON() string {
+	return r.raw
+}
+
+type EventListResponseEventSessionCreatedType string
+
+const (
+	EventListResponseEventSessionCreatedTypeSessionCreated EventListResponseEventSessionCreatedType = "session.created"
+)
+
+func (r EventListResponseEventSessionCreatedType) IsKnown() bool {
+	switch r {
+	case EventListResponseEventSessionCreatedTypeSessionCreated:
+		return true
+	}
+	return false
+}
+
 type EventListResponseEventSessionUpdated struct {
 	Properties EventListResponseEventSessionUpdatedProperties `json:"properties,required"`
 	Type       EventListResponseEventSessionUpdatedType       `json:"type,required"`
@@ -1204,7 +1273,8 @@ func (r eventListResponseEventSessionErrorPropertiesJSON) RawJSON() string {
 
 type EventListResponseEventSessionErrorPropertiesError struct {
 	// This field can have the runtime type of [shared.ProviderAuthErrorData],
-	// [shared.UnknownErrorData], [interface{}], [shared.MessageAbortedErrorData].
+	// [shared.UnknownErrorData], [interface{}], [shared.MessageAbortedErrorData],
+	// [EventListResponseEventSessionErrorPropertiesErrorAPIErrorData].
 	Data  interface{}                                           `json:"data,required"`
 	Name  EventListResponseEventSessionErrorPropertiesErrorName `json:"name,required"`
 	JSON  eventListResponseEventSessionErrorPropertiesErrorJSON `json:"-"`
@@ -1239,14 +1309,16 @@ func (r *EventListResponseEventSessionErrorPropertiesError) UnmarshalJSON(data [
 // Possible runtime types of the union are [shared.ProviderAuthError],
 // [shared.UnknownError],
 // [EventListResponseEventSessionErrorPropertiesErrorMessageOutputLengthError],
-// [shared.MessageAbortedError].
+// [shared.MessageAbortedError],
+// [EventListResponseEventSessionErrorPropertiesErrorAPIError].
 func (r EventListResponseEventSessionErrorPropertiesError) AsUnion() EventListResponseEventSessionErrorPropertiesErrorUnion {
 	return r.union
 }
 
 // Union satisfied by [shared.ProviderAuthError], [shared.UnknownError],
-// [EventListResponseEventSessionErrorPropertiesErrorMessageOutputLengthError] or
-// [shared.MessageAbortedError].
+// [EventListResponseEventSessionErrorPropertiesErrorMessageOutputLengthError],
+// [shared.MessageAbortedError] or
+// [EventListResponseEventSessionErrorPropertiesErrorAPIError].
 type EventListResponseEventSessionErrorPropertiesErrorUnion interface {
 	ImplementsEventListResponseEventSessionErrorPropertiesError()
 }
@@ -1271,6 +1343,10 @@ func init() {
 			TypeFilter: gjson.JSON,
 			Type:       reflect.TypeOf(shared.MessageAbortedError{}),
 		},
+		apijson.UnionVariant{
+			TypeFilter: gjson.JSON,
+			Type:       reflect.TypeOf(EventListResponseEventSessionErrorPropertiesErrorAPIError{}),
+		},
 	)
 }
 
@@ -1315,6 +1391,77 @@ func (r EventListResponseEventSessionErrorPropertiesErrorMessageOutputLengthErro
 	return false
 }
 
+type EventListResponseEventSessionErrorPropertiesErrorAPIError struct {
+	Data EventListResponseEventSessionErrorPropertiesErrorAPIErrorData `json:"data,required"`
+	Name EventListResponseEventSessionErrorPropertiesErrorAPIErrorName `json:"name,required"`
+	JSON eventListResponseEventSessionErrorPropertiesErrorAPIErrorJSON `json:"-"`
+}
+
+// eventListResponseEventSessionErrorPropertiesErrorAPIErrorJSON contains the JSON
+// metadata for the struct
+// [EventListResponseEventSessionErrorPropertiesErrorAPIError]
+type eventListResponseEventSessionErrorPropertiesErrorAPIErrorJSON struct {
+	Data        apijson.Field
+	Name        apijson.Field
+	raw         string
+	ExtraFields map[string]apijson.Field
+}
+
+func (r *EventListResponseEventSessionErrorPropertiesErrorAPIError) UnmarshalJSON(data []byte) (err error) {
+	return apijson.UnmarshalRoot(data, r)
+}
+
+func (r eventListResponseEventSessionErrorPropertiesErrorAPIErrorJSON) RawJSON() string {
+	return r.raw
+}
+
+func (r EventListResponseEventSessionErrorPropertiesErrorAPIError) ImplementsEventListResponseEventSessionErrorPropertiesError() {
+}
+
+type EventListResponseEventSessionErrorPropertiesErrorAPIErrorData struct {
+	IsRetryable     bool                                                              `json:"isRetryable,required"`
+	Message         string                                                            `json:"message,required"`
+	ResponseBody    string                                                            `json:"responseBody"`
+	ResponseHeaders map[string]string                                                 `json:"responseHeaders"`
+	StatusCode      float64                                                           `json:"statusCode"`
+	JSON            eventListResponseEventSessionErrorPropertiesErrorAPIErrorDataJSON `json:"-"`
+}
+
+// eventListResponseEventSessionErrorPropertiesErrorAPIErrorDataJSON contains the
+// JSON metadata for the struct
+// [EventListResponseEventSessionErrorPropertiesErrorAPIErrorData]
+type eventListResponseEventSessionErrorPropertiesErrorAPIErrorDataJSON struct {
+	IsRetryable     apijson.Field
+	Message         apijson.Field
+	ResponseBody    apijson.Field
+	ResponseHeaders apijson.Field
+	StatusCode      apijson.Field
+	raw             string
+	ExtraFields     map[string]apijson.Field
+}
+
+func (r *EventListResponseEventSessionErrorPropertiesErrorAPIErrorData) UnmarshalJSON(data []byte) (err error) {
+	return apijson.UnmarshalRoot(data, r)
+}
+
+func (r eventListResponseEventSessionErrorPropertiesErrorAPIErrorDataJSON) RawJSON() string {
+	return r.raw
+}
+
+type EventListResponseEventSessionErrorPropertiesErrorAPIErrorName string
+
+const (
+	EventListResponseEventSessionErrorPropertiesErrorAPIErrorNameAPIError EventListResponseEventSessionErrorPropertiesErrorAPIErrorName = "APIError"
+)
+
+func (r EventListResponseEventSessionErrorPropertiesErrorAPIErrorName) IsKnown() bool {
+	switch r {
+	case EventListResponseEventSessionErrorPropertiesErrorAPIErrorNameAPIError:
+		return true
+	}
+	return false
+}
+
 type EventListResponseEventSessionErrorPropertiesErrorName string
 
 const (
@@ -1322,11 +1469,12 @@ const (
 	EventListResponseEventSessionErrorPropertiesErrorNameUnknownError             EventListResponseEventSessionErrorPropertiesErrorName = "UnknownError"
 	EventListResponseEventSessionErrorPropertiesErrorNameMessageOutputLengthError EventListResponseEventSessionErrorPropertiesErrorName = "MessageOutputLengthError"
 	EventListResponseEventSessionErrorPropertiesErrorNameMessageAbortedError      EventListResponseEventSessionErrorPropertiesErrorName = "MessageAbortedError"
+	EventListResponseEventSessionErrorPropertiesErrorNameAPIError                 EventListResponseEventSessionErrorPropertiesErrorName = "APIError"
 )
 
 func (r EventListResponseEventSessionErrorPropertiesErrorName) IsKnown() bool {
 	switch r {
-	case EventListResponseEventSessionErrorPropertiesErrorNameProviderAuthError, EventListResponseEventSessionErrorPropertiesErrorNameUnknownError, EventListResponseEventSessionErrorPropertiesErrorNameMessageOutputLengthError, EventListResponseEventSessionErrorPropertiesErrorNameMessageAbortedError:
+	case EventListResponseEventSessionErrorPropertiesErrorNameProviderAuthError, EventListResponseEventSessionErrorPropertiesErrorNameUnknownError, EventListResponseEventSessionErrorPropertiesErrorNameMessageOutputLengthError, EventListResponseEventSessionErrorPropertiesErrorNameMessageAbortedError, EventListResponseEventSessionErrorPropertiesErrorNameAPIError:
 		return true
 	}
 	return false
@@ -1461,6 +1609,7 @@ const (
 	EventListResponseTypeFileWatcherUpdated   EventListResponseType = "file.watcher.updated"
 	EventListResponseTypeTodoUpdated          EventListResponseType = "todo.updated"
 	EventListResponseTypeSessionIdle          EventListResponseType = "session.idle"
+	EventListResponseTypeSessionCreated       EventListResponseType = "session.created"
 	EventListResponseTypeSessionUpdated       EventListResponseType = "session.updated"
 	EventListResponseTypeSessionDeleted       EventListResponseType = "session.deleted"
 	EventListResponseTypeSessionError         EventListResponseType = "session.error"
@@ -1470,7 +1619,7 @@ const (
 
 func (r EventListResponseType) IsKnown() bool {
 	switch r {
-	case EventListResponseTypeInstallationUpdated, EventListResponseTypeLspClientDiagnostics, EventListResponseTypeMessageUpdated, EventListResponseTypeMessageRemoved, EventListResponseTypeMessagePartUpdated, EventListResponseTypeMessagePartRemoved, EventListResponseTypeSessionCompacted, EventListResponseTypePermissionUpdated, EventListResponseTypePermissionReplied, EventListResponseTypeFileEdited, EventListResponseTypeFileWatcherUpdated, EventListResponseTypeTodoUpdated, EventListResponseTypeSessionIdle, EventListResponseTypeSessionUpdated, EventListResponseTypeSessionDeleted, EventListResponseTypeSessionError, EventListResponseTypeServerConnected, EventListResponseTypeIdeInstalled:
+	case EventListResponseTypeInstallationUpdated, EventListResponseTypeLspClientDiagnostics, EventListResponseTypeMessageUpdated, EventListResponseTypeMessageRemoved, EventListResponseTypeMessagePartUpdated, EventListResponseTypeMessagePartRemoved, EventListResponseTypeSessionCompacted, EventListResponseTypePermissionUpdated, EventListResponseTypePermissionReplied, EventListResponseTypeFileEdited, EventListResponseTypeFileWatcherUpdated, EventListResponseTypeTodoUpdated, EventListResponseTypeSessionIdle, EventListResponseTypeSessionCreated, EventListResponseTypeSessionUpdated, EventListResponseTypeSessionDeleted, EventListResponseTypeSessionError, EventListResponseTypeServerConnected, EventListResponseTypeIdeInstalled:
 		return true
 	}
 	return false

+ 38 - 4
packages/sdk/go/file.go

@@ -144,17 +144,23 @@ func (r FileNodeType) IsKnown() bool {
 }
 
 type FileReadResponse struct {
-	Content string                `json:"content,required"`
-	Diff    string                `json:"diff"`
-	Patch   FileReadResponsePatch `json:"patch"`
-	JSON    fileReadResponseJSON  `json:"-"`
+	Content  string                   `json:"content,required"`
+	Type     FileReadResponseType     `json:"type,required"`
+	Diff     string                   `json:"diff"`
+	Encoding FileReadResponseEncoding `json:"encoding"`
+	MimeType string                   `json:"mimeType"`
+	Patch    FileReadResponsePatch    `json:"patch"`
+	JSON     fileReadResponseJSON     `json:"-"`
 }
 
 // fileReadResponseJSON contains the JSON metadata for the struct
 // [FileReadResponse]
 type fileReadResponseJSON struct {
 	Content     apijson.Field
+	Type        apijson.Field
 	Diff        apijson.Field
+	Encoding    apijson.Field
+	MimeType    apijson.Field
 	Patch       apijson.Field
 	raw         string
 	ExtraFields map[string]apijson.Field
@@ -168,6 +174,34 @@ func (r fileReadResponseJSON) RawJSON() string {
 	return r.raw
 }
 
+type FileReadResponseType string
+
+const (
+	FileReadResponseTypeText FileReadResponseType = "text"
+)
+
+func (r FileReadResponseType) IsKnown() bool {
+	switch r {
+	case FileReadResponseTypeText:
+		return true
+	}
+	return false
+}
+
+type FileReadResponseEncoding string
+
+const (
+	FileReadResponseEncodingBase64 FileReadResponseEncoding = "base64"
+)
+
+func (r FileReadResponseEncoding) IsKnown() bool {
+	switch r {
+	case FileReadResponseEncodingBase64:
+		return true
+	}
+	return false
+}
+
 type FileReadResponsePatch struct {
 	Hunks       []FileReadResponsePatchHunk `json:"hunks,required"`
 	NewFileName string                      `json:"newFileName,required"`

+ 1 - 1
packages/sdk/go/internal/version.go

@@ -2,4 +2,4 @@
 
 package internal
 
-const PackageVersion = "0.16.2" // x-release-please-version
+const PackageVersion = "0.18.0" // x-release-please-version

+ 384 - 37
packages/sdk/go/session.go

@@ -365,6 +365,7 @@ type AssistantMessage struct {
 	Cost       float64                `json:"cost,required"`
 	Mode       string                 `json:"mode,required"`
 	ModelID    string                 `json:"modelID,required"`
+	ParentID   string                 `json:"parentID,required"`
 	Path       AssistantMessagePath   `json:"path,required"`
 	ProviderID string                 `json:"providerID,required"`
 	Role       AssistantMessageRole   `json:"role,required"`
@@ -384,6 +385,7 @@ type assistantMessageJSON struct {
 	Cost        apijson.Field
 	Mode        apijson.Field
 	ModelID     apijson.Field
+	ParentID    apijson.Field
 	Path        apijson.Field
 	ProviderID  apijson.Field
 	Role        apijson.Field
@@ -519,7 +521,8 @@ func (r assistantMessageTokensCacheJSON) RawJSON() string {
 
 type AssistantMessageError struct {
 	// This field can have the runtime type of [shared.ProviderAuthErrorData],
-	// [shared.UnknownErrorData], [interface{}], [shared.MessageAbortedErrorData].
+	// [shared.UnknownErrorData], [interface{}], [shared.MessageAbortedErrorData],
+	// [AssistantMessageErrorAPIErrorData].
 	Data  interface{}               `json:"data,required"`
 	Name  AssistantMessageErrorName `json:"name,required"`
 	JSON  assistantMessageErrorJSON `json:"-"`
@@ -553,13 +556,14 @@ func (r *AssistantMessageError) UnmarshalJSON(data []byte) (err error) {
 //
 // Possible runtime types of the union are [shared.ProviderAuthError],
 // [shared.UnknownError], [AssistantMessageErrorMessageOutputLengthError],
-// [shared.MessageAbortedError].
+// [shared.MessageAbortedError], [AssistantMessageErrorAPIError].
 func (r AssistantMessageError) AsUnion() AssistantMessageErrorUnion {
 	return r.union
 }
 
 // Union satisfied by [shared.ProviderAuthError], [shared.UnknownError],
-// [AssistantMessageErrorMessageOutputLengthError] or [shared.MessageAbortedError].
+// [AssistantMessageErrorMessageOutputLengthError], [shared.MessageAbortedError] or
+// [AssistantMessageErrorAPIError].
 type AssistantMessageErrorUnion interface {
 	ImplementsAssistantMessageError()
 }
@@ -584,6 +588,10 @@ func init() {
 			TypeFilter: gjson.JSON,
 			Type:       reflect.TypeOf(shared.MessageAbortedError{}),
 		},
+		apijson.UnionVariant{
+			TypeFilter: gjson.JSON,
+			Type:       reflect.TypeOf(AssistantMessageErrorAPIError{}),
+		},
 	)
 }
 
@@ -626,6 +634,74 @@ func (r AssistantMessageErrorMessageOutputLengthErrorName) IsKnown() bool {
 	return false
 }
 
+type AssistantMessageErrorAPIError struct {
+	Data AssistantMessageErrorAPIErrorData `json:"data,required"`
+	Name AssistantMessageErrorAPIErrorName `json:"name,required"`
+	JSON assistantMessageErrorAPIErrorJSON `json:"-"`
+}
+
+// assistantMessageErrorAPIErrorJSON contains the JSON metadata for the struct
+// [AssistantMessageErrorAPIError]
+type assistantMessageErrorAPIErrorJSON struct {
+	Data        apijson.Field
+	Name        apijson.Field
+	raw         string
+	ExtraFields map[string]apijson.Field
+}
+
+func (r *AssistantMessageErrorAPIError) UnmarshalJSON(data []byte) (err error) {
+	return apijson.UnmarshalRoot(data, r)
+}
+
+func (r assistantMessageErrorAPIErrorJSON) RawJSON() string {
+	return r.raw
+}
+
+func (r AssistantMessageErrorAPIError) ImplementsAssistantMessageError() {}
+
+type AssistantMessageErrorAPIErrorData struct {
+	IsRetryable     bool                                  `json:"isRetryable,required"`
+	Message         string                                `json:"message,required"`
+	ResponseBody    string                                `json:"responseBody"`
+	ResponseHeaders map[string]string                     `json:"responseHeaders"`
+	StatusCode      float64                               `json:"statusCode"`
+	JSON            assistantMessageErrorAPIErrorDataJSON `json:"-"`
+}
+
+// assistantMessageErrorAPIErrorDataJSON contains the JSON metadata for the struct
+// [AssistantMessageErrorAPIErrorData]
+type assistantMessageErrorAPIErrorDataJSON struct {
+	IsRetryable     apijson.Field
+	Message         apijson.Field
+	ResponseBody    apijson.Field
+	ResponseHeaders apijson.Field
+	StatusCode      apijson.Field
+	raw             string
+	ExtraFields     map[string]apijson.Field
+}
+
+func (r *AssistantMessageErrorAPIErrorData) UnmarshalJSON(data []byte) (err error) {
+	return apijson.UnmarshalRoot(data, r)
+}
+
+func (r assistantMessageErrorAPIErrorDataJSON) RawJSON() string {
+	return r.raw
+}
+
+type AssistantMessageErrorAPIErrorName string
+
+const (
+	AssistantMessageErrorAPIErrorNameAPIError AssistantMessageErrorAPIErrorName = "APIError"
+)
+
+func (r AssistantMessageErrorAPIErrorName) IsKnown() bool {
+	switch r {
+	case AssistantMessageErrorAPIErrorNameAPIError:
+		return true
+	}
+	return false
+}
+
 type AssistantMessageErrorName string
 
 const (
@@ -633,11 +709,12 @@ const (
 	AssistantMessageErrorNameUnknownError             AssistantMessageErrorName = "UnknownError"
 	AssistantMessageErrorNameMessageOutputLengthError AssistantMessageErrorName = "MessageOutputLengthError"
 	AssistantMessageErrorNameMessageAbortedError      AssistantMessageErrorName = "MessageAbortedError"
+	AssistantMessageErrorNameAPIError                 AssistantMessageErrorName = "APIError"
 )
 
 func (r AssistantMessageErrorName) IsKnown() bool {
 	switch r {
-	case AssistantMessageErrorNameProviderAuthError, AssistantMessageErrorNameUnknownError, AssistantMessageErrorNameMessageOutputLengthError, AssistantMessageErrorNameMessageAbortedError:
+	case AssistantMessageErrorNameProviderAuthError, AssistantMessageErrorNameUnknownError, AssistantMessageErrorNameMessageOutputLengthError, AssistantMessageErrorNameMessageAbortedError, AssistantMessageErrorNameAPIError:
 		return true
 	}
 	return false
@@ -918,13 +995,15 @@ type Message struct {
 	Time interface{} `json:"time,required"`
 	Cost float64     `json:"cost"`
 	// This field can have the runtime type of [AssistantMessageError].
-	Error   interface{} `json:"error"`
-	Mode    string      `json:"mode"`
-	ModelID string      `json:"modelID"`
+	Error    interface{} `json:"error"`
+	Mode     string      `json:"mode"`
+	ModelID  string      `json:"modelID"`
+	ParentID string      `json:"parentID"`
 	// This field can have the runtime type of [AssistantMessagePath].
 	Path       interface{} `json:"path"`
 	ProviderID string      `json:"providerID"`
-	Summary    bool        `json:"summary"`
+	// This field can have the runtime type of [UserMessageSummary], [bool].
+	Summary interface{} `json:"summary"`
 	// This field can have the runtime type of [[]string].
 	System interface{} `json:"system"`
 	// This field can have the runtime type of [AssistantMessageTokens].
@@ -943,6 +1022,7 @@ type messageJSON struct {
 	Error       apijson.Field
 	Mode        apijson.Field
 	ModelID     apijson.Field
+	ParentID    apijson.Field
 	Path        apijson.Field
 	ProviderID  apijson.Field
 	Summary     apijson.Field
@@ -1013,9 +1093,12 @@ type Part struct {
 	MessageID string   `json:"messageID,required"`
 	SessionID string   `json:"sessionID,required"`
 	Type      PartType `json:"type,required"`
+	Attempt   float64  `json:"attempt"`
 	CallID    string   `json:"callID"`
 	Cost      float64  `json:"cost"`
-	Filename  string   `json:"filename"`
+	// This field can have the runtime type of [PartRetryPartError].
+	Error    interface{} `json:"error"`
+	Filename string      `json:"filename"`
 	// This field can have the runtime type of [[]string].
 	Files interface{} `json:"files"`
 	Hash  string      `json:"hash"`
@@ -1023,6 +1106,7 @@ type Part struct {
 	Metadata interface{} `json:"metadata"`
 	Mime     string      `json:"mime"`
 	Name     string      `json:"name"`
+	Reason   string      `json:"reason"`
 	Snapshot string      `json:"snapshot"`
 	// This field can have the runtime type of [FilePartSource], [AgentPartSource].
 	Source interface{} `json:"source"`
@@ -1030,7 +1114,8 @@ type Part struct {
 	State     interface{} `json:"state"`
 	Synthetic bool        `json:"synthetic"`
 	Text      string      `json:"text"`
-	// This field can have the runtime type of [TextPartTime], [ReasoningPartTime].
+	// This field can have the runtime type of [TextPartTime], [ReasoningPartTime],
+	// [PartRetryPartTime].
 	Time interface{} `json:"time"`
 	// This field can have the runtime type of [StepFinishPartTokens].
 	Tokens interface{} `json:"tokens"`
@@ -1046,14 +1131,17 @@ type partJSON struct {
 	MessageID   apijson.Field
 	SessionID   apijson.Field
 	Type        apijson.Field
+	Attempt     apijson.Field
 	CallID      apijson.Field
 	Cost        apijson.Field
+	Error       apijson.Field
 	Filename    apijson.Field
 	Files       apijson.Field
 	Hash        apijson.Field
 	Metadata    apijson.Field
 	Mime        apijson.Field
 	Name        apijson.Field
+	Reason      apijson.Field
 	Snapshot    apijson.Field
 	Source      apijson.Field
 	State       apijson.Field
@@ -1085,14 +1173,14 @@ func (r *Part) UnmarshalJSON(data []byte) (err error) {
 //
 // Possible runtime types of the union are [TextPart], [ReasoningPart], [FilePart],
 // [ToolPart], [StepStartPart], [StepFinishPart], [SnapshotPart], [PartPatchPart],
-// [AgentPart].
+// [AgentPart], [PartRetryPart].
 func (r Part) AsUnion() PartUnion {
 	return r.union
 }
 
 // Union satisfied by [TextPart], [ReasoningPart], [FilePart], [ToolPart],
-// [StepStartPart], [StepFinishPart], [SnapshotPart], [PartPatchPart] or
-// [AgentPart].
+// [StepStartPart], [StepFinishPart], [SnapshotPart], [PartPatchPart], [AgentPart]
+// or [PartRetryPart].
 type PartUnion interface {
 	implementsPart()
 }
@@ -1137,6 +1225,10 @@ func init() {
 			TypeFilter: gjson.JSON,
 			Type:       reflect.TypeOf(AgentPart{}),
 		},
+		apijson.UnionVariant{
+			TypeFilter: gjson.JSON,
+			Type:       reflect.TypeOf(PartRetryPart{}),
+		},
 	)
 }
 
@@ -1186,6 +1278,141 @@ func (r PartPatchPartType) IsKnown() bool {
 	return false
 }
 
+type PartRetryPart struct {
+	ID        string             `json:"id,required"`
+	Attempt   float64            `json:"attempt,required"`
+	Error     PartRetryPartError `json:"error,required"`
+	MessageID string             `json:"messageID,required"`
+	SessionID string             `json:"sessionID,required"`
+	Time      PartRetryPartTime  `json:"time,required"`
+	Type      PartRetryPartType  `json:"type,required"`
+	JSON      partRetryPartJSON  `json:"-"`
+}
+
+// partRetryPartJSON contains the JSON metadata for the struct [PartRetryPart]
+type partRetryPartJSON struct {
+	ID          apijson.Field
+	Attempt     apijson.Field
+	Error       apijson.Field
+	MessageID   apijson.Field
+	SessionID   apijson.Field
+	Time        apijson.Field
+	Type        apijson.Field
+	raw         string
+	ExtraFields map[string]apijson.Field
+}
+
+func (r *PartRetryPart) UnmarshalJSON(data []byte) (err error) {
+	return apijson.UnmarshalRoot(data, r)
+}
+
+func (r partRetryPartJSON) RawJSON() string {
+	return r.raw
+}
+
+func (r PartRetryPart) implementsPart() {}
+
+type PartRetryPartError struct {
+	Data PartRetryPartErrorData `json:"data,required"`
+	Name PartRetryPartErrorName `json:"name,required"`
+	JSON partRetryPartErrorJSON `json:"-"`
+}
+
+// partRetryPartErrorJSON contains the JSON metadata for the struct
+// [PartRetryPartError]
+type partRetryPartErrorJSON struct {
+	Data        apijson.Field
+	Name        apijson.Field
+	raw         string
+	ExtraFields map[string]apijson.Field
+}
+
+func (r *PartRetryPartError) UnmarshalJSON(data []byte) (err error) {
+	return apijson.UnmarshalRoot(data, r)
+}
+
+func (r partRetryPartErrorJSON) RawJSON() string {
+	return r.raw
+}
+
+type PartRetryPartErrorData struct {
+	IsRetryable     bool                       `json:"isRetryable,required"`
+	Message         string                     `json:"message,required"`
+	ResponseBody    string                     `json:"responseBody"`
+	ResponseHeaders map[string]string          `json:"responseHeaders"`
+	StatusCode      float64                    `json:"statusCode"`
+	JSON            partRetryPartErrorDataJSON `json:"-"`
+}
+
+// partRetryPartErrorDataJSON contains the JSON metadata for the struct
+// [PartRetryPartErrorData]
+type partRetryPartErrorDataJSON struct {
+	IsRetryable     apijson.Field
+	Message         apijson.Field
+	ResponseBody    apijson.Field
+	ResponseHeaders apijson.Field
+	StatusCode      apijson.Field
+	raw             string
+	ExtraFields     map[string]apijson.Field
+}
+
+func (r *PartRetryPartErrorData) UnmarshalJSON(data []byte) (err error) {
+	return apijson.UnmarshalRoot(data, r)
+}
+
+func (r partRetryPartErrorDataJSON) RawJSON() string {
+	return r.raw
+}
+
+type PartRetryPartErrorName string
+
+const (
+	PartRetryPartErrorNameAPIError PartRetryPartErrorName = "APIError"
+)
+
+func (r PartRetryPartErrorName) IsKnown() bool {
+	switch r {
+	case PartRetryPartErrorNameAPIError:
+		return true
+	}
+	return false
+}
+
+type PartRetryPartTime struct {
+	Created float64               `json:"created,required"`
+	JSON    partRetryPartTimeJSON `json:"-"`
+}
+
+// partRetryPartTimeJSON contains the JSON metadata for the struct
+// [PartRetryPartTime]
+type partRetryPartTimeJSON struct {
+	Created     apijson.Field
+	raw         string
+	ExtraFields map[string]apijson.Field
+}
+
+func (r *PartRetryPartTime) UnmarshalJSON(data []byte) (err error) {
+	return apijson.UnmarshalRoot(data, r)
+}
+
+func (r partRetryPartTimeJSON) RawJSON() string {
+	return r.raw
+}
+
+type PartRetryPartType string
+
+const (
+	PartRetryPartTypeRetry PartRetryPartType = "retry"
+)
+
+func (r PartRetryPartType) IsKnown() bool {
+	switch r {
+	case PartRetryPartTypeRetry:
+		return true
+	}
+	return false
+}
+
 type PartType string
 
 const (
@@ -1198,11 +1425,12 @@ const (
 	PartTypeSnapshot   PartType = "snapshot"
 	PartTypePatch      PartType = "patch"
 	PartTypeAgent      PartType = "agent"
+	PartTypeRetry      PartType = "retry"
 )
 
 func (r PartType) IsKnown() bool {
 	switch r {
-	case PartTypeText, PartTypeReasoning, PartTypeFile, PartTypeTool, PartTypeStepStart, PartTypeStepFinish, PartTypeSnapshot, PartTypePatch, PartTypeAgent:
+	case PartTypeText, PartTypeReasoning, PartTypeFile, PartTypeTool, PartTypeStepStart, PartTypeStepFinish, PartTypeSnapshot, PartTypePatch, PartTypeAgent, PartTypeRetry:
 		return true
 	}
 	return false
@@ -1280,16 +1508,17 @@ func (r ReasoningPartType) IsKnown() bool {
 }
 
 type Session struct {
-	ID        string        `json:"id,required"`
-	Directory string        `json:"directory,required"`
-	ProjectID string        `json:"projectID,required"`
-	Time      SessionTime   `json:"time,required"`
-	Title     string        `json:"title,required"`
-	Version   string        `json:"version,required"`
-	ParentID  string        `json:"parentID"`
-	Revert    SessionRevert `json:"revert"`
-	Share     SessionShare  `json:"share"`
-	JSON      sessionJSON   `json:"-"`
+	ID        string         `json:"id,required"`
+	Directory string         `json:"directory,required"`
+	ProjectID string         `json:"projectID,required"`
+	Time      SessionTime    `json:"time,required"`
+	Title     string         `json:"title,required"`
+	Version   string         `json:"version,required"`
+	ParentID  string         `json:"parentID"`
+	Revert    SessionRevert  `json:"revert"`
+	Share     SessionShare   `json:"share"`
+	Summary   SessionSummary `json:"summary"`
+	JSON      sessionJSON    `json:"-"`
 }
 
 // sessionJSON contains the JSON metadata for the struct [Session]
@@ -1303,6 +1532,7 @@ type sessionJSON struct {
 	ParentID    apijson.Field
 	Revert      apijson.Field
 	Share       apijson.Field
+	Summary     apijson.Field
 	raw         string
 	ExtraFields map[string]apijson.Field
 }
@@ -1385,6 +1615,55 @@ func (r sessionShareJSON) RawJSON() string {
 	return r.raw
 }
 
+type SessionSummary struct {
+	Diffs []SessionSummaryDiff `json:"diffs,required"`
+	JSON  sessionSummaryJSON   `json:"-"`
+}
+
+// sessionSummaryJSON contains the JSON metadata for the struct [SessionSummary]
+type sessionSummaryJSON struct {
+	Diffs       apijson.Field
+	raw         string
+	ExtraFields map[string]apijson.Field
+}
+
+func (r *SessionSummary) UnmarshalJSON(data []byte) (err error) {
+	return apijson.UnmarshalRoot(data, r)
+}
+
+func (r sessionSummaryJSON) RawJSON() string {
+	return r.raw
+}
+
+type SessionSummaryDiff struct {
+	Additions float64                `json:"additions,required"`
+	After     string                 `json:"after,required"`
+	Before    string                 `json:"before,required"`
+	Deletions float64                `json:"deletions,required"`
+	File      string                 `json:"file,required"`
+	JSON      sessionSummaryDiffJSON `json:"-"`
+}
+
+// sessionSummaryDiffJSON contains the JSON metadata for the struct
+// [SessionSummaryDiff]
+type sessionSummaryDiffJSON struct {
+	Additions   apijson.Field
+	After       apijson.Field
+	Before      apijson.Field
+	Deletions   apijson.Field
+	File        apijson.Field
+	raw         string
+	ExtraFields map[string]apijson.Field
+}
+
+func (r *SessionSummaryDiff) UnmarshalJSON(data []byte) (err error) {
+	return apijson.UnmarshalRoot(data, r)
+}
+
+func (r sessionSummaryDiffJSON) RawJSON() string {
+	return r.raw
+}
+
 type SnapshotPart struct {
 	ID        string           `json:"id,required"`
 	MessageID string           `json:"messageID,required"`
@@ -1433,9 +1712,11 @@ type StepFinishPart struct {
 	ID        string               `json:"id,required"`
 	Cost      float64              `json:"cost,required"`
 	MessageID string               `json:"messageID,required"`
+	Reason    string               `json:"reason,required"`
 	SessionID string               `json:"sessionID,required"`
 	Tokens    StepFinishPartTokens `json:"tokens,required"`
 	Type      StepFinishPartType   `json:"type,required"`
+	Snapshot  string               `json:"snapshot"`
 	JSON      stepFinishPartJSON   `json:"-"`
 }
 
@@ -1444,9 +1725,11 @@ type stepFinishPartJSON struct {
 	ID          apijson.Field
 	Cost        apijson.Field
 	MessageID   apijson.Field
+	Reason      apijson.Field
 	SessionID   apijson.Field
 	Tokens      apijson.Field
 	Type        apijson.Field
+	Snapshot    apijson.Field
 	raw         string
 	ExtraFields map[string]apijson.Field
 }
@@ -1530,6 +1813,7 @@ type StepStartPart struct {
 	MessageID string            `json:"messageID,required"`
 	SessionID string            `json:"sessionID,required"`
 	Type      StepStartPartType `json:"type,required"`
+	Snapshot  string            `json:"snapshot"`
 	JSON      stepStartPartJSON `json:"-"`
 }
 
@@ -1539,6 +1823,7 @@ type stepStartPartJSON struct {
 	MessageID   apijson.Field
 	SessionID   apijson.Field
 	Type        apijson.Field
+	Snapshot    apijson.Field
 	raw         string
 	ExtraFields map[string]apijson.Field
 }
@@ -1872,7 +2157,9 @@ func (r ToolPart) implementsPart() {}
 
 type ToolPartState struct {
 	Status ToolPartStateStatus `json:"status,required"`
-	Error  string              `json:"error"`
+	// This field can have the runtime type of [[]FilePart].
+	Attachments interface{} `json:"attachments"`
+	Error       string      `json:"error"`
 	// This field can have the runtime type of [interface{}], [map[string]interface{}].
 	Input interface{} `json:"input"`
 	// This field can have the runtime type of [map[string]interface{}].
@@ -1889,6 +2176,7 @@ type ToolPartState struct {
 // toolPartStateJSON contains the JSON metadata for the struct [ToolPartState]
 type toolPartStateJSON struct {
 	Status      apijson.Field
+	Attachments apijson.Field
 	Error       apijson.Field
 	Input       apijson.Field
 	Metadata    apijson.Field
@@ -1982,13 +2270,14 @@ func (r ToolPartType) IsKnown() bool {
 }
 
 type ToolStateCompleted struct {
-	Input    map[string]interface{}   `json:"input,required"`
-	Metadata map[string]interface{}   `json:"metadata,required"`
-	Output   string                   `json:"output,required"`
-	Status   ToolStateCompletedStatus `json:"status,required"`
-	Time     ToolStateCompletedTime   `json:"time,required"`
-	Title    string                   `json:"title,required"`
-	JSON     toolStateCompletedJSON   `json:"-"`
+	Input       map[string]interface{}   `json:"input,required"`
+	Metadata    map[string]interface{}   `json:"metadata,required"`
+	Output      string                   `json:"output,required"`
+	Status      ToolStateCompletedStatus `json:"status,required"`
+	Time        ToolStateCompletedTime   `json:"time,required"`
+	Title       string                   `json:"title,required"`
+	Attachments []FilePart               `json:"attachments"`
+	JSON        toolStateCompletedJSON   `json:"-"`
 }
 
 // toolStateCompletedJSON contains the JSON metadata for the struct
@@ -2000,6 +2289,7 @@ type toolStateCompletedJSON struct {
 	Status      apijson.Field
 	Time        apijson.Field
 	Title       apijson.Field
+	Attachments apijson.Field
 	raw         string
 	ExtraFields map[string]apijson.Field
 }
@@ -2224,11 +2514,12 @@ func (r toolStateRunningTimeJSON) RawJSON() string {
 }
 
 type UserMessage struct {
-	ID        string          `json:"id,required"`
-	Role      UserMessageRole `json:"role,required"`
-	SessionID string          `json:"sessionID,required"`
-	Time      UserMessageTime `json:"time,required"`
-	JSON      userMessageJSON `json:"-"`
+	ID        string             `json:"id,required"`
+	Role      UserMessageRole    `json:"role,required"`
+	SessionID string             `json:"sessionID,required"`
+	Time      UserMessageTime    `json:"time,required"`
+	Summary   UserMessageSummary `json:"summary"`
+	JSON      userMessageJSON    `json:"-"`
 }
 
 // userMessageJSON contains the JSON metadata for the struct [UserMessage]
@@ -2237,6 +2528,7 @@ type userMessageJSON struct {
 	Role        apijson.Field
 	SessionID   apijson.Field
 	Time        apijson.Field
+	Summary     apijson.Field
 	raw         string
 	ExtraFields map[string]apijson.Field
 }
@@ -2285,6 +2577,60 @@ func (r userMessageTimeJSON) RawJSON() string {
 	return r.raw
 }
 
+type UserMessageSummary struct {
+	Diffs []UserMessageSummaryDiff `json:"diffs,required"`
+	Body  string                   `json:"body"`
+	Title string                   `json:"title"`
+	JSON  userMessageSummaryJSON   `json:"-"`
+}
+
+// userMessageSummaryJSON contains the JSON metadata for the struct
+// [UserMessageSummary]
+type userMessageSummaryJSON struct {
+	Diffs       apijson.Field
+	Body        apijson.Field
+	Title       apijson.Field
+	raw         string
+	ExtraFields map[string]apijson.Field
+}
+
+func (r *UserMessageSummary) UnmarshalJSON(data []byte) (err error) {
+	return apijson.UnmarshalRoot(data, r)
+}
+
+func (r userMessageSummaryJSON) RawJSON() string {
+	return r.raw
+}
+
+type UserMessageSummaryDiff struct {
+	Additions float64                    `json:"additions,required"`
+	After     string                     `json:"after,required"`
+	Before    string                     `json:"before,required"`
+	Deletions float64                    `json:"deletions,required"`
+	File      string                     `json:"file,required"`
+	JSON      userMessageSummaryDiffJSON `json:"-"`
+}
+
+// userMessageSummaryDiffJSON contains the JSON metadata for the struct
+// [UserMessageSummaryDiff]
+type userMessageSummaryDiffJSON struct {
+	Additions   apijson.Field
+	After       apijson.Field
+	Before      apijson.Field
+	Deletions   apijson.Field
+	File        apijson.Field
+	raw         string
+	ExtraFields map[string]apijson.Field
+}
+
+func (r *UserMessageSummaryDiff) UnmarshalJSON(data []byte) (err error) {
+	return apijson.UnmarshalRoot(data, r)
+}
+
+func (r userMessageSummaryDiffJSON) RawJSON() string {
+	return r.raw
+}
+
 type SessionCommandResponse struct {
 	Info  AssistantMessage           `json:"info,required"`
 	Parts []Part                     `json:"parts,required"`
@@ -2542,6 +2888,7 @@ type SessionPromptParams struct {
 	Agent     param.Field[string]                         `json:"agent"`
 	MessageID param.Field[string]                         `json:"messageID"`
 	Model     param.Field[SessionPromptParamsModel]       `json:"model"`
+	NoReply   param.Field[bool]                           `json:"noReply"`
 	System    param.Field[string]                         `json:"system"`
 	Tools     param.Field[map[string]bool]                `json:"tools"`
 }

+ 2 - 1
packages/sdk/go/session_test.go

@@ -361,7 +361,8 @@ func TestSessionPromptWithOptionalParams(t *testing.T) {
 				ModelID:    opencode.F("modelID"),
 				ProviderID: opencode.F("providerID"),
 			}),
-			System: opencode.F("system"),
+			NoReply: opencode.F(true),
+			System:  opencode.F("system"),
 			Tools: opencode.F(map[string]bool{
 				"foo": true,
 			}),