Commit Graph

15763 Commits

Author SHA1 Message Date
can1357 8facd237d5 feat(build): migrated native pipeline to bazel with remote caching
- Replaced the napi-cli/cargo-zigbuild/cargo-xwin/sccache build path with
  Bazel: rules_rust + crate_universe over Cargo.lock, hermetic zig cc
  toolchains (linux-gnu pinned to glibc 2.17, linux-musl), host Xcode for
  darwin, and a repo-local hermetic clang-cl + llvm-ml + xwin toolchain for
  windows-msvc (bazel/toolchains/msvc).
- All eight shipped addons build as //:natives-<target> via the release
  transition in bazel/defs.bzl (opt, thin LTO, cgu=16, stripped, canonical
  .node naming); scripts/bazel-natives.ts is the single driver for local
  dev and CI.
- Rust validation moved to bazel test + clippy aspects (strict workspace
  policy for opted-in crates, default lints elsewhere, mirroring cargo
  semantics) and the rustfmt aspect; cargo stays as the dev-iteration
  surface, with brush-core/brush-builtins promoted to workspace members
  and excluded from cargo dev tasks to keep their historical scope.
- CI caches through an in-cluster bazel-remote action cache (TLS + basic
  auth, cluster-internal only); GitHub-hosted runners never touch the
  infrastructure and use an actions/cache-backed disk cache instead.
- Deleted the hand-rolled caching machinery: ci-target-cache,
  ci-native-artifact-cache, ci-build-native, native-source-hash,
  find-native-artifacts, restore-linux-native, native-prewarm workflow,
  ensure-* toolchain actions, and all sccache/Swatinem wiring.
- Warm native rebuilds drop from ~20 minutes to seconds; a cold client
  with a warm remote cache rebuilds the linux x64 pair in ~2.5 minutes.
2026-07-27 12:22:19 +02:00
can1357 5f988a8270 ci: configured native artifact caching and parallel execution in ci workflows
- Enhanced CI workflows and GitHub actions to support native artifact caching and parallel builds.
- Added composite actions and scripts for computing sources, finding artifacts, and managing caches.
- Updated infrastructure documentation and runner deployment scripts with revised resource limits.
2026-07-27 07:53:28 +02:00
can1357 4eb94125b2 fix(coding-agent/eval): filtered internal runner frames from python cell error tracebacks
- Filter out runner-internal frames from runtime exception tracebacks to start at user code.
- Omit full tracebacks for cell syntax errors to render only the caret display with `<cell>` filename.
2026-07-27 07:28:22 +02:00
can1357 a9b7df8821 feat(python): implemented host tool event normalization and error checks
- Added `_normalize_host_tool_event` to `RpcClient` to remap transport tool events to executed host tools.
- Updated worker tool-end handling to verify `is_error` is false before marking terminal actions complete.
- Added test coverage in `test_client.py` and `test_worker.py` for host tool event normalization and errored review submission behavior.
2026-07-27 07:11:18 +02:00
can1357 0388946e85 feat(coding-agent/task): added task.enableEffort setting to gate effort parameter
- Introduce task.enableEffort setting defaulting to false to hide per-spawn effort parameters.
- Conditionally include effort in single and batch task schemas and descriptions based on the new setting.
2026-07-27 07:01:09 +02:00
can1357 d1239fd3e5 test(ai): deterministically refreshed broker snapshot before asserting healed block
- The broker heals its store synchronously while serving /v1/usage, but the
  remote client snapshot only converges via the background long-poll; the
  assertion raced that poll and flaked on slow CI runners.
- Pull one explicit snapshot after fetchUsageReports, matching the sibling
  same-deadline re-upsert test.
2026-07-27 06:26:25 +02:00
roboomp b351c8e467 fix(natives): surfaced sort worker panic instead of silent truncation
Returning end-of-input from chunks::read on a disconnected receiver
also masked a panicking ext_sort sorter thread (comparator or Rayon
panic in sort_by), letting sort exit 0 with truncated or empty output.
Retain the sorter JoinHandle and join it after read_write_loop, mapping
a thread panic to an error; drop the sorted-chunk receiver first so a
still-running sorter unblocks instead of deadlocking the join. Added an
external multi-chunk sort test covering the spill-to-files join path.

Fixes #6736
2026-07-27 06:04:06 +02:00
can1357 972ddb4e5e fix(edit): reduced hashline failures for weak models
- Added actionable reversed-range and block-anchor diagnostics.
- Accepted unambiguous single-dot ranges and routed affected models to replace mode.
- Preserved edit safety checks and added regression coverage.

