chore: update Claude agent SDK

This commit is contained in:
Eyejoker
2026-05-29 03:56:19 +09:00
committed by GitHub
parent a57cc7c65d
commit 6b51315eb1
8 changed files with 44 additions and 30 deletions

View File

@@ -23,7 +23,7 @@ GROQ_API_KEY= # Voice transcription (Groq Whisper, free:
ASSISTANT_NAME=claude # Trigger name (@claude) ASSISTANT_NAME=claude # Trigger name (@claude)
# --- Claude model --- # --- Claude model ---
CLAUDE_MODEL=claude-opus-4-7 # Claude model CLAUDE_MODEL=claude-opus-4-8 # Claude model
CLAUDE_EFFORT=high # Claude effort level CLAUDE_EFFORT=high # Claude effort level
CLAUDE_THINKING=adaptive # Claude thinking mode CLAUDE_THINKING=adaptive # Claude thinking mode
@@ -81,11 +81,11 @@ STATUS_CHANNEL_ID= # Discord channel ID for live status updat
# OWNER_EFFORT=xhigh # Owner effort override # OWNER_EFFORT=xhigh # Owner effort override
# OWNER_FALLBACK_ENABLED=true # Fall back to codex on Claude failure (default: true) # OWNER_FALLBACK_ENABLED=true # Fall back to codex on Claude failure (default: true)
# #
# REVIEWER_MODEL=claude-opus-4-7 # Reviewer model override # REVIEWER_MODEL=claude-opus-4-8 # Reviewer model override
# REVIEWER_EFFORT=high # Reviewer effort override # REVIEWER_EFFORT=high # Reviewer effort override
# REVIEWER_FALLBACK_ENABLED=true # Fall back to codex on Claude failure (default: true) # REVIEWER_FALLBACK_ENABLED=true # Fall back to codex on Claude failure (default: true)
# #
# ARBITER_MODEL=claude-sonnet-4-6 # Arbiter model override # ARBITER_MODEL=claude-opus-4-8 # Arbiter model override
# ARBITER_EFFORT=high # Arbiter effort override # ARBITER_EFFORT=high # Arbiter effort override
# ARBITER_FALLBACK_ENABLED=true # Fall back to codex on Claude failure (default: true) # ARBITER_FALLBACK_ENABLED=true # Fall back to codex on Claude failure (default: true)

View File

