wire

package
v0.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 27, 2026 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Overview

Package wire defines the internal JSON protocol exchanged by agent runtimes and Airlock. It is not the author-facing Agents SDK API.

Index

Constants

View Source
const (
	ErrorKindPlatform = "platform"
	ErrorKindAgent    = "agent"
)
View Source
const EnqueueJobErrorCodeUnavailable = "enqueue_unavailable"

Variables

This section is empty.

Functions

func ResolveDisplayPart

func ResolveDisplayPart(part *DisplayPart)

Types

type Access

type Access string
const (
	AccessAdmin  Access = "admin"
	AccessUser   Access = "user"
	AccessPublic Access = "public"
)

type Action

type Action struct {
	Type       string    `json:"type"`
	Timestamp  time.Time `json:"timestamp"`
	DurationMs int64     `json:"durationMs"`
	Request    any       `json:"request,omitempty"`
	Response   any       `json:"response,omitempty"`
	Error      string    `json:"error,omitempty"`
}

type AgentManifest added in v0.5.0

type AgentManifest struct {
	Version      string           `json:"version"`
	Description  string           `json:"description"`
	Emoji        string           `json:"emoji"`
	Tools        []ToolDef        `json:"tools"`
	Webhooks     []WebhookDef     `json:"webhooks"`
	JobHandlers  []JobHandlerDef  `json:"jobHandlers"`
	JobCrons     []JobCronDef     `json:"jobCrons"`
	Routes       []RouteDef       `json:"routes"`
	Topics       []TopicDef       `json:"topics"`
	MCPServers   []MCPDef         `json:"mcpServers"`
	Connections  []ConnectionDef  `json:"connections"`
	EnvVars      []EnvVarDef      `json:"envVars"`
	Directories  []DirectoryDef   `json:"directories"`
	Instructions []InstructionDef `json:"instructions"`
	ModelSlots   []ModelSlotDef   `json:"modelSlots"`
	StaticAssets []StaticAssetDef `json:"staticAssets"`
	StartupHooks []StartupHookDef `json:"startupHooks"`
}

AgentManifest is the complete canonical declaration of an agent image. The SDK emits it in offline manifest mode and sends the same value during runtime synchronization. Slices are deterministically ordered by their identifiers, except Instructions and StartupHooks, whose registration order is semantic.

type AuthInjection

type AuthInjection struct {
	Type AuthInjectionType `json:"type"`
	Name string            `json:"name,omitempty"`
}

type AuthInjectionType

type AuthInjectionType string
const (
	AuthInjectBearer     AuthInjectionType = "bearer"
	AuthInjectAPIKey     AuthInjectionType = "api_key_header"
	AuthInjectPathPrefix AuthInjectionType = "path_prefix"
	AuthInjectQueryParam AuthInjectionType = "query_param"
)

type Capabilities

type Capabilities struct {
	Vision        bool `json:"vision,omitempty"`
	Transcription bool `json:"transcription,omitempty"`
	Speech        bool `json:"speech,omitempty"`
	Embedding     bool `json:"embedding,omitempty"`
	Image         bool `json:"image,omitempty"`
	Search        bool `json:"search,omitempty"`
}

type ConnectionAuth

type ConnectionAuth string
const (
	ConnectionAuthOAuth ConnectionAuth = "oauth"
	ConnectionAuthToken ConnectionAuth = "token"
	ConnectionAuthNone  ConnectionAuth = "none"
)

type ConnectionDef

type ConnectionDef struct {
	Slug              string            `json:"slug,omitempty"`
	Name              string            `json:"name"`
	Description       string            `json:"description"`
	BaseURL           string            `json:"baseUrl,omitempty"`
	AuthMode          ConnectionAuth    `json:"authMode"`
	AuthURL           string            `json:"authUrl,omitempty"`
	TokenURL          string            `json:"tokenUrl,omitempty"`
	Scopes            []string          `json:"scopes,omitempty"`
	AuthParams        map[string]string `json:"authParams,omitempty"`
	Headers           map[string]string `json:"headers,omitempty"`
	AuthInjection     AuthInjection     `json:"authInjection"`
	SetupInstructions string            `json:"setupInstructions,omitempty"`
	LLMHint           string            `json:"llmHint,omitempty"`
	Access            Access            `json:"access,omitempty"`
}

