Skip to content

Commit 5e0e6d2

Browse files
authored
fix: map extensions changes to the feature:extensions label (#2814)
1 parent d86c2e2 commit 5e0e6d2

File tree

4 files changed

+22
-16
lines changed

4 files changed

+22
-16
lines changed

.github/codex/prompts/pr-labels.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ Allowed labels:
2222
- dependencies
2323
- feature:chat-completions
2424
- feature:core
25-
- feature:lite-llm
25+
- feature:extensions
2626
- feature:mcp
2727
- feature:realtime
2828
- feature:sessions
@@ -46,7 +46,7 @@ Label rules:
4646
- bug vs enhancement: Prefer exactly one of these. Include both only when the PR clearly contains two separate substantial changes and both are first-order outcomes.
4747
- feature:chat-completions: Chat Completions support or conversion is a primary deliverable of the PR. Do not add it for a small compatibility guard or parity update in `chatcmpl_converter.py`.
4848
- feature:core: Core agent loop, tool calls, run pipeline, or other central runtime behavior is a primary surface of the PR. For cross-cutting runtime changes, this is usually the single best feature label.
49-
- feature:lite-llm: LiteLLM adapter/provider behavior is a primary deliverable of the PR.
49+
- feature:extensions: `src/agents/extensions/` surfaces are a primary deliverable of the PR, including extension models/providers such as Any-LLM and LiteLLM.
5050
- feature:mcp: MCP-specific behavior or APIs are a primary deliverable of the PR. Do not add it for incidental hosted/deferred tool plumbing touched by broader runtime work.
5151
- feature:realtime: Realtime-specific behavior, API shape, or session semantics are a primary deliverable of the PR. Do not add it for small parity updates in realtime adapters.
5252
- feature:sessions: Session or memory behavior is a primary deliverable of the PR. Do not add it for persistence updates that merely support a broader feature.

.github/codex/schemas/pr-labels.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"dependencies",
1616
"feature:chat-completions",
1717
"feature:core",
18-
"feature:lite-llm",
18+
"feature:extensions",
1919
"feature:mcp",
2020
"feature:realtime",
2121
"feature:sessions",

.github/scripts/pr_labels.py

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
"dependencies",
2020
"feature:chat-completions",
2121
"feature:core",
22-
"feature:lite-llm",
22+
"feature:extensions",
2323
"feature:mcp",
2424
"feature:realtime",
2525
"feature:sessions",
@@ -41,11 +41,12 @@
4141
FEATURE_LABELS: Final[set[str]] = ALLOWED_LABELS - DETERMINISTIC_LABELS - MODEL_ONLY_LABELS
4242

4343
SOURCE_FEATURE_PREFIXES: Final[dict[str, tuple[str, ...]]] = {
44+
"feature:extensions": ("src/agents/extensions/",),
4445
"feature:realtime": ("src/agents/realtime/",),
4546
"feature:voice": ("src/agents/voice/",),
4647
"feature:mcp": ("src/agents/mcp/",),
4748
"feature:tracing": ("src/agents/tracing/",),
48-
"feature:sessions": ("src/agents/memory/", "src/agents/extensions/memory/"),
49+
"feature:sessions": ("src/agents/memory/",),
4950
}
5051

5152
CORE_EXCLUDED_PREFIXES: Final[tuple[str, ...]] = (
@@ -192,13 +193,6 @@ def infer_specific_feature_labels(changed_files: Sequence[str]) -> set[str]:
192193
):
193194
labels.add("feature:chat-completions")
194195

195-
if any(
196-
path.startswith(("src/agents/models/", "src/agents/extensions/models/"))
197-
and "litellm" in path
198-
for path in source_files
199-
):
200-
labels.add("feature:lite-llm")
201-
202196
return labels
203197

204198

tests/test_pr_labels.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,24 @@ def test_infer_fallback_labels_marks_core_for_runtime_changes() -> None:
4040
assert labels == {"feature:core"}
4141

4242

43-
def test_infer_fallback_labels_marks_sessions_for_extensions_memory_changes() -> None:
43+
def test_infer_fallback_labels_marks_extensions_for_extensions_memory_changes() -> None:
4444
labels = pr_labels.infer_fallback_labels(
4545
["src/agents/extensions/memory/advanced_sqlite_session.py"]
4646
)
4747

48-
assert labels == {"feature:sessions"}
48+
assert labels == {"feature:extensions"}
49+
50+
51+
def test_infer_fallback_labels_marks_extensions_for_litellm_changes() -> None:
52+
labels = pr_labels.infer_fallback_labels(["src/agents/extensions/models/litellm_model.py"])
53+
54+
assert labels == {"feature:extensions"}
55+
56+
57+
def test_infer_fallback_labels_marks_extensions_for_any_llm_changes() -> None:
58+
labels = pr_labels.infer_fallback_labels(["src/agents/extensions/models/any_llm_model.py"])
59+
60+
assert labels == {"feature:extensions"}
4961

5062

5163
def test_compute_desired_labels_removes_stale_fallback_labels() -> None:
@@ -108,7 +120,7 @@ def test_compute_desired_labels_infers_bug_from_fix_title() -> None:
108120
assert desired == {"bug", "feature:core"}
109121

110122

111-
def test_compute_desired_labels_infers_sessions_for_extensions_memory_fix() -> None:
123+
def test_compute_desired_labels_infers_extensions_for_extensions_memory_fix() -> None:
112124
desired = pr_labels.compute_desired_labels(
113125
pr_context=pr_labels.PRContext(title="fix(memory): honor custom table names"),
114126
changed_files=[
@@ -123,7 +135,7 @@ def test_compute_desired_labels_infers_sessions_for_extensions_memory_fix() -> N
123135
head_sha=None,
124136
)
125137

126-
assert desired == {"bug", "feature:sessions"}
138+
assert desired == {"bug", "feature:extensions"}
127139

128140

129141
def test_compute_managed_labels_preserves_model_only_labels_without_signal() -> None:

0 commit comments

Comments
 (0)