feat: add agent-orchestrator instrumentation plugin - #703
Open
rangemer333-cell wants to merge 3 commits into
Open
feat: add agent-orchestrator instrumentation plugin#703rangemer333-cell wants to merge 3 commits into
rangemer333-cell wants to merge 3 commits into
Conversation
Add observability support for the AgentWrapper/agent-orchestrator
daemon (github.com/aoagents/agent-orchestrator/backend). The Session
Manager is the single entry point for the spawn/send lifecycle, so
each of those methods becomes a gen_ai workflow/client span following
the ARMS semantic conventions for agentic systems.
The instrumented types live under the daemon's internal/ tree, which
is not importable from this plugin module, so the hook declares the
receiver and config parameters as interface{} and reads the fields it
needs via reflection.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
|
observability_dev_agent seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account. You have signed the CLA already but the status is still pending? Let us recheck it. |
…gen_ai conventions Address review feedback on PR alibaba#703: - Send span: gen_ai.span.kind "client" -> "task" (client not in ARMS enum) - Span names aligned with gen_ai.operation.name: "create_agent" / "send_message" - Spawn operation.name "spawn_agent" -> "create_agent" (matches util-genai OperationCreateAgent) - agent-orchestrator.json: add Version field "[0.10.1,)" - Tests: add error-path coverage (empty Harness / empty SessionID) and assert gen_ai.other_input.issue_id / message_length Co-authored-by: multica-agent <github@multica.ai>
…assertion attribute.Int sets an INT64 value, so attrVal() (which calls Value.AsString()) returns "" for this attribute and the equality check fails at runtime. Use verifier.GetAttribute(...).AsInt64() instead, matching the adk-go pattern. Co-authored-by: multica-agent <github@multica.ai>
Collaborator
|
@claude fix test error |
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
Add observability support for the AgentWrapper/agent-orchestrator daemon (github.com/aoagents/agent-orchestrator/backend) — an agentic orchestrator that plans tasks, spawns parallel coding-agent sessions, routes CI/review feedback, and observes pull requests.
The Session Manager is the single entry point for the spawn/send lifecycle, so each of those methods becomes a gen_ai span following the ARMS semantic conventions for agentic systems:
(*Manager).Spawn→ workflow span,gen_ai.operation.name=spawn_agent(*Manager).Send→ client span,gen_ai.operation.name=send_messageBoth spans set
gen_ai.system=agent_orchestratorandgen_ai.span.kindper the ARMS gen-ai spec. Non-standard attributes (session kind, project/issue ids, branch, session id, message length) are emitted under thegen_ai.other_input.*/gen_ai.other_output.*prefixes that the ADK plugin already uses.The instrumented types live under the daemon's
internal/tree, which is not importable from this plugin module, so the hook declares the receiver and config parameters asinterface{}and reads the fields it needs via reflection. The trampoline passes the dereferenced values, which are assignable tointerface{}.Test plan
pkg/rules/agent-orchestratorbuilds (go build ./...)make lintclean (0 issues)go vet ./tool/...cleantest/agent-orchestrator/v0.10.1exercises Spawn + Send against a stubsession_managerpackage mirroring the real public surface, and asserts span name, kind, and all gen_ai attributes viatest/verifier🤖 Generated with Claude Code