rara/packages/go/integration/ports.go
toki fdc86c7ff4
Some checks are pending
ci / validate (push) Waiting to run
initial commit
2026-07-18 18:41:17 +09:00

126 lines
3.6 KiB
Go

package integration
import (
"context"
"encoding/json"
"io"
"time"
)
type SourceCursor struct {
Revision string `json:"revision,omitempty"`
State json.RawMessage `json:"state,omitempty"`
}
type SourceChange struct {
Key string `json:"key"`
Operation string `json:"operation"`
Content []byte `json:"content,omitempty"`
MediaType string `json:"media_type,omitempty"`
Metadata map[string]string `json:"metadata,omitempty"`
ACL []string `json:"acl,omitempty"`
Revision string `json:"revision,omitempty"`
ObservedAt time.Time `json:"observed_at"`
}
type SourceChangeStream interface {
Next(context.Context) (SourceChange, error)
Close() error
}
type SourceConnector interface {
Changes(context.Context, SourceCursor) (SourceChangeStream, error)
}
type IndexPublication struct {
ProjectID string `json:"project_id"`
KnowledgeBaseID string `json:"knowledge_base_id"`
ReleaseID string `json:"release_id"`
DatasetURI string `json:"dataset_uri"`
DatasetHash string `json:"dataset_hash"`
Policy json.RawMessage `json:"policy"`
}
type PublishedIndex struct {
ExternalID string `json:"external_id"`
Revision string `json:"revision"`
Metadata json.RawMessage `json:"metadata,omitempty"`
}
type RetrievalRequest struct {
ExternalIndexID string `json:"external_index_id"`
Query string `json:"query"`
TopK int `json:"top_k"`
Filters json.RawMessage `json:"filters,omitempty"`
}
type RetrievedItem struct {
ID string `json:"id"`
Content string `json:"content"`
Score float64 `json:"score"`
Citation json.RawMessage `json:"citation,omitempty"`
Metadata json.RawMessage `json:"metadata,omitempty"`
}
type RetrievalBackend interface {
Publish(context.Context, IndexPublication) (PublishedIndex, error)
Retrieve(context.Context, RetrievalRequest) ([]RetrievedItem, error)
Retire(context.Context, PublishedIndex) error
}
type EmbeddingRequest struct {
Model string `json:"model"`
Texts []string `json:"texts"`
}
type EmbeddingResponse struct {
Model string `json:"model"`
Dimensions int `json:"dimensions"`
Vectors [][]float32 `json:"vectors"`
Usage json.RawMessage `json:"usage,omitempty"`
}
type EmbeddingProvider interface {
Embed(context.Context, EmbeddingRequest) (EmbeddingResponse, error)
}
type RerankRequest struct {
Model string `json:"model"`
Query string `json:"query"`
Candidates []RetrievedItem `json:"candidates"`
TopK int `json:"top_k"`
}
type RerankProvider interface {
Rerank(context.Context, RerankRequest) ([]RetrievedItem, error)
}
type GenerationRequest struct {
Model string `json:"model"`
Query string `json:"query"`
Context []RetrievedItem `json:"context"`
Parameters json.RawMessage `json:"parameters,omitempty"`
}
type GenerationEvent struct {
Delta string `json:"delta,omitempty"`
Usage json.RawMessage `json:"usage,omitempty"`
Done bool `json:"done"`
}
type GenerationStream interface {
Receive(context.Context) (GenerationEvent, error)
Close() error
}
type GenerationProvider interface {
Generate(context.Context, GenerationRequest) (GenerationStream, error)
}
type SecretResolver interface {
Resolve(context.Context, string) ([]byte, error)
}
type ArtifactReader interface {
Open(context.Context, string) (io.ReadCloser, error)
}