type CreateRunRequest

type CreateRunRequest struct {
	TriggerType    string `json:"triggerType"`
	TriggerRef     string `json:"triggerRef"`
	UserID         string `json:"userId,omitempty"`
	ConversationID string `json:"conversationId,omitempty"`
	CallerAccess   Access `json:"callerAccess"`
}

type CreateRunResponse

type CreateRunResponse struct {
	RunID string `json:"runId"`
}

type DirectoryDef

type DirectoryDef struct {
	Path           string         `json:"path"`
	Read           Access         `json:"read"`
	Write          Access         `json:"write"`
	List           Access         `json:"list"`
	Description    string         `json:"description"`
	LLMHint        string         `json:"llmHint,omitempty"`
	RetentionHours int            `json:"retentionHours,omitempty"`
	Scope          DirectoryScope `json:"scope,omitempty"`
}

type DirectoryScope

type DirectoryScope string

type DisplayPart

type DisplayPart struct {
	Type     string  `json:"type"`
	Text     string  `json:"text,omitempty"`
	Source   string  `json:"source,omitempty"`
	URL      string  `json:"url,omitempty"`
	Data     []byte  `json:"data,omitempty"`
	Filename string  `json:"filename,omitempty"`
	MimeType string  `json:"mimeType,omitempty"`
	Alt      string  `json:"alt,omitempty"`
	Duration float64 `json:"duration,omitempty"`
}

type EnqueueJobErrorResponse added in v0.5.0

type EnqueueJobErrorResponse struct {
	Code           string `json:"code"`
	Error          string `json:"error"`
	HandlerName    string `json:"handlerName"`
	HandlerVersion int32  `json:"handlerVersion"`
}

EnqueueJobErrorResponse is returned with HTTP 409 when an exact job handler contract is temporarily unavailable during a deployment transition.

type EnqueueJobRequest added in v0.5.0

type EnqueueJobRequest struct {
	ID               string          `json:"id"`
	Name             string          `json:"name"`
	Version          int32           `json:"version"`
	InputSchemaHash  string          `json:"inputSchemaHash"`
	OutputSchemaHash string          `json:"outputSchemaHash"`
	Input            json.RawMessage `json:"input"`
	ScheduledAt      *time.Time      `json:"scheduledAt,omitempty"`
}

type EnqueueJobResponse added in v0.5.0

type EnqueueJobResponse struct {
	Job     JobInfo `json:"job"`
	Created bool    `json:"created"`
}

type EnvVarDef

type EnvVarDef struct {
	Slug        string `json:"slug,omitempty"`
	Description string `json:"description"`
	Secret      bool   `json:"secret"`
	Default     string `json:"default,omitempty"`
	Pattern     string `json:"pattern,omitempty"`
}

type EnvVarValueResponse

type EnvVarValueResponse struct {
	Value string `json:"value"`
}

type FileInfo

type FileInfo struct {
	Path         string    `json:"path"`
	Filename     string    `json:"filename"`
	ContentType  string    `json:"contentType"`
	Size         int64     `json:"size"`
	LastModified time.Time `json:"lastModified"`
}

type GetJobResponse added in v0.5.0

type GetJobResponse struct {
	Job JobInfo `json:"job"`
}

type HTTPRequest

