mirror of
https://github.com/ComposioHQ/composio.git
synced 2026-09-22 11:46:35 +08:00
@composio/cli@0.3.3-beta.341
1157 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
2cab683f0e |
chore(deps-dev): bump the npm-development group with 6 updates (#4091)
Bumps the npm-development group with 6 updates: | Package | From | To | | --- | --- | --- | | [lint-staged](https://github.com/lint-staged/lint-staged) | `17.2.0` | `17.3.0` | | [oxlint](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint) | `1.76.0` | `1.77.0` | | [oxlint-plugin-eslint](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint-plugin-eslint) | `1.76.0` | `1.77.0` | | [@types/semver](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/semver) | `7.7.1` | `7.8.0` | | [@earendil-works/pi-coding-agent](https://github.com/earendil-works/pi/tree/HEAD/packages/coding-agent) | `0.82.1` | `0.83.0` | | [eve](https://github.com/vercel/eve/tree/HEAD/packages/eve) | `0.27.13` | `0.29.5` | Updates `lint-staged` from 17.2.0 to 17.3.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/lint-staged/lint-staged/releases">lint-staged's releases</a>.</em></p> <blockquote> <h2>v17.3.0</h2> <h3>Minor Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/lint-staged/lint-staged/pull/1825">#1825</a> <a href="https://github.com/lint-staged/lint-staged/commit/16b3f74850e5d2811b5fbaea6c136733a71ad3e4"><code>16b3f74</code></a> - It is now possible to run multiple tasks in parallel for a single glob by configuring it with an array of tasks (which run sequentially), and then placing another array inside it (where the tasks will run in parallel). The following demonstrates the order tasks will start in:</p> <pre lang="json"><code>{ "*.ts": ["first", "second", ["third", "third"], "fourth"] } </code></pre> <p>As a concrete example, <em>lint-staged</em>'s own configuration is:</p> <pre lang="js"><code>/** @type {import('./lib/index.js').Configuration} */ export default { "*": [ [ "oxfmt --check --no-error-on-unmatched-pattern", "oxlint --no-error-on-unmatched-pattern", ], ], "*.ts": () => "tsc", }; </code></pre> <p>which means:</p> <ol> <li>for all staged files, run the two commands in parallel with staged filenames appended, for example: <ul> <li><code>oxfmt --check --no-error-on-unmatched-pattern lib/index.js</code></li> <li><code>oxlint --no-error-on-unmatched-pattern lib/index.js</code></li> </ul> </li> <li>additionally, if any <code>*.ts</code> files are staged, run <code>tsc</code> without appending any arguments</li> <li>The two sets of commands also run in parallel</li> </ol> </li> </ul> <h3>Patch Changes</h3> <ul> <li><a href="https://redirect.github.com/lint-staged/lint-staged/pull/1829">#1829</a> <a href="https://github.com/lint-staged/lint-staged/commit/15f7e5314b4afe4702808d978758b22d42437f43"><code>15f7e53</code></a> - During an in-progress merge, files that are unchanged from the branch being merged are now skipped. Technically, files are only included if there are staged changes against both <code>HEAD</code> and <code>MERGE_HEAD</code>.</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/lint-staged/lint-staged/blob/main/CHANGELOG.md">lint-staged's changelog</a>.</em></p> <blockquote> <h2>17.3.0</h2> <h3>Minor Changes</h3> <ul> <li> <p><a href="https://redirect.github.com/lint-staged/lint-staged/pull/1825">#1825</a> <a href="https://github.com/lint-staged/lint-staged/commit/16b3f74850e5d2811b5fbaea6c136733a71ad3e4"><code>16b3f74</code></a> - It is now possible to run multiple tasks in parallel for a single glob by configuring it with an array of tasks (which run sequentially), and then placing another array inside it (where the tasks will run in parallel). The following demonstrates the order tasks will start in:</p> <pre lang="json"><code>{ "*.ts": ["first", "second", ["third", "third"], "fourth"] } </code></pre> <p>As a concrete example, <em>lint-staged</em>'s own configuration is:</p> <pre lang="js"><code>/** @type {import('./lib/index.js').Configuration} */ export default { "*": [ [ "oxfmt --check --no-error-on-unmatched-pattern", "oxlint --no-error-on-unmatched-pattern", ], ], "*.ts": () => "tsc", }; </code></pre> <p>which means:</p> <ol> <li>for all staged files, run the two commands in parallel with staged filenames appended, for example: <ul> <li><code>oxfmt --check --no-error-on-unmatched-pattern lib/index.js</code></li> <li><code>oxlint --no-error-on-unmatched-pattern lib/index.js</code></li> </ul> </li> <li>additionally, if any <code>*.ts</code> files are staged, run <code>tsc</code> without appending any arguments</li> <li>The two sets of commands also run in parallel</li> </ol> </li> </ul> <h3>Patch Changes</h3> <ul> <li><a href="https://redirect.github.com/lint-staged/lint-staged/pull/1829">#1829</a> <a href="https://github.com/lint-staged/lint-staged/commit/15f7e5314b4afe4702808d978758b22d42437f43"><code>15f7e53</code></a> - During an in-progress merge, files that are unchanged from the branch being merged are now skipped. Technically, files are only included if there are staged changes against both <code>HEAD</code> and <code>MERGE_HEAD</code>.</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/lint-staged/lint-staged/commit/d15344350d914f5ce24df2c85f3ffebb9b387f3b"><code>d153443</code></a> Merge pull request <a href="https://redirect.github.com/lint-staged/lint-staged/issues/1828">#1828</a> from lint-staged/changeset-release/main</li> <li><a href="https://github.com/lint-staged/lint-staged/commit/5162c149bbfa09b8a5ad4d37c647d63946568ca8"><code>5162c14</code></a> chore(changeset): release</li> <li><a href="https://github.com/lint-staged/lint-staged/commit/a4db9a4c32f108d1397436752be7e9dda956baa2"><code>a4db9a4</code></a> Merge pull request <a href="https://redirect.github.com/lint-staged/lint-staged/issues/1831">#1831</a> from lint-staged/linter-updates</li> <li><a href="https://github.com/lint-staged/lint-staged/commit/ea96cab0109ab44a5b2562927b890648ee32b4cc"><code>ea96cab</code></a> style: enable oxlint "suspicious" category</li> <li><a href="https://github.com/lint-staged/lint-staged/commit/2fae00778cea0c99da9bcb8bad4718dce08ea04e"><code>2fae007</code></a> style: add <code>@e18e/eslint-plugin</code></li> <li><a href="https://github.com/lint-staged/lint-staged/commit/2280c38a09ff4ca4db60320b5879e0029527afaa"><code>2280c38</code></a> Merge pull request <a href="https://redirect.github.com/lint-staged/lint-staged/issues/1829">#1829</a> from lint-staged/fix-merge-conflict-files</li> <li><a href="https://github.com/lint-staged/lint-staged/commit/1453ae6ae0e05275d714ad0cad7cd090885f504d"><code>1453ae6</code></a> test: relax assertion so that it passes in worktree</li> <li><a href="https://github.com/lint-staged/lint-staged/commit/15f7e5314b4afe4702808d978758b22d42437f43"><code>15f7e53</code></a> fix: lint only files changed against HEAD and MERGE_HEAD, during a merge</li> <li><a href="https://github.com/lint-staged/lint-staged/commit/dedfc31007aed50e1c9c5591a11085cb485ba41c"><code>dedfc31</code></a> Merge pull request <a href="https://redirect.github.com/lint-staged/lint-staged/issues/1825">#1825</a> from lint-staged/parallel-tasks-inside-sequence</li> <li><a href="https://github.com/lint-staged/lint-staged/commit/286e25cef9fde2fb6e77d2312fd91ac99020d69d"><code>286e25c</code></a> feat: allow running parallel tasks by nesting arrays</li> <li>Additional commits viewable in <a href="https://github.com/lint-staged/lint-staged/compare/v17.2.0...v17.3.0">compare view</a></li> </ul> </details> <br /> Updates `oxlint` from 1.76.0 to 1.77.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/oxc-project/oxc/releases">oxlint's releases</a>.</em></p> <blockquote> <h2>oxlint v1.27.0 && oxfmt v0.12.0</h2> <h1>Oxlint v1.27.0</h1> <h3>🚀 Features</h3> <ul> <li>222a8f0 linter/plugins: Implement <code>SourceCode#isSpaceBetween</code> (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15498">#15498</a>) (overlookmotel)</li> <li>2f9735d linter/plugins: Implement <code>context.languageOptions</code> (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15486">#15486</a>) (overlookmotel)</li> <li>bc731ff linter/plugins: Stub out all <code>Context</code> APIs (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15479">#15479</a>) (overlookmotel)</li> <li>5822cb4 linter/plugins: Add <code>extend</code> method to <code>FILE_CONTEXT</code> (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15477">#15477</a>) (overlookmotel)</li> <li>7b1e6f3 apps: Add pure rust binaries and release to github (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15469">#15469</a>) (Boshen)</li> <li>2a89b43 linter: Introduce debug assertions after fixes to assert validity (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15389">#15389</a>) (camc314)</li> <li>ad3c45a editor: Add <code>oxc.path.node</code> option (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15040">#15040</a>) (Sysix)</li> </ul> <h3>🐛 Bug Fixes</h3> <ul> <li>6f3cd77 linter/no-var: Incorrect warning for blocks (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15504">#15504</a>) (Hamir Mahal)</li> <li>6957fb9 linter/plugins: Do not allow access to <code>Context#id</code> in <code>createOnce</code> (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15489">#15489</a>) (overlookmotel)</li> <li>7409630 linter/plugins: Allow access to <code>cwd</code> in <code>createOnce</code> in ESLint interop mode (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15488">#15488</a>) (overlookmotel)</li> <li>732205e parser: Reject <code>using</code> / <code>await using</code> in a switch <code>case</code> / <code>default</code> clause (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15225">#15225</a>) (sapphi-red)</li> <li>a17ca32 linter/plugins: Replace <code>Context</code> class (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15448">#15448</a>) (overlookmotel)</li> <li>ecf2f7b language_server: Fail gracefully when tsgolint executable not found (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15436">#15436</a>) (camc314)</li> <li>3c8d3a7 lang-server: Improve logging in failure case for tsgolint (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15299">#15299</a>) (camc314)</li> <li>ef71410 linter: Use jsx if source type is JS in fix debug assertion (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15434">#15434</a>) (camc314)</li> <li>e32bbf6 linter/no-var: Handle TypeScript declare keyword in fixer (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15426">#15426</a>) (camc314)</li> <li>6565dbe linter/switch-case-braces: Skip comments when searching for <code>:</code> token (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15425">#15425</a>) (camc314)</li> <li>85bd19a linter/prefer-class-fields: Insert value after type annotation in fixer (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15423">#15423</a>) (camc314)</li> <li>fde753e linter/plugins: Block access to <code>context.settings</code> in <code>createOnce</code> (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15394">#15394</a>) (overlookmotel)</li> <li>ddd9f9f linter/forward-ref-uses-ref: Dont suggest removing wrapper in invalid positions (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15388">#15388</a>) (camc314)</li> <li>dac2a9c linter/no-template-curly-in-string: Remove fixer (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15387">#15387</a>) (camc314)</li> <li>989b8e3 linter/no-var: Only fix to <code>const</code> if the var has an initializer (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15385">#15385</a>) (camc314)</li> <li>cc403f5 linter/plugins: Return empty object for unimplemented parserServices (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15364">#15364</a>) (magic-akari)</li> </ul> <h3>⚡ Performance</h3> <ul> <li>25d577e language_server: Start tools in parallel (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15500">#15500</a>) (Sysix)</li> <li>3c57291 linter/plugins: Optimize loops (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15449">#15449</a>) (overlookmotel)</li> <li>3166233 linter/plugins: Remove <code>Arc</code>s (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15431">#15431</a>) (overlookmotel)</li> <li>9de1322 linter/plugins: Lazily deserialize settings JSON (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15395">#15395</a>) (overlookmotel)</li> <li>3049ec2 linter/plugins: Optimize <code>deepFreezeSettings</code> (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15392">#15392</a>) (overlookmotel)</li> <li>444ebfd linter/plugins: Use single object for <code>parserServices</code> (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15378">#15378</a>) (overlookmotel)</li> </ul> <h3>📚 Documentation</h3> <ul> <li>97d2104 linter: Update comment in lint.rs about default value for tsconfig path (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15530">#15530</a>) (Connor Shea)</li> <li>2c6bd9e linter: Always refer as "ES2015" instead of "ES6" (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15411">#15411</a>) (sapphi-red)</li> <li>a0c5203 linter/import/named: Update "ES7" comment in examples (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15410">#15410</a>) (sapphi-red)</li> <li>3dc24b5 linter,minifier: Always refer as "ES Modules" instead of "ES6 Modules" (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15409">#15409</a>) (sapphi-red)</li> <li>2ad77fb linter/no-this-before-super: Correct "Why is this bad?" section (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15408">#15408</a>) (sapphi-red)</li> <li>57f0ce1 linter: Add backquotes where appropriate (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/15407">#15407</a>) (sapphi-red)</li> </ul> <h1>Oxfmt v0.12.0</h1> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/oxc-project/oxc/blob/main/npm/oxlint/CHANGELOG.md">oxlint's changelog</a>.</em></p> <blockquote> <h2>[1.77.0] - 2026-08-03</h2> <h3>🐛 Bug Fixes</h3> <ul> <li>5c0fa61 linter/eslint/no-warning-comments: Unify config structs and remove manual options docs (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/25151">#25151</a>) (Mikhail Baev)</li> </ul> <h3>📚 Documentation</h3> <ul> <li>9dc7756 linter/typescript/no-unnecessary-condition: Clarify options (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/25110">#25110</a>) (camc314)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/oxc-project/oxc/commit/9a423f2f485b79c2353c49442c0c7f60f900261d"><code>9a423f2</code></a> release(apps): oxlint v1.77.0 && oxfmt v0.62.0 (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/25251">#25251</a>)</li> <li><a href="https://github.com/oxc-project/oxc/commit/5c0fa61ddbd098fea5101dff356dc9b67adbee95"><code>5c0fa61</code></a> fix(linter/eslint/no-warning-comments): unify config structs and remove manua...</li> <li><a href="https://github.com/oxc-project/oxc/commit/9dc77567291db6ebd0641284f80bf50163c6a257"><code>9dc7756</code></a> docs(linter/typescript/no-unnecessary-condition): clarify options (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint/issues/25110">#25110</a>)</li> <li>See full diff in <a href="https://github.com/oxc-project/oxc/commits/oxlint_v1.77.0/npm/oxlint">compare view</a></li> </ul> </details> <br /> Updates `oxlint-plugin-eslint` from 1.76.0 to 1.77.0 <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/oxc-project/oxc/commit/9a423f2f485b79c2353c49442c0c7f60f900261d"><code>9a423f2</code></a> release(apps): oxlint v1.77.0 && oxfmt v0.62.0 (<a href="https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint-plugin-eslint/issues/25251">#25251</a>)</li> <li>See full diff in <a href="https://github.com/oxc-project/oxc/commits/apps_v1.77.0/npm/oxlint-plugin-eslint">compare view</a></li> </ul> </details> <br /> Updates `@types/semver` from 7.7.1 to 7.8.0 <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/semver">compare view</a></li> </ul> </details> <br /> Updates `@earendil-works/pi-coding-agent` from 0.82.1 to 0.83.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/earendil-works/pi/releases">@earendil-works/pi-coding-agent's releases</a>.</em></p> <blockquote> <h2>v0.83.0</h2> <h3>New Features</h3> <ul> <li><strong>Credential export for external clients</strong> — <code>pi auth print-api-key</code> and <code>pi auth print-bearer-token</code> export configured credentials with automatic OAuth refresh and minimum-validity enforcement.</li> <li><strong>Headless OpenRouter sign-in</strong> — Complete <code>/login</code> over SSH by pasting the redirect URL or authorization code when the loopback callback is unavailable. See <a href="https://github.com/earendil-works/pi/blob/v0.83.0/packages/coding-agent/docs/providers.md#openrouter">OpenRouter</a>.</li> <li><strong>Claude Opus 5 on GitHub Copilot</strong> — Use Claude Opus 5 through GitHub Copilot with adaptive thinking and a 1M context window. See <a href="https://github.com/earendil-works/pi/blob/v0.83.0/packages/coding-agent/docs/providers.md#github-copilot">GitHub Copilot</a>.</li> </ul> <h3>Breaking Changes</h3> <ul> <li>Upgraded bundled TypeBox aliases to 1.3.7, removing deprecated APIs including <code>Type.Base</code>, <code>Type.Awaited</code>, <code>Type.Promise</code>, <code>Type.AsyncIterator</code>, <code>Type.Iterator</code>, <code>Type.Options</code>, and <code>Value.Mutate</code>, while fixing compiled validation of nullable array tool arguments. Extensions using removed APIs must migrate to supported TypeBox APIs. See <a href="https://github.com/earendil-works/pi/blob/v0.83.0/packages/coding-agent/docs/packages.md#dependencies">Package Dependencies</a> (<a href="https://redirect.github.com/earendil-works/pi/pull/7243">#7243</a> by <a href="https://github.com/petrroll"><code>@petrroll</code></a>).</li> </ul> <h3>Added</h3> <ul> <li>Added <code>pi auth print-api-key</code> and <code>pi auth print-bearer-token</code> commands for exporting configured credentials to external clients, including automatic OAuth refresh and configurable minimum token validity (<a href="https://redirect.github.com/earendil-works/pi/pull/7168">#7168</a>).</li> <li>Exposed the session's resolved model scope as <code>ctx.scopedModels</code> to extensions. See <a href="https://github.com/earendil-works/pi/blob/v0.83.0/packages/coding-agent/docs/extensions.md#ctxmodelregistry--ctxmodel--ctxthinkinglevel--ctxscopedmodels">Extension Context</a> (<a href="https://redirect.github.com/earendil-works/pi/pull/7191">#7191</a> by <a href="https://github.com/pungggi"><code>@pungggi</code></a>, <a href="https://redirect.github.com/earendil-works/pi/pull/7215">#7215</a>).</li> <li>Added inherited per-request <code>fetch</code> injection for supported text and image provider transports.</li> <li>Added the inherited <code>"pending"</code> stop reason for partial streaming messages. See <a href="https://github.com/earendil-works/pi/blob/v0.83.0/packages/coding-agent/docs/custom-provider.md#stream-pattern">Custom Provider Stream Pattern</a> (<a href="https://redirect.github.com/earendil-works/pi/pull/7151">#7151</a> by <a href="https://github.com/lucasmeijer"><code>@lucasmeijer</code></a>).</li> <li>Added inherited raw provider stop reasons across Google, Anthropic, Amazon Bedrock, Mistral, and OpenAI streams; unmapped terminal reasons now surface as provider errors instead of successful stops (<a href="https://redirect.github.com/earendil-works/pi/pull/7272">#7272</a>).</li> <li>Added manual redirect URL and authorization-code entry to OpenRouter login for remote and headless environments. See <a href="https://github.com/earendil-works/pi/blob/v0.83.0/packages/coding-agent/docs/providers.md#openrouter">OpenRouter</a> (<a href="https://redirect.github.com/earendil-works/pi/pull/7114">#7114</a> by <a href="https://github.com/rgarcia"><code>@rgarcia</code></a>).</li> <li>Added inherited Claude Opus 5 support for GitHub Copilot with adaptive thinking and a 1M context window. See <a href="https://github.com/earendil-works/pi/blob/v0.83.0/packages/coding-agent/docs/providers.md#github-copilot">GitHub Copilot</a> (<a href="https://redirect.github.com/earendil-works/pi/pull/7158">#7158</a> by <a href="https://github.com/jay-aye-see-kay"><code>@jay-aye-see-kay</code></a>).</li> </ul> <h3>Changed</h3> <ul> <li>Changed inherited OAuth credential resolution to refresh tokens with less than five minutes of validity remaining instead of waiting until expiration (<a href="https://redirect.github.com/earendil-works/pi/pull/7168">#7168</a>).</li> </ul> <h3>Fixed</h3> <ul> <li>Added a status line when the tool output expansion is toggled (<a href="https://redirect.github.com/earendil-works/pi/issues/7180">#7180</a>).</li> <li>Fixed file-backed <code>SYSTEM.md</code> and <code>APPEND_SYSTEM.md</code> prompts being omitted from the interactive startup context listing. See <a href="https://github.com/earendil-works/pi/blob/v0.83.0/packages/coding-agent/docs/usage.md#system-prompt-files">System Prompt Files</a> (<a href="https://redirect.github.com/earendil-works/pi/issues/7096">#7096</a>).</li> <li>Fixed context files loading twice when a linked Git worktree is nested under its main repository. See <a href="https://github.com/earendil-works/pi/blob/v0.83.0/packages/coding-agent/docs/usage.md#context-files">Context Files</a> (<a href="https://redirect.github.com/earendil-works/pi/pull/7221">#7221</a> by <a href="https://github.com/arajkumar"><code>@arajkumar</code></a>).</li> <li>Fixed llama.cpp streamed responses reporting zero token usage and leaving session context accounting empty. See <a href="https://github.com/earendil-works/pi/blob/v0.83.0/packages/coding-agent/docs/llama-cpp.md">llama.cpp</a> (<a href="https://redirect.github.com/earendil-works/pi/pull/7258">#7258</a> by <a href="https://github.com/SteveImmanuel"><code>@SteveImmanuel</code></a>).</li> <li>Fixed session replacement and committed tree navigation during an active response to abort and persist the outgoing turn instead of leaving dangling tool calls. See <a href="https://github.com/earendil-works/pi/blob/v0.83.0/packages/coding-agent/docs/usage.md#sessions">Sessions</a> (<a href="https://redirect.github.com/earendil-works/pi/pull/7022">#7022</a> by <a href="https://github.com/tmustier"><code>@tmustier</code></a>).</li> <li>Fixed failed Git package installs leaving partial directories that blocked clean retries. See <a href="https://github.com/earendil-works/pi/blob/v0.83.0/packages/coding-agent/docs/packages.md#install-and-manage">Install and Manage</a> (<a href="https://redirect.github.com/earendil-works/pi/pull/7210">#7210</a> by <a href="https://github.com/haoqixu"><code>@haoqixu</code></a>).</li> <li>Fixed the <code>/model</code> selector retaining a stale selection while filtering instead of highlighting the top match (<a href="https://redirect.github.com/earendil-works/pi/pull/7211">#7211</a> by <a href="https://github.com/christianbasch"><code>@christianbasch</code></a>).</li> <li>Fixed direct RPC bash commands bypassing extension <code>user_bash</code> handlers. See <a href="https://github.com/earendil-works/pi/blob/v0.83.0/packages/coding-agent/docs/extensions.md#user-bash-events">User Bash Events</a> (<a href="https://redirect.github.com/earendil-works/pi/pull/7214">#7214</a>).</li> <li>Fixed skills, prompts, and themes losing package source metadata after extensions reload resources. See <a href="https://github.com/earendil-works/pi/blob/v0.83.0/packages/coding-agent/docs/extensions.md#resource-events">Resource Events</a> (<a href="https://redirect.github.com/earendil-works/pi/issues/6968">#6968</a>).</li> <li>Fixed cancellation of concurrently running user bash commands so every active command is aborted (<a href="https://redirect.github.com/earendil-works/pi/pull/7103">#7103</a> by <a href="https://github.com/yzhg1983"><code>@yzhg1983</code></a>).</li> <li>Fixed duplicate messages appearing when extensions switch sessions during interactive startup (<a href="https://redirect.github.com/earendil-works/pi/pull/7110">#7110</a> by <a href="https://github.com/yzhg1983"><code>@yzhg1983</code></a>).</li> <li>Fixed inherited Qwen Token Plan reasoning models to send their service-specific thinking controls and supported reasoning-effort levels (<a href="https://redirect.github.com/earendil-works/pi/issues/6951">#6951</a>, <a href="https://redirect.github.com/earendil-works/pi/issues/6998">#6998</a>).</li> <li>Fixed inherited Z.AI output limits being sent through an unsupported parameter. See <a href="https://github.com/earendil-works/pi/blob/v0.83.0/packages/coding-agent/docs/providers.md">Providers</a> (<a href="https://redirect.github.com/earendil-works/pi/pull/7174">#7174</a> by <a href="https://github.com/HyeokjaeLee"><code>@HyeokjaeLee</code></a>).</li> <li>Fixed explicitly configured Amazon Bedrock profiles being overridden by ambient AWS access keys. See <a href="https://github.com/earendil-works/pi/blob/v0.83.0/packages/coding-agent/docs/providers.md#amazon-bedrock">Amazon Bedrock</a> (<a href="https://redirect.github.com/earendil-works/pi/pull/7176">#7176</a> by <a href="https://github.com/christianbasch"><code>@christianbasch</code></a>).</li> <li>Fixed inherited image fallback paths overflowing narrow terminals, shortened home-directory paths, and made absolute paths clickable when terminal hyperlinks are available (<a href="https://redirect.github.com/earendil-works/pi/pull/7262">#7262</a>).</li> <li>Fixed inherited OpenAI-compatible tool calls losing their function arguments when malformed deltas also contain an empty <code>custom</code> object (<a href="https://redirect.github.com/earendil-works/pi/pull/7288">#7288</a> by <a href="https://github.com/sunnyyoung"><code>@sunnyyoung</code></a>).</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/earendil-works/pi/blob/main/packages/coding-agent/CHANGELOG.md">@earendil-works/pi-coding-agent's changelog</a>.</em></p> <blockquote> <h2>[0.83.0] - 2026-07-29</h2> <h3>New Features</h3> <ul> <li><strong>Credential export for external clients</strong> — <code>pi auth print-api-key</code> and <code>pi auth print-bearer-token</code> export configured credentials with automatic OAuth refresh and minimum-validity enforcement.</li> <li><strong>Headless OpenRouter sign-in</strong> — Complete <code>/login</code> over SSH by pasting the redirect URL or authorization code when the loopback callback is unavailable. See <a href="https://github.com/earendil-works/pi/blob/main/packages/coding-agent/docs/providers.md#openrouter">OpenRouter</a>.</li> <li><strong>Claude Opus 5 on GitHub Copilot</strong> — Use Claude Opus 5 through GitHub Copilot with adaptive thinking and a 1M context window. See <a href="https://github.com/earendil-works/pi/blob/main/packages/coding-agent/docs/providers.md#github-copilot">GitHub Copilot</a>.</li> </ul> <h3>Breaking Changes</h3> <ul> <li>Upgraded bundled TypeBox aliases to 1.3.7, removing deprecated APIs including <code>Type.Base</code>, <code>Type.Awaited</code>, <code>Type.Promise</code>, <code>Type.AsyncIterator</code>, <code>Type.Iterator</code>, <code>Type.Options</code>, and <code>Value.Mutate</code>, while fixing compiled validation of nullable array tool arguments. Extensions using removed APIs must migrate to supported TypeBox APIs. See <a href="https://github.com/earendil-works/pi/blob/main/packages/coding-agent/docs/packages.md#dependencies">Package Dependencies</a> (<a href="https://redirect.github.com/earendil-works/pi/pull/7243">#7243</a> by <a href="https://github.com/petrroll"><code>@petrroll</code></a>).</li> </ul> <h3>Added</h3> <ul> <li>Added <code>pi auth print-api-key</code> and <code>pi auth print-bearer-token</code> commands for exporting configured credentials to external clients, including automatic OAuth refresh and configurable minimum token validity (<a href="https://redirect.github.com/earendil-works/pi/pull/7168">#7168</a>).</li> <li>Exposed the session's resolved model scope as <code>ctx.scopedModels</code> to extensions. See <a href="https://github.com/earendil-works/pi/blob/main/packages/coding-agent/docs/extensions.md#ctxmodelregistry--ctxmodel--ctxthinkinglevel--ctxscopedmodels">Extension Context</a> (<a href="https://redirect.github.com/earendil-works/pi/pull/7191">#7191</a> by <a href="https://github.com/pungggi"><code>@pungggi</code></a>, <a href="https://redirect.github.com/earendil-works/pi/pull/7215">#7215</a>).</li> <li>Added inherited per-request <code>fetch</code> injection for supported text and image provider transports.</li> <li>Added the inherited <code>"pending"</code> stop reason for partial streaming messages. See <a href="https://github.com/earendil-works/pi/blob/main/packages/coding-agent/docs/custom-provider.md#stream-pattern">Custom Provider Stream Pattern</a> (<a href="https://redirect.github.com/earendil-works/pi/pull/7151">#7151</a> by <a href="https://github.com/lucasmeijer"><code>@lucasmeijer</code></a>).</li> <li>Added inherited raw provider stop reasons across Google, Anthropic, Amazon Bedrock, Mistral, and OpenAI streams; unmapped terminal reasons now surface as provider errors instead of successful stops (<a href="https://redirect.github.com/earendil-works/pi/pull/7272">#7272</a>).</li> <li>Added manual redirect URL and authorization-code entry to OpenRouter login for remote and headless environments. See <a href="https://github.com/earendil-works/pi/blob/main/packages/coding-agent/docs/providers.md#openrouter">OpenRouter</a> (<a href="https://redirect.github.com/earendil-works/pi/pull/7114">#7114</a> by <a href="https://github.com/rgarcia"><code>@rgarcia</code></a>).</li> <li>Added inherited Claude Opus 5 support for GitHub Copilot with adaptive thinking and a 1M context window. See <a href="https://github.com/earendil-works/pi/blob/main/packages/coding-agent/docs/providers.md#github-copilot">GitHub Copilot</a> (<a href="https://redirect.github.com/earendil-works/pi/pull/7158">#7158</a> by <a href="https://github.com/jay-aye-see-kay"><code>@jay-aye-see-kay</code></a>).</li> </ul> <h3>Changed</h3> <ul> <li>Changed inherited OAuth credential resolution to refresh tokens with less than five minutes of validity remaining instead of waiting until expiration (<a href="https://redirect.github.com/earendil-works/pi/pull/7168">#7168</a>).</li> </ul> <h3>Fixed</h3> <ul> <li>Added a status line when the tool output expansion is toggled (<a href="https://redirect.github.com/earendil-works/pi/issues/7180">#7180</a>).</li> <li>Fixed file-backed <code>SYSTEM.md</code> and <code>APPEND_SYSTEM.md</code> prompts being omitted from the interactive startup context listing. See <a href="https://github.com/earendil-works/pi/blob/main/packages/coding-agent/docs/usage.md#system-prompt-files">System Prompt Files</a> (<a href="https://redirect.github.com/earendil-works/pi/issues/7096">#7096</a>).</li> <li>Fixed context files loading twice when a linked Git worktree is nested under its main repository. See <a href="https://github.com/earendil-works/pi/blob/main/packages/coding-agent/docs/usage.md#context-files">Context Files</a> (<a href="https://redirect.github.com/earendil-works/pi/pull/7221">#7221</a> by <a href="https://github.com/arajkumar"><code>@arajkumar</code></a>).</li> <li>Fixed llama.cpp streamed responses reporting zero token usage and leaving session context accounting empty. See <a href="https://github.com/earendil-works/pi/blob/main/packages/coding-agent/docs/llama-cpp.md">llama.cpp</a> (<a href="https://redirect.github.com/earendil-works/pi/pull/7258">#7258</a> by <a href="https://github.com/SteveImmanuel"><code>@SteveImmanuel</code></a>).</li> <li>Fixed session replacement and committed tree navigation during an active response to abort and persist the outgoing turn instead of leaving dangling tool calls. See <a href="https://github.com/earendil-works/pi/blob/main/packages/coding-agent/docs/usage.md#sessions">Sessions</a> (<a href="https://redirect.github.com/earendil-works/pi/pull/7022">#7022</a> by <a href="https://github.com/tmustier"><code>@tmustier</code></a>).</li> <li>Fixed failed Git package installs leaving partial directories that blocked clean retries. See <a href="https://github.com/earendil-works/pi/blob/main/packages/coding-agent/docs/packages.md#install-and-manage">Install and Manage</a> (<a href="https://redirect.github.com/earendil-works/pi/pull/7210">#7210</a> by <a href="https://github.com/haoqixu"><code>@haoqixu</code></a>).</li> <li>Fixed the <code>/model</code> selector retaining a stale selection while filtering instead of highlighting the top match (<a href="https://redirect.github.com/earendil-works/pi/pull/7211">#7211</a> by <a href="https://github.com/christianbasch"><code>@christianbasch</code></a>).</li> <li>Fixed direct RPC bash commands bypassing extension <code>user_bash</code> handlers. See <a href="https://github.com/earendil-works/pi/blob/main/packages/coding-agent/docs/extensions.md#user-bash-events">User Bash Events</a> (<a href="https://redirect.github.com/earendil-works/pi/pull/7214">#7214</a>).</li> <li>Fixed skills, prompts, and themes losing package source metadata after extensions reload resources. See <a href="https://github.com/earendil-works/pi/blob/main/packages/coding-agent/docs/extensions.md#resource-events">Resource Events</a> (<a href="https://redirect.github.com/earendil-works/pi/issues/6968">#6968</a>).</li> <li>Fixed cancellation of concurrently running user bash commands so every active command is aborted (<a href="https://redirect.github.com/earendil-works/pi/pull/7103">#7103</a> by <a href="https://github.com/yzhg1983"><code>@yzhg1983</code></a>).</li> <li>Fixed duplicate messages appearing when extensions switch sessions during interactive startup (<a href="https://redirect.github.com/earendil-works/pi/pull/7110">#7110</a> by <a href="https://github.com/yzhg1983"><code>@yzhg1983</code></a>).</li> <li>Fixed inherited Qwen Token Plan reasoning models to send their service-specific thinking controls and supported reasoning-effort levels (<a href="https://redirect.github.com/earendil-works/pi/issues/6951">#6951</a>, <a href="https://redirect.github.com/earendil-works/pi/issues/6998">#6998</a>).</li> <li>Fixed inherited Z.AI output limits being sent through an unsupported parameter. See <a href="https://github.com/earendil-works/pi/blob/main/packages/coding-agent/docs/providers.md">Providers</a> (<a href="https://redirect.github.com/earendil-works/pi/pull/7174">#7174</a> by <a href="https://github.com/HyeokjaeLee"><code>@HyeokjaeLee</code></a>).</li> <li>Fixed explicitly configured Amazon Bedrock profiles being overridden by ambient AWS access keys. See <a href="https://github.com/earendil-works/pi/blob/main/packages/coding-agent/docs/providers.md#amazon-bedrock">Amazon Bedrock</a> (<a href="https://redirect.github.com/earendil-works/pi/pull/7176">#7176</a> by <a href="https://github.com/christianbasch"><code>@christianbasch</code></a>).</li> <li>Fixed inherited image fallback paths overflowing narrow terminals, shortened home-directory paths, and made absolute paths clickable when terminal hyperlinks are available (<a href="https://redirect.github.com/earendil-works/pi/pull/7262">#7262</a>).</li> <li>Fixed inherited OpenAI-compatible tool calls losing their function arguments when malformed deltas also contain an empty <code>custom</code> object (<a href="https://redirect.github.com/earendil-works/pi/pull/7288">#7288</a> by <a href="https://github.com/sunnyyoung"><code>@sunnyyoung</code></a>).</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/earendil-works/pi/commit/845d6ff1f6643aba440341cce877ce1c43ebbc39"><code>845d6ff</code></a> Release v0.83.0</li> <li><a href="https://github.com/earendil-works/pi/commit/f0499a63ff5563ff041c689f680ecbf01436a5e2"><code>f0499a6</code></a> docs: audit changelogs since v0.82.1</li> <li><a href="https://github.com/earendil-works/pi/commit/bff5ab71743b442efa234dbed369e0a96da791f3"><code>bff5ab7</code></a> fix(coding-agent): show system prompt files in startup context (<a href="https://github.com/earendil-works/pi/tree/HEAD/packages/coding-agent/issues/7266">#7266</a>)</li> <li><a href="https://github.com/earendil-works/pi/commit/cced6a21da273b26ee4a23a803680614bbe8dd1e"><code>cced6a2</code></a> fix(coding-agent): stop loading AGENTS.md twice in nested git worktrees (<a href="https://github.com/earendil-works/pi/tree/HEAD/packages/coding-agent/issues/7221">#7221</a>)</li> <li><a href="https://github.com/earendil-works/pi/commit/f9476a61e557bfdce2fbf3ffeaad0988fe47c184"><code>f9476a6</code></a> fix(ai): update TypeBox nullable array validation (<a href="https://github.com/earendil-works/pi/tree/HEAD/packages/coding-agent/issues/7243">#7243</a>)</li> <li><a href="https://github.com/earendil-works/pi/commit/0c32e83a352a4284133b2544f730a23814948ac3"><code>0c32e83</code></a> fix(coding-agent): enable streaming usage for llama.cpp provider (<a href="https://github.com/earendil-works/pi/tree/HEAD/packages/coding-agent/issues/7258">#7258</a>)</li> <li><a href="https://github.com/earendil-works/pi/commit/47ca25fcd8535b80710fad5be758f1f2cf81443c"><code>47ca25f</code></a> Revert "fix(coding-agent): build-check-test (<a href="https://github.com/earendil-works/pi/tree/HEAD/packages/coding-agent/issues/7206">#7206</a>)"</li> <li><a href="https://github.com/earendil-works/pi/commit/0d008b746892ad33d3fe15c0c4bc86a14369e0e8"><code>0d008b7</code></a> fix(coding-agent): show tool expansion status</li> <li><a href="https://github.com/earendil-works/pi/commit/f14519551682cd0fddac2e4b4e8b1f333667e94c"><code>f145195</code></a> fix(coding-agent): build-check-test (<a href="https://github.com/earendil-works/pi/tree/HEAD/packages/coding-agent/issues/7206">#7206</a>)</li> <li><a href="https://github.com/earendil-works/pi/commit/cefa40ed8f8dbcd6ffd67b5e7a0eaa75a5050d1a"><code>cefa40e</code></a> ***WIP it's a PoC *** fix(coding-agent): guard tree navigation during respons...</li> <li>Additional commits viewable in <a href="https://github.com/earendil-works/pi/commits/v0.83.0/packages/coding-agent">compare view</a></li> </ul> </details> <br /> Updates `eve` from 0.27.13 to 0.29.5 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/vercel/eve/releases">eve's releases</a>.</em></p> <blockquote> <h2>eve@0.29.5</h2> <h3>Patch Changes</h3> <ul> <li>c0dc572: Rename the TUI <code>/new</code> command to <code>/reset</code> so session reset uses the same name across the client, HTTP, channel, and TUI APIs.</li> <li>3dce30a: Add manual session compaction through custom-channel helpers, the eve HTTP client, and the <code>eve dev</code> TUI's <code>/compact</code> command. Compaction preserves the session, queues behind an active turn, and does not send synthetic model input.</li> <li>910805e: Make a single <code>Esc</code> cancel the running turn in the eve dev TUI when no message is queued. Queued messages still use <code>Esc</code> to steer the oldest message into the next turn.</li> <li>9c51755: Connection search and discovered connection tools now use the same <code>defineDynamic</code> and <code>defineTool</code> pipeline as authored tools. Dynamic tool maps now reject entries that omit <code>defineTool</code> instead of accepting unsupported raw objects.</li> <li>84aa671: Clarify the dev TUI’s <code>/add</code> flow with consistent integration categories and category-specific browsing labels. MCP connections are now named explicitly, and the flow more clearly explains channels, extensions, and observability integrations.</li> <li>0c28eb7: Allow declared subagents to export <code>defineDynamic</code> from <code>agent.ts</code>. Session and turn resolvers can now return an agent configuration to expose it or nil to omit it from direct and Workflow delegation.</li> <li>f3bb60d: Add manual session-context clearing through custom-channel helpers, the eve HTTP client, and the <code>eve dev</code> TUI's <code>/clear</code> command. Clearing removes model-message history while preserving the session, agent configuration, durable state, limits, and sandbox.</li> <li>ac7d3c6: Add <code>/cancel</code> to the eve dev TUI. The command cooperatively cancels a running turn from either the live streaming input or the idle prompt while preserving the session and settled context.</li> </ul> <h2>eve@0.29.4</h2> <h3>Patch Changes</h3> <ul> <li>e90a8c2: Launch local or deployed eve applications as stable ACP v1 agents with <code>eve acp [url]</code>, including streamed messages, tool activity, human input, cancellation, concurrent sessions, and verified Vercel authentication.</li> <li>cec672d: Add guided Discord setup through <code>eve add channel/discord</code>, including Vercel Connect provisioning, trigger attachment, interactions endpoint configuration, slash-command registration, and channel scaffolding.</li> <li>ed328e7: Render registry item titles with their exact registry-provided casing by loading manifests for each page of catalog results.</li> <li>c875a67: Update the generated <code>AGENTS.md</code> to direct coding agents to the eve registry for discovering and installing integrations.</li> <li>5153b13: Add JSON output to <code>eve registry list</code> and <code>eve registry search</code> for scripts that inspect registry catalogs.</li> <li>155d46a: Connection registry items now configure their Vercel Connect connector during <code>eve add</code>, and registry setup commands close their IPC channel after reporting an outcome so <code>/add</code> returns instead of remaining stuck.</li> <li>6f3daca: Add <code>ClientSession.snapshot()</code> for reading a finite, cursor-consistent session event prefix that can hydrate server-rendered applications.</li> <li>67bfc76: Resolve sandbox skill roots and seed-file paths through the same <code>$HOME</code> resolver the file tools use, so the skills location is spelled once instead of twice.</li> <li>a5acde8: Ensure exiting the dev TUI shuts down its owned server and any surviving workflow processes before the CLI exits. Persisted workflow messages now reach the ready worker during restart instead of being rejected while the file watcher starts.</li> <li>731464f: Give the local trace spool's on-disk layout a single owner: the shared trace reader now exposes the listing and segment-read primitives that <code>eve traces</code> and the <code>/traces</code> viewer both use, and payload formatting is shared between the detail panel and the conversation view.</li> <li>f7ba3b3: Derive the <code>/traces</code> conversation viewer's line geometry from one prefix-sum helper so scroll, click, and wheel math cannot disagree, and reset the view through a single factory when the viewed trace changes.</li> <li>3f4bb9c: The <code>/traces</code> viewer now follows your terminal's colors instead of forcing a hardcoded black/grey truecolor palette. It probes the terminal's default background (OSC 11) and derives its card surfaces from your own theme — subtly elevated bands on dark and light backgrounds alike, with red bands for failures, and card titles that invert to black on light backgrounds so they stay legible. Terminals that don't answer the probe get a clean gutter-rail rendering drawn entirely with the shared TUI theme.</li> <li>f5d0533: Derive the dev TUI's slash-command suggestion window from the command registry instead of a hand-maintained constant, and collapse the duplicated cursor step in the terminal line-wrap loop.</li> </ul> <h2>eve@0.29.3</h2> <h3>Patch Changes</h3> <ul> <li>22bfa02: Add guided Photon setup through <code>eve add channel/photon-imessage</code>, including project creation, phone registration, Vercel Connect or portable credentials, and channel scaffolding.</li> <li>0c0de19: Add an opt-in experimental steering policy to Chat SDK sends that cancels an active turn before delivering its replacement message.</li> <li>b00a79d: Add <code>photonIMessageChannel</code>, a first-class Photon iMessage channel with lazy credentials, Vercel OIDC webhook verification, and automatic eve session routing.</li> <li>495e93b: Resolve leading <code>$HOME</code> paths in the built-in <code>read_file</code>, <code>write_file</code>, <code>glob</code>, and <code>grep</code> tools so agents can directly access packaged skill references advertised in their prompt.</li> <li>bf01952: Local trace spans now capture model and tool payloads: the system prompt, prompt messages, and response text/reasoning/tool calls on model spans, and call arguments/results on tool spans, each capped at 32 KB with provider transport metadata stripped. Set <code>EVE_TRACES_CONTENT=off</code> to keep payloads out of the spool.</li> <li>680db59: Provider-executed tool calls (like a gateway's <code>web_search</code>) now show up in local traces: their calls and results are captured on the model span and the <code>/traces</code> viewer renders them as tool cards, with oversized outputs truncated to stay valid JSON.</li> <li>7ab6d8a: Terminal text wrapping in the dev TUI is now linear-time, so views rendering large single-line payloads (long tool results, big JSON) no longer stall on every repaint.</li> <li>52cee9c: Consolidate the three Vercel CLI subprocess runners onto one shared lifecycle. A <code>vercel</code> lookup killed by a signal (for example Ctrl-C during setup) now reports a cancellation failure instead of resolving as a success with truncated output.</li> <li>7703448: The local trace spool reader behind <code>eve traces</code> moved into a shared internal module; command behavior is unchanged.</li> <li>2d87acb: Subagent turn spans now record the dispatch that created them — <code>agent.parent.session.id</code>, <code>agent.parent.turn.id</code>, <code>agent.parent.call_id</code>, and <code>agent.subagent.name</code> — so a parent turn that fans out to several children can be attributed to the exact tool call behind each one.</li> <li>3c846bc: The <code>/traces</code> viewer supports drag-to-select: dragging with the mouse highlights text and releasing copies it to the clipboard (OSC 52 with tmux passthrough, plus the platform clipboard command) with a confirmation toast. Clicks now act on release so drags never toggle cards, and Esc cancels an in-flight selection.</li> <li>3645c6e: The <code>/traces</code> viewer frame breathes: padding rows around the title and above the footer hints, the copy toast floats top-right as a small surface with a left edge bar, and the scroll wheel scrolls the attributes drawer when the pointer is over it.</li> <li>8858403: The local tracing subsystem (spool writer/reader, retention, the zero-config local OTel runtime, and agent span capture) moved from <code>src/harness</code> into its own <code>src/tracing</code> module; no behavior change.</li> <li>9adb455: Adds a <code>/traces</code> command to the dev TUI: a full-screen live viewer over the local trace spool that re-tells each trace as a chat-style conversation — system prompt, user and assistant messages, and tool calls render as expandable cards (arrow keys or mouse click to expand/collapse), with a right-side metadata drawer. Subagent turns are badged with their dispatch lineage (<code>subagent:<name></code>), and the viewer opens on the trace containing the current session — including windowed sessions and subagent children recorded into a parent's trace. Expanded cards scroll line-by-line so content taller than the viewport is fully readable. Model spans with errors, token usage, or tool calls (but no text) now appear as cards instead of disappearing. Terminal escape sequences in trace payloads are stripped at render time. Tool-call arguments and results are captured without stripping domain-level <code>providerOptions</code>/<code>providerMetadata</code> keys. A single prompt message over 32 KiB is truncated at the text level so the serialized JSON stays parseable. Local spans capture system prompt, prompt messages, responses, reasoning, and tool arguments/results (<code>EVE_TRACES_CONTENT=off</code> to disable); long conversations truncate oldest messages first with an omission marker.</li> <li>275271d: Subagent runs now record into the trace of the session that dispatched them instead of a disconnected trace of their own, and <code>eve traces</code> resolves either session id to it. Local traces also open a real <code>agent.session</code> root span rather than a synthesized parent, so an authored OTel sampler's root rule decides whether a session is sampled, and a session long enough to outgrow one trace rolls into numbered windows that <code>eve traces <session-id></code> lists oldest first. Rows whose lifetime outlives the worker that opened them — <code>agent.session</code> and <code>agent.turn</code> — now show the extent of their descendants instead of <code>0ms</code>.</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/vercel/eve/blob/main/packages/eve/CHANGELOG.md">eve's changelog</a>.</em></p> <blockquote> <h2>0.29.5</h2> <h3>Patch Changes</h3> <ul> <li>c0dc572: Rename the TUI <code>/new</code> command to <code>/reset</code> so session reset uses the same name across the client, HTTP, channel, and TUI APIs.</li> <li>3dce30a: Add manual session compaction through custom-channel helpers, the eve HTTP client, and the <code>eve dev</code> TUI's <code>/compact</code> command. Compaction preserves the session, queues behind an active turn, and does not send synthetic model input.</li> <li>910805e: Make a single <code>Esc</code> cancel the running turn in the eve dev TUI when no message is queued. Queued messages still use <code>Esc</code> to steer the oldest message into the next turn.</li> <li>9c51755: Connection search and discovered connection tools now use the same <code>defineDynamic</code> and <code>defineTool</code> pipeline as authored tools. Dynamic tool maps now reject entries that omit <code>defineTool</code> instead of accepting unsupported raw objects.</li> <li>84aa671: Clarify the dev TUI’s <code>/add</code> flow with consistent integration categories and category-specific browsing labels. MCP connections are now named explicitly, and the flow more clearly explains channels, extensions, and observability integrations.</li> <li>0c28eb7: Allow declared subagents to export <code>defineDynamic</code> from <code>agent.ts</code>. Session and turn resolvers can now return an agent configuration to expose it or nil to omit it from direct and Workflow delegation.</li> <li>f3bb60d: Add manual session-context clearing through custom-channel helpers, the eve HTTP client, and the <code>eve dev</code> TUI's <code>/clear</code> command. Clearing removes model-message history while preserving the session, agent configuration, durable state, limits, and sandbox.</li> <li>ac7d3c6: Add <code>/cancel</code> to the eve dev TUI. The command cooperatively cancels a running turn from either the live streaming input or the idle prompt while preserving the session and settled context.</li> </ul> <h2>0.29.4</h2> <h3>Patch Changes</h3> <ul> <li>e90a8c2: Launch local or deployed eve applications as stable ACP v1 agents with <code>eve acp [url]</code>, including streamed messages, tool activity, human input, cancellation, concurrent sessions, and verified Vercel authentication.</li> <li>cec672d: Add guided Discord setup through <code>eve add channel/discord</code>, including Vercel Connect provisioning, trigger attachment, interactions endpoint configuration, slash-command registration, and channel scaffolding.</li> <li>ed328e7: Render registry item titles with their exact registry-provided casing by loading manifests for each page of catalog results.</li> <li>c875a67: Update the generated <code>AGENTS.md</code> to direct coding agents to the eve registry for discovering and installing integrations.</li> <li>5153b13: Add JSON output to <code>eve registry list</code> and <code>eve registry search</code> for scripts that inspect registry catalogs.</li> <li>155d46a: Connection registry items now configure their Vercel Connect connector during <code>eve add</code>, and registry setup commands close their IPC channel after reporting an outcome so <code>/add</code> returns instead of remaining stuck.</li> <li>6f3daca: Add <code>ClientSession.snapshot()</code> for reading a finite, cursor-consistent session event prefix that can hydrate server-rendered applications.</li> <li>67bfc76: Resolve sandbox skill roots and seed-file paths through the same <code>$HOME</code> resolver the file tools use, so the skills location is spelled once instead of twice.</li> <li>a5acde8: Ensure exiting the dev TUI shuts down its owned server and any surviving workflow processes before the CLI exits. Persisted workflow messages now reach the ready worker during restart instead of being rejected while the file watcher starts.</li> <li>731464f: Give the local trace spool's on-disk layout a single owner: the shared trace reader now exposes the listing and segment-read primitives that <code>eve traces</code> and the <code>/traces</code> viewer both use, and payload formatting is shared between the detail panel and the conversation view.</li> <li>f7ba3b3: Derive the <code>/traces</code> conversation viewer's line geometry from one prefix-sum helper so scroll, click, and wheel math cannot disagree, and reset the view through a single factory when the viewed trace changes.</li> <li>3f4bb9c: The <code>/traces</code> viewer now follows your terminal's colors instead of forcing a hardcoded black/grey truecolor palette. It probes the terminal's default background (OSC 11) and derives its card surfaces from your own theme — subtly elevated bands on dark and light backgrounds alike, with red bands for failures, and card titles that invert to black on light backgrounds so they stay legible. Terminals that don't answer the probe get a clean gutter-rail rendering drawn entirely with the shared TUI theme.</li> <li>f5d0533: Derive the dev TUI's slash-command suggestion window from the command registry instead of a hand-maintained constant, and collapse the duplicated cursor step in the terminal line-wrap loop.</li> </ul> <h2>0.29.3</h2> <h3>Patch Changes</h3> <ul> <li>22bfa02: Add guided Photon setup through <code>eve add channel/photon-imessage</code>, including project creation, phone registration, Vercel Connect or portable credentials, and channel scaffolding.</li> <li>0c0de19: Add an opt-in experimental steering policy to Chat SDK sends that cancels an active turn before delivering its replacement message.</li> <li>b00a79d: Add <code>photonIMessageChannel</code>, a first-class Photon iMessage channel with lazy credentials, Vercel OIDC webhook verification, and automatic eve session routing.</li> <li>495e93b: Resolve leading <code>$HOME</code> paths in the built-in <code>read_file</code>, <code>write_file</code>, <code>glob</code>, and <code>grep</code> tools so agents can directly access packaged skill references advertised in their prompt.</li> <li>bf01952: Local trace spans now capture model and tool payloads: the system prompt, prompt messages, and response text/reasoning/tool calls on model spans, and call arguments/results on tool spans, each capped at 32 KB with provider transport metadata stripped. Set <code>EVE_TRACES_CONTENT=off</code> to keep payloads out of the spool.</li> <li>680db59: Provider-executed tool calls (like a gateway's <code>web_search</code>) now show up in local traces: their calls and results are captured on the model span and the <code>/traces</code> viewer renders them as tool cards, with oversized outputs truncated to stay valid JSON.</li> <li>7ab6d8a: Terminal text wrapping in the dev TUI is now linear-time, so views rendering large single-line payloads (long tool results, big JSON) no longer stall on every repaint.</li> <li>52cee9c: Consolidate the three Vercel CLI subprocess runners onto one shared lifecycle. A <code>vercel</code> lookup killed by a signal (for example Ctrl-C during setup) now reports a cancellation failure instead of resolving as a success with truncated output.</li> <li>7703448: The local trace spool reader behind <code>eve traces</code> moved into a shared internal module; command behavior is unchanged.</li> <li>2d87acb: Subagent turn spans now record the dispatch that created them — <code>agent.parent.session.id</code>, <code>agent.parent.turn.id</code>, <code>agent.parent.call_id</code>, and <code>agent.subagent.name</code> — so a parent turn that fans out to several children can be attributed to the exact tool call behind each one.</li> <li>3c846bc: The <code>/traces</code> viewer supports drag-to-select: dragging with the mouse highlights text and releasing copies it to the clipboard (OSC 52 with tmux passthrough, plus the platform clipboard command) with a confirmation toast. Clicks now act on release so drags never toggle cards, and Esc cancels an in-flight selection.</li> <li>3645c6e: The <code>/traces</code> viewer frame breathes: padding rows around the title and above the footer hints, the copy toast floats top-right as a small surface with a left edge bar, and the scroll wheel scrolls the attributes drawer when the pointer is over it.</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/vercel/eve/commit/8988139097d1e1a1f1aca9b2828e63408848fccf"><code>8988139</code></a> Version Packages (<a href="https://github.com/vercel/eve/tree/HEAD/packages/eve/issues/1497">#1497</a>)</li> <li><a href="https://github.com/vercel/eve/commit/c0dc57240ec850b0f73075f0e3cc900c6e07640a"><code>c0dc572</code></a> feat(tui): rename /new command to /reset (<a href="https://github.com/vercel/eve/tree/HEAD/packages/eve/issues/1513">#1513</a>)</li> <li><a href="https://github.com/vercel/eve/commit/910805e8a825a34ba90c0a22a59dc1d787967976"><code>910805e</code></a> feat(tui): cancel with one Esc press (<a href="https://github.com/vercel/eve/tree/HEAD/packages/eve/issues/1514">#1514</a>)</li> <li><a href="https://github.com/vercel/eve/commit/ac7d3c66f8c43ce1008d88cedd5254bfec1301e1"><code>ac7d3c6</code></a> feat(tui): add /cancel command (<a href="https://github.com/vercel/eve/tree/HEAD/packages/eve/issues/1512">#1512</a>)</li> <li><a href="https://github.com/vercel/eve/commit/f3bb60dd53fa56e955c6ea71cbf72533cfe618e1"><code>f3bb60d</code></a> feat: add manual session context clearing (<a href="https://github.com/vercel/eve/tree/HEAD/packages/eve/issues/1511">#1511</a>)</li> <li><a href="https://github.com/vercel/eve/commit/3dce30a18d24644d85b6120d79eaf4d304beaf4b"><code>3dce30a</code></a> feat: add manual session compaction (<a href="https://github.com/vercel/eve/tree/HEAD/packages/eve/issues/1508">#1508</a>)</li> <li><a href="https://github.com/vercel/eve/commit/9c517555e870231af00df799523bffd9fc00df71"><code>9c51755</code></a> refactor(eve): use public dynamic definitions for connection tools (<a href="https://github.com/vercel/eve/tree/HEAD/packages/eve/issues/1505">#1505</a>)</li> <li><a href="https://github.com/vercel/eve/commit/0c28eb7e886c1a69ee20a5229682509d5413e140"><code>0c28eb7</code></a> feat(eve): support dynamic subagents (<a href="https://github.com/vercel/eve/tree/HEAD/packages/eve/issues/1485">#1485</a>)</li> <li><a href="https://github.com/vercel/eve/commit/84aa6715dbf6b6d696b7f567744711f4526b183f"><code>84aa671</code></a> fix(eve): clarify add flow categories (<a href="https://github.com/vercel/eve/tree/HEAD/packages/eve/issues/1494">#1494</a>)</li> <li><a href="https://github.com/vercel/eve/commit/ab86523b3e07f05f415c9c784232b3875b17b16f"><code>ab86523</code></a> feat(eve): agent-handle lifecycle contracts (three-phase handles, turn outcom...</li> <li>Additional commits viewable in <a href="https://github.com/vercel/eve/commits/eve@0.29.5/packages/eve">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> |
||
|
|
ecd0861741 |
fix(core): release unread response bodies (#4078)
This PR: - follows [Undici's recommendation](https://github.com/nodejs/undici#garbage-collection) to consume or cancel unread response bodies instead of leaving connection-resource cleanup to the garbage collector, which can increase connection pressure and reduce reuse - cancels every intermediate redirect body in `ssrfSafeFetch` before validating and following the next hop - cancels non-success response bodies in both URL-upload callers before preserving their existing errors - adds regression coverage for redirect ordering, redirect-budget exhaustion, and both caller error paths - adds a patch changeset for `@composio/core` - supersedes https://github.com/ComposioHQ/composio/pull/4018 and credits @pacocartones as co-author ## Verification - `pnpm --filter @composio/core test ssrfGuard fileUtils ToolRouterSessionFilesMount` (4 files, 58 tests passed) - `pnpm --filter @composio/core test` (47 files, 1,049 tests passed) - `pnpm --filter @composio/core typecheck` - `pnpm lint:packages` (0 errors; existing warnings only) - Prettier check on all touched files - `pnpm validate:changesets` Co-authored-by: pacocartones <pacocartones@users.noreply.github.com> |
||
|
|
2a6a051bc3 |
refactor(core): remove unused isNewerVersion helper (#4029)
This PR: - closes #4028 - removes the unused `isNewerVersion` helper from the internal version utility - avoids defining malformed-version behavior for a helper with no callers or package export - retains `next`'s tested npm version-check timeout implementation - adds a patch changeset for `@composio/core` - refreshes Python 3.12.13 artifact metadata in `mise.lock` after the upstream build was republished ## Verification - version utility tests: 2 passed - core typecheck: passed - changeset validation: passed - `mise 2026.5.18 lock --platform linux-x64,linux-arm64,macos-arm64,macos-x64`: clean --------- Co-authored-by: jkomyno <alberto@composio.dev> |
||
|
|
86cc3cc399 | chore: merge next into dependabot remediation | ||
|
|
1221c15783 |
fix(core): bound the npm version-check fetch with an AbortSignal timeout (#4027)
Fixes #4026 ## Problem The `Composio` constructor fires a background npm version check unless `disableVersionCheck` is set — and `disableVersionCheck` has no default, so this is on for every user: ```ts // ts/packages/core/src/composio.ts:399-402 if (!this.config.disableVersionCheck) { checkForLatestVersionFromNPM(version); } ``` That check performed a bare fetch with no timeout and no AbortSignal: ```ts // ts/packages/core/src/utils/version.ts:46 const response = await fetch(`https://registry.npmjs.org/${packageName}/latest`); ``` An in-flight fetch keeps its socket referenced on the Node event loop. When registry.npmjs.org is slow, black-holed, or unreachable-but-accepting (corporate proxy, egress firewall that drops rather than rejects, captive network, npm incident), the process cannot exit — all the user's work is done and it just sits there. It's also called without await, so a caller has nowhere to attach a bound of their own. Reproducing with a local server that accepts the socket and never responds: the process was still alive at 90s and had to be killed. ## Fix ```diff - // @TODO: Check if fetch is available, if not use node-fetch - const response = await fetch(`https://registry.npmjs.org/${packageName}/latest`); + const response = await fetch(`https://registry.npmjs.org/${packageName}/latest`, { + signal: AbortSignal.timeout(VERSION_CHECK_TIMEOUT_MS), + }); ``` `VERSION_CHECK_TIMEOUT_MS = 2000`. The existing `catch (_error) { /* Ignore and do nothing */ }` already swallows the resulting `TimeoutError`, so failure stays silent — which is right for a best-effort nicety nobody awaits. A comment records why the signal is there so a later cleanup doesn't drop it. Also removed the stale `@TODO: Check if fetch is available, if not use node-fetch` on the line above: the code already calls global `fetch` unconditionally, and `toolchain-versions.json` pins the tested Node versions to 22/24/25, where both `fetch` and `AbortSignal.timeout` (Node 17.3+) are available. ## Results, and one honest caveat End-to-end with the issue's reproduction: 91s, exit 124 (killed) → exited on its own after 6.0s, exit 0. That 6.0s deserves explanation, because the timeout is 2s and I did not want to overclaim. Measured in isolation: ```text fetch rejected at 2.01s with TimeoutError <- the signal works as intended handler done at 2.01s process exited at 6.03s <- undici's default 4s keepAliveTimeout ``` So the SDK's wait is bounded at 2s, which is what this change controls. The trailing ~4s is Node's global undici agent releasing the pooled socket, outside this code's reach — I tested `connection: 'close'` to see if it could be shortened and got an identical 6.03s. Eliminating it would require a custom dispatcher, which isn't worth the complexity for a background version check. Net: unbounded becomes bounded, worst-case exit ~6s instead of never. ## Tests Added `ts/packages/core/test/utils/version.test.ts` with two focused regressions: - asserts `AbortSignal.timeout` receives `2_000` and its exact signal is passed to the registry request - proves that aborting a registry request that never responds is swallowed by the best-effort check The timeout path uses a controlled `AbortController`, so the test is deterministic and does not wait two seconds of wall-clock time. ## Verification | Check | Result | |---|---| | Focused version-check tests | 2 passed | | Full core suite | 1046 passed | | Core typecheck | exit 0 | | Core build | passed, including ATTW and publint | | Package lint | exit 0 with existing repository warnings | | Changeset validation | passed | ## Out of scope — follow-up worth filing `TelemetryService.sendMetric` / `sendErrorLog` (`services/telemetry/TelemetryService.ts:14,35`) have the identical unbounded-fetch shape. Black-holing `telemetry.composio.dev` still hangs the process indefinitely with this fix applied: ```text blackhole=[registry] -> exited after 6.0s blackhole=[telemetry] -> HUNG (killed at 45s) ``` I deliberately left it alone: telemetry has its own `registerExitHandlers`/`flush` machinery that intends to block on exit, so bounding it is a real design decision rather than a one-liner, and it's outside what this issue covers. Happy to open a separate issue for it. ## Notes - Changeset included (`@composio/core: patch`). - The Python SDK has no equivalent version check, so no parity change is needed. |
||
|
|
e0f4a3463c | Merge branch 'next' into fix/version-check-fetch-timeout | ||
|
|
9a6d59326f |
Merge branch 'next' into feat/installer-auto-shell-default
Keeps this branch's fixture-driven managed-block reconciler (reconcileManagedPathBlock, pinned byte-for-byte against install.sh's awk rewrite by test/managed-block-fixtures) and drops next's narrower replaceManagedPathBlock/applyFileChanges pair, which it supersedes. Adopts from next: the narrowed unsafe-path character set on both the TS and sh sides, the removal of the $PATH-reachability write skip, the hedged no-shell PATH message, and the COMPOSIO_BIN_DIR command documentation. |
||
|
|
fdb366d090 |
Merge branch 'feat/cli-install-shell-flag' into feat/mise-style-installer-rollout
# Conflicts: # install.sh # test/install-sh-release-resolution.test.sh # ts/packages/cli/test/__utils__/services/test-layer.ts # ts/packages/cli/test/src/commands/install.cmd.test.ts |
||
|
|
16b167c94a |
docs(cli): document COMPOSIO_BIN_DIR and the install abort contract
COMPOSIO_BIN_DIR was discoverable only by reading the changelog: it is read through a raw ConfigProvider and appeared in no help text. Add it to the README env-var table with its resolution order, and name it in the install command description so `composio install --help` mentions it. No --bin-dir flag: the env var is the right shape for an installer handoff. The changelog entry also picks up the behavior changes it was missing — the non-zero exit on abort and what it means for install.sh's fallback, both abort conditions, the narrowed character set, legacy-block migration, and a note for custom-install-dir users reinstalling without re-specifying COMPOSIO_INSTALL_DIR. |
||
|
|
745bd67cef |
fix(cli): make composio install reconcile stale managed blocks
Three changes to the PATH writer, all around the same failure mode: the command reporting success while leaving a shell unable to find composio. - The unsafe-path denylist rejected characters that are literal inside the double quotes the bin dir is always written in. Keep only what bash, zsh, and fish still expand there, plus newline and the PATH separator, which are structural. /Users/o'brien/.composio now works. - A file carrying the marker was treated as configured forever, so the legacy three-line block written by install.sh's fallback or by an older CLI was never migrated. Skip only on the exact rendered PATH line for the resolved bin dir; otherwise splice the current block over the stale one in place. - The reachability skip used the invoking process's $PATH as evidence about future shells, so an ad-hoc export or a mise/direnv shim made the command persist nothing and exit 0. A redundant PATH line is harmless, and the content check already prevents duplicates. installShellIntegration no longer takes an execPath override; it always reads NodeProcess, and tests thread their exec path through the test layer instead. |
||
|
|
331a1373de | Merge branch 'next' into feat/cli-install-shell-flag | ||
|
|
4a179f8fdc | ci(cli): avoid unavailable installer routes | ||
|
|
15c07ec6c7 |
docs(cli): restore 0.3.0 and 0.3.1 changelog entries (#4048)
This PR: - restores missing `0.3.0` and `0.3.1` sections in `ts/packages/cli/CHANGELOG.md` - moves the plugin hint and telemetry changes out of `0.2.33` - records post-`0.3.1` connected-account and login fixes under `Unreleased` - rewrites the restored notes as concise, user-facing bullets - validates the ignored-package boundary with `pnpm validate:changesets` |
||
|
|
0330637a18 | Merge branch 'fix/version-check-fetch-timeout' of https://github.com/rajarshidattapy/composio into fix/version-check-fetch-timeout | ||
|
|
b08b18d73b | fix(version): improve timeout handling in NPM version check and add related tests | ||
|
|
27fbb464f7 | Merge branch 'next' into fix/version-check-fetch-timeout | ||
|
|
558d1344dd |
ci(cli): keep scheduled prod install E2E off unprovisioned shell routes
The /install/<shell> variant routes still 404 in production, so the harness's prod mode now selects the shell with COMPOSIO_INSTALL_SHELL on the base /install route, and the scheduled matrix gains a fish leg. The Docker harness invocation stays in place; a workflow comment records how to restore variant-route coverage once the routes ship. |
||
|
|
6e3f5af66d |
fix(cli): migrate legacy three-line managed blocks in both reconcilers
The previous installer wrote marker + export COMPOSIO_INSTALL_DIR + PATH export. Both the shell and TypeScript reconcilers now consume that triple as one managed block instead of orphaning the export lines, with shared legacy-migrate and near-miss fixtures keeping the two implementations byte-identical. |
||
|
|
f5be51665f |
Merge branch 'fix/cli-upgrade-atomic-replace' into feat/installer-auto-shell-default
Port the atomic replacement work from #4016: support files publish first, release metadata next, the binary last, with aside/rollback recovery for directory entries and preserved staging on failed restores. |
||
|
|
1503786358 |
refactor(core): forbid explicit any and type JSON Schema recursively (#3968)
This PR: - is refreshed directly onto the current next branch now that #3966 and #3967 have merged; the PR contains only its intended type-safety work - enforces no explicit any through the standard .oxlintrc.json, pnpm lint, and plain oxlint --fix in lint-staged; docs remain covered by their nested configuration - replaces the loose JSONSchemaProperty in @composio/core with a concrete recursive interface, removing explicit any reachable through Tool.inputParameters and Tool.outputParameters - includes a minor changeset documenting the type narrowing for properties, default, and enum consumers - adds a compile-only public-contract test for recursive schemas, known-key validation, extension keywords, and Tool reachability - removes explicit any from FileToolModifier, ts-builders, core and CLI tests, provider tests, and json-schema-to-zod tests - keeps TypeScript ESLint-parity rules enabled and closes the tool-router example lint/typecheck gap - makes no lockfile changes and no runtime behavior changes ## Context Final PR from the original #3958 split. The migration foundations are already on next via #3966 and #3967, so this branch no longer carries a stacked base commit. |
||
|
|
d40a74f02a | Merge branch 'next' into chore/dependabot-remediation | ||
|
|
be3942042a | Merge branch 'feat/mise-style-installer-rollout' into feat/installer-auto-shell-default | ||
|
|
6b964237b9 | Merge branch 'feat/cli-install-shell-flag' into feat/mise-style-installer-rollout | ||
|
|
7198dcce8d | docs(cli): explain the bash login-override special case | ||
|
|
2655e30c70 |
docs(cli): state installer design constraints inline instead of KD tags
Ten comments across install.sh, install.cmd.ts, and the harness cited KD2/KD3/KD4/KD7 decisions from a plan file that exists on no branch. Rewrite each comment to carry its constraint inline — the truthful final action block, delegation trust via physical path comparison, non-fatal setup failures, and copy-paste-safe endings — and drop the dangling references. |
||
|
|
124e896ed7 |
fix(cli): align the TS and sh managed-block reconcilers on one contract
The CLI and install.sh implemented the managed-PATH-block contract twice with three divergences: TS matched marker lines after trimming while the sh awk program matches byte-exact (CRLF or padded markers reconciled on one side and duplicated on the other), TS replaced stale blocks in place while sh removes managed lines and appends the fresh block, and renderWithHome rendered a bin dir equal to $HOME as the $HOME literal while render_bin_dir left it as the raw path — making delegated verification permanently stale for that layout. Align both sides: TS goes byte-exact and remove-then-append (mirroring the awk program including its newline normalization), and render_bin_dir learns the $HOME-exact case. A shared fixture suite under test/managed-block-fixtures now runs against both reconcilers — vitest drives the exported TS functions, the harness sources install.sh's definitions and runs write_path_block under sh and dash — so future edits to one side fail loudly until the other matches byte for byte. |
||
|
|
8b7ebadef9 |
refactor(cli): share one atomic tmp-write helper with per-process tmp names
Three from-scratch tmp-write→rename implementations coexisted (install.cmd.ts, tool-permissions writeCacheFile, analytics writeAnalyticsStateFile), and the install ones raced concurrent installs through a fixed .composio-tmp suffix. Extract src/utils/atomic-write.ts: the tmp name embeds the pid, an optional preserveMode creates the tmp with the target's mode and pins it via chmod, and the best-effort tmp cleanup now also covers a failure of the initial write itself (ENOSPC mid-write no longer leaves tmp litter). All three call sites migrate with their semantics intact; tests scan for any .composio-tmp remnant instead of probing the old fixed name. Extracting the block-append loop also brings installShellIntegration back under the function-length lint that the merge had pushed over. |
||
|
|
54258e2551 | Merge branch 'feat/mise-style-installer-rollout' into feat/installer-auto-shell-default | ||
|
|
32b84ab192 | Merge branch 'feat/cli-install-shell-flag' into feat/mise-style-installer-rollout | ||
|
|
aa28325394 | test(cli): add a fish leg to the local install e2e | ||
|
|
b52dd3c0af | refactor(e2e): share docker env args and add the install-image race retry | ||
|
|
ba4fa222ab | test(cli): exercise the installer extraction-failure branch in the install e2e | ||
|
|
648e95727a |
fix(cli): exit non-zero when shell setup aborts
Both abort branches (unsafe or relative resolved bin dir) printed an error and returned, so the effect succeeded and the process exited 0. install.sh gates its inline PATH fallback on a non-zero exit from 'composio install', so an aborted setup looked green and left the user with no PATH setup at all. Raise a typed ShellSetupAbortError after printing the abort reason; cli-main.ts maps it to exit code 1 without printing anything further, so install.sh now takes its fallback branch. |
||
|
|
48f3ebe2a1 |
refactor(cli): type the install test helper's shell param with the Shell union
The helper widened shell to string and cast it back to the union, bypassing the checker. Export Shell from install.cmd.ts and use it directly. |
||
|
|
021125b7a8 |
fix(cli): create the rc tmp copy with the preserved file mode
The tmp copy was written with the default 0644 mode and only chmod'd to the target's mode afterwards, so a 0600 private rc's contents sat world-readable in <target>.composio-tmp for the duration of the window. Create the tmp file with the preserved mode from the start; open(2) masks that mode with the umask (only ever clearing bits), so the follow-up chmod stays to pin the exact mode before the rename. |
||
|
|
b381210c2d | test(cli): align the installer analytics guard with the shell-delegation flow | ||
|
|
6d0e14f155 |
fix(cli): only prefer ~/.local/bin when its composio entry is this executable
A bare exists-check let any leftover ~/.local/bin/composio (e.g. a pip or pipx install) win bin-dir resolution, so the PATH line pointed shells at a foreign program while the installer reported success. Prefer ~/.local/bin only when its entry realpath-resolves, following symlinks, to the running executable; otherwise fall through to the runtime executable's directory. The COMPOSIO_BIN_DIR override stays highest precedence. |
||
|
|
aaf2d250cf |
fix(installer): configure a login-mode startup file for bash
A login bash reads /etc/profile and then only the first existing of ~/.bash_profile, ~/.bash_login, ~/.profile; it never reads ~/.bashrc. macOS Terminal.app starts exactly such a shell, so a terminal opened after installation could not resolve composio even though the installer reported success. Always configure a login-mode startup file alongside ~/.bashrc: reuse an existing ~/.bash_profile or ~/.bash_login, otherwise create ~/.bash_profile seeded to keep sourcing ~/.profile, which it shadows. ~/.profile itself is never rewritten. Also refine the shell setup reporting: - capture the delegated `composio install --shell` output so the installer keeps sole ownership of its presentation, replaying it under COMPOSIO_DEBUG so failures stay diagnosable - drop the internal (cli)/(fallback) labels from user-facing output - name the configured startup files from both the delegated and inline paths, so piped installs disclose which files changed |
||
|
|
578d358b74 | Merge branch 'next' into fix/version-check-fetch-timeout | ||
|
|
10e93add6b |
fix(cli): address bugbot review findings from the guardrails stack (#3886)
Follow-up to https://github.com/ComposioHQ/composio/pull/3885, which is now merged into `next`. This PR: - reports pending-login cache read failures as I/O errors instead of masking them as decode failures (`composio login --poll`) - restores pairwise polarity assertions for the `semverComparator` Array.sort compatibility case - consolidates the duplicated ephemeral HTTP server test helper in `test/__utils__/http-server.ts` - makes server-owned connected-account statuses forward-compatible while preserving the credential-stripping schema allowlist - redacts raw payload values from connected-account parse warnings and adds regression coverage for unknown statuses and secret-bearing malformed payloads - documents why the client-singleton test re-derives the consumer cache cwd hash ## Rebase notes Rebased onto `origin/next` at `ef1ec9148`. - Dropped the empty `GITHUB_*` compatibility commit; that contract is already present on `next` through https://github.com/ComposioHQ/composio/pull/3880. - Adapted the connected-account decoder rename to the service extracted upstream in `connected-account-selection.ts`. ## Context Fix-forward PR for actionable Cursor Bugbot findings on the guardrails stack (#3877–#3885). The stale decode-error string match and unused release helper were already resolved upstream, and the `vi.stubEnv(..., undefined)` concern is not actionable on Vitest 4.1.10. |
||
|
|
2ac6ad320a | fix(core): complete version check timeout guard | ||
|
|
55de1cad7e | Merge remote-tracking branch 'origin/next' into fix/version-check-fetch-timeout-review | ||
|
|
7198144863 | fix(e2e): restore runtime compatibility coverage | ||
|
|
d5b425bd56 |
fix(review): harden inline rewrite, delegation trust, and reconciliation
Apply verified code-review findings: write through symlinked startup files with preserved mode and a per-process tmp name; verify delegated CLI setup actually reconciled the managed block before trusting exit 0; make managed-block reconciliation assignment-aware so annotated blocks never lose user content or PATH precedence; clean up the CLI's tmp file when an atomic write fails; assert the auto contract in the install health-check canary; recommend composio install --shell in generated release docs; record the new default in the CLI changelog. |
||
|
|
32b414305c |
refactor(cli): deduplicate setup-failure warning and atomic writes
Also track the installer plan documents that the KD-tagged comments in install.sh and the shell harness reference. |
||
|
|
2ff9d9f97e |
feat(cli): make automatic shell setup the installer default
COMPOSIO_INSTALL_SHELL grows auto (the new default) and none. auto infers the login shell from $SHELL and always runs idempotent setup for recognized shells; none keeps install-only behavior for CI and dotfile managers. Final output follows the KD4 state matrix against a pre-install PATH snapshot with physical-path identity, setup failures never fail the install, and the managed PATH block reconciles stale bin directories. |
||
|
|
e5c9adabc8 | chore(deps): migrate OpenAI runtime to v7 | ||
|
|
a8d7401b73 | test(openai): cover v6 and v7 consumers | ||
|
|
4ceaede87a | chore(deps): refresh runtime support dependencies | ||
|
|
d1c2e12e33 | chore(deps): refresh agent framework dependencies |