Skip to content

Commit c8defff

Browse files
committed
Merge remote-tracking branch 'origin/main' into cl-6926-remove-the-sub-agent-maxturns-hard-cap-of-100
2 parents 542fa01 + 127a8fa commit c8defff

2 files changed

Lines changed: 73 additions & 4 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 72 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ matching `## [X.Y.Z]` section (plus install instructions). Do not maintain
1111
parallel copies under `docs/` or `scripts/notes/`. At cut time: rename
1212
`## [Unreleased]` to `## [X.Y.Z] - YYYY-MM-DD`, then run the release script.
1313

14-
## [Unreleased]
14+
## [0.2.104] - 2026-08-23
1515

1616
### Sub-agents
1717

@@ -29,12 +29,81 @@ parallel copies under `docs/` or `scripts/notes/`. At cut time: rename
2929
unchanged. Assistant mid-turn text continues to grow the open streaming
3030
assistant row from `inference.text.delta`.
3131

32-
### Fixed
32+
- **Live agents sit in a chrome strip above the prompt.** Running and
33+
finished workers no longer compete with the transcript for vertical
34+
space; the strip stays parked over the input, finished rows linger
35+
briefly, then it clears when idle. Transcript task-row rewrites pause
36+
while the strip owns live status.
37+
38+
### Tools
39+
40+
- **`edit_file` filler args no longer count as a second mode.** Models pad
41+
the unused mode with `start_line: 0` / `end_line: 0` / `old_string: ""`.
42+
Those now count as absent, so substring vs line-range is chosen from the
43+
real fields. Mixed-mode calls still reject, and the error names exactly
44+
which fields to drop so a retry can differ.
45+
46+
- **`task` rejections name only the missing field.** A typed brief that
47+
omitted `prompt` used to be told both `description` and `prompt` were
48+
required, so the model retried the identical call. The error now names
49+
the actual gap and echoes the valid field back.
50+
51+
- **Truncation no longer promises a retrievable remainder.** Tool results
52+
cut at 80,000 chars now say the discarded tail is gone and re-running
53+
yields the same cut, instead of pointing at a `tool-output:///` blob that
54+
only held the truncated text.
55+
56+
### Sub-agents
57+
58+
- **Parents and the TUI see why a child stopped.** Forced stops (repetition,
59+
stall, deadline, turn-budget, no-progress, operator cancel, thrash) carry
60+
a machine-readable `Stopped:` line on the report and a reason on the
61+
child's session. Fleet rows announce `<lane> stopped — <reason>` instead
62+
of a silent done/cancelled.
63+
64+
- **Repetition detection covers short-phrase, counter, emoji, and
65+
zero-width floods.** The periodic window floor drops to 8 chars (with a
66+
higher repeat bar so healthy lists stay quiet). A digit-folded pass
67+
catches incrementing counters and fence/emoji floods; a contentless-growth
68+
check flags streams of invisibles that used to normalize to healthy text.
69+
70+
### Providers
71+
72+
- **Cross-provider replay no longer 400s the rest of the session.**
73+
Switching model/provider mid-session used to replay foreign thinking
74+
signatures and output-only blocks the new adapter cannot encode. Every
75+
adapter now sanitizes persisted history before `buildRequest`: drop
76+
unmappable blocks, strip foreign signatures, and synthesize dangling
77+
`tool_result`s.
78+
79+
- **Grok and OpenAI Responses set `prompt_cache_key` per session.** Codex
80+
already did; xAI and Go Responses did not, so Grok threads cached at
81+
~66–72% versus Codex's 92%+. Parent and each sub-agent thread get a
82+
stable, distinct key.
83+
84+
- **TUI first inference waits for Codex instructions refresh.** The TUI
85+
used to fire the refresh un-awaited, so turn 2's request prefix could
86+
change under a live cache key and force a full miss. Delivery now waits
87+
for that promise (non-Codex profiles skip it; a failed refresh still
88+
falls back to cached/bundled copy).
3389

3490
- **Codex Responses no longer sends `reasoning.summary: "auto"`.** ChatGPT
3591
Codex rejects that value for gpt-5.6-terra / gpt-5.3-codex family models
3692
(HTTP 400 at turn 0). The adapter now sends `{ effort }` only, matching
37-
Codex CLI catalog `default_reasoning_summary=none` (CL-6893).
93+
Codex CLI catalog `default_reasoning_summary=none`.
94+
95+
- **Codex native tools proxy onto Corbits tools.** `apply_patch`,
96+
`exec_command`, and `update_plan` from Codex-family models land on the
97+
real file, shell, and `manage_tasks` handlers instead of being rejected
98+
as unknown names.
99+
100+
### CI
101+
102+
- **Required checks are `prettier`, `eslint`, `typecheck`, and
103+
`build-and-test`.** The old combined `lint` job (cached, continue-on-error)
104+
never reported the status contexts the main ruleset required, so every PR
105+
sat blocked. Lint result caches are gone in CI; local `bun run lint` still
106+
uses `--cache`.
38107

39108
## [0.2.103] - 2026-08-23
40109

‎package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@corbits/code",
3-
"version": "0.2.103",
3+
"version": "0.2.104",
44
"description": "Single-process coding agent CLI built on the Interchange runtime (Bun + TypeScript)",
55
"private": true,
66
"license": "SEE LICENSE IN LICENSE.md",

0 commit comments

Comments
 (0)