- Detect bun crash exits (signals 132-139) and retry up to MAX_CHUNK_ATTEMPTS in a fresh heap.
- Add `retries` field to ChunkOutcome and surface crash retries in progress output.
- Fix test assertion expecting `stopReason: "aborted"` to use `toolUse` (aborted turns are dropped from context).
- omp update's getBinaryName now detects a musl Linux host (Alpine release file or /lib/ld-musl-* loader, mirroring scripts/install.sh) and downloads omp-linux-musl-<arch>, so self-update no longer replaces a musl install with the glibc build.
- Updated musl-release dry-run assertions to the Bun.build output format the binaries script now emits; promoted the musl changelog entry to [Unreleased].
Recording fingerprints for bullets the model preserved verbatim made the
next runChangelogFixer pass (release.ts step 5) treat the still-valid
Unreleased bullet as already consumed and drop it from the release notes.
Record after applyRewrite and skip items whose exact text survives in the
rewritten section; add a verbatim-keep regression.
The default install path only checked whether bun existed, so an
x86_64 bun running under Rosetta installed an x86_64 omp on Apple
Silicon (AVX warning, ~11s startup). Compare bun's process.arch to
the host, detecting Apple Silicon via `sysctl -in hw.optional.arm64`
so Rosetta can't spoof it, and fall back to the prebuilt native
binary on mismatch; `--source` now errors actionably. install_binary
also derives the arch from the real host instead of the
Rosetta-translated `uname -m`.
Fixes#6268
- Recorded source-item SHA-256 fingerprints before changelog summarization.
- Used provenance fingerprints during normal and recovery deduplication so stale original wording cannot be released again.
- Added regression coverage for a stale merge after summarized wording replaced the source bullet.
Fixes#6157
- Added the `xd://` virtual device protocol (`internal-urls/xd-protocol.ts`, `tools/xdev.ts`): tools declaring `loadMode: "discoverable"` are unmounted from the request tools array and driven via `read xd://` (list/docs+schema) and `write xd://<tool>` (execute), gated by the `tools.xdev` setting (default on) and inlined into the system prompt.
- Merged the `irc`, `job`, and `launch` tools into a single `hub` tool (`tools/hub/`, `async/job-manager.ts`): messaging keeps `send`/`inbox`/`list`, job control maps to `wait`/`cancel`/`jobs`, process supervision keeps `start`/`logs`/`stop`/`restart`/`describe` with `ps`, and the unified `wait` races background jobs against peer messages; SDK `IrcTool`/`JobTool`/`LaunchTool` are replaced by `HubTool`.
- Removed the hidden `resolve` tool in favor of the `xd://resolve`/`xd://reject`/`xd://propose` resolution devices, auto-including `write` whenever a deferrable tool or plan mode is present.
- Removed the BM25 tool-discovery system: the `search_tool_bm25` tool, the `tool-discovery` module, the `tools.discoveryMode`/`mcp.discoveryMode`/`mcp.discoveryDefaultServers`/`tools.essentialOverride` settings, per-tool MCP selection, and the `mcp_tool_selection` message type.
- Unified tool presentation on `ToolLoadMode` (`essential`|`discoverable`), replacing the custom-tool `xdev?: boolean` opt-out; custom, extension, MCP, RPC host, image-generation, and TTS tools now default to `discoverable`, and added a `satisfies` predicate to `SoftToolRequirement`.
- Removed the standalone `ssh` command tool and `ssh/ssh-executor` (the `ssh://` read/write/search protocol stays), and made `--tools` address hidden built-ins.
- Updated collab-web to render `xd://` dispatches and `hub` op families, dropped the `search_tool_bm25`/`ssh`/`report-finding` renderers, refreshed tool docs and prompts, and migrated the affected tests and changelogs.
- Initialized in-memory settings in the repro issue test by resetting settings before theme setup.
- Reduced the UI/TUI CI test bucket chunk size from 10 to 5 to avoid cumulative Bun GC heap aborts.
- Standardized `fastembed` and `onnxruntime-node` as external dependencies for all compiled binaries.
- Removed manual exclusion logic from individual build scripts in favor of a centralized configuration.
- Updated release build dry-run output to reflect consistent external dependency handling.
Fixes#5195
- Implemented a regex-based utility to extract and clean bash commands from tool call logs.
- Introduced an exclusion set to filter non-utility tokens from command analysis.
- Optimized the command reporting logic to produce more accurate utility usage statistics.
- Built the generic Windows release binary with Bun's baseline x64 runtime so older Windows 10 CPUs do not hit the AVX2-only modern executable.
- Forced pi-natives release builds to link PCRE2 statically so macOS installs do not depend on Homebrew's libpcre2 dylib.
- Added release dry-run and native-build regression coverage for the portable artifact contracts.
Fixes#5172
- Introduced `Max` as a first-class reasoning effort tier across all packages, including AI providers, coding agent configurations, and RPC protocols.
- Refactored model effort ladders to use wire-exact mappings and removed legacy effort aliasing (e.g., `max-to-xhigh` mapping).
- Updated model registry and provider configurations to support `Max` tier routing, color themes, and UI icon associations.
- Expanded test suites to provide end-to-end coverage for the new reasoning tier, including updated compatibility and fallback scenarios.
- Added scripts/fix-dts-extensions.test.ts to the test:scripts npm script.
- Included the .d.ts extension rewrite test in the CI workspace test suite.
- Updated repoScriptTests list in scripts/ci-test-ts.ts to ensure consistent tracking.
The declaration emit runs under moduleResolution: Bundler, so published .d.ts carried extensionless relative specifiers (export * from "./sdk") that a node16/nodenext consumer can't resolve — the package root failed with TS2834/TS2305. The publish pipeline now rewrites emitted relative specifiers to explicit .js across every package's dist/types.
Co-Authored-By: seal <noreply@sealedsecurity.com>
- Extracted failure formatting logic into a reusable `formatChunkFailure` function.
- Updated quiet mode to display detailed failure output immediately when a test chunk fails.
- Adjusted final failure summary to improve output readability and conditional flow.
- Added a per-chunk watchdog that terminates wedged test processes with SIGKILL after a configurable timeout.
- Implemented incremental stream draining to capture test output even when a process is forcibly killed.
- Stabilized test execution by forcing single-threaded GC markers (`BUN_JSC_numberOfGCMarkers=1`) to prevent segmentation faults during heap-heavy operations.
The GitHub API and binary download calls in `install_binary()` (`scripts/install.sh`) and `Install-Binary` (`scripts/install.ps1`) could hang indefinitely on stalled connections. Added curl `--connect-timeout`/`--max-time` to the release metadata calls and `--connect-timeout`/`--speed-limit`/`--speed-time` to the binary download, plus `-TimeoutSec` to the PowerShell `Invoke-RestMethod`/`Invoke-WebRequest` calls. Verified `bash -n scripts/install.sh` passes; no TypeScript typecheck is affected.
Closes#4253
- Replaced the non-existent `ci-test-ts.test.ts` with the active `link-omp.test.ts` in `package.json` and `ci-test-ts.ts`.
- Documented that the invalid test path was previously ignored silently by the bun test runner.
- Bumped the collaborative protocol version (`COLLAB_PROTO`) from 2 to 3.
- Required protocol-3 to coordinate `ui-request`, `ui-request-end`, and `ui-response` frames.
- Rejected older protocol-2 guests at handshake to prevent host-asked requests from hanging.
- Updated verification tests and CI installation check scripts to expect protocol version 3.
- Added `scripts/**/*.ts` to the linter and formatter inclusion list in `biome.json`.
- Replaced manual array index searches with standard `indexOf` operations.
- Cleaned up unused variables, obsolete helpers, and command-line flags.
- Applied consistent formatting and code style across tooling scripts.
- Refactored `formatProgressLine` to display passes and failures in the visual style of `bun test` including elapsed time.
- Implemented `extractFailingTests` to parse individual test failures and their raw output details out of captured stdout/stderr.
- Added a `formatSummaryFooter` to output a clean concluding tally of passed/failed chunks and the total wall time.
- Added `local` and `local-ts` modes to `ci-test-ts.ts` to coordinate full local runs of TypeScript and Rust packages in a single progress stream.
- Implemented a quiet output formatter that displays a one-line progress entry and defers verbose output until failure.
- Included previously skipped workspace packages `packages/mnemopi` and `python/robomp/web` in the local testing scope.
- Configured colorized ANSI formatting for progress logs when running in interactive TTY terminals.
- Bound repo-level scripts and rust task orchestration command under the consolidated runner.
- Added the Transformers.js version define to release-built binaries.
- Covered the release dry-run command so Homebrew assets keep the tiny runtime pin.
Fixes#3904
- Added `recoverSectionPathFromTag` to reconcile bare or mismatched `[basename#tag]` paths using existing session snapshots.
- Implemented `readSectionForPreview` to fallback to recovered file paths when the authored path is absent.
- Updated `computeHashlineSectionDiff` to use the path recovery logic during preview content acquisition.
- Removed obsolete regression test file `issue-1765-repro.test.ts`.
- Added a worker pool mechanism to run independent test chunks concurrently in local environments.
- Introduced `OMP_TEST_CONCURRENCY` to allow manual control over parallel worker counts.
- Retained sequential, fail-fast execution for CI environments to ensure stability within memory-constrained runner jobs.
- Consolidated environment variable scrubbing into a shared helper function.
- Added logic to automatically calculate versions based on major, minor, or patch keywords.
- Updated the release script input validation to accept semantic bumps in addition to explicit version strings.
- Improved version parsing by adding radix parameters to integer conversion.
The root `setup` script used `ln -sfn ... "$(bun pm -g bin)/omp"`. On
fresh hosts where `$HOME/.bun/install/global/package.json` is missing
`bun pm -g bin` aborts with "No package.json was found", the command
substitution expands to empty, and `ln` tries to write `/omp` —
failing with `Permission denied` (or, on a writable filesystem,
silently linking under `/`).
Move the logic into `scripts/link-omp.sh`:
- Capture `bun pm -g bin` and ignore its failure.
- Fall back to `${BUN_INSTALL:-$HOME/.bun}/bin`, matching Bun's own
install convention.
- `mkdir -p` the target so the link works even when nothing has yet
populated the global bin dir.
Fixes#3701
- Added `rewrite-changelog.ts` and `fix-changelogs.ts` utilities to automate the consolidation of release notes using LLM-assisted processing.
- Updated multiple internal changelog files by consolidating redundant entries and improving phrasing for readability.
- Implemented `previewLine` utility in `coding-agent` to prevent visual spillover in status rows by managing text truncation and whitespace.
- Updated `package.json` with new workflow scripts for managing package-level change histories and documentation indexes.