Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
fda9cd1
fix: split bootstrap registry fragments
sipercai Jun 30, 2026
e9b8285
chore: add CrewAI changelog entry
sipercai Jun 30, 2026
34d8a2e
feat(instrumentation-microsoft-agent-framework): add plugin per execu…
123liuziming Jun 24, 2026
418b4f6
fix(microsoft-agent-framework): review [M1][M2][L1]
123liuziming Jun 24, 2026
57d594e
fix(microsoft-agent-framework): validation P0/P1/P3/P5
123liuziming Jun 24, 2026
f5f771e
fix(maf): align telemetry with genai conventions
sipercai Jun 25, 2026
4be6a79
fix(maf): address review comments and ci
sipercai Jun 25, 2026
29c3fdc
fix(maf): move instrumentation into loongsuite matrix
sipercai Jun 26, 2026
db33cac
fix: add missing Apache 2.0 license headers
ralf0131 Jun 28, 2026
603c6c7
fix(maf): finalize spans through util genai bridge
sipercai Jun 29, 2026
7e262e4
fix(maf): address util genai review comments
sipercai Jun 29, 2026
c9a3503
fix(maf): align workflow and mcp genai semantics
sipercai Jun 29, 2026
0b1fa90
fix(maf): align workflow telemetry with genai util
sipercai Jun 29, 2026
de7e88c
style(maf): apply ruff formatting
sipercai Jun 30, 2026
385a33d
feat(agentscope): support AgentScope v2
sipercai Jun 2, 2026
9da8655
Support AgentScope v2 instrumentation
sipercai Jun 3, 2026
7976aa1
fix(agentscope): serialize v2 tool result content
sipercai Jun 25, 2026
b940fa6
docs(agentscope): clarify v2 handler factory
sipercai Jun 25, 2026
02c0c31
chore: clean integration whitespace
sipercai Jul 1, 2026
c77e2f3
fix: set MAF framework provider for agent executor spans
sipercai Jul 1, 2026
3f63471
chore: refresh loongsuite generated files after rebase
sipercai Jul 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions .github/scripts/detect_loongsuite_changes.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,9 @@
TOX_LOONGSUITE_INI_PATH = "tox-loongsuite.ini"
UTIL_GENAI_PREFIX = "util/opentelemetry-util-genai/"
LOONGSUITE_INSTRUMENTATION_PREFIX = "instrumentation-loongsuite/"
BOOTSTRAP_REGISTRY_PREFIX = (
"loongsuite-distro/src/loongsuite/distro/bootstrap_registry/"
)
DOC_ONLY_SUFFIXES = (".md", ".rst")
REPO_ROOT = Path.cwd()
TOX_LOONGSUITE_INI = REPO_ROOT / TOX_LOONGSUITE_INI_PATH
Expand Down Expand Up @@ -150,6 +153,30 @@ def _loongsuite_package_from_path(path: str) -> str | None:
return None


def _loongsuite_package_from_bootstrap_registry_path(path: str) -> str | None:
normalized = path.strip("/")
if not normalized.startswith(BOOTSTRAP_REGISTRY_PREFIX):
return None

relative_path = normalized.removeprefix(BOOTSTRAP_REGISTRY_PREFIX)
if "/" in relative_path:
return None

registry_path = PurePosixPath(relative_path)
if registry_path.suffix != ".py":
return None

module_name = registry_path.stem
if module_name == "__init__" or module_name.startswith("_"):
return None

package = module_name.replace("_", "-")
if package.startswith("loongsuite-instrumentation-"):
return package

return None


def _known_loongsuite_packages() -> set[str]:
text = TOX_LOONGSUITE_INI.read_text(encoding="utf-8")
packages = set()
Expand Down Expand Up @@ -339,6 +366,16 @@ def _detect_outputs() -> dict[str, str]:
tox_changed = True
continue

registry_package = _loongsuite_package_from_bootstrap_registry_path(
changed_file
)
if registry_package:
if registry_package not in known_packages:
unknown_packages.add(registry_package)
else:
packages.add(registry_package)
continue

