Skip to content

## ✅ Cross-SDK Consistency Review #894

@annadonnawalters-cpu

Description

@annadonnawalters-cpu

✅ 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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions