Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

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

未关闭 适合新手
#3,625 4 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

@konkonrong-lgtm 已经在做这个了。

开始于 2026年8月12日。

  • #472 来自 @konkonrong-lgtm —— 未关闭

评估

难度
2/5
预计耗时
1-3 小时
新手友好度
78/100
Issue 类型
缺陷
描述清晰度
描述清楚
活跃度
冷清
技术栈
javascript, node.js
领域
cli, testing-qa

调研方向

从 plugin-agent 源代码中 agent mcp asset replace 的客户端输入验证开始,并使用 --assets "null" 运行其单元测试套件。将 null 路径与现有的无效对象形状处理进行比较。当 null 产生 InvalidShape、回归测试套件通过 448 个测试且 yarn build 成功时,即表示完成。

由索引模型根据 Issue 内容生成。

描述

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)"
  ]
}
主要语言
没有语言数据
星标
571
派生
80
平均合并
14 小时 43 分钟
30 天内合并 PR
5

环境准备

  • 没有 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

forcedotcom/cli 的其他 Issue

查看 forcedotcom/cli 的全部 Issue

相似的 Issue

更多 CLI Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。