Skip to content

build(deps): bump the npm_and_yarn group across 1 directory with 2 updates - #9

Closed
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/script/danger/npm_and_yarn-76d848a5cd
Closed

build(deps): bump the npm_and_yarn group across 1 directory with 2 updates#9
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/script/danger/npm_and_yarn-76d848a5cd

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Feb 25, 2026

Copy link
Copy Markdown

Bumps the npm_and_yarn group with 2 updates in the /script/danger directory: jws and qs.

Updates jws from 3.2.2 to 3.2.3

Release notes

Sourced from jws's releases.

v3.2.3

Changed

  • Fix advisory GHSA-869p-cjfg-cm3x: createSign and createVerify now require that a non empty secret is provided (via opts.secret, opts.privateKey or opts.key) when using HMAC algorithms.
  • Upgrading JWA version to 1.4.2, addressing a compatibility issue for Node >= 25.
Changelog

Sourced from jws's changelog.

[3.2.3]

Changed

  • Fix advisory GHSA-869p-cjfg-cm3x: createSign and createVerify now require that a non empty secret is provided (via opts.secret, opts.privateKey or opts.key) when using HMAC algorithms.
  • Upgrading JWA version to 1.4.2, adressing a compatibility issue for Node >= 25.

[3.0.0]

Changed

2.0.0 - 2015-01-30

Changed

  • BREAKING: Default payload encoding changed from binary to utf8. utf8 is a is a more sensible default than binary because many payloads, as far as I can tell, will contain user-facing strings that could be in any language. (6b6de48)

  • Code reorganization, thanks @​fearphage! (7880050)

Added

  • Option in all relevant methods for encoding. For those few users that might be depending on a binary encoding of the messages, this is for them. (6b6de48)
Commits
  • 4f6e73f Merge commit from fork
  • bd0fea5 version 3.2.3
  • 7c3b4b4 Enhance tests for HMAC streaming sign and verify
  • a9b8ed9 Improve secretOrKey initialization in VerifyStream
  • 6707fde Improve secret handling in SignStream
  • See full diff in compare view
Maintainer changes

This version was pushed to npm by julien.wollscheid, a new releaser for jws since your current version.


Updates qs from 6.14.0 to 6.15.0

Changelog

Sourced from qs's changelog.

