Documentation
¶
Index ¶
- Constants
- Variables
- func LogLevelToString(level LogLevel) string
- func NewBadRequestError(msg string) error
- func NewInternalServerError(msg string) error
- func NewNotFoundError(msg string) error
- func NewUnauthorizedError(msg string) error
- func NewUnsupportedError(msg string) error
- type ATMSupport
- type Action
- type Agent
- type AgentConfig
- type AgentName
- type AgentTool
- type AgentsConfig
- type AppConfig
- func (cfg *AppConfig) Clone() *AppConfig
- func (r *AppConfig) HasInput() bool
- func (r *AppConfig) IsClipin() bool
- func (cfg *AppConfig) IsInformative() bool
- func (cfg *AppConfig) IsNew() bool
- func (cfg *AppConfig) IsQuiet() bool
- func (r *AppConfig) IsSpecial() bool
- func (r *AppConfig) IsStdin() bool
- func (cfg *AppConfig) IsTracing() bool
- func (cfg *AppConfig) IsVerbose() bool
- type AssetFS
- type AssetManager
- type AssetStore
- type BadRequestError
- type Blob
- type BlobStore
- type Chat
- type ClipboardProvider
- type ConnectorConfig
- type ContextKey
- type DirEntry
- type DirEntryInfo
- type EditorProvider
- type FileInfo
- func (r *FileInfo) IsDir() bool
- func (fi FileInfo) MarshalJSON() ([]byte, error)
- func (r *FileInfo) ModTime() time.Time
- func (r *FileInfo) Mode() fs.FileMode
- func (r *FileInfo) Name() string
- func (r *FileInfo) Size() int64
- func (r *FileInfo) Sys() any
- func (fi *FileInfo) UnmarshalJSON(data []byte) error
- type Flow
- type FlowConfig
- type FlowType
- type FuncBody
- type Global
- type Handler
- type IOFilter
- type Instruction
- type InternalServerError
- type KitName
- type Level
- type LogLevel
- type MemOption
- type MemStore
- type Message
- type Model
- type ModelConfig
- type ModelsConfig
- type NotFoundError
- type Output
- type Record
- type Request
- type Resource
- type ResourceConfig
- type Response
- type Result
- type SecretStore
- type State
- type TemplateFuncMap
- type ToolCondition
- type ToolConfig
- type ToolEnv
- type ToolFunc
- type ToolGuard
- type ToolKit
- type ToolRunner
- type ToolSystem
- type ToolType
- type ToolsConfig
- type UnauthorizedError
- type UnsupportedError
- type User
- type UserInput
- type Vars
Constants ¶
const ( RoleSystem = "system" RoleAssistant = "assistant" RoleUser = "user" RoleTool = "tool" )
const ( VarsEnvContainer = "container" VarsEnvHost = "host" )
const (
ContentTypeImageB64 = "img/base64"
)
Variables ¶
Functions ¶
func LogLevelToString ¶ added in v0.1.1
func NewBadRequestError ¶ added in v0.1.1
func NewInternalServerError ¶ added in v0.1.1
func NewNotFoundError ¶ added in v0.1.1
func NewUnauthorizedError ¶ added in v0.1.1
func NewUnsupportedError ¶ added in v0.1.1
Types ¶
type ATMSupport ¶ added in v0.1.1
type ATMSupport interface {
AssetStore
RetrieveAgent(owner, pack string) (*Record, error)
ListAgents(owner string) ([]*Record, error)
SearchAgent(owner, pack string) (*Record, error)
RetrieveTool(owner, kit string) (*Record, error)
ListTools(owner string) ([]*Record, error)
RetrieveModel(owner, alias string) (*Record, error)
ListModels(owner string) ([]*Record, error)
}
agent/tool/model methods
type Agent ¶
type Agent struct {
Owner string
// The name of the agent.
Name string
Display string
Description string
// system prompt
Instruction *Instruction
// user query
Message string
RawInput *UserInput
// The model to be used by the agent
Model *Model
// Functions that the agent can call
Tools []*ToolFunc
// default values
Arguments map[string]any
// LLM adapter
Adapter string
//
Format string
MaxTurns int
MaxTime int
New bool
MaxHistory int
MaxSpan int
Context string
LogLevel LogLevel
//
Flow *Flow
//
Embed []*Agent
// global values
Environment map[string]any
}
type AgentConfig ¶
type AgentConfig struct {
Name string `yaml:"name"`
Display string `yaml:"display"`
Description string `yaml:"description"`
//
Instruction *Instruction `yaml:"instruction"`
// set/level
Model string `yaml:"model"`
// tools defined in tools config
// kit:name
Functions []string `yaml:"functions"`
Flow *FlowConfig `yaml:"flow"`
// chat|image|docker/aider oh gptr
Adapter string `yaml:"adapter"`
//
MaxTurns int `yaml:"max_turns"`
MaxTime int `yaml:"max_time"`
// user message
Message string `yaml:"message"`
// output format: json | text
Format string `yaml:"format"`
// memory
// max history: 0 max span: 0
New *bool `yaml:"new,omitempty"`
MaxHistory int `yaml:"max_history"`
MaxSpan int `yaml:"max_span"`
Context string `yaml:"context"`
// logging: quiet | info[rmative] | verbose | trace
LogLevel string `yaml:"log_level"`
// agent as tool
Parameters map[string]any `yaml:"parameters"`
// default values for parameters
Arguments map[string]any `yaml:"arguments"`
// agent global vars
Environment map[string]any `yaml:"environment"`
// security
Filters []*IOFilter `yaml:"filters"`
Guards []*ToolGuard `yaml:"guards"`
// inherit parent agents'
// message/instruction, model, and tools
Embed []string `yaml:"embed"`
//
Store AssetStore `yaml:"-"`
// relative to root
BaseDir string `yaml:"-"`
}
type AgentName ¶ added in v0.5.0
type AgentName string
[@][owner:]pack[/sub] @[owner:]<agent> agent: pack[/sub] @any @*
type AgentTool ¶ added in v0.11.0
type AgentTool struct {
Agent *Agent
Tool *ToolFunc
//
Owner string
Instruction string
Message string
Arguments map[string]any
}
agent or tool TODO redesign: agent <-> tool same?
type AgentsConfig ¶
type AgentsConfig struct {
// agent app name
Name string `yaml:"name"`
// set/level key - not the LLM model
Model string `yaml:"model"`
Agents []*AgentConfig `yaml:"agents"`
//
MaxTurns int `yaml:"max_turns"`
MaxTime int `yaml:"max_time"`
// user message
Message string `yaml:"message"`
// output format: json | text
Format string `yaml:"format"`
// memory
// max history: 0 max span: 0
New *bool `yaml:"new,omitempty"`
MaxHistory int `yaml:"max_history"`
MaxSpan int `yaml:"max_span"`
Context string `yaml:"context"`
// logging: quiet | informative | verbose
LogLevel string `yaml:"log_level"`
// toolkit
// kit:any
Kit string `yaml:"kit"`
Type string `yaml:"type"`
Tools []*ToolConfig `yaml:"tools"`
// model set
// set/any
Set string `yaml:"set"`
Models map[string]*ModelConfig `yaml:"models"`
// TODO separate?
// model/tool shared default values
Provider string `yaml:"provider"`
BaseUrl string `yaml:"base_url"`
// api lookup key
ApiKey string `yaml:"api_key"`
// pack level global vars
Environment map[string]any `yaml:"environment"`
}
agent app config
type AppConfig ¶
type AppConfig struct {
Version string
ConfigFile string
Agent string
// Command string
Args []string
// --message takes precedence, skip stdin
// command line arguments
Message string
// editor binary and args. e.g vim [options]
Editor string
Clipin bool
ClipWait bool
Clipout bool
ClipAppend bool
// IsPiped bool
Stdin bool
// Output format: raw or markdown
Format string
// user
User *User
// chat id to continue the conersation
// <config_base>/chat/<id>.json
ChatID string
// conversation history
New *bool
MaxHistory int
MaxSpan int
// history @agent
Context string
Models string
//
LogLevel string
Unsafe bool
//
Base string
Workspace string
Interactive bool
Editing bool
Shell string
Watch bool
ClipWatch bool
MaxTime int
MaxTurns int
//
Stdout string
Stderr string
// dry run
DryRun bool
DryRunContent string
}
func (*AppConfig) IsInformative ¶ added in v0.1.1
type AssetManager ¶ added in v0.1.1
type AssetManager interface {
// GetStore(key string) (AssetStore, error)
AddStore(store AssetStore)
SearchAgent(owner, pack string) (*Record, error)
ListAgent(owner string) (map[string]*AgentsConfig, error)
FindAgent(owner, pack string) (*AgentsConfig, error)
ListToolkit(owner string) (map[string]*ToolsConfig, error)
FindToolkit(owner string, kit string) (*ToolsConfig, error)
ListModels(owner string) (map[string]*ModelsConfig, error)
FindModels(owner string, alias string) (*ModelsConfig, error)
}
type AssetStore ¶
type AssetStore any
type BadRequestError ¶ added in v0.1.1
type BadRequestError struct {
Message string
}
func (*BadRequestError) Error ¶ added in v0.1.1
func (e *BadRequestError) Error() string
type Blob ¶ added in v0.1.1
type Blob struct {
ID string `json:"id"`
MimeType string `json:"mime_type"`
Content []byte `json:"content"`
Meta map[string]any `json:"meta"`
}
https://en.wikipedia.org/wiki/Media_type https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/MIME_types https://mimesniff.spec.whatwg.org/
type BlobStore ¶ added in v0.1.1
type BlobStore interface {
Put(ID string, blob *Blob) error
Get(ID string) (*Blob, error)
Presign(ID string) (string, error)
}
Object store
type ClipboardProvider ¶
type ConnectorConfig ¶ added in v0.0.2
type ContextKey ¶ added in v0.1.1
type ContextKey string
const SwarmUserContextKey ContextKey = "swarm_user"
type DirEntryInfo ¶
type DirEntryInfo struct {
// contains filtered or unexported fields
}
func FsDirEntryInfo ¶
func FsDirEntryInfo(de fs.DirEntry) *DirEntryInfo
func (*DirEntryInfo) IsDir ¶
func (r *DirEntryInfo) IsDir() bool
func (DirEntryInfo) MarshalJSON ¶
func (r DirEntryInfo) MarshalJSON() ([]byte, error)
func (*DirEntryInfo) Name ¶
func (r *DirEntryInfo) Name() string
func (*DirEntryInfo) Type ¶
func (r *DirEntryInfo) Type() fs.FileMode
func (*DirEntryInfo) UnmarshalJSON ¶
func (r *DirEntryInfo) UnmarshalJSON(data []byte) error
type EditorProvider ¶
type FileInfo ¶
type FileInfo struct {
// contains filtered or unexported fields
}
func FsFileInfo ¶
func NewFileInfo ¶
func (FileInfo) MarshalJSON ¶
func (*FileInfo) UnmarshalJSON ¶
type FlowConfig ¶ added in v0.9.0
type FlowConfig struct {
Type FlowType `yaml:"type"`
// go template syntax
Expression string `yaml:"expression"`
Concurrency int `yaml:"concurrency"`
Retry int `yaml:"retry"`
// agent/tool list for non script flow
Actions []string `yaml:"actions"`
// content of the script for flow type: script
Script string `yaml:"script"`
}
type FlowType ¶ added in v0.1.1
type FlowType string
const ( // FlowTypeSequence executes actions one after another, where each // subsequent action uses the previous action's response as input. FlowTypeSequence FlowType = "sequence" // FlowTypeChoice selects and executes a single action based on an evaluated expression. // If no expression is provided, an action is chosen randomly. The expression must evaluate // to an integer that selects the action index, starting from zero. FlowTypeChoice FlowType = "choice" // FlowTypeParallel executes actions simultaneously, returning the combined results as a list. // This allows for concurrent processing of independent actions. FlowTypeParallel FlowType = "parallel" // FlowTypeMap applies specified action(s) to each element in the input array, creating a new // array populated with the results. FlowTypeMap FlowType = "map" // FlowTypeLoop executes actions repetitively in a loop. The loop can use a counter or // evaluate an expression for each iteration, allowing for repeated execution with varying // parameters or conditions. FlowTypeLoop FlowType = "loop" // FlowTypeReduce applies action(s) sequentially to each element of an input array, accumulating // results. It passes the result of each action as input to the next. The process returns a single // accumulated value. If at the root, an initial value is sourced from a previous agent or user query. FlowTypeReduce FlowType = "reduce" // FlowTypeScript delegates control to a shell script using bash script syntax, enabling // complex flow control scenarios driven by external scripting logic. FlowTypeScript FlowType = "script" )
type Global ¶ added in v0.10.3
type Global struct {
// contains filtered or unexported fields
}
type Instruction ¶ added in v0.0.6
type InternalServerError ¶ added in v0.1.1
type InternalServerError struct {
Message string
}
func (*InternalServerError) Error ¶ added in v0.1.1
func (e *InternalServerError) Error() string
type KitName ¶ added in v0.5.0
type KitName string
type Level ¶ added in v0.0.3
type Level = string
Level represents the "intelligence" level of the model. i.e. basic, regular, advanced for example, OpenAI: gpt-4.1-mini, gpt-4.1, o3
type Message ¶
type Message struct {
// message id
ID string `json:"id"`
// thread id
ChatID string `json:"chat_id"`
Created time.Time `json:"created"`
// data
ContentType string `json:"content_type"`
Content string `json:"content"`
// system | assistant | user
Role string `json:"role"`
// user/agent
Sender string `json:"sender"`
}
type Model ¶
type ModelConfig ¶
type ModelsConfig ¶ added in v0.0.3
type NotFoundError ¶ added in v0.1.1
type NotFoundError struct {
Message string
}
func (*NotFoundError) Error ¶ added in v0.1.1
func (e *NotFoundError) Error() string
type Request ¶
type Request struct {
// parent agent
Parent *Agent
// The name of the active agent/tool
Name string
// default values
Arguments map[string]any
Messages []*Message
RawInput *UserInput
// contains filtered or unexported fields
}
func NewRequest ¶ added in v0.1.1
func (*Request) Clone ¶
Clone returns a shallow copy of r while ensuring proper copying of slices and maps
func (*Request) Context ¶
Context returns the request's context. To change the context, use Request.WithContext.
The returned context is always non-nil; it defaults to the background context.
For outgoing client requests, the context controls cancellation.
For incoming server requests, the context is canceled when the client's connection closes, the request is canceled (with HTTP/2), or when the ServeHTTP method returns.
func (*Request) WithContext ¶
WithContext returns a shallow copy of r with its context changed to ctx. The provided ctx must be non-nil.
For outgoing client request, the context controls the entire lifetime of a request and its response: obtaining a connection, sending the request, and reading the response headers and body.
To create a new request with a context, use NewRequest. To make a deep copy of a request with a new context, use Request.Clone.
type Resource ¶
type Resource struct {
// web resource base url
// http://localhost:18080/resource
// https://ai.dhnt.io/resource
Base string `json:"base"`
// access token
Token string `json:"token"`
}
type ResourceConfig ¶ added in v0.1.1
func LoadResourceConfig ¶ added in v0.9.0
func LoadResourceConfig(conf string) (*ResourceConfig, error)
type Result ¶
type Result struct {
// The result value as a string
Value string
// media content
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/MIME_types
MimeType string
Content []byte
// transition
// The agent state
State State
// The agent name to transfer to for StateTransfer
NextAgent string
}
Result encapsulates the possible return values for agent/function.
type SecretStore ¶ added in v0.1.1
type TemplateFuncMap ¶
type ToolCondition ¶
type ToolCondition struct {
// required env list
Env []string `yaml:"env"`
// found on PATH
Lookup *string `yaml:"lookup"`
// shell required
Shell map[string]any `yaml:"shell"`
}
TODO condidtion needs to be met for tools to be enabled
type ToolConfig ¶
type ToolConfig struct {
Type string `yaml:"type"`
Name string `yaml:"name"`
Description string `yaml:"description"`
Parameters map[string]any `yaml:"parameters"`
Body *FuncBody `yaml:"body"`
Condition *ToolCondition `yaml:"condition"`
// agent name for agent tool type
// description/parameters defined here take precedence
Agent string `yaml:"agent"`
//
Provider string `yaml:"provider"`
BaseUrl string `yaml:"base_url"`
// name of api key
ApiKey string `yaml:"api_key"`
// filter by match key=values (comma, separated)
// include all tools that match
Filter map[string]string `yaml:"filter"`
}
type ToolEnv ¶ added in v0.9.0
type ToolEnv struct {
// User string
Owner string
}
per tool call vars
type ToolFunc ¶
type ToolFunc struct {
Type string
Kit string
Name string
Description string
Parameters map[string]any
Body *FuncBody
// agent name if this tool references an agent
Agent string
//
State State
//
Provider string
BaseUrl string
// name of api key - used to resolve api key/token before tool call
ApiKey string
// extra features.
// e.g labels for mcp for filtering tools
Extra map[string]any
// default arguments
Arguments map[string]any
}
type ToolRunner ¶ added in v0.5.0
type ToolSystem ¶ added in v0.0.2
type ToolsConfig ¶
type ToolsConfig struct {
// kit name specifies a namespace.
// e.g. but not limited to:
// class name
// MCP server name
// virtual filesystem name
// container name
// virtual machine name
// tool/function (Gemini)
Kit string `yaml:"kit"`
// func (server) | system (client) | remote
Type string `yaml:"type"`
// provider
Provider string `yaml:"provider"`
BaseUrl string `yaml:"base_url"`
// name of api key
ApiKey string `yaml:"api_key"`
// system commands used by tools
Commands []string `yaml:"commands"`
Tools []*ToolConfig `yaml:"tools"`
}
Toolkit configuration
type UnauthorizedError ¶ added in v0.1.1
type UnauthorizedError struct {
}
func (*UnauthorizedError) Error ¶ added in v0.1.1
func (e *UnauthorizedError) Error() string
type UnsupportedError ¶ added in v0.1.1
type UnsupportedError struct {
Message string
}
func (*UnsupportedError) Error ¶ added in v0.1.1
func (e *UnsupportedError) Error() string
type UserInput ¶
type UserInput struct {
// query - command line args
Message string `json:"message"`
// query - clipboard/stdin/editor
// message is moved to content if editor is used
Content string `json:"content"`
// cached media contents
Messages []*Message `json:"-"`
}
func (*UserInput) Intent ¶
Intent returns a clipped version of the query. This is intended for "smart" agents to make decisions based on user inputs.
type Vars ¶
type Vars struct {
LogLevel LogLevel `json:"log_level"`
ChatID string `json:"chat_id"`
MaxTurns int `json:"max_turns"`
MaxTime int `json:"max_time"`
New *bool `json:"new"`
MaxHistory int `json:"max_history"`
MaxSpan int `json:"max_span"`
Context string `json:"context"`
Format string `json:"format"`
Models string `json:"models"`
Unsafe bool `json:"unsafe"`
Workspace string `json:"workspace"`
DryRun bool `json:"-"`
DryRunContent string `json:"-"`
// conversation history
History []*Message `json:"-"`
Global *Global `json:"-"`
}
global context