sf agent mcp asset replace --assets null throws raw TypeError instead of InvalidShape
评估
- 难度
- 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 内容生成。
描述
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 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
forcedotcom/cli 的其他 Issue
-
investigating validated
难度 2/5 1-3 小时 新手友好度 72/100
forcedotcom/cli#3671 · 1 条评论 ·
-
area:afdx bug owned by another team
难度 2/5 1-3 小时 新手友好度 78/100
forcedotcom/cli#3608 · 2 条评论 ·
-
难度 3/5 1-2 天 新手友好度 68/100
forcedotcom/cli#3670 ·
-
announcement
难度 1/5 1 小时以内 新手友好度 1/100
forcedotcom/cli#3668 ·
-
bug investigating validated
难度 3/5 1-2 天 新手友好度 66/100
forcedotcom/cli#3667 · 5 条评论 ·
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 72/100
evarness-ai/iris-harness#398 ·
-
难度 2/5 1-3 小时 新手友好度 76/100
-
area:tag area:tag---json---markdown--n bug factory:dogfood factory:triaged persona:scripter platform:linux-cloud priority:p3 type:bug
难度 2/5 1-3 小时 新手友好度 74/100
gitbutlerapp/grit#1940 · 1 条评论 ·
维护者通常 1 天内回复
-
bug
难度 2/5 1-3 小时 新手友好度 84/100
GoogleCloudPlatform/gce-rescue#195 ·
维护者通常 2 天内回复
-
enhancement
难度 2/5 1-3 小时 新手友好度 72/100
jscott3201/rusty-bacnet#2056 ·
维护者通常 1 天内回复