feat(api): add optional AgentDelegation metadata for Stage 8
Additive Message/AgentPostMessage fields so agents can route INVESTIGATE tasks without spoofable human HTTP posts. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
a50cd3a886
commit
848fe6ed79
475
chat.pb.go
475
chat.pb.go
File diff suppressed because it is too large
Load Diff
18
chat.proto
18
chat.proto
@ -143,6 +143,17 @@ message Topic {
|
||||
google.protobuf.Timestamp created_at = 4;
|
||||
}
|
||||
|
||||
// AgentDelegation is optional machine-readable routing metadata on AGENT
|
||||
// messages. Text content remains the human-readable task description;
|
||||
// delegation only carries deterministic target + kind. Delegation is NOT
|
||||
// human approval and does NOT authorize mutation.
|
||||
message AgentDelegation {
|
||||
// Canonical Chat author_id (UUID) of the target AGENT participant.
|
||||
string target_author_id = 1;
|
||||
// Stage 8 kinds: INVESTIGATE.
|
||||
string kind = 2;
|
||||
}
|
||||
|
||||
message Message {
|
||||
string id = 1; // UUID, canonical message id
|
||||
int64 sequence = 2; // server-assigned monotonic sequence (ordering + durable cursor)
|
||||
@ -155,6 +166,8 @@ message Message {
|
||||
string root_message_id = 9; // root of the reply chain (== id for non-replies)
|
||||
int32 reply_depth = 10; // 0 for non-replies, parent depth + 1 for replies; hard max 20
|
||||
google.protobuf.Timestamp created_at = 11; // original creation time; age = now - created_at
|
||||
// Optional; only set on AGENT messages that intentionally delegate.
|
||||
optional AgentDelegation delegation = 12;
|
||||
}
|
||||
|
||||
message ListTopicsRequest {}
|
||||
@ -190,6 +203,8 @@ message PostMessageRequest {
|
||||
// Idempotency key: retrying PostMessage with the same author_id and key
|
||||
// returns the original message instead of creating a duplicate.
|
||||
string idempotency_key = 7;
|
||||
// Agents must not use this path; Human HTTP PostMessage rejects delegation.
|
||||
optional AgentDelegation delegation = 8;
|
||||
}
|
||||
|
||||
message AgentPostMessageRequest {
|
||||
@ -199,6 +214,9 @@ message AgentPostMessageRequest {
|
||||
// Mandatory: retrying with the same key returns the original message
|
||||
// (duplicated=true) instead of creating a duplicate.
|
||||
string idempotency_key = 4;
|
||||
// Optional machine-readable delegation. Server validates target is an
|
||||
// existing AGENT participant; sender identity comes from auth, not client.
|
||||
optional AgentDelegation delegation = 5;
|
||||
}
|
||||
|
||||
message PostMessageResponse {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user