Add the managed plugin daemon API - #2157
Aaronontheweb wants to merge 2 commits into
Conversation
b72880e to
1df2b8e
Compare
1df2b8e to
70c6e9c
Compare
70c6e9c to
29bb04f
Compare
Aaronontheweb
left a comment
There was a problem hiding this comment.
Adversarial review complete.
I checked authorization, canonical configuration persistence, reference resolution, restart generation, and retry actor behavior.
I found no concrete defect in this slice. The focused API tests pass.
29bb04f to
aa33b77
Compare
abd6974 to
fd5e543
Compare
fd5e543 to
a18ecac
Compare
a18ecac to
ddadef2
Compare
Aaronontheweb
left a comment
There was a problem hiding this comment.
I found no defect that is specific to this slice. The daemon correctly owns authorization, reference resolution, config writes, and installed-state reads. The CLI discards the API safe problem details. I reported that consumer defect on #2158.
ddadef2 to
8973a45
Compare
8973a45 to
b52a67e
Compare
Aaronontheweb
left a comment
There was a problem hiding this comment.
The API ownership is correct. The daemon owns validation, reference resolution, configuration writes, and installed-state reads.
One required error-disclosure correction remains in the inline thread.
I reviewed commit b52a67e. Local checks passed with 8,588 tests, strict OpenSpec validation, Slopwatch, headers, and diff checks.
Local evals lacked provider credentials. Chromium lacked a usable sandbox for native tapes. GitHub checks are still active.
| }; | ||
| var detail = status == StatusCodes.Status500InternalServerError | ||
| ? "The plugin operation failed. Check the daemon logs." | ||
| : exception.Message; |
There was a problem hiding this comment.
[P2] Do not publish internal exception messages as safe problem details.
GitSkillPluginConfigStore includes IOException and UnauthorizedAccessException messages. Those messages can contain the absolute configuration path.
This line returns that text to every authenticated API client. It also accepts unbounded text from other expected exception types.
Map each failure to a bounded public detail. Log the original exception on the daemon. Add a path-disclosure regression test.
There was a problem hiding this comment.
Fixed at e8e90f7. Config read, parse, and write errors now return bounded public text. The route logs the exception with its inner cause. An endpoint test proves the config path stays out of the response.
b52a67e to
e8e90f7
Compare
e8e90f7 to
ec05fa1
Compare
Netclaw needs daemon ownership for plugin configuration and explicit retries.
This change adds authenticated
/api/pluginsroutes.The API preserves unrelated configuration and rejects invalid values before persistence.
It returns the stable source ID and current manifest name as separate fields.
The shared sync actor supports an explicit retry pass for rejected commits.
Validation:
Depends on #2162.
Part of #2134.
Pull request stack
Review and merge these pull requests in this order:
This pull request is step 4.