Versions in this module Expand all Collapse all v0 v0.3.7 Nov 10, 2026 v0.3.6 Nov 9, 2026 v0.3.5 Nov 7, 2026 v0.3.4 Nov 5, 2026 v0.3.3 Nov 4, 2026 Changes in this version + const CallsCap + const EventCollectionRebuilt + const EventLogMaxAge + const EventPlaybackCompleted + const EventPlaybackError + const EventPlaybackFailover + const EventPlaybackPaused + const EventPlaybackResumed + const EventPlaybackStarted + const EventPlaybackStopped + const EventServerHealth + const EventTitleAvailable + const EventViewerAccess + const EventViewerAdded + const KVQuotaBytes + const LogsCap + const MaxFetchBytes + const OutboxCap + const Protocol + const RelayPublicPrefix + const StremioChannelsKey + var AddonCapabilities = []Capability + var ErrAlreadyInstalled = errors.New("plugins: already installed") + var ErrDigestMismatch = errors.New("plugins: artifact digest does not match") + var ErrDisabled = errors.New("plugins: plugin is disabled") + var ErrFetchFailed = errors.New("plugins: request failed") + var ErrNoAddon = errors.New("plugins: this plugin is not bound to an add-on") + var ErrNoAddonLink = errors.New("plugins: this plugin has no add-on link") + var ErrNoRuntime = errors.New("plugins: no runtime registered for this plugin") + var ErrNotFound = errors.New("plugins: not found") + var ErrPermissionDenied = errors.New("plugins: permission denied") + var ErrQuotaExceeded = errors.New("plugins: storage quota exceeded") + var ErrRevoked = errors.New("plugins: plugin was revoked") + var ErrShadow = errors.New("plugins: write recorded in shadow mode") + var ErrStreamUnsupported = errors.New("plugins: runtime does not support streaming") + var ErrUnavailable = errors.New("plugins: host service unavailable") + var KnownEvents = map[string]bool + var ReservedCapabilities = map[Capability]bool + func AddonResult(resp Response) (json.RawMessage, error) + func CollectionPluginID(ctx context.Context) string + func CompareSemVer(a, b string) int + func DeadlineFor(path string) time.Duration + func DescriptorsFor(man Manifest) []extend.Descriptor + func FetchResult(resp FetchResponse) map[string]any + func HotLimits(m Manifest) wasm.Limits + func IsGitHubURL(raw string) bool + func LintCopy(s string, max int) string + func LintSettingsSchema(raw json.RawMessage) error + func NonSecretSettings(settings map[string]any, schema json.RawMessage, declaredSecrets []string) map[string]any + func NormalizeNotify(kind string) string + func NormalizePlayback(kind, state string) string + func ParamFieldsFromList(pluginID string, fields []ListParamField) ([]extend.ParamField, string) + func ParseSemVer(v string) ([3]int, bool) + func PermissionDiff(cur, next Manifest) []string + func PermissionSheet(man Manifest) (lines []string, needsViewers, needsFolders bool) + func PkgDigest(files map[string][]byte) string + func StremioCatalogKey(c StremioCat) string + func StremioInstallID(link string) (id, base string, err error) + func ToolName(plugin, name string) string + type AddonCat struct + ID string + Key string + Name string + Type string + type AddonConfig struct + Configurable bool + Configured bool + Fields []AddonConfigField + Host string + Layer string + Required bool + type AddonConfigChange struct + Link string + Values map[string]any + type AddonConfigField struct + Group string + Key string + Kind string + Label string + Options []AddonConfigOption + Required bool + Set bool + Summary string + Value any + type AddonConfigOption struct + Label string + Value string + type AddonConfigResult struct + Added []string + Name string + Problems []string + Removed []string + Roles []string + Sample string + type AddonFetcher struct + func (f AddonFetcher) Fetch(ctx context.Context, route string, limit int64) ([]byte, error) + type AddonInstall struct + Exclusive bool + Link string + Name string + Offline []string + Roles []Capability + type AddonPreview struct + AlreadyInstalled bool + Catalogs []AddonCat + ConfigureFirst bool + Description string + Host string + ID string + Logo string + Name string + Roles []RoleState + Version string + type Author struct + Name string + URL string + type Backends struct + CatalogGet func(ctx context.Context, id string) (json.RawMessage, error) + CatalogSearch func(ctx context.Context, query string, limit, offset int) (json.RawMessage, error) + CollectionsDelete func(ctx context.Context, doc json.RawMessage) error + CollectionsUpsert func(ctx context.Context, doc json.RawMessage) (previous json.RawMessage, err error) + Notice func(text string) + SetWatchState func(ctx context.Context, viewerID int64, titleID string, watched bool) (previous bool, err error) + ViewerHistory func(ctx context.Context, viewerID int64, limit, offset int) (json.RawMessage, error) + ViewerNames func(ctx context.Context, ids []int64) (json.RawMessage, error) + type CallRecord struct + Created time.Time + Error string + ID int64 + MS int64 + Method string + Plugin string + Request string + Response string + Route string + Status int + type CandidateFacts struct + AudioChannels string + AudioCodecs []string + Cached bool + ClientCaps ClientCaps + Group string + HDR []string + Indexer string + Languages []string + Name string + Protocol string + ReleaseID string + ReleaseType string + Resolution string + Size int64 + SourceClass string + Subtitles []string + Verified bool + VideoCodec string + type Capability string + const CapDebridProvider + const CapEvents + const CapListSource + const CapLiveTV + const CapMarkers + const CapMetadata + const CapNotify + const CapPluginDirectory + const CapRankingStep + const CapRuleCondition + const CapStreamSource + const CapSubtitles + const CapTools + const CapUI + type Catalogue interface + Resolve func(ctx context.Context, idOrURL, version string) (CatalogueArtifact, error) + type CatalogueArtifact struct + Capabilities []Capability + ID string + Kind Kind + Permissions Permissions + SHA256 string + URL string + Version string + type ChannelsMeta struct + Refresh string + Test bool + type ClientCaps struct + Codecs []string + HDR []string + MaxHeight int + type CollectionInputError struct + Message string + func (e *CollectionInputError) Error() string + type CommandMeta struct + Action string + Key string + Label string + type Contributes struct + Channels *ChannelsMeta + Commands []CommandMeta + Directories []DirectoryMeta + Events *EventsMeta + Integration *IntegrationMeta + ListSources []ListSourceMeta + Markers *MarkersMeta + Metadata *MetadataMeta + Notification *NotificationMeta + Pages []PageMeta + RankingSteps []RankingStepMeta + RuleConditions []RuleConditionMeta + Slots []SlotMeta + Source *SourceMeta + Subtitles *SubtitlesMeta + Tools []ToolMeta + type Deps struct + Backends Backends + Bus clusterbus.Bus + CheckPackage func(context.Context, []byte, map[string][]byte) error + DB *sql.DB + FetchClient *http.Client + IsLeader func() bool + Logger *slog.Logger + Notifications *notify.Service + Now func() time.Time + Registry *extend.Registry + Sealer config.FieldSealer + Tools *tools.Catalogue + type Detail struct + AddedPermissions []string + HealthDetail Health + Impact struct{ ... } + Manifest Manifest + Permissions struct{ ... } + Privacy struct{ ... } + type DirectoryEntry struct + Description string + ID string + ManifestURL string + Name string + Unsupported string + Version string + type DirectoryMeta struct + Key string + Label string + type DirectoryResult struct + Entries []DirectoryEntry + type EtherBlock struct + Author Author + Capabilities []Capability + Cluster string + Contributes Contributes + Health HealthDecl + Icon string + Kind Kind + License string + Permissions Permissions + Protocol int + Repo string + Runtime RuntimeDecl + Schedule []ScheduleEntry + Settings json.RawMessage + Stremio bool + Strings map[string]json.RawMessage + Summary string + type Event struct + At time.Time + ID string + Name string + Payload json.RawMessage + ViewerID int64 + type EventsMeta struct + Subscribe []string + type FetchRequest struct + Body []byte + Headers map[string]string + Method string + URL string + type FetchResponse struct + Body []byte + Headers map[string]string + Status int + type FieldError struct + Field string + Message string + type FolderEntry struct + Dir bool + Mtime int64 + Name string + Path string + Size int64 + type Grants struct + Folders []string + LAN bool + Revoked []string + Viewers []int64 + type Health struct + Drops int64 + EgressBytes int64 + Failures []int64 + LastError string + LastOK time.Time + NextRetry time.Time + Observed map[string]int + RankingSkipped int64 + RankingSkippedAt time.Time + Reason string + Restarts int64 + Slow int64 + Status string + type HealthDecl struct + Interval string + type Host interface + CatalogGet func(ctx context.Context, id string) (json.RawMessage, error) + CatalogSearch func(ctx context.Context, query string, limit, offset int) (json.RawMessage, error) + CollectionsUpsert func(ctx context.Context, collection json.RawMessage) error + FoldersList func(ctx context.Context, root, path string) ([]FolderEntry, error) + FoldersStat func(ctx context.Context, root, path string) (FolderEntry, error) + HTTPFetch func(ctx context.Context, req FetchRequest) (FetchResponse, error) + KVDelete func(ctx context.Context, key string) error + KVGet func(ctx context.Context, key string) ([]byte, bool, error) + KVList func(ctx context.Context, prefix string) ([]string, error) + KVPut func(ctx context.Context, key string, value []byte) error + Log func(ctx context.Context, level, msg string, attrs map[string]any) error + NotifyOwner func(ctx context.Context, text string) error + SecretGet func(ctx context.Context, name string) (string, error) + SetWatchState func(ctx context.Context, viewerID int64, titleID string, watched bool) error + Settings func(ctx context.Context) (map[string]any, error) + ViewerGranted func(ctx context.Context) (json.RawMessage, error) + ViewerHistory func(ctx context.Context, viewerID int64, limit, offset int) (json.RawMessage, error) + type HotBudgets struct + PerBatch time.Duration + PerCandidate time.Duration + func EffectiveBudgets(lim wasm.Limits) HotBudgets + type HotOutcome struct + Duration time.Duration + MemoHits int + Slow int + Status string + Trap bool + Units int64 + func (o HotOutcome) Timeout() bool + type HotRuntime interface + Budgets func() HotBudgets + CondMatch func(ctx context.Context, cand CandidateFacts, operator string, ...) (match bool, out HotOutcome, err error) + HasCondMatch func() bool + HasRankKey func() bool + RankBatch func(ctx context.Context, cands []CandidateFacts, config json.RawMessage) (keys []int64, out HotOutcome, err error) + type InstallOptions struct + AcceptAddedPermissions bool + AutoUpdate bool + Grants Grants + Settings map[string]any + Shadow bool + type Installed struct + Files func(path string) ([]byte, bool) + Host Host + ID string + Manifest Manifest + SourceURL string + type IntegrationMeta struct + Adds []string + Category string + Connect string + Logo string + Test bool + type JournalEntry struct + Created time.Time + Detail string + ID int64 + Inverse json.RawMessage + Op string + Plugin string + Shadow bool + Undone bool + type Kind string + const KindExtension + const KindIntegration + const KindLiveTVSource + const KindNotificationChannel + const KindSource + type ListParamField struct + Default any + Help string + Hint string + Key string + Kind string + Label string + Name string + Options []struct{ ... } + Placeholder string + Required bool + func ParseListParamFields(raw json.RawMessage) []ListParamField + type ListSourceMeta struct + Catalog string + Hint string + Key string + Label string + MaxItems int + Params json.RawMessage + Refresh string + type Manager struct + func New(deps Deps) (*Manager, error) + func (m *Manager) Addon(rec Record) stremio.Addon + func (m *Manager) AddonConfig(ctx context.Context, id string) (AddonConfig, error) + func (m *Manager) AddonConfigPage(ctx context.Context, id string) (string, error) + func (m *Manager) AddonFetch(ctx context.Context, id, route string) (Response, error) + func (m *Manager) AddonLink(ctx context.Context, id string) (string, error) + func (m *Manager) AddonLinkConfigPage(link string) (string, error) + func (m *Manager) ApplyUpdate(ctx context.Context, id string, acceptAdded bool) (Record, error) + func (m *Manager) BrowseDirectory(ctx context.Context, plugin, key string) (DirectoryResult, error) + func (m *Manager) Call(ctx context.Context, pluginID string, req Request) (Response, error) + func (m *Manager) CallStream(ctx context.Context, pluginID string, req Request) (Response, io.ReadCloser, error) + func (m *Manager) CheckHealth(ctx context.Context, id string) (Health, error) + func (m *Manager) CheckUpdate(ctx context.Context, id string) (*Preview, bool, error) + func (m *Manager) Configure(ctx context.Context, id string, incoming map[string]any) (map[string]string, error) + func (m *Manager) DeliverOutbox(ctx context.Context, pluginID string) error + func (m *Manager) FetchPickedSubtitle(ctx context.Context, plugin, title, subtitle, token, rawURL string) ([]byte, error) + func (m *Manager) Fetcher(plugin string) AddonFetcher + func (m *Manager) Get(ctx context.Context, id string) (Record, error) + func (m *Manager) GetSettings(ctx context.Context, id string) (map[string]any, json.RawMessage, error) + func (m *Manager) GrantsOf(ctx context.Context, id string) (Grants, error) + func (m *Manager) Handler() http.Handler + func (m *Manager) HealthOf(ctx context.Context, id string) (Health, error) + func (m *Manager) HostFor(pluginID string) Host + func (m *Manager) Hot(ctx context.Context, pluginID string) (HotRuntime, bool) + func (m *Manager) HotReady(pluginID string) (HotRuntime, bool) + func (m *Manager) Install(ctx context.Context, p *Preview, opts InstallOptions) (Record, error) + func (m *Manager) InstallAddon(ctx context.Context, in AddonInstall) (Record, error) + func (m *Manager) Journal(ctx context.Context, id string, limit int, shadowOnly bool) ([]JournalEntry, error) + func (m *Manager) List(ctx context.Context) ([]Record, error) + func (m *Manager) MintSubtitlePick(plugin, title, subtitle string) (string, error) + func (m *Manager) MintSubtitleURLPick(plugin, title, subtitle, rawURL string) (string, error) + func (m *Manager) OnRemove(fn func(ctx context.Context, id string)) + func (m *Manager) OnSync(fn func(ctx context.Context, r Record)) + func (m *Manager) Options(ctx context.Context, id, field string) (json.RawMessage, error) + func (m *Manager) PackageFiles(ctx context.Context, id string) (map[string][]byte, error) + func (m *Manager) PluginSettings(ctx context.Context, pluginID string) (map[string]any, error) + func (m *Manager) PreviewCatalogGet(ctx context.Context, id string) (json.RawMessage, bool, error) + func (m *Manager) PreviewCatalogSearch(ctx context.Context, query string, limit, offset int) (json.RawMessage, bool, error) + func (m *Manager) PreviewFetch(ctx context.Context, network []string, req FetchRequest) (FetchResponse, error) + func (m *Manager) PreviewInstall(ctx context.Context, src Source) (*Preview, error) + func (m *Manager) Publish(ctx context.Context, ev Event) + func (m *Manager) RecordFailure(ctx context.Context, pluginID, reason string) + func (m *Manager) RecordRanking(ctx context.Context, pluginID string, r RankingReport) + func (m *Manager) RecordSlow(ctx context.Context, pluginID string, n int) + func (m *Manager) RegisterRuntime(kind string, f RuntimeFactory) + func (m *Manager) RelayHandler() http.Handler + func (m *Manager) Remove(ctx context.Context, id string, undoFirst bool) error + func (m *Manager) ResolveText(ctx context.Context, plugin, key, locale string) (string, bool) + func (m *Manager) Revoke(ctx context.Context, id, reason string) (bool, error) + func (m *Manager) Rollback(ctx context.Context, id string) (Record, error) + func (m *Manager) Run(ctx context.Context) + func (m *Manager) SaveAddonConfig(ctx context.Context, id string, ch AddonConfigChange) (Record, error) + func (m *Manager) SetCatalogue(c Catalogue) + func (m *Manager) SetEnabled(ctx context.Context, id string, enabled bool) error + func (m *Manager) SetGrants(ctx context.Context, id string, g Grants) error + func (m *Manager) SetRoles(ctx context.Context, id string, off []Capability) (Record, error) + func (m *Manager) SetShadow(ctx context.Context, id string, shadow bool) error + func (m *Manager) SettingsSchema(ctx context.Context, id string) (json.RawMessage, error) + func (m *Manager) Start(ctx context.Context) error + func (m *Manager) StremioResource(ctx context.Context, plugin, resource, typ, id string, extra map[string]string) (Response, error) + func (m *Manager) SubscribeInvalidations() func() + func (m *Manager) Test(ctx context.Context, id string) (TestResult, error) + func (m *Manager) TestAddonConfig(ctx context.Context, id string, ch AddonConfigChange) (AddonConfigResult, error) + func (m *Manager) TextResolver() extend.TextResolver + func (m *Manager) UndoAll(ctx context.Context, pluginID string) (int, error) + func (m *Manager) UndoSince(ctx context.Context, pluginID string, since int64) (int, error) + type Manifest struct + AddonCatalogs []StremioCat + Background string + BehaviorHints stremio.BehaviorHints + Catalogs []StremioCat + Description string + Ether *EtherBlock + ID string + IDPrefixes []string + Logo string + Name string + Resources stremio.Resources + Types []string + Version string + func ParseManifest(raw []byte) (Manifest, error) + func (m *Manifest) UnmarshalJSON(b []byte) error + func (m Manifest) AcceptsResource(name, typ, id string) bool + func (m Manifest) AddonRoles() []Capability + func (m Manifest) CatalogsOfType(typ string) []StremioCat + func (m Manifest) ConfigurationRequired() bool + func (m Manifest) EffectiveEther() *EtherBlock + func (m Manifest) HasCapability(c Capability) bool + func (m Manifest) HasResource(name string) bool + func (m Manifest) IsStremioOnly() bool + func (m Manifest) RuntimeKind() string + func (m Manifest) Serves(name, typ string) bool + func (m Manifest) ServesTV() bool + func (m Manifest) SpeaksStremio() bool + func (m Manifest) Stremio() stremio.Manifest + func (m Manifest) Validate() error + type MarkersMeta struct + Kinds []string + type MetadataMeta struct + Types []string + type NotificationMeta struct + Fields json.RawMessage + Formats []string + MaxLength int + SendTest bool + type PageMeta struct + Group string + Icon string + Key string + Label string + Route string + type PermissionIncreaseError struct + Added []string + func (e *PermissionIncreaseError) Error() string + type Permissions struct + Catalog string + Collections string + Folders string + Network []string + Secrets []string + Viewers ViewerPerms + type Preview struct + AddedPermissions []string + AlreadyInstalled bool + InstalledVersion string + Manifest Manifest + NeedsFolders bool + NeedsViewers bool + PermissionLines []string + StremioOnly bool + Verified bool + type RankingReport struct + Ranked int + Skipped int + Slow int + type RankingStepMeta struct + Budget json.RawMessage + DefaultPosition int + Editor json.RawMessage + Hint string + Key string + Label string + type Record struct + AutoUpdate bool + Enabled bool + ID string + InstalledAt time.Time + Kind string + Manifest Manifest + ManifestRaw json.RawMessage + Name string + PrevVersion string + RolesOff []Capability + Shadow bool + SourceKind string + SourceURL string + UpdateVersion string + UpdatedAt time.Time + Verified bool + Version string + type Request struct + Body json.RawMessage + Headers map[string]string + Locale string + Method string + Path string + PluginID string + Query map[string]string + type Response struct + Body json.RawMessage + Headers map[string]string + Status int + type RoleState struct + On bool + Role Capability + type RuleConditionMeta struct + Editor json.RawMessage + Key string + Label string + Operators []string + type Runtime interface + Call func(ctx context.Context, req Request) (Response, error) + Close func() error + type RuntimeDecl struct + Entry string + Kind string + Module string + type RuntimeFactory func(inst Installed) (Runtime, error) + func HostedRuntimeFactory(eng *wasm.Engine) RuntimeFactory + type ScheduleEntry struct + Call string + Every string + type SlotMeta struct + Action string + Key string + Label string + Route string + Slot string + type Source struct + Files map[string][]byte + ID string + Kind string + LAN bool + Manifest json.RawMessage + Pkg []byte + SHA256 string + URL string + Verified bool + Version string + type SourceMeta struct + Abilities []string + Class string + Limits json.RawMessage + type StremioCat = stremio.Catalog + type StremioExtra = stremio.Extra + type SubtitlesMeta struct + Formats []string + Languages json.RawMessage + type Summary struct + AutoUpdate bool + Capabilities []string + Enabled bool + Health string + HealthReason string + Host string + ID string + Icon string + InstalledAt int64 + Kind string + Name string + PrevVersion string + Roles []RoleState + Shadow bool + SourceKind string + StremioOnly bool + Summary string + UpdateVersion string + Verified bool + Version string + type TestResult struct + Details []string + Message string + OK bool + type ToolMeta struct + Description string + Destructive bool + InputSchema json.RawMessage + Name string + OpenWorld bool + ReadOnly bool + Title string + type ValidationError struct + Fields []FieldError + func (e *ValidationError) Error() string + type ViewerPerms struct + Identity string + WatchHistory string + WriteWatchState string