Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

sf agent mcp asset replace --assets null throws raw TypeError instead of InvalidShape

Đang mở Phù hợp với người mới
#3,625 4 bình luận 0 reaction 0 người được giao Xem trên GitHub

@konkonrong-lgtm đang làm issue này rồi.

Từ ngày 12/8/2026.

  • #472 của @konkonrong-lgtm — đang mở

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
78/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Ít trao đổi
Công nghệ
javascript, node.js
Lĩnh vực
cli, testing-qa

Hướng nghiên cứu

Bắt đầu từ phần xác thực đầu vào phía client cho agent mcp asset replace trong mã nguồn plugin-agent và chạy bộ kiểm thử unit của nó với --assets "null". So sánh đường dẫn null với cách xử lý hiện có đối với dạng đối tượng không hợp lệ. Hoàn tất khi null tạo ra InvalidShape, bộ kiểm thử hồi quy chạy qua với 448 kiểm thử và yarn build thành công.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

area:afdx bug investigating owned by another team validated
Summary

sf agent mcp asset replace throws an uncaught TypeError when --assets is valid JSON with the value null.

null is valid JSON, but it is not a valid asset input shape. The command should reject it with the existing InvalidShape error instead of exposing an internal JavaScript error:

Cannot read properties of null (reading 'assets')

The failure occurs while parsing the CLI input, before an API request is made.

Steps To Reproduce

A separate reproduction repository is not required because this can be reproduced directly with the Salesforce CLI command.

With an authenticated target org, run:

sf agent mcp asset replace --mcp-server-id <MCP_SERVER_ID> --assets "null" -o <TARGET_ORG> --json

The command returns a result similar to:

{
  "name": "TypeError",
  "message": "Cannot read properties of null (reading 'assets')",
  "exitCode": 10,
  "context": "ApiCatalogMcpServerAssetReplace"
}
Expected result

Because null is valid JSON but does not match either supported asset shape, the command should reject it with the existing InvalidShape error.

For example, invalid object shapes are already handled as InvalidShape.

Actual result

The command attempts to access .assets on null and throws a raw JavaScript TypeError:

Cannot read properties of null (reading 'assets')
Additional information

The issue appears to be in the client-side input validation for agent mcp asset replace.

The command currently distinguishes between an array and an object containing an assets property. When the parsed JSON value is null, it attempts to read .assets before the existing InvalidShape validation can run.

I reproduced this locally and also added a regression test against the current salesforcecli/plugin-agent source. Before the fix, the full unit test suite resulted in:

447 passing
1 failing

AssertionError: expected 'TypeError' to equal 'InvalidShape'

After guarding the property access, the suite passes with:

448 passing

yarn build also completes successfully.

agent mcp is currently in Developer Preview.

System Information

Shell: Windows PowerShell

{
  "architecture": "win32-x64",
  "cliVersion": "@salesforce/cli/2.146.3",
  "nodeVersion": "node-v22.23.1",
  "osVersion": "Windows_NT 10.0.26200",
  "rootPath": "C:\\Program Files\\sf\\client",
  "shell": "cmd.exe",
  "pluginVersions": [
    "@oclif/plugin-autocomplete 3.2.54 (core)",
    "@oclif/plugin-commands 4.1.61 (core)",
    "@oclif/plugin-help 6.2.55 (core)",
    "@oclif/plugin-not-found 3.2.90 (core)",
    "@oclif/plugin-plugins 5.4.86 (core)",
    "@oclif/plugin-search 1.2.54 (core)",
    "@oclif/plugin-update 4.7.56 (core)",
    "@oclif/plugin-version 2.2.52 (core)",
    "@oclif/plugin-warn-if-update-available 3.1.70 (core)",
    "@oclif/plugin-which 3.2.59 (core)",
    "@salesforce/cli 2.146.3 (core)",
    "agent 1.45.0 (core)",
    "apex 3.9.40 (core)",
    "api 1.3.54 (core)",
    "auth 4.4.9 (core)",
    "data 4.0.115 (core)",
    "deploy-retrieve 3.24.61 (core)",
    "info 3.4.155 (core)",
    "limits 3.3.106 (core)",
    "marketplace 1.3.44 (core)",
    "org 5.11.26 (core)",
    "packaging 2.30.6 (core)",
    "schema 3.3.131 (core)",
    "settings 2.4.101 (core)",
    "sobject 1.4.125 (core)",
    "telemetry 3.8.33 (core)",
    "templates 56.20.0 (core)",
    "trust 3.8.43 (core)",
    "user 3.10.9 (core)"
  ]
}
Ngôn ngữ chính
Không có dữ liệu ngôn ngữ
Star
571
Fork
80
Merge trung bình
2 ngày 21 giờ
Pull request đã merge (30 ngày)
3

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của forcedotcom/cli

Tất cả issue của forcedotcom/cli

Issue tương tự

Thêm issue về CLI

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.