Conversation
- Add MapToStruct/StructToMap conversion functions - Implement MapToStructFlat/StructFlatToMap for backward compatibility - Add normalizeNumericTypes to handle protobuf float64->int conversion - Provides 5x performance improvement over flatten/unflatten approach 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
- Implement MIME type detection for text vs binary classification - Add SaveBinaryToTempFile with proper file extensions - Create ProcessHttpBody for HTTP response processing - Support automatic text/binary handling with appropriate file paths 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
- Change Body field from []byte to string for text data - Add FilePath field for binary file paths - Integrate ProcessHttpBody for automatic text/binary classification - Maintain backward compatibility while supporting protobuf.Struct 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
- Add FilePaths field to store screenshot file paths by action ID - Implement automatic binary file saving for screenshots - Update collectResults to handle both text results and file paths - Maintain backward compatibility with existing Path field 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
- Add MailData and FilePath fields to Res struct - Integrate ProcessHttpBody for mail data classification - Add public MakeData method for external access to mail content - Support both text and binary mail data processing 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
- Update all client packages to use StructFlatToMap/MapToStructFlat - Replace FlattenInterface/UnflattenInterface calls - Maintain API compatibility while gaining 5x performance improvement - Add proper error handling for MapToStructFlat calls 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This comment has been minimized.
This comment has been minimized.
…tils - Delete old flattening.go and associated test files - Consolidate all flattening/unflattening logic into structpb_utils.go - Add backward compatibility functions (FlattenInterface, UnflattenInterface, ConvertBodyToJson, ConvertNumericStrings) - Update browser client test to use StructFlatToMap - Maintain full API compatibility while using protobuf.Struct internally 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This comment has been minimized.
This comment has been minimized.
- Fix errcheck errors in binary_utils.go and binary_utils_test.go by properly handling return values of file.Close() and os.Remove() - Add header value sanitization in HTTP client to remove newlines and carriage returns, preventing invalid header field value errors 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This comment has been minimized.
This comment has been minimized.
- Rename binary_utils.go to binary.go for simpler naming - Rename binary_utils_test.go to binary_test.go accordingly 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This comment has been minimized.
This comment has been minimized.
- Add convertForProtobuf function to handle complex types (structs, pointers, slices) - Support protobuf.Struct conversion for ChromeDPAction and other struct types - Add reflection-based handling for pointer dereferencing and struct-to-map conversion - Enhance ActionsServer with detailed logging and error handling - Update protobuf schema to use google.protobuf.Struct directly 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
- Handle YAML/JSON float64 to int conversion automatically - Support multiple int formats (int, int64, float64, string) - Fix browser action window_w/window_h parameter type errors - Maintain backward compatibility with existing bool conversion 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
- Add proper JSON marshaling for complex body objects in Request function - Fix protobuf parsing error with YAML map structures - Update grpc.yml example with correct TLS settings and string type filters - Support both plain and TLS gRPC connections 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
- Standardize action interface from map[string]string to map[string]any - Update logging functions to use TruncateMapStringAny - Add proper type validation in db and ssh actions - Maintain backward compatibility and improve type safety - Update test mocks to match new interface 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
- Standardize all client Request functions to accept map[string]any - Remove flatten/unflatten operations in favor of direct map handling - Maintain internal string conversion where required for compatibility - Improve type safety and reduce unnecessary data transformations 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
- Add TLS gRPC test server using existing certificates in testdata/certs/ - Add SMTP test server using mail/mock_server.go implementation - Create comprehensive smtp.yml example with multiple test scenarios - Support both plain and TLS gRPC testing environments - Enable end-to-end testing of email and gRPC protocols 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
- Update binary utilities with improved formatting and temp file handling - Add IMAP test server for comprehensive email testing - Update step processing and printer utilities for map[string]any support - Regenerate gRPC protobuf files and update dependencies - Improve performance benchmarks with new type system 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
- Remove StructFlatToMap calls from grpc and mail client code - Update browser tests to use map[string]any format directly - Simplify data flow by using HeaderToStringValue with map[string]string directly - Maintain test coverage while modernizing data structures 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This comment has been minimized.
This comment has been minimized.
Updates test assertions across mail, shell, and mapping packages to expect nested map structures instead of flattened field names. Also fixes test-shell.yml to include required jobs field for proper YAML validation. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
- Add parse_int() function for converting strings/numbers to integers
- Implement template type preservation for whole string templates ({{ var }})
- Add isWholeStringTemplate() and extractTemplateExpression() helper functions
- Add EvalTemplateWithTypePreservation() for type-aware template processing
- Update EvalTemplateMap and evalTemplateArray to use type preservation
- Improve mapping.go type safety with better error handling
- Add comprehensive tests for all new functionality
- Maintain backward compatibility with existing EvalTemplate behavior
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Code Metrics Report
Details | | main (eb1cd2f) | #89 (998f301) | +/- |
|---------------------|----------------|---------------|-------|
+ | Coverage | 47.6% | 47.7% | +0.0% |
| Files | 50 | 51 | +1 |
| Lines | 5034 | 5079 | +45 |
+ | Covered | 2399 | 2423 | +24 |
- | Code to Test Ratio | 1:1.1 | 1:1.0 | -0.1 |
| Code | 10603 | 10242 | -361 |
- | Test | 11951 | 11185 | -766 |
+ | Test Execution Time | 1m3s | 17s | -46s |Code coverage of files in pull request scope (41.5% → 41.7%)Details
Reported by octocov |
This was referenced Jan 26, 2026
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
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.
Summary
Replace the existing flatten/unflatten approach with protobuf.google.Struct for significant performance improvements while maintaining full backward compatibility.
Performance Results
Key Changes
Core Infrastructure
structpb_utils.go)MapToStruct/StructToMapfor direct protobuf conversionMapToStructFlat/StructFlatToMapfor backward compatibilitynormalizeNumericTypesto handle protobuf float64→int conversionBinary Data Handling
binary_utils.go)ProcessHttpBodyfor smart content processingClient Updates
Body []byte→string+FilePathfield for binary dataFilePathsmap for screenshot managementMailDataandFilePathfieldsAPI Changes
HTTP Response Format
Browser Screenshots
{ "results": {"text_data": "value"}, "filepaths": {"screenshot_action": "/tmp/probe_binary_def456.png"} }Backward Compatibility
Test Coverage
🤖 Generated with Claude Code