-
Notifications
You must be signed in to change notification settings - Fork 7
feat(Swift): 🐦 Introduce Swift HTTP Code Generation #63
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
KhaledChehabeddine
wants to merge
53
commits into
SebastienMelki:main
from
KhaledChehabeddine:enhancement-swift-http-generation
Closed
feat(Swift): 🐦 Introduce Swift HTTP Code Generation #63
KhaledChehabeddine
wants to merge
53
commits into
SebastienMelki:main
from
KhaledChehabeddine:enhancement-swift-http-generation
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add Swift package manifest with dependencies on SwiftProtobuf (1.33.3) and ArgumentParser (1.6.2). Include standard Swift package .gitignore and resolved dependencies for reproducible builds. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add foundational HTTP client infrastructure: - SebufClient protocol with async/throws error handling - DefaultSebufClient actor-based implementation using URLSession - DataTask for handling typed request/response workflows - SebufError enum with comprehensive error handling (cancellation, URL errors, undefined errors) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add protocol definitions for Sebuf HTTP framework: - SebufRoute protocol for typed request/response routing with SwiftProtobuf integration - SebufService protocol for service-level header management - Configuration infrastructure with type-safe configuration keys and values 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add basic test suite setup for SwiftSebuf package using Swift Testing framework. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
…ents Split monolithic Configuration.swift into separate files: - Configuration.swift: Core ConfigurationKey protocol and ConfigurationValues - ConfigurationValues+Customization.swift: Extension with baseURLString and client properties This improves code organization and separates concerns between the configuration infrastructure and the actual configuration values. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
…ling - Remove ClientError associatedtype for cleaner protocol design - Add default implementation of data(for:) using URLSession - Rename dataTask to networkTask for better clarity - Update method signatures to use standardized SebufError This simplification makes the protocol easier to adopt and removes unnecessary type constraints while maintaining type safety. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Rename DataTask to NetworkTask and add complete implementation: - Add configuration-based URL request construction - Implement makeURLRequest helper using baseURLString from configurations - Add Sendable conformance for safe concurrency - Complete data() method to execute network requests NetworkTask now provides a fully functional network layer that integrates with the configuration system and route definitions. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Implement response(from:) method that: - Creates a NetworkTask from the client - Executes the network request - Decodes JSON response data into the typed Response - Configures JSON decoder to ignore unknown fields This provides a clean, type-safe API for executing routes and automatically handling response deserialization. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
…urationValues Change from ObjectIdentifier to String(reflecting:) for type keys to support all Swift types (structs, enums, classes) instead of only class types. Also removes unnecessary SwiftUI import dependency. This maintains the same API while providing better type compatibility and fixes the limitation where ObjectIdentifier only works reliably with class metatypes. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Simplify SebufClient protocol: - Remove async/throws from networkTask (no I/O at task creation) - Remove generic Client type parameter from NetworkTask - Remove redundant data(for:) method Improve DefaultSebufClient: - Store ConfigurationValues internally - Remove error wrapping in data method - Simplify networkTask creation This makes the client API cleaner and moves configuration responsibility to where it belongs (in the client itself). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
…orkTask Enhance NetworkTask with complete request handling: - Add request body encoding using SwiftProtobuf's jsonUTF8Data - Configure JSON encoder to preserve proto field names - Replace data() method with async 'value' computed property - Access URLSession directly instead of through client wrapper This completes the request/response pipeline with proper protobuf serialization support. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
…lution Change route resolution API: - Rename response(from:) to resolve(in:) for clearer semantics - Accept ConfigurationValues instead of SebufClient directly - Access client through configuration for better dependency flow This makes the API more intuitive - routes are resolved within a configuration context rather than from a specific client. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add empty SimpleService.swift test file as a placeholder for future service implementation tests. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add SimpleService test service implementation: - Implement SebufService with getSimple RPC method - Add GetSimple route with proper request/response types - Include mock GetSimpleRequest and GetSimpleResponse messages - Configure test headers for API key validation Remove auto-generated SwiftSebufTests.swift template file as it's replaced with actual service test implementation. Note: Mock messages will be replaced with proper proto-generated code once the test proto files are finalized. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Replace property wrapper-based configuration system with simplified key-value architecture. Implement thread-safe storage using os_unfair_lock and copy-on-write semantics. Remove client configuration key in favor of direct client injection via protocols. Changes: - Add ConfigurationKey protocol with default value support - Implement ConfigurationValues with thread-safe Storage class - Add baseURLString network configuration (non-optional) - Remove Configurations property wrapper - Remove client configuration key - Use ObjectIdentifier for type-safe key lookup 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Improve SebufClient protocol to support direct service instantiation and explicit configuration passing. Add generic service() method for type-safe service creation and convenience static factory. Changes: - Add configurations property to SebufClient protocol - Add nonisolated service<S>() method for service instantiation - Move networkTask() to internal protocol extension - Update DefaultSebufClient with configurations parameter - Add static .default() convenience factory - Update SebufService to require Client associatedtype - Replace headers property with client-based initialization 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Replace generic Error with typed SebufError throughout network and routing layers. Rename route resolution method for clarity and add proper error wrapping for encoding/decoding failures. Changes: - Add messageEncoding and messageDecoding cases to SebufError - Make NetworkTask generic over Client type (internal) - Add typed throws(SebufError) to NetworkTask.value - Wrap URLSession errors in SebufError.init(_:) - Wrap protobuf encoding/decoding errors - Rename resolve(in:) to response(from:) in SebufRoute - Change to client-based API from configuration-based - Remove optional baseURLString (now required) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Adapt SimpleService test implementation to use new service protocol requirements and client-based routing API. Add generic Client type parameter and update route resolution. Changes: - Make SimpleService generic over Client: SebufClient - Replace @Configurations property wrapper with client injection - Update getSimple() to use response(from:) instead of resolve(in:) - Add typed throws(SebufError) signature - Keep private headers for future use 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add session property to ConfigurationValues for network configuration. Enables custom URLSession injection while maintaining .shared as default. Changes: - Add session computed property to ConfigurationValues - Add SessionConfigurationKey with URLSession.shared default - Move session from SebufClient to configuration layer 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Standardize naming across client and routing APIs following Swift conventions. Use singular 'configuration', 'make' prefix for factories, and 'path' for route endpoints. Changes: - Rename configurations → configuration (singular) - Rename service() → makeService() (factory pattern) - Rename networkTask(for:) → makeTask(route:) - Rename route property → path (clearer intent) - Rename response(from:) → makeResponse(client:) - Remove session parameter from DefaultSebufClient init - Update static factory to match new naming 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Move makeURLRequest from SebufRoute extension to private NetworkTask method. Improves separation of concerns following Apple conventions - routes describe endpoints, NetworkTask handles execution. Changes: - Move makeURLRequest to private NetworkTask method - Remove SebufRoute extension with fileprivate method - Add async to makeURLRequest for configuration access - Remove configurations parameter from NetworkTask init - Access configuration directly from client - Simplify explicit type annotations Benefits: - Routes stay declarative (path + request only) - NetworkTask owns request building logic - Better encapsulation of implementation details - Cleaner async/await flow without parameter passing 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add dedicated invalidURL error case to distinguish URL construction failures from request validation failures. Changes: - Add invalidURL case to SebufError enum - Use invalidURL for URL(string:) failures in makeURLRequest 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Update test implementation to use renamed route and method names. Changes: - Rename route property → path - Update response(from:) → makeResponse(client:) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Rename SebufClient -> HTTPClient, SebufService -> Service, and SebufRoute -> Endpoint for improved API clarity and consistency. This aligns the naming with the actual responsibilities of each component. Changes: - HTTPClient: Protocol for HTTP client implementations - Service: Protocol for service definitions - Endpoint: Protocol for individual API endpoints - DefaultClient: Default HTTPClient implementation 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Introduce Configurable protocol enabling fluent configuration API similar to SwiftUI's environment pattern. Update ConfigurationValues to support URL-based baseURL and request modifiers array. Changes: - Configurable protocol with fluent configuration methods - Updated ConfigurationValues with baseURL (URL?) and requestModifiers - Convenience methods: baseURL() and requestModifiers() 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add RequestModifier protocol and HeaderModifier implementation for customizing URLRequests. This enables flexible request modification at client, service, and endpoint levels. Changes: - RequestModifier protocol for URLRequest mutation - HeaderModifier for setting HTTP headers - Support for cascading modifiers through configuration layers 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Update NetworkTask to work with renamed protocols (HTTPClient, Endpoint) and integrate request modifier support. Simplify URL request building by using URL appending and move session access to client. Changes: - Use HTTPClient and Endpoint protocols - Apply request modifiers from endpoint configuration - Move response decoding into NetworkTask.value - Use URL.appending(path:) for cleaner URL construction - Access session directly from client instead of configuration 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Replace SimpleService with comprehensive UserService test implementation demonstrating the new architecture including cascading configuration, endpoint implementation, and Configurable protocol usage. Changes: - Remove SimpleService test stub - Add UserService with CreateUser endpoint example - Demonstrate service-level and endpoint-level configuration - Include mock CreateUserRequest/Response messages for testing 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Move configuration property declaration to Configurable protocol to reduce boilerplate. Remove duplicate declarations from HTTPClient, Service, and Endpoint. Add default implementation supporting both value and reference types. Changes: - Configurable now declares configuration property requirement - Default implementation of configuration(_:_:) for all conforming types - Remove redundant nonisolated requirement from HTTPClient - Rename Endpoint.makeResponse() to response computed property - Cleaner API with single source of truth for configuration 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add Serializer protocol with JSON and Binary implementations for content serialization. Supports custom encoding/decoding options and typed error handling with SebufError. Changes: - Serializer protocol for pluggable serialization strategy - JSONSerializer with configurable JSONEncodingOptions/JSONDecodingOptions - BinarySerializer with configurable BinaryEncodingOptions/BinaryDecodingOptions - Static factory methods (.json(), .binary()) for convenient creation - Support for extensions and partial message handling in binary serialization 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add serializer configuration value with JSON as default. Update NetworkTask to use configurable serializer for request/response serialization instead of hardcoded JSON. Changes: - Add serializer property to ConfigurationValues (defaults to .json()) - Add serializer(_:) convenience method to Configurable - Update NetworkTask to use configuration.serializer for encoding/decoding - Remove hardcoded JSON encoding/decoding options from NetworkTask - Simplify NetworkTask initialization by removing Client generic parameter 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Remove manual configuration(_:_:) implementations now provided by Configurable protocol default implementation. Update endpoint to use response computed property instead of makeResponse() method. Changes: - Remove duplicate configuration(_:_:) method from UserService - Remove duplicate configuration(_:_:) method from CreateUserEndpoint - Update CreateUserEndpoint.makeResponse() to response computed property 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add empty scaffold for buf-gen-swift protoc plugin module and tests. This will house the Swift code generator for sebuf HTTP services. Changes: - Add buf-gen-swift module structure - Add buf-gen-swiftTests test module structure - Empty SebufGenerator.swift and Test.swift files as placeholders 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add buf-gen-swift module and tests to Swift package configuration. Update SwiftSebuf target dependencies to remove unused protoc plugin dependencies. Changes: - Add buf-gen-swift product and target - Add buf-gen-swiftTests target - Configure buf-gen-swift dependencies (ArgumentParser, SwiftProtobuf, PluginLibrary, SwiftSebuf) - Remove ArgumentParser and PluginLibrary dependencies from SwiftSebuf target - Improve Package.swift formatting and organization 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add swift/.swiftpm/ to .gitignore to exclude SPM build artifacts and state. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add contentType property to Serializer protocol and implement it in JSONSerializer and BinarySerializer. Update NetworkTask to automatically set Content-Type header based on configured serializer.
Changes:
- Add contentType property to Serializer protocol
- Implement contentType in JSONSerializer ("application/json")
- Implement contentType in BinarySerializer ("application/x-protobuf")
- NetworkTask automatically sets Content-Type header from serializer
- Remove commented-out old ContentSerializer protocol definition
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add retry policy system with configurable attempts, retryable status codes, and flexible backoff strategies including instant, constant, exponential, and custom delays. Changes: - RetryPolicy struct with maxAttempts, retryableStatusCodes, backoffStrategy - BackoffStrategy enum supporting instant, constant, exponential, and custom delays - RetryAsyncSequence for async iteration over retry attempts - Default .none policy for single-attempt requests 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add NetworkLogger protocol and DefaultLogger implementation for request/response observability. Enables debugging, monitoring, and tracing of network operations. Changes: - NetworkLogger protocol with logRequest, logResponse, logError methods - DefaultLogger with configurable log levels (none, error, info, debug) - Support for logging request details, response data, and error information - Endpoint path tracking for contextual logging 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add ResponseValidator for configurable response validation including status code ranges and Content-Type checking. Includes default, permissive, and strict presets. Changes: - ResponseValidator struct with validStatusCodes and validateContentType - Static presets: .default (200-299), .permissive (200-599), .strict (200 only) - Enables per-request customization of validation rules - Foundation for response validation in NetworkTask 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Change SebufError init from 'any Error' to 'some Error' for better type inference and performance. Minor refactoring for improved Swift type system usage. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add essential configuration values for production-ready HTTP requests including headers, timeoutInterval, cachePolicy, retryPolicy, logger, and responseValidator. Changes: - Add headers dictionary for custom HTTP headers (auth, tracing, etc.) - Add timeoutInterval for per-request timeout control - Add cachePolicy for cache behavior configuration - Add retryPolicy for automatic retry with backoff - Add logger for observability and debugging - Add responseValidator for response validation - Mark all properties as public internal(set) for controlled mutation - Add convenience methods to Configurable for fluent API 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Integrate retry policy, network logger, and response validator into NetworkTask. Add automatic retry with backoff, comprehensive logging, and header-based configuration. Changes: - Integrate RetryAsyncSequence for automatic retry with backoff - Add logging for requests, responses, and errors - Replace requestModifiers with direct headers dictionary application - Add cachePolicy and timeoutInterval to URLRequest initialization - Add retryAsyncSequence computed property on ConfigurationValues - Check retryable status codes and continue retry loop accordingly - Improve error handling with endpoint context 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Remove HeaderModifier and RequestModifier in favor of direct headers dictionary configuration. Simplifies API by using built-in dictionary instead of custom modifier pattern. Changes: - Delete HeaderModifier.swift (replaced by headers dictionary) - Delete RequestModifier.swift (replaced by headers dictionary) - Headers now configured directly via ConfigurationValues.headers 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Update minimum platform requirement from macOS 14 to macOS 15 for latest Swift concurrency and Duration API support. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Remove Configurable conformance and configuration management from HTTPClient. HTTPClient now serves only as session provider and context, not as a configuration target. Configuration now managed at Endpoint/Service level. Changes: - Remove Configurable conformance from HTTPClient protocol - Remove configuration property and locking logic from DefaultClient - Remove makeService and makeTask methods - Simplify DefaultClient to only hold URLSession - HTTPClient is now just a lightweight context provider 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Split NetworkTask into NetworkTask (retry orchestration) and DataTask (actual HTTP execution). Improves separation of concerns with retry logic isolated from HTTP communication. Changes: - Move original NetworkTask.swift to Task/NetworkTask.swift - Add DataTask for HTTP request/response handling - NetworkTask now orchestrates retry using DataTask - DataTask handles request building, logging, and deserialization - Add retry error handling with .retry case - Cleaner separation between retry logic and HTTP execution 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add .retry error case for internal retry signaling between DataTask and NetworkTask. Enables clean separation of retryable errors from terminal errors. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add HTTPClient reference to ConfigurationValues for accessing session during request execution. Change all configuration properties from public to internal visibility as configuration is now managed through Configurable protocol methods. Changes: - Add client property to ConfigurationValues - Change all properties from public internal(set) to internal - Configuration values accessed internally, modified via Configurable - Enables DataTask to access session via configuration.client.session 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add Identifiable conformance to Endpoint for logging/tracking purposes. Add makeTask helper method for creating NetworkTask instances with configuration. Changes: - Endpoint now conforms to Identifiable with id property - Add makeTask(configuration:) helper method - Enables endpoint identification in logs - Simplifies NetworkTask creation 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Remove Service protocol as configuration is now managed directly on Endpoints. Services will be generated as namespaces/static methods rather than protocol-conforming types, simplifying the architecture. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Update UserService test implementation to reflect new architecture without Service protocol. Update for simplified HTTPClient and configuration management changes. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Enable fluent method chaining by marking all configuration methods with @discardableResult. This allows users to chain configuration calls without compiler warnings when the result is not used. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add initial skeleton for new task-based API pattern: - Introduce _DataTask struct for public task interface - Add commented HTTPClient.makeTask extension - Placeholder for async/throws value accessor This is experimental work toward a SwiftUI-like task API. Code is incomplete and should not be used yet. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Related Issue
Fixes #(issue number)
Type of Change
How Has This Been Tested?
go test ./...)UPDATE_GOLDEN=1 go test -run TestExhaustiveGoldenFilesTest Configuration
Checklist
go fmt ./...)Breaking Changes
Screenshots/Examples
Additional Notes