mirror of
https://github.com/YspCoder/clawgo.git
synced 2026-04-28 13:27:33 +08:00
refactor api server around rpc services
This commit is contained in:
192
pkg/rpc/node.go
Normal file
192
pkg/rpc/node.go
Normal file
@@ -0,0 +1,192 @@
|
||||
package rpc
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/YspCoder/clawgo/pkg/nodes"
|
||||
)
|
||||
|
||||
type NodeService interface {
|
||||
Register(context.Context, RegisterNodeRequest) (*RegisterNodeResponse, *Error)
|
||||
Heartbeat(context.Context, HeartbeatNodeRequest) (*HeartbeatNodeResponse, *Error)
|
||||
Dispatch(context.Context, DispatchNodeRequest) (*DispatchNodeResponse, *Error)
|
||||
ListArtifacts(context.Context, ListNodeArtifactsRequest) (*ListNodeArtifactsResponse, *Error)
|
||||
GetArtifact(context.Context, GetNodeArtifactRequest) (*GetNodeArtifactResponse, *Error)
|
||||
DeleteArtifact(context.Context, DeleteNodeArtifactRequest) (*DeleteNodeArtifactResponse, *Error)
|
||||
PruneArtifacts(context.Context, PruneNodeArtifactsRequest) (*PruneNodeArtifactsResponse, *Error)
|
||||
}
|
||||
|
||||
type RegisterNodeRequest struct {
|
||||
Node nodes.NodeInfo `json:"node"`
|
||||
}
|
||||
|
||||
type RegisterNodeResponse struct {
|
||||
ID string `json:"id"`
|
||||
}
|
||||
|
||||
type HeartbeatNodeRequest struct {
|
||||
ID string `json:"id"`
|
||||
}
|
||||
|
||||
type HeartbeatNodeResponse struct {
|
||||
ID string `json:"id"`
|
||||
}
|
||||
|
||||
type DispatchNodeRequest struct {
|
||||
Node string `json:"node"`
|
||||
Action string `json:"action"`
|
||||
Mode string `json:"mode,omitempty"`
|
||||
Task string `json:"task,omitempty"`
|
||||
Model string `json:"model,omitempty"`
|
||||
Args map[string]interface{} `json:"args,omitempty"`
|
||||
}
|
||||
|
||||
type DispatchNodeResponse struct {
|
||||
Result nodes.Response `json:"result"`
|
||||
}
|
||||
|
||||
type ArtifactSummary struct {
|
||||
Data map[string]interface{} `json:"data"`
|
||||
}
|
||||
|
||||
type ArtifactContentRef struct {
|
||||
Data map[string]interface{} `json:"data"`
|
||||
}
|
||||
|
||||
type ArtifactDeleteResult struct {
|
||||
ID string `json:"id"`
|
||||
DeletedFile bool `json:"deleted_file"`
|
||||
DeletedAudit bool `json:"deleted_audit"`
|
||||
}
|
||||
|
||||
type ArtifactPruneResult struct {
|
||||
Pruned int `json:"pruned"`
|
||||
DeletedFiles int `json:"deleted_files"`
|
||||
Kept int `json:"kept"`
|
||||
}
|
||||
|
||||
type ListNodeArtifactsRequest struct {
|
||||
Node string `json:"node,omitempty"`
|
||||
Action string `json:"action,omitempty"`
|
||||
Kind string `json:"kind,omitempty"`
|
||||
Limit int `json:"limit,omitempty"`
|
||||
}
|
||||
|
||||
type ListNodeArtifactsResponse struct {
|
||||
Items []map[string]interface{} `json:"items"`
|
||||
ArtifactRetention map[string]interface{} `json:"artifact_retention,omitempty"`
|
||||
}
|
||||
|
||||
type GetNodeArtifactRequest struct {
|
||||
ID string `json:"id"`
|
||||
}
|
||||
|
||||
type GetNodeArtifactResponse struct {
|
||||
Found bool `json:"found"`
|
||||
Artifact map[string]interface{} `json:"artifact,omitempty"`
|
||||
}
|
||||
|
||||
type DeleteNodeArtifactRequest struct {
|
||||
ID string `json:"id"`
|
||||
}
|
||||
|
||||
type DeleteNodeArtifactResponse struct {
|
||||
ArtifactDeleteResult
|
||||
}
|
||||
|
||||
type PruneNodeArtifactsRequest struct {
|
||||
Node string `json:"node,omitempty"`
|
||||
Action string `json:"action,omitempty"`
|
||||
Kind string `json:"kind,omitempty"`
|
||||
KeepLatest int `json:"keep_latest,omitempty"`
|
||||
Limit int `json:"limit,omitempty"`
|
||||
}
|
||||
|
||||
type PruneNodeArtifactsResponse struct {
|
||||
ArtifactPruneResult
|
||||
}
|
||||
|
||||
type ProviderService interface {
|
||||
ListModels(context.Context, ListProviderModelsRequest) (*ListProviderModelsResponse, *Error)
|
||||
UpdateModels(context.Context, UpdateProviderModelsRequest) (*UpdateProviderModelsResponse, *Error)
|
||||
Chat(context.Context, ProviderChatRequest) (*ProviderChatResponse, *Error)
|
||||
CountTokens(context.Context, ProviderCountTokensRequest) (*ProviderCountTokensResponse, *Error)
|
||||
RuntimeView(context.Context, ProviderRuntimeViewRequest) (*ProviderRuntimeViewResponse, *Error)
|
||||
RuntimeAction(context.Context, ProviderRuntimeActionRequest) (*ProviderRuntimeActionResponse, *Error)
|
||||
}
|
||||
|
||||
type ListProviderModelsRequest struct {
|
||||
Provider string `json:"provider"`
|
||||
}
|
||||
|
||||
type ListProviderModelsResponse struct {
|
||||
Provider string `json:"provider"`
|
||||
Models []string `json:"models,omitempty"`
|
||||
Default string `json:"default_model,omitempty"`
|
||||
}
|
||||
|
||||
type UpdateProviderModelsRequest struct {
|
||||
Provider string `json:"provider"`
|
||||
Model string `json:"model,omitempty"`
|
||||
Models []string `json:"models,omitempty"`
|
||||
}
|
||||
|
||||
type UpdateProviderModelsResponse struct {
|
||||
Provider string `json:"provider"`
|
||||
Models []string `json:"models,omitempty"`
|
||||
}
|
||||
|
||||
type ProviderChatRequest struct {
|
||||
Provider string `json:"provider"`
|
||||
Model string `json:"model,omitempty"`
|
||||
Messages []map[string]interface{} `json:"messages"`
|
||||
Tools []map[string]interface{} `json:"tools,omitempty"`
|
||||
Options map[string]interface{} `json:"options,omitempty"`
|
||||
}
|
||||
|
||||
type ProviderChatResponse struct {
|
||||
Content string `json:"content,omitempty"`
|
||||
ToolCalls []map[string]interface{} `json:"tool_calls,omitempty"`
|
||||
FinishReason string `json:"finish_reason,omitempty"`
|
||||
Usage map[string]interface{} `json:"usage,omitempty"`
|
||||
}
|
||||
|
||||
type ProviderCountTokensRequest struct {
|
||||
Provider string `json:"provider"`
|
||||
Model string `json:"model,omitempty"`
|
||||
Messages []map[string]interface{} `json:"messages"`
|
||||
Tools []map[string]interface{} `json:"tools,omitempty"`
|
||||
Options map[string]interface{} `json:"options,omitempty"`
|
||||
}
|
||||
|
||||
type ProviderCountTokensResponse struct {
|
||||
Usage map[string]interface{} `json:"usage,omitempty"`
|
||||
}
|
||||
|
||||
type ProviderRuntimeViewRequest struct {
|
||||
Provider string `json:"provider,omitempty"`
|
||||
Kind string `json:"kind,omitempty"`
|
||||
Reason string `json:"reason,omitempty"`
|
||||
Target string `json:"target,omitempty"`
|
||||
Sort string `json:"sort,omitempty"`
|
||||
ChangesOnly bool `json:"changes_only,omitempty"`
|
||||
WindowSec int `json:"window_sec,omitempty"`
|
||||
Limit int `json:"limit,omitempty"`
|
||||
Cursor int `json:"cursor,omitempty"`
|
||||
HealthBelow int `json:"health_below,omitempty"`
|
||||
CooldownUntilBeforeSec int `json:"cooldown_until_before_sec,omitempty"`
|
||||
}
|
||||
|
||||
type ProviderRuntimeViewResponse struct {
|
||||
View map[string]interface{} `json:"view"`
|
||||
}
|
||||
|
||||
type ProviderRuntimeActionRequest struct {
|
||||
Provider string `json:"provider,omitempty"`
|
||||
Action string `json:"action"`
|
||||
OnlyExpiring bool `json:"only_expiring,omitempty"`
|
||||
}
|
||||
|
||||
type ProviderRuntimeActionResponse struct {
|
||||
Result map[string]interface{} `json:"result"`
|
||||
}
|
||||
Reference in New Issue
Block a user