Skip to content

feat(agent-config): plugin tabs and add-plugin dialog [18/21] - #339

Merged
gusfcarvalho merged 2 commits into
agent-config/17-plugin-cardfrom
agent-config/18-plugin-tabs
Oct 6, 2026
Merged

gusfcarvalho merged 2 commits into
agent-config/17-plugin-cardfrom
agent-config/18-plugin-tabs

Conversation

@gusfcarvalho

@gusfcarvalho gusfcarvalho commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

Part 18 of 21 of the stacked split of #318 (agent remote configuration). Every layer adds the final version of its files from #318, and only imports from layers below it, so each layer passes make reviewable on its own. Nothing is reachable in the app until layer 20 wires the Configuration tab in.

What

Plugin tabs in the Effective view, the add-plugin action/dialog (gated on what reporting instances support) and AgentConfigEffectiveView.

Tests

Specs for the Effective view and plugin library version.

Size exception

This PR is over the 1k-line limit (about 1,100 lines, package-lock excluded) and carries the size-exception label. Fixes from the stack's review (plugin lookups by own name, Add plugin refusing names the saved overlay defines, Add plugin and the Effective view waiting for every instance file with a Retry) change components this layer introduces, and their regression spec (PluginTabsWorkspace.spec.ts) needs those components, so neither can move to another layer.

🤖 Generated with Claude Code

Copilot AI balanced review requested due to automatic review settings October 5, 2026 10:52
@coderabbitai

coderabbitai Bot commented Oct 5, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 59 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 2972ba05-ed6f-4293-a3cb-9ef011ea71c4
📥 Commits

Reviewing files that changed from the base of the PR and between feadb4f and c5da8fa.

📒 Files selected for processing (7)
  • src/components/agents/config/AgentConfigEffectiveView.vue
  • src/components/agents/config/PluginTabs.vue
  • src/components/agents/config/__tests__/AgentConfigEffectiveView.spec.ts
  • src/components/agents/config/__tests__/PluginLibVersion.spec.ts
  • src/components/agents/config/__tests__/PluginTabsWorkspace.spec.ts
  • src/components/agents/config/editor/AddPluginAction.vue
  • src/components/agents/config/editor/AddPluginDialog.vue
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

Plugin-name collisions and inherited-property lookups can produce incorrect configuration behavior, and the add-plugin flow lacks coverage.

Review effort: Balanced
Findings: 3 Medium severity · 1 Low severity

Open (4)
What changed in this PR

Adds the Effective configuration view’s plugin tabs, plugin metadata, and gated add-plugin workflow.

Changes:

  • Adds tabbed plugin summaries and pending-state indicators.
  • Adds access-aware plugin creation and validation.
  • Adds Effective view and plugin library badge tests.
File Description
PluginTabs.vue Implements plugin tabs and add-plugin flow.
AddPluginDialog.vue Adds plugin input and access validation.
AddPluginAction.vue Adds access-gated action button.
AgentConfigEffectiveView.vue Composes Effective configuration summaries.
PluginLibVersion.spec.ts Tests plugin library badges.
AgentConfigEffectiveView.spec.ts Tests Effective view rendering and sanitization.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +118 to +119
const basePlugin = props.base?.plugins?.[name];
if (v === null && basePlugin && !(name in eff)) {
const effDraft = ws?.draft.effectiveDraft.value.plugins ?? {};
if (card.pendingNew) {
hints.push({ key: 'new', label: 'new', severity: 'info' });
} else if (pending && !card.removed && !effDraft[card.name]) {
Comment on lines +228 to +233
const existingPluginNames = computed(() => {
const names = new Set(props.cards.map((c) => c.name));
for (const b of ws?.bases.value ?? [])
Object.keys(b.plugins ?? {}).forEach((n) => names.add(n));
return Array.from(names);
});
Comment on lines +103 to +107
<AddPluginDialog
v-if="canAddPlugin"
v-model:visible="addPluginOpen"
:existing="existingPluginNames"
@add="addPlugin"
ianmiell
ianmiell previously approved these changes Oct 6, 2026

@ianmiell ianmiell left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ccf-review: APPROVE

1 Should-fix.

Stack (gh stack 343): #322 → #323 → #324 → #325 → #326 → #327 → #328 → #329 → #330 → #331 → #332 → #333 → #334 → #335 → #336 → #337 → #338 → #339 → #340 → #341 → #342

>
{{ scheduleError }}
</p>
<p v-else-if="schedule" class="mt-1 text-xs text-gray-500">

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Should-fix] UI-COMP-001 · Component convention not followed

Introduced in #339. text-gray-400/text-gray-500 with no dark: variant; 745 of 823 such class attributes in the repo pair them with dark:text-slate-*.

Why: Mixed patterns make components harder to maintain; there are no auto-imports.
Fix: Add the matching dark:text-slate-400/dark:text-slate-500 variant, as the neighbouring components do.

ccf-review · edbd0ded8977 · rules@6be9e11b8bc6

ianmiell
ianmiell previously approved these changes Oct 6, 2026

@ianmiell ianmiell left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ccf-review: APPROVE

no findings.

Stack (gh stack 343): #322 → #323 → #324 → #325 → #326 → #327 → #328 → #329 → #330 → #331 → #332 → #333 → #334 → #335 → #336 → #337 → #338 → #339 → #340 → #341 → #342

gusfcarvalho and others added 2 commits October 6, 2026 12:14
Layer 18 of 21 in the stacked split of #318.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… a defined plugin

- the tab's removal hint and the "Removed by overlay" card read plugins
  as own properties (getOwn), so a plugin named "constructor" is
  matched like any other
- Add plugin refuses every name the saved overlay or the draft defines
  (non-null), not only the shown cards and loaded files: adding writes
  the whole plugin and replaced a saved definition this instance does
  not run yet
- Add plugin waits, with the reason, until every reporting instance's
  file is loaded; the Effective view says files are loading, or names
  the ones that failed with a Retry

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@gusfcarvalho
gusfcarvalho force-pushed the agent-config/18-plugin-tabs branch from 5637b3c to c5da8fa Compare October 6, 2026 15:14
@gusfcarvalho
gusfcarvalho merged commit f2d30b7 into main Oct 6, 2026
4 checks passed
@gusfcarvalho
gusfcarvalho deleted the agent-config/18-plugin-tabs branch October 6, 2026 16:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size-exception PR intentionally exceeds the 1k-line size limit; reasoning in the description

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants