diff --git a/.stats.yml b/.stats.yml index f4ae167..911073e 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 43 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/opencode%2Fopencode-ad911ed0bdbeca62807509f364f25fcafd7a83e0b43e027ec0a85f72b7a4d963.yml -openapi_spec_hash: 15152513b4246bf4b5f8546fa6f1603f +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/opencode%2Fopencode-273fc9fea965af661dfed0902d00f10d6ed844f0681ca861a58821c4902eac2f.yml +openapi_spec_hash: c6144f23a1bac75f79be86edd405552b config_hash: 026ef000d34bf2f930e7b41e77d2d3ff diff --git a/event.go b/event.go index 32d72d1..ac5231c 100644 --- a/event.go +++ b/event.go @@ -62,11 +62,12 @@ type EventListResponse struct { // [EventListResponseEventSessionCompactedProperties], [Permission], // [EventListResponseEventPermissionRepliedProperties], // [EventListResponseEventFileEditedProperties], + // [EventListResponseEventFileWatcherUpdatedProperties], + // [EventListResponseEventTodoUpdatedProperties], // [EventListResponseEventSessionIdleProperties], // [EventListResponseEventSessionUpdatedProperties], // [EventListResponseEventSessionDeletedProperties], // [EventListResponseEventSessionErrorProperties], [interface{}], - // [EventListResponseEventFileWatcherUpdatedProperties], // [EventListResponseEventIdeInstalledProperties]. Properties interface{} `json:"properties,required"` Type EventListResponseType `json:"type,required"` @@ -108,11 +109,10 @@ func (r *EventListResponse) UnmarshalJSON(data []byte) (err error) { // [EventListResponseEventSessionCompacted], // [EventListResponseEventPermissionUpdated], // [EventListResponseEventPermissionReplied], [EventListResponseEventFileEdited], +// [EventListResponseEventFileWatcherUpdated], [EventListResponseEventTodoUpdated], // [EventListResponseEventSessionIdle], [EventListResponseEventSessionUpdated], // [EventListResponseEventSessionDeleted], [EventListResponseEventSessionError], -// [EventListResponseEventServerConnected], -// [EventListResponseEventFileWatcherUpdated], -// [EventListResponseEventIdeInstalled]. +// [EventListResponseEventServerConnected], [EventListResponseEventIdeInstalled]. func (r EventListResponse) AsUnion() EventListResponseUnion { return r.union } @@ -125,11 +125,10 @@ func (r EventListResponse) AsUnion() EventListResponseUnion { // [EventListResponseEventSessionCompacted], // [EventListResponseEventPermissionUpdated], // [EventListResponseEventPermissionReplied], [EventListResponseEventFileEdited], +// [EventListResponseEventFileWatcherUpdated], [EventListResponseEventTodoUpdated], // [EventListResponseEventSessionIdle], [EventListResponseEventSessionUpdated], // [EventListResponseEventSessionDeleted], [EventListResponseEventSessionError], -// [EventListResponseEventServerConnected], -// [EventListResponseEventFileWatcherUpdated] or -// [EventListResponseEventIdeInstalled]. +// [EventListResponseEventServerConnected] or [EventListResponseEventIdeInstalled]. type EventListResponseUnion interface { implementsEventListResponse() } @@ -178,6 +177,14 @@ func init() { TypeFilter: gjson.JSON, Type: reflect.TypeOf(EventListResponseEventFileEdited{}), }, + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(EventListResponseEventFileWatcherUpdated{}), + }, + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(EventListResponseEventTodoUpdated{}), + }, apijson.UnionVariant{ TypeFilter: gjson.JSON, Type: reflect.TypeOf(EventListResponseEventSessionIdle{}), @@ -198,10 +205,6 @@ func init() { TypeFilter: gjson.JSON, Type: reflect.TypeOf(EventListResponseEventServerConnected{}), }, - apijson.UnionVariant{ - TypeFilter: gjson.JSON, - Type: reflect.TypeOf(EventListResponseEventFileWatcherUpdated{}), - }, apijson.UnionVariant{ TypeFilter: gjson.JSON, Type: reflect.TypeOf(EventListResponseEventIdeInstalled{}), @@ -800,6 +803,177 @@ func (r EventListResponseEventFileEditedType) IsKnown() bool { return false } +type EventListResponseEventFileWatcherUpdated struct { + Properties EventListResponseEventFileWatcherUpdatedProperties `json:"properties,required"` + Type EventListResponseEventFileWatcherUpdatedType `json:"type,required"` + JSON eventListResponseEventFileWatcherUpdatedJSON `json:"-"` +} + +// eventListResponseEventFileWatcherUpdatedJSON contains the JSON metadata for the +// struct [EventListResponseEventFileWatcherUpdated] +type eventListResponseEventFileWatcherUpdatedJSON struct { + Properties apijson.Field + Type apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *EventListResponseEventFileWatcherUpdated) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r eventListResponseEventFileWatcherUpdatedJSON) RawJSON() string { + return r.raw +} + +func (r EventListResponseEventFileWatcherUpdated) implementsEventListResponse() {} + +type EventListResponseEventFileWatcherUpdatedProperties struct { + Event EventListResponseEventFileWatcherUpdatedPropertiesEvent `json:"event,required"` + File string `json:"file,required"` + JSON eventListResponseEventFileWatcherUpdatedPropertiesJSON `json:"-"` +} + +// eventListResponseEventFileWatcherUpdatedPropertiesJSON contains the JSON +// metadata for the struct [EventListResponseEventFileWatcherUpdatedProperties] +type eventListResponseEventFileWatcherUpdatedPropertiesJSON struct { + Event apijson.Field + File apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *EventListResponseEventFileWatcherUpdatedProperties) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r eventListResponseEventFileWatcherUpdatedPropertiesJSON) RawJSON() string { + return r.raw +} + +type EventListResponseEventFileWatcherUpdatedPropertiesEvent string + +const ( + EventListResponseEventFileWatcherUpdatedPropertiesEventAdd EventListResponseEventFileWatcherUpdatedPropertiesEvent = "add" + EventListResponseEventFileWatcherUpdatedPropertiesEventChange EventListResponseEventFileWatcherUpdatedPropertiesEvent = "change" + EventListResponseEventFileWatcherUpdatedPropertiesEventUnlink EventListResponseEventFileWatcherUpdatedPropertiesEvent = "unlink" +) + +func (r EventListResponseEventFileWatcherUpdatedPropertiesEvent) IsKnown() bool { + switch r { + case EventListResponseEventFileWatcherUpdatedPropertiesEventAdd, EventListResponseEventFileWatcherUpdatedPropertiesEventChange, EventListResponseEventFileWatcherUpdatedPropertiesEventUnlink: + return true + } + return false +} + +type EventListResponseEventFileWatcherUpdatedType string + +const ( + EventListResponseEventFileWatcherUpdatedTypeFileWatcherUpdated EventListResponseEventFileWatcherUpdatedType = "file.watcher.updated" +) + +func (r EventListResponseEventFileWatcherUpdatedType) IsKnown() bool { + switch r { + case EventListResponseEventFileWatcherUpdatedTypeFileWatcherUpdated: + return true + } + return false +} + +type EventListResponseEventTodoUpdated struct { + Properties EventListResponseEventTodoUpdatedProperties `json:"properties,required"` + Type EventListResponseEventTodoUpdatedType `json:"type,required"` + JSON eventListResponseEventTodoUpdatedJSON `json:"-"` +} + +// eventListResponseEventTodoUpdatedJSON contains the JSON metadata for the struct +// [EventListResponseEventTodoUpdated] +type eventListResponseEventTodoUpdatedJSON struct { + Properties apijson.Field + Type apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *EventListResponseEventTodoUpdated) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r eventListResponseEventTodoUpdatedJSON) RawJSON() string { + return r.raw +} + +func (r EventListResponseEventTodoUpdated) implementsEventListResponse() {} + +type EventListResponseEventTodoUpdatedProperties struct { + SessionID string `json:"sessionID,required"` + Todos []EventListResponseEventTodoUpdatedPropertiesTodo `json:"todos,required"` + JSON eventListResponseEventTodoUpdatedPropertiesJSON `json:"-"` +} + +// eventListResponseEventTodoUpdatedPropertiesJSON contains the JSON metadata for +// the struct [EventListResponseEventTodoUpdatedProperties] +type eventListResponseEventTodoUpdatedPropertiesJSON struct { + SessionID apijson.Field + Todos apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *EventListResponseEventTodoUpdatedProperties) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r eventListResponseEventTodoUpdatedPropertiesJSON) RawJSON() string { + return r.raw +} + +type EventListResponseEventTodoUpdatedPropertiesTodo struct { + // Unique identifier for the todo item + ID string `json:"id,required"` + // Brief description of the task + Content string `json:"content,required"` + // Priority level of the task: high, medium, low + Priority string `json:"priority,required"` + // Current status of the task: pending, in_progress, completed, cancelled + Status string `json:"status,required"` + JSON eventListResponseEventTodoUpdatedPropertiesTodoJSON `json:"-"` +} + +// eventListResponseEventTodoUpdatedPropertiesTodoJSON contains the JSON metadata +// for the struct [EventListResponseEventTodoUpdatedPropertiesTodo] +type eventListResponseEventTodoUpdatedPropertiesTodoJSON struct { + ID apijson.Field + Content apijson.Field + Priority apijson.Field + Status apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *EventListResponseEventTodoUpdatedPropertiesTodo) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r eventListResponseEventTodoUpdatedPropertiesTodoJSON) RawJSON() string { + return r.raw +} + +type EventListResponseEventTodoUpdatedType string + +const ( + EventListResponseEventTodoUpdatedTypeTodoUpdated EventListResponseEventTodoUpdatedType = "todo.updated" +) + +func (r EventListResponseEventTodoUpdatedType) IsKnown() bool { + switch r { + case EventListResponseEventTodoUpdatedTypeTodoUpdated: + return true + } + return false +} + type EventListResponseEventSessionIdle struct { Properties EventListResponseEventSessionIdleProperties `json:"properties,required"` Type EventListResponseEventSessionIdleType `json:"type,required"` @@ -1211,84 +1385,6 @@ func (r EventListResponseEventServerConnectedType) IsKnown() bool { return false } -type EventListResponseEventFileWatcherUpdated struct { - Properties EventListResponseEventFileWatcherUpdatedProperties `json:"properties,required"` - Type EventListResponseEventFileWatcherUpdatedType `json:"type,required"` - JSON eventListResponseEventFileWatcherUpdatedJSON `json:"-"` -} - -// eventListResponseEventFileWatcherUpdatedJSON contains the JSON metadata for the -// struct [EventListResponseEventFileWatcherUpdated] -type eventListResponseEventFileWatcherUpdatedJSON struct { - Properties apijson.Field - Type apijson.Field - raw string - ExtraFields map[string]apijson.Field -} - -func (r *EventListResponseEventFileWatcherUpdated) UnmarshalJSON(data []byte) (err error) { - return apijson.UnmarshalRoot(data, r) -} - -func (r eventListResponseEventFileWatcherUpdatedJSON) RawJSON() string { - return r.raw -} - -func (r EventListResponseEventFileWatcherUpdated) implementsEventListResponse() {} - -type EventListResponseEventFileWatcherUpdatedProperties struct { - Event EventListResponseEventFileWatcherUpdatedPropertiesEvent `json:"event,required"` - File string `json:"file,required"` - JSON eventListResponseEventFileWatcherUpdatedPropertiesJSON `json:"-"` -} - -// eventListResponseEventFileWatcherUpdatedPropertiesJSON contains the JSON -// metadata for the struct [EventListResponseEventFileWatcherUpdatedProperties] -type eventListResponseEventFileWatcherUpdatedPropertiesJSON struct { - Event apijson.Field - File apijson.Field - raw string - ExtraFields map[string]apijson.Field -} - -func (r *EventListResponseEventFileWatcherUpdatedProperties) UnmarshalJSON(data []byte) (err error) { - return apijson.UnmarshalRoot(data, r) -} - -func (r eventListResponseEventFileWatcherUpdatedPropertiesJSON) RawJSON() string { - return r.raw -} - -type EventListResponseEventFileWatcherUpdatedPropertiesEvent string - -const ( - EventListResponseEventFileWatcherUpdatedPropertiesEventAdd EventListResponseEventFileWatcherUpdatedPropertiesEvent = "add" - EventListResponseEventFileWatcherUpdatedPropertiesEventChange EventListResponseEventFileWatcherUpdatedPropertiesEvent = "change" - EventListResponseEventFileWatcherUpdatedPropertiesEventUnlink EventListResponseEventFileWatcherUpdatedPropertiesEvent = "unlink" -) - -func (r EventListResponseEventFileWatcherUpdatedPropertiesEvent) IsKnown() bool { - switch r { - case EventListResponseEventFileWatcherUpdatedPropertiesEventAdd, EventListResponseEventFileWatcherUpdatedPropertiesEventChange, EventListResponseEventFileWatcherUpdatedPropertiesEventUnlink: - return true - } - return false -} - -type EventListResponseEventFileWatcherUpdatedType string - -const ( - EventListResponseEventFileWatcherUpdatedTypeFileWatcherUpdated EventListResponseEventFileWatcherUpdatedType = "file.watcher.updated" -) - -func (r EventListResponseEventFileWatcherUpdatedType) IsKnown() bool { - switch r { - case EventListResponseEventFileWatcherUpdatedTypeFileWatcherUpdated: - return true - } - return false -} - type EventListResponseEventIdeInstalled struct { Properties EventListResponseEventIdeInstalledProperties `json:"properties,required"` Type EventListResponseEventIdeInstalledType `json:"type,required"` @@ -1362,18 +1458,19 @@ const ( EventListResponseTypePermissionUpdated EventListResponseType = "permission.updated" EventListResponseTypePermissionReplied EventListResponseType = "permission.replied" EventListResponseTypeFileEdited EventListResponseType = "file.edited" + EventListResponseTypeFileWatcherUpdated EventListResponseType = "file.watcher.updated" + EventListResponseTypeTodoUpdated EventListResponseType = "todo.updated" EventListResponseTypeSessionIdle EventListResponseType = "session.idle" EventListResponseTypeSessionUpdated EventListResponseType = "session.updated" EventListResponseTypeSessionDeleted EventListResponseType = "session.deleted" EventListResponseTypeSessionError EventListResponseType = "session.error" EventListResponseTypeServerConnected EventListResponseType = "server.connected" - EventListResponseTypeFileWatcherUpdated EventListResponseType = "file.watcher.updated" EventListResponseTypeIdeInstalled EventListResponseType = "ide.installed" ) func (r EventListResponseType) IsKnown() bool { switch r { - case EventListResponseTypeInstallationUpdated, EventListResponseTypeLspClientDiagnostics, EventListResponseTypeMessageUpdated, EventListResponseTypeMessageRemoved, EventListResponseTypeMessagePartUpdated, EventListResponseTypeMessagePartRemoved, EventListResponseTypeSessionCompacted, EventListResponseTypePermissionUpdated, EventListResponseTypePermissionReplied, EventListResponseTypeFileEdited, EventListResponseTypeSessionIdle, EventListResponseTypeSessionUpdated, EventListResponseTypeSessionDeleted, EventListResponseTypeSessionError, EventListResponseTypeServerConnected, EventListResponseTypeFileWatcherUpdated, EventListResponseTypeIdeInstalled: + case EventListResponseTypeInstallationUpdated, EventListResponseTypeLspClientDiagnostics, EventListResponseTypeMessageUpdated, EventListResponseTypeMessageRemoved, EventListResponseTypeMessagePartUpdated, EventListResponseTypeMessagePartRemoved, EventListResponseTypeSessionCompacted, EventListResponseTypePermissionUpdated, EventListResponseTypePermissionReplied, EventListResponseTypeFileEdited, EventListResponseTypeFileWatcherUpdated, EventListResponseTypeTodoUpdated, EventListResponseTypeSessionIdle, EventListResponseTypeSessionUpdated, EventListResponseTypeSessionDeleted, EventListResponseTypeSessionError, EventListResponseTypeServerConnected, EventListResponseTypeIdeInstalled: return true } return false diff --git a/session.go b/session.go index 9d102eb..0ee81fa 100644 --- a/session.go +++ b/session.go @@ -1725,14 +1725,15 @@ func (r SymbolSourceRangeStartParam) MarshalJSON() (data []byte, err error) { } type TextPart struct { - ID string `json:"id,required"` - MessageID string `json:"messageID,required"` - SessionID string `json:"sessionID,required"` - Text string `json:"text,required"` - Type TextPartType `json:"type,required"` - Synthetic bool `json:"synthetic"` - Time TextPartTime `json:"time"` - JSON textPartJSON `json:"-"` + ID string `json:"id,required"` + MessageID string `json:"messageID,required"` + SessionID string `json:"sessionID,required"` + Text string `json:"text,required"` + Type TextPartType `json:"type,required"` + Metadata map[string]interface{} `json:"metadata"` + Synthetic bool `json:"synthetic"` + Time TextPartTime `json:"time"` + JSON textPartJSON `json:"-"` } // textPartJSON contains the JSON metadata for the struct [TextPart] @@ -1742,6 +1743,7 @@ type textPartJSON struct { SessionID apijson.Field Text apijson.Field Type apijson.Field + Metadata apijson.Field Synthetic apijson.Field Time apijson.Field raw string @@ -1798,6 +1800,7 @@ type TextPartInputParam struct { Text param.Field[string] `json:"text,required"` Type param.Field[TextPartInputType] `json:"type,required"` ID param.Field[string] `json:"id"` + Metadata param.Field[map[string]interface{}] `json:"metadata"` Synthetic param.Field[bool] `json:"synthetic"` Time param.Field[TextPartInputTimeParam] `json:"time"` } @@ -1832,14 +1835,15 @@ func (r TextPartInputTimeParam) MarshalJSON() (data []byte, err error) { } type ToolPart struct { - ID string `json:"id,required"` - CallID string `json:"callID,required"` - MessageID string `json:"messageID,required"` - SessionID string `json:"sessionID,required"` - State ToolPartState `json:"state,required"` - Tool string `json:"tool,required"` - Type ToolPartType `json:"type,required"` - JSON toolPartJSON `json:"-"` + ID string `json:"id,required"` + CallID string `json:"callID,required"` + MessageID string `json:"messageID,required"` + SessionID string `json:"sessionID,required"` + State ToolPartState `json:"state,required"` + Tool string `json:"tool,required"` + Type ToolPartType `json:"type,required"` + Metadata map[string]interface{} `json:"metadata"` + JSON toolPartJSON `json:"-"` } // toolPartJSON contains the JSON metadata for the struct [ToolPart] @@ -1851,6 +1855,7 @@ type toolPartJSON struct { State apijson.Field Tool apijson.Field Type apijson.Field + Metadata apijson.Field raw string ExtraFields map[string]apijson.Field } @@ -2557,6 +2562,7 @@ type SessionPromptParamsPart struct { Type param.Field[SessionPromptParamsPartsType] `json:"type,required"` ID param.Field[string] `json:"id"` Filename param.Field[string] `json:"filename"` + Metadata param.Field[interface{}] `json:"metadata"` Mime param.Field[string] `json:"mime"` Name param.Field[string] `json:"name"` Source param.Field[interface{}] `json:"source"` diff --git a/session_test.go b/session_test.go index 61404d8..f2263c7 100644 --- a/session_test.go +++ b/session_test.go @@ -27,7 +27,7 @@ func TestSessionNewWithOptionalParams(t *testing.T) { ) _, err := client.Session.New(context.TODO(), opencode.SessionNewParams{ Directory: opencode.F("directory"), - ParentID: opencode.F("parentID"), + ParentID: opencode.F("sesJ!"), Title: opencode.F("title"), }) if err != nil { @@ -106,7 +106,7 @@ func TestSessionDeleteWithOptionalParams(t *testing.T) { ) _, err := client.Session.Delete( context.TODO(), - "id", + "sesJ!", opencode.SessionDeleteParams{ Directory: opencode.F("directory"), }, @@ -162,7 +162,7 @@ func TestSessionChildrenWithOptionalParams(t *testing.T) { ) _, err := client.Session.Children( context.TODO(), - "id", + "sesJ!", opencode.SessionChildrenParams{ Directory: opencode.F("directory"), }, @@ -223,7 +223,7 @@ func TestSessionGetWithOptionalParams(t *testing.T) { ) _, err := client.Session.Get( context.TODO(), - "id", + "sesJ!", opencode.SessionGetParams{ Directory: opencode.F("directory"), }, @@ -253,7 +253,7 @@ func TestSessionInitWithOptionalParams(t *testing.T) { context.TODO(), "id", opencode.SessionInitParams{ - MessageID: opencode.F("messageID"), + MessageID: opencode.F("msgJ!"), ModelID: opencode.F("modelID"), ProviderID: opencode.F("providerID"), Directory: opencode.F("directory"), @@ -342,9 +342,12 @@ func TestSessionPromptWithOptionalParams(t *testing.T) { "id", opencode.SessionPromptParams{ Parts: opencode.F([]opencode.SessionPromptParamsPartUnion{opencode.TextPartInputParam{ - Text: opencode.F("text"), - Type: opencode.F(opencode.TextPartInputTypeText), - ID: opencode.F("id"), + Text: opencode.F("text"), + Type: opencode.F(opencode.TextPartInputTypeText), + ID: opencode.F("id"), + Metadata: opencode.F(map[string]interface{}{ + "foo": "bar", + }), Synthetic: opencode.F(true), Time: opencode.F(opencode.TextPartInputTimeParam{ Start: opencode.F(0.000000), @@ -533,7 +536,7 @@ func TestSessionUnshareWithOptionalParams(t *testing.T) { ) _, err := client.Session.Unshare( context.TODO(), - "id", + "sesJ!", opencode.SessionUnshareParams{ Directory: opencode.F("directory"), },