远程协议
由桌面和移动公司共同拥有的可移植化学和纯剂回收功能. 根拥有JSON-RPC和连接合同. 代理和配置传输 具有单独的导出;既不拥有套接字、密钥、持久性,也不重新连接. 根还拥有共享的发现服务类型, TXT 格式和固定 WebSocket 路径。 这些是樱桃同行互操作性合同,而不是听众或路由政策.
发表于 @cherrystudio/remote-protocol 通过寄存器的更改器发布
工作流程。 软件包版本独立于谈判的电线协议跟踪
版本。 仅凭建构或通过包件测试,并不能对桌面,博览会或中继互操作性进行限定.
运行 pnpm --filter @cherrystudio/remote-protocol test, (中文(简体) ), typecheck 财务报告和审定财务报表 build。 。 。 .
外部消费者通过包出口进入,从未 src/ 深度进口.
事件会减少缓存, 将文本字节长度逐一缩短, 无需添加线条
字段。 仅在初始长度计算后追加新文本编码; 恢复或替换
部件计算自己的长度。 制片人读取 part.append 通过出口抵消
textByteLength,因此发送并验证一个附件共享一个缓存条目。 完成后仍检查全部内容摘要并确实
不继承流快照的缓存 。 旧的快照仍然可以独立使用
用于原子恢复; 其被弱控的缓存项随这些物体而消失.
连接地址
connection.hello.connectionEndpointsVersion: 1 广告 connection.endpoints。 。 。 .
请求中指定一个已经核准的域名; 桌面重新检查其当前授权
准备答复前后。 结果包含桌面身份和
最多32个直接终点,没有邀请或VPN证书. 客户端给
身份,保持建议短暂性,并且只坚持经过明确核实的选择.
没有这种可选能力的同行保留了现有的对接和人工地址流动.
失败的结果
./failure 拥有由活执行和消息共享的已绑定的执行失败快照
历史 信件带有明确的待处理/成功/错误/被搁置状态。 执行失败需要
失败和终端消息身份。 终端持续性或随消息持久
和历史修改,或 不可持久,单独持续失败。 RPC 授权错误
并且指令性收款仍然独立于执行结果.
connection.hello.agentFailureVersion: 1 广告本合同。 新客户需要它给特工
只访问; 配置和配对保留其现有的协议。 旧处决 error 字段
仍然是相容性投影。 缺少所需字段的旧缓存预测重建自
a 检查站。 上游未知原因分类为: unknown; 电线快照验证
版本理性词汇,不重写检查站文摘使用的字节.
互动和工作空间增加
- 互动摘要可声明
kind: question; 完整的问题保留在版本输入中 资源与使用questionInputSchema反应是明确批准、否定和不选择的理由, 或用问题键值回答。 对照当前相互作用验证完整性 主机; 方案验证形状和界限。 问题文本密钥必须是独一无二的. - 工作空间目录广告
systemWorkspace; 创建接受明确的系统或注册 选择。 主机拥有目录分辨率并返回真实的工作空间ID和类型. - 遗产平原
decision财务报告和审定财务报表workspaceId变异仍被接受,包括日记回收. 申请必须选择一种形式。 新客户对已有客户使用遗留表格 操作和添加的明确表格; 旧目录并不意味着系统支持. - 命令身份包括完整答案或工作空间选择. 使用相同的ID重试 而不同的输入则是一种自相矛盾,从不是一种替换操作.
代理目录可选择包含 emoji (非空Unicode文本,最多64个UTF-16单位).
它显示的是元数据,而不是文件路径或 URL 。 与旧主机兼容;
客户保持正常回落。 图像传输在本字段合同之外.
信件使用情况
AgentMessage.usage 是一个可选的可实现摘要。 它带有非负数的符号数,
缓存/理由分类账、按货币计价和要求计价以及完成运行时间
期限。 缺席意味着未知,而不是零。 它故意排除了按要求进行的会计科目
和运行时间跨数组。 信息拥有快照,所以历史反应,消息更新,
检查点/重放时使用一个方案。 年长的同龄人可能忽略它;配对能力门不变.
可选的公开模型摘要(modelId, (中文(简体) ), providerId, (中文(简体) ), name) 由信件快照共享
和代理目录条目。 一个消息记录其生成模式; 目录记录当前
配置 (null 对未配置,对旧主机省略。 也不带供应商的秘密
或要求接收设备安装模型.
对齐地址
pairingQrSchema 接受遗留 v2 IP/ port 邀请和 v3 邀请并完成
endpoints (单位:千美元)host, (中文(简体) ), port, (中文(简体) ), security) (中文(简体) ). fixtures/pairing-qr.json 也由
Mobile的轻量级启动计划. 更改电线合同时保持固定副本对齐.
parseDirectEndpoint 接受HTTP(S)输入作为WS(S)的同名词,保留TLS和显式端口.
固定路线还在 /v1/remote/connect; 广告终点使用 advertisedEndpointSchema
拒绝回转和通配符目的地.
页面信件摘要
connection.hello.agentMessageSummariesVersion: 1 广告可选
agent.messages.list 参数 partsMode: 'paged'只发送此参数
在观察能力后 没有答复,答复仍然完整 partIds。 。 。 .
页面答复中包含 AgentMessageSummary 项:信息身份、修订、,
角色、地位和可选用途/模型/失败元数据 partsMode: 'paged'
没有 partIds。通过 agent.parts.list 使用信件
身份证和审校: nextCursor 直到无效。 省略的索引不是
空消息来. 历史和部分修订检查保持不变.
AgentMessageListItem 是完整的信息/摘要结合。 摘要只列出;
事件、检查站和减少人员仍需要全部 AgentMessage 示意图.
没有能力的同伴保持现有的请求和响应形状.
响应预算返回中不可分割的列表项目 RESOURCE_EXHAUSTED
与 details: { kind: 'ITEM_TOO_LARGE', itemBytes, budgetBytes, retryable: false }。 。 。 .
同样的请求和数据无法通过等待恢复. 其他资源已用尽
错误保留其语义;遗留客户端可能忽略其他细节.
备用代理附件
connection.hello.agentUploadsVersion: 1 制作/获得/恢复/完成/取消和二进制DATA/ACK记录.
上传身份被限定为设备和代理授权,独立于套接字和会话.
一个持久 committedOffset 这是唯一的恢复位置. resume 使用同位素还原ID
和预期的作家时代; 老作家不能推进替换上传。 DATA携带由噪声AEAD认证的生字节,每个块后有一个可耐用的ACK.
桌面在发布现成的管理下的参考文献前计算完整文件SHA-256.
可选 agentUploadChecksum: 'sha256' hello 能力支持独立的源验证 :
准备修正 checksumAlgorithm,完整的用品 expectedSha256返回实际
sha256。不匹配会变成持久的失败状态 CHECKSUM_MISMATCH; 磁盘/出版物出错
使用情况 VERIFICATION_FAILED。修改记录的文摘或模式是一种偶应冲突.
缺席-模式上传保留了遗产行为. 新的移动散列 其保留不可改变的来源 本土
与正常 DATA 传输并行; 恢复在恢复写入前比较保存的文摘.
限制:1个GiB/file,2个GiB/message,8个文件,1个MiB区块和2个未决区块. 24小时闲置后失效或共计7天,4个GiB/device和8个GiB/Global 保留。 上传权限和到期后会独立于电文收据进行再检查. 发送接受文本,文件,或两者兼有. 客户端冻结持久发送中的上传引用 命令,然后在提交和查询该命令在不确定结果之后的接收. 它们绝不能在已经提交的命令中替换过期的上传引用 .
上传的文件历史使用一个有修订约束的内容引用,从不使用桌面文件系统路径. 内容页在目前的代理赠款下阅读,并与完整的摘要核对.