@ displaydev/ cli (英语)
CLI 用于 显示。dev ——发布HTML和Markdown与公共,公司,私人,或被邀请人的访问.
空格文件和文件夹
创建、阅读、更新和组织文件和文件夹。 运行 dsp --help 或一个
命令组 --help 对于它的选项.
dsp space list
dsp space list-contents <spaceId>
dsp file create --parent-id <folderId> --preview
dsp file create <file> --parent-id <folderId> --content-type text/markdown --idempotency-key <requestKey>
dsp file get <fileId>
dsp file read <fileId>
dsp file search <fileId> <query>
dsp file edit <fileId> --old "old text" --new "new text" --base-revision <revisionId> --idempotency-key <requestKey>
dsp file export <fileId> --output <outputPath>
dsp file history <fileId>
接受空格和文件夹内容 --sort name|modified|format|owner 财务报告和审定财务报表 --dir asc|desc。 。 。 . format 排序显示的类型标签,包括任意文件格式的标签; --type 仍然是单独的过滤器。 只有“名称”将文件夹放在第一个方向。 相同类型或所有者值按选定方向跟随名称,缺失的拥有者停留在最后.
空间和文件夹子列表也支持 --sort createdBy 用于显示的创建者名称。 使用 --dir asc 或者说 --dir desc。平等的创建者名称沿着此方向。 未知的创造者停留在最后 。 此选项无法在 Home, 与我共享, 空间目录, 或回收站中使用 .
Ưμ㼯Adsp file list --view home与我同在--view shared-with-me)并接受 format 财务报告和审定财务报表 owner。 。 。 . dsp file list 只返回文件。 使用 dsp folder find --view home 用于主文件夹,或 --view shared-with-me 用于共享文件夹。 Home 在所有类型的文件之前显示文件夹 。 和我共享文件夹和文件 空间目录、回收站和固定顺序名称搜索保留了现有的排序选择。 以相同的查询将每个光标递回; 如果在项目更改后被拒绝或无法访问, 则无需光标即可重新启动 .
添加 --created-by <userId> 到空格/文件夹内容或家/与我共享列表。 使用 --include-creators 返回所有匹配页面的可访问创建者选择,然后选择返回 userId。创建者是原始创建人,独立于所有者,由共享,或随后编辑。 更改时无需光标即可重新启动 。 空间目录,回收站和固定顺序搜索不接受这些选项.
dsp folder list <folderId> --include-creators
dsp folder list <folderId> --created-by <userId>
dsp file list --view home --created-by <userId>
在创建前预览目的地和观众. 录取 --parent-id
选择 My Space 只用于明确支持它的命令 。 使用
来源的实际媒体类型. 请求密钥使用 16 - 128 个字母, 数字, 周期,
下划线、平板或连字符。 在一个
反应不确定。 文件更新保留了明确的基础修订ID.
调和平分的修改,而不是沉默地取而代之.
显示将空间请求结果保留24小时。 在该窗口之后,即使原始请求密钥也可以作为新的操作执行. 在重试更古老的不确定结果前读取当前状态 。 在重试前调和结果 。 不要仅仅依赖请求密钥来防止重复.
Spaces命令使用文件,文件夹,Space,以及修订版ID. 准确复制每个身份 不要通过 要编号的兼容性选择器的ID。 指挥团体包括:
| 组 | 任务 |
|---|---|
dsp space | 浏览空间,检查当前设置,创建/管理直接成员,重命名,删除/保存,检查或永久删除回收站中的项目 |
dsp folder | 浏览、创建、重命名、复制、移动、查找、检查/更改访问、请求访问和回收站 |
dsp file | 创建/读取/搜索/编辑/重置/下载、重命名、复制、移动、检查历史、保存/删除符合条件的修订、检查/更改访问和回收站/重置 |
dsp group | 创建组,管理成员,并指派组管理员 |
dsp member | 预览管理器覆盖,并解除一个成员的明确确认功能 |
dsp access-request | 核准或驳回现有共享权限存储的请求 |
dsp comment 编号 : dsp thread | 本地讨论、答复、呼喊、编辑、删除、解决和重新开放 |
dsp watch 编号 : dsp unwatch | 个人讨论订阅 --file <id> |
dsp search | 跨文件索引搜索空间 。 遗产组织保留名称和确切来源模式. |
永久删除回收站中的项目
使用 dsp space list-trash <spaceId> 找到物品的ID。 预览明确
间距 dsp space delete-trash <spaceId> <itemId>… --preview启用
dsp space delete-trash <spaceId> --all --preview 审查所有符合条件的回收站
在那个空间。 审查选择、排除和存储,在
确认.
重复相同的空格和选择 --confirm, (中文(简体) ), --if-match <etag>,以及
--idempotency-key <requestKey>引用这个论点,让ETag自己的
双引出到CLI. 如果反应不确定 保持同样的空间,
选择、ETag和密钥。 如果预览被更改或恢复控件被屏蔽
请求中,在再次尝试前获取新的预览 。 我的空间拥有者和共享
空间根管理器可以使用此操作,使用个人证书和
所需范围.
JSON 空间命令的结果 转到 stdout 。 诊断和继续指示都去
{\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}请说. file export 流精确字节, 除非选择输出路径 .
需要覆盖本地输出 --overwrite。失败的命令返回非零退出代码.
编号艺术退出码表并不定义每个空间出错. 保持光标带有其原始查询和过滤器.
默认的个人密钥跟随其所有者当前对空间的访问. 有效的已测范围的个人密钥也在Spaces工作. 它们保留其范围限制,成员公布上限,连同所有者目前的太空访问. 移徙保留了关键和秘密。 OAuth保持已核准的范围限制.
组织服务密钥需要它们自己获得进入合格共享空间的许可. 他们不能继承创造者的权利 仅靠组织作用就无私 内容已读取。 不切换身份、使用兼容命令或拓宽 拒绝后的观众.
本地 MCP 接受本地文件路径 。 托管的 MCP 接受内线源或相机
上传身份证. 托管 export_file 返回下载描述符,而本地 MCP
可以写入一个明确的输出路径。 上传和下载证书是秘密.
使它们远离共享日志和最后答复。 仅公用链接访问
不授权创建或编辑文件.
安装
npm install -g @displaydev/cli
认证
# Interactive login via email OTP
dsp login
# Or set an API key (from the dashboard)
export DISPLAYDEV_API_KEY=sk_live_...
运行 dsp whoami 检查您的证书用途的账户和组织.
对于脚本, dsp whoami --json 指纹 user, (中文(简体) ), organization, (中文(简体) ), membership, (中文(简体) ),
财务报告和审定财务报表 keyType返回组织密钥 null 页:1 user 财务报告和审定财务报表 membership。 。 。 .
代理本地登录
代理人不得索取、阅读或转发登录密码或检察官办公室。 用户运行
dsp login 在他们自己的终端,并完成那里流出的即时或浏览器.
毒剂随后再用CLI所保存的登录. 它不能检查证书
存储,在聊天中请求符号,或开始登录,仅用于绕过许可拒绝.
下面的引用实例记录了一个人或一个人的CLI接口
明确控制一体化。 他们没有指示代理人收集检察官办公室.
命令适应其环境:
| 召集 | 行为 |
|---|---|
dsp login --email [email protected] (TTY) (中文(简体) ) | 通知检察官办公室 通知终端的密码. |
dsp login --email [email protected] (非TTY语) | 派出检察官办公室和0号出口 人员在自己的终端完成核查. |
dsp login --email [email protected] --code 123456 | 验证代码,坚持符号,出站. |
对于不依赖道具解析的结构化输出:
dsp login --email [email protected] --json
# → {"status":"otp_sent","email":"[email protected]",
# "next":{"command":"dsp login","args":["--email","[email protected]","--code","<code>"]}}
dsp login --email [email protected] --code 123456 --json
# → {"status":"authenticated","method":"otp","email":"[email protected]",
# "suggestedActions":[{"type":"install_skill","command":"npx",
# "args":["skills","add","display-dev/skill","--skill","display-dev"],
# "requiresApproval":true}]}
dsp login --email [email protected] --json
# → {"status":"authenticated","method":"sso",
# "suggestedActions":[{"type":"install_skill","command":"npx",
# "args":["skills","add","display-dev/skill","--skill","display-dev"],
# "requiresApproval":true}]}
当提交电子邮件的组织自动选择 SSO 需要它来.
登录失败使用 {"status":"error","error":"<code>"}。稳定错误
代码是 email_required, (中文(简体) ), api_key_required, (中文(简体) ), input_failed, (中文(简体) ),
invalid_api_key, (中文(简体) ), sso_required, (中文(简体) ), disposable_email, (中文(简体) ), send_failed, (中文(简体) ),
invalid_or_expired_code, (中文(简体) ), access_denied, (中文(简体) ), device_code_expired, (中文(简体) ),
authentication_failed,以及 configuration_failed。 。 。 .
检察官办公室为单一用途,10分钟后期满。 人类控制
集成可以使用相容性 --code 表格,将检察官办公室简略列出
正在进行中的辩论。 特工不得接收或转发. 结果
课程符号被坚持下来,并且只被CLI使用.
在OTP, SSO, 或 API- key 认证之后, CLI 建议可选 显示。 dev 技能安装 :
npx skills add display-dev/skill --skill display-dev
安装技能更改代理拥有的配置 。 一个特工必须得到 用户在运行命令前的批准。 登录从不运行安装器 .
使用量
# Publish a file. User-scoped credentials create a private artifact;
# org-scoped service keys create a company artifact. Publishes without a
# credential create a public artifact you can claim.
# The display name defaults to the filename without the extension.
dsp publish ./report.html
# Share a report with the organization
dsp publish ./report.html --company
# Override the display name
dsp publish ./report.html --name "Q1 Report"
# Publish as public (no login required to view)
dsp publish ./report.html --name "Q1 Report" --public
# Share with external recipients (repeatable)
dsp publish ./proposal.html --name "Q1 Proposal" \
--share [email protected] --share [email protected]
# Update an existing artifact from the version you edited
dsp publish ./report.html --id abc123 --base-version 5
# Change an existing artifact back to company auth
dsp publish ./report.html --id abc123 --base-version 5 --company
# Remove all guest shares from an existing artifact
dsp publish ./report.html --id abc123 --base-version 5 --clear-shares
# Browse and search artifacts
dsp list --author [email protected]
dsp search "quarterly"
dsp search "invoice total" --in abc123@5
# Read a bounded source range, pinned to a version
dsp read abc123@5 --offset 0 --limit 65536
# Replace one exact source span
dsp edit abc123 --base-version 5 --old "Q1" --new "Q2"
# Get artifact metadata, versions, outline, and open threads
dsp get-metadata abc123
# Make an independent copy from the current version
dsp make-copy abc123
# Within your organization, copy a retained version and invite a reviewer
dsp make-copy abc123@3 --name "Q1 plan" --visibility private --share [email protected]
# Delete an artifact
dsp delete abc123 --confirm
# Start MCP server (for Claude Desktop / Claude Code)
dsp mcp
复制默认和目的地
dsp make-copy <shortId> 不需要搜索元数据 。 服务器使用当前
版本中, Copy of <source name>,源可见度,没有继承的收件人.
使用 --visibility private 为私人副本。 公共浏览器复制页面
最初选择私人。 JSON包括: sourceVersion,该版本已复制.
来自另一个组织的合格公共文物可以复制到每个 计划,只使用当前版本。 来源组织必须活跃 允许公共文物。 404表示缺少或没有来源/版本 不识别原因。 先确认目标组织. 被捆绑的回击保留着相同的操作密钥和请求. 无法重用密钥 与不同的输入或另一个目的地。 在未解决的中断之后, 在开始新的复制之前先检查一下该组织的文物.
发布旗帜
| 旗帜 | 效果 |
|---|---|
--name <name> | 显示名称覆盖 。 可选的 – 默认为文件名, 而无需创建扩展名 。 更新后,将文物重命名为"活口". |
--id <shortId> | 更新已有的文物( publishes a new 版本) . |
--base-version <n> | 要求为 --id; 您编辑的当前版本 . |
--public | 为公众设定能见度( 查看时不需要认证) . |
--company | 将可见度设定为 Auth 公司 。 这是org-scoped服务密钥的默认值 . |
--visibility <level> | 设置可见度到 public, (中文(简体) ), company,或 private。 。 。 . |
--share <email> | 允许客人访问外部电子邮件( 可重复) . |
--share-with <emails> | 允许客人访问一个以逗号分隔的电子邮件列表. |
--clear-shares | 删除所有来宾股份 。 仅有效 --id。 。 。 . |
--theme <theme> | Markdown 渲染主题 . |
--reload | 新版本准备好后刷新打开的查看器标签 . |
可见和共享旗帜 默认为“ 保持当前 ” 更新: 省略 --public, (中文(简体) ), --company,以及 --visibility 保持可见度不变;省略 --share, (中文(简体) ), --share-with,以及 --clear-shares 留客名单不变. 仅使用其中之一 --public, (中文(简体) ), --company,或 --visibility组合 --clear-shares 与两个 --share 或者说 --share-with。 。 。 .
在创建上,省略能见度使用证书上下文:用户会话和用户拥有的密钥创建了私人文物;而组织范围服务密钥创建了Company文物. 使用用户扫描证书的 CI 任务应该通过 --company 当结果是为了组织.
对于更新模式,请先以 dsp get-metadata <shortId>启用 dsp search <text> --in <shortId> 财务报告和审定财务报表 dsp read <shortId> 用于限定的上下文,然后 dsp edit 一个精确的替换。 使用 dsp export 当您有意需要完整的本地文件时 dsp publish --id 用于全源替换。 如果文物在服务器上发生改变,则与当前版本对齐,再与该基准重试.
更新保留了为文物设定的格式. 使用一个 .md 备忘文件
工艺品和 .html hTML 文物的文件。 发布新文物时
在Markdown和HTML之间转换.
测试
CLI套装采用三种不同的取来策略,每套装入一个 层叠。 新贡献者选择一个匹配层 他们正在测试——增加第四个几乎总是是错误的.
- 单位级获取假
stubFetchJson(...)(中文(简体) ) - 用于锻炼ApiClient以及任何纯粹在流程中构成它的东西。 低级仪式, 完全控制响应,没有跨进程边界。 使用stubFetchJson(body, init?)助手从cli/src/test-helpers.ts它的茎global.fetch和一个新鲜的JSONResponse每个呼叫并返回vi.fn()所以测试 还可以检查fetchMock.mock.calls[...]倒向原始状态vi.stubGlobal('fetch', vi.fn().mockRejectedValue(...))只为网络.. 失败案例。 具有代表性的例子:cli/src/api-client.spec.ts和一体化 窃听断言cli/src/mcp-mode-selection.spec.ts。 。 。 . - 手卷
createMockApiClient()用于验证的 MCP 工具规格 从 MCP 工具处理器到右边的参数路由ApiClient方法. 循环中根本没有 HTTP; 假是一个普通对象vi.fn()编号. 具有代表性的例子:cli/src/mcp-server.spec.ts财务报告和审定财务报表cli/src/mcp-publish-file-read.spec.ts。 。 。 . - 真实的本地主机 HTTP 固定( R)
createHttpFixture+ 键spawnCli(中文(简体) ) 用于program.actionE2E规格,需要执行指挥官 argv 解析, stdout/stderr 拆分,出站代码,以及完整的HTTP回转. 驱动器 作为真正的儿童过程的CLI。 具有代表性的例子:cli/src/cli-mode-selection.spec.ts, (中文(简体) ),cli/src/cli-subcommands.spec.ts, (中文(简体) ),cli/src/login-otp.spec.ts, (中文(简体) ),cli/src/login-otp-send.spec.ts。 。 。 .
MCP 磁共振
CLI作为MCP服务器在stdio上双打. 添加到您的 MCP 客户端配置 :
{
"mcpServers": {
"display": {
"command": "dsp",
"args": ["mcp"],
"env": {
"DISPLAYDEV_API_KEY": "sk_live_..."
}
}
}
}
检查已存在的文物
使用 dsp,而不是一个匿名的网络获取, 当检查一个文物URL。 平均
文物返回403 不显示.dev证书.
短ID是第一个连字符之前的路径段. 对于
https://display.dsp.so/YQyXggrM-product-video-script,这是 YQyXggrM。 。 。 .
| 需求 | 命令 |
|---|---|
| 上传的字节 | dsp export <shortId> |
| HTML 作为 Markdown | dsp export <shortId> --format markdown |
| 特定版本 | dsp export <shortId>@<n> |
| 来源上下文 | dsp read <shortId>[@<n>] [--offset <bytes>] [--limit <bytes>] |
| 元数据、版本、大纲和打开线程 | dsp get-metadata <shortId> |
| 浏览文物 | dsp list |
| 搜索文物名称 | dsp search <query> |
| 在一个来源内搜索 | dsp search <query> --in <shortId>[@<n>] |
| 精确部分编辑 | dsp edit <shortId> --base-version <n> --old <text> --new <text>; 使用 --old-file 编号 : --new-file 多行 UTF-8 输入 |
| 折旧相容性 | dsp find [query] (将迁移通知写为 stderr) |
只读命令是安全的检查。 诸如 publish, (中文(简体) ), make-copy, (中文(简体) ),
edit, (中文(简体) ), share, (中文(简体) ), rename, (中文(简体) ), delete、标志突变、评论突变、线程
突变,并观看已公布的突变变化状态;仅在
用户请求更改. delete 需求 --confirm。 。 。 .
CLI 默认为 https://api.display.dev设置
DISPLAYDEV_API_URL=http://api.display.test:3331 明确用于当地工作.
发布此软件包
Production Delivery 评估每个 master 推动和呼叫
publish-cli.yml 只有在其规划者承认CLI时,才能作为可重复使用的儿童。 这个
儿童只在 cli/package.json 包含一个比 npm 更新的版本.
当用户可见的 CLI 行为改变时, 将版本更新为同一版本 变化。 套件为前 1. 0 :
- 为新功能或断开更改而增加小版本.
- 增加补丁版本用于后相兼容的补丁.
- 不使用
1.0.0仅仅表示一个突破性的改变 独立的稳定承诺.
出版使用npm OIDC信任出版. 不添加一个 NPM_TOKEN 或者说
--provenance; 这个私人仓库没有sigstore出处.
Npm 信任- publisher 条目必须绑定 display-dev/display-dev 页:1
调用工作流程文件名 production-delivery.yml,而不是可重复使用的孩子
文件名 。 在更改生产呼叫器前更新软件包设置 .