type HTTPRequest struct {
	URL        string            `json:"url"`
	Method     string            `json:"method,omitempty"`
	Headers    map[string]string `json:"headers,omitempty"`
	Body       string            `json:"body,omitempty"`
	Timeout    int               `json:"timeout,omitempty"`
	SaveAs     string            `json:"saveAs,omitempty"`
	RunID      string            `json:"runId,omitempty"`
	Raw        bool              `json:"raw,omitempty"`
	AllHeaders bool              `json:"allHeaders,omitempty"`
}

type HTTPResponse

type HTTPResponse struct {
	Status      int               `json:"status"`
	Headers     map[string]string `json:"headers"`
	Body        string            `json:"body,omitempty"`
	ContentType string            `json:"contentType"`
	Size        int               `json:"size"`
	BodyPreview string            `json:"bodyPreview,omitempty"`
	SavedTo     string            `json:"savedTo,omitempty"`
	Note        string            `json:"note,omitempty"`
}

type InstructionDef

type InstructionDef struct {
	Text   string   `json:"text"`
	Access []Access `json:"access,omitempty"`
}

type JobCronDef added in v0.5.0

type JobCronDef struct {
	Slug             string          `json:"slug"`
	Schedule         string          `json:"schedule"`
	Description      string          `json:"description"`
	HandlerName      string          `json:"handlerName"`
	HandlerVersion   int32           `json:"handlerVersion"`
	InputSchemaHash  string          `json:"inputSchemaHash"`
	OutputSchemaHash string          `json:"outputSchemaHash"`
	Input            json.RawMessage `json:"input"`
}

type JobHandlerDef added in v0.5.0

type JobHandlerDef struct {
	Name             string          `json:"name"`
	Version          int32           `json:"version"`
	Description      string          `json:"description"`
	TimeoutMs        int64           `json:"timeoutMs"`
	MaxAttempts      int32           `json:"maxAttempts"`
	MaxConcurrency   int32           `json:"maxConcurrency"`
	InputSchema      json.RawMessage `json:"inputSchema"`
	OutputSchema     json.RawMessage `json:"outputSchema"`
	InputSchemaHash  string          `json:"inputSchemaHash"`
	OutputSchemaHash string          `json:"outputSchemaHash"`
}

type JobInfo added in v0.5.0

type JobInfo struct {
	ID               string          `json:"id"`
	AgentID          string          `json:"agentId"`
	HandlerName      string          `json:"handlerName"`
	HandlerVersion   int32           `json:"handlerVersion"`
	InputSchemaHash  string          `json:"inputSchemaHash"`
	OutputSchemaHash string          `json:"outputSchemaHash"`
	Status           string          `json:"status"`
	Input            json.RawMessage `json:"input"`
	Output           json.RawMessage `json:"output,omitempty"`
	AttemptCount     int32           `json:"attemptCount"`
	MaxAttempts      int32           `json:"maxAttempts"`
	AttemptLimit     int32           `json:"attemptLimit"`
	LastError        string          `json:"lastError,omitempty"`
	Progress         *JobProgress    `json:"progress,omitempty"`
	SourceRunID      string          `json:"sourceRunId,omitempty"`
	ScheduledAt      *time.Time      `json:"scheduledAt,omitempty"`
	CreatedAt        time.Time       `json:"createdAt"`
	UpdatedAt        time.Time       `json:"updatedAt"`
	StartedAt        *time.Time      `json:"startedAt,omitempty"`
	CompletedAt      *time.Time      `json:"completedAt,omitempty"`
}

type JobManifest added in v0.5.0

type JobManifest struct {
	JobHandlers []JobHandlerDef `json:"jobHandlers"`
	JobCrons    []JobCronDef    `json:"jobCrons"`
}

JobManifest is the canonical job declaration emitted by an agent image in job-manifest inspection mode. Both slices are ordered by their identifiers.

type JobProgress added in v0.5.0

type JobProgress struct {
	Phase     string `json:"phase"`
	Message   string `json:"message"`
	Completed int64  `json:"completed"`
	Total     int64  `json:"total"`
}

type JobRunRequest added in v0.5.0

