✅ Cross-SDK Consistency Review
I've reviewed PR #731 for cross-SDK consistency across all four language implementations (Node.js/TypeScript, Python, Go, and .NET).
Summary: Excellent consistency maintained ✨
This PR successfully adds the blob attachment type to all four SDKs with proper feature parity:
Type Definitions ✅
- Node.js/TypeScript: Manual type added to
MessageOptions.attachments union in nodejs/src/types.ts + generated types updated
- Python:
BlobAttachment TypedDict added to python/copilot/types.py and properly exported in __init__.py + generated types updated
- Go: Uses generated
Attachment struct from generated_session_events.go with Blob AttachmentType constant
- .NET:
UserMessageDataAttachmentsItemBlob class generated in dotnet/src/Generated/SessionEvents.cs
API Consistency ✅
All SDKs expose the same three required/optional fields with appropriate naming conventions:
| Field |
Node/Python |
Go |
.NET |
Required |
| data |
data |
Data |
Data |
✅ |
| mimeType |
mimeType |
MIMEType |
MimeType |
✅ |
| displayName |
displayName |
DisplayName |
DisplayName |
Optional |
Documentation ✅
- Comprehensive examples added to all four language READMEs
- Detailed feature documentation in
docs/features/image-input.md with side-by-side examples
- Updated
docs/features/streaming-events.md to mention blob attachments
- Test scenario documentation updated in
test/scenarios/prompts/attachments/README.md
No consistency issues found 🎉
The implementation properly accounts for language idioms (camelCase in TS/Python dict keys, PascalCase in Go/C# public APIs) while maintaining semantic equivalence across all SDKs.
Generated by SDK Consistency Review Agent for issue #731 · ◷
Originally posted by @github-actions[bot] in #731 (comment)
✅ Cross-SDK Consistency Review
I've reviewed PR #731 for cross-SDK consistency across all four language implementations (Node.js/TypeScript, Python, Go, and .NET).
Summary: Excellent consistency maintained ✨
This PR successfully adds the
blobattachment type to all four SDKs with proper feature parity:Type Definitions ✅
MessageOptions.attachmentsunion innodejs/src/types.ts+ generated types updatedBlobAttachmentTypedDict added topython/copilot/types.pyand properly exported in__init__.py+ generated types updatedAttachmentstruct fromgenerated_session_events.gowithBlobAttachmentType constantUserMessageDataAttachmentsItemBlobclass generated indotnet/src/Generated/SessionEvents.csAPI Consistency ✅
All SDKs expose the same three required/optional fields with appropriate naming conventions:
dataDataDatamimeTypeMIMETypeMimeTypedisplayNameDisplayNameDisplayNameDocumentation ✅
docs/features/image-input.mdwith side-by-side examplesdocs/features/streaming-events.mdto mention blob attachmentstest/scenarios/prompts/attachments/README.mdNo consistency issues found 🎉
The implementation properly accounts for language idioms (camelCase in TS/Python dict keys, PascalCase in Go/C# public APIs) while maintaining semantic equivalence across all SDKs.
Originally posted by @github-actions[bot] in #731 (comment)