if _requires_full_run(changed_file):
return _full_outputs(
f"shared LoongSuite file changed: {changed_file}"
Expand Down
60 changes: 60 additions & 0 deletions .github/scripts/tests/test_detect_loongsuite_changes.py
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,66 @@ def test_generated_workflow_only_change_skips_jobs(monkeypatch, tmp_path):
assert outputs["packages"] == "||"


def test_bootstrap_registry_fragment_scopes_package_change(
monkeypatch,
tmp_path,
):
outputs = _run_detector(
monkeypatch,
tmp_path,
[
"loongsuite-distro/src/loongsuite/distro/bootstrap_registry/"
"loongsuite_instrumentation_crewai.py"
],
known_packages={"loongsuite-instrumentation-crewai"},
)

assert outputs["full"] == "false"
assert outputs["packages"] == "|loongsuite-instrumentation-crewai|"


def test_bootstrap_registry_loader_change_runs_full_suite(
monkeypatch,
tmp_path,
):
outputs = _run_detector(
monkeypatch,
tmp_path,
[
"loongsuite-distro/src/loongsuite/distro/bootstrap_registry/"
"__init__.py"
],
)

assert outputs["full"] == "true"
assert outputs["reason"] == (
"shared LoongSuite file changed: "
"loongsuite-distro/src/loongsuite/distro/bootstrap_registry/"
"__init__.py"
)


def test_upstream_bootstrap_registry_fragment_runs_full_suite(
monkeypatch,
tmp_path,
):
outputs = _run_detector(
monkeypatch,
tmp_path,
[
"loongsuite-distro/src/loongsuite/distro/bootstrap_registry/"
"opentelemetry_instrumentation_aiohttp_client.py"
],
)

assert outputs["full"] == "true"
assert outputs["reason"] == (
"shared LoongSuite file changed: "
"loongsuite-distro/src/loongsuite/distro/bootstrap_registry/"
"opentelemetry_instrumentation_aiohttp_client.py"
)


def test_release_workflow_change_runs_full_suite(monkeypatch, tmp_path):
outputs = _run_detector(
monkeypatch,
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/loongsuite_lint_0.yml
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ jobs:
shell: bash
env:
LOONGSUITE_ALL_JOBS: >-
[{"name": "lint-loongsuite-instrumentation-agentscope", "package": "loongsuite-instrumentation-agentscope", "tox_env": "lint-loongsuite-instrumentation-agentscope", "ui_name": "loongsuite-instrumentation-agentscope"}, {"name": "lint-loongsuite-instrumentation-dashscope", "package": "loongsuite-instrumentation-dashscope", "tox_env": "lint-loongsuite-instrumentation-dashscope", "ui_name": "loongsuite-instrumentation-dashscope"}, {"name": "lint-loongsuite-instrumentation-claude-agent-sdk", "package": "loongsuite-instrumentation-claude-agent-sdk", "tox_env": "lint-loongsuite-instrumentation-claude-agent-sdk", "ui_name": "loongsuite-instrumentation-claude-agent-sdk"}, {"name": "lint-loongsuite-instrumentation-google-adk", "package": "loongsuite-instrumentation-google-adk", "tox_env": "lint-loongsuite-instrumentation-google-adk", "ui_name": "loongsuite-instrumentation-google-adk"}, {"name": "lint-loongsuite-instrumentation-agno", "package": "loongsuite-instrumentation-agno", "tox_env": "lint-loongsuite-instrumentation-agno", "ui_name": "loongsuite-instrumentation-agno"}, {"name": "lint-loongsuite-instrumentation-langchain", "package": "loongsuite-instrumentation-langchain", "tox_env": "lint-loongsuite-instrumentation-langchain", "ui_name": "loongsuite-instrumentation-langchain"}, {"name": "lint-loongsuite-instrumentation-langgraph", "package": "loongsuite-instrumentation-langgraph", "tox_env": "lint-loongsuite-instrumentation-langgraph", "ui_name": "loongsuite-instrumentation-langgraph"}, {"name": "lint-loongsuite-instrumentation-deepagents", "package": "loongsuite-instrumentation-deepagents", "tox_env": "lint-loongsuite-instrumentation-deepagents", "ui_name": "loongsuite-instrumentation-deepagents"}, {"name": "lint-loongsuite-instrumentation-qwen-agent", "package": "loongsuite-instrumentation-qwen-agent", "tox_env": "lint-loongsuite-instrumentation-qwen-agent", "ui_name": "loongsuite-instrumentation-qwen-agent"}, {"name": "lint-loongsuite-instrumentation-hermes-agent", "package": "loongsuite-instrumentation-hermes-agent", "tox_env": "lint-loongsuite-instrumentation-hermes-agent", "ui_name": "loongsuite-instrumentation-hermes-agent"}, {"name": "lint-loongsuite-instrumentation-mem0", "package": "loongsuite-instrumentation-mem0", "tox_env": "lint-loongsuite-instrumentation-mem0", "ui_name": "loongsuite-instrumentation-mem0"}, {"name": "lint-util-genai", "package": "util-genai", "tox_env": "lint-util-genai", "ui_name": "util-genai"}, {"name": "lint-loongsuite-instrumentation-litellm", "package": "loongsuite-instrumentation-litellm", "tox_env": "lint-loongsuite-instrumentation-litellm", "ui_name": "loongsuite-instrumentation-litellm"}, {"name": "lint-loongsuite-instrumentation-crewai", "package": "loongsuite-instrumentation-crewai", "tox_env": "lint-loongsuite-instrumentation-crewai", "ui_name": "loongsuite-instrumentation-crewai"}, {"name": "lint-loongsuite-instrumentation-qwenpaw", "package": "loongsuite-instrumentation-qwenpaw", "tox_env": "lint-loongsuite-instrumentation-qwenpaw", "ui_name": "loongsuite-instrumentation-qwenpaw"}, {"name": "lint-loongsuite-instrumentation-algotune", "package": "loongsuite-instrumentation-algotune", "tox_env": "lint-loongsuite-instrumentation-algotune", "ui_name": "loongsuite-instrumentation-algotune"}, {"name": "lint-loongsuite-instrumentation-bfclv4", "package": "loongsuite-instrumentation-bfclv4", "tox_env": "lint-loongsuite-instrumentation-bfclv4", "ui_name": "loongsuite-instrumentation-bfclv4"}, {"name": "lint-loongsuite-instrumentation-claw-eval", "package": "loongsuite-instrumentation-claw-eval", "tox_env": "lint-loongsuite-instrumentation-claw-eval", "ui_name": "loongsuite-instrumentation-claw-eval"}, {"name": "lint-loongsuite-instrumentation-minisweagent", "package": "loongsuite-instrumentation-minisweagent", "tox_env": "lint-loongsuite-instrumentation-minisweagent", "ui_name": "loongsuite-instrumentation-minisweagent"}, {"name": "lint-loongsuite-instrumentation-openhands", "package": "loongsuite-instrumentation-openhands", "tox_env": "lint-loongsuite-instrumentation-openhands", "ui_name": "loongsuite-instrumentation-openhands"}, {"name": "lint-loongsuite-instrumentation-slop-code", "package": "loongsuite-instrumentation-slop-code", "tox_env": "lint-loongsuite-instrumentation-slop-code", "ui_name": "loongsuite-instrumentation-slop-code"}, {"name": "lint-loongsuite-instrumentation-terminus2", "package": "loongsuite-instrumentation-terminus2", "tox_env": "lint-loongsuite-instrumentation-terminus2", "ui_name": "loongsuite-instrumentation-terminus2"}, {"name": "lint-loongsuite-instrumentation-vita", "package": "loongsuite-instrumentation-vita", "tox_env": "lint-loongsuite-instrumentation-vita", "ui_name": "loongsuite-instrumentation-vita"}, {"name": "lint-loongsuite-instrumentation-webarena", "package": "loongsuite-instrumentation-webarena", "tox_env": "lint-loongsuite-instrumentation-webarena", "ui_name": "loongsuite-instrumentation-webarena"}, {"name": "lint-loongsuite-instrumentation-widesearch", "package": "loongsuite-instrumentation-widesearch", "tox_env": "lint-loongsuite-instrumentation-widesearch", "ui_name": "loongsuite-instrumentation-widesearch"}, {"name": "lint-loongsuite-instrumentation-wildtool", "package": "loongsuite-instrumentation-wildtool", "tox_env": "lint-loongsuite-instrumentation-wildtool", "ui_name": "loongsuite-instrumentation-wildtool"}]
[{"name": "lint-loongsuite-instrumentation-agentscope", "package": "loongsuite-instrumentation-agentscope", "tox_env": "lint-loongsuite-instrumentation-agentscope", "ui_name": "loongsuite-instrumentation-agentscope"}, {"name": "lint-loongsuite-instrumentation-dashscope", "package": "loongsuite-instrumentation-dashscope", "tox_env": "lint-loongsuite-instrumentation-dashscope", "ui_name": "loongsuite-instrumentation-dashscope"}, {"name": "lint-loongsuite-instrumentation-claude-agent-sdk", "package": "loongsuite-instrumentation-claude-agent-sdk", "tox_env": "lint-loongsuite-instrumentation-claude-agent-sdk", "ui_name": "loongsuite-instrumentation-claude-agent-sdk"}, {"name": "lint-loongsuite-instrumentation-google-adk", "package": "loongsuite-instrumentation-google-adk", "tox_env": "lint-loongsuite-instrumentation-google-adk", "ui_name": "loongsuite-instrumentation-google-adk"}, {"name": "lint-loongsuite-instrumentation-agno", "package": "loongsuite-instrumentation-agno", "tox_env": "lint-loongsuite-instrumentation-agno", "ui_name": "loongsuite-instrumentation-agno"}, {"name": "lint-loongsuite-instrumentation-langchain", "package": "loongsuite-instrumentation-langchain", "tox_env": "lint-loongsuite-instrumentation-langchain", "ui_name": "loongsuite-instrumentation-langchain"}, {"name": "lint-loongsuite-instrumentation-langgraph", "package": "loongsuite-instrumentation-langgraph", "tox_env": "lint-loongsuite-instrumentation-langgraph", "ui_name": "loongsuite-instrumentation-langgraph"}, {"name": "lint-loongsuite-instrumentation-deepagents", "package": "loongsuite-instrumentation-deepagents", "tox_env": "lint-loongsuite-instrumentation-deepagents", "ui_name": "loongsuite-instrumentation-deepagents"}, {"name": "lint-loongsuite-instrumentation-microsoft-agent-framework", "package": "loongsuite-instrumentation-microsoft-agent-framework", "tox_env": "lint-loongsuite-instrumentation-microsoft-agent-framework", "ui_name": "loongsuite-instrumentation-microsoft-agent-framework"}, {"name": "lint-loongsuite-instrumentation-qwen-agent", "package": "loongsuite-instrumentation-qwen-agent", "tox_env": "lint-loongsuite-instrumentation-qwen-agent", "ui_name": "loongsuite-instrumentation-qwen-agent"}, {"name": "lint-loongsuite-instrumentation-hermes-agent", "package": "loongsuite-instrumentation-hermes-agent", "tox_env": "lint-loongsuite-instrumentation-hermes-agent", "ui_name": "loongsuite-instrumentation-hermes-agent"}, {"name": "lint-loongsuite-instrumentation-mem0", "package": "loongsuite-instrumentation-mem0", "tox_env": "lint-loongsuite-instrumentation-mem0", "ui_name": "loongsuite-instrumentation-mem0"}, {"name": "lint-util-genai", "package": "util-genai", "tox_env": "lint-util-genai", "ui_name": "util-genai"}, {"name": "lint-loongsuite-instrumentation-litellm", "package": "loongsuite-instrumentation-litellm", "tox_env": "lint-loongsuite-instrumentation-litellm", "ui_name": "loongsuite-instrumentation-litellm"}, {"name": "lint-loongsuite-instrumentation-crewai", "package": "loongsuite-instrumentation-crewai", "tox_env": "lint-loongsuite-instrumentation-crewai", "ui_name": "loongsuite-instrumentation-crewai"}, {"name": "lint-loongsuite-instrumentation-qwenpaw", "package": "loongsuite-instrumentation-qwenpaw", "tox_env": "lint-loongsuite-instrumentation-qwenpaw", "ui_name": "loongsuite-instrumentation-qwenpaw"}, {"name": "lint-loongsuite-instrumentation-algotune", "package": "loongsuite-instrumentation-algotune", "tox_env": "lint-loongsuite-instrumentation-algotune", "ui_name": "loongsuite-instrumentation-algotune"}, {"name": "lint-loongsuite-instrumentation-bfclv4", "package": "loongsuite-instrumentation-bfclv4", "tox_env": "lint-loongsuite-instrumentation-bfclv4", "ui_name": "loongsuite-instrumentation-bfclv4"}, {"name": "lint-loongsuite-instrumentation-claw-eval", "package": "loongsuite-instrumentation-claw-eval", "tox_env": "lint-loongsuite-instrumentation-claw-eval", "ui_name": "loongsuite-instrumentation-claw-eval"}, {"name": "lint-loongsuite-instrumentation-minisweagent", "package": "loongsuite-instrumentation-minisweagent", "tox_env": "lint-loongsuite-instrumentation-minisweagent", "ui_name": "loongsuite-instrumentation-minisweagent"}, {"name": "lint-loongsuite-instrumentation-openhands", "package": "loongsuite-instrumentation-openhands", "tox_env": "lint-loongsuite-instrumentation-openhands", "ui_name": "loongsuite-instrumentation-openhands"}, {"name": "lint-loongsuite-instrumentation-slop-code", "package": "loongsuite-instrumentation-slop-code", "tox_env": "lint-loongsuite-instrumentation-slop-code", "ui_name": "loongsuite-instrumentation-slop-code"}, {"name": "lint-loongsuite-instrumentation-terminus2", "package": "loongsuite-instrumentation-terminus2", "tox_env": "lint-loongsuite-instrumentation-terminus2", "ui_name": "loongsuite-instrumentation-terminus2"}, {"name": "lint-loongsuite-instrumentation-vita", "package": "loongsuite-instrumentation-vita", "tox_env": "lint-loongsuite-instrumentation-vita", "ui_name": "loongsuite-instrumentation-vita"}, {"name": "lint-loongsuite-instrumentation-webarena", "package": "loongsuite-instrumentation-webarena", "tox_env": "lint-loongsuite-instrumentation-webarena", "ui_name": "loongsuite-instrumentation-webarena"}, {"name": "lint-loongsuite-instrumentation-widesearch", "package": "loongsuite-instrumentation-widesearch", "tox_env": "lint-loongsuite-instrumentation-widesearch", "ui_name": "loongsuite-instrumentation-widesearch"}, {"name": "lint-loongsuite-instrumentation-wildtool", "package": "loongsuite-instrumentation-wildtool", "tox_env": "lint-loongsuite-instrumentation-wildtool", "ui_name": "loongsuite-instrumentation-wildtool"}]
LOONGSUITE_FULL: ${{ steps.detect.outputs.full }}
LOONGSUITE_PACKAGES: ${{ steps.detect.outputs.packages }}
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/loongsuite_test_0.yml

Large diffs are not rendered by default.

5 changes: 4 additions & 1 deletion instrumentation-loongsuite/README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@

| Instrumentation | Supported Packages | Metrics support | Semconv status |
| --------------- | ------------------ | --------------- | -------------- |
| [loongsuite-instrumentation-agentscope](./loongsuite-instrumentation-agentscope) | agentscope >= 1.0.0 | No | development
| [loongsuite-instrumentation-agentscope](./loongsuite-instrumentation-agentscope) | agentscope >= 1.0.0, < 3.0.0 | No | development
| [loongsuite-instrumentation-agno](./loongsuite-instrumentation-agno) | agno >= 2.0.0, < 3 | No | development
| [loongsuite-instrumentation-algotune](./loongsuite-instrumentation-algotune) | algotune | No | development
| [loongsuite-instrumentation-autogen](./loongsuite-instrumentation-autogen) | autogen-agentchat >= 0.7.0, < 0.8.0 | No | development
| [loongsuite-instrumentation-bfclv4](./loongsuite-instrumentation-bfclv4) | bfcl-eval >= 4.0.0 | No | development
| [loongsuite-instrumentation-claude-agent-sdk](./loongsuite-instrumentation-claude-agent-sdk) | claude-agent-sdk >= 0.1.0 | No | development
| [loongsuite-instrumentation-claw-eval](./loongsuite-instrumentation-claw-eval) | claw-eval >= 0.1.0 | No | development
| [loongsuite-instrumentation-crewai](./loongsuite-instrumentation-crewai) | crewai >= 0.80.0 | No | development
| [loongsuite-instrumentation-dashscope](./loongsuite-instrumentation-dashscope) | dashscope >= 1.0.0 | No | development
| [loongsuite-instrumentation-deepagents](./loongsuite-instrumentation-deepagents) | deepagents >= 0.6.0, < 0.7.0 | No | development
| [loongsuite-instrumentation-dify](./loongsuite-instrumentation-dify) | dify | No | development
| [loongsuite-instrumentation-google-adk](./loongsuite-instrumentation-google-adk) | google-adk >= 0.1.0 | No | development
| [loongsuite-instrumentation-hermes-agent](./loongsuite-instrumentation-hermes-agent) | openai >= 1.0.0 | No | development
Expand All @@ -17,6 +19,7 @@
| [loongsuite-instrumentation-litellm](./loongsuite-instrumentation-litellm) | litellm >= 1.0.0 | No | development
| [loongsuite-instrumentation-mcp](./loongsuite-instrumentation-mcp) | mcp >= 1.3.0, <= 1.25.0 | No | development
| [loongsuite-instrumentation-mem0](./loongsuite-instrumentation-mem0) | mem0ai >= 1.0.0, < 2.0.0 | No | development
| [loongsuite-instrumentation-microsoft-agent-framework](./loongsuite-instrumentation-microsoft-agent-framework) | agent-framework-core >= 1.0.0 | No | development
| [loongsuite-instrumentation-minisweagent](./loongsuite-instrumentation-minisweagent) | mini-swe-agent >= 2.2.0 | No | development
| [loongsuite-instrumentation-openhands](./loongsuite-instrumentation-openhands) | openhands | No | development
| [loongsuite-instrumentation-qwen-agent](./loongsuite-instrumentation-qwen-agent) | qwen-agent >= 0.0.20 | No | development
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## Unreleased

### Added

- Add version-aware AgentScope v2 middleware instrumentation while preserving
AgentScope v1 compatibility.

## Version 0.6.0 (2026-06-03)

There are no changelog entries for this release.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,22 +30,23 @@ dependencies = [
"opentelemetry-instrumentation >= 0.58b0",
"opentelemetry-semantic-conventions >= 0.58b0",
"opentelemetry-util-genai",
"packaging >= 18.0",
"wrapt >= 1.17.3, < 2.0.0",
]

[project.optional-dependencies]
instruments = [
"agentscope >= 1.0.0",
"agentscope >= 1.0.0, < 3.0.0",
]

test = [
"pytest ~= 8.0",
"pytest-asyncio ~= 0.23.0",
"pytest-cov ~= 4.1.0",
"pytest-vcr ~= 1.0.2",
"vcrpy ~= 5.1.0",
"vcrpy >= 8.1.1",
"pyyaml ~= 6.0",
"agentscope >= 1.0.0",
"agentscope >= 1.0.0, < 3.0.0",
]

[project.entry-points.opentelemetry_instrumentor]
Expand Down
Loading
Loading