Skip to content

Commit 6a99a8a

Browse files
authored
feat: integrate AgentScope v2, MAF, and bootstrap registry updates (#233)
2 parents edc5352 + 3f63471 commit 6a99a8a

125 files changed

Lines changed: 9032 additions & 514 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/scripts/detect_loongsuite_changes.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@
4545
TOX_LOONGSUITE_INI_PATH = "tox-loongsuite.ini"
4646
UTIL_GENAI_PREFIX = "util/opentelemetry-util-genai/"
4747
LOONGSUITE_INSTRUMENTATION_PREFIX = "instrumentation-loongsuite/"
48+
BOOTSTRAP_REGISTRY_PREFIX = (
49+
"loongsuite-distro/src/loongsuite/distro/bootstrap_registry/"
50+
)
4851
DOC_ONLY_SUFFIXES = (".md", ".rst")
4952
REPO_ROOT = Path.cwd()
5053
TOX_LOONGSUITE_INI = REPO_ROOT / TOX_LOONGSUITE_INI_PATH
@@ -150,6 +153,30 @@ def _loongsuite_package_from_path(path: str) -> str | None:
150153
return None
151154

152155

156+
def _loongsuite_package_from_bootstrap_registry_path(path: str) -> str | None:
157+
normalized = path.strip("/")
158+
if not normalized.startswith(BOOTSTRAP_REGISTRY_PREFIX):
159+
return None
160+
161+
relative_path = normalized.removeprefix(BOOTSTRAP_REGISTRY_PREFIX)
162+
if "/" in relative_path:
163+
return None
164+
165+
registry_path = PurePosixPath(relative_path)
166+
if registry_path.suffix != ".py":
167+
return None
168+
169+
module_name = registry_path.stem
170+
if module_name == "__init__" or module_name.startswith("_"):
171+
return None
172+
173+
package = module_name.replace("_", "-")
174+
if package.startswith("loongsuite-instrumentation-"):
175+
return package
176+
177+
return None
178+
179+
153180
def _known_loongsuite_packages() -> set[str]:
154181
text = TOX_LOONGSUITE_INI.read_text(encoding="utf-8")
155182
packages = set()
@@ -339,6 +366,16 @@ def _detect_outputs() -> dict[str, str]:
339366
tox_changed = True
340367
continue
341368

369+
registry_package = _loongsuite_package_from_bootstrap_registry_path(
370+
changed_file
371+
)
372+
if registry_package:
373+
if registry_package not in known_packages:
374+
unknown_packages.add(registry_package)
375+
else:
376+
packages.add(registry_package)
377+
continue
378+
342379
if _requires_full_run(changed_file):
343380
return _full_outputs(
344381
f"shared LoongSuite file changed: {changed_file}"

.github/scripts/tests/test_detect_loongsuite_changes.py

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,66 @@ def test_generated_workflow_only_change_skips_jobs(monkeypatch, tmp_path):
210210
assert outputs["packages"] == "||"
211211

212212

213+
def test_bootstrap_registry_fragment_scopes_package_change(
214+
monkeypatch,
215+
tmp_path,
216+
):
217+
outputs = _run_detector(
218+
monkeypatch,
219+
tmp_path,
220+
[
221+
"loongsuite-distro/src/loongsuite/distro/bootstrap_registry/"
222+
"loongsuite_instrumentation_crewai.py"
223+
],
224+
known_packages={"loongsuite-instrumentation-crewai"},
225+
)
226+
227+
assert outputs["full"] == "false"
228+
assert outputs["packages"] == "|loongsuite-instrumentation-crewai|"
229+
230+
231+
def test_bootstrap_registry_loader_change_runs_full_suite(
232+
monkeypatch,
233+
tmp_path,
234+
):
235+
outputs = _run_detector(
236+
monkeypatch,
237+
tmp_path,
238+
[
239+
"loongsuite-distro/src/loongsuite/distro/bootstrap_registry/"
240+
"__init__.py"
241+
],
242+
)
243+
244+
assert outputs["full"] == "true"
245+
assert outputs["reason"] == (
246+
"shared LoongSuite file changed: "
247+
"loongsuite-distro/src/loongsuite/distro/bootstrap_registry/"
248+
"__init__.py"
249+
)
250+
251+
252+
def test_upstream_bootstrap_registry_fragment_runs_full_suite(
253+
monkeypatch,
254+
tmp_path,
255+
):
256+
outputs = _run_detector(
257+
monkeypatch,
258+
tmp_path,
259+
[
260+
"loongsuite-distro/src/loongsuite/distro/bootstrap_registry/"
261+
"opentelemetry_instrumentation_aiohttp_client.py"
262+
],
263+
)
264+
265+
assert outputs["full"] == "true"
266+
assert outputs["reason"] == (
267+
"shared LoongSuite file changed: "
268+
"loongsuite-distro/src/loongsuite/distro/bootstrap_registry/"
269+
"opentelemetry_instrumentation_aiohttp_client.py"
270+
)
271+
272+
213273
def test_release_workflow_change_runs_full_suite(monkeypatch, tmp_path):
214274
outputs = _run_detector(
215275
monkeypatch,

.github/workflows/loongsuite_lint_0.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ jobs:
8484
shell: bash
8585
env:
8686
LOONGSUITE_ALL_JOBS: >-
87-
[{"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"}]
87+
[{"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"}]
8888
LOONGSUITE_FULL: ${{ steps.detect.outputs.full }}
8989
LOONGSUITE_PACKAGES: ${{ steps.detect.outputs.packages }}
9090
run: |

.github/workflows/loongsuite_test_0.yml

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

instrumentation-loongsuite/README.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11

22
| Instrumentation | Supported Packages | Metrics support | Semconv status |
33
| --------------- | ------------------ | --------------- | -------------- |
4-
| [loongsuite-instrumentation-agentscope](./loongsuite-instrumentation-agentscope) | agentscope >= 1.0.0 | No | development
4+
| [loongsuite-instrumentation-agentscope](./loongsuite-instrumentation-agentscope) | agentscope >= 1.0.0, < 3.0.0 | No | development
55
| [loongsuite-instrumentation-agno](./loongsuite-instrumentation-agno) | agno >= 2.0.0, < 3 | No | development
66
| [loongsuite-instrumentation-algotune](./loongsuite-instrumentation-algotune) | algotune | No | development
7+
| [loongsuite-instrumentation-autogen](./loongsuite-instrumentation-autogen) | autogen-agentchat >= 0.7.0, < 0.8.0 | No | development
78
| [loongsuite-instrumentation-bfclv4](./loongsuite-instrumentation-bfclv4) | bfcl-eval >= 4.0.0 | No | development
89
| [loongsuite-instrumentation-claude-agent-sdk](./loongsuite-instrumentation-claude-agent-sdk) | claude-agent-sdk >= 0.1.0 | No | development
910
| [loongsuite-instrumentation-claw-eval](./loongsuite-instrumentation-claw-eval) | claw-eval >= 0.1.0 | No | development
1011
| [loongsuite-instrumentation-crewai](./loongsuite-instrumentation-crewai) | crewai >= 0.80.0 | No | development
1112
| [loongsuite-instrumentation-dashscope](./loongsuite-instrumentation-dashscope) | dashscope >= 1.0.0 | No | development
13+
| [loongsuite-instrumentation-deepagents](./loongsuite-instrumentation-deepagents) | deepagents >= 0.6.0, < 0.7.0 | No | development
1214
| [loongsuite-instrumentation-dify](./loongsuite-instrumentation-dify) | dify | No | development
1315
| [loongsuite-instrumentation-google-adk](./loongsuite-instrumentation-google-adk) | google-adk >= 0.1.0 | No | development
1416
| [loongsuite-instrumentation-hermes-agent](./loongsuite-instrumentation-hermes-agent) | openai >= 1.0.0 | No | development
@@ -17,6 +19,7 @@
1719
| [loongsuite-instrumentation-litellm](./loongsuite-instrumentation-litellm) | litellm >= 1.0.0 | No | development
1820
| [loongsuite-instrumentation-mcp](./loongsuite-instrumentation-mcp) | mcp >= 1.3.0, <= 1.25.0 | No | development
1921
| [loongsuite-instrumentation-mem0](./loongsuite-instrumentation-mem0) | mem0ai >= 1.0.0, < 2.0.0 | No | development
22+
| [loongsuite-instrumentation-microsoft-agent-framework](./loongsuite-instrumentation-microsoft-agent-framework) | agent-framework-core >= 1.0.0 | No | development
2023
| [loongsuite-instrumentation-minisweagent](./loongsuite-instrumentation-minisweagent) | mini-swe-agent >= 2.2.0 | No | development
2124
| [loongsuite-instrumentation-openhands](./loongsuite-instrumentation-openhands) | openhands | No | development
2225
| [loongsuite-instrumentation-qwen-agent](./loongsuite-instrumentation-qwen-agent) | qwen-agent >= 0.0.20 | No | development

instrumentation-loongsuite/loongsuite-instrumentation-agentscope/CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## Unreleased
99

10+
### Added
11+
12+
- Add version-aware AgentScope v2 middleware instrumentation while preserving
13+
AgentScope v1 compatibility.
14+
1015
## Version 0.6.0 (2026-06-03)
1116

1217
There are no changelog entries for this release.

instrumentation-loongsuite/loongsuite-instrumentation-agentscope/pyproject.toml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,22 +30,23 @@ dependencies = [
3030
"opentelemetry-instrumentation >= 0.58b0",
3131
"opentelemetry-semantic-conventions >= 0.58b0",
3232
"opentelemetry-util-genai",
33+
"packaging >= 18.0",
3334
"wrapt >= 1.17.3, < 2.0.0",
3435
]
3536

3637
[project.optional-dependencies]
3738
instruments = [
38-
"agentscope >= 1.0.0",
39+
"agentscope >= 1.0.0, < 3.0.0",
3940
]
4041

4142
test = [
4243
"pytest ~= 8.0",
4344
"pytest-asyncio ~= 0.23.0",
4445
"pytest-cov ~= 4.1.0",
4546
"pytest-vcr ~= 1.0.2",
46-
"vcrpy ~= 5.1.0",
47+
"vcrpy >= 8.1.1",
4748
"pyyaml ~= 6.0",
48-
"agentscope >= 1.0.0",
49+
"agentscope >= 1.0.0, < 3.0.0",
4950
]
5051

5152
[project.entry-points.opentelemetry_instrumentor]

0 commit comments

Comments
 (0)