share

package
v0.9.49 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 17, 2026 License: MIT Imports: 24 Imported by: 0

Documentation

Overview

Package share defines provider-neutral transcript sharing.

Index

Constants

View Source
const (
	DefaultCommandTimeout = 120 * time.Second
	MaxCommandTimeout     = 600 * time.Second
)
View Source
const (
	Protocol = "term-llm-share"
	Version  = 1

	ProviderGitHub ProviderID = ProviderID(gist.ProviderID)

	MaxRequestFiles      = 32
	MaxRequestFileBytes  = 16 << 20
	MaxRequestTotalBytes = 32 << 20
)

Variables

This section is empty.

Functions

func NewRequestID

func NewRequestID() string

func ValidVisibility

func ValidVisibility(visibility Visibility) bool

func ValidateCapabilities

func ValidateCapabilities(c Capabilities) error

func ValidateHelperCapabilities

func ValidateHelperCapabilities(c Capabilities) error

ValidateHelperCapabilities applies the protocol's generic validation and prevents external helpers from claiming a built-in provider identity.

func ValidateRequest

func ValidateRequest(req Request) error

func ValidateResult

func ValidateResult(result Result) error

Types

type Capabilities

type Capabilities struct {
	Protocol          string         `json:"protocol"`
	Version           int            `json:"version"`
	Provider          Provider       `json:"provider"`
	Operations        []Operation    `json:"operations"`
	Visibilities      []Visibility   `json:"visibilities"`
	DefaultVisibility Visibility     `json:"default_visibility"`
	Notes             []string       `json:"notes,omitempty"`
	Limits            map[string]any `json:"limits,omitempty"`
}

func (Capabilities) Supports

func (c Capabilities) Supports(operation Operation) bool

func (Capabilities) SupportsVisibility

func (c Capabilities) SupportsVisibility(visibility Visibility) bool

type CommandPublisher

type CommandPublisher struct {
	// contains filtered or unexported fields
}

func NewCommandPublisher

func NewCommandPublisher(argv []string, timeout time.Duration) (*CommandPublisher, error)

func (*CommandPublisher) Capabilities

func (p *CommandPublisher) Capabilities(ctx context.Context) (Capabilities, error)

func (*CommandPublisher) Create

func (p *CommandPublisher) Create(ctx context.Context, req Request) (Result, error)

func (*CommandPublisher) Update

func (p *CommandPublisher) Update(ctx context.Context, id string, req Request) (Result, error)

type Error

type Error struct {
	Code    ErrorCode `json:"code"`
	Message string    `json:"message"`
	// contains filtered or unexported fields
}

func AsError

func AsError(err error) *Error

func NewError

func NewError(code ErrorCode, message string) *Error

func (*Error) Error

func (e *Error) Error() string

func (*Error) Unwrap

func (e *Error) Unwrap() error

type ErrorCode

type ErrorCode string
const (
	ErrorDependencyMissing     ErrorCode = "dependency_missing"
	ErrorAuthRequired          ErrorCode = "auth_required"
	ErrorTimeout               ErrorCode = "timeout"
	ErrorProvider              ErrorCode = "provider_error"
	ErrorProtocol              ErrorCode = "protocol_error"
	ErrorUnsupportedVisibility ErrorCode = "unsupported_visibility"
)

type File

type File struct {
	Name      string `json:"name"`
	MediaType string `json:"media_type"`
	Role      string `json:"role"`
	Content   []byte `json:"-"`
}

func TranscriptFiles

func TranscriptFiles(files map[string]string) []File

type GitHubPublisher

type GitHubPublisher struct {
	// contains filtered or unexported fields
}

func NewGitHubPublisher

func NewGitHubPublisher() *GitHubPublisher

func (*GitHubPublisher) Capabilities

func (p *GitHubPublisher) Capabilities(context.Context) (Capabilities, error)

func (*GitHubPublisher) Create

func (p *GitHubPublisher) Create(ctx context.Context, req Request) (Result, error)

func (*GitHubPublisher) Update

func (p *GitHubPublisher) Update(ctx context.Context, id string, req Request) (Result, error)

type Operation

type Operation string
const (
	OperationCapabilities Operation = "capabilities"
	OperationCreate       Operation = "create"
	OperationUpdate       Operation = "update"
)

type Provider

type Provider struct {
	ID   ProviderID `json:"id"`
	Name string     `json:"name"`
	Help string     `json:"help,omitempty"`
}

type ProviderID

type ProviderID string

type Publisher

type Publisher interface {
	Capabilities(context.Context) (Capabilities, error)
	Create(context.Context, Request) (Result, error)
}

func NewPublisher

func NewPublisher(cfg config.ShareConfig) (Publisher, error)

type Request

type Request struct {
	RequestID   string     `json:"request_id"`
	Title       string     `json:"title"`
	Description string     `json:"description"`
	Visibility  Visibility `json:"visibility"`
	Entrypoint  string     `json:"entrypoint"`
	Files       []File     `json:"files"`
}

type Result

type Result struct {
	Provider   ProviderID `json:"provider"`
	ID         string     `json:"id"`
	URL        string     `json:"url"`
	SourceURL  string     `json:"source_url,omitempty"`
	Visibility Visibility `json:"visibility"`
	Ready      bool       `json:"ready"`
}

type Updater

type Updater interface {
	Update(context.Context, string, Request) (Result, error)
}

Updater is implemented only by publishers that can replace an existing share. Callers must also require the update operation in Capabilities.

type Visibility

type Visibility string
const (
	VisibilityPublic   Visibility = "public"
	VisibilityUnlisted Visibility = "unlisted"
	VisibilityPrivate  Visibility = "private"
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL