Files
wehub-resource-sync 1b8708893a
Security Scan / tests (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:12:26 +08:00

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"`
}