Repository navigation
Conversation
The README and docs/runtime-host.md list PublishEventToInstallation, ListLibraryMedia, GetCatalogStats, ResolveCatalogImageURLs, MintScopedStream and CallPluginHTTP as available, but Silo doesn't implement them, so a call that reaches the host fails with codes.Unimplemented. Split the lists into calls Silo implements and calls it only declares, note the status on the proto RPCs and the runtimehost client methods, show how to check for Unimplemented, and replace the CallPluginJSON peer example with PublishEventTo, which works today.
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configuration
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. Comment |
Silo Kody — review completeReview finished. Check the inline comments for findings and verify each suggestion against the code and tests. Reviewing changes in Silo
Review settingsReview OptionsThe following review options are enabled or disabled:
|
Silo Kody — review completeReview finished. Check the inline comments for findings and verify each suggestion against the code and tests. Reviewing changes in Silo
Review settingsReview OptionsThe following review options are enabled or disabled:
|
Problem
Closes #47
The README and
docs/runtime-host.mdlist 16 RuntimeHost calls as available, but Silo implements only 10 of them. The other six returncodes.Unimplementedon every Silo host:PublishEventToInstallationListLibraryMediaGetCatalogStatsResolveCatalogImageURLsMintScopedStreamCallPluginHTTP, and soCallPluginJSONIn silo-server,
RuntimeHostServer(internal/pluginhost/runtime_host_server.go) embedsUnimplementedRuntimeHostServerand defines only the other ten. None of the six appears anywhere in silo-server's history. The README's recommended way to call another plugin isCallPluginJSON, so an author who follows it builds something that can't work and only finds out at runtime.No plugin in the Silo-Server or Silo-Community organisations calls any of the six. That's from GitHub code search, which only covers indexed default branches.
Approach
Docs and comments only, with no contract change.
docs/runtime-host.mdlist the calls Silo implements separately from the ones the contract only declares, and show how to check forcodes.Unimplemented.runtimehostclient methods say Silo doesn't implement them yet.runtime_host_grpc.pb.gois regenerated, and only its comments change.CallPluginJSONpeer example is replaced with one that works today: find enabled peers whoseevent_consumer.v1subscribes toplugin.<your plugin_id>.<event name>, and address the event to them withPublishEventTo.ReadInstanceState,WriteInstanceStateandReportNetworkAccessStatus), so they're added, with a note thatReportNetworkAccessStatusis for network access providers only.Nothing is removed from the proto.
docs/compatibility.mdrules out removals in v1, and silo-server can implement any of the six later without a contract change.Release impact: none on the contract. The generated Go code changes only in comments, so this can go out in any release.
Downstream: none. silo-server's behaviour doesn't change, and no plugin uses the six.
Evidence
Evidence: none, no user-visible change
Validation
On cfbe887. The later dafe2ae changes only the peer example in
docs/runtime-host.md, so these still apply:go test -count=1for./pkg/pluginsdk/runtimehost/and./pkg/pluginproto/...: pass.go veton those packages: clean.go buildof all four examples: pass.buf generatewith protoc-gen-go v1.36.11 and protoc-gen-go-grpc v1.6.1: no drift from the committed code.protocisn't installed here, so I ranbuf generatedirectly instead ofmake proto.buf breakingagainst main: pass.buf lint: the same 70 findings as main.gofmt -l .: lists onlypkg/pluginsdk/runtime/scan_source_test.go, which this PR doesn't touch and which main already lists.go test ./...across the whole repo. CI runs it.Risks
Checklist
AI Disclosure
PublishEventToroutes by exact subscription, thatstatus.Codesees the client's errors, and that the generated code matches a freshbuf generatebyte for byte. It found four problems, all fixed before opening: the peer example sent to an arbitrary plugin, theGetCatalogStatssnippet didn't compile,ReportNetworkAccessStatusneeded its providers-only note, and "usePublishEventTo" needed to say it reaches every installation of the target plugin.Note
Document which RuntimeHost RPCs Silo does not implement
PublishEventToInstallation,ListLibraryMedia,GetCatalogStats,ResolveCatalogImageURLs,MintScopedStream, andCallPluginHTTP— as returning UNIMPLEMENTED, with matching comments in runtime_host.proto, the generated bindings, and SDK doc commentsMacroscope summarized dafe2ae.