Skip to content

Add the managed plugin daemon API - #2157

Open
Aaronontheweb wants to merge 2 commits into
feat/git-skill-plugin-runtimefrom
feat/git-skill-plugin-api
Open

Aaronontheweb wants to merge 2 commits into
feat/git-skill-plugin-runtimefrom
feat/git-skill-plugin-api

Conversation

@Aaronontheweb

@Aaronontheweb Aaronontheweb commented Sep 12, 2026

Copy link
Copy Markdown
Collaborator

Netclaw needs daemon ownership for plugin configuration and explicit retries.

This change adds authenticated /api/plugins routes.

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:

  • This branch builds against the preceding PR.
  • The full stack passed 8,588 tests and skipped 23 environment-specific tests.
  • Slopwatch found no issues.
  • The file-header and diff checks passed.

Depends on #2162.
Part of #2134.

Pull request stack

Review and merge these pull requests in this order:

  1. Adopt plugin-neutral source and state contracts #2160: Adopt plugin-neutral source and state contracts.
  2. Add Agent Plugins and Codex package adapters #2161: Add Agent Plugins and Codex package adapters.
  3. Publish managed plugins during external sync #2162: Publish managed plugins during external sync.
  4. Add the managed plugin daemon API #2157: Add the managed plugin daemon API.
  5. Add the managed plugin CLI #2158: Add the managed plugin CLI.

This pull request is step 4.

Comment thread src/Netclaw.Daemon/Skills/SkillEndpointRouteBuilderExtensions.cs Fixed
@Aaronontheweb
Aaronontheweb marked this pull request as ready for review September 12, 2026 13:51
@Aaronontheweb
Aaronontheweb force-pushed the feat/git-skill-plugin-api branch from b72880e to 1df2b8e Compare September 12, 2026 14:13
@Aaronontheweb
Aaronontheweb force-pushed the feat/git-skill-plugin-api branch from 1df2b8e to 70c6e9c Compare September 12, 2026 14:21
@Aaronontheweb
Aaronontheweb force-pushed the feat/git-skill-plugin-api branch from 70c6e9c to 29bb04f Compare September 12, 2026 14:25

@Aaronontheweb Aaronontheweb left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

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.

@Aaronontheweb
Aaronontheweb force-pushed the feat/git-skill-plugin-api branch from 29bb04f to aa33b77 Compare September 12, 2026 16:22
@Aaronontheweb
Aaronontheweb force-pushed the feat/git-skill-plugin-api branch 2 times, most recently from abd6974 to fd5e543 Compare September 12, 2026 16:48
@Aaronontheweb
Aaronontheweb force-pushed the feat/git-skill-plugin-api branch from fd5e543 to a18ecac Compare September 12, 2026 16:51
@Aaronontheweb
Aaronontheweb force-pushed the feat/git-skill-plugin-api branch from a18ecac to ddadef2 Compare September 12, 2026 17:11

@Aaronontheweb Aaronontheweb left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

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.

@Aaronontheweb
Aaronontheweb force-pushed the feat/git-skill-plugin-api branch from ddadef2 to 8973a45 Compare September 12, 2026 20:59
@Aaronontheweb
Aaronontheweb force-pushed the feat/git-skill-plugin-api branch from 8973a45 to b52a67e Compare September 12, 2026 21:05
@Aaronontheweb Aaronontheweb changed the title Add daemon API for managed Git skill plugins Add the managed plugin daemon API Sep 12, 2026

@Aaronontheweb Aaronontheweb left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

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;

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

[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.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

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.

@Aaronontheweb
Aaronontheweb force-pushed the feat/git-skill-plugin-api branch from e8e90f7 to ec05fa1 Compare September 15, 2026 05:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request skills Skill loading, handling, authoring, indexing, and evals.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant