104 lines
3 KiB
Go
104 lines
3 KiB
Go
package agent
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
)
|
|
|
|
type Client interface {
|
|
SendMessage(ctx context.Context, input SendMessageInput) (SendMessageResult, error)
|
|
GetTask(ctx context.Context, input GetTaskInput) (Task, error)
|
|
CancelTask(ctx context.Context, input CancelTaskInput) (Task, error)
|
|
}
|
|
|
|
type SendMessageInput struct {
|
|
Text string
|
|
ContextID string
|
|
TaskID string
|
|
Metadata map[string]any
|
|
AcceptedOutputModes []string
|
|
HistoryLength int
|
|
Blocking bool
|
|
}
|
|
|
|
type SendMessageResult struct {
|
|
Message *Message
|
|
Task *Task
|
|
Raw json.RawMessage
|
|
}
|
|
|
|
type GetTaskInput struct {
|
|
TaskID string
|
|
HistoryLength int
|
|
Metadata map[string]any
|
|
}
|
|
|
|
type CancelTaskInput struct {
|
|
TaskID string
|
|
Metadata map[string]any
|
|
}
|
|
|
|
type TaskState string
|
|
|
|
const (
|
|
TaskStateSubmitted TaskState = "submitted"
|
|
TaskStateWorking TaskState = "working"
|
|
TaskStateInputNeeded TaskState = "input-required"
|
|
TaskStateCompleted TaskState = "completed"
|
|
TaskStateCanceled TaskState = "canceled"
|
|
TaskStateFailed TaskState = "failed"
|
|
TaskStateRejected TaskState = "rejected"
|
|
TaskStateAuthRequired TaskState = "auth-required"
|
|
TaskStateUnknown TaskState = "unknown"
|
|
)
|
|
|
|
type Task struct {
|
|
Kind string `json:"kind,omitempty"`
|
|
ID string `json:"id"`
|
|
ContextID string `json:"contextId,omitempty"`
|
|
Status TaskStatus `json:"status"`
|
|
Artifacts []Artifact `json:"artifacts,omitempty"`
|
|
History []Message `json:"history,omitempty"`
|
|
Metadata map[string]any `json:"metadata,omitempty"`
|
|
}
|
|
|
|
type TaskStatus struct {
|
|
State TaskState `json:"state"`
|
|
Message *Message `json:"message,omitempty"`
|
|
Timestamp string `json:"timestamp,omitempty"`
|
|
}
|
|
|
|
type Message struct {
|
|
Kind string `json:"kind,omitempty"`
|
|
Role string `json:"role"`
|
|
Parts []Part `json:"parts"`
|
|
MessageID string `json:"messageId"`
|
|
TaskID string `json:"taskId,omitempty"`
|
|
ContextID string `json:"contextId,omitempty"`
|
|
ReferenceTaskIDs []string `json:"referenceTaskIds,omitempty"`
|
|
Metadata map[string]any `json:"metadata,omitempty"`
|
|
Extensions []string `json:"extensions,omitempty"`
|
|
}
|
|
|
|
type Artifact struct {
|
|
ArtifactID string `json:"artifactId,omitempty"`
|
|
Name string `json:"name,omitempty"`
|
|
Description string `json:"description,omitempty"`
|
|
Parts []Part `json:"parts,omitempty"`
|
|
Metadata map[string]any `json:"metadata,omitempty"`
|
|
}
|
|
|
|
type Part struct {
|
|
Kind string `json:"kind"`
|
|
Text string `json:"text,omitempty"`
|
|
Data map[string]any `json:"data,omitempty"`
|
|
File *FilePart `json:"file,omitempty"`
|
|
Metadata map[string]any `json:"metadata,omitempty"`
|
|
}
|
|
|
|
type FilePart struct {
|
|
Name string `json:"name,omitempty"`
|
|
MimeType string `json:"mimeType,omitempty"`
|
|
Bytes string `json:"bytes,omitempty"`
|
|
URI string `json:"uri,omitempty"`
|
|
}
|