Repository navigation
NEXUS-4271: Expose installed plugin status - #2754
Conversation
Co-authored-by: Codex <noreply@openai.com> Signed-off-by: Kyle Zemek <kylez@squareup.com>
Co-authored-by: Codex <noreply@openai.com> Signed-off-by: Kyle Zemek <kylez@squareup.com>
Signed-off-by: Kyle Zemek <kylez@squareup.com> Co-authored-by: Codex <noreply@openai.com>
kalvinnchau
left a comment
There was a problem hiding this comment.
🤖 Two public API contract-completeness items. No runtime or security defect was established.
Co-authored-by: Codex <noreply@openai.com> Signed-off-by: Kyle Zemek <kylez@squareup.com>
Signed-off-by: Kyle Zemek <kylez@squareup.com> Co-authored-by: Codex <noreply@openai.com>
kazemek21
left a comment
There was a problem hiding this comment.
This review summary refers to the two public API contract comments in review 5797552752. I addressed the documentation request in the authoring guide and architecture reference. I am declining the separate alias export: it would require editing the out-of-scope FOUNDATION author entrypoint, while callers can derive the public method's status type with ReturnType<PluginInstaller["getInstallationStatus"]>. The two inline threads contain the specific dispositions and are resolved; verified at HEAD 0c1bd10. Reopen if you would like me to reconsider.
— Posted by Codex (gpt-6-luna) on behalf of kylez
…leanup * origin/main: feat(agents): let app-hosted agents read their owner's channels and members (#2745) NEXUS-4271: Expose installed plugin status (#2754) fix(menu): stop clipping lifecycle actions behind a hidden scrollbar (#2716) feat(agents): give approved external apps the selected agent's full Buzz tools (#2707) AIDA-2549: Keep Claude settings drafts in sync (#2841) fix(channels): keep a channel's side panels open when returning to it (#2838) fix(builderlab): clarify remote-agent account availability (#2764) fix(sidebar): rename Remove from Team to Close conversation (#2845) perf(channels): cut header and name-matching work in large channels (#2726) fix(browser): silence a browser page once its tab goes away (#2721) Community Mesh: shared compute plugin (including agent type) (#941) perf(relay): cut main-thread work from profile updates (#2730) fix(composer): lead the channel placeholder with its sidebar icon (#2829) test(activity): scope preview assertions to the request row (#2843) perf(search): fold people names once across palette keystrokes (#2570) fix(github): keep PR watches running when localStorage is full (#2699) Make drafts and sent part of Messages (#2728) fix(canvas): render every Canvas within the save limit (#2839) # Conflicts: # .github/workflows/release.yml
…ime-hint * upstream/main: ci: give the native job room for a cold Rust cache (block#2867) fix(pairing): refuse unknown communities natively and name the requesting process (block#2835) Add per-interest Attention pause and management controls (block#2847) feat(drafts): show where unsent drafts wait (block#2853) feat(agents): let app-hosted agents read their owner's channels and members (block#2745) NEXUS-4271: Expose installed plugin status (block#2754) fix(menu): stop clipping lifecycle actions behind a hidden scrollbar (block#2716) feat(agents): give approved external apps the selected agent's full Buzz tools (block#2707) AIDA-2549: Keep Claude settings drafts in sync (block#2841) fix(channels): keep a channel's side panels open when returning to it (block#2838) fix(builderlab): clarify remote-agent account availability (block#2764) fix(sidebar): rename Remove from Team to Close conversation (block#2845) perf(channels): cut header and name-matching work in large channels (block#2726) fix(browser): silence a browser page once its tab goes away (block#2721) Community Mesh: shared compute plugin (including agent type) (block#941) perf(relay): cut main-thread work from profile updates (block#2730) fix(composer): lead the channel placeholder with its sidebar icon (block#2829) test(activity): scope preview assertions to the request row (block#2843) perf(search): fold people names once across palette keystrokes (block#2570) fix(github): keep PR watches running when localStorage is full (block#2699) Signed-off-by: Cheng Peng <cheng@block.xyz> Co-authored-by: Cursor <cursoragent@cursor.com>
…ions-literal-markdown * upstream/main: (38 commits) fix(composer): let Option+Up/Down switch conversations from an empty composer (block#2832) fix(reactions): Scope timed reactions to the selected video (block#2796) fix(communities): name what the Join dialog is doing instead of "Working…" (block#2822) docs(agents): explain the per-conversation MCP cost of Claude agents (block#2683) fix(avatars): keep unsaved avatar drafts and focus, and validate the URL late (block#2714) fix(agents): offer stream and forum connection setup only to channel members (block#2749) Describe Attention as what the agent does, not its tools (block#2865) Let a local Codex agent join its owner's huddle by voice (block#2321) ci: give the native job room for a cold Rust cache (block#2867) fix(pairing): refuse unknown communities natively and name the requesting process (block#2835) Add per-interest Attention pause and management controls (block#2847) feat(drafts): show where unsent drafts wait (block#2853) feat(agents): let app-hosted agents read their owner's channels and members (block#2745) NEXUS-4271: Expose installed plugin status (block#2754) fix(menu): stop clipping lifecycle actions behind a hidden scrollbar (block#2716) feat(agents): give approved external apps the selected agent's full Buzz tools (block#2707) AIDA-2549: Keep Claude settings drafts in sync (block#2841) fix(channels): keep a channel's side panels open when returning to it (block#2838) fix(builderlab): clarify remote-agent account availability (block#2764) fix(sidebar): rename Remove from Team to Close conversation (block#2845) ... Signed-off-by: Cheng Peng <cheng@block.xyz> Co-authored-by: Cursor <cursoragent@cursor.com>
TL;DR
Expose read-only installed-plugin status through
pluginInstaller, with subscriptions tied to the calling plugin’s lifetime. The status distinguishes installed, absent, and unavailable without changing install behavior.Scope
The service reads manifest IDs from the manager catalog, regardless of enabled state or plugin source. Loading or recovery reports
unavailable; a ready catalog without the ID reportsabsent. This native prerequisite does not change Marketplace UI, package/profile data, or grant management authority.Testing
No manual UI testing; this change adds a service API and does not alter a visible flow.
Fixes NEXUS-4271
Generated with Codex (gpt-6-luna) on behalf of kylez.