fix(a2a): canonical buildMessageSendBody — role + kind parts (#2251) #39
Open
core-devops
wants to merge 1 commits from
fix/a2a-2251-ts-canonical-builder into main
pull from: fix/a2a-2251-ts-canonical-builder
merge into: molecule-ai:main
molecule-ai:main
molecule-ai:feat/migrate-workspace-provider
molecule-ai:fix/mgmt-create-request-collision
molecule-ai:feat/management-create-approval
molecule-ai:fix/mcp-58-confirm-name-destructive-actions
molecule-ai:fix/audit-server-url-replace-lexer
molecule-ai:feat/unified-requests-inbox-p5-shims
molecule-ai:feat/unified-requests-inbox-p2-mcp
molecule-ai:ci/absorb-queue-schedule-into-conductor
molecule-ai:chore/bump-1.5.0
molecule-ai:feat/create-issue-tool
molecule-ai:fix/mcp-audit-force-merge
molecule-ai:fix/mcp-inject-org-header
molecule-ai:fix/mcp-inject-org-header-v2
molecule-ai:fix/48-reject-unknown-actor
molecule-ai:test/issue-34-integration-clean
molecule-ai:test/issue-34-integration-a2a-acl-memory
molecule-ai:fix/cp-admin-reject-unknown-actor
molecule-ai:fix/mcp-server-merge-queue-plus-cleanup
molecule-ai:feat/2355-merge-queue-mcp-server
molecule-ai:fix/mcp-server-delete-obsolete-auto-promote
molecule-ai:chore/mcp-server-distinct-names-38
molecule-ai:feat/recreate-workspace-mcp-579
molecule-ai:fix/remote-auth-and-esm-logger
molecule-ai:fix/mcp-pause-resume-cascade-param-2122-followup
molecule-ai:fix/36-auth-headers
molecule-ai:feat/management-mcp
molecule-ai:fix/qs-dos-audit
molecule-ai:pr32
molecule-ai:chore/cursor-store-nits
molecule-ai:feat/session-cursor-module
molecule-ai:fix/upload-resolution-timeout
molecule-ai:chore/bump-1.3.0
molecule-ai:feat/poll-uploads-resolved-contract-test-layer-d
molecule-ai:feat/inbox-uploads-rfc640-layer-b
molecule-ai:ssot/external-workspace-tool-schemas
molecule-ai:fix/use-package-token-for-npm-publish
molecule-ai:fix/gitea-npm-publish-install
molecule-ai:ssot/workspace-targets-contract
molecule-ai:fix/claude-88th-tool
molecule-ai:feat/provision-workspace-tool-failclosed
molecule-ai:docs/fix-sdk-reference-in-platform-integration
molecule-ai:docs/sync-ki-007-kpi-009-resolution
molecule-ai:fix/merge-queue-mcp
molecule-ai:fix/ki007-stale-path-ref
molecule-ai:fix/merge-queue-required-contexts
molecule-ai:chore/add-merge-queue-workflow
molecule-ai:fix/remote-agent-setup-command
molecule-ai:docs/readme-add-npm-install
molecule-ai:fix/kind-ki006-anyof-workspaces
molecule-ai:feat/api-request-timeouts
molecule-ai:fix/ci-all-required-sentinel
molecule-ai:chore/sop-checklist-gate
molecule-ai:docs/regenerate-readme-from-source
Dismiss Review
Are you sure you want to dismiss this review?
No Label
Milestone
No items
No Milestone
Projects
Clear projects
No project
Assignees
agent-dev-a
agent-dev-b
agent-pm
agent-researcher
agent-reviewer
agent-reviewer-1
agent-reviewer-cr2
app-fe (Molecule AI · app-fe)
app-lead (Molecule AI · app-lead)
app-qa (Molecule AI · app-qa)
claude-ceo-assistant
claude-ci-reader
core-be (Molecule AI · core-be)
core-devops (Molecule AI · core-devops)
core-fe (Molecule AI · core-fe)
core-lead (Molecule AI · core-lead)
core-offsec (Molecule AI · core-offsec)
core-qa (Molecule AI · core-qa)
core-security (Molecule AI · core-security)
core-uiux (Molecule AI · core-uiux)
cp-be (Molecule AI · cp-be)
cp-lead (Molecule AI · cp-lead)
cp-qa (Molecule AI · cp-qa)
cp-security (Molecule AI · cp-security)
cui (Zhanlin Cui)
dev-lead (Molecule AI · dev-lead)
devops-engineer
documentation-specialist (Molecule AI · documentation-specialist)
fullstack-engineer (Molecule AI · fullstack-engineer)
godwin
hongming
hongming-ceo-delegated
hongming-codex-laptop
hongming-kimi-laptop
hongming-pc2
hongming-personal
infra-lead (Molecule AI · infra-lead)
infra-runtime-be (Molecule AI · infra-runtime-be)
infra-sre (Molecule AI · infra-sre)
integration-tester (Molecule AI · integration-tester)
molecule-code-reviewer
plugin-dev (Molecule AI · plugin-dev)
pm
release-manager (Molecule AI · release-manager)
sdk-dev (Molecule AI · sdk-dev)
sdk-lead (Molecule AI · sdk-lead)
sop-tier-bot (SOP Tier-Check Bot)
technical-writer (Molecule AI · technical-writer)
triage-operator (Molecule AI · triage-operator)
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: molecule-ai/molecule-mcp-server#39
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "fix/a2a-2251-ts-canonical-builder"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Single
buildMessageSendBody(role default, parts kind:text not type, messageId); the one call site rerouted. tsc strict clean + 6 contract tests. Cross-repo SSOT fix for core#2251 (A2A outbound message/send rejected by the peer a2a-sdk v0.3 validator:params.message.role Field required— broke delegate_task / the agents-team transport). SSOT anchor = the a2a-sdkSendMessageRequest/Messageschema. Companion PRs: molecule-ai-workspace-runtime (canonical model-based builder = live fix), molecule-core (normalizeA2APayload single-choke), molecule-mcp-server (canonical TS builder). Verified locally: contract tests red->green + suites pass.REQUEST_CHANGES: the A2A builder/code shape is sound, but the PR is not merge-ready on the current head.
5-axis review: correctness of the intended fix looks good: the new buildMessageSendBody centralizes message/send construction, supplies role, uses parts with kind:text rather than type:text, and emits messageId; the chat call site is correctly rerouted; contract tests cover default/explicit role, kind-vs-type, and messageId behavior. Robustness improves by removing the hand-rolled envelope shape. Security is neutral; no secret/auth changes. Performance impact is negligible. Readability is clear.
Blocking merge-readiness issue: direct Gitea metadata reports mergeable=false for head
1673ab2942. The branch is also stale relative to current main: main/package.json is version 1.4.1 with additional exports and overrides, while this head still has version 1.2.0 and lacks those current manifest fields. Please rebase/update the branch onto current main, resolve package/package-lock state, rerun CI, and re-request review. I expect this to be approvable once the stale/unmergeable state is fixed.1673ab2942to0c664ac7beAPPROVE on current head
0c664ac7.5-axis review:
5-axis review on current head
0c664ac:Correctness: APPROVE.
buildMessageSendBodyemits the requiredmessage/sendenvelope withrole,messageId, andparts: [{ kind: "text", text }];handleChatWithAgentnow uses it at the only outbound A2Amessage/sendcall site I found.Security: no new auth or tenant surface; the change only normalizes request body shape and preserves the existing workspace-scoped endpoint.
Tests: APPROVE. New focused builder tests cover default/explicit role,
kindvs legacytype, generated/explicitmessageId; existing handler test now asserts the live request body shape. CI is green on this head.Performance/robustness: negligible overhead from one UUID generation per send; no retry/error-path behavior changed.
Readability/scope: the helper is small, typed, and contained; package-lock version drift is corrected without broad churn.
Verdict: APPROVED.
View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.