Documentation
¶
Overview ¶
Package connectapi exposes typed engine operations through Connect, gRPC and gRPC-Web. The host owns TLS, authenticated identity verification and lifecycle.
Index ¶
- func NewHandler(engine Engine, verify IdentityVerifier, limits Limits) (http.Handler, error)
- func NewHandlerWithOptions(engine Engine, verify IdentityVerifier, limits Limits, options HandlerOptions) (http.Handler, error)
- type AttestationEngine
- type AuditEngine
- type CalculationEngine
- type ContextEngine
- type DefinitionEngine
- type Engine
- type EvidenceEngine
- type ExtractionEngine
- type FactEngine
- type HandlerOptions
- type IdentityEngine
- type IdentityVerifier
- type IngestionEngine
- type Limits
- type MemoryEngine
- type OperationsEngine
- type RetentionEngine
- type RetrievalEngine
- type SnapshotEngine
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewHandler ¶
NewHandler registers the implemented engine services without opening sockets or starting goroutines. HTTP/2 is required for gRPC. The host must set HTTP server read, write and idle deadlines in addition to the per-RPC timeout.
func NewHandlerWithOptions ¶
func NewHandlerWithOptions(engine Engine, verify IdentityVerifier, limits Limits, options HandlerOptions) (http.Handler, error)
NewHandlerWithOptions adds injected RPC telemetry and optional traceparent extraction without modifying global providers or identity verification.
Types ¶
type AttestationEngine ¶
type AttestationEngine interface {
RecordAttestation(context.Context, model.Caller, model.AttestationRequest) (model.CommitResult, error)
RecordDelegatedAttestation(context.Context, model.Caller, model.DelegatedAttestationRequest) (model.CommitResult, error)
WithdrawAttestation(context.Context, model.Caller, model.Withdrawal) (model.CommitResult, error)
}
type AuditEngine ¶
type AuditEngine interface {
ListChanges(context.Context, model.Caller, model.ChangesQuery) (model.ChangesResult, error)
StartAuditExport(context.Context, model.Caller, model.AuditExportRequest) (model.AuditExportResult, error)
GetAuditExport(context.Context, model.Caller, model.AuditExportQuery) (model.AuditExportResult, error)
}
type CalculationEngine ¶
type CalculationEngine interface {
RecordCalculation(context.Context, model.Caller, model.CalculationReceipt) (model.CalculationRecord, error)
GetCalculationReceipt(context.Context, model.Caller, model.CalculationQuery) (model.CalculationRecord, error)
}
type ContextEngine ¶
type ContextEngine interface {
PrepareContext(context.Context, model.Caller, model.ContextRequest) (model.ContextManifest, error)
GetContextManifest(context.Context, model.Caller, model.ContextQuery) (model.ContextManifest, error)
RecordDecision(context.Context, model.Caller, model.DecisionReceipt) (model.DecisionRecord, error)
GetDecisionReceipt(context.Context, model.Caller, model.DecisionQuery) (model.DecisionRecord, error)
}
type DefinitionEngine ¶
type DefinitionEngine interface {
RegisterMemoryType(context.Context, model.Caller, model.MemoryTypeRequest) (model.CommitResult, error)
RegisterAcceptancePolicy(context.Context, model.Caller, model.PolicyRequest) (model.CommitResult, error)
RegisterPredicateVersion(context.Context, model.Caller, model.PredicateRequest) (model.CommitResult, error)
}
type Engine ¶
type Engine interface {
FactEngine
SnapshotEngine
EvidenceEngine
DefinitionEngine
AttestationEngine
MemoryEngine
IngestionEngine
ExtractionEngine
CalculationEngine
AuditEngine
RetrievalEngine
ContextEngine
IdentityEngine
OperationsEngine
RetentionEngine
}
Engine is the shared application backend required by the registered services. The public facts_engine.Engine satisfies it.
type EvidenceEngine ¶
type EvidenceEngine interface {
RegisterEvidence(context.Context, model.Caller, model.EvidenceRequest) (model.CommitResult, error)
RegisterRedactedEvidence(context.Context, model.Caller, model.RedactedEvidenceRequest) (model.CommitResult, error)
GetEvidenceMetadata(context.Context, model.Caller, model.EvidenceQuery) (model.Evidence, error)
GetEvidenceContent(context.Context, model.Caller, model.EvidenceQuery) (model.EvidenceContent, error)
}
type ExtractionEngine ¶
type ExtractionEngine interface {
ScanMemoryRefresh(context.Context, model.Caller, model.MemoryRefreshScan) (model.MemoryRefreshScanResult, error)
StartMemoryRefreshSweep(context.Context, model.Caller, model.MemoryRefreshSweepRequest) (model.CommitResult, error)
StartExtraction(context.Context, model.Caller, model.ExtractionRequest) (model.JobStatus, error)
PlanExtractionChunks(context.Context, model.Caller, model.ExtractionChunkQuery) (model.ExtractionChunkPlan, error)
GetJob(context.Context, model.Caller, model.JobQuery) (model.JobStatus, error)
RetryJob(context.Context, model.Caller, model.JobRetryRequest) (model.JobStatus, error)
GetExtractionRun(context.Context, model.Caller, model.ExtractionRunQuery) (model.ExtractionRun, error)
StartMemoryRefresh(context.Context, model.Caller, model.MemoryRefreshRequest) (model.JobStatus, error)
}
type FactEngine ¶
type FactEngine interface {
ListFacts(context.Context, model.Caller, model.FactsQuery) (model.FactsPage, error)
ListFactHistory(context.Context, model.Caller, model.HistoryPageQuery) (model.HistoryPage, error)
GetFact(context.Context, model.Caller, model.FactQuery) (model.FactResult, error)
ProposeFact(context.Context, model.Caller, model.FactProposal) (model.CommitResult, error)
ApproveFact(context.Context, model.Caller, model.Approval) (model.CommitResult, error)
AcceptFact(context.Context, model.Caller, model.Approval) (model.CommitResult, error)
RejectFact(context.Context, model.Caller, model.LifecycleChange) (model.CommitResult, error)
RetractFact(context.Context, model.Caller, model.LifecycleChange) (model.CommitResult, error)
DisputeFact(context.Context, model.Caller, model.LifecycleChange) (model.CommitResult, error)
ResolveDispute(context.Context, model.Caller, model.LifecycleChange) (model.CommitResult, error)
SupersedeFact(context.Context, model.Caller, model.Supersession) (model.CommitResult, error)
}
FactEngine is satisfied by the public Engine; handlers contain no acceptance policy.
type HandlerOptions ¶
type HandlerOptions struct {
Telemetry model.TelemetryOptions
AcceptTraceContext bool
}
HandlerOptions is opt-in, host-owned observability. Trace headers never grant identity or permissions. Only traceparent is accepted; baggage and tracestate are not extracted from requests.
type IdentityEngine ¶
type IdentityEngine interface {
PutScope(context.Context, model.Caller, model.ScopeRequest) (model.CommitResult, error)
PutSubject(context.Context, model.Caller, model.SubjectRequest) (model.CommitResult, error)
GetScope(context.Context, model.Caller, model.IdentityQuery) (model.ScopeVersion, error)
GetSubject(context.Context, model.Caller, model.IdentityQuery) (model.SubjectVersion, error)
LookupSubject(context.Context, model.Caller, model.SubjectLookupQuery) (model.SubjectVersion, error)
}
type IdentityVerifier ¶
IdentityVerifier must authenticate the peer/session or a signed gateway assertion. It must not trust caller-supplied identity headers without proof. Any initiator must be bound to a verified delegation by the host.
type IngestionEngine ¶
type IngestionEngine interface {
IngestConversation(context.Context, model.Caller, model.ConversationRequest) (model.ConversationRecord, error)
GetConversation(context.Context, model.Caller, model.ConversationQuery) (model.ConversationRecord, error)
}
type Limits ¶
type Limits struct {
Timeout time.Duration
MaxConcurrent int
MaxRequestBytes int
MaxResponseBytes int
}
Limits are required. Timeout includes identity verification and engine work; MaxConcurrent is a fail-fast admission bound, not an unbounded waiting queue.
type MemoryEngine ¶
type MemoryEngine interface {
GetMemory(context.Context, model.Caller, model.MemoryQuery) (model.MemoryResult, error)
ProposeMemory(context.Context, model.Caller, model.MemoryProposal) (model.CommitResult, error)
ApproveMemory(context.Context, model.Caller, model.Approval) (model.CommitResult, error)
AcceptMemory(context.Context, model.Caller, model.Approval) (model.CommitResult, error)
RejectMemory(context.Context, model.Caller, model.LifecycleChange) (model.CommitResult, error)
RetractMemory(context.Context, model.Caller, model.LifecycleChange) (model.CommitResult, error)
DisputeMemory(context.Context, model.Caller, model.LifecycleChange) (model.CommitResult, error)
ResolveMemoryDispute(context.Context, model.Caller, model.LifecycleChange) (model.CommitResult, error)
SupersedeMemory(context.Context, model.Caller, model.Supersession) (model.CommitResult, error)
GetMemoryVersion(context.Context, model.Caller, model.MemoryVersionQuery) (model.MemoryVersion, error)
GetMemoryHistory(context.Context, model.Caller, model.HistoryPageQuery) (model.HistoryPage, error)
ListMemories(context.Context, model.Caller, model.MemoriesQuery) (model.MemoriesPage, error)
}
type OperationsEngine ¶
type OperationsEngine interface {
GetProjectionStatus(context.Context, model.Caller, model.ProjectionStatusQuery) (model.ProjectionStatus, error)
RebuildIndex(context.Context, model.Caller, model.RebuildRequest) (model.RebuildStatus, error)
}
type RetentionEngine ¶
type RetentionEngine interface {
DisposeBatch(context.Context, model.Caller, model.DisposalBatchRequest) (model.CommitResult, error)
DisposeAttestation(context.Context, model.Caller, model.AttestationDisposalRequest) (model.CommitResult, error)
DisposeConversation(context.Context, model.Caller, model.ConversationDisposalRequest) (model.CommitResult, error)
CleanupProjection(context.Context, model.Caller, model.ProjectionCleanupRequest) (model.CommitResult, error)
DisposeVersion(context.Context, model.Caller, model.VersionDisposalRequest) (model.CommitResult, error)
DisposeExtraction(context.Context, model.Caller, model.ExtractionDisposalRequest) (model.CommitResult, error)
DisposeContext(context.Context, model.Caller, model.ContextDisposalRequest) (model.CommitResult, error)
DisposeSnapshot(context.Context, model.Caller, model.SnapshotDisposalRequest) (model.CommitResult, error)
DisposeOrphanEvidence(context.Context, model.Caller, model.OrphanEvidenceDisposalRequest) (model.CommitResult, error)
RegisterRetentionPolicy(context.Context, model.Caller, model.RetentionPolicyRequest) (model.CommitResult, error)
PlaceLegalHold(context.Context, model.Caller, model.LegalHoldRequest) (model.CommitResult, error)
ReleaseLegalHold(context.Context, model.Caller, model.ReleaseLegalHoldRequest) (model.CommitResult, error)
DisposeEvidence(context.Context, model.Caller, model.EvidenceDisposalRequest) (model.CommitResult, error)
GetRetentionStatus(context.Context, model.Caller, model.RetentionStatusQuery) (model.RetentionStatus, error)
}
type RetrievalEngine ¶
type RetrievalEngine interface {
Recall(context.Context, model.Caller, model.RecallRequest) (model.RecallResult, error)
RecallMemories(context.Context, model.Caller, model.RecallRequest) (model.MemoryRecallResult, error)
WaitForProjection(context.Context, model.Caller, model.ProjectionWaitRequest) (model.ProjectionReceipt, error)
}
type SnapshotEngine ¶
type SnapshotEngine interface {
CreateFactSnapshot(context.Context, model.Caller, model.FactSnapshotRequest) (model.FactSnapshot, error)
GetFactSnapshot(context.Context, model.Caller, model.SnapshotQuery) (model.FactSnapshot, error)
}