Fixes #6671
2026-07-27 05:57:12 +02:00
can1357 7d3f9d382c chore: bump version to 17.1.5 2026-07-27 05:30:59 +02:00
can1357 31457c3798 Merge PR #6760: fix(natives): stopped sort panicking on disconnected receiver (@roboomp) 2026-07-27 05:29:14 +02:00
can1357 e0c9ce046c fix(catalog): normalized anthropic discovery base url to /v1/models
- anthropicModelManagerOptions accepted the registry-derived base URL verbatim; bundled rows without the /v1 suffix made discovery request https://api.anthropic.com/models (404), so a stale text-only cache row stayed authoritative over fresh models.dev vision metadata and snapcompact refused to run on claude-opus-5.
- Discovery now always targets /v1/models via toAnthropicDiscoveryBaseUrl while model rows keep the provider base URL, mirroring createSimpleAnthropicProviderOptions.
- Added issue repro test covering the bare-host base URL shape.

Fixes #6563
2026-07-27 05:27:27 +02:00
can1357 905fb283df Merge PR #6724: feat(live): add selectable voice setting (@roboomp) 2026-07-27 05:26:35 +02:00
roboomp a67a1db52d fix(natives): stopped sort panicking on disconnected chunk receiver
The vendored uu-sort reader unwrapped the chunk-channel send at
chunks.rs:248, panicking with `SendError(..)` whenever the receiver
disconnected early (a consumer thread stopping after an error or a
closed output). Diverge from upstream: on a failed send, stop reading
gracefully and report end-of-input, matching the pattern already used
by the sorter thread. Added a regression test that drives read against
a dropped receiver.

