You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 8049861
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: CHANGELOG.md
+42Lines changed: 42 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,6 +11,48 @@ This file is the canonical source for unreleased changes and published release n
11
11
12
12
## [Unreleased]
13
13
14
+
### Added
15
+
16
+
- Added automatic retry of transient provider failures in the harness loop. A turn whose request fails with a rate limit, overload, 5xx, timeout or dropped connection, including one that fails mid-stream, is retried with exponential backoff. Configure it with a top-level `retry` block in `settings.jsonc`: `{ "maxRetries": 3, "baseDelayMs": 2000, "maxDelayMs": 60000 }`, where `maxRetries: 0` turns it off. Quota errors are never retried, and a server that asks to wait longer than `maxDelayMs` fails the turn. Each failed attempt stays in the session as an aborted entry that the model never sees, and clients receive `session.retry.scheduled` and `session.retry.finished` events to show progress.
17
+
18
+
### Changed
19
+
20
+
-`model.options.maxRetries`, the retry inside the provider SDK, now defaults to `0` (was `3`). The SDK retried silently, only before the stream started, and also retried quota errors. Combined with the loop retry, one outage would have cost up to 16 requests. Set it per model if an endpoint needs it.
21
+
22
+
### Fixed
23
+
24
+
- Fixed an interrupted turn never reporting `session.turn.aborted`. The cleanup that settles the turn's open draft and publishes the event was skipped on interruption, so the draft was only cleaned up on the session's next run.
25
+
26
+
## [@codeworksh/aikit@0.10.0]
27
+
28
+
Covers every change since 0.9.2, the last release on the `latest` tag, including 0.9.3, which only shipped as dev and canary builds.
29
+
30
+
### Added
31
+
32
+
- Added the `getEnvApiKey` export, so a caller can check whether a provider has an API key in the environment using the same lookup aikit applies when it opens that provider.
33
+
- Added `gpt-6-luna` to the OpenAI Codex catalog. The Codex backend serves it to ChatGPT accounts, with every reasoning level from `low` to `max` and reasoning off.
34
+
35
+
### Changed
36
+
37
+
- Updated `@ai-sdk/openai` to `^4.0.81` and `@ai-sdk/provider` to `^4.0.19`.
38
+
39
+
### Fixed
40
+
41
+
- Fixed images reaching models that cannot read them. For a model whose `input` does not include `"image"`, each image in a user message is now replaced with `(image omitted: model does not support images)` and each image in a tool result with `(tool image omitted: model does not support images)`; consecutive images collapse to one placeholder. The message and tool result are kept, so the model still knows an image was there. Previously a user image was silently dropped, which removed an image-only message entirely, and a tool-result image was sent anyway, which providers often reject. Vision models are unchanged.
42
+
- Fixed `retry-after-ms` and an HTTP-date `retry-after` being ignored when normalizing a provider failure. Only a `retry-after` given in seconds was read, so `retryAfterMs` was missing and a retry could come before the server's requested wait.
43
+
- Fixed OpenAI and Codex reasoning levels that the API rejects. `minimal` is no longer offered for gpt-5.4 through gpt-6 and is clamped to `low`, since these models reject it. `xhigh` and `max` are now offered on gpt-5.6 and gpt-6 models through the OpenAI API, and `max` stays off gpt-5.5 and earlier. OpenAI gpt-5.6 and gpt-6 models now turn reasoning off with `none`, as do Codex `gpt-5.5`, `gpt-5.6-luna` and `gpt-6-luna`.
44
+
- Fixed `gpt-6-luna` ignoring a request to turn reasoning off. `@ai-sdk/openai` 4.0.66 dropped `reasoningEffort: "none"` for the model; aikit now requires 4.0.81.
45
+
- Fixed every request to Claude Sonnet 5.5, Opus 5.5 and the Fable 5 models failing when no reasoning level was set. aikit sent `thinking: {type: "disabled"}`, which these models reject; they cannot turn thinking off, so aikit now leaves thinking to the model.
46
+
- Fixed Claude thinking levels. `xhigh` and `max` are now offered on Opus 4.7 and 4.8, the Sonnet 5, Opus 5 and Fable 5 families, and `max` on Sonnet 4.6 and Opus 4.6; previously these requests were clamped down to `high`.
47
+
- Fixed Claude Sonnet 4.5's context window on the Anthropic API, which is 200k tokens, not 1M (1M needs a beta header). Responses were sized against the wrong window, so long sessions failed with a context overflow instead of a shorter answer.
48
+
- Fixed a prompt that already overflows the context window failing as an invalid `max_output_tokens`. The response ceiling is no longer shrunk below 16 tokens, the smallest OpenAI accepts, so the provider's context overflow error reaches the caller and `isContextOverflow` recognises it.
49
+
- Fixed conversations started on OpenAI Codex failing when continued on OpenAI, Anthropic or OpenRouter. Codex tool call IDs (`call_…|fc_…`) exceed the 64-character `call_id` limit of OpenAI and of OpenRouter upstreams such as Meta, and contain characters Anthropic rejects; they are now shortened to the unique call part for those providers.
50
+
- Fixed a provider error sent mid-stream, such as OpenAI's `context_length_exceeded` event, being reported as an `Unknown` failure. It is now classified by its status and code like an error returned before the stream starts, so the same overflow is an `InvalidRequest` either way.
51
+
52
+
### Internal
53
+
54
+
- The OpenAI, Codex, Anthropic and OpenRouter live e2e suites now run against a model matrix: gpt-6-luna through gpt-5.4-nano for OpenAI, gpt-6-luna, gpt-5.6-luna and gpt-5.5 for Codex, Claude Sonnet 4.6 through Fable 5.1 plus the 4.5 generation for Anthropic, and Muse Spark 1.3, GLM 5.3 Flash, DeepSeek V4.1 Flash and Gemini 3.8 Flash for OpenRouter. New suites cover every reasoning level, context overflow, cross-model and cross-provider handoff, and prompt caching.
Copy file name to clipboardExpand all lines: CLAUDE.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,9 +7,9 @@
7
7
8
8
## Commands
9
9
10
-
- Don't run dev server commands (e.g `bun run dev`, `pnpm run dev`) - assume it's already running.
10
+
- Don't run dev server commands (e.g `pnpm run dev`, `bun run dev`) - assume it's already running.
11
11
- Don't run build commands unless specifically told to.
12
-
- Focus on checking commands like `bun run typecheck`, `pnpm run check`,`bun run lint`, etc.
12
+
- Focus on checking commands like `pnpm run check`, `bun run lint``bun run typecheck`, etc.
13
13
14
14
## Package Managers
15
15
@@ -30,7 +30,7 @@ When uncertain, prefer: Effect, Tailwind, TypeScript, React, Clerk, TanStack, Ve
30
30
## General Preferences
31
31
32
32
- If asked to do too much work at once, stop and state that clearly.
33
-
-If computer use is helpful for completing or verifying work, shell out to gpt-5.6 with Codex for it
33
+
-After you yourself have verified the work, get the work peer reviewed by another agent: `codex` for `code reviews`, `focused deep checks`, `tweaks`, `tests review`shell out to `gpt-6.1-sol` with thinking `low` or `medium` depending on complexity.
34
34
- Avoid defensive future-facing design. This leads to pre-mature assumptions which are never true.
0 commit comments