feat(plugin-protocol): add protocol foundations (stack 1/7)#73
Open
wanglongan587 wants to merge 10 commits into
Open
feat(plugin-protocol): add protocol foundations (stack 1/7)#73wanglongan587 wants to merge 10 commits into
wanglongan587 wants to merge 10 commits into
Conversation
1 task
Establish validated plugin identifiers and strict manifest parsing. Add the v1 Agent and Workbench package model for later wire contracts. Co-authored-by: Cursor <cursoragent@cursor.com>
Define the bounded five-byte frame format and cover split, coalesced, and malformed input behavior before adding JSON-RPC messages. Co-authored-by: Cursor <cursoragent@cursor.com>
Introduce opaque IDs, page limits, and JSON-safe numeric leaf types so lifecycle and Agent contract modules can share one validated value layer.
Add the closed Agent request/response/event shapes on top of leaf types so lifecycle stream envelopes and method registry can reference one contract.
Add initialize/activate/deactivate/stream/exit DTOs and invariants so Host and private bootstrap share one wire lifecycle contract.
Add request/response/error framing helpers on top of the binary frame codec so Host and plugin runtimes share one JSON-RPC parse/reject matrix.
Register the closed Agent method set and invocation semantics so SDK and runtime dispatch share one method catalog.
Close the protocol crate with cross-field Agent validators, TypeScript export helpers, and checked-in Frame/Agent golden fixtures for drift detection.
wanglongan587
force-pushed
the
pick-0717-01-protocol
branch
from
July 20, 2026 03:45
b2a922f to
beffb5d
Compare
EricWvi
marked this pull request as ready for review
July 20, 2026 06:06
wanglongan587
requested review from
EricWvi,
HappyAuratus,
Linxinrong8023,
ObsisMc,
Re1lya,
Rhythmarvin and
djsdg
July 20, 2026 06:26
djsdg
reviewed
Jul 20, 2026
|
|
||
| /// Parses the Request profile while retaining arbitrary ids for the required fatal diagnostic. | ||
| fn parse_request(object: &Map<String, Value>) -> Result<JsonRpcRequest, JsonRpcParseError> { | ||
| require_allowed_fields(object, &["jsonrpc", "id", "method", "params"])?; |
Contributor
There was a problem hiding this comment.
当前不兼容 envelope 字段会先被 require_allowed_fields 判定为 UnknownField,因此后面的 FrameEnvelopeMismatch 分支无法到达。虽然消息仍然会被拒绝,但这会导致错误分类与代码表达的设计不一致;如果后续 process/manager 对两类错误采用不同处置策略,mismatch 策略将永远不会触发。
请确认这两类错误是否需要区分:如果需要,建议调整检查顺序并更新测试;如果不需要,建议删除 FrameEnvelopeMismatch 和不可达检查,统一使用 UnknownField。
Author
There was a problem hiding this comment.
检视意见合理:require_allowed_fields 会先把 result/error 等判成 UnknownField,导致 FrameEnvelopeMismatch 不可达。我将调整检查顺序并补测试。
FrameEnvelopeMismatch was unreachable because require_allowed_fields rejected result/error/method/params first. Check shape incompatibilities first so mismatch and unknown-field failures stay distinct. Co-authored-by: Cursor <cursoragent@cursor.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
ora-plugin-protocolfoundations: identity/manifest, binary frame codec, agent DTOs, lifecycle handshake, strict JSON-RPC, method registry, validation + golden fixtures..gitignoretweak from the branch root (1 line).Stack
Test plan
cargo test -p ora-plugin-protocolcargo fmt --all -- --checkMade with Cursor