feat(agent-config): field editor building blocks, header and instance picker [12/21] - #333
Conversation
|
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 |
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Composite-field errors can be hidden, stale refreshes can conceal the selected instance, and policy trust messaging can be inaccurate.
Review effort: Balanced
Findings: 3
Open (3)
What changed in this PR
Adds reusable agent-configuration editors, status headers, and instance-selection components.
Changes:
- Adds field hints, issue display, policy-source, and key-value editors.
- Adds configuration header and stale-aware instance picker.
- Adds key-value editor tests.
| File | Description |
|---|---|
useEditor.ts |
Provides shared editor helpers and hints. |
PolicySourcesEditor.vue |
Edits ordered policy sources. |
KeyValueEditor.vue |
Edits key-value configuration fields. |
FieldIssues.vue |
Displays field validation issues. |
FieldHints.vue |
Displays shields, differences, and reset actions. |
AgentInstancePicker.vue |
Selects fresh or stale instances. |
AgentConfigHeader.vue |
Shows revision and synchronization status. |
KeyValueEditor.spec.ts |
Tests key trimming and validation. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| watch( | ||
| () => props.selectedId, | ||
| (id) => { | ||
| if (staleItems.value.some((i) => i.inst.instanceId === id)) | ||
| showStale.value = true; | ||
| }, | ||
| { immediate: true }, | ||
| ); |
| >trusted on {{ hint(entry)!.safe }}/{{ hint(entry)!.total }} instances | ||
| · {{ hint(entry)!.label }}</span |
| return getAt(draft.effectiveDraft.value, ptr); | ||
| } | ||
| function issuesAt(ptr: string) { | ||
| return draft.issues.value.filter((i) => i.ptr === ptr); |
d6d04e3 to
ea13bf8
Compare
| class="text-xs font-medium tracking-wide text-gray-500 uppercase dark:text-slate-400" | ||
| >Policies</span | ||
| > | ||
| <span v-if="!overridden" class="text-[0.7rem] text-gray-400" |
There was a problem hiding this comment.
[Should-fix] UI-COMP-001 · Component convention not followed
Introduced in #333. 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 · a410bf38ee03 · rules@6be9e11b8bc6
ea13bf8 to
8d5a418
Compare
8d5a418 to
68f3681
Compare
68f3681 to
5e274af
Compare
5e274af to
04aa5db
Compare
… picker Layer 12 of 21 in the stacked split of #318. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
KeyValueEditor's key-case warning and the "Reset to file value" tooltip (KeyValueEditor, FieldHints) read TOOLTIPS['agents.config.*'], per docs/TOOLTIPS.md (UI-COMP-001). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ers part of the fleet - AgentInstancePicker renders 25 instances a page (fresh first, stale ones when shown) with Previous / Next, and opens on the selected instance's page - AgentConfigHeader says "Showing N of M instances" when the loaded rows are part of the fleet; its numbers come from the API's counts (instanceCount is the fleet total) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…fleet counts On a partial instance list the in-sync ratio is the API's fleet-wide counts, which include stale instances: the header now reads "In sync: X/Y instances (incl. stale, from the API's fleet counts)". A complete list shows the row-based ratio as before (2/4 for the fixture fleet). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
04aa5db to
ec210f9
Compare

Part 12 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 reviewableon its own. Nothing is reachable in the app until layer 20 wires the Configuration tab in.What
Field editor building blocks (
useEditor, field hints/issues, key-value editor, policy sources editor), the configuration header and the instance picker.Tests
KeyValueEditor.spec.ts; the rest is covered by the integration specs in layer 21.🤖 Generated with Claude Code