type JobRunRequest struct {
	ID                      string          `json:"id"`
	Name                    string          `json:"name"`
	Version                 int32           `json:"version"`
	InputSchemaHash         string          `json:"inputSchemaHash"`
	OutputSchemaHash        string          `json:"outputSchemaHash"`
	Attempt                 int32           `json:"attempt"`
	TimeoutMs               int64           `json:"timeoutMs"`
	Input                   json.RawMessage `json:"input"`
	ScheduledAt             *time.Time      `json:"scheduledAt,omitempty"`
	InitiatorKind           string          `json:"initiatorKind"`
	InitiatorUserID         string          `json:"initiatorUserId"`
	InitiatorConversationID string          `json:"initiatorConversationId"`
	CallerAccess            Access          `json:"callerAccess"`
}

type JobRunResponse added in v0.5.0

type JobRunResponse struct {
	// Status is success, error, timeout, or retry. Retry reports a temporary
	// enqueue availability failure and asks Airlock to redeliver the attempt.
	Status string          `json:"status"`
	Output json.RawMessage `json:"output,omitempty"`
	Error  string          `json:"error,omitempty"`
}

type LLMProxyRequest

type LLMProxyRequest struct {
	Slug       string          `json:"slug,omitempty"`
	Capability string          `json:"capability,omitempty"`
	Options    json.RawMessage `json:"options"`
}

type ListJobsResponse added in v0.5.0

type ListJobsResponse struct {
	Jobs       []JobInfo `json:"jobs"`
	NextCursor string    `json:"nextCursor,omitempty"`
}

type LogEntry

type LogEntry struct {
	Level   LogLevel `json:"level"`
	Message string   `json:"message"`
}

type LogLevel

type LogLevel string
const (
	LogLevelDebug LogLevel = "debug"
	LogLevelInfo  LogLevel = "info"
	LogLevelWarn  LogLevel = "warn"
	LogLevelError LogLevel = "error"
)

type MCPAuth

type MCPAuth string
const (
	MCPAuthOAuth          MCPAuth = "oauth"
	MCPAuthOAuthDiscovery MCPAuth = "oauth_discovery"
	MCPAuthToken          MCPAuth = "token"
	MCPAuthNone           MCPAuth = "none"
)

type MCPAuthStatus

type MCPAuthStatus struct {
	Slug         string  `json:"slug"`
	AuthMode     MCPAuth `json:"authMode"`
	Authorized   bool    `json:"authorized"`
	AuthURL      string  `json:"authUrl,omitempty"`
	Instructions string  `json:"instructions,omitempty"`
}

type MCPContent

type MCPContent struct {
	Type     string `json:"type"`
	Text     string `json:"text,omitempty"`
	URI      string `json:"uri,omitempty"`
	Name     string `json:"name,omitempty"`
	MimeType string `json:"mimeType,omitempty"`
	Data     string `json:"data,omitempty"`
}

type MCPDef

type MCPDef struct {
	Slug          string        `json:"slug,omitempty"`
	Name          string        `json:"name"`
	URL           string        `json:"url"`
	AuthMode      MCPAuth       `json:"authMode"`
	AuthURL       string        `json:"authUrl,omitempty"`
	TokenURL      string        `json:"tokenUrl,omitempty"`
	Scopes        []string      `json:"scopes,omitempty"`
	AuthInjection AuthInjection `json:"authInjection"`
	Access        Access        `json:"access,omitempty"`
}

type MCPToolCallRequest

type MCPToolCallRequest struct {
	Tool      string          `json:"tool"`
	Arguments json.RawMessage `json:"arguments"`
}

type MCPToolCallResponse

type MCPToolCallResponse struct {
	Content []MCPContent `json:"content"`
	IsError bool         `json:"isError"`
}

type MCPToolSchema

type MCPToolSchema struct {
	ServerSlug  string          `json:"serverSlug"`
	Name        string          `json:"name"`
	Description string          `json:"description"`
	InputSchema json.RawMessage `json:"inputSchema"`
}

type ModelProxyRequest

type ModelProxyRequest struct {
	Slug       string          `json:"slug,omitempty"`
	Capability string          `json:"capability"`
	Options    json.RawMessage `json:"options"`
}

type ModelSlotDef

type ModelSlotDef struct {
	Slug        string `json:"slug"`
	Capability  string `json:"capability"`
	Description string `json:"description,omitempty"`
}

type PrintRequest

type PrintRequest struct {
	Parts          []DisplayPart `json:"parts"`
	Topic          string        `json:"topic,omitempty"`
	ConversationID string        `json:"conversationId,omitempty"`
	RunID          string        `json:"runId,omitempty"`
	UserID         string        `json:"userId,omitempty"`
}

type PromptData

type PromptData struct {
	AgentDashboardURL   string        `json:"agentDashboardUrl"`
	AgentRouteURL       string        `json:"agentRouteUrl"`
	Siblings            []SiblingInfo `json:"siblings,omitempty"`
	Capabilities        Capabilities  `json:"capabilities,omitempty"`
	SupportedModalities []string      `json:"supportedModalities,omitempty"`
}

type PromptInput

type PromptInput struct {
	Messages         []message.Message `json:"messages"`
	Message          string            `json:"message,omitempty"`
	ConversationID   string            `json:"conversationId,omitempty"`
	ProviderID       string            `json:"providerId,omitempty"`
	ModelID          string            `json:"modelId,omitempty"`
	Temperature      *float64          `json:"temperature,omitempty"`
	MaxOutputTokens  *int              `json:"maxOutputTokens,omitempty"`
	ProviderOptions  json.RawMessage   `json:"providerOptions,omitempty"`
	Files            []FileInfo        `json:"files,omitempty"`
	ResumeRunID      string            `json:"resumeRunId,omitempty"`
	Approved         *bool             `json:"approved,omitempty"`
	Source           string            `json:"source,omitempty"`
	ExpectedSyncHash string            `json:"expectedSyncHash,omitempty"`
	Instructions     string            `json:"instructions,omitempty"`
	CallerAccess     Access            `json:"callerAccess,omitempty"`
	VisibleSiblings  []uuid.UUID       `json:"visibleSiblings,omitempty"`
	ForceCompact     bool              `json:"forceCompact,omitempty"`
	AutoConfirm      bool              `json:"autoConfirm,omitempty"`
	DirectTools      bool              `json:"directTools,omitempty"`
	Platform         string            `json:"platform,omitempty"`
	UserDisplayName  string            `json:"userDisplayName,omitempty"`
	UserEmail        string            `json:"userEmail,omitempty"`
}

type ProxyRequest

type ProxyRequest struct {
	Method  string            `json:"method"`
	Path    string            `json:"path"`
	Body    string            `json:"body,omitempty"`
	Headers map[string]string `json:"headers,omitempty"`
}

type RouteDef

type RouteDef struct {
	Path        string `json:"path"`
	Method      string `json:"method"`
	Access      Access `json:"access"`
	Description string `json:"description,omitempty"`
}

type RunCompleteRequest

type RunCompleteRequest struct {
	RunID      string          `json:"runId"`
	Status     string          `json:"status"`
	Error      string          `json:"error,omitempty"`
	ErrorKind  string          `json:"errorKind,omitempty"`
	PanicTrace string          `json:"panicTrace,omitempty"`
	Actions    []Action        `json:"actions"`
	Logs       []LogEntry      `json:"logs,omitempty"`
	Checkpoint json.RawMessage `json:"checkpoint,omitempty"`
}

type SealRequest

type SealRequest struct {
	Plaintext string `json:"plaintext"`
}

type SealResponse

type SealResponse struct {
	Sealed string `json:"sealed"`
}

type SearchProxyRequest

