Skip to content

chore(deps-dev): bump the dev-dependencies-minor group across 1 directory with 9 updates#12

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/dev-dependencies-minor-699c37c44d
Open

chore(deps-dev): bump the dev-dependencies-minor group across 1 directory with 9 updates#12
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/dev-dependencies-minor-699c37c44d

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github May 23, 2026

Copy link
Copy Markdown
Contributor

Bumps the dev-dependencies-minor group with 9 updates in the / directory:

Package From To
@tailwindcss/vite 4.2.1 4.3.0
@vitejs/plugin-react-swc 4.2.3 4.3.1
globals 17.4.0 17.6.0
node-abi 4.26.0 4.31.0
sass 1.91.0 1.101.0
tailwindcss 4.2.1 4.3.0
tsx 4.21.0 4.22.4
typescript-eslint 8.56.1 8.61.0
@tailwindcss/cli 4.2.1 4.3.0

Updates @tailwindcss/vite from 4.2.1 to 4.3.0

Release notes

Sourced from @​tailwindcss/vite's releases.

v4.3.0

Added

  • Add @container-size utility (#18901)
  • Add scrollbar-{auto,thin,none} utilities for scrollbar-width, and scrollbar-thumb-* / scrollbar-track-* color utilities for scrollbar-color (#19981, #20019)
  • Add scrollbar-gutter-* utilities (#20018)
  • Add zoom-* utilities (#20020)
  • Add tab-* utilities (#20022)
  • Allow using @variant with stacked variants (e.g. @variant hover:focus { … }) (#19996)
  • Allow using @variant with compound variants (e.g. @variant hover, focus { … }) (#19996)
  • Support --default(…) in --value(…) and --modifier(…) for functional @utility definitions (#19989)

Fixed

  • Ensure @plugin resolves package JavaScript entries instead of browser CSS entries when using @tailwindcss/vite (#19949)
  • Fix relative @import and @plugin paths resolving from the wrong directory when using @tailwindcss/vite (#19965)
  • Ensure CSS files containing @variant are processed by @tailwindcss/vite (#19966)
  • Resolve imports relative to base when result.opts.from is not provided when using @tailwindcss/postcss (#19980)
  • Canonicalization: preserve significant _ whitespace in arbitrary values (#19986)
  • Canonicalization: add parentheses when removing whitespace from arbitrary values would hurt readability (e.g. w-[calc(100%---spacing(60))]w-[calc(100%-(--spacing(60)))]) (#19986)
  • Canonicalization: preserve the original unit in arbitrary values instead of normalizing to base units (e.g. -mt-[20in]mt-[-20in], not mt-[-1920px]) (#19988)
  • Canonicalization: migrate arbitrary :has() variants from [&:has(…)] to has-[…] (#19991)
  • Upgrade: don’t migrate inline style attributes (e.g. style="flex-grow: 1"style="flex-grow: 1", not style="grow: 1") (#19918)
  • Allow multiple @utility definitions with the same name but different value types (#19777)
  • Export missing PluginWithConfig type from tailwindcss/plugin to fix errors when inferring plugin config types (#19707)
  • Ensure start and end legacy utilities without values do not generate CSS (#20003)
  • Ensure --value(…) is required in functional @utility definitions (#20005)
  • Canonicalization: preserve required whitespace around operators in negated arbitrary values (e.g. -left-[(var(--a)+var(--b))]) (#20011)

v4.2.4

Fixed

  • Ensure imports in @import and @plugin still resolve correctly when using Vite aliases in @tailwindcss/vite (#19947)

v4.2.3

Fixed

  • Canonicalization: improve canonicalizations for tracking-* utilities by preferring non-negative utilities (e.g. -tracking-tightertracking-wider) (#19827)
  • Fix crash due to invalid characters in candidate (exceeding valid unicode code point range) (#19829)
  • Ensure query params in imports are considered unique resources when using @tailwindcss/webpack (#19723)
  • Canonicalization: collapse arbitrary values into shorthand utilities (e.g. px-[1.2rem] py-[1.2rem]p-[1.2rem]) (#19837)
  • Canonicalization: collapse border-{t,b}-* into border-y-*, border-{l,r}-* into border-x-*, and border-{t,r,b,l}-* into border-* (#19842)
  • Canonicalization: collapse scroll-m{t,b}-* into scroll-my-*, scroll-m{l,r}-* into scroll-mx-*, and scroll-m{t,r,b,l}-* into scroll-m-* (#19842)
  • Canonicalization: collapse scroll-p{t,b}-* into scroll-py-*, scroll-p{l,r}-* into scroll-px-*, and scroll-p{t,r,b,l}-* into scroll-p-* (#19842)
  • Canonicalization: collapse overflow-{x,y}-* into overflow-* (#19842)
  • Canonicalization: collapse overscroll-{x,y}-* into overscroll-* (#19842)
  • Read from --placeholder-color instead of --background-color for placeholder-* utilities (#19843)
  • Upgrade: ensure files are not emptied out when killing the upgrade process while it's running (#19846)
  • Upgrade: use config.content when migrating from Tailwind CSS v3 to Tailwind CSS v4 (#19846)
  • Upgrade: never migrate files that are ignored by git (#19846)

... (truncated)

Changelog

Sourced from @​tailwindcss/vite's changelog.

[4.3.0] - 2026-05-08

Added

  • Add @container-size utility (#18901)
  • Add scrollbar-{auto,thin,none} utilities for scrollbar-width, and scrollbar-thumb-* / scrollbar-track-* color utilities for scrollbar-color (#19981, #20019)
  • Add scrollbar-gutter-* utilities (#20018)
  • Add zoom-* utilities (#20020)
  • Add tab-* utilities (#20022)
  • Allow using @variant with stacked variants (e.g. @variant hover:focus { … }) (#19996)
  • Allow using @variant with compound variants (e.g. @variant hover, focus { … }) (#19996)
  • Support --default(…) in --value(…) and --modifier(…) for functional @utility definitions (#19989)

Fixed

  • Ensure @plugin resolves package JavaScript entries instead of browser CSS entries when using @tailwindcss/vite (#19949)
  • Fix relative @import and @plugin paths resolving from the wrong directory when using @tailwindcss/vite (#19965)
  • Ensure CSS files containing @variant are processed by @tailwindcss/vite (#19966)
  • Resolve imports relative to base when result.opts.from is not provided when using @tailwindcss/postcss (#19980)
  • Canonicalization: preserve significant _ whitespace in arbitrary values (#19986)
  • Canonicalization: add parentheses when removing whitespace from arbitrary values would hurt readability (e.g. w-[calc(100%---spacing(60))]w-[calc(100%-(--spacing(60)))]) (#19986)
  • Canonicalization: preserve the original unit in arbitrary values instead of normalizing to base units (e.g. -mt-[20in]mt-[-20in], not mt-[-1920px]) (#19988)
  • Canonicalization: migrate arbitrary :has() variants from [&:has(…)] to has-[…] (#19991)
  • Upgrade: don’t migrate inline style attributes (e.g. style="flex-grow: 1"style="flex-grow: 1", not style="grow: 1") (#19918)
  • Allow multiple @utility definitions with the same name but different value types (#19777)
  • Export missing PluginWithConfig type from tailwindcss/plugin to fix errors when inferring plugin config types (#19707)
  • Ensure start and end legacy utilities without values do not generate CSS (#20003)
  • Ensure --value(…) is required in functional @utility definitions (#20005)
  • Canonicalization: preserve required whitespace around operators in negated arbitrary values (e.g. -left-[(var(--a)+var(--b))]) (#20011)

[4.2.4] - 2026-04-21

Fixed

  • Ensure imports in @import and @plugin still resolve correctly when using Vite aliases in @tailwindcss/vite (#19947)

[4.2.3] - 2026-04-20

Fixed

  • Canonicalization: improve canonicalization for tracking-* utilities by preferring non-negative utilities (e.g. -tracking-tightertracking-wider) (#19827)
  • Fix crash due to invalid characters in candidate (exceeding valid unicode code point range) (#19829)
  • Ensure query params in imports are considered unique resources when using @tailwindcss/webpack (#19723)
  • Canonicalization: collapse arbitrary values into shorthand utilities (e.g. px-[1.2rem] py-[1.2rem]p-[1.2rem]) (#19837)
  • Canonicalization: collapse border-{t,b}-* into border-y-*, border-{l,r}-* into border-x-*, and border-{t,r,b,l}-* into border-* (#19842)
  • Canonicalization: collapse scroll-m{t,b}-* into scroll-my-*, scroll-m{l,r}-* into scroll-mx-*, and scroll-m{t,r,b,l}-* into scroll-m-* (#19842)
  • Canonicalization: collapse scroll-p{t,b}-* into scroll-py-*, scroll-p{l,r}-* into scroll-px-*, and scroll-p{t,r,b,l}-* into scroll-p-* (#19842)
  • Canonicalization: collapse overflow-{x,y}-* into overflow-* (#19842)
  • Canonicalization: collapse overscroll-{x,y}-* into overscroll-* (#19842)
  • Read from --placeholder-color instead of --background-color for placeholder-* utilities (#19843)

... (truncated)

Commits
Maintainer changes

This version was pushed to npm by GitHub Actions, a new releaser for @​tailwindcss/vite since your current version.


Updates @vitejs/plugin-react-swc from 4.2.3 to 4.3.1

Release notes

Sourced from @​vitejs/plugin-react-swc's releases.

plugin-react-swc@4.3.1

Avoid esbuild warnings with Vite 8 #1195

Fixes #1187.

plugin-react-swc@4.3.0

Add Vite 8 to peerDependencies range #1142

This plugin is compatible with Vite 8.

Changelog

Sourced from @​vitejs/plugin-react-swc's changelog.

4.3.1 (2026-05-14)

Avoid esbuild warnings with Vite 8 #1195

Fixes #1187.

4.3.0 (2026-03-12)

Add Vite 8 to peerDependencies range #1142

This plugin is compatible with Vite 8.

Commits

Updates globals from 17.4.0 to 17.6.0

Release notes

Sourced from globals's releases.

v17.6.0

  • Update globals (2026-05-01) (#343) 00a4dd9

sindresorhus/globals@v17.5.0...v17.6.0

v17.5.0

  • Update globals (2026-04-12) (#342) 5d84602

sindresorhus/globals@v17.4.0...v17.5.0

Commits

Updates node-abi from 4.26.0 to 4.31.0

Release notes

Sourced from node-abi's releases.

v4.31.0

4.31.0 (2026-05-06)

Features

v4.30.0

4.30.0 (2026-05-06)

Features

v4.29.0

4.29.0 (2026-05-01)

Features

v4.28.0

4.28.0 (2026-03-16)

Features

v4.27.0

4.27.0 (2026-03-11)

Features

Commits
Install script changes

This version adds prepare script that runs during installation. Review the package contents before updating.


Updates sass from 1.91.0 to 1.101.0

Release notes

Sourced from sass's releases.

Dart Sass 1.101.0

To install Sass 1.101.0, download one of the packages below and add it to your PATH, or see the Sass website for full installation instructions.

Changes

  • Potentially breaking bug fix: The Node package importer now properly supports resolving import-only variants of Sass files declared in the exports, sass, and style fields of package.json. Previously, these files were ignored even when loaded via @import, so any code relying on loading module-system-only files this way may break.

See the full changelog for changes in earlier releases.

Dart Sass 1.100.0

To install Sass 1.100.0, download one of the packages below and add it to your PATH, or see the Sass website for full installation instructions.

Changes

  • Writing two compound selectors adjacent to one another without any whitespace between them, such as [class]a, is now deprecated. This was always an error in CSS and Sass only supported it by mistake.

    See the Sass website for details.

See the full changelog for changes in earlier releases.

Dart Sass 1.99.0

To install Sass 1.99.0, download one of the packages below and add it to your PATH, or see the Sass website for full installation instructions.

Changes

  • Add support for parent selectors (&) at the root of the document. These are emitted as-is in the CSS output, where they're interpreted as the scoping root.

  • User-defined functions named calc or clamp are no longer forbidden. If such a function exists without a namespace in the current module, it will be used instead of the built-in calc() or clamp() function.

  • User-defined functions whose names begin with - and end with -expression, -url, -and, -or, or -not are no longer forbidden. These were originally intended to match vendor prefixes, but in practice no vendor prefixes for these functions ever existed in real browsers.

  • User-defined functions named EXPRESSION, URL, and ELEMENT, those that begin with - and end with -ELEMENT, as well as the same names with some lowercase letters are now deprecated, These are names conflict with plain CSS functions that have special syntax.

    See the Sass website for details.

  • In a future release, calls to functions whose names begin with - and end with -expression and -url will no longer have special parsing. For now, these calls are deprecated if their behavior will change in the future.

    See the Sass website for details.

... (truncated)

Changelog

Sourced from sass's changelog.

1.101.0

  • Potentially breaking bug fix: The Node package importer now properly supports resolving import-only variants of Sass files declared in the exports, sass, and style fields of package.json. Previously, these files were ignored even when loaded via @import, so any code relying on loading module-system-only files this way may break.

1.100.0

  • Writing two compound selectors adjacent to one another without any whitespace between them, such as [class]a, is now deprecated. This was always an error in CSS and Sass only supported it by mistake.

    See the Sass website for details.

1.99.0

  • Add support for parent selectors (&) at the root of the document. These are emitted as-is in the CSS output, where they're interpreted as the scoping root.

  • User-defined functions named calc or clamp are no longer forbidden. If such a function exists without a namespace in the current module, it will be used instead of the built-in calc() or clamp() function.

  • User-defined functions whose names begin with - and end with -expression, -url, -and, -or, or -not are no longer forbidden. These were originally intended to match vendor prefixes, but in practice no vendor prefixes for these functions ever existed in real browsers.

  • User-defined functions named EXPRESSION, URL, and ELEMENT, those that begin with - and end with -ELEMENT, as well as the same names with some lowercase letters are now deprecated, These are names conflict with plain CSS functions that have special syntax.

    See the Sass website for details.

  • In a future release, calls to functions whose names begin with - and end with -expression and -url will no longer have special parsing. For now, these calls are deprecated if their behavior will change in the future.

    See the Sass website for details.

  • Calls to functions whose names begin with - and end with -progid:... are deprecated.

... (truncated)

Commits
  • 63b9922 Load import-only files through package.json exports (#2772)
  • c7e9947 Migrate from bufbuild/buf-setup-action to bufbuild/buf-action (#2773)
  • 7674a4c Bump postcss from 8.5.13 to 8.5.15 in /pkg/sass-parser (#2774)
  • 5fd18c7 Bump node engine requirement to >=20.19.0 and chokidar requirement to ^5.0.0 ...
  • 8c1d984 Deprecate adjacent compound selectors (#2765)
  • 8e5f718 Bump postcss from 8.5.12 to 8.5.13 in /pkg/sass-parser (#2767)
  • 1447f9b Bump postcss from 8.5.8 to 8.5.12 in /pkg/sass-parser (#2766)
  • 83c39fe Support the top-level parent selector (#2758)
  • ec85871 Bump EndBug/add-and-commit from 9 to 10 (#2756)
  • a604acd [Function Name] Implement changes (#2731)
  • Additional commits viewable in compare view
Maintainer changes

This version was pushed to npm by GitHub Actions, a new releaser for sass since your current version.


Updates tailwindcss from 4.2.1 to 4.3.0

Release notes

Sourced from tailwindcss's releases.

v4.3.0

Added

  • Add @container-size utility (#18901)
  • Add scrollbar-{auto,thin,none} utilities for scrollbar-width, and scrollbar-thumb-* / scrollbar-track-* color utilities for scrollbar-color (#19981, #20019)
  • Add scrollbar-gutter-* utilities (#20018)
  • Add zoom-* utilities (#20020)
  • Add tab-* utilities (#20022)
  • Allow using @variant with stacked variants (e.g. @variant hover:focus { … }) (#19996)
  • Allow using @variant with compound variants (e.g. @variant hover, focus { … }) (#19996)
  • Support --default(…) in --value(…) and --modifier(…) for functional @utility definitions (#19989)

Fixed

  • Ensure @plugin resolves package JavaScript entries instead of browser CSS entries when using @tailwindcss/vite (#19949)
  • Fix relative @import and @plugin paths resolving from the wrong directory when using @tailwindcss/vite (#19965)
  • Ensure CSS files containing @variant are processed by @tailwindcss/vite (#19966)
  • Resolve imports relative to base when result.opts.from is not provided when using @tailwindcss/postcss (#19980)
  • Canonicalization: preserve significant _ whitespace in arbitrary values (#19986)
  • Canonicalization: add parentheses when removing whitespace from arbitrary values would hurt readability (e.g. w-[calc(100%---spacing(60))]w-[calc(100%-(--spacing(60)))]) (#19986)
  • Canonicalization: preserve the original unit in arbitrary values instead of normalizing to base units (e.g. -mt-[20in]mt-[-20in], not mt-[-1920px]) (#19988)
  • Canonicalization: migrate arbitrary :has() variants from [&:has(…)] to has-[…] (#19991)
  • Upgrade: don’t migrate inline style attributes (e.g. style="flex-grow: 1"style="flex-grow: 1", not style="grow: 1") (#19918)
  • Allow multiple @utility definitions with the same name but different value types (#19777)
  • Export missing PluginWithConfig type from tailwindcss/plugin to fix errors when inferring plugin config types (#19707)
  • Ensure start and end legacy utilities without values do not generate CSS (#20003)
  • Ensure --value(…) is required in functional @utility definitions (#20005)
  • Canonicalization: preserve required whitespace around operators in negated arbitrary values (e.g. -left-[(var(--a)+var(--b))]) (#20011)

v4.2.4

Fixed

  • Ensure imports in @import and @plugin still resolve correctly when using Vite aliases in @tailwindcss/vite (#19947)

v4.2.3

Fixed

  • Canonicalization: improve canonicalizations for tracking-* utilities by preferring non-negative utilities (e.g. -tracking-tightertracking-wider) (#19827)
  • Fix crash due to invalid characters in candidate (exceeding valid unicode code point range) (#19829)
  • Ensure query params in imports are considered unique resources when using @tailwindcss/webpack (#19723)
  • Canonicalization: collapse arbitrary values into shorthand utilities (e.g. px-[1.2rem] py-[1.2rem]p-[1.2rem]) (#19837)
  • Canonicalization: collapse border-{t,b}-* into border-y-*, border-{l,r}-* into border-x-*, and border-{t,r,b,l}-* into border-* (#19842)
  • Canonicalization: collapse scroll-m{t,b}-* into scroll-my-*, scroll-m{l,r}-* into scroll-mx-*, and scroll-m{t,r,b,l}-* into scroll-m-* (#19842)
  • Canonicalization: collapse scroll-p{t,b}-* into scroll-py-*, scroll-p{l,r}-* into scroll-px-*, and scroll-p{t,r,b,l}-* into scroll-p-* (#19842)
  • Canonicalization: collapse overflow-{x,y}-* into overflow-* (#19842)
  • Canonicalization: collapse overscroll-{x,y}-* into overscroll-* (#19842)
  • Read from --placeholder-color instead of --background-color for placeholder-* utilities (#19843)
  • Upgrade: ensure files are not emptied out when killing the upgrade process while it's running (#19846)
  • Upgrade: use config.content when migrating from Tailwind CSS v3 to Tailwind CSS v4 (#19846)
  • Upgrade: never migrate files that are ignored by git (#19846)

... (truncated)

Changelog

Sourced from tailwindcss's changelog.

[4.3.0] - 2026-05-08

Added

  • Add @container-size utility (#18901)
  • Add scrollbar-{auto,thin,none} utilities for scrollbar-width, and scrollbar-thumb-* / scrollbar-track-* color utilities for scrollbar-color (#19981, #20019)
  • Add scrollbar-gutter-* utilities (#20018)
  • Add zoom-* utilities (#20020)
  • Add tab-* utilities (#20022)
  • Allow using @variant with stacked variants (e.g. @variant hover:focus { … }) (#19996)
  • Allow using @variant with compound variants (e.g. @variant hover, focus { … }) (#19996)
  • Support --default(…) in --value(…) and --modifier(…) for functional @utility definitions (#19989)

Fixed

  • Ensure @plugin resolves package JavaScript entries instead of browser CSS entries when using @tailwindcss/vite (#19949)
  • Fix relative @import and @plugin paths resolving from the wrong directory when using @tailwindcss/vite (#19965)
  • Ensure CSS files containing @variant are processed by @tailwindcss/vite (#19966)
  • Resolve imports relative to base when result.opts.from is not provided when using @tailwindcss/postcss (#19980)
  • Canonicalization: preserve significant _ whitespace in arbitrary values (#19986)
  • Canonicalization: add parentheses when removing whitespace from arbitrary values would hurt readability (e.g. w-[calc(100%---spacing(60))]w-[calc(100%-(--spacing(60)))]) (#19986)
  • Canonicalization: preserve the original unit in arbitrary values instead of normalizing to base units (e.g. -mt-[20in]mt-[-20in], not mt-[-1920px]) (#19988)
  • Canonicalization: migrate arbitrary :has() variants from [&:has(…)] to has-[…] (#19991)
  • Upgrade: don’t migrate inline style attributes (e.g. style="flex-grow: 1"style="flex-grow: 1", not style="grow: 1") (#19918)
  • Allow multiple @utility definitions with the same name but different value types (#19777)
  • Export missing PluginWithConfig type from tailwindcss/plugin to fix errors when inferring plugin config types (#19707)
  • Ensure start and end legacy utilities without values do not generate CSS (#20003)
  • Ensure --value(…) is required in functional @utility definitions (#20005)
  • Canonicalization: preserve required whitespace around operators in negated arbitrary values (e.g. -left-[(var(--a)+var(--b))]) (#20011)

[4.2.4] - 2026-04-21

Fixed

  • Ensure imports in @import and @plugin still resolve correctly when using Vite aliases in @tailwindcss/vite (#19947)

[4.2.3] - 2026-04-20

Fixed

  • Canonicalization: improve canonicalization for tracking-* utilities by preferring non-negative utilities (e.g. -tracking-tightertracking-wider) (#19827)
  • Fix crash due to invalid characters in candidate (exceeding valid unicode code point range) (#19829)
  • Ensure query params in imports are considered unique resources when using @tailwindcss/webpack (#19723)
  • Canonicalization: collapse arbitrary values into shorthand utilities (e.g. px-[1.2rem] py-[1.2rem]p-[1.2rem]) (#19837)
  • Canonicalization: collapse border-{t,b}-* into border-y-*, border-{l,r}-* into border-x-*, and border-{t,r,b,l}-* into border-* (#19842)
  • Canonicalization: collapse scroll-m{t,b}-* into scroll-my-*, scroll-m{l,r}-* into scroll-mx-*, and scroll-m{t,r,b,l}-* into scroll-m-* (#19842)
  • Canonicalization: collapse scroll-p{t,b}-* into scroll-py-*, scroll-p{l,r}-* into scroll-px-*, and scroll-p{t,r,b,l}-* into scroll-p-* (#19842)
  • Canonicalization: collapse overflow-{x,y}-* into overflow-* (#19842)
  • Canonicalization: collapse overscroll-{x,y}-* into overscroll-* (#19842)
  • Read from --placeholder-color instead of --background-color for placeholder-* utilities (#19843)

... (truncated)

Commits

Updates tsx from 4.21.0 to 4.22.4

Release notes

Sourced from tsx's releases.

v4.22.4

4.22.4 (2026-05-31)

Bug Fixes

  • resolve CommonJS directory requires inside dependencies (#803) (1ce8463)

This release is also available on:

v4.22.3

4.22.3 (2026-05-19)

Bug Fixes

  • decode typed loader source (dce02fc)
  • preserve entrypoint with TypeScript preload hooks (68f72f3)

This release is also available on:

v4.22.2

4.22.2 (2026-05-18)

Bug Fixes

  • preserve CJS JSON require in ESM hooks (35b700b)
  • preserve named exports from CommonJS TypeScript (11de737)
  • support module.exports require(esm) interop (cf8f199)

This release is also available on:

v4.22.1

4.22.1 (2026-05-17)

Bug Fixes

  • resolve tsconfig path aliases containing a colon (#780) (6979f28)

This release is also available on:

... (truncated)

Commits
  • 1ce8463 fix: resolve CommonJS directory requires inside dependencies (#803)
  • dce02fc fix: decode typed loader source
  • 68f72f3 fix: preserve entrypoint with TypeScript preload hooks
  • 69455cf test: cover package exports for ambiguous ESM reexports
  • 35b700b fix: preserve CJS JSON require in ESM hooks
  • ef807db chore: update testing dependencies
  • 3917090 test: document compatibility test taxonomy
  • de8113f refactor: centralize Node capability facts
  • c1f62db test: consolidate tsconfig path edge coverage
  • 4e08174 test: consolidate loader hook coverage
  • Additional commits viewable in compare view
Maintainer changes

This version was pushed to npm by GitHub Actions, a new releaser for tsx since your current version.


Updates typescript-eslint from 8.56.1 to 8.61.0

Release notes

Sourced from typescript-eslint's releases.

v8.61.0

8.61.0 (2026-06-08)

🚀 Features

  • ast-spec: change type of UnaryExpression.prefix to always true (#12372)
  • ast-spec: tighten types of ArrowFunction, YieldExpression, TSTypePredicate (#12373)

🩹 Fixes

  • rule-schema-to-typescript-types: respect ECMAScript line terminators (#12374)

❤️ Thank You

See GitHub Releases for more information.

You can read about our versioning strategy and releases on our website.

v8.60.1

8.60.1 (2026-06-01)

🩹 Fixes

  • eslint-plugin: respect ECMAScript line terminators in ts-comment rules (#12352)
  • eslint-plugi...

    Description has been truncated

    Note
    Automatic rebases have been disabled on this pull request as it has been open for over 30 days.

@dependabot dependabot Bot added dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code labels May 23, 2026
Jason-Shen2 added a commit that referenced this pull request May 24, 2026
…onRepo

Task #8 of the Option D rearchitecture (agent loop in Electron main).
Wires the crest integration layer on top of the pi source committed
in 2a4945b: pane gets a session via pi's JsonlSessionRepo, the
session is bound to its creation cwd, each send refreshes the system
prompt with the latest pane cwd via a minimal PaneHarness adapter.

Design lock-in
  docs/agent-runtime-architecture.md (397 lines, 10 sections):
    §3 — why pi as foundation and the "pi design wins by default"
          posture (codified after one wrong-shaped runtime.ts iteration)
    §4 — session model + cwd-grouped JSONL storage (warp vs pi compared)
    §5 — pane ↔ session binding via block.meta["agent:session"]
    §6 — pane lifecycle (open / first send / restart / cross-pane)
    §7 — decisions log, 10 entries each with reasoning
    §9 — pi file refs + warp file:line citations

Schema (Go + generated TS)
  pkg/waveobj/wtypemeta.go: AgentChatID dropped, AgentSessionMeta added.
  AgentSessionMeta = {id, createdAt, cwd, path} — structurally a subset
  of pi's JsonlSessionMetadata so round-trip is identity. createdAt is
  camelCase (Y1 exception, doc §7.2); rest of crest stays lowercase
  until task #15 migrates project-wide.
  pkg/waveobj/metaconsts.go regenerated via task generate.

emain/agent integration layer (219 LOC non-test, target was <250)
  sessions.ts (108 lines):
    - getSessionsRepo() — process-wide JsonlSessionRepo singleton
    - createPaneSession(cwd) — mints fresh session, returns metadata
      shape that goes straight into block.meta
    - openPaneSession(metadata) — re-opens by AgentSessionMeta
    - listSessionsForCwd(cwd) — backs the future "resume recent" banner
    - defaultSessionsDir() — mirrors Go's GetWaveConfigDir resolution
  build-system-prompt.ts (40 lines):
    - buildSystemPrompt(SystemPromptInputs) → string
    - Composes base instruction + cwd + git branch + connection +
      last 5 cmds. Called per turn via AgentHarness function-form
      systemPrompt so cwd updates between sends are reflected.
  harness-factory.ts (71 lines):
    - buildPaneHarness({session, model, ...}) → {harness, update(inputs)}
    - The PaneHarness is a 30-line adapter that exposes the env.cwd
      mutation seam pi leaves implicit. NOT a runtime wrapper —
      subscribe/prompt/abort/message storage are direct AgentHarness
      usage. update() refreshes env.cwd + the system-prompt closure
      so warp-style "session stays put, exchange carries latest cwd"
      semantics work.

terminal-view.tsx — chatId persistence reverted to in-memory useMemo
  The earlier persistence path referenced agent:chatid in block.meta,
  which is now removed from the schema. The legacy useChat + Go-backend
  path stays alive until task #12 (usePiChat); in the meantime an
  in-memory UUID is enough.

_spike.ts — rewritten to drive AgentHarness through a real session
  Mints sessions into a tmp dir (does not pollute real config home),
  builds PaneHarness with model + cwd + git, subscribes via
  AgentHarness.subscribe (not .on() — that one is reserved for
  AgentHarness-OWN hooks), runs prompt(), prints event tally + final
  stopReason + persisted JSONL line count.

Tests
  emain/agent/sessions.test.ts — 15 tests:
    - 6 session round-trip cases (mint, header, reopen, list, empty)
    - 1 shape-conformance (AgentSessionMeta ≡ JsonlSessionMetadata)
    - 3 defaultSessionsDir env resolution branches
    - 5 buildSystemPrompt rendering cases (cwd-only, git, connection,
      cmd cap, no-cmds)
  No tests touch LLM providers. Full suite: 126/126 pass (was 111
  pre-#8; +15 here; -16 from the earlier wrong-shaped runtime.test.ts
  that was deleted in the reset).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Jason-Shen2 added a commit that referenced this pull request May 24, 2026
Task #9. Wires the per-pane harness cache + ipcMain handlers + preload
surface so the renderer can talk to the integrated agent runtime
without touching wavesrv. No renderer code consumes this yet —
usePiChat (task #12) is the first consumer.

New: emain/agent-ipc.ts (~210 LOC)
  - harnessCache: Map<sessionPath, PaneHarness>
  - subscriptions: per-(sender, sessionPath) tracking + auto-release
    on sender 'destroyed'
  - registerAgentIpcHandlers() wires:
      handle "agent:create-session"      (cwd) → AgentSessionMeta
      handle "agent:list-sessions-for-cwd" (cwd) → AgentSessionMeta[]
      handle "agent:send"                (opts) → {sessionMetadata}
                                          (returns immediately; prompt
                                           runs in background)
      on     "agent:abort"               (sessionPath)
      on     "agent:subscribe"           (sessionPath)
      on     "agent:unsubscribe"         (sessionPath)
  - Single "agent:event" channel carries {sessionPath, event} —
    mirrors the dir-watch pattern (renderer strings never embed in
    channel names, security per emain-ipc.ts:518 comment).

Wired in: emain/emain-ipc.ts initIpcHandlers() calls
  registerAgentIpcHandlers() before the rest of the init body.

Preload: emain/preload.ts
  - Single ipcRenderer.on("agent:event") dispatcher fans events to
    per-sessionPath callback sets (same shape as dirWatchCallbacks).
  - exposeInMainWorld api.agent namespace:
      createSession(cwd) → Promise<AgentSessionMeta>
      listSessionsForCwd(cwd) → Promise<AgentSessionMeta[]>
      send(opts) → Promise<{sessionMetadata}>
      abort(sessionPath)
      subscribe(sessionPath, callback) → unsubscribe fn

Types: frontend/types/custom.d.ts
  - ElectronApi.agent: matching surface declaration
  - AgentSendOptions: send-payload shape (provider/model/reasoning +
    pane context + optional sessionMetadata)

Send semantics
  send() returns immediately with the resolved sessionMetadata so the
  renderer can write block.meta and begin streaming. The prompt() call
  fires in background; AgentHarness emits the assistant message stream
  + any errors through "agent:event". This matches the architecture
  doc §5.2 + §6.3 contract.

What's NOT in this commit
  - Renderer-side hook (usePiChat) — task #12; the legacy useChat /
    HTTP-to-wavesrv path stays live until that lands.
  - Crest-specific tools — task #10; AgentHarness is built with
    tools: [] for now.
  - Permissions hook — task #11; no beforeToolCall yet.
  - Integration test against an actual LLM — task #14.

Verification
  - tsc --noEmit -p tsconfig.json: 0 new errors in emain/ (58
    pre-existing project-wide).
  - vitest run: 126/126 (no test changes; existing surface intact).
  - npx tsx emain/agent/_spike.ts: imports + harness construction
    still load cleanly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Jason-Shen2 added a commit that referenced this pull request May 24, 2026
Task #11. Replaces the deleted Go pkg/agent/permissions/ posture-and-
rules engine (1500 LOC) with a 50-LOC allowlist + bench-mode bypass on
top of pi's AgentHarness "tool_call" event hook. See
docs/agent-runtime-architecture.md §7.9 for the decision rationale.

What this enforces in v1
  - When allowAll is true (the default and the only value the IPC
    currently sets), every tool call passes. There is no approval UI
    yet, so the agent stays functional and the hook is effectively a
    no-op slot.
  - When allowAll is false + allowedTools provided, only listed tool
    names pass; others get { block: true, reason: '"<name>" is not
    allowed for this session.' }. The reason surfaces as the tool
    result content (inline in the agent block).
  - Bench mode: process.env.CREST_AGENT_BENCH=1 forces allowAll, used
    by the eval harness so test runs aren't gated.

Files
  emain/agent/permissions.ts (~80 lines)
    - PermissionsConfig: { allowedTools?, allowAll? }
    - buildPermissionsHook(config) → ToolCallHook compatible with
      AgentHarness's .on("tool_call", handler) registration.
    - isBenchMode() — reads CREST_AGENT_BENCH from env.
  emain/agent/permissions.test.ts — 8 tests covering allow/block/bench.
  emain/agent/harness-factory.ts — BuildPaneHarnessOptions.toolCallHook
    threads through to harness.on("tool_call", hook).
  emain/agent-ipc.ts — wires the hook in ensurePaneHarness():
    bench → allowAll; else allowedTools from send opts; else
    allowAll (v1 default). SendOptions gains an optional allowedTools
    field for future renderer-side configuration.

Design notes
  - AgentHarness's tool gate is `.on("tool_call", ...)`, NOT the bare
    Agent constructor's beforeToolCall option — the harness emits a
    slimmer ToolCallEvent { toolName, toolCallId, input } and expects
    a ToolCallResult { block?, reason? } back. The hook shape mirrors
    that exactly so we don't add an adapter layer.
  - The interactive "approve this tool call?" UI is a future feature
    (task ~#12.5 or beyond). When wired, the hook will return a
    Promise that resolves after the renderer sends a click. The
    current synchronous Promise path is forward-compatible.
  - Per-tool-args matching (the dropped posture engine's main feature)
    is intentionally NOT in v1. Add when there's a concrete need; the
    rebuilt engine should be a separate file, not woven into this
    permissions stub.

Verification
  - vitest run: 134/134 (was 126; +8 permissions tests).
  - tsc --noEmit -p tsconfig.json: 0 new errors in emain/ (58
    pre-existing project-wide).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Jason-Shen2 added a commit that referenced this pull request May 24, 2026
Implements the React hook + reducer that consumes the agent IPC bridge
(window.api.agent). Conservative scope for the autonomous handoff:
ship the hook in isolation, do NOT touch AgentChatHost /
agent-block-element / terminal-model / package.json yet.

Rationale for the split
  Replacing useChat in the live agent path is risky:
    - ai-sdk's UIMessage parts shape ≠ pi's AgentMessage content shape
    - agent-block-element renders the parts loop; one wrong assumption
      could break the entire agent panel rendering
    - terminal-model's apply* methods are tied to current shape
  Doing all of that without human review during an autonomous session
  is exactly the kind of blast-radius the user warned about. The
  hook itself is self-contained and easy to drop in; the wiring is
  the dangerous half.

What this ships
  frontend/app/store/use-pi-chat.ts (~290 LOC)
    - usePiChat(opts) → { messages, status, errorMessage,
                          sessionMetadata, send, abort }
    - opts: { initialSession?, onSessionMinted?, paneContext,
             modelSelection, allowedTools? }
    - Subscribes via window.api.agent.subscribe AFTER it has a
      sessionPath; pre-session sends are still supported (they mint
      a session, the effect picks it up next render).
    - Status transitions: agent_start/turn_start → streaming;
      assistant message_end w/ stopReason:error → error;
      agent_end → idle.
    - Surfaces minted sessionMetadata via onSessionMinted callback so
      the consumer can write it to block.meta["agent:session"].
    - Pure reducer (reducePiChatEvent) exported for testing and reuse.

  frontend/app/store/use-pi-chat.test.tsx (~80 LOC, 8 tests)
    - Tests the pure reducer end-to-end: message_start append,
      message_update tail-replace, message_end finalization,
      agent_end authoritative snapshot, missing-payload no-ops,
      unknown-event no-ops.
    - Hook-lifecycle tests (renderHook + waitFor) are NOT included
      because @testing-library/react isn't installed. When the wiring
      task adds it, the hook tests should cover:
        - subscribe on initialSession; unsubscribe on unmount
        - send round-trip: sessionMetadata minted + onSessionMinted called
        - send error path: status flips to error with err.message
        - abort: calls window.api.agent.abort with current sessionPath

  frontend/types/custom.d.ts
    - AgentSendOptions gains the allowedTools?: string[] field
      (renderer can pre-approve a tool subset per pane).

What's NOT in this commit (left for the wiring task)
  - AgentChatHost: still uses @ai-sdk/react useChat; the new hook
    is unused by production code.
  - agent-block-element: still consumes UIMessagePart shape.
  - terminal-model.applyAgentParts / applyAgentText: unchanged.
  - terminal-view: still mints chatId via useMemo; needs to mint
    sessions via window.api.agent.createSession (or let usePiChat
    handle minting on first send + writing the result to
    block.meta["agent:session"] via onSessionMinted).
  - package.json: @ai-sdk/react still a dep.

Wiring checklist for the human review pass (also documented in the
use-pi-chat.ts module-doc):
  1. Swap AgentChatHost from useChat to usePiChat; drop transport prop.
  2. Rewrite agent-block-element's parts loop to walk
     AgentMessage.content (text / toolCall / toolResult / etc.)
     instead of UIMessagePart parts.
  3. Update terminal-model apply* APIs (or stop using them — pi
     events stream directly to the hook, no Jotai-atom hop required).
  4. Update terminal-view to pass onSessionMinted that writes
     block.meta["agent:session"] = meta.
  5. Remove @ai-sdk/react + provider deps from package.json.
  6. Smoke test end-to-end against each of OpenAI/Anthropic/Google/OpenRouter.

Verification
  - vitest run: 171/171 (was 163; +8 reducer tests).
  - tsc --noEmit -p tsconfig.json: 0 new errors.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Jason-Shen2 added a commit that referenced this pull request May 24, 2026
…up plan

Snapshot for the morning review. Records what landed in the
autonomous session (tasks #9, #10-partial, #11, #12-half), what was
explicitly NOT done and why (high-blast-radius wiring, deferred tool
designs, missing API-key access), the architecture invariants the
new code commits to, and a recommended pickup order keyed to how
much time the user has when they come back.

Read this first in the morning. The architecture story itself is
already in docs/agent-runtime-architecture.md; this doc is just the
"where we are right now" companion.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Jason-Shen2 added a commit that referenced this pull request May 24, 2026
Step 1/6 of task #12 wiring. Pure helper that converts a flat
AgentMessage[] into PiRun[], one entry per user-initiated send.
Each run carries the user message + every subsequent non-user message
(assistant + toolResult) until the next user message, plus a derived
status (streaming | done | error) from the last assistant's stopReason.

This is the unit AgentBlockElement will render against in the
upcoming rewrite. runId is "run-{i}" where i is the user message's
array index — stable for React keying within a session; rebuilds
cleanly if compaction shifts indices later.

13 tests cover: empty input, leading-noise defense, streaming /
done / error status derivation, multi-user multi-run, tool-call +
toolResult co-location, mid-stream status, error mid-tool-loop,
"status reads LAST assistant" guarantee, edge cases.

Next steps (will commit separately):
  2. New ToolUseCard against pi shape
  3. New AgentBlockElement consuming PiRun
  4. AgentChatHost rewrite + TerminalModel agent path deletion
  5. terminal-view + cmdblock-input adaptation
  6. Drop @ai-sdk/react + smoke test

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Jason-Shen2 added a commit that referenced this pull request May 24, 2026
Step 2/6 of task #12. Lean replacement for ToolUseCard — renders one
pi toolCall + paired toolResult (linked by toolUseId). Three states:
running / done / error. Click header to expand input JSON + result.

Intentionally drops:
  - approval flow (needs-approval / user-approved / user-denied)
  - askquestion UI takeover
  - citations
  - diff view (originalcontent / modifiedcontent)
  - file-jump / open-block linking
  - suggestions / suggested rules

These were Wave-era UX bound to tools we deprecated (ask_user_question,
dangerous, transfer_to_user, file_tracker, write_plan, etc. — see the
deferred-tools decision). When a future tool needs richer display
it'll own a custom card variant rather than retrofit this one.

The old tool-use-card.tsx + its 5 satellite files (tool-action-header,
tool-ask-card, tool-command-card, tool-diff-card, citation-chips —
~1180 LOC total) become dead after step 4 wires the new AgentBlockElement.
Deletion in step 6.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Jason-Shen2 added a commit that referenced this pull request May 24, 2026
Steps 3+4+5 of task #12 in one commit (intentionally co-located so
the project compiles at every commit boundary). After this, the
renderer is fully driven by usePiChat → slicePiRuns → AgentBlockElement
on the pi AgentMessage shape; the ai-sdk WaveUIMessage path and
TerminalModel's agent-state Jotai atoms are gone.

Engine layer (terminal-model + Block)
  - engine/types.ts:
      Removed AgentPayload (assistantText / parts / status etc.) and
      replaced with AgentBlockRef = { runId, createdAt }. Agent state
      lives on the React side now; the engine only carries a marker.
  - engine/block.ts:
      Replaced block.agentPayload with block.agentRef.
      Deleted appendAgentText / setAgentText / setAgentStatus (the
      mutators the ai-sdk useChat → applyAgentDelta bridge called).
  - engine/blocks.ts:
      appendAgentBlock(runId) — single-arg factory; no userText or
      payload bookkeeping. Block id = `agent_${runId}`.
  - terminal-model.ts:
      Removed agentChatStatusAtom, agentChatIdAtom, agentModelOverrideAtom,
      agentPartsAtom (~4 jotai atoms gone).
      Removed submitAgentMessage, applyAgentDelta, applyAgentText,
      applyAgentParts, applyAgentStatus (~5 methods, ~60 LOC).
      Added appendAgentRun(runId) — idempotent, just appends a marker
      block and bumps revision.
  - Removed WaveUIMessagePart import.

Renderer
  - agent-chat-host.tsx (full rewrite, 224 → ~165 LOC):
      Uses usePiChat with model selection / pane context / session
      metadata from terminal-view. Watches chat.messages, slices into
      runs via slicePiRuns, calls model.appendAgentRun for newly-seen
      runIds, fires onRunsChange to feed BlockListElement. Exposes a
      stable AgentChatHostApi (send / abort / getRuns) via onReady.
      Refuses to send when selection unresolved — surfaces specific
      resolver error via onUserError.
  - agent-block-element.tsx (full rewrite, 328 → ~245 LOC):
      Takes a PiRun. Walks run.responseMessages, accumulates text from
      assistant.content[type=text], emits a ToolCallCard for each
      assistant.content[type=toolCall] paired with the matching
      toolResult message (looked up by toolUseId). Header status comes
      from run.status; error footer from run.errorMessage. Markdown
      rendering preserved via react-markdown.
  - block-list-element.tsx:
      agentChatId prop replaced with agentRunsById: Map<runId, PiRun>.
      Agent block branch: look up run via block.agentRef.runId, render
      placeholder if not yet in map (handles first message_start
      in-flight or pane reopened pre-load), else mount AgentBlockElement.
  - terminal-view.tsx:
      Replaced chatId useMemo with block.meta["agent:session"] (read
      via useOrefMetaKeyAtom). onSessionMinted writes back when first
      send mints metadata.
      Replaced agentSubmitRef with agentApiRef holding the full
      AgentChatHostApi.
      Added agentRunsById state, updated via AgentChatHost.onRunsChange.
      Removed aiConfig / aiConfigError / chatId props passed to
      AgentChatHost; replaced with modelSelection / paneContext /
      sessionMetadata / selectionError shape matching the new contract.

Test layer
  - engine/agent-flow.test.ts: DELETED — tested the old payload mutator
    API which no longer exists. slicePiRuns + AgentBlockElement integration
    is covered by slice-pi-runs.test.ts + the rewrite covers the rest.
  - engine/blocks.test.ts: rewritten — new appendAgentBlock(runId)
    signature, asserts agentRef.runId + agent_${runId} id format.
  - engine/block-handler.test.ts: defensive-guard test now asserts
    agentRef.runId is preserved (instead of agentPayload.assistantText).
  - terminal-model.test.ts: agent-section rewritten — covers
    appendAgentRun idempotency, revision bump, empty-runId no-op.

Preview env
  - preview-electron-api.ts: stubbed api.agent.* so the preview
    pages still satisfy ElectronApi after the task #9 IPC addition.

What's still dead-but-present (cleanup in next commit):
  - tool-use-card.tsx + tool-action-header / tool-command-card /
    tool-diff-card / tool-ask-card / citation-chips (~1180 LOC) —
    no longer imported by anything; deleting in step 6 cleanup.
  - aitypes.ts WaveUIMessage / WaveUIMessagePart / WaveUIDataToolUse —
    same.
  - @ai-sdk/react in package.json — deletable next commit.

Verification
  - tsc --noEmit -p tsconfig.json: 58 pre-existing errors unchanged,
    0 new errors in the agent path.
  - vitest run: 172/172 pass.
  - Manual smoke deferred to step 6.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Jason-Shen2 added a commit that referenced this pull request May 24, 2026
Step 6/6 of task #12. With AgentChatHost + AgentBlockElement
now driven by usePiChat (commit c0222e1), nothing imports the
following any more — delete:

  frontend/app/store/aitypes.ts                          (~150 LOC)
    WaveUIMessage / WaveUIMessagePart / WaveUIDataToolUse +
    Citation / SuggestedRule / AskUserQuestion* / ApprovalDestination
    types. Pi shape replaces all of this end-to-end.

  frontend/app/term/render/tool-use-card.tsx             (~275 LOC)
  frontend/app/term/render/tool-action-header.tsx        (~91 LOC)
  frontend/app/term/render/tool-command-card.tsx         (~61 LOC)
  frontend/app/term/render/tool-diff-card.tsx            (~170 LOC)
  frontend/app/term/render/tool-ask-card.tsx             (~451 LOC)
  frontend/app/term/render/citation-chips.tsx            (~132 LOC)
    Wave-era rich tool-card UX (approval flow, askquestion takeover,
    file/line citations, diff view). These supported the 11 tools
    deferred-to-deprecated in task #10 (ask_user_question, dangerous,
    transfer_to_user, file_tracker, write_plan, etc.); no surviving
    code path needs them. The new ToolCallCard (committed dc9cd6e)
    is the lean replacement: name + input preview + collapsible
    result, no approval / citation / askquestion machinery.

Total dead-code deletion: ~1330 LOC across 7 files.

npm deps removed:
  @ai-sdk/react  (the React useChat hook crest used pre-pi)
  ai             (the underlying ai-sdk core)
  + 16 transitive dependencies via npm uninstall.

Verification
  - tsc --noEmit -p tsconfig.json: 58 pre-existing errors unchanged.
  - vitest run: 172/172 pass.

Task #12 (usePiChat + drop @ai-sdk/react) is now complete. Tasks
#13 (delete Go agent stack) and #14 (E2E regression) unblocked.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@dependabot dependabot Bot changed the title chore(deps-dev): Bump the dev-dependencies-minor group with 9 updates chore(deps-dev): Bump the dev-dependencies-minor group across 1 directory with 9 updates May 24, 2026
@dependabot dependabot Bot force-pushed the dependabot/npm_and_yarn/dev-dependencies-minor-699c37c44d branch from 6669ad7 to a05522a Compare May 24, 2026 10:52
Jason-Shen2 added a commit that referenced this pull request May 24, 2026
…ee model

One-off runner that exercises the full integrated agent stack
(sessions + AgentHarness + pi-ai openai-completions provider + tools)
against a real OpenRouter free model. Used for the post-#12 manual
smoke; keep for future regression checks against OpenRouter
specifically (the registry-driven providers have their own paths).

Usage:
  OPENROUTER_API_KEY=sk-or-v1-... \
    npx tsx emain/agent/_test-openrouter.ts ["prompt text"]
  # override model:
  OPENROUTER_MODEL=openai/gpt-oss-20b:free ...

Confirmed working today:
  - text-only round-trip (single-word reply)
  - tool-calling round-trip: agent invokes list_dir, gets real
    filesystem output, summarizes; 2 turns, 130 streaming chunks,
    5-line JSONL session, stopReason: stop, $0 cost (free tier).

Implementation notes
  - Constructs Model<"openai-completions"> by hand because OpenRouter's
    :free model variants aren't in pi-ai's models.generated.ts (LiteLLM
    doesn't enumerate them).
  - baseUrl is "https://openrouter.ai/api/v1" — the openai SDK pi
    delegates to appends /chat/completions itself. The crest catalog
    has the same field overspecified for the OLD Go HTTP path (it
    strips the suffix); when task #13 deletes that path we should
    normalize the catalog format too.
  - Sessions dir is sandboxed to os.tmpdir() — doesn't touch the
    real ~/.config/crest{-dev}/sessions/ tree.

Delete this file once task #14 has a real E2E regression harness
covering all 4 providers.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@dependabot dependabot Bot force-pushed the dependabot/npm_and_yarn/dev-dependencies-minor-699c37c44d branch from a05522a to 6b5aa2e Compare May 24, 2026 22:41
@dependabot dependabot Bot changed the title chore(deps-dev): Bump the dev-dependencies-minor group across 1 directory with 9 updates chore(deps-dev): bump the dev-dependencies-minor group across 1 directory with 9 updates May 29, 2026
@dependabot dependabot Bot force-pushed the dependabot/npm_and_yarn/dev-dependencies-minor-699c37c44d branch from 6b5aa2e to 232acd2 Compare May 29, 2026 19:18
…tory with 9 updates

Bumps the dev-dependencies-minor group with 9 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [@tailwindcss/vite](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-vite) | `4.2.1` | `4.3.0` |
| [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react-swc) | `4.2.3` | `4.3.1` |
| [globals](https://github.com/sindresorhus/globals) | `17.4.0` | `17.6.0` |
| [node-abi](https://github.com/electron/node-abi) | `4.26.0` | `4.31.0` |
| [sass](https://github.com/sass/dart-sass) | `1.91.0` | `1.101.0` |
| [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss) | `4.2.1` | `4.3.0` |
| [tsx](https://github.com/privatenumber/tsx) | `4.21.0` | `4.22.4` |
| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.56.1` | `8.61.0` |
| [@tailwindcss/cli](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-cli) | `4.2.1` | `4.3.0` |



Updates `@tailwindcss/vite` from 4.2.1 to 4.3.0
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.0/packages/@tailwindcss-vite)

Updates `@vitejs/plugin-react-swc` from 4.2.3 to 4.3.1
- [Release notes](https://github.com/vitejs/vite-plugin-react/releases)
- [Changelog](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite-plugin-react/commits/v4.3.1/packages/plugin-react-swc)

Updates `globals` from 17.4.0 to 17.6.0
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](sindresorhus/globals@v17.4.0...v17.6.0)

Updates `node-abi` from 4.26.0 to 4.31.0
- [Release notes](https://github.com/electron/node-abi/releases)
- [Commits](electron/node-abi@v4.26.0...v4.31.0)

Updates `sass` from 1.91.0 to 1.101.0
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](sass/dart-sass@1.91.0...1.101.0)

Updates `tailwindcss` from 4.2.1 to 4.3.0
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.0/packages/tailwindcss)

Updates `tsx` from 4.21.0 to 4.22.4
- [Release notes](https://github.com/privatenumber/tsx/releases)
- [Changelog](https://github.com/privatenumber/tsx/blob/master/release.config.cjs)
- [Commits](privatenumber/tsx@v4.21.0...v4.22.4)

Updates `typescript-eslint` from 8.56.1 to 8.61.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.61.0/packages/typescript-eslint)

Updates `@tailwindcss/cli` from 4.2.1 to 4.3.0
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.0/packages/@tailwindcss-cli)

---
updated-dependencies:
- dependency-name: "@tailwindcss/cli"
  dependency-version: 4.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies-minor
- dependency-name: "@tailwindcss/vite"
  dependency-version: 4.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies-minor
- dependency-name: "@vitejs/plugin-react-swc"
  dependency-version: 4.3.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies-minor
- dependency-name: globals
  dependency-version: 17.6.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies-minor
- dependency-name: node-abi
  dependency-version: 4.31.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies-minor
- dependency-name: sass
  dependency-version: 1.100.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies-minor
- dependency-name: tailwindcss
  dependency-version: 4.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies-minor
- dependency-name: tsx
  dependency-version: 4.22.3
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies-minor
- dependency-name: typescript-eslint
  dependency-version: 8.59.4
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot force-pushed the dependabot/npm_and_yarn/dev-dependencies-minor-699c37c44d branch from 232acd2 to f07ed6f Compare June 12, 2026 16:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants