Tags: stacklok/toolhive
Tags
Fix skill names to comply with Agent Skills specification (#3304) The Agent Skills specification (https://agentskills.io/specification) requires the `name` field in SKILL.md frontmatter to: - Use only lowercase letters, numbers, and hyphens - Match the parent directory name - Not contain spaces or uppercase characters This commit updates all skill name fields to match their directory names and renames pr-inline-review/skill.md to SKILL.md as required by the specification. Co-authored-by: Claude Opus 4.5 <[email protected]>
Update toolhive images to v0.7.0 (#3303) * Update toolhive images to v0.7.0 * Bump Helm chart version and appVersion for v0.7.0 image updates Update chart version from 0.5.22 to 0.5.23 and appVersion to v0.7.0 to match the toolhive images being updated in this PR. Co-authored-by: Juan Antonio Osorio <[email protected]> --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com> Co-authored-by: Juan Antonio Osorio <[email protected]>
Migrate Remaining VirtualMCPServer Fields to spec.config (#3242) This PR addresses several goals: Configuration Consolidation: Move CRD-specific fields into config.Config to eliminate duplication and establish a single source of truth Validation Unification: Consolidate scattered validation logic into shared, reusable functions Type Simplification: Remove redundant CRD-to-config conversion functions by embedding config types directly in CRDs Bug Fixes: Fix telemetry config field loss during CRD conversion Documentation: Clarify field precedence and add proper kubebuilder annotations --------- Signed-off-by: Jeremy Drouillard <[email protected]>
Update ghcr.io/stacklok/thv-registry-api Docker tag to v0.4.8 (#3276) * Update ghcr.io/stacklok/thv-registry-api Docker tag to v0.4.8 * regenerate helm docs * bump helm chart version --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Don Browne <[email protected]>
Improve CRD API documentation with opt-in type discovery and package … …disambiguation (#3232) This PR enhances the CRD API documentation generation to: Include types from pkg/vmcp/config, pkg/telemetry, pkg/audit, and pkg/vmcp/auth/types in the generated docs, since these are now a part of the CRD spec as a result of Simplify VMCP Configuration #3125 Use package path prefixes to disambiguate types with the same name (e.g., vmcp.config.Config vs pkg.telemetry.Config) Use an opt-in +gendoc marker to control which types outside api/v1alpha1 are documented. Add a test to ensure config types remain documented Update a comment to match a manual change to the docs repo to prevent it from getting squashed. It is strongly recommended to review this commit-by-commit. The changes below were done incrementally with the intention of being reviewing commit-by-commit. Large PR Justification This PR includes a small number of changes, but it touches the generated CRD docs. Consequently, the diff is large. Motivation The CRD API documentation previously only included types from cmd/thv-operator/api/v1alpha1. However, the VirtualMCPServerSpec references vmcp/config.Config which in turn references types from pkg/telemetry and pkg/audit. These types were not being documented, leading to broken links and incomplete documentation. Additionally, multiple packages have types named Config, causing anchor collisions in the markdown output. Design Choice I don't love the amount of yaml necessary for this change, but the baseline is copied from the crd-ref-docs. Alternatives considered: Do nothing. If we do nothing, we generate docs for internal types that happen to be in the same package. crd-ref-docs is not smart enough to walk a struct and produce only the documentation necessary. Explicitly excluding types. Opting out will fail eventually and it will result in internal types needlessly being included in the docs. This also doesn't solve the name collision problem. The name collision problem was addressable with either templates or manually renaming structs when we detect a collision. Rolling our own solution that doesn't force us to put so much logic into yaml. This would be nice, but it's a bigger task and not one that felt justified at the moment. Changes Templates: Introduced custom markdown templates for crd-ref-docs in docs/operator/templates/markdown/ Added package path prefixes to type headings (e.g., #### vmcp.config.Config) Updated field type references to include package prefixes for local types Filtered "Appears in" references to only show documented types Configuration: Added +gendoc custom marker to crd-ref-config.yaml for opt-in documentation. I would've preferred to rely on the kubebuilder:object:generate marker, but crd-ref-docs parses this in its own way. Updated Taskfile.yml to run crd-ref-docs from repo root and include additional source paths Added doc.go files with +groupName markers to discoverable packages Source annotations: Added +gendoc markers to all config structs that should be documented Testing: Added TestConfigTypesDocumentedInCRDAPI to verify all struct types in vmcp/config.Config are documented I also manually tested the final crd-api.md in the docs website: --------- Signed-off-by: Jeremy Drouillard <[email protected]>
Update toolhive images to v0.6.17 (#3186) * Update toolhive images to v0.6.17 * Bump Helm chart version to 0.5.21 Update operator chart version and appVersion to match the updated container images (v0.6.17). Regenerate documentation using helm-docs. Co-authored-by: Juan Antonio Osorio <[email protected]> --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com> Co-authored-by: Juan Antonio Osorio <[email protected]>
Add X-Forwarded-Prefix support for SSE endpoint URL rewriting (#3210) * Add X-Forwarded-Prefix support for SSE endpoint URL rewriting Implement SSE endpoint URL rewriting in the TransparentProxy to support path-based ingress routing that strips path prefixes. Changes: - Add endpointPrefix and trustProxyHeaders fields to TransparentProxy - Add sseRewriteConfig type for holding rewrite configuration - Add getSSERewriteConfig() to determine rewrite config with priority: 1. Explicit endpointPrefix (highest priority) 2. X-Forwarded-Prefix header (when trustProxyHeaders is true) 3. No rewriting (default) - Add rewriteEndpointURL() to handle both relative and absolute URLs - Refactor SSE response processing with sseLineProcessor struct - Only rewrite "event: endpoint" events, pass others unchanged - Preserve existing session ID extraction functionality Fixes #3071 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]> * Add EndpointPrefix to transport and runner config structs Wire the endpointPrefix configuration through the transport layer: - Add EndpointPrefix to transport.Config struct - Add EndpointPrefix to runner.RunConfig struct - Update HTTPTransport to accept and pass endpointPrefix to proxy - Update factory.go to pass EndpointPrefix from config - Update runner.go to include EndpointPrefix in transport config 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]> * Add --endpoint-prefix CLI flag to thv run command Add CLI support for specifying the SSE endpoint URL prefix: - Add EndpointPrefix field to RunFlags struct - Add --endpoint-prefix flag with help text - Add validation to ensure prefix starts with '/' when provided - Add WithEndpointPrefix builder option in config_builder.go 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]> * Add endpointPrefix field to MCPServer and MCPRemoteProxy CRDs Add Kubernetes CRD support for configuring SSE endpoint URL prefix: - Add EndpointPrefix field to MCPServerSpec and MCPRemoteProxySpec - Wire field through controllers to runner config - Regenerate CRD manifests with operator-generate/operator-manifests 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]> * Add documentation for SSE endpoint URL rewriting feature - Regenerate CLI docs with new --endpoint-prefix flag - Add SSE Endpoint URL Rewriting section to transport architecture doc - Document priority order, CLI usage, and Kubernetes CRD examples 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]> * bump chart version * add an e2e test case * fix lint/compiler issue * Decouple response processing out of transparent proxy (#3216) In order to minimize the amount of transport-specific logic in the transparent proxy, create a response processor interface and put the new SSE rewrite logic behind that interface. Create a no-op implementation for HTTP streamable. * oeprator crd version bump --------- Co-authored-by: Jakub Hrozek <[email protected]> Co-authored-by: Claude Opus 4.5 <[email protected]> Co-authored-by: amirejaz <[email protected]>
PreviousNext