Repository navigation
feat(plugins): panel-callable storage.* - #3
Merged
jondmarien merged 1 commit intoSep 5, 2026
Merged
jondmarien merged 1 commit into
jondmarien merged 1 commit into
Conversation
jondmarien
marked this pull request as ready for review
September 5, 2026 07:28
Flip panel:true on plugin-private storage.get/set/delete/keys so a worker can publish a diagnostics snapshot the owning panel can read without new verbs. Session identity still binds every call to that plugin's store; secrets and settings stay worker-only. Oversized panel results now fail the same 64 KiB envelope as inbound requests.
cursor
Bot
force-pushed
the
jondmarien/orca-2-panel-storage-e057
branch
from
September 5, 2026 07:45
07e66f9 to
b1669b9
Compare
cursor
Bot
changed the base branch from
main
to
jondmarien/orca-1-panel-settings-9606
September 5, 2026 07:46
8 of 9 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
ELI5
A plugin's sidebar panel can now read and write that plugin's own
storage.*keys. The worker can leave a log snapshot in storage; the panel can poll it. No new API verbs. Other plugins' storage stays unreachable.What Changed
panel: trueonstorage.get/storage.set/storage.delete/storage.keysinPLUGIN_HOST_API_V0(stillpluginApimajor 1, stillscope: 'plugin-private').PLUGIN_PANEL_ACTIONS, the capability gate, and the panel bridge schema all derive from that flag — no second allowlist.PANEL_MESSAGE_MAX_BYTES(64 KiB) are refused with the sameinvalid_requestas oversized inbound requests. Worker storage may still hold up to 256 KiB; the panel cannot fetch a blob that large in one call.settings.*stayspanel: false(Orca-1).secrets.*stayspanel: false.docs/reference/plugin-panel-storage.md— privacy, message budget, smoke-test steps.panel_forbiddencase moved tosecrets.get).This branch is
stablyai/orcamainfast-forwarded, then the Orca-2 change. Not opened againststablyai/orca.Why
Issue #10 Orca-2 / §2.B: panel CSP cannot
fetchplugin.log, and there is no worker→panel push. Oncestorage.*is panel-callable, a worker-writable / panel-readable diagnostics path exists without new verbs. Alternatives (host log tail, injected bootstrap) were not needed — the storage panel flags were the right surface.Linked Issue
Implements Orca-2 from jondmarien/orca-discord-presence#10
Does not close that issue (it tracks Orca-1…5).
Visual Proof
N/A — host API / admission change; no renderer chrome. Behavior is covered by unit + conformance tests. Smoke-test steps for a fork build are in the reference doc.
Testing
Verified on this branch:
pnpm tc:node— passpnpm teston plugin host / panel / storage / admission / conformance / bridge-host — 28 files, 209 tests passSmoke-test (fork build + Hello Orca)
Hello Orca already declares
storage; the worker incrementspingson Hello: Ping.devPluginPaths→examples/plugins/hello-orca; approve includingstorage.storage.get— count increments without remounting the tab.storage.set/storage.getondiagnostics.snapshotround-trips.storage.getfor the same key returns{ value: null }.secrets.get/settings.getstill returnpanel_forbidden.Privacy / message budget
pluginId. Caller-suppliedpluginIdisinvalid_request.storage.json; no cross-plugin path.storage.*.Remote / SSH / mixed versions
No new RPC opcode. Old hosts still return
panel_forbidden. Storage files live on the execution host. Additive insidepluginApi1.Out of scope
stablyai/orca(handoff later)settings.*panel flagschron0.discord-presenceplugin changesAI Disclosure
Implemented by Cursor Grok 4.6 (cloud agent). Superpowers: brainstorm → plan → TDD. Context7 quota was exceeded; design followed in-repo host API / admission / conformance patterns plus issue #10.
Review
Agent skill upstream boundary
docs/reference/agent-skill-sharing-upstream-boundary.mdand copies or mechanically translates no upstream skill-installer source, tests, fixtures, registry entries, path tables, comments, or documentation.Notes
Ensure no issues in: Security, Cross-platform support (Linux, Windows, Mac), Remote SSH, Mobile, general backwards compatibility, performance
Checklist
N/Awith reasonpnpm typecheck(node) and targeted plugin suites pass (fullpnpm lint/pnpm buildleft to CI)