Skip to content

feat(api): admin agent config read and save (13/15) - #481

Merged
gusfcarvalho merged 5 commits into
lisa/agent-config/12-agent-config-reportfrom
lisa/agent-config/13-admin-config-save
Oct 6, 2026
Merged

gusfcarvalho merged 5 commits into
lisa/agent-config/12-agent-config-reportfrom
lisa/agent-config/13-admin-config-save

Conversation

@ccf-lisa

@ccf-lisa ccf-lisa Bot commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

Part 13/15 of the agent remote-configuration stack

This stack splits #465 into reviewable layers of at most ~1000 changed lines each (counted without docs/, go.sum and Markdown). The last layer's tree is identical to #465, which already has its review history.

Stacked on #480 (lisa/agent-config/12-agent-config-report). Review and merge in order.

What's in this layer

Thirteenth layer of the agent remote-configuration stack (split from #465): GET /api/admin/agents/{id}/config returns the current overlay (verbatim only to agent:configure holders, redacted otherwise, fail-closed) with an admin ETag, and GET …/config/revisions/{rev} returns one revision the same way; PUT saves a new revision with If-Match (428 without, 409 on conflict, 200 for a no-op), validating the overlay on its own and against the instances a save validates against (only errors the overlay introduces block; file-origin errors are warnings). Needs agent:configure to write.

Size: +1346 -0 = 1346 changed lines (without docs/go.sum).

size-exception: over 1000 LOC because of the tests that cover this layer; the implementation part is well under 1000.

Verification

Each layer builds on its own: go build, go vet (also with -tags integration), golangci-lint run and go test ./... pass, and make swag leaves the tree clean. Integration suites for the packages this layer touches pass locally on testcontainers Postgres.

🤖 Generated with Claude Code

@coderabbitai

coderabbitai Bot commented Oct 5, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: a52672ef-f0bd-45fd-97b0-0c9dfe53d7ec

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • 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.

@gusfcarvalho
gusfcarvalho added this pull request to stack #484 October 5, 2026 17:30
@gusfcarvalho
gusfcarvalho force-pushed the lisa/agent-config/13-admin-config-save branch from 5133f09 to 60616fa Compare October 5, 2026 19:35

@gusfcarvalho gusfcarvalho 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 484): #469 → #470 → #471 → #472 → #473 → #474 → #475 → #476 → #477 → #478 → #479 → #480 → #481 → #482 → #483

Comment thread internal/api/handler/agent_config.go Outdated
@ccf-lisa
ccf-lisa Bot force-pushed the lisa/agent-config/13-admin-config-save branch from 60616fa to dc4afa1 Compare October 6, 2026 10:40
@ccf-lisa
ccf-lisa Bot force-pushed the lisa/agent-config/13-admin-config-save branch from dc4afa1 to 892a8d7 Compare October 6, 2026 13:06

@gusfcarvalho gusfcarvalho 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 484): #469 → #470 → #471 → #472 → #473 → #474 → #475 → #476 → #477 → #478 → #479 → #480 → #481 → #482 → #483

@ccf-lisa
ccf-lisa Bot force-pushed the lisa/agent-config/13-admin-config-save branch from 892a8d7 to 3a862a3 Compare October 6, 2026 14:24
ccf-lisa Bot and others added 2 commits October 6, 2026 11:44
Thirteenth layer of the agent remote-configuration stack (split from #465): GET /api/admin/agents/{id}/config returns the current overlay (verbatim only to agent:configure holders, redacted otherwise, fail-closed) with an admin ETag, and GET …/config/revisions/{rev} returns one revision the same way; PUT saves a new revision with If-Match (428 without, 409 on conflict, 200 for a no-op), validating the overlay on its own and against the instances a save validates against (only errors the overlay introduces block; file-origin errors are warnings). Needs agent:configure to write.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ccf-lisa Bot and others added 3 commits October 6, 2026 11:44
validateCandidate merged and validated the overlay against every instance
of the validation set. ValidationBases now groups instances by base content
(BaseKey): validate each distinct base once and attribute its errors to
every instance in the group, so the 422 body still lists each instance and
the cost of a save follows the distinct bases.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
decodeStrict checked for trailing data with dec.More(), which reports false
for a trailing '}' or ']', so {"overlay":{}}} was accepted. Require the next
token to be io.EOF instead.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
normalizeComment let a NUL character through, and Postgres cannot store one
in a text column, so PUT (and revert) failed with a 500 from the insert.
Reject it as a 400, like the overlay (O11) and report NUL checks.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ccf-lisa
ccf-lisa Bot force-pushed the lisa/agent-config/13-admin-config-save branch from 3a862a3 to 8f8c370 Compare October 6, 2026 14:55

@gusfcarvalho gusfcarvalho 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 484): #469 → #470 → #471 → #472 → #473 → #474 → #475 → #476 → #477 → #478 → #479 → #480 → #481 → #482 → #483

@gusfcarvalho
gusfcarvalho merged commit 4dba9c2 into main Oct 6, 2026
9 checks passed
@gusfcarvalho
gusfcarvalho deleted the lisa/agent-config/13-admin-config-save branch October 6, 2026 15:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant