Files
deepagents/.github/workflows/_eval.yml
dependabot[bot] 1a58a4399e chore(deps): bump the major group with 2 updates (#4285)
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 &amp; 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 &quot;Cache save failed&quot; 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>
2026-06-25 16:29:23 -04:00

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