Commit graph

2 commits

Author SHA1 Message Date
Anish Sarkar
d8aa0f5305 feat(plugins): serve plugins without sessions, and let Stop end their calls on any copy
The plugin host serves MCP without sessions, so any copy answers any request
and Azure can add copies on load. opencode cancels with a message no such
copy can match, so each turn gives plugins on the plugin host a token for
the thread, and the app's Stop calls the host's POST /cancel with it and the
license; Redis passes it to the copy running the call, whose response ends
with Request cancelled. PLUGINS limits a container to some plugins, as one
split out of the shared container runs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 00:26:53 +05:30
Anish Sarkar
8d85b6f544 feat(plugins): serve SurfSense's plugins from one host, a paid one behind the license
plugins/remote/host mounts each plugin folder's MCP server at /<id>/mcp and
answers /health; without proprietary/ it serves only the Apache-2.0 plugins.
A plugin's access hook runs before its server sees a request, and
proprietary/license_check applies contract 2 with Keygen's validate-key: a
five-minute cache, a day's grace while Keygen is down, and 401, 403 or 503
otherwise. The check is license_check/, since license/ beside LICENSE is one
path on macOS and Windows. CI checks plugins/remote/ on its own.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 22:40:00 +05:30