@dieulc/pi-office-protocol (英语)
共享 Pi- for- office 任务表添加的 WebSocket 线条协议
(单位:千美元)packages/add-in/src/bridge/)和皮桥分机
(单位:千美元)packages/bridge-extension/) (中文(简体) ).
将协议放在一个包里 将桥的两半放在
锁定步骤——突破的改变是一次承诺,端到端的对接测试
(单位:千美元)packages/bridge-extension/tests/pane-interop.mjs证明双方说话
运行时格式相同.
信件
- 客户端 – 服务器 :
hello, (中文(简体) ),ping, (中文(简体) ),tool_result, (中文(简体) ),user_message, (中文(简体) ),status, (中文(简体) ),pane_state, (中文(简体) ),abort - 服务器 – 客户端 :
welcome, (中文(简体) ),pong, (中文(简体) ),tool_call, (中文(简体) ),agent_message(德尔塔/最后),tool_activity, (中文(简体) ),error
议定书v2(打破)
v2 添加 证件身份和瞄准目标 桥可以打开几个 同一主机应用程序的文档 :
hello.document: DocumentIdentity—— 说 所需经费。 。 。 .{ id, name, source }地点id是一个稳定的本地散列( o)url_sha256:…编号 :wps_path_sha256:…)或(或)null未保存的文档,以及source这是其中之一"document.url", (中文(简体) ),"wps.activeWorkbook.fullName", (中文(简体) ),"unknown"。原始 URL/路径从未发送.pane_state(客户 ) —— 最佳{ focused?, visible?, activeAt? }这样document: "active"可解析用户正在查看的文档.tool_call.documentId?: string- 电话被传送到(echoed) 用于伐木和平面验证.agent_message最后收益promptId?: string- 将答复与 窗格触发它.OFFICE_TARGET_PARAM = "document"——选择 a 的工具参数键 目标;服务器在将调用转发到窗格之前将其剥离.
V1客户端在握手时被拒绝 protocol_mismatch; 更新两者
一半合起来(protocol0.4.0,桥0.4.0).
议定书v3(补充)
v3使一扇窗帘迅速感觉活泼而可中断. 没错 添加剂: 一个 v2 框仍然被接受,只收到最后答复.
agent_message三角洲 现在实际生产了帧 : 解答窗格提示服务器流{ type: "agent_message", kind: "delta", text, promptId?, messageId? }, (中文(简体) ), 组合以保留在MAX_TEXT_CHARS三角洲是 只显示页:1 连接不能保证与最终文本相等,所以面板替换 它的活缓冲器kind: "final"当它到达.abort(客户-服务器) -{ type: "abort", promptId? }停止运行 回答这个提示( 或任何运行在飞行中, 当promptId页:1 v2 服务器忽略了框架, 所以必须停止按钮 如果答复不断到来,仍可使用.MIN_SUPPORTED_PROTOCOL_VERSION = 2财务报告和审定财务报表isProtocolVersionSupported()- 那个 服务器接受整个[MIN_SUPPORTED_PROTOCOL_VERSION, BRIDGE_PROTOCOL_VERSION]窗口,而不是要求精确匹配.- 三角洲只发给那些
hello.protocolVersion >= 3; 服务器 从不向v2平面发送三角地(它会放弃它).
将两个部分一起更新到破碎的改变上;添加剂的改变可能运走 (protocol 0.5.1,桥口0.6.0).
版本容量( C)
BRIDGE_PROTOCOL_VERSION 仅被撞上 断开 信件形状更改.
添加字段使两者相容:
welcome.serverVersion?: string——桥口扩展包版本.welcome.capabilities?: BridgeCapability[]目前"http-health"(服务器答案)GET /health与JSON元数据),"agent-deltas"(服务器流)agent_message三角洲(三角洲),"client-abort"(服务器) 阁下:abort框架),以及"manual-lifecycle"(桥停了) 直至/office connect;客户端不得假定 0.6 命令存在于 没有这种能力的桥梁)。 优先检查一个版本的能力 比较,所以在运行时间可以发现对等者的特性.
两者都是 选项。缺席 capabilities 数组( 或缺失)
serverVersion)表示对等点是一个遗留的0.1.0桥:客户必须降解
优雅( 直播的 WebSocket 状态仍为权威) 而不是
假设服务器无法访问 .
见 src/protocol.ts 为打入的形状.