6.15.0

  • [New] parse: add strictMerge option to wrap object/primitive conflicts in an array (#425, #122)
  • [Fix] duplicates option should not apply to bracket notation keys (#514)

6.14.2

  • [Fix] parse: mark overflow objects for indexed notation exceeding arrayLimit (#546)
  • [Fix] arrayLimit means max count, not max index, in combine/merge/parseArrayValue
  • [Fix] parse: throw on arrayLimit exceeded with indexed notation when throwOnLimitExceeded is true (#529)
  • [Fix] parse: enforce arrayLimit on comma-parsed values
  • [Fix] parse: fix error message to reflect arrayLimit as max index; remove extraneous comments (#545)
  • [Robustness] avoid .push, use void
  • [readme] document that addQueryPrefix does not add ? to empty output (#418)
  • [readme] clarify parseArrays and arrayLimit documentation (#543)
  • [readme] replace runkit CI badge with shields.io check-runs badge
  • [meta] fix changelog typo (arrayLengtharrayLimit)
  • [actions] fix rebase workflow permissions

6.14.1

  • [Fix] ensure arrayLimit applies to [] notation as well
  • [Fix] parse: when a custom decoder returns null for a key, ignore that key
  • [Refactor] parse: extract key segment splitting helper
  • [meta] add threat model
  • [actions] add workflow permissions
  • [Tests] stringify: increase coverage
  • [Dev Deps] update eslint, @ljharb/eslint-config, npmignore, es-value-fixtures, for-each, object-inspect
Commits
  • d9b4c66 v6.15.0
  • cb41a54 [New] parse: add strictMerge option to wrap object/primitive conflicts in...
  • 88e1563 [Fix] duplicates option should not apply to bracket notation keys
  • 9d441d2 Merge backport release tags v6.0.6–v6.13.3 into main
  • 85cc8ca v6.12.5
  • ffc12aa v6.11.4
  • 0506b11 [actions] update reusable workflows
  • 6a37faf [actions] update reusable workflows
  • 8e8df5a [Fix] fix regressions from robustness refactor
  • d60bab3 v6.10.7
  • Additional commits viewable in compare view

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 commands and options

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
    You can disable automated security fix PRs for this repo from the Security Alerts page.

…dates

Bumps the npm_and_yarn group with 2 updates in the /script/danger directory: [jws](https://github.com/brianloveswords/node-jws) and [qs](https://github.com/ljharb/qs).


Updates `jws` from 3.2.2 to 3.2.3
- [Release notes](https://github.com/brianloveswords/node-jws/releases)
- [Changelog](https://github.com/auth0/node-jws/blob/master/CHANGELOG.md)
- [Commits](auth0/node-jws@v3.2.2...v3.2.3)

Updates `qs` from 6.14.0 to 6.15.0
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](ljharb/qs@v6.14.0...v6.15.0)

---
updated-dependencies:
- dependency-name: jws
  dependency-version: 3.2.3
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: qs
  dependency-version: 6.15.0
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code labels Feb 25, 2026
lukemarsden added a commit that referenced this pull request Apr 14, 2026
…topped

Three fixes for the systematic n-1 response shift where each message
gets the response for the previous message:

1. EntryUpdated uses turn-scoped request_id with prev_turn fallback:
   Claude Code delivers background events (tool completions, text
   flushes) asynchronously via session_notification after a turn ends.
   EntryUpdated now checks whether the entry belongs to the current
   turn (>= turn_start) or a previous one, and tags it with the
   correct turn's request_id. Previously it read the global
   THREAD_REQUEST_MAP which could already point to the next turn.

2. NewEntry updates turn_request_id only at turn boundaries:
   turn_request_id is now only updated from the global map when
   current == last_completed (i.e. a new turn is starting). The old
   value is rotated into prev_turn_request_id for use by late
   EntryUpdated events from the previous turn.

3. Guard normal-completion Stopped against duplicate emission:
   When cancel() races with natural turn completion, both paths could
   emit Stopped. The duplicate triggers the stale-detection fallback
   which reads the global map (now pointing to the next turn's
   request_id), sending a premature message_completed that shifts all
   subsequent responses by one. Added stopped_emitted_for_task check
   to the normal completion path, matching the existing guard on the
   cancelled path. Documented as Critical Fix #9 in portingguide.md.

E2E tests pass for both zed-agent and claude (all 10 phases).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@dependabot @github

dependabot Bot commented on behalf of github Apr 14, 2026

Copy link
Copy Markdown
Author

This pull request was built based on a group rule. Closing it will not ignore any of these versions in future pull requests.

To ignore these dependencies, configure ignore rules in dependabot.yml

@dependabot
dependabot Bot deleted the dependabot/npm_and_yarn/script/danger/npm_and_yarn-76d848a5cd branch April 14, 2026 22:15
lukemarsden added a commit that referenced this pull request Jul 30, 2026
Root cause of the intermittent E2E Phase 17 failure "interrupt message never
delivered", found by running the suite repeatedly.

A chat_message with interrupt=true fired TWO independent channels for what is
semantically one operation: request_cancel_thread() to the dedicated cancel task,
and request_thread_creation() to the creation task. Those tasks are separate
spawns with no ordering guarantee, so the send can begin before the cancel is
processed -- and the cancel then kills the NEW turn instead of the old one.

Observed in a failing run (claude round, thread 5c80128a):

  07:18:06  turn_cancelled      req=int_...6apt (X)              <- correct
  07:18:06  message_completed   req=int_...6apt  usage=null
  07:18:06  message_completed   req=int_...6ejk (Y) usage=null   <- Y just created
  07:18:06  "Ignoring stale request_id rebind (mapping previously consumed by completion)"
  07:19:06  Phase 17: FAIL -- interrupt message never delivered

Y was created and completed in the same second with usage=null: its turn never
ran. Every healthy completion on that thread carries real usage. Y's real
completion was then rejected as a stale rebind, so the interaction never left
the waiting state -- the same off-by-one shape Critical Fix #9 addresses,
reached by a different route.

The interrupt is now carried on ThreadCreationRequest and the cancel is performed
inline by the creation task immediately before the send, so the two steps cannot
be reordered. The dedicated cancel task is retained for standalone
cancel_current_turn, which is what it exists for: cancelling while the creation
loop is blocked awaiting a previous turn.

cargo test -p external_websocket_sync: 56 passed.
lukemarsden added a commit that referenced this pull request Jul 30, 2026
…r turn

Root cause of the intermittent E2E Phase 17 failure "interrupt message never
delivered", found by running the suite repeatedly (~50% failure rate).

An interrupt dispatches its cancel out-of-band, to a dedicated task, so it can
fire while the sequential creation loop is blocked awaiting the very turn being
interrupted. That is necessary -- but it also means the cancel races that loop.
If the old turn finishes on its own just as the interrupt arrives, the creation
loop starts the NEW turn and the in-flight cancel lands on that instead.

Observed in a failing run (claude round, thread 5c80128a):

  07:18:06  turn_cancelled      req=int_...6apt (X)              <- intended
  07:18:06  message_completed   req=int_...6apt  usage=null
  07:18:06  message_completed   req=int_...6ejk (Y) usage=null   <- Y just created
  07:18:06  "Ignoring stale request_id rebind (mapping previously consumed by completion)"
  07:19:06  Phase 17: FAIL -- interrupt message never delivered

Y was created and completed in the same second with usage=null: its turn never
ran. Every healthy completion on that thread carries real token usage. Y's real
completion was then rejected as a stale rebind, so the interaction never left
the waiting state -- the same off-by-one shape Critical Fix #9 addresses,
reached by a different route. In production this is a user pressing stop and
retyping while a turn streams.

The cancel now names the turn it intends to kill: request_cancel_thread() takes
an expected_request_id, and the cancel task drops the request as stale if the
thread has since moved on. An untargeted cancel (explicit user stop) still
cancels whatever is running, by passing None.

Rejected alternative: performing the cancel inline in the creation loop. That
orders cancel-before-send trivially, but the loop awaits each turn to
completion, so an interrupt queued behind a running turn could never cancel it
-- trading a race for a deadlock. The dedicated cancel task exists precisely to
avoid that, so the fix keeps it and makes it precise instead.

cargo test -p external_websocket_sync: 56 passed.
cargo check -p zed --features external_websocket_sync: clean.
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