Commit Graph

27695 Commits

Author SHA1 Message Date
brokemac79
f4be39c4f4 fix(providers): read nested llama cpp props context 2026-05-11 13:16:06 +01:00
brokemac79
7c7d19ec84 fix(providers): use llama.cpp runtime context cap 2026-05-11 13:16:06 +01:00
brokemac79
ccdaf1875a fix(doctor): tolerate malformed crontab output (#78112)
Fixes #77773.

Co-authored-by: brokemac79 <martin_cleary@yahoo.co.uk>
2026-05-11 13:15:57 +01:00
Peter Steinberger
a57691cdcb test: tighten gateway websocket assertions 2026-05-11 13:15:45 +01:00
Shakker
75b745d559 test: assert scheduled task command parsing 2026-05-11 13:14:29 +01:00
Peter Steinberger
db9549c46f test: tighten gateway role assertions 2026-05-11 13:13:30 +01:00
Shakker
9c37951435 test: assert service audit issues 2026-05-11 13:13:14 +01:00
Peter Steinberger
c4ed66c58b test: tighten gateway misc assertions 2026-05-11 13:12:01 +01:00
Shakker
0c50714a03 test: assert approval bootstrap retry warning 2026-05-11 13:11:45 +01:00
Shakker
945fcc10fd test: assert runtime guard diagnostics 2026-05-11 13:10:53 +01:00
Peter Steinberger
d932d89778 test: tighten session store rpc assertions 2026-05-11 13:10:18 +01:00
Shakker
fbaac02823 test: assert windows task restart spawn 2026-05-11 13:09:59 +01:00
Val Alexander
342ae551ae fix(logging): reduce active-only liveness noise
Summary:
- Reduce active-only diagnostic liveness noise by emitting transient event-loop max delay samples as info-level telemetry.
- Keep warnings for queued or waiting work and for sustained high P99 loop delay.
- Cover the active-only path in the diagnostic stability tests and changelog.

Verification:
- pnpm format:check src/logging/diagnostic-stability.ts src/logging/diagnostic.test.ts CHANGELOG.md
- pnpm test src/logging/diagnostic.test.ts
- pnpm check:changed
- GitHub PR checks passed on head 25e674fe41.
2026-05-11 07:09:12 -05:00
Peter Steinberger
35827b7dbb test: tighten gateway discovery assertions 2026-05-11 13:09:06 +01:00
Shakker
f7d68cf435 test: assert channel allowlist warnings 2026-05-11 13:08:43 +01:00
Peter Steinberger
4bfdb6ef30 test: tighten gateway health assertions 2026-05-11 13:07:15 +01:00
Lior Balmas
b94919ab1b test(gateway): isolate Fly env container checks 2026-05-11 13:06:49 +01:00
Lior Balmas
0f8fc6bb61 fix(runtime): detect Fly Machines as containers 2026-05-11 13:06:49 +01:00
Shakker
9bb7f220c9 test: assert daemon config guard json 2026-05-11 13:06:23 +01:00
Peter Steinberger
1f49d34c5f fix(gateway): preserve batched client tool calls 2026-05-11 13:06:05 +01:00
Lellansin
0e6aca34db fix(gateway): align OpenAI chat completions tool protocol
fix(gateway): remove unnecessary type assertion in buildAgentPrompt

fix(gateway): reject unsupported forced tool_choice modes

tool_choice=required and named function tool_choice are now rejected
with invalid_request_error until hard enforcement is implemented
at the agent runtime layer. Only auto and none remain supported.

docs: update Chat Completions tool_choice contract to match rejection behavior

Only auto and none are currently accepted; required and named
function tool_choice are rejected until hard enforcement exists.
2026-05-11 13:06:05 +01:00
Peter Steinberger
efbc550dc9 test: tighten gateway helper assertions 2026-05-11 13:05:47 +01:00
Peter Steinberger
26ac5a3596 test: tighten assistant identity assertions 2026-05-11 13:04:24 +01:00
Peter Steinberger
e6b0b37e3f test: tighten websocket log assertions 2026-05-11 13:02:51 +01:00
Shakker
1d5785ba85 test: assert gateway restart handoffs 2026-05-11 13:02:47 +01:00
samzong
c1b29bf5db fix(gateway): scope session resolve store loads 2026-05-11 13:02:42 +01:00
Peter Steinberger
776c39b00c test: tighten gateway readiness assertions 2026-05-11 13:01:23 +01:00
Shakker
8f1e6ab13c test: assert config write warnings 2026-05-11 13:00:44 +01:00
Peter Steinberger
e8dc492cb0 test: tighten gateway runtime assertions 2026-05-11 12:59:51 +01:00
Peter Steinberger
8d6bef0de1 test: tighten session create assertions 2026-05-11 12:58:08 +01:00
Shakker
a62b8c77a4 test: assert followup collect prompts 2026-05-11 12:57:48 +01:00
Peter Steinberger
96c2502bfb test: tighten gateway startup assertions 2026-05-11 12:56:28 +01:00
Shakker
51ad59ea0c test: assert acp ledger replay order 2026-05-11 12:55:19 +01:00
Peter Steinberger
a199ddf995 test: tighten gateway response assertions 2026-05-11 12:54:28 +01:00
Shakker
85d5718236 test: assert cli startup routing 2026-05-11 12:52:39 +01:00
Peter Steinberger
3c1d8bbc09 test: tighten shared auth rotation assertions 2026-05-11 12:51:41 +01:00
Shakker
1eb42c68d9 test: assert completion cache writes 2026-05-11 12:50:46 +01:00
Peter Steinberger
7a6dbffa05 test: tighten gateway auth path assertions 2026-05-11 12:49:55 +01:00
Peter Steinberger
a85c7936e9 test: tighten node pending work assertions 2026-05-11 12:48:31 +01:00
Shakker
c7016bf988 test: assert update cli errors 2026-05-11 12:47:36 +01:00
Peter Steinberger
5f0449d3f3 test: tighten client bootstrap assertions 2026-05-11 12:47:25 +01:00
Shakker
cffe71e2ba test: assert legacy sender warnings 2026-05-11 12:46:02 +01:00
Peter Steinberger
d26bc48ae7 test: tighten models http assertions 2026-05-11 12:45:55 +01:00
Peter Steinberger
5da239473c fix(sessions): stream transcript reverse scans 2026-05-11 12:44:59 +01:00
jack-stormentswe
9654239af9 fix(sessions): stream JSONL transcript scans instead of buffering whole files (#54296)
The remaining whole-file transcript scans flagged by ClawSweeper triage on
splitting on newlines. On long-running sessions where transcripts grow into
the multi-MB / 100s-of-MB range that scales peak RSS with file size and is
the practical OOM risk in the report.

Add a shared streaming helper module `src/config/sessions/transcript-stream.ts`
exposing:

- `streamSessionTranscriptLines(filePath, { signal? })`: forward async-iterator
  over trimmed non-empty lines using `fs.createReadStream` + `readline` with
  `crlfDelay: Infinity`. Bounded to one line of memory at a time and honours
  an abort signal between lines.
- `readSessionTranscriptTailLines(filePath, { maxBytes? })`: tail-only read of
  the last `maxBytes` of a file (default 4 MiB, clamped to [1 KiB, 64 MiB]),
  returning trimmed non-empty lines in reverse order. Drops the leading line
  of the slice when the window does not start at byte zero so callers never
  see a partial-line suffix.

Migrate every flagged whole-file scan to these helpers while preserving the
malformed-line tolerance and idempotency-key return semantics callers depend
on (see `Remaining risk / open question` on the issue):

- `src/config/sessions/transcript.ts`: `readLatestAssistantTextFromSessionTranscript`,
  `readTailAssistantTextFromSessionTranscript`, and the delivery-mirror dedupe
  helper `findLatestEquivalentAssistantMessageId` now use the tail helper;
  `transcriptHasIdempotencyKey` uses the forward stream helper.
- `src/gateway/server-methods/chat.ts`: the inline `transcriptHasIdempotencyKey`
  used by chat-method append idempotency now uses the forward stream helper
  and tolerates malformed lines mid-scan (matching the sibling helper in
  `config/sessions/transcript.ts`).
- `src/gateway/session-compaction-checkpoints.ts`: `readTranscriptEntriesForForkAsync`
  builds the fork entry array from the forward stream helper instead of one
  big `fileHandle.readFile("utf-8")` call.

Fixes #54296.
2026-05-11 12:44:59 +01:00
Shakker
69c2bc58fa test: assert cron model diagnostics 2026-05-11 12:44:21 +01:00
Kaspre
775a24e57c fix(doctor): warn when per-agent model omits fallbacks key and defaults chain is non-empty (#79826)
* fix(doctor): warn when per-agent model omits fallbacks key and defaults chain is non-empty

`resolveAgentModelFallbacksOverride` in `src/agents/agent-scope.ts` returns
`[]` (no fallbacks) when a per-agent model is configured without an explicit
`fallbacks` key. At runtime this silently clobbers
`agents.defaults.model.fallbacks`, leaving the agent with no fallbacks.

Two config patterns hit this:

1. String form: `"model": "openai/gpt-5.5"` — user likely means "use this model,
   inherit fallbacks from defaults".
2. Object without `fallbacks` key: `"model": { "primary": "openai/gpt-5.5" }` —
   user likely means "just set the primary, keep defaults fallbacks".

The only explicit "no fallbacks" signal is `fallbacks: []`. This change adds
`collectImplicitFallbackClobberWarnings` / `noteImplicitFallbackClobberWarnings`
to the doctor config-analysis flow, which warns on either ambiguous shape only
when `agents.defaults.model.fallbacks` is non-empty (so there is something to
clobber).

No semantic change to how fallbacks resolve; this is a doctor-only diagnostic.

Closes #79369. Extends the scope of closed PR #79389 (string-form only) to
also cover the object-without-fallbacks case.

* fix(doctor): mirror runtime model primary normalization

* fix(doctor): strengthen fallback warning proof

* fix(doctor): tolerate malformed agent lists

* fix(doctor): type guarded agent runtime policy

* fix(ui): sync quick settings i18n baseline

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-05-11 12:43:51 +01:00
Peter Steinberger
9c736af39d test: tighten session cost usage assertions 2026-05-11 12:43:05 +01:00
Shakker
2d73d59905 test: assert cron store loads 2026-05-11 12:41:55 +01:00
pashpashpash
2846d9ea56 test: type acp cli option mock assertions 2026-05-11 12:41:21 +01:00