Skip to content

Sync upstream Silo-Server/silo-plugin-sdk (3 commits) - #17

Closed
JonahMMay wants to merge 4 commits into
mainfrom
sync/upstream-2026-10-18
Closed

JonahMMay wants to merge 4 commits into
mainfrom
sync/upstream-2026-10-18

Conversation

@JonahMMay

@JonahMMay JonahMMay commented Oct 18, 2026 •

Copy link
Copy Markdown

Rebrand-aware merge of Silo-Server/silo-plugin-sdk at 6a1b575ae9 (3 upstream commits).

Land with "Create a merge commit". Never squash. The second parent is the real upstream commit; that is what keeps the next sync small.

0 files auto-resolved (hunks: theirs 0, ours 0, same 0, superset 0, import-union 0; delete-over-noise 0).

Generated files taken from upstream (the regen job rebuilds them on this branch):

  • pkg/pluginproto/prairie/plugin/v1/marker_provider.pb.go
  • pkg/pluginproto/prairie/plugin/v1/request_router.pb.go

The audit comment below lists likely compile breaks and lost Prairie lines. CI must be green, including Prairie invariants; a failing test after a sync usually means Prairie code was lost, not that the test is stale.

Summary by CodeRabbit

  • New Features

    • Marker requests can now include episode-specific IDs, titles, and numbering information, helping providers match episodes when numbering differs across catalogs.
    • Plugins can declare API keys or base URLs optional, allowing compatible hosts to support connections without those values.
    • Watch-sync providers can set batch sizes up to 1,000 events or remote-state entries in supported host versions.
  • Documentation

    • Added compatibility guidance for episode numbering, optional connection details, and watch-sync batch-size limits.

blurbery and others added 4 commits October 14, 2026 20:16
…base URL (Silo-Server#43)

* feat(requestrouter): let request routers say they need no API key or base URL

Add api_key_optional and base_url_optional to RequestRouterDescriptor. A
router that sets api_key_optional receives connections whose api_key is
empty; one that sets base_url_optional can be saved and tested without a
base URL. Unset, or an absent descriptor, keeps today's behaviour: a
connection needs both.

Closes Silo-Server#42

* fix(requestrouter): word the credential flags by what hosts enforce

Say that the admin form, not the API, refuses a server without a key or URL,
that only Fulfill, CheckStatus and ListConfigOptions skip a connection
without a key, and that httpclient needs both. Update the plugin rather than
reinstall it, so its servers stay bound. Cover base_url_optional alone and
unchanged metadata for plugins without the flags.

* docs(requestrouter): say older Silo hosts refuse a plugin binary with the flags

Silo reads a bare plugin binary's manifest strictly, so a host that predates
the flags refuses such a binary; an archive installs. Tracked in
Silo-Server/silo-server#2436.
)

