summaryrefslogtreecommitdiffhomepage
path: root/packages/tui/pkg/client
diff options
context:
space:
mode:
authoradamdottv <[email protected]>2025-06-13 06:23:12 -0500
committeradamdottv <[email protected]>2025-06-13 06:23:12 -0500
commit97837d2d23195942dbbb15f3c5ed749b1af688aa (patch)
tree1e44aa57f0dbaf73918e6cf2901c07fed6dfd464 /packages/tui/pkg/client
parent9abc2a0cf8590b0ff75a441d36bb70351a1f3c92 (diff)
downloadopencode-97837d2d23195942dbbb15f3c5ed749b1af688aa.tar.gz
opencode-97837d2d23195942dbbb15f3c5ed749b1af688aa.zip
wip: refactoring tui
Diffstat (limited to 'packages/tui/pkg/client')
-rw-r--r--packages/tui/pkg/client/gen/openapi.json151
-rw-r--r--packages/tui/pkg/client/generated-client.go291
2 files changed, 398 insertions, 44 deletions
diff --git a/packages/tui/pkg/client/gen/openapi.json b/packages/tui/pkg/client/gen/openapi.json
index e8dfa9eef..c062192ec 100644
--- a/packages/tui/pkg/client/gen/openapi.json
+++ b/packages/tui/pkg/client/gen/openapi.json
@@ -439,6 +439,45 @@
"parameters": [],
"description": "List all providers"
}
+ },
+ "/file_search": {
+ "post": {
+ "responses": {
+ "200": {
+ "description": "Search for files",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "operationId": "postFile_search",
+ "parameters": [],
+ "description": "Search for files",
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "query": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "query"
+ ]
+ }
+ }
+ }
+ }
+ }
}
},
"components": {
@@ -618,7 +657,6 @@
"role": {
"type": "string",
"enum": [
- "system",
"user",
"assistant"
]
@@ -668,17 +706,65 @@
},
"tool": {
"type": "object",
- "additionalProperties": {}
+ "additionalProperties": {
+ "type": "object",
+ "properties": {
+ "title": {
+ "type": "string"
+ },
+ "time": {
+ "type": "object",
+ "properties": {
+ "start": {
+ "type": "number"
+ },
+ "end": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "start",
+ "end"
+ ]
+ }
+ },
+ "required": [
+ "title",
+ "time"
+ ],
+ "additionalProperties": {}
+ }
},
"assistant": {
"type": "object",
"properties": {
+ "system": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
"modelID": {
"type": "string"
},
"providerID": {
"type": "string"
},
+ "path": {
+ "type": "object",
+ "properties": {
+ "cwd": {
+ "type": "string"
+ },
+ "root": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "cwd",
+ "root"
+ ]
+ },
"cost": {
"type": "number"
},
@@ -706,8 +792,10 @@
}
},
"required": [
+ "system",
"modelID",
"providerID",
+ "path",
"cost",
"tokens"
]
@@ -715,7 +803,6 @@
},
"required": [
"time",
- "error",
"sessionID",
"tool"
]
@@ -1036,10 +1123,18 @@
"properties": {
"part": {
"$ref": "#/components/schemas/Message.Part"
+ },
+ "sessionID": {
+ "type": "string"
+ },
+ "messageID": {
+ "type": "string"
}
},
"required": [
- "part"
+ "part",
+ "sessionID",
+ "messageID"
]
}
},
@@ -1079,6 +1174,10 @@
"type": "string",
"pattern": "^ses"
},
+ "parentID": {
+ "type": "string",
+ "pattern": "^ses"
+ },
"share": {
"type": "object",
"properties": {
@@ -1146,10 +1245,7 @@
}
}
}
- },
- "required": [
- "error"
- ]
+ }
}
},
"required": [
@@ -1220,31 +1316,35 @@
"Provider.Info": {
"type": "object",
"properties": {
- "id": {
+ "name": {
"type": "string"
},
- "name": {
+ "env": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "id": {
"type": "string"
},
"models": {
"type": "object",
"additionalProperties": {
- "$ref": "#/components/schemas/Provider.Model"
+ "$ref": "#/components/schemas/Model.Info"
}
}
},
"required": [
- "id",
"name",
+ "env",
+ "id",
"models"
]
},
- "Provider.Model": {
+ "Model.Info": {
"type": "object",
"properties": {
- "id": {
- "type": "string"
- },
"name": {
"type": "string"
},
@@ -1254,16 +1354,19 @@
"reasoning": {
"type": "boolean"
},
+ "temperature": {
+ "type": "boolean"
+ },
"cost": {
"type": "object",
"properties": {
"input": {
"type": "number"
},
- "inputCached": {
+ "output": {
"type": "number"
},
- "output": {
+ "inputCached": {
"type": "number"
},
"outputCached": {
@@ -1272,8 +1375,8 @@
},
"required": [
"input",
- "inputCached",
"output",
+ "inputCached",
"outputCached"
]
},
@@ -1291,13 +1394,19 @@
"context",
"output"
]
+ },
+ "id": {
+ "type": "string"
}
},
"required": [
- "id",
+ "name",
"attachment",
+ "reasoning",
+ "temperature",
"cost",
- "limit"
+ "limit",
+ "id"
]
}
}
diff --git a/packages/tui/pkg/client/generated-client.go b/packages/tui/pkg/client/generated-client.go
index 5e5a34417..4e8736d65 100644
--- a/packages/tui/pkg/client/generated-client.go
+++ b/packages/tui/pkg/client/generated-client.go
@@ -20,7 +20,6 @@ import (
// Defines values for MessageInfoRole.
const (
Assistant MessageInfoRole = "assistant"
- System MessageInfoRole = "system"
User MessageInfoRole = "user"
)
@@ -61,7 +60,9 @@ type EventLspClientDiagnostics struct {
// EventMessagePartUpdated defines model for Event.message.part.updated.
type EventMessagePartUpdated struct {
Properties struct {
- Part MessagePart `json:"part"`
+ MessageID string `json:"messageID"`
+ Part MessagePart `json:"part"`
+ SessionID string `json:"sessionID"`
} `json:"properties"`
Type string `json:"type"`
}
@@ -83,7 +84,7 @@ type EventPermissionUpdated struct {
// EventSessionError defines model for Event.session.error.
type EventSessionError struct {
Properties struct {
- Error EventSessionError_Properties_Error `json:"error"`
+ Error *EventSessionError_Properties_Error `json:"error,omitempty"`
} `json:"properties"`
Type string `json:"type"`
}
@@ -115,23 +116,28 @@ type MessageInfo struct {
Id string `json:"id"`
Metadata struct {
Assistant *struct {
- Cost float32 `json:"cost"`
- ModelID string `json:"modelID"`
- ProviderID string `json:"providerID"`
- Summary *bool `json:"summary,omitempty"`
+ Cost float32 `json:"cost"`
+ ModelID string `json:"modelID"`
+ Path struct {
+ Cwd string `json:"cwd"`
+ Root string `json:"root"`
+ } `json:"path"`
+ ProviderID string `json:"providerID"`
+ Summary *bool `json:"summary,omitempty"`
+ System []string `json:"system"`
Tokens struct {
Input float32 `json:"input"`
Output float32 `json:"output"`
Reasoning float32 `json:"reasoning"`
} `json:"tokens"`
} `json:"assistant,omitempty"`
- Error MessageInfo_Metadata_Error `json:"error"`
- SessionID string `json:"sessionID"`
+ Error *MessageInfo_Metadata_Error `json:"error,omitempty"`
+ SessionID string `json:"sessionID"`
Time struct {
Completed *float32 `json:"completed,omitempty"`
Created float32 `json:"created"`
} `json:"time"`
- Tool map[string]interface{} `json:"tool"`
+ Tool map[string]MessageInfo_Metadata_Tool_AdditionalProperties `json:"tool"`
} `json:"metadata"`
Parts []MessagePart `json:"parts"`
Role MessageInfoRole `json:"role"`
@@ -142,6 +148,16 @@ type MessageInfo_Metadata_Error struct {
union json.RawMessage
}
+// MessageInfo_Metadata_Tool_AdditionalProperties defines model for MessageInfo.Metadata.Tool.AdditionalProperties.
+type MessageInfo_Metadata_Tool_AdditionalProperties struct {
+ Time struct {
+ End float32 `json:"end"`
+ Start float32 `json:"start"`
+ } `json:"time"`
+ Title string `json:"title"`
+ AdditionalProperties map[string]interface{} `json:"-"`
+}
+
// MessageInfoRole defines model for MessageInfo.Role.
type MessageInfoRole string
@@ -224,15 +240,8 @@ type MessageToolInvocationToolResult struct {
ToolName string `json:"toolName"`
}
-// ProviderInfo defines model for Provider.Info.
-type ProviderInfo struct {
- Id string `json:"id"`
- Models map[string]ProviderModel `json:"models"`
- Name string `json:"name"`
-}
-
-// ProviderModel defines model for Provider.Model.
-type ProviderModel struct {
+// ModelInfo defines model for Model.Info.
+type ModelInfo struct {
Attachment bool `json:"attachment"`
Cost struct {
Input float32 `json:"input"`
@@ -245,8 +254,17 @@ type ProviderModel struct {
Context float32 `json:"context"`
Output float32 `json:"output"`
} `json:"limit"`
- Name *string `json:"name,omitempty"`
- Reasoning *bool `json:"reasoning,omitempty"`
+ Name string `json:"name"`
+ Reasoning bool `json:"reasoning"`
+ Temperature bool `json:"temperature"`
+}
+
+// ProviderInfo defines model for Provider.Info.
+type ProviderInfo struct {
+ Env []string `json:"env"`
+ Id string `json:"id"`
+ Models map[string]ModelInfo `json:"models"`
+ Name string `json:"name"`
}
// ProviderAuthError defines model for ProviderAuthError.
@@ -279,8 +297,9 @@ type PermissionInfo struct {
// SessionInfo defines model for session.info.
type SessionInfo struct {
- Id string `json:"id"`
- Share *struct {
+ Id string `json:"id"`
+ ParentID *string `json:"parentID,omitempty"`
+ Share *struct {
Secret string `json:"secret"`
Url string `json:"url"`
} `json:"share,omitempty"`
@@ -291,6 +310,11 @@ type SessionInfo struct {
Title string `json:"title"`
}
+// PostFileSearchJSONBody defines parameters for PostFileSearch.
+type PostFileSearchJSONBody struct {
+ Query string `json:"query"`
+}
+
// PostSessionAbortJSONBody defines parameters for PostSessionAbort.
type PostSessionAbortJSONBody struct {
SessionID string `json:"sessionID"`
@@ -328,6 +352,9 @@ type PostSessionSummarizeJSONBody struct {
SessionID string `json:"sessionID"`
}
+// PostFileSearchJSONRequestBody defines body for PostFileSearch for application/json ContentType.
+type PostFileSearchJSONRequestBody PostFileSearchJSONBody
+
// PostSessionAbortJSONRequestBody defines body for PostSessionAbort for application/json ContentType.
type PostSessionAbortJSONRequestBody PostSessionAbortJSONBody
@@ -346,6 +373,85 @@ type PostSessionShareJSONRequestBody PostSessionShareJSONBody
// PostSessionSummarizeJSONRequestBody defines body for PostSessionSummarize for application/json ContentType.
type PostSessionSummarizeJSONRequestBody PostSessionSummarizeJSONBody
+// Getter for additional properties for MessageInfo_Metadata_Tool_AdditionalProperties. Returns the specified
+// element and whether it was found
+func (a MessageInfo_Metadata_Tool_AdditionalProperties) Get(fieldName string) (value interface{}, found bool) {
+ if a.AdditionalProperties != nil {
+ value, found = a.AdditionalProperties[fieldName]
+ }
+ return
+}
+
+// Setter for additional properties for MessageInfo_Metadata_Tool_AdditionalProperties
+func (a *MessageInfo_Metadata_Tool_AdditionalProperties) Set(fieldName string, value interface{}) {
+ if a.AdditionalProperties == nil {
+ a.AdditionalProperties = make(map[string]interface{})
+ }
+ a.AdditionalProperties[fieldName] = value
+}
+
+// Override default JSON handling for MessageInfo_Metadata_Tool_AdditionalProperties to handle AdditionalProperties
+func (a *MessageInfo_Metadata_Tool_AdditionalProperties) UnmarshalJSON(b []byte) error {
+ object := make(map[string]json.RawMessage)
+ err := json.Unmarshal(b, &object)
+ if err != nil {
+ return err
+ }
+
+ if raw, found := object["time"]; found {
+ err = json.Unmarshal(raw, &a.Time)
+ if err != nil {
+ return fmt.Errorf("error reading 'time': %w", err)
+ }
+ delete(object, "time")
+ }
+
+ if raw, found := object["title"]; found {
+ err = json.Unmarshal(raw, &a.Title)
+ if err != nil {
+ return fmt.Errorf("error reading 'title': %w", err)
+ }
+ delete(object, "title")
+ }
+
+ if len(object) != 0 {
+ a.AdditionalProperties = make(map[string]interface{})
+ for fieldName, fieldBuf := range object {
+ var fieldVal interface{}
+ err := json.Unmarshal(fieldBuf, &fieldVal)
+ if err != nil {
+ return fmt.Errorf("error unmarshaling field %s: %w", fieldName, err)
+ }
+ a.AdditionalProperties[fieldName] = fieldVal
+ }
+ }
+ return nil
+}
+
+// Override default JSON handling for MessageInfo_Metadata_Tool_AdditionalProperties to handle AdditionalProperties
+func (a MessageInfo_Metadata_Tool_AdditionalProperties) MarshalJSON() ([]byte, error) {
+ var err error
+ object := make(map[string]json.RawMessage)
+
+ object["time"], err = json.Marshal(a.Time)
+ if err != nil {
+ return nil, fmt.Errorf("error marshaling 'time': %w", err)
+ }
+
+ object["title"], err = json.Marshal(a.Title)
+ if err != nil {
+ return nil, fmt.Errorf("error marshaling 'title': %w", err)
+ }
+
+ for fieldName, field := range a.AdditionalProperties {
+ object[fieldName], err = json.Marshal(field)
+ if err != nil {
+ return nil, fmt.Errorf("error marshaling '%s': %w", fieldName, err)
+ }
+ }
+ return json.Marshal(object)
+}
+
// AsEventStorageWrite returns the union data inside the Event as a EventStorageWrite
func (t Event) AsEventStorageWrite() (EventStorageWrite, error) {
var body EventStorageWrite
@@ -1173,6 +1279,11 @@ type ClientInterface interface {
// GetEvent request
GetEvent(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error)
+ // PostFileSearchWithBody request with any body
+ PostFileSearchWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error)
+
+ PostFileSearch(ctx context.Context, body PostFileSearchJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error)
+
// PostPathGet request
PostPathGet(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error)
@@ -1252,6 +1363,30 @@ func (c *Client) GetEvent(ctx context.Context, reqEditors ...RequestEditorFn) (*
return c.Client.Do(req)
}
+func (c *Client) PostFileSearchWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) {
+ req, err := NewPostFileSearchRequestWithBody(c.Server, contentType, body)
+ if err != nil {
+ return nil, err
+ }
+ req = req.WithContext(ctx)
+ if err := c.applyEditors(ctx, req, reqEditors); err != nil {
+ return nil, err
+ }
+ return c.Client.Do(req)
+}
+
+func (c *Client) PostFileSearch(ctx context.Context, body PostFileSearchJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) {
+ req, err := NewPostFileSearchRequest(c.Server, body)
+ if err != nil {
+ return nil, err
+ }
+ req = req.WithContext(ctx)
+ if err := c.applyEditors(ctx, req, reqEditors); err != nil {
+ return nil, err
+ }
+ return c.Client.Do(req)
+}
+
func (c *Client) PostPathGet(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) {
req, err := NewPostPathGetRequest(c.Server)
if err != nil {
@@ -1525,6 +1660,46 @@ func NewGetEventRequest(server string) (*http.Request, error) {
return req, nil
}
+// NewPostFileSearchRequest calls the generic PostFileSearch builder with application/json body
+func NewPostFileSearchRequest(server string, body PostFileSearchJSONRequestBody) (*http.Request, error) {
+ var bodyReader io.Reader
+ buf, err := json.Marshal(body)
+ if err != nil {
+ return nil, err
+ }
+ bodyReader = bytes.NewReader(buf)
+ return NewPostFileSearchRequestWithBody(server, "application/json", bodyReader)
+}
+
+// NewPostFileSearchRequestWithBody generates requests for PostFileSearch with any type of body
+func NewPostFileSearchRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) {
+ var err error
+
+ serverURL, err := url.Parse(server)
+ if err != nil {
+ return nil, err
+ }
+
+ operationPath := fmt.Sprintf("/file_search")
+ if operationPath[0] == '/' {
+ operationPath = "." + operationPath
+ }
+
+ queryURL, err := serverURL.Parse(operationPath)
+ if err != nil {
+ return nil, err
+ }
+
+ req, err := http.NewRequest("POST", queryURL.String(), body)
+ if err != nil {
+ return nil, err
+ }
+
+ req.Header.Add("Content-Type", contentType)
+
+ return req, nil
+}
+
// NewPostPathGetRequest generates requests for PostPathGet
func NewPostPathGetRequest(server string) (*http.Request, error) {
var err error
@@ -1925,6 +2100,11 @@ type ClientWithResponsesInterface interface {
// GetEventWithResponse request
GetEventWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetEventResponse, error)
+ // PostFileSearchWithBodyWithResponse request with any body
+ PostFileSearchWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PostFileSearchResponse, error)
+
+ PostFileSearchWithResponse(ctx context.Context, body PostFileSearchJSONRequestBody, reqEditors ...RequestEditorFn) (*PostFileSearchResponse, error)
+
// PostPathGetWithResponse request
PostPathGetWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*PostPathGetResponse, error)
@@ -2034,6 +2214,28 @@ func (r GetEventResponse) StatusCode() int {
return 0
}
+type PostFileSearchResponse struct {
+ Body []byte
+ HTTPResponse *http.Response
+ JSON200 *[]string
+}
+
+// Status returns HTTPResponse.Status
+func (r PostFileSearchResponse) Status() string {
+ if r.HTTPResponse != nil {
+ return r.HTTPResponse.Status
+ }
+ return http.StatusText(0)
+}
+
+// StatusCode returns HTTPResponse.StatusCode
+func (r PostFileSearchResponse) StatusCode() int {
+ if r.HTTPResponse != nil {
+ return r.HTTPResponse.StatusCode
+ }
+ return 0
+}
+
type PostPathGetResponse struct {
Body []byte
HTTPResponse *http.Response
@@ -2290,6 +2492,23 @@ func (c *ClientWithResponses) GetEventWithResponse(ctx context.Context, reqEdito
return ParseGetEventResponse(rsp)
}
+// PostFileSearchWithBodyWithResponse request with arbitrary body returning *PostFileSearchResponse
+func (c *ClientWithResponses) PostFileSearchWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PostFileSearchResponse, error) {
+ rsp, err := c.PostFileSearchWithBody(ctx, contentType, body, reqEditors...)
+ if err != nil {
+ return nil, err
+ }
+ return ParsePostFileSearchResponse(rsp)
+}
+
+func (c *ClientWithResponses) PostFileSearchWithResponse(ctx context.Context, body PostFileSearchJSONRequestBody, reqEditors ...RequestEditorFn) (*PostFileSearchResponse, error) {
+ rsp, err := c.PostFileSearch(ctx, body, reqEditors...)
+ if err != nil {
+ return nil, err
+ }
+ return ParsePostFileSearchResponse(rsp)
+}
+
// PostPathGetWithResponse request returning *PostPathGetResponse
func (c *ClientWithResponses) PostPathGetWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*PostPathGetResponse, error) {
rsp, err := c.PostPathGet(ctx, reqEditors...)
@@ -2506,6 +2725,32 @@ func ParseGetEventResponse(rsp *http.Response) (*GetEventResponse, error) {
return response, nil
}
+// ParsePostFileSearchResponse parses an HTTP response from a PostFileSearchWithResponse call
+func ParsePostFileSearchResponse(rsp *http.Response) (*PostFileSearchResponse, error) {
+ bodyBytes, err := io.ReadAll(rsp.Body)
+ defer func() { _ = rsp.Body.Close() }()
+ if err != nil {
+ return nil, err
+ }
+
+ response := &PostFileSearchResponse{
+ Body: bodyBytes,
+ HTTPResponse: rsp,
+ }
+
+ switch {
+ case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200:
+ var dest []string
+ if err := json.Unmarshal(bodyBytes, &dest); err != nil {
+ return nil, err
+ }
+ response.JSON200 = &dest
+
+ }
+
+ return response, nil
+}
+
// ParsePostPathGetResponse parses an HTTP response from a PostPathGetWithResponse call
func ParsePostPathGetResponse(rsp *http.Response) (*PostPathGetResponse, error) {
bodyBytes, err := io.ReadAll(rsp.Body)