Skip to content

Commit 549fdbe

Browse files
chore(deps): daily dependency update (#376)
Automated daily dependency update via `python scripts/update-matrix-latest.py && uv lock --upgrade`. ⚠️ **Provider SDK packages changed.** A human needs to re-record cassettes locally before merging. --------- Co-authored-by: AbhiPrasad <18689448+AbhiPrasad@users.noreply.github.com> Co-authored-by: Abhijeet Prasad <abhijeet@braintrustdata.com>
1 parent a341f14 commit 549fdbe

56 files changed

Lines changed: 1419 additions & 1287 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.

.agents/skills/sdk-dependency-updates/SKILL.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
---
22
name: sdk-dependency-updates
3-
description: "Review and refresh Braintrust Python SDK dependency update PRs, especially automated `chore(deps): daily dependency update` PRs. Use when Codex needs to inspect `py/pyproject.toml` and `py/uv.lock`, reproduce the workflow's label decision, decide whether provider `latest` cassettes need re-recording, run the exact nox sessions, and validate playback before merge."
3+
description: "Review and refresh Braintrust Python SDK dependency update PRs, especially automated `chore(deps): weekly dependency update` PRs. Use when Codex needs to inspect `py/pyproject.toml` and `py/uv.lock`, reproduce the workflow's label decision, decide whether provider `latest` cassettes need re-recording, run the exact nox sessions, and validate playback before merge."
44
---
55

66
# SDK Dependency Updates
77

8-
Use this skill for dependency bump PRs in this repo, especially the daily automation from `.github/workflows/dependency-updates.yml`.
8+
Use this skill for dependency bump PRs in this repo, especially the weekly automation from `.github/workflows/dependency-updates.yml`.
99

1010
Keep the work narrow. These PRs should usually stay limited to:
1111

.github/workflows/dependency-updates.yml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name: Dependency updates
22
on:
33
schedule:
4-
- cron: "0 6 * * 1-5" # weekdays 6am UTC
4+
- cron: "0 6 * * 1" # Mondays 6am UTC
55
workflow_dispatch:
66

77
permissions:
@@ -36,16 +36,16 @@ jobs:
3636
id: date
3737
run: echo "date=$(date +%Y-%m-%d)" >> "$GITHUB_OUTPUT"
3838

39-
- name: Close stale daily dependency update PRs
39+
- name: Close stale weekly dependency update PRs
4040
if: steps.labels.outputs.changed == 'true'
4141
env:
4242
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
43-
CURRENT_BRANCH: deps/daily-update-${{ steps.date.outputs.date }}
43+
CURRENT_BRANCH: deps/weekly-update-${{ steps.date.outputs.date }}
4444
run: |
4545
gh pr list \
4646
--state open \
4747
--json number,title,headRefName \
48-
--jq ".[] | select(.title == \"chore(deps): daily dependency update\") | select(.headRefName != \"$CURRENT_BRANCH\") | .number" \
48+
--jq ".[] | select(.title == \"chore(deps): weekly dependency update\") | select(.headRefName != \"$CURRENT_BRANCH\") | .number" \
4949
| while read -r pr; do
5050
echo "Closing stale dependency update PR #$pr"
5151
gh pr close "$pr" --comment "Superseded by a newer automated dependency update." --delete-branch
@@ -55,12 +55,12 @@ jobs:
5555
if: steps.labels.outputs.changed == 'true'
5656
uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1
5757
with:
58-
title: "chore(deps): daily dependency update"
58+
title: "chore(deps): weekly dependency update"
5959
body: |
60-
Automated daily dependency update via `python scripts/update-matrix-latest.py && uv lock --upgrade`.
60+
Automated weekly dependency update via `python scripts/update-matrix-latest.py && uv lock --upgrade`.
6161
6262
${{ steps.labels.outputs.needs_rerecord == 'true' && '⚠️ **Provider SDK packages changed.** A human needs to re-record cassettes locally before merging.' || '✅ Only test infrastructure deps changed. Safe to merge if CI passes.' }}
63-
branch: deps/daily-update-${{ steps.date.outputs.date }}
63+
branch: deps/weekly-update-${{ steps.date.outputs.date }}
6464
labels: |
6565
dependencies
6666
${{ steps.labels.outputs.needs_rerecord == 'true' && 'needs-cassette-rerecord' || 'auto-merge-candidate' }}

AGENTS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,7 @@ All nox session dependency pins are centralized in `py/pyproject.toml`:
297297

298298
The `LATEST` sentinel in the noxfile maps to the `latest` key in the matrix table — it is no longer a floating install.
299299

300-
A daily GitHub Actions workflow (`.github/workflows/dependency-updates.yml`) runs `uv lock --upgrade`, classifies changes by reading group names from `pyproject.toml`, and opens a PR labeled `needs-cassette-rerecord` (provider SDK bumps) or `auto-merge-candidate` (infra-only bumps).
300+
A weekly GitHub Actions workflow (`.github/workflows/dependency-updates.yml`) runs `uv lock --upgrade`, classifies changes by reading group names from `pyproject.toml`, and opens a PR labeled `needs-cassette-rerecord` (provider SDK bumps) or `auto-merge-candidate` (infra-only bumps).
301301

302302
## Editing Guidelines
303303

py/pyproject.toml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,7 @@ conflicts = [
278278
#
279279
# Each key is a provider prefix. The value is a dict mapping human-readable
280280
# version tags to the pip requirement string. "latest" is pinned to an
281-
# explicit version and bumped by the daily dependency-update workflow.
281+
# explicit version and bumped by the weekly dependency-update workflow.
282282
# ---------------------------------------------------------------------------
283283

284284
[tool.braintrust.matrix]
@@ -298,7 +298,7 @@ latest = "cohere==6.1.0"
298298
"5.0.0" = "cohere==5.0.0"
299299

300300
[tool.braintrust.matrix.openai-agents]
301-
latest = "openai-agents==0.14.8"
301+
latest = "openai-agents==0.15.0"
302302
"0.13.6" = "openai-agents==0.13.6"
303303
"0.0.19" = "openai-agents==0.0.19"
304304

@@ -307,7 +307,7 @@ latest = "litellm==1.83.14"
307307
"1.74.0" = "litellm==1.74.0"
308308

309309
[tool.braintrust.matrix.claude-agent-sdk]
310-
latest = "claude-agent-sdk==0.1.71"
310+
latest = "claude-agent-sdk==0.1.72"
311311
"0.1.10" = "claude-agent-sdk==0.1.10"
312312

313313
[tool.braintrust.matrix.agno]
@@ -328,15 +328,15 @@ latest = "autogen-ext[openai]==0.7.5"
328328
"0.7.0" = "autogen-ext[openai]==0.7.0"
329329

330330
[tool.braintrust.matrix.strands-agents]
331-
latest = "strands-agents==1.37.0"
331+
latest = "strands-agents==1.38.0"
332332
"1.20.0" = "strands-agents==1.20.0"
333333

334334
[tool.braintrust.matrix.pydantic-ai-integration]
335-
latest = "pydantic-ai==1.88.0"
335+
latest = "pydantic-ai==1.89.0"
336336
"1.10.0" = "pydantic-ai==1.10.0"
337337

338338
[tool.braintrust.matrix.pydantic-ai-wrap-openai]
339-
latest = "pydantic-ai==1.88.0"
339+
latest = "pydantic-ai==1.89.0"
340340
"1.0.1" = "pydantic-ai==1.0.1"
341341
"0.1.9" = "pydantic-ai==0.1.9"
342342

@@ -356,11 +356,11 @@ latest = "dspy==3.2.0"
356356
# 1.13.0 is the first release with the full causal-id surface (event_id /
357357
# parent_event_id / started_event_id on BaseEvent) plus the ``usage`` field on
358358
# LLMCallCompletedEvent that the Braintrust CrewAI integration depends on.
359-
latest = "crewai==1.14.3"
359+
latest = "crewai==1.14.4"
360360
"1.13.0" = "crewai==1.13.0"
361361

362362
[tool.braintrust.matrix.google-adk]
363-
latest = "google-adk==1.31.1"
363+
latest = "google-adk==1.32.0"
364364
"1.14.1" = "google-adk==1.14.1"
365365

366366
[tool.braintrust.matrix.langchain-core]
@@ -376,11 +376,11 @@ latest = "openrouter==0.9.1"
376376
"0.6.0" = "openrouter==0.6.0"
377377

378378
[tool.braintrust.matrix.mistralai]
379-
latest = "mistralai==2.4.3"
379+
latest = "mistralai==2.4.4"
380380
"1.12.4" = "mistralai==1.12.4"
381381

382382
[tool.braintrust.matrix.temporalio]
383-
latest = "temporalio==1.26.0"
383+
latest = "temporalio==1.27.0"
384384
"1.20.0" = "temporalio==1.20.0"
385385
"1.19.0" = "temporalio==1.19.0"
386386

py/scripts/determine-dependency-update-labels.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!/usr/bin/env python3
2-
"""Determine GitHub Actions outputs for the daily dependency update workflow.
2+
"""Determine GitHub Actions outputs for the weekly dependency update workflow.
33
44
Inspects the working-tree diff of ``py/pyproject.toml`` and ``py/uv.lock`` to
55
decide whether anything changed and, if so, whether any provider SDK pins

py/src/braintrust/integrations/openai_agents/cassettes/latest/test_auto_openai_agents.yaml

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
interactions:
22
- request:
33
body: '{"include":[],"input":[{"content":"What is 2+2? Just the number.","role":"user"}],"instructions":"You
4-
are a helpful assistant. Be very concise.","model":"gpt-4o-mini","prompt_cache_key":"agents-sdk:run:c4b68e8b849647b7b38934304c622fa1","tools":[]}'
4+
are a helpful assistant. Be very concise.","model":"gpt-4o-mini","prompt_cache_key":"agents-sdk:run:09feed69efe74e0a81eda0fac0a9775a","tools":[]}'
55
headers:
66
Accept:
77
- application/json
@@ -16,7 +16,7 @@ interactions:
1616
Host:
1717
- api.openai.com
1818
User-Agent:
19-
- Agents/Python 0.14.3
19+
- Agents/Python 0.15.0
2020
X-Stainless-Arch:
2121
- arm64
2222
X-Stainless-Async:
@@ -30,7 +30,7 @@ interactions:
3030
X-Stainless-Runtime:
3131
- CPython
3232
X-Stainless-Runtime-Version:
33-
- 3.14.3
33+
- 3.12.12
3434
x-stainless-read-timeout:
3535
- '600'
3636
x-stainless-retry-count:
@@ -39,20 +39,20 @@ interactions:
3939
uri: https://api.openai.com/v1/responses
4040
response:
4141
body:
42-
string: "{\n \"id\": \"resp_070f09e9a7ce55fa0069e798145454819c9d62b4a02c5863bf\",\n
43-
\ \"object\": \"response\",\n \"created_at\": 1776785428,\n \"status\":
42+
string: "{\n \"id\": \"resp_06aefc55e94728bd0069f4de79cd8081a3ae0cfa0aa810e4a9\",\n
43+
\ \"object\": \"response\",\n \"created_at\": 1777655417,\n \"status\":
4444
\"completed\",\n \"background\": false,\n \"billing\": {\n \"payer\":
45-
\"developer\"\n },\n \"completed_at\": 1776785428,\n \"error\": null,\n
45+
\"developer\"\n },\n \"completed_at\": 1777655418,\n \"error\": null,\n
4646
\ \"frequency_penalty\": 0.0,\n \"incomplete_details\": null,\n \"instructions\":
4747
\"You are a helpful assistant. Be very concise.\",\n \"max_output_tokens\":
4848
null,\n \"max_tool_calls\": null,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n
49-
\ \"output\": [\n {\n \"id\": \"msg_070f09e9a7ce55fa0069e79814f0b8819cb268d3f1066b402c\",\n
49+
\ \"moderation\": null,\n \"output\": [\n {\n \"id\": \"msg_06aefc55e94728bd0069f4de7af03881a3a6181ebbfd64087c\",\n
5050
\ \"type\": \"message\",\n \"status\": \"completed\",\n \"content\":
5151
[\n {\n \"type\": \"output_text\",\n \"annotations\":
5252
[],\n \"logprobs\": [],\n \"text\": \"4\"\n }\n ],\n
5353
\ \"role\": \"assistant\"\n }\n ],\n \"parallel_tool_calls\": true,\n
5454
\ \"presence_penalty\": 0.0,\n \"previous_response_id\": null,\n \"prompt_cache_key\":
55-
\"agents-sdk:run:c4b68e8b849647b7b38934304c622fa1\",\n \"prompt_cache_retention\":
55+
\"agents-sdk:run:09feed69efe74e0a81eda0fac0a9775a\",\n \"prompt_cache_retention\":
5656
\"in_memory\",\n \"reasoning\": {\n \"effort\": null,\n \"summary\":
5757
null\n },\n \"safety_identifier\": null,\n \"service_tier\": \"default\",\n
5858
\ \"store\": true,\n \"temperature\": 1.0,\n \"text\": {\n \"format\":
@@ -64,14 +64,16 @@ interactions:
6464
0\n },\n \"total_tokens\": 34\n },\n \"user\": null,\n \"metadata\":
6565
{}\n}"
6666
headers:
67-
CF-RAY:
68-
- 9efd6e1ecfcdebb9-YYZ
67+
CF-Cache-Status:
68+
- DYNAMIC
69+
CF-Ray:
70+
- 9f506618eff935ae-YYZ
6971
Connection:
7072
- keep-alive
7173
Content-Type:
7274
- application/json
7375
Date:
74-
- Tue, 21 Apr 2026 15:30:29 GMT
76+
- Fri, 01 May 2026 17:10:19 GMT
7577
Server:
7678
- cloudflare
7779
Strict-Transport-Security:
@@ -82,36 +84,34 @@ interactions:
8284
- nosniff
8385
alt-svc:
8486
- h3=":443"; ma=86400
85-
cf-cache-status:
86-
- DYNAMIC
8787
content-length:
88-
- '1623'
88+
- '1645'
8989
openai-organization:
9090
- braintrust-data
9191
openai-processing-ms:
92-
- '713'
92+
- '1284'
9393
openai-project:
9494
- proj_vsCSXafhhByzWOThMrJcZiw9
9595
openai-version:
9696
- '2020-10-01'
9797
set-cookie:
98-
- __cf_bm=XygGanws9_foz2ssW3mekEHVtLm8JKIWwrG7kNCpxMM-1776785428.288884-1.0.1.1-B6oNsne64GG5RIWzHAWS8mHr1r2hI6zH1hmTATh3LHkE8cvS15YWcxoX1LDPbi.ZHTqt8BDOK7jvhXPH7oDLvBGZQA3fk8nn2dBLMCcoKP7DwJ46ReNjkr0KAGGgKJFL;
99-
HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Tue, 21 Apr 2026
100-
16:00:29 GMT
98+
- __cf_bm=Lsg3i5bJ_YSfVsCGE7sw_iFX4Qp90m_L171lqpaHZw8-1777655417.741916-1.0.1.1-xeQrZUx4nKDTabAo0vQ0ci9mU3f5cHuXM2U0SwGCByuiwH3bdKgE_BumuBCeOo0TSvgJpslQNyLepu4lXj2vZ9r4JE7Hs.hk.gXswCT8005mg11.GuYDRFL9vUxmVQHY;
99+
HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 01 May 2026
100+
17:40:19 GMT
101101
x-ratelimit-limit-requests:
102102
- '30000'
103103
x-ratelimit-limit-tokens:
104104
- '150000000'
105105
x-ratelimit-remaining-requests:
106106
- '29999'
107107
x-ratelimit-remaining-tokens:
108-
- '149999950'
108+
- '149999947'
109109
x-ratelimit-reset-requests:
110110
- 2ms
111111
x-ratelimit-reset-tokens:
112112
- 0s
113113
x-request-id:
114-
- req_b16acc49e9dd4398bd9fcd19141ff1be
114+
- req_7ca2e623a9834128b8deeece1581f7e5
115115
status:
116116
code: 200
117117
message: OK

0 commit comments

Comments
 (0)