@arbol-ai/ cli (英语)
arbol你终端的Arbol API。 它的命令是由
云浮堡垒 从平台的公开OpenAPI,
https://api.getarbol.com/openapi.json,每个请求
穿过 @arbol-ai/sdk。它的版本是铸造,
从2.1.0起(见 释放(三); arbol --version 也命名 API 发布命令
产生者,如 arbol 2.1.0 (Arbol API 1.20261019.4056)。 。 。 .
npm install --global @arbol-ai/cli
arbol --version
它需要26号节点或更新 fetch 财务报告和审定财务报表 Temporal sDK的用途。 同样的命令更新了它.
一个 arbol 安装在 Npm 上的 CLI 之前, 或是先关闭安装 :
npm uninstall --global @getarbol/cli,或删除 ~/.local/bin/arbol 财务报告和审定财务报表 ~/.local/share/arbol。 。 。 .
简介
一个剖面图是给Arbol打电话的一种命名方式:登录,或API密钥. 命令使用配置文件 --profile
名字,另一个 ARBOL_PROFILE 名称, 否则默认配置文件; arbol auth use <profile> 变动
默认.
arbol auth login # a login, saved as the default profile
arbol auth login --profile clinic # another login, for another account or organization
arbol auth api-key --profile ci < /secure/path/arbol-key
arbol auth profiles # * marks the default
arbol auth use ci
arbol visoft connections list --profile clinic
ARBOL_PROFILE=ci arbol sura appointments lookup
给一个命令的 API 密钥, 通过 --api-key-stdin 或者说 ARBOL_API_KEY,胜过每个
配置文件, 如 GH_TOKEN 对 gh:脚本,服务器和CI可以运行而不保存任何东西.
何时 arbol auth login 无 --profile 以他人身份,或以他人身份,或以他人身份,
而不是默认配置文件,它询问登录到哪里:一个新的配置文件(它建议从
(b) 以“组织”代替“概况”,或以“概况”代替“概况”或“概况”(“概况”)arbol auth switch 移动
他们之间。 在剧本中,它一无所获,就要求 --profile 换句话说. --profile <name>
总是保存该配置文件中的登录 .
arbol auth status 使用证书的指纹,以及登录时其组织;
arbol auth logout 签名登录, 或忘记配置文件的 API 密钥( 密钥本身有效, 直到它生效)
在Arbol账户中被撤销.
登录
arbol auth login
arbol sura appointments lookup --help
arbol agenda appointments list --limit 25
arbol auth switch [<name|org_…>]
arbol auth status
arbol auth logout
CLI只知道API的起源(https://api.getarbol.com,或者一个 ARBOL_API_URL 名称,
就像MCP客户端所做的:
/.well-known/oauth-protected-resource(RFC 9728) 名称 授权服务器,它自己的元数据名称是它的端点和密钥./.well-known/oauth-client/arbol-cli(RFC 7591客户端元数据) 命名 CLI 的公共客户端( 否) ),循环地址返回登录地址,以及需要请求的范围.
登录后打开系统浏览器(Authorization Code with S256 PKCE和回回调,
http://127.0.0.1:43817/callback) (中文(简体) ). 当您属于多个组织时,登录页会问
在你签了字后,哪一个. arbol auth switch 列出您所属的组织 :
在切换前,其他任何标志通过单个签注再次输入,它要求没有密码.
arbol auth switch <name|org_…> 在不要求脚本的情况下做同样的事情。 本届会议是为
组织已核实的ID标志名称.
要求的瞄准镜是API发布的每一个许可, 因为一个符号的权威是它的
范围与角色权限相交; ARBOL_SCOPES 替换它们。 请求一个
范围并不赋予它.
CLI验证状态,nice和S256PKCE以及ID标志的签名和组织.
--no-browser 打印用于手动打开的 URL,但仍使用此机的回回调.
保存会话和密钥的地方
~/.arbol/config.json (mode 0600) 持有简介和默认, 没有秘密。 每个登录
会话和每个保存的 API 密钥都是一个密封文件 ~/.arbol/ (模式0700目录,0600)
档案:AES-256-GCM 在操作系统保存的每人和机器一个随机键下。 简介、发行商、,
客户端,受众,API,用户和组织分区会话,每个文件都与其名称相接.
没有简单的背书.
| 监督办 | 钥匙 |
|---|---|
| 马科斯 | 关键链项 “Arbol CLI”(com.getarbol.cli, (中文(简体) ), session-key),保存于 /usr/bin/security |
| 链接 | 特勤局,通过 secret-tool (包装) libsecret-tools(中文(简体) ) |
| 窗口 | ~/.arbol/session-key.dpapi,由 DPAPI 为 Windows 用户保护 |
操作系统每个命令都要求一个密钥, 当密钥创建时只写一次; a
刷新只重写被封存的文件 。 在 macOS 上, Keychain 信任创建项目的程序 .
来自Homebrew, nvm 或 fnm 的节点是临时签名的,所以使用从节点发出的键链的 CLI 要求
每次更新节点后再次登录密码 . /usr/bin/security 由苹果公司签名并保持信任,
就像它为 gh因此,CLI从来没有问。 喜欢 gh,任何您可以读取密钥的程序
通过它;另一个用户、备份或被窃磁盘不能。 密钥从未出现在命令行中 .
每个新鮮點被锁定到各个过程. 在旋转交换前,密钥环记录
正在进行中标记。 丢失的响应或崩溃需要新的登录, 绝不是盲目重试
前一个刷新符号 。 烂透了 .lock 在确认程序已崩溃后才删除
进程已停止;然后再次登录。 即使远程吊销失败, 也会删除本地证书
并报告这种不确定性。 它不会假装已经发行的代币 立即消失.
机器和操作输入
在Arbol账户中为一个组织创建并显示一次 API 密钥 。 密钥永远不会被接受
作为命令行参数 : arbol auth api-key 从stdin上读取(或要求它而不显示)
检查它与API并封存它; --api-key-stdin 财务报告和审定财务报表 ARBOL_API_KEY 将一个用于一个
单命令而不保存它。 一个被拒绝的密钥永远不会回到登录状态 .
ARBOL_API_KEY="$(cat /secure/path/arbol-key)" arbol visoft connections list
arbol sura appointments lookup --api-key-stdin < /secure/path/arbol-key
命令为 arbol <service> <resource> <verb> [id],行动的公共名称。 服务就是服务
单词:其出版的id没有连字符,所以 salud-total.affiliations.lookup 实值
arbol saludtotal affiliations lookup (和 policia-colombia 实值 policiacolombia) (中文(简体) ). 已公布的编号
仍然工作在您以前打过字的地方 (arbol salud-total …) (中文(简体) ). arbol <service>
列出服务的命令; --help 打印其字段后,每个字段接受的值
默认和示例. --dry-run 打印命令发送的请求(方法、 URL 和正文)
不读证书 或发送任何东西。 删除请求在终端上确认; a
脚本通过 --yes。 。 。 .
每个输入字段都是一面旗 (--integration-id sura),或整个输入来自
--input file.json (单位:千美元)--input - 读取 stdin; 旗帜覆盖其字段; 与 --api-key-stdin,使用一个
存档). CLI在发送前根据操作的精确计划验证输入. 这个
响应的数据被打印为 JSON ; 失败会打印它的代码和请求 ID, 并且, 对于写
没有答案,结果未知, 并退出非零。 即使401年之后 也没有再审过
或 403; 在重复之前核对不确定的文字.
ARBOL_API_URL 选择新配置和 API 密钥的可信非生产部署
; 必须是 HTTPS 源代码。 签了字的一切都从里面发现了
配置保存它创建时的 API .
发展
bun install
bun run forge # build the pinned Cloudflare Forge with cargo into .forge/ (once; needs Rust)
bun run openapi # download https://api.getarbol.com/openapi.json
bun run generate # src/generated/ from openapi.json with the plugin in generation/plugins/cli.ts
bun run verify # typecheck and dist/; tests require an explicit human request
src/generated/ 是插件的输出, 未经编辑; 其它所有在 src/ 这是CLI本身.
openapi.json 在一代人的时间下下载,但未执行 src/generated/generation.json
用于释放、Forge 承诺和插件的记录.
释放
API的发布通过三个寄存器,每个寄存器由它之前的寄存器开始:
- 项目-arbol-出入口 在
https://api.getarbol.com/openapi.json发送openapi-release到项目 -arbol -sdk -js. - 项目- arbol- sdk- js 重新生成
@arbol-ai/sdk从它,出版它到npm和发送sdk-release这里:{ "version": "<SDK version>", "openapi": { "release": "...", "sha256": "..." } }。 。 。 . - 给, (中文(简体) ), 生成 openAPI 内容改变时发布 :
sHA -256 其犬科JSON没有
info.version(按键排序,无空白;见generation/openapi-hash.ts,相同的散列 sdk -js计算),比较 与openapiContentSha256主语src/generated/generation.json。当@arbol-ai/sdk针头不是主针 否则,运行停止 没有承诺或 发表。 解开指针@arbol-ai/sdk准确的说,再生src/generated/,何时bun run verify通行证承诺Release Arbol API <release> with @arbol-ai/sdk <version>主要项目和 运行 发布 承诺bump: minor。 。 。 .
SDK 生成针是版本 sdk-release 名称。 每6小时,用手,生成运行
同样的检查和针头最高 @arbol-ai/sdk 其发表 package.json 说它是产生的
从相同的OpenAPI内容(arbol.openapi.sha256虽无,但以警告而止,
因为SDK是先发布的 它的推力使用组织GitHub App的安装符
(Arbol瓶:变量) ARBOL_BOT_APP_ID 和秘密 ARBOL_BOT_PRIVATE_KEY),故犯罪不断
检查像任何其他.
版本是 semver, 由 Publish 从 npm 上的最高版本计算
(单位:千美元)generation/release.ts:
- Generate的释放使未成年人长大:2.1.0,然后是2.2.0. 第一个2.x释放是2.1.0;在此之前
版本为构建日期和时间(
1.YYYYMMDD.HHMMSS) (中文(简体) ). - OpenAPI 不携带的对 CLI 自身代码的更改,通过运行 Publish 发布
手放在主线上。 内容
bump输入patch(默认),minor或者说major。 。 。 .
发表 package.json 记录 OpenAPI 命令来自:
"arbol": { "openapi": { "release": "<info.version>", "sha256": "<content hash>" } }npm 接收
与组织的软件包 NPM_TOKEN。软件包访问在源寄存器时保持公开
这是私人的。 Npm不支持私有源寄存器, 从而禁用证明.
迁移到CLI 3
CLI 3使用SDK 5和目前的公有所有者合同. SURA 指定为使用
arbol sura appointments lookup;议程预订发现有单独的
booking-locations, (中文(简体) ), booking-offerings, (中文(简体) ), booking-requirements, (中文(简体) ), booking-slots
财务报告和审定财务报表 nearest-booking-slots 资源。 账户用途 account organization get
财务报告和审定财务报表 account organization update。命名的资源标识符和 JSON 请求
字段遵循每个命令的帮助.
这是针对不兼容命令和要求更改的故意大放出. 自动生成不检测相容性或选择主版本; 在发布前审查所有者合同的变更.
许可证
验证
bun run verify 检查类型并构建 CLI 不执行测试。 测试是
手动: 运行 bun run test 或者说 bun run verify:with-tests 只有在人类要求的时候
运行。 自动校验,生成和发布使用静态路径.
工作人员联系管理
经授权的工作人员用户可以管理与 arbol account connections create, (中文(简体) ), update <connectionId>, (中文(简体) ), delete <connectionId>, (中文(简体) ), discover 财务报告和审定财务报表 refresh-tools <connectionId>,使用 --input 为主人的严格JSON身体。 这些隐藏的REST命令使用捕获的账户合同,而不是公共的SDK或MCP认证录入. API需要真正的用户和 account:connections:operate; 本地拒绝一个 API- key 配置文件 。 请求发送一次,在重复之前必须检查一份不确定的书面. --dry-run 是本地的,不认证或保存证书.
证书捆绑由Account Vault封存. e-Oficlinic在解剖学上既采用登录阶段,又采用源公司/站点/IPS选择;Sanitas采用其门户登录和文件类型。 永远不要在仓库或 shell 历史中放置真实的证书 。 刷新这些合同 从干净的业主退房 bun scripts/update-account-operator-contracts.ts <account-repository>。抓取的文件记录所有者的承诺和来源散列.