Skip to content

feat: add API versioning and native manifest client support#116

Merged
Aaronontheweb merged 3 commits into
devfrom
feature/api-versioning
Jul 6, 2026
Merged

feat: add API versioning and native manifest client support#116
Aaronontheweb merged 3 commits into
devfrom
feature/api-versioning

Conversation

@Aaronontheweb

@Aaronontheweb Aaronontheweb commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds API versioning support to SkillServer and enhanced native manifest client discovery.

close #85

Changes

Backend (SkillServer):

  • API versioning via Accept: application/netclaw.v1+json header
  • Native manifest generation with NativeManifestGenerator
  • Index generation with IndexGenerator
  • Updated endpoints to support versioned responses
  • Static file serving for gallery mockups from wwwroot/

Client (Netclaw.SkillClient):

  • NativeManifestClient — discovers and downloads native manifests
  • NativeManifestModels — client-side models for native manifests
  • SkillServerClient — updated to support versioned API calls
  • SubAgentClient — updated to support versioned API calls

Tests:

  • Updated integration tests for versioned endpoints
  • Forward compatibility tests (ClientForwardCompatTests)
  • Native sync security tests (NativeSyncSecurityTests)
  • SkillServerClientNativeManifestTests
  • Updated DownloadSubAgentCommandTests and PublishSubAgentCommandTests

Dependencies

This PR should be merged after or alongside the gallery mockups PR (#115).

- Version all API endpoints under /api/v1/ prefix
- Wire up UseStaticFiles() with fallback to index.html for gallery UI
- SkillClient discovers API paths from manifest (ResolveHref helper)
- NativeManifestClient routes through Api() base path
- Add wwwroot Content to csproj for publish inclusion
- Update all tests for new paths
- Keep /.well-known/agent-skills/index.json at root (RFC standard)

214/214 tests passing.
- Restructured manifest to use versioned API prefixes (/skills/v1/..., /subagents/v1/...)
- Added version negotiation: client resolves best supported version from manifest
- Added search links (skillSearch, subagentSearch) for discovery
- Removed RFC feed from manifest (it exists independently)
- Updated explicit index.json filenames for consistency
- Added NativeManifestClient.GetNativeManifestAsync() and ResolveVersion()
- Updated all integration tests, forward-compat tests, and CLI tests
- Updated spec and README to match implementation

Resolves 13 build errors from previous agent's incomplete changes. All 214 tests pass.
…sion negotiation test

- Extract MapV1Api() extension method for cleaner API versioning
- Move UseStaticFiles() after MapSkillServerEndpoints() to avoid unnecessary file system lookups
- Extract CurrentApiVersion constant in NativeManifestGenerator
- Add trailing newlines to SkillServerClient.cs and SubAgentClient.cs
- Add test for ResolveVersionAsync when no compatible version exists

All 215 tests pass.

@Aaronontheweb Aaronontheweb left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

LGTM

@Aaronontheweb Aaronontheweb enabled auto-merge (squash) July 6, 2026 18:14
@Aaronontheweb Aaronontheweb merged commit a706ed9 into dev Jul 6, 2026
7 checks passed
@Aaronontheweb Aaronontheweb deleted the feature/api-versioning branch July 6, 2026 18:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Define native manifest and sub-agent sync specifications

1 participant