Skip to content

Fix: add missing upstream dependencies breaking main#3

Merged
Patrick-Erichsen merged 2 commits into
mainfrom
fix/missing-upstream-deps
Mar 20, 2026
Merged

Fix: add missing upstream dependencies breaking main#3
Patrick-Erichsen merged 2 commits into
mainfrom
fix/missing-upstream-deps

Conversation

@Patrick-Erichsen
Copy link
Copy Markdown

Summary

Context

PR #1 merged telemetry removal code that references these upstream changes, but the changes themselves were never brought into main, causing build failures.

Test plan

  • tsc --noEmit passes in core and gui

🤖 Generated with Claude Code

amabito and others added 2 commits March 19, 2026 17:00
…nuedev#10551)

* refactor: unify AbortError detection with isAbortError utility

AbortError detection was scattered across 3+ patterns (string
comparison, .name check, .code check). Consolidates into a single
isAbortError() utility that handles all known patterns: "cancel"
string, DOMException, Error.name variants, ABORT_ERR code, and
plain objects. Updates call sites in core/llm/index.ts and
core/llm/utils/retry.ts.

* fix: use exact match for AbortError name, add null guard, improve tests

- Changed .includes("AbortError") to === "AbortError" to preserve
  original exact-match semantics at L505 and retry.ts call sites
- Added null/undefined early return to prevent TypeError on
  "name" in null
- Unified DOMException branch to use exact match consistently
- Tests: removed 4 redundant same-branch duplicates, added 12 new
  cases (case sensitivity, empty string, non-string name, partial
  name boundary, DOMException negative, plain object code asymmetry,
  boolean, frozen object, Error subclass, TypeError)
- Fixed DOMException test skip from expect(true).toBe(true) to
  it.skipIf

* fix: replace == null with === null || === undefined (eqeqeq)

---------

Co-authored-by: amabito <192487536+amabito@users.noreply.github.com>
Co-authored-by: amabito <amabito@local>
…sage path (continuedev#10485)

fix: harden system message tools instructions and wire toolOverrides to system message path

The system message tools path (used when models don't support native tool
calling) had two issues:

1. Weak format instructions - the prefix/suffix used vague prose that local
   models often ignored, reverting to XML or JSON tool call formats from
   their training priors. Replaced with explicit numbered rules that
   prohibit alternative formats.

2. toolOverrides silently ignored - applyToolOverrides() existed and ran on
   the native tools path (in BaseLLM.streamChat), but was never called on
   the system message path. Config YAML toolOverrides for disabled and
   description had no effect when tools were injected via system message.

Fixed by:
- Strengthening systemMessagePrefix/Suffix in toolCodeblocks framework
- Adding toolOverrides to ModelDescription interface and serialization
- Calling applyToolOverrides() in streamNormalInput before both paths

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
@Patrick-Erichsen Patrick-Erichsen merged commit 62773b8 into main Mar 20, 2026
33 of 36 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants