This commit is contained in:
Dax Raad
2025-05-26 18:14:36 -04:00
parent 94f35130f7
commit 591bd2a4e3
4 changed files with 421 additions and 9 deletions

View File

@@ -8,11 +8,26 @@
"key": {
"type": "string"
},
"body": {}
"content": {}
},
"required": [
"key",
"body"
"content"
]
},
"event.lsp.client.diagnostics": {
"type": "object",
"properties": {
"serverID": {
"type": "string"
},
"path": {
"type": "string"
}
},
"required": [
"serverID",
"path"
]
}
}

View File

@@ -25,6 +25,76 @@
"description": "Create a new session"
}
},
"/session_share": {
"post": {
"responses": {
"200": {
"description": "Successfully shared session",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Session.Info"
}
}
}
}
},
"operationId": "postSession_share",
"parameters": [],
"description": "Share the session",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"sessionID": {
"type": "string"
}
},
"required": [
"sessionID"
]
}
}
}
}
}
},
"/session_messages": {
"post": {
"responses": {
"200": {
"description": "Successfully created session",
"content": {
"application/json": {
"schema": {}
}
}
}
},
"operationId": "postSession_messages",
"parameters": [],
"description": "Get messages for a session",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"sessionID": {
"type": "string"
}
},
"required": [
"sessionID"
]
}
}
}
}
}
},
"/session_chat": {
"post": {
"responses": {},
@@ -60,6 +130,9 @@
"type": "string",
"pattern": "^ses"
},
"shareID": {
"type": "string"
},
"title": {
"type": "string"
},

View File

@@ -16,9 +16,10 @@ import (
// SessionInfo defines model for Session.Info.
type SessionInfo struct {
Id string `json:"id"`
Title string `json:"title"`
Tokens struct {
Id string `json:"id"`
ShareID *string `json:"shareID,omitempty"`
Title string `json:"title"`
Tokens struct {
Input float32 `json:"input"`
Output float32 `json:"output"`
Reasoning float32 `json:"reasoning"`
@@ -31,9 +32,25 @@ type PostSessionChatJSONBody struct {
SessionID string `json:"sessionID"`
}
// PostSessionMessagesJSONBody defines parameters for PostSessionMessages.
type PostSessionMessagesJSONBody struct {
SessionID string `json:"sessionID"`
}
// PostSessionShareJSONBody defines parameters for PostSessionShare.
type PostSessionShareJSONBody struct {
SessionID string `json:"sessionID"`
}
// PostSessionChatJSONRequestBody defines body for PostSessionChat for application/json ContentType.
type PostSessionChatJSONRequestBody PostSessionChatJSONBody
// PostSessionMessagesJSONRequestBody defines body for PostSessionMessages for application/json ContentType.
type PostSessionMessagesJSONRequestBody PostSessionMessagesJSONBody
// PostSessionShareJSONRequestBody defines body for PostSessionShare for application/json ContentType.
type PostSessionShareJSONRequestBody PostSessionShareJSONBody
// RequestEditorFn is the function signature for the RequestEditor callback function
type RequestEditorFn func(ctx context.Context, req *http.Request) error
@@ -114,6 +131,16 @@ type ClientInterface interface {
// PostSessionCreate request
PostSessionCreate(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error)
// PostSessionMessagesWithBody request with any body
PostSessionMessagesWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error)
PostSessionMessages(ctx context.Context, body PostSessionMessagesJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error)
// PostSessionShareWithBody request with any body
PostSessionShareWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error)
PostSessionShare(ctx context.Context, body PostSessionShareJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error)
}
func (c *Client) PostSessionChatWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) {
@@ -152,6 +179,54 @@ func (c *Client) PostSessionCreate(ctx context.Context, reqEditors ...RequestEdi
return c.Client.Do(req)
}
func (c *Client) PostSessionMessagesWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) {
req, err := NewPostSessionMessagesRequestWithBody(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) PostSessionMessages(ctx context.Context, body PostSessionMessagesJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) {
req, err := NewPostSessionMessagesRequest(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) PostSessionShareWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) {
req, err := NewPostSessionShareRequestWithBody(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) PostSessionShare(ctx context.Context, body PostSessionShareJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) {
req, err := NewPostSessionShareRequest(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)
}
// NewPostSessionChatRequest calls the generic PostSessionChat builder with application/json body
func NewPostSessionChatRequest(server string, body PostSessionChatJSONRequestBody) (*http.Request, error) {
var bodyReader io.Reader
@@ -219,6 +294,86 @@ func NewPostSessionCreateRequest(server string) (*http.Request, error) {
return req, nil
}
// NewPostSessionMessagesRequest calls the generic PostSessionMessages builder with application/json body
func NewPostSessionMessagesRequest(server string, body PostSessionMessagesJSONRequestBody) (*http.Request, error) {
var bodyReader io.Reader
buf, err := json.Marshal(body)
if err != nil {
return nil, err
}
bodyReader = bytes.NewReader(buf)
return NewPostSessionMessagesRequestWithBody(server, "application/json", bodyReader)
}
// NewPostSessionMessagesRequestWithBody generates requests for PostSessionMessages with any type of body
func NewPostSessionMessagesRequestWithBody(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("/session_messages")
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
}
// NewPostSessionShareRequest calls the generic PostSessionShare builder with application/json body
func NewPostSessionShareRequest(server string, body PostSessionShareJSONRequestBody) (*http.Request, error) {
var bodyReader io.Reader
buf, err := json.Marshal(body)
if err != nil {
return nil, err
}
bodyReader = bytes.NewReader(buf)
return NewPostSessionShareRequestWithBody(server, "application/json", bodyReader)
}
// NewPostSessionShareRequestWithBody generates requests for PostSessionShare with any type of body
func NewPostSessionShareRequestWithBody(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("/session_share")
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
}
func (c *Client) applyEditors(ctx context.Context, req *http.Request, additionalEditors []RequestEditorFn) error {
for _, r := range c.RequestEditors {
if err := r(ctx, req); err != nil {
@@ -269,6 +424,16 @@ type ClientWithResponsesInterface interface {
// PostSessionCreateWithResponse request
PostSessionCreateWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*PostSessionCreateResponse, error)
// PostSessionMessagesWithBodyWithResponse request with any body
PostSessionMessagesWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PostSessionMessagesResponse, error)
PostSessionMessagesWithResponse(ctx context.Context, body PostSessionMessagesJSONRequestBody, reqEditors ...RequestEditorFn) (*PostSessionMessagesResponse, error)
// PostSessionShareWithBodyWithResponse request with any body
PostSessionShareWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PostSessionShareResponse, error)
PostSessionShareWithResponse(ctx context.Context, body PostSessionShareJSONRequestBody, reqEditors ...RequestEditorFn) (*PostSessionShareResponse, error)
}
type PostSessionChatResponse struct {
@@ -314,6 +479,50 @@ func (r PostSessionCreateResponse) StatusCode() int {
return 0
}
type PostSessionMessagesResponse struct {
Body []byte
HTTPResponse *http.Response
JSON200 *interface{}
}
// Status returns HTTPResponse.Status
func (r PostSessionMessagesResponse) Status() string {
if r.HTTPResponse != nil {
return r.HTTPResponse.Status
}
return http.StatusText(0)
}
// StatusCode returns HTTPResponse.StatusCode
func (r PostSessionMessagesResponse) StatusCode() int {
if r.HTTPResponse != nil {
return r.HTTPResponse.StatusCode
}
return 0
}
type PostSessionShareResponse struct {
Body []byte
HTTPResponse *http.Response
JSON200 *SessionInfo
}
// Status returns HTTPResponse.Status
func (r PostSessionShareResponse) Status() string {
if r.HTTPResponse != nil {
return r.HTTPResponse.Status
}
return http.StatusText(0)
}
// StatusCode returns HTTPResponse.StatusCode
func (r PostSessionShareResponse) StatusCode() int {
if r.HTTPResponse != nil {
return r.HTTPResponse.StatusCode
}
return 0
}
// PostSessionChatWithBodyWithResponse request with arbitrary body returning *PostSessionChatResponse
func (c *ClientWithResponses) PostSessionChatWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PostSessionChatResponse, error) {
rsp, err := c.PostSessionChatWithBody(ctx, contentType, body, reqEditors...)
@@ -340,6 +549,40 @@ func (c *ClientWithResponses) PostSessionCreateWithResponse(ctx context.Context,
return ParsePostSessionCreateResponse(rsp)
}
// PostSessionMessagesWithBodyWithResponse request with arbitrary body returning *PostSessionMessagesResponse
func (c *ClientWithResponses) PostSessionMessagesWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PostSessionMessagesResponse, error) {
rsp, err := c.PostSessionMessagesWithBody(ctx, contentType, body, reqEditors...)
if err != nil {
return nil, err
}
return ParsePostSessionMessagesResponse(rsp)
}
func (c *ClientWithResponses) PostSessionMessagesWithResponse(ctx context.Context, body PostSessionMessagesJSONRequestBody, reqEditors ...RequestEditorFn) (*PostSessionMessagesResponse, error) {
rsp, err := c.PostSessionMessages(ctx, body, reqEditors...)
if err != nil {
return nil, err
}
return ParsePostSessionMessagesResponse(rsp)
}
// PostSessionShareWithBodyWithResponse request with arbitrary body returning *PostSessionShareResponse
func (c *ClientWithResponses) PostSessionShareWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PostSessionShareResponse, error) {
rsp, err := c.PostSessionShareWithBody(ctx, contentType, body, reqEditors...)
if err != nil {
return nil, err
}
return ParsePostSessionShareResponse(rsp)
}
func (c *ClientWithResponses) PostSessionShareWithResponse(ctx context.Context, body PostSessionShareJSONRequestBody, reqEditors ...RequestEditorFn) (*PostSessionShareResponse, error) {
rsp, err := c.PostSessionShare(ctx, body, reqEditors...)
if err != nil {
return nil, err
}
return ParsePostSessionShareResponse(rsp)
}
// ParsePostSessionChatResponse parses an HTTP response from a PostSessionChatWithResponse call
func ParsePostSessionChatResponse(rsp *http.Response) (*PostSessionChatResponse, error) {
bodyBytes, err := io.ReadAll(rsp.Body)
@@ -381,3 +624,55 @@ func ParsePostSessionCreateResponse(rsp *http.Response) (*PostSessionCreateRespo
return response, nil
}
// ParsePostSessionMessagesResponse parses an HTTP response from a PostSessionMessagesWithResponse call
func ParsePostSessionMessagesResponse(rsp *http.Response) (*PostSessionMessagesResponse, error) {
bodyBytes, err := io.ReadAll(rsp.Body)
defer func() { _ = rsp.Body.Close() }()
if err != nil {
return nil, err
}
response := &PostSessionMessagesResponse{
Body: bodyBytes,
HTTPResponse: rsp,
}
switch {
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200:
var dest interface{}
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON200 = &dest
}
return response, nil
}
// ParsePostSessionShareResponse parses an HTTP response from a PostSessionShareWithResponse call
func ParsePostSessionShareResponse(rsp *http.Response) (*PostSessionShareResponse, error) {
bodyBytes, err := io.ReadAll(rsp.Body)
defer func() { _ = rsp.Body.Close() }()
if err != nil {
return nil, err
}
response := &PostSessionShareResponse{
Body: bodyBytes,
HTTPResponse: rsp,
}
switch {
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200:
var dest SessionInfo
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON200 = &dest
}
return response, nil
}

View File

@@ -5,9 +5,38 @@ package client
import "encoding/json"
import "fmt"
type EventLspClientDiagnostics struct {
// Path corresponds to the JSON schema field "path".
Path string `json:"path" yaml:"path" mapstructure:"path"`
// ServerID corresponds to the JSON schema field "serverID".
ServerID string `json:"serverID" yaml:"serverID" mapstructure:"serverID"`
}
// UnmarshalJSON implements json.Unmarshaler.
func (j *EventLspClientDiagnostics) UnmarshalJSON(value []byte) error {
var raw map[string]interface{}
if err := json.Unmarshal(value, &raw); err != nil {
return err
}
if _, ok := raw["path"]; raw != nil && !ok {
return fmt.Errorf("field path in EventLspClientDiagnostics: required")
}
if _, ok := raw["serverID"]; raw != nil && !ok {
return fmt.Errorf("field serverID in EventLspClientDiagnostics: required")
}
type Plain EventLspClientDiagnostics
var plain Plain
if err := json.Unmarshal(value, &plain); err != nil {
return err
}
*j = EventLspClientDiagnostics(plain)
return nil
}
type EventStorageWrite struct {
// Body corresponds to the JSON schema field "body".
Body interface{} `json:"body" yaml:"body" mapstructure:"body"`
// Content corresponds to the JSON schema field "content".
Content interface{} `json:"content" yaml:"content" mapstructure:"content"`
// Key corresponds to the JSON schema field "key".
Key string `json:"key" yaml:"key" mapstructure:"key"`
@@ -19,8 +48,8 @@ func (j *EventStorageWrite) UnmarshalJSON(value []byte) error {
if err := json.Unmarshal(value, &raw); err != nil {
return err
}
if _, ok := raw["body"]; raw != nil && !ok {
return fmt.Errorf("field body in EventStorageWrite: required")
if _, ok := raw["content"]; raw != nil && !ok {
return fmt.Errorf("field content in EventStorageWrite: required")
}
if _, ok := raw["key"]; raw != nil && !ok {
return fmt.Errorf("field key in EventStorageWrite: required")