diff --git a/internal/cli/cli_test.go b/internal/cli/cli_test.go index 5871cb1..26bc260 100644 --- a/internal/cli/cli_test.go +++ b/internal/cli/cli_test.go @@ -921,6 +921,7 @@ func TestUsageErrors(t *testing.T) { {"malformed agent-card url", []string{"card", "get", "-a", "http://exa mple.com"}}, {"missing agent-card file", []string{"card", "get", "-a", "/no/such/card.json"}}, {"missing --file-part file", []string{"send", "-a", "http://x", "--file-part", "/no/such/file.txt"}}, + {"invalid --data-part json", []string{"send", "-a", "http://x", "--data-part", "{bad"}}, } for _, tt := range tests { diff --git a/internal/flagparse/parts.go b/internal/flagparse/parts.go index 229e109..7ab3f26 100644 --- a/internal/flagparse/parts.go +++ b/internal/flagparse/parts.go @@ -137,7 +137,7 @@ func buildFilePart(ref, mediaType string) (*a2a.Part, error) { func buildDataPart(ref, mediaType string) (*a2a.Part, error) { var data any if err := json.Unmarshal(RawOrInline(ref), &data); err != nil { - return nil, fmt.Errorf("--data-part %q is not a readable file or valid JSON: %w", ref, err) + return nil, clierr.Usage(fmt.Sprintf("--data-part %q is not a readable file or valid JSON: %v", ref, err)) } p := a2a.NewDataPart(data) if mediaType != "" {