package source import "encoding/json" type SourceDocument struct { ID string `json:"id"` Kind string `json:"kind"` Format string `json:"format"` Digest string `json:"digest"` Units []SourceUnit `json:"units"` Metadata map[string]any `json:"metadata,omitempty"` } type SourceUnit struct { ID int `json:"id"` Kind string `json:"kind"` Text string `json:"text"` Ref SourceRef `json:"ref"` Metadata map[string]any `json:"metadata,omitempty"` } type SourceRef struct { SourceID string `json:"source_id"` StartUnitID int `json:"start_unit_id"` EndUnitID int `json:"end_unit_id"` } type ChunkAnnotations map[string]json.RawMessage type ChunkPlan struct { SourceDigest string `json:"source_digest"` Ranges []ChunkRange `json:"ranges"` Annotations ChunkAnnotations `json:"annotations,omitempty"` } type ChunkRange struct { StartUnitID int `json:"start_unit_id"` EndUnitID int `json:"end_unit_id"` Annotations ChunkAnnotations `json:"annotations,omitempty"` } type Chunk struct { ID string `json:"id"` SourceID string `json:"source_id"` Index int `json:"index"` Ref SourceRef `json:"ref"` Content []byte `json:"-"` MediaType string `json:"media_type"` Units []SourceUnit `json:"units"` Metadata map[string]any `json:"metadata,omitempty"` Annotations ChunkAnnotations `json:"annotations,omitempty"` PlanAnnotations ChunkAnnotations `json:"plan_annotations,omitempty"` }