feat: forward AgentDelegation on PostMessage
Stage 8 Chat SDK support for Mira→Red Queen INVESTIGATE routing metadata. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
2c1f9359fa
commit
a1a4108303
@ -134,6 +134,9 @@ type PostMessageRequest struct {
|
||||
Content string
|
||||
ReplyToMessageID string
|
||||
IdempotencyKey string
|
||||
// Optional machine-readable delegation metadata (AgentDelegation).
|
||||
// Nil means no delegation; forwarded as-is to AgentPostMessage.
|
||||
Delegation *pb.AgentDelegation
|
||||
}
|
||||
|
||||
func (c *Client) PostMessage(ctx context.Context, req PostMessageRequest) (*pb.PostMessageResponse, error) {
|
||||
@ -144,6 +147,7 @@ func (c *Client) PostMessage(ctx context.Context, req PostMessageRequest) (*pb.P
|
||||
TopicId: req.TopicID,
|
||||
Content: req.Content,
|
||||
IdempotencyKey: req.IdempotencyKey,
|
||||
Delegation: req.Delegation,
|
||||
}
|
||||
if req.ReplyToMessageID != "" {
|
||||
replyTo := req.ReplyToMessageID
|
||||
|
||||
@ -289,6 +289,42 @@ func TestPostMessageUsesAgentPostMessageAndPreservesIdempotencyKey(t *testing.T)
|
||||
if len(fake.postReqs) != 1 || fake.postReqs[0].GetIdempotencyKey() != "logical-key" {
|
||||
t.Fatalf("AgentPostMessage reqs = %+v", fake.postReqs)
|
||||
}
|
||||
if fake.postReqs[0].GetDelegation() != nil {
|
||||
t.Fatalf("expected nil delegation, got %+v", fake.postReqs[0].GetDelegation())
|
||||
}
|
||||
}
|
||||
|
||||
func TestPostMessageForwardsDelegationMetadata(t *testing.T) {
|
||||
fake := newFake()
|
||||
c := newClientForTest(t, fake)
|
||||
delegation := &pb.AgentDelegation{
|
||||
TargetAuthorId: "22222222-2222-2222-2222-222222222222",
|
||||
Kind: "INVESTIGATE",
|
||||
}
|
||||
_, err := c.PostMessage(context.Background(), PostMessageRequest{
|
||||
TopicID: "topic",
|
||||
Content: "please investigate",
|
||||
IdempotencyKey: "deleg-key",
|
||||
Delegation: delegation,
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
fake.mu.Lock()
|
||||
defer fake.mu.Unlock()
|
||||
if fake.genericPosts != 0 {
|
||||
t.Fatal("generic PostMessage must not be called")
|
||||
}
|
||||
if len(fake.postReqs) != 1 {
|
||||
t.Fatalf("AgentPostMessage reqs = %+v", fake.postReqs)
|
||||
}
|
||||
got := fake.postReqs[0].GetDelegation()
|
||||
if got == nil {
|
||||
t.Fatal("expected delegation to be forwarded")
|
||||
}
|
||||
if got.GetTargetAuthorId() != delegation.TargetAuthorId || got.GetKind() != delegation.Kind {
|
||||
t.Fatalf("delegation = %+v, want %+v", got, delegation)
|
||||
}
|
||||
}
|
||||
|
||||
func TestOrderedCumulativeACKWithSequenceGaps(t *testing.T) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user