mirror of
https://github.com/langchain-ai/deepagents.git
synced 2026-07-21 09:15:22 -04:00
1a58a4399e
Bumps the major group with 2 updates: [actions/cache](https://github.com/actions/cache) and [actions/checkout](https://github.com/actions/checkout). Updates `actions/cache` from 5 to 6 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/cache/releases">actions/cache's releases</a>.</em></p> <blockquote> <h2>v6.0.0</h2> <h2>What's Changed</h2> <ul> <li>Update packages, migrate to ESM by <a href="https://github.com/Samirat"><code>@Samirat</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1760">actions/cache#1760</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/cache/compare/v5...v6.0.0">https://github.com/actions/cache/compare/v5...v6.0.0</a></p> <h2>v5.0.5</h2> <h2>What's Changed</h2> <ul> <li>Update ts-http-runtime dependency by <a href="https://github.com/yacaovsnc"><code>@yacaovsnc</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1747">actions/cache#1747</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/cache/compare/v5...v5.0.5">https://github.com/actions/cache/compare/v5...v5.0.5</a></p> <h2>v5.0.4</h2> <h2>What's Changed</h2> <ul> <li>Add release instructions and update maintainer docs by <a href="https://github.com/Link"><code>@Link</code></a>- in <a href="https://redirect.github.com/actions/cache/pull/1696">actions/cache#1696</a></li> <li>Potential fix for code scanning alert no. 52: Workflow does not contain permissions by <a href="https://github.com/Link"><code>@Link</code></a>- in <a href="https://redirect.github.com/actions/cache/pull/1697">actions/cache#1697</a></li> <li>Fix workflow permissions and cleanup workflow names / formatting by <a href="https://github.com/Link"><code>@Link</code></a>- in <a href="https://redirect.github.com/actions/cache/pull/1699">actions/cache#1699</a></li> <li>docs: Update examples to use the latest version by <a href="https://github.com/XZTDean"><code>@XZTDean</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1690">actions/cache#1690</a></li> <li>Fix proxy integration tests by <a href="https://github.com/Link"><code>@Link</code></a>- in <a href="https://redirect.github.com/actions/cache/pull/1701">actions/cache#1701</a></li> <li>Fix cache key in examples.md for bun.lock by <a href="https://github.com/RyPeck"><code>@RyPeck</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1722">actions/cache#1722</a></li> <li>Update dependencies & patch security vulnerabilities by <a href="https://github.com/Link"><code>@Link</code></a>- in <a href="https://redirect.github.com/actions/cache/pull/1738">actions/cache#1738</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/XZTDean"><code>@XZTDean</code></a> made their first contribution in <a href="https://redirect.github.com/actions/cache/pull/1690">actions/cache#1690</a></li> <li><a href="https://github.com/RyPeck"><code>@RyPeck</code></a> made their first contribution in <a href="https://redirect.github.com/actions/cache/pull/1722">actions/cache#1722</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/cache/compare/v5...v5.0.4">https://github.com/actions/cache/compare/v5...v5.0.4</a></p> <h2>v5.0.3</h2> <h2>What's Changed</h2> <ul> <li>Bump <code>@actions/cache</code> to v5.0.5 (Resolves: <a href="https://github.com/actions/cache/security/dependabot/33">https://github.com/actions/cache/security/dependabot/33</a>)</li> <li>Bump <code>@actions/core</code> to v2.0.3</li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/cache/compare/v5...v5.0.3">https://github.com/actions/cache/compare/v5...v5.0.3</a></p> <h2>v.5.0.2</h2> <h1>v5.0.2</h1> <h2>What's Changed</h2> <p>When creating cache entries, 429s returned from the cache service will not be retried.</p> <h2>v5.0.1</h2> <blockquote> <p>[!IMPORTANT] <strong><code>actions/cache@v5</code> runs on the Node.js 24 runtime and requires a minimum Actions Runner version of <code>2.327.1</code>.</strong></p> </blockquote> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/actions/cache/blob/main/RELEASES.md">actions/cache's changelog</a>.</em></p> <blockquote> <h1>Releases</h1> <h2>How to prepare a release</h2> <blockquote> <p>[!NOTE] Relevant for maintainers with write access only.</p> </blockquote> <ol> <li>Switch to a new branch from <code>main</code>.</li> <li>Run <code>npm test</code> to ensure all tests are passing.</li> <li>Update the version in <a href="https://github.com/actions/cache/blob/main/package.json"><code>https://github.com/actions/cache/blob/main/package.json</code></a>.</li> <li>Run <code>npm run build</code> to update the compiled files.</li> <li>Update this <a href="https://github.com/actions/cache/blob/main/RELEASES.md"><code>https://github.com/actions/cache/blob/main/RELEASES.md</code></a> with the new version and changes in the <code>## Changelog</code> section.</li> <li>Run <code>licensed cache</code> to update the license report.</li> <li>Run <code>licensed status</code> and resolve any warnings by updating the <a href="https://github.com/actions/cache/blob/main/.licensed.yml"><code>https://github.com/actions/cache/blob/main/.licensed.yml</code></a> file with the exceptions.</li> <li>Commit your changes and push your branch upstream.</li> <li>Open a pull request against <code>main</code> and get it reviewed and merged.</li> <li>Draft a new release <a href="https://github.com/actions/cache/releases">https://github.com/actions/cache/releases</a> use the same version number used in <code>package.json</code> <ol> <li>Create a new tag with the version number.</li> <li>Auto generate release notes and update them to match the changes you made in <code>RELEASES.md</code>.</li> <li>Toggle the set as the latest release option.</li> <li>Publish the release.</li> </ol> </li> <li>Navigate to <a href="https://github.com/actions/cache/actions/workflows/release-new-action-version.yml">https://github.com/actions/cache/actions/workflows/release-new-action-version.yml</a> <ol> <li>There should be a workflow run queued with the same version number.</li> <li>Approve the run to publish the new version and update the major tags for this action.</li> </ol> </li> </ol> <h2>Changelog</h2> <h3>6.1.0</h3> <ul> <li>Bump <code>@actions/cache</code> to v6.1.0 to pick up <a href="https://redirect.github.com/actions/toolkit/pull/2435">actions/toolkit#2435 Handle cache write error due to read-only token</a></li> <li>Switch redundant "Cache save failed" warning to debug log in save-only</li> </ul> <h3>6.0.0</h3> <ul> <li>Updated <code>@actions/cache</code> to ^6.0.1, <code>@actions/core</code> to ^3.0.1, <code>@actions/exec</code> to ^3.0.0, <code>@actions/io</code> to ^3.0.2</li> <li>Migrated to ESM module system</li> <li>Upgraded Jest to v30 and test infrastructure to be ESM compatible</li> </ul> <h3>5.0.4</h3> <ul> <li>Bump <code>minimatch</code> to v3.1.5 (fixes ReDoS via globstar patterns)</li> <li>Bump <code>undici</code> to v6.24.1 (WebSocket decompression bomb protection, header validation fixes)</li> <li>Bump <code>fast-xml-parser</code> to v5.5.6</li> </ul> <h3>5.0.3</h3> <ul> <li>Bump <code>@actions/cache</code> to v5.0.5 (Resolves: <a href="https://github.com/actions/cache/security/dependabot/33">https://github.com/actions/cache/security/dependabot/33</a>)</li> <li>Bump <code>@actions/core</code> to v2.0.3</li> </ul> <h3>5.0.2</h3> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/actions/cache/commit/2c8a9bd7457de244a408f35966fab2fb45fda9c8"><code>2c8a9bd</code></a> Merge pull request <a href="https://redirect.github.com/actions/cache/issues/1760">#1760</a> from actions/samirat/esm_migration_and_package_update</li> <li><a href="https://github.com/actions/cache/commit/e9b91fdc3fea7d79165fceb79042ef45c2d51023"><code>e9b91fd</code></a> Prettier fixes</li> <li><a href="https://github.com/actions/cache/commit/e4884b8ff7f92ef6b52c79eda480bbc86e685adb"><code>e4884b8</code></a> Rebuild dist</li> <li><a href="https://github.com/actions/cache/commit/10baf0191a3c426ea0fa4a3253a5c04233b6e18f"><code>10baf01</code></a> Fixed licenses</li> <li><a href="https://github.com/actions/cache/commit/e39b386c9004d72a15d864ade8c0b3a702d47a37"><code>e39b386</code></a> Fix test mock return order</li> <li><a href="https://github.com/actions/cache/commit/b6928203372a8571ff984c0c883ef3a1adfb0c06"><code>b692820</code></a> PR feedback</li> <li><a href="https://github.com/actions/cache/commit/60749128a44d25d3c520a489e576380cf00ff3f1"><code>6074912</code></a> Rebuild dist bundles as ESM to match type:module</li> <li><a href="https://github.com/actions/cache/commit/5a912e8b4af820fa082a0e75cfd2c782f8fbfe0e"><code>5a912e8</code></a> Fix lint and jest issues</li> <li><a href="https://github.com/actions/cache/commit/b9bf592b98b6a5d0cad9929c76247de1cac78abe"><code>b9bf592</code></a> Update documentation for v6 release</li> <li><a href="https://github.com/actions/cache/commit/80f777761d0990932f64ed2740522d7226a49062"><code>80f7777</code></a> Update packages, migrate to ESM</li> <li>See full diff in <a href="https://github.com/actions/cache/compare/v5...v6">compare view</a></li> </ul> </details> <br /> Updates `actions/checkout` from 6.0.2 to 7.0.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/checkout/releases">actions/checkout's releases</a>.</em></p> <blockquote> <h2>v7.0.0</h2> <h2>What's Changed</h2> <ul> <li>block checking out fork pr for pull_request_target and workflow_run by <a href="https://github.com/aiqiaoy"><code>@aiqiaoy</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2454">actions/checkout#2454</a></li> <li>Bump actions/publish-immutable-action from 0.0.3 to 0.0.4 in the minor-actions-dependencies group across 1 directory by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/checkout/pull/2458">actions/checkout#2458</a></li> <li>Bump flatted from 3.3.1 to 3.4.2 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/checkout/pull/2460">actions/checkout#2460</a></li> <li>Bump js-yaml from 4.1.0 to 4.2.0 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/checkout/pull/2461">actions/checkout#2461</a></li> <li>Bump <code>@actions/core</code> and <code>@actions/tool-cache</code> and Remove uuid by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/checkout/pull/2459">actions/checkout#2459</a></li> <li>upgrade module to esm and update dependencies by <a href="https://github.com/aiqiaoy"><code>@aiqiaoy</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2463">actions/checkout#2463</a></li> <li>Bump the minor-npm-dependencies group across 1 directory with 3 updates by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/checkout/pull/2462">actions/checkout#2462</a></li> <li>getting ready for checkout v7 release by <a href="https://github.com/aiqiaoy"><code>@aiqiaoy</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2464">actions/checkout#2464</a></li> <li>update error wording by <a href="https://github.com/aiqiaoy"><code>@aiqiaoy</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2467">actions/checkout#2467</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/aiqiaoy"><code>@aiqiaoy</code></a> made their first contribution in <a href="https://redirect.github.com/actions/checkout/pull/2454">actions/checkout#2454</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/checkout/compare/v6.0.3...v7.0.0">https://github.com/actions/checkout/compare/v6.0.3...v7.0.0</a></p> <h2>v6.0.3</h2> <h2>What's Changed</h2> <ul> <li>Update changelog by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2357">actions/checkout#2357</a></li> <li>fix: expand merge commit SHA regex and add SHA-256 test cases by <a href="https://github.com/yaananth"><code>@yaananth</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2414">actions/checkout#2414</a></li> <li>Fix checkout init for SHA-256 repositories by <a href="https://github.com/yaananth"><code>@yaananth</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2439">actions/checkout#2439</a></li> <li>Update changelog for v6.0.3 by <a href="https://github.com/yaananth"><code>@yaananth</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2446">actions/checkout#2446</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/yaananth"><code>@yaananth</code></a> made their first contribution in <a href="https://redirect.github.com/actions/checkout/pull/2414">actions/checkout#2414</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/checkout/compare/v6...v6.0.3">https://github.com/actions/checkout/compare/v6...v6.0.3</a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/actions/checkout/blob/main/CHANGELOG.md">actions/checkout's changelog</a>.</em></p> <blockquote> <h1>Changelog</h1> <h2>v7.0.0</h2> <ul> <li>Block checking out fork PR for pull_request_target and workflow_run by <a href="https://github.com/aiqiaoy"><code>@aiqiaoy</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2454">actions/checkout#2454</a></li> <li>Bump actions/publish-immutable-action from 0.0.3 to 0.0.4 in the minor-actions-dependencies group across 1 directory by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/checkout/pull/2458">actions/checkout#2458</a></li> <li>Bump flatted from 3.3.1 to 3.4.2 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/checkout/pull/2460">actions/checkout#2460</a></li> <li>Bump js-yaml from 4.1.0 to 4.2.0 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/checkout/pull/2461">actions/checkout#2461</a></li> <li>Bump <code>@actions/core</code> and <code>@actions/tool-cache</code> and Remove uuid by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/checkout/pull/2459">actions/checkout#2459</a></li> <li>upgrade module to esm and update dependencies by <a href="https://github.com/aiqiaoy"><code>@aiqiaoy</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2463">actions/checkout#2463</a></li> <li>Bump the minor-npm-dependencies group across 1 directory with 3 updates by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/checkout/pull/2462">actions/checkout#2462</a></li> </ul> <h2>v6.0.3</h2> <ul> <li>Fix checkout init for SHA-256 repositories by <a href="https://github.com/yaananth"><code>@yaananth</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2439">actions/checkout#2439</a></li> <li>fix: expand merge commit SHA regex and add SHA-256 test cases by <a href="https://github.com/yaananth"><code>@yaananth</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2414">actions/checkout#2414</a></li> </ul> <h2>v6.0.2</h2> <ul> <li>Fix tag handling: preserve annotations and explicit fetch-tags by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2356">actions/checkout#2356</a></li> </ul> <h2>v6.0.1</h2> <ul> <li>Add worktree support for persist-credentials includeIf by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2327">actions/checkout#2327</a></li> </ul> <h2>v6.0.0</h2> <ul> <li>Persist creds to a separate file by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2286">actions/checkout#2286</a></li> <li>Update README to include Node.js 24 support details and requirements by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2248">actions/checkout#2248</a></li> </ul> <h2>v5.0.1</h2> <ul> <li>Port v6 cleanup to v5 by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2301">actions/checkout#2301</a></li> </ul> <h2>v5.0.0</h2> <ul> <li>Update actions checkout to use node 24 by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2226">actions/checkout#2226</a></li> </ul> <h2>v4.3.1</h2> <ul> <li>Port v6 cleanup to v4 by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2305">actions/checkout#2305</a></li> </ul> <h2>v4.3.0</h2> <ul> <li>docs: update README.md by <a href="https://github.com/motss"><code>@motss</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1971">actions/checkout#1971</a></li> <li>Add internal repos for checking out multiple repositories by <a href="https://github.com/mouismail"><code>@mouismail</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1977">actions/checkout#1977</a></li> <li>Documentation update - add recommended permissions to Readme by <a href="https://github.com/benwells"><code>@benwells</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2043">actions/checkout#2043</a></li> <li>Adjust positioning of user email note and permissions heading by <a href="https://github.com/joshmgross"><code>@joshmgross</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2044">actions/checkout#2044</a></li> <li>Update README.md by <a href="https://github.com/nebuk89"><code>@nebuk89</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2194">actions/checkout#2194</a></li> <li>Update CODEOWNERS for actions by <a href="https://github.com/TingluoHuang"><code>@TingluoHuang</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2224">actions/checkout#2224</a></li> <li>Update package dependencies by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2236">actions/checkout#2236</a></li> </ul> <h2>v4.2.2</h2> <ul> <li><code>url-helper.ts</code> now leverages well-known environment variables by <a href="https://github.com/jww3"><code>@jww3</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1941">actions/checkout#1941</a></li> <li>Expand unit test coverage for <code>isGhes</code> by <a href="https://github.com/jww3"><code>@jww3</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1946">actions/checkout#1946</a></li> </ul> <h2>v4.2.1</h2> <ul> <li>Check out other refs/* by commit if provided, fall back to ref by <a href="https://github.com/orhantoy"><code>@orhantoy</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1924">actions/checkout#1924</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/actions/checkout/commit/9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0"><code>9c091bb</code></a> update error wording (<a href="https://redirect.github.com/actions/checkout/issues/2467">#2467</a>)</li> <li><a href="https://github.com/actions/checkout/commit/1044a6dea927916f2c38ba5aeffbc0a847b1221a"><code>1044a6d</code></a> getting ready for checkout v7 release (<a href="https://redirect.github.com/actions/checkout/issues/2464">#2464</a>)</li> <li><a href="https://github.com/actions/checkout/commit/f0282184c7ce73ab54c7e4ab5a617122602e575f"><code>f028218</code></a> Bump the minor-npm-dependencies group across 1 directory with 3 updates (<a href="https://redirect.github.com/actions/checkout/issues/2462">#2462</a>)</li> <li><a href="https://github.com/actions/checkout/commit/d914b262ffc244530a203ab40decab34c3abf34d"><code>d914b26</code></a> upgrade module to esm and update dependencies (<a href="https://redirect.github.com/actions/checkout/issues/2463">#2463</a>)</li> <li><a href="https://github.com/actions/checkout/commit/537c7ef99cef6e5ddb5e7ff5d16d14510503801d"><code>537c7ef</code></a> Bump <code>@actions/core</code> and <code>@actions/tool-cache</code> and Remove uuid (<a href="https://redirect.github.com/actions/checkout/issues/2459">#2459</a>)</li> <li><a href="https://github.com/actions/checkout/commit/130a169078a413d3a5246a393625e8e742f387f6"><code>130a169</code></a> Bump js-yaml from 4.1.0 to 4.2.0 (<a href="https://redirect.github.com/actions/checkout/issues/2461">#2461</a>)</li> <li><a href="https://github.com/actions/checkout/commit/7d09575332117a40b46e5e020664df234cd416f3"><code>7d09575</code></a> Bump flatted from 3.3.1 to 3.4.2 (<a href="https://redirect.github.com/actions/checkout/issues/2460">#2460</a>)</li> <li><a href="https://github.com/actions/checkout/commit/0f9f3aa320cb53abeb534aeb54048075d9697a0e"><code>0f9f3aa</code></a> Bump actions/publish-immutable-action (<a href="https://redirect.github.com/actions/checkout/issues/2458">#2458</a>)</li> <li><a href="https://github.com/actions/checkout/commit/f9e715a95fcd1f9253f77dd28f11e88d2d6460c7"><code>f9e715a</code></a> block checking out fork pr for pull_request_target and workflow_run (<a href="https://redirect.github.com/actions/checkout/issues/2454">#2454</a>)</li> <li><a href="https://github.com/actions/checkout/commit/df4cb1c069e1874edd31b4311f1884172cec0e10"><code>df4cb1c</code></a> Update changelog for v6.0.3 (<a href="https://redirect.github.com/actions/checkout/issues/2446">#2446</a>)</li> <li>Additional commits viewable in <a href="https://github.com/actions/checkout/compare/v6.0.2...9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0">compare view</a></li> </ul> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
394 lines
17 KiB
YAML
394 lines
17 KiB
YAML
# Reusable workflow: one GHA eval run for a single model.
|
|
#
|
|
# Called by the per-provider matrix jobs in `evals.yml`. Inputs are validated
|
|
# upstream by `prep` (`_SAFE_SPEC_RE` in `.github/scripts/models.py`); this
|
|
# workflow trusts that contract.
|
|
|
|
name: "🔧 Eval run (internal)"
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
model:
|
|
description: "Full model spec to evaluate."
|
|
required: true
|
|
type: string
|
|
provider:
|
|
description: "Provider prefix for the model spec."
|
|
required: true
|
|
type: string
|
|
artifact_key:
|
|
description: "Stable, artifact-safe suffix for uploaded reports."
|
|
required: true
|
|
type: string
|
|
eval_categories:
|
|
description: "Comma-separated eval categories to run."
|
|
required: false
|
|
default: ""
|
|
type: string
|
|
eval_categories_exclude:
|
|
description: "Comma-separated eval categories to skip."
|
|
required: false
|
|
default: ""
|
|
type: string
|
|
eval_tiers:
|
|
description: "Comma-separated eval tiers to run."
|
|
required: false
|
|
default: ""
|
|
type: string
|
|
analyze_failures:
|
|
description: "Run the LLM failure-analysis step after evals."
|
|
required: false
|
|
default: false
|
|
type: boolean
|
|
analysis_model:
|
|
description: "Model for failure analysis. Only used when `analyze_failures` is true."
|
|
required: false
|
|
default: "anthropic:claude-haiku-4-5-20251001"
|
|
type: string
|
|
openrouter_provider:
|
|
description: "Pin OpenRouter to one or more providers (comma-separated allowlist)."
|
|
required: false
|
|
default: ""
|
|
type: string
|
|
openrouter_allow_fallbacks:
|
|
description: "Allow OpenRouter to fall back outside `openrouter_provider`. Default is strict (no fallbacks)."
|
|
required: false
|
|
default: false
|
|
type: boolean
|
|
openai_reasoning_effort:
|
|
description: "Reasoning effort for OpenAI models (minimal | low | medium | high | xhigh)."
|
|
required: false
|
|
default: ""
|
|
type: string
|
|
repl:
|
|
description: "REPL middleware to use for `@pytest.mark.repl` tests (`quickjs`). Empty = bind tools directly."
|
|
required: false
|
|
default: ""
|
|
type: string
|
|
secrets:
|
|
ANTHROPIC_API_KEY:
|
|
required: false
|
|
BASETEN_API_KEY:
|
|
required: false
|
|
FIREWORKS_API_KEY:
|
|
required: false
|
|
GOOGLE_API_KEY:
|
|
required: false
|
|
GROQ_API_KEY:
|
|
required: false
|
|
LANGSMITH_API_KEY:
|
|
required: false
|
|
NVIDIA_API_KEY:
|
|
required: false
|
|
OLLAMA_API_KEY:
|
|
required: false
|
|
OPENAI_API_KEY:
|
|
required: false
|
|
OPENROUTER_API_KEY:
|
|
required: false
|
|
XAI_API_KEY:
|
|
required: false
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
env:
|
|
UV_NO_SYNC: "true"
|
|
UV_FROZEN: "true"
|
|
|
|
jobs:
|
|
eval:
|
|
# Carries the per-run detail (model · categories · tiers) so it appears in
|
|
# the matrix-job breadcrumb when the job actually runs. The outer caller
|
|
# in `evals.yml` is intentionally static — GHA does not evaluate `name:`
|
|
# expressions for jobs skipped via `if:`, so referencing `${{ matrix.* }}`
|
|
# there would render as raw template text in the UI.
|
|
name: "📊 ${{ inputs.model }} · ${{ inputs.eval_categories || 'all categories' }}${{ inputs.eval_categories_exclude && format(' excluding {0}', inputs.eval_categories_exclude) || '' }} · ${{ inputs.eval_tiers || 'all tiers' }}"
|
|
runs-on: ubuntu-latest
|
|
environment: evals
|
|
timeout-minutes: 360
|
|
|
|
defaults:
|
|
run:
|
|
working-directory: libs/evals
|
|
env:
|
|
PYTEST_ADDOPTS: "--evals-report-file evals_report.json"
|
|
LANGSMITH_TRACING: "true"
|
|
LANGSMITH_EXPERIMENT: ${{ inputs.model }}
|
|
OLLAMA_HOST: "https://ollama.com"
|
|
# Group all OpenRouter calls in this per-model eval job under a stable
|
|
# session ID derived from GHA runner env. Picked up by ChatOpenRouter
|
|
# via from_env (langchain-openrouter >= 0.2.2). Re-runs get a new
|
|
# session via run_attempt; different models get distinct sessions via
|
|
# artifact_key.
|
|
OPENROUTER_SESSION_ID: deepagents-evals-${{ github.run_id }}-${{ github.run_attempt }}-${{ inputs.artifact_key }}
|
|
steps:
|
|
- name: "📋 Checkout Code"
|
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
|
|
|
- name: "🐍 Set up Python + UV"
|
|
uses: "./.github/actions/uv_setup"
|
|
with:
|
|
python-version: "3.12"
|
|
# Per-shard scope so parallel matrix jobs don't race on the same
|
|
# cache key. `artifact_key` is enforced unique by the matrix
|
|
# builder (`_artifact_key` in `.github/scripts/models.py`).
|
|
cache-suffix: evals-${{ inputs.artifact_key }}
|
|
working-directory: libs/evals
|
|
|
|
- name: "📦 Install Dependencies"
|
|
# `UV_FROZEN=true` already enforces lockfile use; uv 0.11 rejects
|
|
# combining that environment variable with `--locked`.
|
|
run: uv sync --group test
|
|
|
|
- name: "🏷️ Apply category filter"
|
|
if: inputs.eval_categories != ''
|
|
env:
|
|
EVAL_CATEGORIES: ${{ inputs.eval_categories }}
|
|
run: |
|
|
flags=()
|
|
IFS=',' read -ra cats <<< "${EVAL_CATEGORIES}"
|
|
for cat in "${cats[@]}"; do
|
|
cat=$(echo "$cat" | xargs)
|
|
[ -z "$cat" ] && continue
|
|
flags+=(--eval-category "$cat")
|
|
done
|
|
printf 'PYTEST_ADDOPTS=%s %s\n' "${PYTEST_ADDOPTS}" "${flags[*]}" >> "$GITHUB_ENV"
|
|
|
|
- name: "🏷️ Apply category exclude filter"
|
|
if: inputs.eval_categories_exclude != ''
|
|
env:
|
|
EVAL_CATEGORIES_EXCLUDE: ${{ inputs.eval_categories_exclude }}
|
|
run: |
|
|
flags=()
|
|
IFS=',' read -ra cats <<< "${EVAL_CATEGORIES_EXCLUDE}"
|
|
for cat in "${cats[@]}"; do
|
|
cat=$(echo "$cat" | xargs)
|
|
[ -z "$cat" ] && continue
|
|
flags+=(--eval-category-exclude "$cat")
|
|
done
|
|
printf 'PYTEST_ADDOPTS=%s %s\n' "${PYTEST_ADDOPTS}" "${flags[*]}" >> "$GITHUB_ENV"
|
|
|
|
- name: "🏷️ Apply tier filter"
|
|
if: inputs.eval_tiers != ''
|
|
env:
|
|
EVAL_TIERS: ${{ inputs.eval_tiers }}
|
|
run: |
|
|
flags=()
|
|
IFS=',' read -ra tiers <<< "${EVAL_TIERS}"
|
|
for tier in "${tiers[@]}"; do
|
|
tier=$(echo "$tier" | xargs)
|
|
[ -z "$tier" ] && continue
|
|
flags+=(--eval-tier "$tier")
|
|
done
|
|
printf 'PYTEST_ADDOPTS=%s %s\n' "${PYTEST_ADDOPTS}" "${flags[*]}" >> "$GITHUB_ENV"
|
|
|
|
- name: "🔒 Apply OpenRouter provider pin"
|
|
if: inputs.openrouter_provider != '' && inputs.provider == 'openrouter'
|
|
env:
|
|
OPENROUTER_PROVIDER: ${{ inputs.openrouter_provider }}
|
|
OPENROUTER_ALLOW_FALLBACKS: ${{ inputs.openrouter_allow_fallbacks }}
|
|
run: |
|
|
provider=$(echo "$OPENROUTER_PROVIDER" | xargs)
|
|
# Defense in depth: GitHub serializes typed `boolean` inputs as
|
|
# lowercase "true"/"false", but if this workflow is ever wired to
|
|
# a string-valued source (workflow_run payload, matrix string,
|
|
# caller-side env literal) the value could arrive as "True"/"1"/
|
|
# "yes". Normalize and fail loudly on anything unrecognized so a
|
|
# silent strict-pin never masquerades as a soft preference.
|
|
extra=""
|
|
case "${OPENROUTER_ALLOW_FALLBACKS,,}" in
|
|
true|1|yes)
|
|
extra=" --openrouter-allow-fallbacks"
|
|
;;
|
|
false|0|no|"")
|
|
;;
|
|
*)
|
|
echo "::error::Unrecognized openrouter_allow_fallbacks=${OPENROUTER_ALLOW_FALLBACKS}; expected true/false."
|
|
exit 1
|
|
;;
|
|
esac
|
|
printf 'PYTEST_ADDOPTS=%s --openrouter-provider %s%s\n' "${PYTEST_ADDOPTS}" "${provider}" "${extra}" >> "$GITHUB_ENV"
|
|
|
|
- name: "🧠 Apply OpenAI reasoning effort"
|
|
if: inputs.openai_reasoning_effort != '' && inputs.provider == 'openai'
|
|
env:
|
|
OPENAI_REASONING_EFFORT: ${{ inputs.openai_reasoning_effort }}
|
|
run: |
|
|
effort=$(echo "$OPENAI_REASONING_EFFORT" | xargs)
|
|
printf 'PYTEST_ADDOPTS=%s --openai-reasoning-effort %s\n' "${PYTEST_ADDOPTS}" "${effort}" >> "$GITHUB_ENV"
|
|
|
|
- name: "🧪 Apply REPL middleware"
|
|
# `repl` is `type: string` so a `workflow_call` caller could pass any
|
|
# value; the case below is the source of truth for accepted values.
|
|
# Keep the `repl` choice enums in `evals.yml` and `evals_trials.yml`
|
|
# in sync with this list.
|
|
if: inputs.repl != ''
|
|
env:
|
|
REPL: ${{ inputs.repl }}
|
|
run: |
|
|
repl=$(echo "$REPL" | xargs)
|
|
case "$repl" in
|
|
quickjs) ;;
|
|
*)
|
|
echo "::error::Unsupported repl value: ${repl}. Allowed: quickjs."
|
|
exit 1
|
|
;;
|
|
esac
|
|
printf 'PYTEST_ADDOPTS=%s --repl %s\n' "${PYTEST_ADDOPTS}" "${repl}" >> "$GITHUB_ENV"
|
|
|
|
- name: "📊 Run Evals"
|
|
env:
|
|
MODEL: ${{ inputs.model }}
|
|
ANTHROPIC_API_KEY: ${{ inputs.provider == 'anthropic' && secrets.ANTHROPIC_API_KEY || '' }}
|
|
BASETEN_API_KEY: ${{ inputs.provider == 'baseten' && secrets.BASETEN_API_KEY || '' }}
|
|
FIREWORKS_API_KEY: ${{ inputs.provider == 'fireworks' && secrets.FIREWORKS_API_KEY || '' }}
|
|
GOOGLE_API_KEY: ${{ inputs.provider == 'google_genai' && secrets.GOOGLE_API_KEY || '' }}
|
|
GROQ_API_KEY: ${{ inputs.provider == 'groq' && secrets.GROQ_API_KEY || '' }}
|
|
LANGSMITH_API_KEY: ${{ secrets.LANGSMITH_API_KEY }}
|
|
NVIDIA_API_KEY: ${{ inputs.provider == 'nvidia' && secrets.NVIDIA_API_KEY || '' }}
|
|
OLLAMA_API_KEY: ${{ inputs.provider == 'ollama' && secrets.OLLAMA_API_KEY || '' }}
|
|
OPENAI_API_KEY: ${{ inputs.provider == 'openai' && secrets.OPENAI_API_KEY || '' }}
|
|
OPENROUTER_API_KEY: ${{ inputs.provider == 'openrouter' && secrets.OPENROUTER_API_KEY || '' }}
|
|
XAI_API_KEY: ${{ inputs.provider == 'xai' && secrets.XAI_API_KEY || '' }}
|
|
run: make evals MODEL="$MODEL"
|
|
|
|
- name: "🔍 Check eval report"
|
|
if: "!cancelled()"
|
|
run: |
|
|
if [ ! -f evals_report.json ]; then
|
|
echo "::error::evals_report.json not found. pytest likely crashed before sessionfinish could write the report. Check the 'Run Evals' step logs for errors."
|
|
exit 1
|
|
fi
|
|
|
|
- name: "📊 Post results to summary"
|
|
if: "!cancelled()"
|
|
run: |
|
|
python3 << 'PYEOF'
|
|
import json, os, sys, traceback
|
|
from pathlib import Path
|
|
|
|
report_path = Path("evals_report.json")
|
|
# The upstream "Check eval report" step already emits ::error:: and
|
|
# exits 1 when this file is missing; exit 0 here so we don't
|
|
# double-fail the job.
|
|
if not report_path.exists():
|
|
print("evals_report.json not found, skipping summary", file=sys.stderr)
|
|
sys.exit(0)
|
|
|
|
try:
|
|
report = json.loads(report_path.read_text())
|
|
except (json.JSONDecodeError, UnicodeDecodeError) as exc:
|
|
print(f"::error::evals_report.json is malformed: {exc}")
|
|
sys.exit(1)
|
|
model = report.get("model", "unknown")
|
|
if model == "unknown":
|
|
print("::warning::evals_report.json has no 'model' key; using 'unknown'")
|
|
|
|
# Load category labels for friendly display names.
|
|
cats_json = Path("deepagents_evals/categories.json")
|
|
labels = {}
|
|
try:
|
|
labels = json.loads(cats_json.read_text()).get("labels", {})
|
|
except (FileNotFoundError, json.JSONDecodeError) as exc:
|
|
print(f"::warning::Could not load category labels from {cats_json}: {exc}")
|
|
|
|
lines = [
|
|
"<details>",
|
|
"<summary>(click to expand)</summary>",
|
|
"",
|
|
]
|
|
|
|
try:
|
|
# -- Metrics table --
|
|
metrics = [
|
|
("passed", None), ("failed", None), ("skipped", None),
|
|
("total", None), ("correctness", None), ("solve_rate", "n/a"),
|
|
("step_ratio", "n/a"), ("tool_call_ratio", "n/a"),
|
|
("median_duration_s", None),
|
|
]
|
|
header = "| " + " | ".join(f"`{k}`" for k, _ in metrics) + " |"
|
|
sep = "|" + "|".join("---:" for _ in metrics) + "|"
|
|
vals = []
|
|
for key, default in metrics:
|
|
val = report.get(key, default)
|
|
if val is None:
|
|
val = 0
|
|
vals.append(str(val))
|
|
row = "| " + " | ".join(vals) + " |"
|
|
lines += [header, sep, row]
|
|
|
|
# -- Per-category scores (horizontal) --
|
|
cat_scores = report.get("category_scores")
|
|
if isinstance(cat_scores, dict) and cat_scores:
|
|
sorted_cats = sorted(cat_scores.items())
|
|
def esc(s): return str(s).replace("|", "\\|")
|
|
cat_header = "| " + " | ".join(esc(labels.get(c, c)) for c, _ in sorted_cats) + " |"
|
|
cat_sep = "|" + "|".join("---:" for _ in sorted_cats) + "|"
|
|
cat_row = "| " + " | ".join(esc(s) for _, s in sorted_cats) + " |"
|
|
lines += ["", "### Per-category correctness", "", cat_header, cat_sep, cat_row]
|
|
|
|
# -- Experiment links --
|
|
exp_links = report.get("experiment_links")
|
|
if isinstance(exp_links, list) and exp_links:
|
|
lines += ["", "### LangSmith experiments", ""]
|
|
for link in exp_links:
|
|
if not isinstance(link, dict):
|
|
continue
|
|
name = link.get("name", "")
|
|
url = link.get("url", "")
|
|
public_url = link.get("public_url", "")
|
|
if public_url:
|
|
lines.append(f"- [{name}]({public_url}) ([internal]({url}))")
|
|
elif url:
|
|
lines.append(f"- [{name or url}]({url})")
|
|
except (KeyError, TypeError, ValueError, AttributeError) as exc:
|
|
tb = traceback.format_exc()
|
|
lines.append(f"\n\n**Error building summary:** `{exc}` (see job logs)\n")
|
|
print(f"::warning::Error building summary for {model}: {exc}\n{tb}")
|
|
finally:
|
|
lines += ["", "</details>"]
|
|
|
|
text = "\n".join(lines) + "\n"
|
|
summary = os.environ.get("GITHUB_STEP_SUMMARY", "")
|
|
if summary:
|
|
with open(summary, "a") as f:
|
|
f.write(text)
|
|
print(text)
|
|
PYEOF
|
|
|
|
- name: "🧠 Analyze eval failures"
|
|
if: ${{ !cancelled() && inputs.analyze_failures }}
|
|
continue-on-error: true
|
|
env:
|
|
ANALYSIS_MODEL: ${{ inputs.analysis_model }}
|
|
ANTHROPIC_API_KEY: ${{ startsWith(inputs.analysis_model, 'anthropic:') && secrets.ANTHROPIC_API_KEY || '' }}
|
|
BASETEN_API_KEY: ${{ startsWith(inputs.analysis_model, 'baseten:') && secrets.BASETEN_API_KEY || '' }}
|
|
FIREWORKS_API_KEY: ${{ startsWith(inputs.analysis_model, 'fireworks:') && secrets.FIREWORKS_API_KEY || '' }}
|
|
GOOGLE_API_KEY: ${{ startsWith(inputs.analysis_model, 'google_genai:') && secrets.GOOGLE_API_KEY || '' }}
|
|
GROQ_API_KEY: ${{ startsWith(inputs.analysis_model, 'groq:') && secrets.GROQ_API_KEY || '' }}
|
|
LANGSMITH_API_KEY: ${{ secrets.LANGSMITH_API_KEY }}
|
|
NVIDIA_API_KEY: ${{ startsWith(inputs.analysis_model, 'nvidia:') && secrets.NVIDIA_API_KEY || '' }}
|
|
OLLAMA_API_KEY: ${{ startsWith(inputs.analysis_model, 'ollama:') && secrets.OLLAMA_API_KEY || '' }}
|
|
OPENAI_API_KEY: ${{ startsWith(inputs.analysis_model, 'openai:') && secrets.OPENAI_API_KEY || '' }}
|
|
OPENROUTER_API_KEY: ${{ startsWith(inputs.analysis_model, 'openrouter:') && secrets.OPENROUTER_API_KEY || '' }}
|
|
XAI_API_KEY: ${{ startsWith(inputs.analysis_model, 'xai:') && secrets.XAI_API_KEY || '' }}
|
|
run: uv run python ../../.github/scripts/analyze_eval_failures.py evals_report.json
|
|
|
|
- name: "📤 Upload failure analysis"
|
|
if: ${{ !cancelled() && inputs.analyze_failures && hashFiles('libs/evals/failure_analysis.json') != '' }}
|
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
|
|
with:
|
|
name: failure-analysis-${{ inputs.artifact_key }}
|
|
path: libs/evals/failure_analysis.json
|
|
if-no-files-found: error
|
|
|
|
- name: "📤 Upload eval report"
|
|
if: "!cancelled()"
|
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
|
|
with:
|
|
name: evals-report-${{ inputs.artifact_key }}
|
|
path: libs/evals/evals_report.json
|
|
if-no-files-found: error
|