Conversation
d7daed2 to
2479492
Compare
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
29c0b89 to
45bca95
Compare
|
Issue #404 の対応として、MovementExecutor の早期リターン条件を status === 'error' のみに限定しました。これによって blocked や interrupted が誤って error 扱いで処理打ち切りになる問題を避けています。 あわせて blocked 時は Phase 2(report)をスキップしつつ、previous_response スナップショットは必ず保存するようにして、再実行時に最新の文脈を引き継げるようにしました。 さらに、report は Phase 1 が done の場合にのみ実行するように制御を明確化しています。関連して engine-blocked / engine-error / report-phase-blocked のテストを追加・更新し、blocked・interrupted 系の挙動を回帰防止しています。 また、E2E テストに Cursor を専用スイートとして追加しました。test:e2e:provider:cursor と test:e2e:cursor スクリプトを新設し、vitest.config.e2e.cursor.ts で Cursor 向けに add-and-run / worktree を対象化しています。docs/testing/e2e.md には Cursor 実行条件(cursor-agent CLI と認証)を追記し、e2e 用設定には provider_profiles.cursor.default_permission_mode: full を追加して、Cursor を opencode と同等に明示的に扱えるようにしました。 |
|
ありがとうございます! |
概要
cursor-agentCLI を使う新しい providercursorを追加しました。Claude / Codex / OpenCode に続く4番目の provider として、--provider cursorまたは設定ファイルのprovider: cursorで利用できます。変更内容
cursor provider の新規実装
src/infra/cursor/client.ts—cursor-agentCLI をspawnベースで呼び出すクライアント実装stdin: ignore+stdout/stderrの明示的収集、バッファ上限・abort・close/error の取り扱いを整備src/infra/cursor/types.ts,index.ts— cursor provider の型定義とエントリポイントsrc/infra/providers/cursor.ts— Provider インターフェース実装src/infra/providers/index.ts,types.ts—cursorを provider 一覧に追加スキーマ・設定の拡張
src/core/models/schemas.ts,piece-types.ts,provider-profiles.ts,persisted-global-config.ts— provider 型にcursorを追加src/agents/types.ts,src/core/piece/types.ts— エージェント・movement の provider 型を拡張src/infra/config/types.ts—cursor_api_keyフィールドを追加src/infra/config/global/globalConfig.ts,index.ts,initialization.ts— cursor_api_key の読み込みと設定初期化src/infra/config/env/config-env-overrides.ts—TAKT_CURSOR_API_KEY環境変数サポートsrc/app/cli/program.ts—--providerオプションのヘルプにcursorを追加src/core/piece/permission-profile-resolution.ts— cursor の permission mode 対応(full→--force)エンジン修正
src/core/piece/engine/MovementExecutor.ts— Phase1 の応答がdone以外の場合、Phase2/3 に進まず終了するガードを追加(cursor エラー時の二次エラー防止)ドキュメント更新
docs/agents.md,docs/cli-reference.md,docs/cli-reference.ja.md,docs/configuration.md,docs/configuration.ja.md— 全 provider 一覧・設定例・API キー設定にcursorを追記テスト
src/__tests__/cursor-client.test.ts— spawn モック前提の cursor クライアントテスト(新規)src/__tests__/cursor-provider.test.ts— provider 統合テスト(新規)src/__tests__/cli-provider-option.test.ts—--providerオプションに cursor が含まれることを確認(新規)src/__tests__/config-env-overrides.test.ts—TAKT_CURSOR_API_KEY環境変数の適用テストを追加src/__tests__/provider-resolution.test.ts,globalConfig-resolvers.test.ts,opencode-config.test.ts— cursor を含む provider 解決テストを更新src/__tests__/report-phase-blocked.test.ts— Phase1 がerrorのときに report phase を実行しない回帰テストを追加(新規)背景
cursor-agentCLI は Cursor エディタが提供するエージェント実行コマンドです。TAKT からcursor-agentを呼び出すことで、Cursor の AI モデル(gpt-5.3-codex 等)を使ったタスク実行が可能になります。また、cursor エラー(例: Workspace Trust Required / 無効モデル)発生時に Phase1 失敗後も report phase に進んで
sessionId不在の二次エラーが出る問題があったため、MovementExecutor にガードを追加しました。使い方
確認結果
npx vitest run src/__tests__/cursor-client.test.ts✅npx vitest run src/__tests__/cursor-provider.test.ts✅npx vitest run src/__tests__/report-phase-blocked.test.ts✅npm run build✅./bin/takt --pipeline --skip-git --provider cursor --model gpt-5.3-codex --task "Output exactly: hello world"→hello world応答を確認 ✅補足
cursor-agent利用時は環境に存在する有効モデル名(例:gpt-5.3-codex)の指定が必要です。cursor-agent --trust ...)。cursor-agent loginが済んでいれば動作します。