Manifest validation now accepts max_batch_size from 1 to 1000 and exports
the limit as manifest.MaxWatchSyncBatchSize. The proto comment and
docs/compatibility.md state that the value bounds every ApplyEvents call
and the ListRemoteState page size, and that hosts and catalog tooling on
earlier SDKs reject values over 100.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…r providers (Silo-Server#45)

* feat(markers): send the episode's own provider IDs and title to marker providers

FetchMarkersRequest and SubmitMarkerRequest gain episode_external_ids and
episode_title. A marker provider such as TheIntroDB v4 reads season and
episode numbers in the numbering of the ID it receives, so it needs to know
which providers matched the host's episode at those numbers. Older hosts
leave the fields empty and older plugins ignore them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* feat(markers): tell marker providers whose numbering an episode follows

FetchMarkersRequest and SubmitMarkerRequest gain episode_numbering: the
external ID key ("tvdb" or "tmdb") of the provider whose numbering the
episode follows. Hosts match each metadata provider's episodes by number
alone, so an episode row usually carries both TMDB and TVDB IDs and a
plugin cannot tell from the IDs which numbering applies. The field is an
open vocabulary; an unknown value reads as empty.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
3 upstream commits since d8cb03a. Rebrand-aware merge by
Prairie-Server/.github upstream-sync/prairie_sync.py (base=rebrand(merge-base), theirs=rebrand(upstream)).
@JonahMMay

Copy link
Copy Markdown
Author

Upstream sync audit

check count
conflict markers 0
likely compile breaks: names used but declared nowhere 0
likely compile breaks: names declared twice 0
files with Prairie lines no longer present 0
Silo tokens added by the sync 0

@coderabbitai

coderabbitai Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 2b391ff1-56c4-4e71-b397-a91bebd0f707
📥 Commits

Reviewing files that changed from the base of the PR and between 3ea8c11 and 17dfe95.

⛔ Files ignored due to path filters: 3
  • pkg/pluginproto/prairie/plugin/v1/marker_provider.pb.go is excluded by !**/*.pb.go
  • pkg/pluginproto/prairie/plugin/v1/request_router.pb.go is excluded by !**/*.pb.go
  • pkg/pluginproto/prairie/plugin/v1/watch_sync_provider.pb.go is excluded by !**/*.pb.go
📒 Files selected for processing: 9
  • docs/compatibility.md
  • pkg/pluginproto/prairie/plugin/v1/marker_provider_test.go
  • pkg/pluginsdk/convert/request_router_test.go
  • pkg/pluginsdk/manifest/manifest.go
  • pkg/pluginsdk/manifest/request_router_test.go
  • pkg/pluginsdk/manifest/watch_sync_provider_test.go
  • proto/prairie/plugin/v1/marker_provider.proto
  • proto/prairie/plugin/v1/request_router.proto
  • proto/prairie/plugin/v1/watch_sync_provider.proto

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

📝 Walkthrough

The SDK adds episode identity fields to marker requests, optional API-key and base-URL flags to request-router descriptors, and raises the watch-sync batch-size limit from 100 to 1000. Tests and compatibility documentation cover the updated contracts and host-version requirements.

Changes: Marker episode identity

Layer / File(s) Summary
Marker episode request fields
proto/prairie/plugin/v1/marker_provider.proto, pkg/pluginproto/prairie/plugin/v1/marker_provider_test.go, docs/compatibility.md
Fetch and submit requests add episode external IDs, title, and numbering. Tests check field numbers, decoding of older fetch payloads, and submit-request round trips. The compatibility guide describes numbering values.

Optional request-router credentials

Layer / File(s) Summary
Credential flags and metadata handling
proto/prairie/plugin/v1/request_router.proto, pkg/pluginsdk/manifest/request_router_test.go, pkg/pluginsdk/convert/request_router_test.go, docs/compatibility.md
Request-router descriptors add api_key_optional and base_url_optional. Tests cover manifest loading, metadata conversion, and default values. The compatibility guide describes host-version behavior.

Watch-sync batch size

Layer / File(s) Summary
Batch-size limit and compatibility
pkg/pluginsdk/manifest/manifest.go, pkg/pluginsdk/manifest/watch_sync_provider_test.go, proto/prairie/plugin/v1/watch_sync_provider.proto, docs/compatibility.md
Manifest validation uses the exported maximum of 1000. Tests cover accepted and rejected boundary values. The protocol comments and compatibility guide describe the range, its use, and the host-version requirement for values above 100.

Priority: ➖ Normal

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Feature

Suggested reviewers: crowquillx, quick104

Merge Risk: ⚪ Minimal · up to 17dfe

No merge-blocking issue is established; the compatibility changes are ready for normal checks.

Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 58.82% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 17 functions across 5 files. (4 skipped: … Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly identifies the main change as synchronizing three upstream commits from Silo-Server/silo-plugin-sdk.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 58.82% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 17 functions across 5 files. (4 skipped: 4 unsupported.)

Resolution

Write docstrings for the functions missing them to satisfy the coverage threshold.

  • Fix all pre-merge checks with AI
✨ Finishing Touches: 💡 2
📝 Generate docstrings: 💡
  • Commit to this branch
  • Create a new PR
🛠️ Fix failing CI checks: 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Warning

Some tools did not complete. Review the errors below.

🔧 Buf (1.73.0)
proto/prairie/plugin/v1/marker_provider.proto

fatal: unable to access 'https://github.com/Prairie-Server/prairie-plugin-sdk.git/': Failed to connect to github.com:443 over proxy 127.0.0.1 after 0 ms: Could not connect to server
fatal: could not fetch fc429e24f543d24377c13fc06bf2a4bba9a6ad70 from promisor remote

CODERABBIT_BUF_COMPATIBILITY_PHASE=materialize-base

proto/prairie/plugin/v1/request_router.proto

fatal: unable to access 'https://github.com/Prairie-Server/prairie-plugin-sdk.git/': Failed to connect to github.com:443 over proxy 127.0.0.1 after 0 ms: Could not connect to server
fatal: could not fetch fc429e24f543d24377c13fc06bf2a4bba9a6ad70 from promisor remote

CODERABBIT_BUF_COMPATIBILITY_PHASE=materialize-base

proto/prairie/plugin/v1/watch_sync_provider.proto

fatal: unable to access 'https://github.com/Prairie-Server/prairie-plugin-sdk.git/': Failed to connect to github.com:443 over proxy 127.0.0.1 after 0 ms: Could not connect to server
fatal: could not fetch fc429e24f543d24377c13fc06bf2a4bba9a6ad70 from promisor remote

CODERABBIT_BUF_COMPATIBILITY_PHASE=materialize-base

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@JonahMMay

Copy link
Copy Markdown
Author

Superseded by #16 (refreshed to current upstream/main).

@JonahMMay JonahMMay closed this Oct 18, 2026
@JonahMMay
JonahMMay deleted the sync/upstream-2026-10-18 branch October 18, 2026 23:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants