61 lines
2.0 KiB
Go
61 lines
2.0 KiB
Go
package agentpool
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
"github.com/mudler/LocalAGI/core/agent"
|
|
"github.com/mudler/LocalAGI/core/sse"
|
|
"github.com/mudler/LocalAGI/core/state"
|
|
)
|
|
|
|
// AgentConfigBackend abstracts agent config storage and runtime queries
|
|
// between local (in-memory pool) and distributed (PostgreSQL + NATS) modes.
|
|
// Each method corresponds to a previously-branched operation in AgentPoolService.
|
|
type AgentConfigBackend interface {
|
|
// CRUD operations
|
|
ListAgents(userID string) map[string]bool
|
|
GetConfig(userID, name string) *state.AgentConfig
|
|
SaveConfig(userID string, cfg *state.AgentConfig) error
|
|
UpdateConfig(userID, name string, cfg *state.AgentConfig) error
|
|
DeleteConfig(userID, name string) error
|
|
ImportConfig(userID string, cfg *state.AgentConfig) error
|
|
ExportConfig(userID, name string) ([]byte, error)
|
|
|
|
// Status operations
|
|
SetStatus(userID, name, status string) error // "active" or "paused"
|
|
|
|
// Runtime queries — local mode returns real data, distributed mode returns nil/empty
|
|
GetAgent(userID, name string) *agent.Agent
|
|
GetSSEManager(userID, name string) sse.Manager
|
|
GetStatus(userID, name string) *state.Status
|
|
GetObservables(userID, name string) ([]json.RawMessage, error)
|
|
ClearObservables(userID, name string) error
|
|
|
|
// Admin aggregation
|
|
ListAllGrouped() map[string][]UserAgentInfo
|
|
|
|
// Config metadata for UI
|
|
GetConfigMeta() AgentConfigMetaResult
|
|
|
|
// Actions
|
|
ListAvailableActions() []string
|
|
|
|
// Chat dispatch
|
|
Chat(userID, name, message string) (string, error)
|
|
|
|
// Stop / cleanup
|
|
Stop()
|
|
}
|
|
|
|
// AgentConfigMetaResult holds the config metadata response for the UI.
|
|
// In local mode, it comes from LocalAGI's AgentConfigMeta.
|
|
// In distributed mode, it comes from the native agents.DefaultConfigMeta().
|
|
type AgentConfigMetaResult struct {
|
|
Fields any `json:"Fields"`
|
|
Actions any `json:"Actions"`
|
|
Connectors any `json:"Connectors"`
|
|
Filters any `json:"Filters"`
|
|
OutputsDir string `json:"OutputsDir"`
|
|
Distributed bool `json:"distributed,omitempty"`
|
|
}
|