Fixes #6736
2026-07-27 03:23:40 +00:00
can1357 4d4fe75188 chore: bump models 2026-07-27 05:23:03 +02:00
can1357 e21f7c18ea feat(python/omp-rpc): added blocker field and blocked status to todo items
- Add blocked todo status and optional blocker attribute to todo items.
- Update RPC client and worker serialization logic to support todo blockers.
- Add test coverage for parsing session state with blocked todos.
2026-07-27 05:22:10 +02:00
can1357 d32545874d fix(catalog): declared signingEndpoint on spec-level AnthropicCompat
- Runtime already honored spec compat signingEndpoint via applyCompatOverrides and generated models.json emits it; the spec interface never declared it, breaking typecheck for explicit opaque-proxy overrides (#6717 remediation path).
- Moved the resolved-view doc onto the spec field; ResolvedAnthropicCompat keeps only officialEndpoint as resolved-exclusive.
2026-07-27 05:03:29 +02:00
can1357 733f20d963 style: formatted scheduleAgentContinue signature per biome 2026-07-27 05:00:25 +02:00
can1357 b3612324a6 chore: normalized changelog sections after merging community fixes 2026-07-27 05:00:04 +02:00
can1357 12a2b13e93 fix(session): unwedged auto-retry after assistant-tail removal miss
A context rebuild that recreated the failed turn's message object made the
identity-keyed active-context removal miss, so the scheduled retry
continuation rejected the terminal assistant error message locally
("Cannot continue from message role: assistant") before any provider
request. auto_retry_end never fired, retryPromise stayed pending, and the
in-flight prompt() plus the TUI retry indicator hung until a manual
follow-up.

The retry path now strips a still-failed assistant tail positionally after
the backoff (generation-guarded, never in preserveFailedTurn mode), and a
continuation that still fails locally closes the retry saga with a failed
auto_retry_end via the new scheduleAgentContinue onError hook.

Fixes #5382
2026-07-27 04:59:31 +02:00
can1357 a5807b6ecb Merge PR #3773: fix(agent): exclude MiMo from hashline edits (@roboomp) 2026-07-27 04:59:26 +02:00
can1357 4e8a91e95e Merge PR #6725: fix(shell): implement native Windows stat builtin (@roboomp) 2026-07-27 04:59:25 +02:00
can1357 a988e5ebbd Merge PR #6714: fix(snapcompact): report all foveated frame widths (@roboomp) 2026-07-27 04:59:25 +02:00
can1357 e2ed58d4d5 Merge PR #4168: fix(inspect-image): bounded per-request timeout on the vision-model call (@roboomp)
# Conflicts:
#	packages/coding-agent/src/config/settings-schema.ts
2026-07-27 04:59:19 +02:00
can1357 c4a1fabb8f fix(launch): kept log append queue alive after a failed read snapshot 2026-07-27 04:58:29 +02:00
can1357 dccf0d3c8a Merge PR #6748: perf(launch): isolate PTY replay in broker (@usr-bin-roygbiv) 2026-07-27 04:58:28 +02:00
can1357 94069484ce Merge PR #6749: perf(coding-agent): load changelog asset on demand (@usr-bin-roygbiv) 2026-07-27 04:58:28 +02:00
can1357 60a045d9a5 fix(coding-agent): canonicalized legacy AST rewrite temp root
The rewrite pipeline realpaths resolved dependency paths, so the expected
specifiers must be built from the canonical temp root (macOS /var vs
/private/var symlink).
2026-07-27 04:58:28 +02:00
can1357 dc038b838e Merge PR #6747: perf(coding-agent): replace legacy Babel traversal (@usr-bin-roygbiv) 2026-07-27 04:58:28 +02:00
can1357 73a3fe6983 Merge PR #6745: perf: lazily construct models config schema (@usr-bin-roygbiv) 2026-07-27 04:58:28 +02:00
can1357 48a4f1b1e6 Merge PR #6742: perf(coding-agent): lazily construct computer schema (@usr-bin-roygbiv) 2026-07-27 04:58:27 +02:00
can1357 1dbf51bf25 Merge PR #6743: perf(coding-agent): avoid unused compact tool metadata (@usr-bin-roygbiv) 2026-07-27 04:58:27 +02:00
can1357 e07db86f2d Merge PR #6670: fix(mcp): map mounted tools to xd routes (@jeffscottward) 2026-07-27 04:58:27 +02:00
can1357 c2e07a2028 fix(tui): remounted guarded draft editor when ask surface is restored
A failed async submission can restore the draft while a nested ask prompt
(note/custom answer) is open, re-blocking the input guard; restoreAskDialog
mounted only the ask component, routing guarded input to an unmounted
editor. Restore now mirrors the initial presentation and remounts the
draft editor whenever the guard exists.
2026-07-27 04:58:27 +02:00
can1357 2760158420 Merge PR #6738: fix(tui): preserve prompt input while ask opens (@roboomp) 2026-07-27 04:58:27 +02:00
can1357 67931badca Merge PR #6719: fix(coding-agent): handle asynchronous LSP pipe failures (@shoucandanghehe) 2026-07-27 04:58:27 +02:00
can1357 02e3567c3b Merge PR #6728: fix(coding-agent): prefer auth in deferred model resolution (@roboomp) 2026-07-27 04:58:26 +02:00
can1357 58cdd98dec fix(test): compared canonical paths in cross-project resume cwd assertion
process.cwd() reports the physical path (/private/var/... on macOS) while
mkdtemp fixtures keep the /var symlink form; normalized both sides so the
runRootCommand cross-project resume regression passes on darwin.
2026-07-27 04:58:26 +02:00
can1357 fdadadefff Merge PR #6753: fix(cli): resume cross-directory sessions in place (@roboomp) 2026-07-27 04:58:26 +02:00
can1357 b849a4503f fix(coding-agent): kept encoded glob metacharacters literal in memory glob suffixes 2026-07-27 04:58:26 +02:00
can1357 bf8e07ae1b Merge PR #6733: fix(coding-agent): safely glob memory directories (@usr-bin-roygbiv) 2026-07-27 04:58:26 +02:00
can1357 03d9b7f048 fix(coding-agent): canonicalized config paths in failure-safety test injections
The lock-race and EPERM regression tests compared injection predicates
against the uncanonicalized temp config path, but the atomic writer
resolves it via realpath; on macOS /var -> /private/var made the mocks
never fire and both tests failed. Compared against the realpath instead.
2026-07-27 04:58:26 +02:00
can1357 4aa5d0b6b2 Merge PR #6726: fix(coding-agent): prevented invalid configs from being overwritten (@Ant39140) 2026-07-27 04:58:25 +02:00
can1357 350cc6c0d1 perf(catalog): skipped global reference enrichment on provider-local hits 2026-07-27 04:58:25 +02:00
can1357 d64eba7187 Merge PR #6746: perf(catalog): lazily materialize provider models (@usr-bin-roygbiv) 2026-07-27 04:58:25 +02:00
can1357 a83ab0dddc Merge PR #6713: fix(catalog): derive kimi-code output caps per family (@roboomp) 2026-07-27 04:58:25 +02:00
can1357 b485b902ab Merge PR #6645: fix(ai): avoid OAuth barrel import cycle (@usr-bin-roygbiv) 2026-07-27 04:58:25 +02:00
can1357 d7ce99b907 Merge PR #6744: perf(ai): lazily construct auth broker wire schemas (@usr-bin-roygbiv) 2026-07-27 04:58:25 +02:00
can1357 4be05b373a Merge PR #6722: fix(auth-broker): revalidate fresh snapshot caches (@Git-on-my-level) 2026-07-27 04:58:25 +02:00
can1357 679d26a71f Merge PR #6721: fix(ai): preserve Kimi Code cache affinity (@usr-bin-roygbiv) 2026-07-27 04:58:24 +02:00
can1357 955ee4ce34 fix(ai): honored non-official compat signing classification for interleaved beta
Provider ids (ZenMux mirrors) and explicit compat.signingEndpoint spec
overrides on opaque proxies now qualify alongside URL-recognized signing
routes; stale-official compat and the Vertex/Copilot header exclusions
are preserved (#6717).
2026-07-27 04:58:24 +02:00