Skip to content

Commit 9a3c67a

Browse files
committed
docs: regenerate protocol artifacts
First generated output from `make protocol-artifacts`: JSON Schema + OTel semconv for the 20 attributes declared in docs/protocol.md. closes #19
1 parent c4b5d6d commit 9a3c67a

3 files changed

Lines changed: 222 additions & 0 deletions

File tree

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
{
2+
"$schema": "https://json-schema.org/draft/2020-12/schema",
3+
"$id": "https://coilysiren.me/otel-a2a-relay/o2r-attributes.schema.json",
4+
"title": "o2r span attribute registry",
5+
"description": "Generated from docs/protocol.md. Do not hand-edit.",
6+
"type": "object",
7+
"properties": {
8+
"agent.id": {
9+
"type": "string",
10+
"description": "Stable per-agent identifier inside the deployment."
11+
},
12+
"agent.name": {
13+
"type": "string",
14+
"description": "Human-readable agent name."
15+
},
16+
"agent.role": {
17+
"type": "string",
18+
"description": "Broad role in the topology.",
19+
"enum": [
20+
"relay",
21+
"orchestrator",
22+
"planner",
23+
"validator",
24+
"worker",
25+
"deployer"
26+
]
27+
},
28+
"agent.specialization": {
29+
"type": "string",
30+
"description": "Narrower per-agent specialization. Consumer-defined."
31+
},
32+
"session.id": {
33+
"type": "string",
34+
"description": "Deterministic session identifier. sha256(repo:issue)[:16] for GitHub-rooted channels."
35+
},
36+
"user.id": {
37+
"type": "string",
38+
"description": "Sender identity. Propagated via OpenInference using_user()."
39+
},
40+
"graph.node.id": {
41+
"type": "string",
42+
"description": "Topology node identifier for cross-trace graph rendering."
43+
},
44+
"graph.node.parent_id": {
45+
"type": "string",
46+
"description": "Parent node id in the topology graph."
47+
},
48+
"o2r.task.id": {
49+
"type": "string",
50+
"description": "Task identifier within the session."
51+
},
52+
"o2r.task.state": {
53+
"type": "string",
54+
"description": "Current task state."
55+
},
56+
"o2r.task.state_change": {
57+
"type": "string",
58+
"description": "State transition recorded as a span event attribute."
59+
},
60+
"o2r.message.text": {
61+
"type": "string",
62+
"description": "Content of the originating message."
63+
},
64+
"o2r.message.reply_text": {
65+
"type": "string",
66+
"description": "Content of the completion reply."
67+
},
68+
"o2r.peer.target": {
69+
"type": "string",
70+
"description": "Target peer id for a relay forward."
71+
},
72+
"o2r.peer.sender_role": {
73+
"type": "string",
74+
"description": "Registered role of the sending peer."
75+
},
76+
"o2r.peer.target_role": {
77+
"type": "string",
78+
"description": "Registered role of the target peer."
79+
},
80+
"o2r.relay.mode": {
81+
"type": "string",
82+
"description": "Relay routing mode in effect for this span."
83+
},
84+
"o2r.relay.reject_reason": {
85+
"type": "string",
86+
"description": "Reason a relay rejected a message."
87+
},
88+
"o2r.relay.failure_class": {
89+
"type": "string",
90+
"description": "Coarse failure class on any erroring relay span.",
91+
"enum": [
92+
"topology_violation",
93+
"peer_disconnect",
94+
"peer_404",
95+
"timeout",
96+
"peer_jsonrpc_error",
97+
"unknown"
98+
]
99+
},
100+
"o2r.method": {
101+
"type": "string",
102+
"description": "A2A JSON-RPC method name driving this span."
103+
}
104+
},
105+
"required": [
106+
"agent.id",
107+
"agent.name",
108+
"agent.role",
109+
"session.id",
110+
"graph.node.id",
111+
"o2r.task.id",
112+
"o2r.task.state",
113+
"o2r.peer.target",
114+
"o2r.peer.sender_role",
115+
"o2r.peer.target_role",
116+
"o2r.relay.failure_class",
117+
"o2r.method"
118+
],
119+
"additionalProperties": true
120+
}

docs/generated/o2r-semconv.yaml

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
groups:
2+
- id: registry.o2r
3+
type: attribute_group
4+
brief: o2r span attribute registry. Generated from docs/protocol.md.
5+
attributes:
6+
- id: agent.id
7+
type: string
8+
requirement_level: required
9+
brief: Stable per-agent identifier inside the deployment.
10+
- id: agent.name
11+
type: string
12+
requirement_level: required
13+
brief: Human-readable agent name.
14+
- id: agent.role
15+
type: string
16+
requirement_level: required
17+
brief: Broad role in the topology.
18+
members:
19+
- relay
20+
- orchestrator
21+
- planner
22+
- validator
23+
- worker
24+
- deployer
25+
- id: agent.specialization
26+
type: string
27+
requirement_level: optional
28+
brief: Narrower per-agent specialization. Consumer-defined.
29+
- id: session.id
30+
type: string
31+
requirement_level: required
32+
brief: Deterministic session identifier. sha256(repo:issue)[:16] for GitHub-rooted
33+
channels.
34+
- id: user.id
35+
type: string
36+
requirement_level: recommended
37+
brief: Sender identity. Propagated via OpenInference using_user().
38+
- id: graph.node.id
39+
type: string
40+
requirement_level: required
41+
brief: Topology node identifier for cross-trace graph rendering.
42+
- id: graph.node.parent_id
43+
type: string
44+
requirement_level: recommended
45+
brief: Parent node id in the topology graph.
46+
- id: o2r.task.id
47+
type: string
48+
requirement_level: required
49+
brief: Task identifier within the session.
50+
- id: o2r.task.state
51+
type: string
52+
requirement_level: required
53+
brief: Current task state.
54+
- id: o2r.task.state_change
55+
type: string
56+
requirement_level: optional
57+
brief: State transition recorded as a span event attribute.
58+
- id: o2r.message.text
59+
type: string
60+
requirement_level: optional
61+
brief: Content of the originating message.
62+
- id: o2r.message.reply_text
63+
type: string
64+
requirement_level: optional
65+
brief: Content of the completion reply.
66+
- id: o2r.peer.target
67+
type: string
68+
requirement_level: required
69+
brief: Target peer id for a relay forward.
70+
- id: o2r.peer.sender_role
71+
type: string
72+
requirement_level: required
73+
brief: Registered role of the sending peer.
74+
- id: o2r.peer.target_role
75+
type: string
76+
requirement_level: required
77+
brief: Registered role of the target peer.
78+
- id: o2r.relay.mode
79+
type: string
80+
requirement_level: optional
81+
brief: Relay routing mode in effect for this span.
82+
- id: o2r.relay.reject_reason
83+
type: string
84+
requirement_level: optional
85+
brief: Reason a relay rejected a message.
86+
- id: o2r.relay.failure_class
87+
type: string
88+
requirement_level: required
89+
brief: Coarse failure class on any erroring relay span.
90+
members:
91+
- topology_violation
92+
- peer_disconnect
93+
- peer_404
94+
- timeout
95+
- peer_jsonrpc_error
96+
- unknown
97+
- id: o2r.method
98+
type: string
99+
requirement_level: required
100+
brief: A2A JSON-RPC method name driving this span.

uv.lock

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)