type SearchProxyRequest struct {
	Slug       string `json:"slug,omitempty"`
	Capability string `json:"capability,omitempty"`
	websearch.Request
}

type SessionAppendRequest

type SessionAppendRequest struct {
	Messages []session.Message `json:"messages"`
	Revision string            `json:"revision"`
}

type SessionAppendResponse

type SessionAppendResponse struct {
	Revision string `json:"revision"`
}

type SessionCompactRequest

type SessionCompactRequest struct {
	Summary     []session.Message `json:"summary"`
	TokensFreed int               `json:"tokensFreed"`
	Revision    string            `json:"revision"`
}

type SessionCompactResponse

type SessionCompactResponse struct {
	Revision string `json:"revision"`
}

type SessionLoadResponse

type SessionLoadResponse struct {
	Messages []session.Message `json:"messages"`
	Revision string            `json:"revision"`
}

type ShareFileRequest

type ShareFileRequest struct {
	Path           string `json:"path"`
	ExpiresSeconds int64  `json:"expiresSeconds,omitempty"`
}

type ShareFileResponse

type ShareFileResponse struct {
	URL         string `json:"url"`
	ExpiresAtMs int64  `json:"expiresAtMs"`
}

type SiblingInfo

type SiblingInfo struct {
	ID          uuid.UUID       `json:"id"`
	Slug        string          `json:"slug"`
	Name        string          `json:"name"`
	Description string          `json:"description,omitempty"`
	Tools       []MCPToolSchema `json:"tools,omitempty"`
}

type StartupHookDef added in v0.5.0

type StartupHookDef struct {
	Name string `json:"name"`
}

type StaticAssetDef added in v0.5.0

type StaticAssetDef struct {
	Name        string `json:"name"`
	ContentType string `json:"contentType"`
	Size        int64  `json:"size"`
	SHA256      string `json:"sha256"`
}

type SyncRequest

type SyncRequest = AgentManifest

SyncRequest is the complete agent declaration accepted by runtime sync.

type SyncResponse

type SyncResponse struct {
	PromptData        PromptData                 `json:"promptData"`
	MCPAuthStatus     []MCPAuthStatus            `json:"mcpAuthStatus,omitempty"`
	MCPSchemas        map[string][]MCPToolSchema `json:"mcpSchemas,omitempty"`
	PublicStorageBase string                     `json:"publicStorageBase,omitempty"`
	SyncStateHash     string                     `json:"syncStateHash,omitempty"`
}

type ToolDef

type ToolDef struct {
	Name          string            `json:"name"`
	Description   string            `json:"description"`
	LLMHint       string            `json:"llmHint,omitempty"`
	Access        Access            `json:"access"`
	InputSchema   json.RawMessage   `json:"inputSchema,omitempty"`
	OutputSchema  json.RawMessage   `json:"outputSchema,omitempty"`
	InputExamples []json.RawMessage `json:"inputExamples,omitempty"`
}

type TopicDef

type TopicDef struct {
	Slug        string `json:"slug"`
	Description string `json:"description"`
	LLMHint     string `json:"llmHint,omitempty"`
	Access      Access `json:"access"`
	PerUser     bool   `json:"perUser,omitempty"`
}

type UnsealRequest

type UnsealRequest struct {
	Sealed string `json:"sealed"`
}

type UnsealResponse

type UnsealResponse struct {
	Plaintext string `json:"plaintext"`
}

type UpdateJobProgressRequest added in v0.5.0

type UpdateJobProgressRequest struct {
	Attempt   int32  `json:"attempt"`
	Phase     string `json:"phase"`
	Message   string `json:"message"`
	Completed int64  `json:"completed"`
	Total     int64  `json:"total"`
}

type WebhookDef

type WebhookDef struct {
	Path        string `json:"path"`
	Verify      string `json:"verify"`
	Header      string `json:"header,omitempty"`
	TimeoutMs   int64  `json:"timeoutMs"`
	Description string `json:"description,omitempty"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL