mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-26 04:15:48 -06:00
1b9d3ac57d
* fix(models): preserve CLI runtime thinking capabilities * fix(models): preserve configured thinking overrides * fix: keep Claude live CLI process warm across captured turns MCP delivery capture no longer kills the warm Claude process after every turn. Capture-key admission is fenced by grant activate/deactivate so prompt-cache continuity can survive across messages. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(claude-cli): apply thinking levels * fix(claude-cli): materialize thinking capabilities * test(claude-cli): cover warm thinking budget reuse * test(models): restore prepared catalog contracts * fix(agents): restore catalog test boundaries * fix(agents): break prepared catalog import cycle * refactor(gateway): extract model-choice runtime resolution into public-projection module Keeps models-list-result.ts under the max-lines cap after the origin/main merge by moving resolveModelChoiceAgentRuntime next to the projection helpers it feeds. Claude-Session: https://claude.ai/code/session_01QXUQuDVataA5o16kxNnmoX * test(claude-cli): cover thinking cache reuse * test(claude-cli): cover captured live reuse * fix(claude-cli): rotate MCP grants across live turns * fix(anthropic): respect mandatory adaptive thinking * fix(claude-cli): restore warm MCP bearer * fix(anthropic): keep Mythos adaptive thinking * test(claude-cli): prove live MCP cache reuse * test(claude-cli): align live cache coverage * fix(claude-cli): reuse live sessions across MCP grant rotation * test(claude-cli): satisfy cache lane static gates * fix(claude-cli): preserve runtime thinking policy * fix(thinking): honor concrete runtime policy * fix(gateway): honor mandatory thinking in model list * refactor(auto-reply): extract prepared catalog merge * docs(cli-backend): document thinking execution input * refactor(auto-reply): extract catalog lookup helper * style(auto-reply): format catalog helper import * fix(claude-cli): stabilize live context budget * fix(auto-reply): type prepared context metadata --------- Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com> Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com>
34 lines
1.2 KiB
TypeScript
34 lines
1.2 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { buildAnthropicCliBackend } from "./cli-backend.js";
|
|
import { resolveClaudeCliThinkingEnv } from "./cli-shared.js";
|
|
|
|
describe("Claude CLI execution environment", () => {
|
|
it("preserves the prepared launch environment for the same context budget", () => {
|
|
const backend = buildAnthropicCliBackend();
|
|
|
|
expect(
|
|
backend.prepareExecution?.({
|
|
workspaceDir: "/tmp/openclaw-claude-cli",
|
|
provider: "claude-cli",
|
|
modelId: "claude-opus-4-8",
|
|
contextTokenBudget: 100_000,
|
|
}),
|
|
).toEqual({ env: { CLAUDE_CODE_AUTO_COMPACT_WINDOW: "100000" } });
|
|
});
|
|
|
|
it.each([
|
|
["high", { CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING: "1", MAX_THINKING_TOKENS: "16384" }],
|
|
["off", { MAX_THINKING_TOKENS: "0" }],
|
|
["adaptive", undefined],
|
|
] as const)("maps %s thinking to Claude Code's process environment", (level, expected) => {
|
|
expect(resolveClaudeCliThinkingEnv(level, "claude-opus-4-8")).toEqual(expected);
|
|
});
|
|
|
|
it.each(["off", "high", "max"] as const)(
|
|
"leaves mandatory-adaptive Fable thinking %s to Claude Code effort args",
|
|
(level) => {
|
|
expect(resolveClaudeCliThinkingEnv(level, "claude-fable-5")).toBeUndefined();
|
|
},
|
|
);
|
|
});
|