@@ -531,7 +531,7 @@ export const messages = {
modelDefault: '기본값 (.env 상속)', modelDefault: '기본값 (.env 상속)',
modelCustom: '직접 입력…', modelCustom: '직접 입력…',
modelCustomLabel: '모델 ID', modelCustomLabel: '모델 ID',
modelPlaceholder: '예: gpt-5.5, claude-opus-4-7', modelPlaceholder: '예: gpt-5.5, claude-opus-4-8',
groupCodex: 'Codex', groupCodex: 'Codex',
groupClaude: 'Claude', groupClaude: 'Claude',
groupCustom: '사용자 지정', groupCustom: '사용자 지정',
@@ -561,7 +561,7 @@ export const messages = {
'~/.codex/config.toml [features].fast_mode — GPT 5.5 등에서 응답 속도를 높입니다. 사용량이 더 듭니다.', '~/.codex/config.toml [features].fast_mode — GPT 5.5 등에서 응답 속도를 높입니다. 사용량이 더 듭니다.',
claudeFast: 'Claude', claudeFast: 'Claude',
claudeFastHint: claudeFastHint:
'~/.claude/settings.json fastMode — Opus 4.x(4.6·4.7 등)에서 세션 settings.json으로 동기화됩니다.', '~/.claude/settings.json fastMode — Opus 4.8에서 세션 settings.json으로 동기화됩니다.',
fastModeApplyHint: fastModeApplyHint:
'스택 재시작 없이 다음 Codex/Claude 작업부터 적용됩니다.', '스택 재시작 없이 다음 Codex/Claude 작업부터 적용됩니다.',
goal: 'Goals (/goal)', goal: 'Goals (/goal)',
@@ -964,7 +964,7 @@ export const messages = {
modelDefault: 'Default (.env)', modelDefault: 'Default (.env)',
modelCustom: 'Custom…', modelCustom: 'Custom…',
modelCustomLabel: 'Model ID', modelCustomLabel: 'Model ID',
modelPlaceholder: 'e.g. gpt-5.5, claude-opus-4-7', modelPlaceholder: 'e.g. gpt-5.5, claude-opus-4-8',
groupCodex: 'Codex', groupCodex: 'Codex',
groupClaude: 'Claude', groupClaude: 'Claude',
groupCustom: 'Custom', groupCustom: 'Custom',
@@ -994,7 +994,7 @@ export const messages = {
'~/.codex/config.toml [features].fast_mode — faster responses on GPT 5.5 and newer; higher usage.', '~/.codex/config.toml [features].fast_mode — faster responses on GPT 5.5 and newer; higher usage.',
claudeFast: 'Claude', claudeFast: 'Claude',
claudeFastHint: claudeFastHint:
'~/.claude/settings.json fastMode — synced into session settings.json for Opus 4.x (4.6, 4.7, …).', '~/.claude/settings.json fastMode — synced into session settings.json for Opus 4.8.',
fastModeApplyHint: fastModeApplyHint:
'Applies on the next Codex/Claude run. No stack restart required.', 'Applies on the next Codex/Claude run. No stack restart required.',
goal: 'Goals (/goal)', goal: 'Goals (/goal)',
@@ -1393,7 +1393,7 @@ export const messages = {
modelDefault: '默认 (.env)', modelDefault: '默认 (.env)',
modelCustom: '自定义…', modelCustom: '自定义…',
modelCustomLabel: '模型 ID', modelCustomLabel: '模型 ID',
modelPlaceholder: '例如 gpt-5.5, claude-opus-4-7', modelPlaceholder: '例如 gpt-5.5, claude-opus-4-8',
groupCodex: 'Codex', groupCodex: 'Codex',
groupClaude: 'Claude', groupClaude: 'Claude',
groupCustom: '自定义', groupCustom: '自定义',
@@ -1421,7 +1421,7 @@ export const messages = {
'~/.codex/config.toml [features].fast_mode — GPT 5.5 等更快响应,用量更高。', '~/.codex/config.toml [features].fast_mode — GPT 5.5 等更快响应,用量更高。',
claudeFast: 'Claude', claudeFast: 'Claude',
claudeFastHint: claudeFastHint:
'~/.claude/settings.json fastMode — 同步到会话 settings.json适用于 Opus 4.x4.6、4.7 等)。', '~/.claude/settings.json fastMode — 同步到会话 settings.json适用于 Opus 4.8。',
fastModeApplyHint: '无需重启栈,下次 Codex/Claude 任务起生效。', fastModeApplyHint: '无需重启栈,下次 Codex/Claude 任务起生效。',
goal: 'Goals (/goal)', goal: 'Goals (/goal)',
goalHint: goalHint:
@@ -1821,7 +1821,7 @@ export const messages = {
modelDefault: 'デフォルト (.env)', modelDefault: 'デフォルト (.env)',
modelCustom: 'カスタム…', modelCustom: 'カスタム…',
modelCustomLabel: 'モデル ID', modelCustomLabel: 'モデル ID',
modelPlaceholder: '例: gpt-5.5, claude-opus-4-7', modelPlaceholder: '例: gpt-5.5, claude-opus-4-8',
groupCodex: 'Codex', groupCodex: 'Codex',
groupClaude: 'Claude', groupClaude: 'Claude',
groupCustom: 'カスタム', groupCustom: 'カスタム',
@@ -1851,7 +1851,7 @@ export const messages = {
'~/.codex/config.toml [features].fast_mode — GPT 5.5 などで応答を高速化。使用量は増えます。', '~/.codex/config.toml [features].fast_mode — GPT 5.5 などで応答を高速化。使用量は増えます。',
claudeFast: 'Claude', claudeFast: 'Claude',
claudeFastHint: claudeFastHint:
'~/.claude/settings.json fastMode — セッション settings.json に同期。Opus 4.x4.6・4.7 等)向け。', '~/.claude/settings.json fastMode — セッション settings.json に同期。Opus 4.8 向け。',
fastModeApplyHint: fastModeApplyHint:
'スタック再起動不要。次の Codex/Claude 実行から反映されます。', 'スタック再起動不要。次の Codex/Claude 実行から反映されます。',
goal: 'Goals (/goal)', goal: 'Goals (/goal)',

View File

@@ -1,9 +1,12 @@
import { describe, expect, it } from 'vitest'; import { describe, expect, it } from 'vitest';
import { import {
PRESET_MODELS,
buildModelOptions,
effortValuesForAgent, effortValuesForAgent,
formatEffortOption, formatEffortOption,
isEffortSupported, isEffortSupported,
isPresetModel,
} from './settings-options'; } from './settings-options';
describe('settings-options effort', () => { describe('settings-options effort', () => {
@@ -29,3 +32,13 @@ describe('settings-options effort', () => {
expect(formatEffortOption('', '기본값')).toBe('기본값'); expect(formatEffortOption('', '기본값')).toBe('기본값');
}); });
}); });
describe('settings-options models', () => {
it('offers Claude Opus 4.8 as the only Claude preset', () => {
expect(PRESET_MODELS.claude).toEqual(['claude-opus-4-8']);
expect(buildModelOptions('')).toContain('claude-opus-4-8');
expect(isPresetModel('claude-opus-4-8')).toBe(true);
expect(isPresetModel('claude-opus-4-7')).toBe(false);
expect(isPresetModel('claude-opus-4-6')).toBe(false);
});
});

View File

@@ -1,6 +1,6 @@
export const PRESET_MODELS = { export const PRESET_MODELS = {
codex: ['gpt-5.5', 'gpt-5.5-pro', 'gpt-5.4', 'gpt-5.3-codex'], codex: ['gpt-5.5', 'gpt-5.5-pro', 'gpt-5.4', 'gpt-5.3-codex'],
claude: ['claude-opus-4-7', 'claude-opus-4-6', 'claude-sonnet-4-6'], claude: ['claude-opus-4-8'],
} as const; } as const;
export type AgentType = 'claude-code' | 'codex'; export type AgentType = 'claude-code' | 'codex';

View File

@@ -30,7 +30,8 @@ REVIEWER_AGENT_TYPE=claude-code
# ARBITER_AGENT_TYPE=claude-code # ARBITER_AGENT_TYPE=claude-code
# provider 기본 모델 # provider 기본 모델
CLAUDE_MODEL=claude-opus-4-7 # 공식 Claude API 모델 ID입니다.
CLAUDE_MODEL=claude-opus-4-8
CLAUDE_EFFORT=high CLAUDE_EFFORT=high
CLAUDE_THINKING=adaptive CLAUDE_THINKING=adaptive
CODEX_MODEL=gpt-5.5 CODEX_MODEL=gpt-5.5
@@ -41,11 +42,11 @@ OWNER_MODEL=gpt-5.5
OWNER_EFFORT=xhigh OWNER_EFFORT=xhigh
OWNER_FALLBACK_ENABLED=true OWNER_FALLBACK_ENABLED=true
REVIEWER_MODEL=claude-opus-4-7 REVIEWER_MODEL=claude-opus-4-8
REVIEWER_EFFORT=high REVIEWER_EFFORT=high
REVIEWER_FALLBACK_ENABLED=true REVIEWER_FALLBACK_ENABLED=true
ARBITER_MODEL=claude-sonnet-4-6 ARBITER_MODEL=claude-opus-4-8
ARBITER_EFFORT=high ARBITER_EFFORT=high
ARBITER_FALLBACK_ENABLED=true ARBITER_FALLBACK_ENABLED=true
``` ```

View File

@@ -5,8 +5,8 @@
"": { "": {
"name": "ejclaw-agent-runner", "name": "ejclaw-agent-runner",
"dependencies": { "dependencies": {
"@anthropic-ai/claude-agent-sdk": "0.3.149", "@anthropic-ai/claude-agent-sdk": "0.3.153",
"@anthropic-ai/sdk": "0.98.0", "@anthropic-ai/sdk": "0.100.0",
"@modelcontextprotocol/sdk": "1.29.0", "@modelcontextprotocol/sdk": "1.29.0",
"cron-parser": "^5.0.0", "cron-parser": "^5.0.0",
"ejclaw-runners-shared": "file:../shared", "ejclaw-runners-shared": "file:../shared",
@@ -19,25 +19,25 @@
}, },
}, },
"packages": { "packages": {
"@anthropic-ai/claude-agent-sdk": ["@anthropic-ai/claude-agent-sdk@0.3.149", "", { "optionalDependencies": { "@anthropic-ai/claude-agent-sdk-darwin-arm64": "0.3.149", "@anthropic-ai/claude-agent-sdk-darwin-x64": "0.3.149", "@anthropic-ai/claude-agent-sdk-linux-arm64": "0.3.149", "@anthropic-ai/claude-agent-sdk-linux-arm64-musl": "0.3.149", "@anthropic-ai/claude-agent-sdk-linux-x64": "0.3.149", "@anthropic-ai/claude-agent-sdk-linux-x64-musl": "0.3.149", "@anthropic-ai/claude-agent-sdk-win32-arm64": "0.3.149", "@anthropic-ai/claude-agent-sdk-win32-x64": "0.3.149" }, "peerDependencies": { "@anthropic-ai/sdk": ">=0.93.0", "@modelcontextprotocol/sdk": "^1.29.0", "zod": "^4.0.0" } }, "sha512-ww8KgEA0SHo39C2XEmHPl1jK8qoumpeUNVOKf6Og0BNfocnwZspC+KNd+x3RyTjREgzJyHpafqlGdCQRrhI7xw=="], "@anthropic-ai/claude-agent-sdk": ["@anthropic-ai/claude-agent-sdk@0.3.153", "", { "optionalDependencies": { "@anthropic-ai/claude-agent-sdk-darwin-arm64": "0.3.153", "@anthropic-ai/claude-agent-sdk-darwin-x64": "0.3.153", "@anthropic-ai/claude-agent-sdk-linux-arm64": "0.3.153", "@anthropic-ai/claude-agent-sdk-linux-arm64-musl": "0.3.153", "@anthropic-ai/claude-agent-sdk-linux-x64": "0.3.153", "@anthropic-ai/claude-agent-sdk-linux-x64-musl": "0.3.153", "@anthropic-ai/claude-agent-sdk-win32-arm64": "0.3.153", "@anthropic-ai/claude-agent-sdk-win32-x64": "0.3.153" }, "peerDependencies": { "@anthropic-ai/sdk": ">=0.93.0", "@modelcontextprotocol/sdk": "^1.29.0", "zod": "^4.0.0" } }, "sha512-+WYWQ5ih2dOuiJY4yql5pje3w8iA+aS7eZXJSFo6LZxmEiH4nV4n/fjhJCWPcqyo7TdvhAjS2cPqwIslNw3c7A=="],
"@anthropic-ai/claude-agent-sdk-darwin-arm64": ["@anthropic-ai/claude-agent-sdk-darwin-arm64@0.3.149", "", { "os": "darwin", "cpu": "arm64" }, "sha512-dcUEASmmIeoWs3pLhg8H0jukh9q/Y5nQjW44uS8kzw5i5ILCx6OPZL6EF/fN1Gr02WHen55E8ib6gi8BwW+gZA=="], "@anthropic-ai/claude-agent-sdk-darwin-arm64": ["@anthropic-ai/claude-agent-sdk-darwin-arm64@0.3.153", "", { "os": "darwin", "cpu": "arm64" }, "sha512-4K2K/n/qikp24ufO38owSEj5RPMWjBmf83BSUxLlzOhOXt7dHXs1CitmY9ZYM58Wmn3qhJs9DaS//ptO1siskQ=="],
"@anthropic-ai/claude-agent-sdk-darwin-x64": ["@anthropic-ai/claude-agent-sdk-darwin-x64@0.3.149", "", { "os": "darwin", "cpu": "x64" }, "sha512-m71JnignoO90t5ayHcTh1gn3xjDKxsfXhhjXeUD8FpNINadBZNUTi7CmnaSSTDaaE2gP2RZZxYiFGVeGAvGaYA=="], "@anthropic-ai/claude-agent-sdk-darwin-x64": ["@anthropic-ai/claude-agent-sdk-darwin-x64@0.3.153", "", { "os": "darwin", "cpu": "x64" }, "sha512-kY5DPMAK+ZkphoIUjOiP6sSB57Lw2H1RUNK2HVEDowagbl9T47DSbkjYE4NWYqfy22aebPj02VAIbFfFmYxnMw=="],
"@anthropic-ai/claude-agent-sdk-linux-arm64": ["@anthropic-ai/claude-agent-sdk-linux-arm64@0.3.149", "", { "os": "linux", "cpu": "arm64" }, "sha512-tugae9TmfTRaYJLYb34mVMNB6nd3r1tOmxOE1b078wGGrInigPJZTA3VTgk247oBHfbMgA6CHBA0csSDRCkoPA=="], "@anthropic-ai/claude-agent-sdk-linux-arm64": ["@anthropic-ai/claude-agent-sdk-linux-arm64@0.3.153", "", { "os": "linux", "cpu": "arm64" }, "sha512-XoIP6xJn+QlfBta96yfxdtaeJ/BstA2S9abZJYeWs/wwNjQNWs83repg/v1VPuGn7i44teSzLtzoAv9t1w4Ybg=="],
"@anthropic-ai/claude-agent-sdk-linux-arm64-musl": ["@anthropic-ai/claude-agent-sdk-linux-arm64-musl@0.3.149", "", { "os": "linux", "cpu": "arm64" }, "sha512-TaXG46Qi12mu+ublo6Vmci0XyOiWpxWJTd4vkmPVAqMqOrebHOx5F2FCT3bvTyZgm+BhMCE8N0V1tuto+dG96w=="], "@anthropic-ai/claude-agent-sdk-linux-arm64-musl": ["@anthropic-ai/claude-agent-sdk-linux-arm64-musl@0.3.153", "", { "os": "linux", "cpu": "arm64" }, "sha512-5fD6MagyX+1tZdpVjZ6rN178pR7K10c+JyTsEh4HUJR3tnVO9uZYcmEcsKLX1TjWX+mz5+TW9rwDP5AMHXsjNA=="],
"@anthropic-ai/claude-agent-sdk-linux-x64": ["@anthropic-ai/claude-agent-sdk-linux-x64@0.3.149", "", { "os": "linux", "cpu": "x64" }, "sha512-ZRhy/WekfHk0xsVjPpbBXk/4/qCgbgF3+JUEBMbV9nZH5CqHe5QnzREExlm/1HrcV9s3rKcsGuDNLdtvMwk80g=="], "@anthropic-ai/claude-agent-sdk-linux-x64": ["@anthropic-ai/claude-agent-sdk-linux-x64@0.3.153", "", { "os": "linux", "cpu": "x64" }, "sha512-U2eY8iBLF0vrvuHnh33UA3LA/aIVgSk2Pw5KY7N5lH5fYzcnDBoT8bG32lelQIoaUDY0znOWIc0vqN5/Yih51w=="],
"@anthropic-ai/claude-agent-sdk-linux-x64-musl": ["@anthropic-ai/claude-agent-sdk-linux-x64-musl@0.3.149", "", { "os": "linux", "cpu": "x64" }, "sha512-FAbwrZ4d/NNLboDCdFuowxF6K9YU5ewftjNl+uAmC9EFWHNLtQ0GfKs3r8+9GH5zZABWb75fj4U0t4d1QoeCwg=="], "@anthropic-ai/claude-agent-sdk-linux-x64-musl": ["@anthropic-ai/claude-agent-sdk-linux-x64-musl@0.3.153", "", { "os": "linux", "cpu": "x64" }, "sha512-4o+1RnNAL31iZDDT46AWl/t5lUSVJ5Gq8o2IxPgNBltPHAL3aUmTTDLxjDb+gFVEyegyy9FwK0yPJGpNp4CxKA=="],
"@anthropic-ai/claude-agent-sdk-win32-arm64": ["@anthropic-ai/claude-agent-sdk-win32-arm64@0.3.149", "", { "os": "win32", "cpu": "arm64" }, "sha512-93RfvshOC8aXrsnCP4NOLIRwgp7ihHFiZZtbD0TC8oywqjqPrVo5F+U/rFjIu37pfbKRqbnaBNVkGGjzrUePIw=="], "@anthropic-ai/claude-agent-sdk-win32-arm64": ["@anthropic-ai/claude-agent-sdk-win32-arm64@0.3.153", "", { "os": "win32", "cpu": "arm64" }, "sha512-GQsZTvf4pJVVAgaXwpN/W7RpO7dtUd3VCM3zxD7RQ1X+Dc8tUNPMWr7JCHEYwrUWiS1jeSjLOsrAuRFopSP43Q=="],
"@anthropic-ai/claude-agent-sdk-win32-x64": ["@anthropic-ai/claude-agent-sdk-win32-x64@0.3.149", "", { "os": "win32", "cpu": "x64" }, "sha512-bCh2rbPtmFDqKcPTq2QybTsqGMlknqIWnderC3mA6xwC/7PQizaLm0JR2EF4UFXdqACdjY+3MPlNdurFfjV03g=="], "@anthropic-ai/claude-agent-sdk-win32-x64": ["@anthropic-ai/claude-agent-sdk-win32-x64@0.3.153", "", { "os": "win32", "cpu": "x64" }, "sha512-t/+IEFLsp+fY1G5EZhzVBNKI1mm28rPNcyrlJHy3wCbl1aA/Myd7mWnNCRckDGENZz4V7KyqCslLsCt5gT2iPg=="],
"@anthropic-ai/sdk": ["@anthropic-ai/sdk@0.98.0", "", { "dependencies": { "json-schema-to-ts": "^3.1.1", "standardwebhooks": "^1.0.0" }, "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" }, "optionalPeers": ["zod"], "bin": { "anthropic-ai-sdk": "bin/cli" } }, "sha512-N7aXtCvC5g6T1Y4V29lJjceu/zTkVkIZF0jdBvagr0TRFHuKeImffalGWEfqZKrvjH+IQbzJWw6TmSmUzrlMgg=="], "@anthropic-ai/sdk": ["@anthropic-ai/sdk@0.100.0", "", { "dependencies": { "json-schema-to-ts": "^3.1.1", "standardwebhooks": "^1.0.0" }, "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" }, "optionalPeers": ["zod"], "bin": { "anthropic-ai-sdk": "bin/cli" } }, "sha512-cAm3aXm6qAiHIvHxyIIGd6tVmsD2gDqlc2h0R20ijNUzGgVnIN822bit4mKbF6CkuV7qIrLQIPoAepHEpanrQQ=="],
"@babel/runtime": ["@babel/runtime@7.29.2", "", {}, "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g=="], "@babel/runtime": ["@babel/runtime@7.29.2", "", {}, "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g=="],

View File

@@ -10,8 +10,8 @@
"start": "bun dist/index.js" "start": "bun dist/index.js"
}, },
"dependencies": { "dependencies": {
"@anthropic-ai/claude-agent-sdk": "0.3.149", "@anthropic-ai/claude-agent-sdk": "0.3.153",
"@anthropic-ai/sdk": "0.98.0", "@anthropic-ai/sdk": "0.100.0",
"@modelcontextprotocol/sdk": "1.29.0", "@modelcontextprotocol/sdk": "1.29.0",
"cron-parser": "^5.0.0", "cron-parser": "^5.0.0",
"ejclaw-runners-shared": "file:../shared", "ejclaw-runners-shared": "file:../shared",

View File

@@ -672,7 +672,7 @@ describe('runAgentForGroup room memory', () => {
}); });
const config = await import('./config.js'); const config = await import('./config.js');
vi.mocked(config.getRoleModelConfig).mockReturnValue({ vi.mocked(config.getRoleModelConfig).mockReturnValue({
model: 'claude-opus-4-6', model: 'claude-opus-4-8',
effort: 'high', effort: 'high',
fallbackEnabled: true, fallbackEnabled: true,
}); });