Agent-Mode mit Aufgabenteilung und automatischer Recherche
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
package sourceagent
|
||||
|
||||
import "time"
|
||||
|
||||
const SchemaVersion = 1
|
||||
|
||||
type Agent struct {
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Enabled bool `json:"enabled"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
LastSeen time.Time `json:"last_seen,omitempty"`
|
||||
LastError string `json:"last_error,omitempty"`
|
||||
Version string `json:"version,omitempty"`
|
||||
TaskCount int `json:"task_count,omitempty"`
|
||||
}
|
||||
|
||||
type Task struct {
|
||||
ID string `json:"id"`
|
||||
AgentID string `json:"agent_id"`
|
||||
Name string `json:"name"`
|
||||
Type string `json:"type"`
|
||||
URL string `json:"url"`
|
||||
Enabled bool `json:"enabled"`
|
||||
PollInterval string `json:"poll_interval"`
|
||||
Categories []string `json:"categories,omitempty"`
|
||||
MaxItems int `json:"max_items,omitempty"`
|
||||
Config map[string]string `json:"config,omitempty"`
|
||||
CreatedAt time.Time `json:"created_at,omitempty"`
|
||||
UpdatedAt time.Time `json:"updated_at,omitempty"`
|
||||
}
|
||||
|
||||
type RemoteConfig struct {
|
||||
SchemaVersion int `json:"schema_version"`
|
||||
Agent Agent `json:"agent"`
|
||||
Tasks []Task `json:"tasks"`
|
||||
IssuedAt time.Time `json:"issued_at"`
|
||||
}
|
||||
|
||||
type Document struct {
|
||||
ExternalID string `json:"external_id,omitempty"`
|
||||
URL string `json:"url"`
|
||||
CanonicalURL string `json:"canonical_url,omitempty"`
|
||||
Title string `json:"title"`
|
||||
PublishedAt time.Time `json:"published_at,omitempty"`
|
||||
DiscoveredAt time.Time `json:"discovered_at,omitempty"`
|
||||
Language string `json:"language,omitempty"`
|
||||
ContentType string `json:"content_type,omitempty"`
|
||||
Text string `json:"text"`
|
||||
ContentSHA256 string `json:"content_sha256,omitempty"`
|
||||
SourceName string `json:"source_name,omitempty"`
|
||||
SourceBaseURL string `json:"source_base_url,omitempty"`
|
||||
Categories []string `json:"categories,omitempty"`
|
||||
Metadata map[string]any `json:"metadata,omitempty"`
|
||||
}
|
||||
|
||||
type IngestBatch struct {
|
||||
SchemaVersion int `json:"schema_version"`
|
||||
AgentID string `json:"agent_id,omitempty"`
|
||||
TaskID string `json:"task_id"`
|
||||
Documents []Document `json:"documents"`
|
||||
}
|
||||
|
||||
type IngestResult struct {
|
||||
Accepted int `json:"accepted"`
|
||||
Duplicates int `json:"duplicates"`
|
||||
Rejected int `json:"rejected"`
|
||||
BatchID string `json:"batch_id"`
|
||||
}
|
||||
|
||||
type Heartbeat struct {
|
||||
AgentID string `json:"agent_id,omitempty"`
|
||||
Version string `json:"version,omitempty"`
|
||||
Status string `json:"status,omitempty"`
|
||||
LastRunAt time.Time `json:"last_run_at,omitempty"`
|
||||
LastError string `json:"last_error,omitempty"`
|
||||
TasksChecked int `json:"tasks_checked,omitempty"`
|
||||
Documents int `json:"documents,omitempty"`
|
||||
Metadata map[string]any `json:"metadata,omitempty"`
|
||||
}
|
||||
|
||||
type InboxDocument struct {
|
||||
ID string `json:"id"`
|
||||
AgentID string `json:"agent_id"`
|
||||
TaskID string `json:"task_id"`
|
||||
Document Document `json:"document"`
|
||||
Status string `json:"status"`
|
||||
Relevance float64 `json:"relevance,omitempty"`
|
||||
MatchedNodeID string `json:"matched_node_id,omitempty"`
|
||||
ReceivedAt time.Time `json:"received_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
Metadata map[string]any `json:"metadata,omitempty"`
|
||||
}
|
||||
|
||||
type InboxStats struct {
|
||||
Total int `json:"total"`
|
||||
Received int `json:"received"`
|
||||
Processing int `json:"processing"`
|
||||
Candidate int `json:"candidate"`
|
||||
Archived int `json:"archived"`
|
||||
Used int `json:"used"`
|
||||
}
|
||||
|
||||
type ScoredDocument struct {
|
||||
InboxDocument
|
||||
QueryScore float64 `json:"query_score"`
|
||||
}
|
||||
Reference in New Issue
Block a user