380 Commits

Author SHA1 Message Date
nrs
16596eff09
takt: refactor-status-handling (#477) 2026-03-06 01:40:25 +09:00
nrs
bc5e1fd860
takt: fix-phase3-fallback-bypass (#474) 2026-03-06 01:30:33 +09:00
nrslib
a8223d231d refactor: config 3層モデル整理 + supervisor ペルソナのファセット分離是正
Config:
- PersistedGlobalConfig → GlobalConfig にリネーム、互換エイリアス削除
- persisted-global-config.ts → config-types.ts にリネーム
- ProjectConfig → GlobalConfig extends Omit<ProjectConfig, ...> の継承構造に整理
- verbose/logLevel/log_level を削除(logging セクションに統一)
- migration 機構(migratedProjectLocalKeys 等)を削除

Supervisor ペルソナ:
- 後方互換コードの検出・その場しのぎの検出・ボーイスカウトルールを除去(review.md ポリシー / architecture.md ナレッジと重複)
- ピース全体の見直しを supervise.md インストラクションに移動

takt-default-team-leader:
- loop_monitor のインライン instruction_template を既存ファイル参照に変更
- implement の「判断できない」ルールを ai_review → plan に修正
2026-03-06 01:29:46 +09:00
nrslib
ebbd1a67a9 fix: ピース再利用確認を task.data.piece から取得 & config テンプレート拡充
- retryFailedTask / instructBranch でピース名の取得元を
  runInfo?.piece から task.data?.piece に変更
  (worktree 内に .takt/runs/ が存在しないため runInfo は常に null だった)
- ~/.takt/config.yaml テンプレートに不足していた設定項目を追加
  (provider, model, concurrency, analytics, pipeline, persona_providers 等)
2026-03-06 00:37:54 +09:00
nrs
a69e9f4fb3
takt: add-persona-quality-gates (#472) 2026-03-05 23:32:32 +09:00
nrs
76cfd771f8
takt: implement-usage-event-logging (#470) 2026-03-05 11:27:59 +09:00
nrs
2f268f6d43
[#320] move-allowed-tools-claude (#469)
* takt: move-allowed-tools-claude

* fix: E2Eフィクスチャの allowed_tools を provider_options.claude に移行

PR #469 で allowed_tools がムーブメント直下から provider_options.claude.allowed_tools に
移動されたが、E2Eフィクスチャとインラインピース定義が旧形式のままだった。
2026-03-05 11:27:48 +09:00
nrs
3649ce40f9
takt: add-piece-reuse-confirm (#468) 2026-03-04 23:07:47 +09:00
nrs
8403a7c892
takt: add-trace-report-generation (#467) 2026-03-04 23:07:36 +09:00
nrslib
1cfae9f53b refactor: deprecated config マイグレーション処理を削除
log_level / observability の後方互換マイグレーションを完全削除。
logging キーに一本化し、レガシー変換コード・テストを除去。
2026-03-04 21:05:14 +09:00
nrs
69dd871404
refactor: observability を logging に再編成し設定構造を体系化 (#466)
* takt: refactor-logging-config

* fix: resolve merge conflicts

* chore: trigger CI

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-04 20:27:42 +09:00
jake
289a0fb912
.takt/config.yaml(プロジェクト設定)に runtime.prepare を記述するとエラーになる (#464)
* fix: add missing runtime field to ProjectConfigSchema and unify normalizeRuntime

ProjectConfigSchema.strict() rejected the runtime key in .takt/config.yaml
because the field was never added to the project-level Zod schema. The global
schema and piece-level schema already had it, so only project-level
runtime.prepare was broken ("Unrecognized key: runtime").

- Add runtime to ProjectConfigSchema and ProjectLocalConfig type
- Handle runtime in loadProjectConfig/saveProjectConfig
- Extract normalizeRuntime() into configNormalizers.ts as shared function
- Replace duplicated normalization in globalConfigCore.ts and pieceParser.ts
- Add 9 round-trip tests for project-level runtime.prepare

* fix: remove unnecessary comments from configNormalizers.ts

* fix: replace removed piece field with verbose in runtime test

The piece field was removed from ProjectConfigSchema in PR #465.
Update the test to use verbose instead.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 20:13:44 +09:00
nrs
4f02c20c1d
Merge pull request #465 from nrslib/takt/420/remove-default-piece-switch
feat: デフォルトピースの概念と takt switch コマンドを削除
2026-03-04 18:02:28 +09:00
nrslib
9fc8ab73fd リトライ時でタスクにつめるようにする 2026-03-04 16:20:37 +09:00
nrs
8ffe0592ef
Merge pull request #460 from nrslib/takt/452/refactor-config-structure
[#452] refactor-config-structure
2026-03-04 15:14:33 +09:00
nrslib
7c1bc44596 feat: PR作成失敗時のタスクステータスを failed から pr_failed に分離
コード実行は成功したが PR 作成のみ失敗した場合、タスク全体を failed
扱いにせず pr_failed ステータスで記録する。takt list では [pr-failed]
として表示し、completed と同じ diff/merge 操作が可能。
2026-03-04 14:53:12 +09:00
nrslib
204d84e345 takt: refactor-config-structure 2026-03-04 14:16:12 +09:00
nrslib
4e89fe1c23 feat: reviewers↔fix ループ収束を支援するレポート履歴・ループ監視・参照方針の整備
- phase-runner: レポートを上書きせずタイムスタンプ付きで同ディレクトリに保存し、fix が過去指摘の傾向を追跡できるよう改善
- output-contracts: persists/reopened/family_tag フィールドを追加してレビュー指摘の継続性を明示
- pieces: 全ビルトインピースに reviewers↔fix の loop_monitors を追加し、発散ループを自動検知
- fix.md: 過去レポートの参照方法を「Glob で {レポート名}.* を検索、最大2件読む」と具体化
- loop-monitor-reviewers-fix.md: ループモニタ判定用の共通インストラクションを新規追加
2026-03-04 11:32:19 +09:00
nrslib
6a3c64a033 fix: stop iteration limit prompt and persist exceeded in interactive run 2026-03-04 09:39:30 +09:00
nrslib
8dcb23b147 fix: export-cc で facets/ のディレクトリ構造を保持するよう修正
ファセットを ~/.claude/skills/takt/personas/ 等に展開していたが、
ビルトインのピースYAMLで ../facets/personas/ という相対パスを
使用しているため、facets/ ディレクトリを維持する必要があった。
deploySkill.ts、SKILL.md、engine.md のパス例も合わせて修正。
2026-03-04 01:30:11 +09:00
nrs
8430948475
takt: unify-provider-config (#457) 2026-03-04 00:34:07 +09:00
nrs
290d085f5e
takt: implement-task-base-branch (#455) 2026-03-03 19:37:07 +09:00
あいやま EIichi Yamazaki
ed16c05160
fix: グローバル設定のpieceが解決チェーンで無視されるバグを修正 (#458) 2026-03-03 19:36:34 +09:00
nrslib
d2b48fdd92 fix: resolve provider-first permission mode and add codex EPERM e2e 2026-03-03 17:15:54 +09:00
nrs
f838a0e656
takt: github-issue-382-feat-purojeku (#384)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-03 00:10:02 +09:00
nrs
4a92ba2012
[#366] implement-exceeded-requeue (#374)
* takt: implement-exceeded-requeue

* takt: implement-exceeded-requeue

* takt: implement-exceeded-requeue

* ci: trigger CI

* fix: 未使用インポート削除と --create-worktree e2e テスト修正

InteractiveModeAction の不要な import を削除して lint エラーを解消する。
--create-worktree オプション削除に合わせ e2e の期待メッセージを更新する。

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-02 23:30:53 +09:00
nrs
29f8ca4bdc
takt: fix-copilot-review-findings (#434) 2026-03-02 23:04:24 +09:00
nrslib
c843858f2e feat: --pr インタラクティブモードで create_issue 除外・save_task 時の PR ブランチ自動設定
- --pr 指定時のインタラクティブモードで create_issue を選択肢から除外
- execute アクション時に PR ブランチを fetch + checkout してから実行
- save_task アクション時に worktree/branch/autoPr を自動設定しプロンプトをスキップ
- saveTaskFromInteractive に presetSettings オプションを追加
- interactiveMode に InteractiveModeOptions(excludeActions)を追加
- checkoutBranch() を git.ts に追加し steps.ts の重複コードを DRY 化
2026-03-02 23:01:24 +09:00
nrslib
8edf8b02d8 fix: レビューコメントがない PR でも --pr が機能するよう修正 2026-03-02 22:02:55 +09:00
nrslib
47612d9dcc refactor: agent-usecases / schema-loader の移動と pieceExecution の責務分割
- agent-usecases.ts を core/piece/ → agents/ へ移動
- schema-loader.ts を core/piece/ → infra/resources/ へ移動
- interactive-summary-types.ts を分離、shared/types/ ディレクトリを追加
- pieceExecution.ts を abortHandler / analyticsEmitter / iterationLimitHandler / outputFns / runMeta / sessionLogger に分割
- buildMergeFn を async → sync に変更(custom merge の file 戦略を削除)
- cleanupOrphanedClone にパストラバーサル保護を追加
- review-fix / frontend-review-fix ピースの IT テストを追加
2026-03-02 21:20:50 +09:00
nrslib
d3ac5cc17c fix: --auto-pr/--draft をパイプラインモード専用に制限
インタラクティブモードでの PR 自動作成プロンプト(resolveAutoPr / resolveDraftPr)を削除し、
--auto-pr / --draft はパイプラインモードでのみ有効になるよう制限する。
SelectAndExecuteOptions から repo / branch / issues フィールドも削除。
2026-03-02 17:37:46 +09:00
Takashi Morikubo
50935a1244
Remove worktree prompt from execute action (#414)
* fix: remove execute worktree prompt and deprecate create-worktree option

* test(e2e): align specs with removed --create-worktree

* fix: remove execute worktree leftovers and align docs/tests

---------

Co-authored-by: Takashi Morikubo <azurite0107@gmail.com>
2026-03-02 16:12:18 +09:00
nrslib
bddb66f85d fix: avoid leading-boundary timed flush fragmentation 2026-03-02 14:18:28 +09:00
nrslib
532b1961a7 refactor: expert → dual リネーム、未使用ピース削除、default 統合
- expert/expert-mini/expert-cqrs/expert-cqrs-mini を dual 系にリネーム
  (「フルスタック」→「フロントエンド+バックエンド」に説明も修正)
- expert-supervisor ペルソナを dual-supervisor にリネーム
- passthrough, structural-reform ピースを削除
- default-mini, default-test-first-mini を default に統合
- coding-pitfalls ナレッジの主要項目を coding ポリシーに移動し削除
- implement/plan インストラクションにセルフチェック・コーダー指針を追加
- builtin カタログに不足していた terraform, takt-default 系を追加
- deep-research をカテゴリに追加
2026-03-02 13:15:51 +09:00
nrs
8f0f546928
[#426] add-pr-review-task (#427)
* takt: add-pr-review-task

* fix: add コマンドの DRY 違反を修正

if/else で addTask を引数の有無のみ変えて呼び分けていた
冗長な分岐を三項演算子で統一。テストのアサーションも更新。

* fix: レビュー Warning 4件を修正

- addTask.test.ts: 冗長な Ref エイリアスを削除し直接参照に統一
- addTask.test.ts: mockRejectedValue を mockImplementation(throw) に変更
  (fetchPrReviewComments は同期メソッドのため)
- index.ts: addTask の JSDoc Flow コメントを復元(PR フロー追加)
- issueTask.ts: extractTitle / createIssueFromTask の JSDoc を移植
2026-02-28 21:56:00 +09:00
Tomohisa Takaoka
17232f9940
feat: add GitHub Copilot CLI as a new provider (#425)
* feat: add GitHub Copilot CLI as a new provider

Add support for GitHub Copilot CLI (@github/copilot) as a takt provider,
enabling the 'copilot' command to be used for AI-driven task execution.

New files:
- src/infra/copilot/client.ts: CLI client with streaming, session ID
  extraction via --share, and permission mode mapping
- src/infra/copilot/types.ts: CopilotCallOptions type definitions
- src/infra/copilot/index.ts: barrel exports
- src/infra/providers/copilot.ts: CopilotProvider implementing Provider
- src/__tests__/copilot-client.test.ts: 20 unit tests for client
- src/__tests__/copilot-provider.test.ts: 8 unit tests for provider

Key features:
- Spawns 'copilot -p' in non-interactive mode with --silent --no-color
- Permission modes: full (--yolo), edit (--allow-all-tools --no-ask-user),
  readonly (no permission flags)
- Session ID extraction from --share transcript files
- Real-time stdout streaming via onStream callbacks
- Configurable via COPILOT_CLI_PATH and COPILOT_GITHUB_TOKEN env vars

* fix: remove unused COPILOT_DEFAULT_MAX_AUTOPILOT_CONTINUES constant

* fix: address review feedback for copilot provider

- Remove excess maxAutopilotContinues property from test (#1 High)
- Extract cleanupTmpDir() helper to eliminate DRY violation (#2 Medium)
- Deduplicate chunk string conversion in stdout handler (#3 Medium)
- Remove 5 what/how comments that restate code (#4 Medium)
- Log readFile failure instead of silently swallowing (#5 Medium)
- Add credential scrubbing (ghp_/ghs_/gho_/github_pat_) for stderr (#6 Medium)
- Add buffer overflow tests for stdout and stderr (#7 Medium)
- Add pre-aborted AbortSignal test (#8 Low)
- Add mkdtemp failure fallback test (#9 Low)
- Add rm cleanup verification to fallback test (#10 Low)
- Log mkdtemp failure with debug level (#11 Persist)
- Add createLogger('copilot-client') for structured logging
2026-02-28 20:28:56 +09:00
nrs
9ba05d8598
[#395] github-issue-395-add-pull-from (#397)
* takt: github-issue-395-add-pull-from

* ci: trigger CI checks

* fix: taskDiffActions のコンフリクトマーカーを解消

origin/main でリネームされた「Merge from root」ラベル(PR #394)と、
このPR (#395) で追加した「Pull from remote」行を統合する。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* ci: trigger CI checks

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: masanobu-naruse <m_naruse@codmon.co.jp>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-28 14:13:06 +09:00
Junichi Kato
fe0b7237a7
fix: 不正なtasks.yamlで削除せず停止するように修正 (#418)
* test: add regression coverage for invalid tasks.yaml preservation

* fix: keep invalid tasks.yaml untouched and fail fast
2026-02-28 13:02:03 +09:00
souki-kimura
ac4cb9c8a5
fix: fallback to normal clone when reference repository is shallow (#376) (#409)
In shallow clone environments (e.g., DevContainer), `git clone --reference`
fails because Git cannot use a shallow repository as a reference. Add fallback
logic that detects the "reference repository is shallow" error and retries
without `--reference --dissociate`.

Co-authored-by: kimura <2023lmi-student009@la-study.com>
2026-02-28 13:01:18 +09:00
Yuma Satake
e77cb50ac1
feat: インタラクティブモードのスラッシュコマンドを行末でも認識可能にする (#406)
- スラッシュコマンド検出ロジックを commandMatcher.ts に分離
- 行頭・行末の両方でコマンドを認識し、行中は無視する仕様を実装
- conversationLoop を早期リターン + switch ディスパッチにリファクタリング
- SlashCommand 定数を shared/constants に追加
- コマンドマッチングのユニットテスト36件を追加
- 行末コマンド・行中非認識のE2Eテスト6件を追加

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 12:59:26 +09:00
Junichi Kato
252c337456
fix: Global/ProjectのmodelがModelログに反映されない不具合を修正 (#417)
* test: add regression for movement model log fallback

* fix: use configured model for movement model logging
2026-02-28 12:54:32 +09:00
nrs
7494149e75
[#421] github-issue-421-feat-pr-opush (#422)
* takt: github-issue-421-feat-pr-opush

* docs: CONTRIBUTING のレビューモード説明を復元

--pr オプション追加に伴い削除されていたブランチモード・現在の差分モードの
ドキュメントを復元。コントリビューターはPR作成前にローカルでレビューする
ケースもあるため、全モードの記載が必要。

* fix: --pr でリモートブランチを fetch してからチェックアウト

他人のPRブランチはローカルに存在しないため、git fetch origin を
実行してからチェックアウトするように修正。また baseBranch を返す
ようにして --auto-pr 併用時の問題も解消。

* refactor: routing の排他条件を if/else に整理、不要なフォールバック削除

- routing.ts: prNumber の排他的分岐を if/else に統合
- pr.ts: data.body は string 型なので ?? '' フォールバックを削除
2026-02-28 12:53:35 +09:00
nrs
e256db8dea
takt: github-issue-398-branchexists (#401) 2026-02-28 12:31:24 +09:00
nrs
ae74c0d595
takt: #391 resolveConfigValue の無意味な defaultValue を撲滅する (#392) 2026-02-28 12:29:24 +09:00
Junichi Kato
b8b64f858b
feat: プロジェクト単位のCLIパス設定(Claude/Cursor/Codex) (#413)
* feat: プロジェクト単位のCLIパス設定を支援するconfig層を追加

validateCliPath汎用関数、Global/Project設定スキーマ拡張、
env override、3プロバイダ向けresolve関数(env→project→global→undefined)を追加。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: Claude/Cursor/CodexプロバイダにCLIパス解決を統合

各プロバイダのtoXxxOptions()でproject configを読み込み、
resolveXxxCliPath()経由でCLIパスを解決してSDKに渡す。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* test: per-project CLIパス機能のテストを追加

validateCliPath, resolveClaudeCliPath, resolveCursorCliPath,
resolveCodexCliPath(project config層)のユニットテスト、
および既存プロバイダテストのモック更新。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 09:44:16 +09:00
Junichi Kato
204843f498
Merge pull request #403 from j5ik2o/feature/cursor-agent-cli-provider-spec
feat: cursor-agent対応
2026-02-27 01:12:17 +09:00
nrslib
f61f71d127 fix: default write_tests skips when target type is unimplemented (#396) 2026-02-27 00:45:40 +09:00
nrslib
7e34d5c4c0 test: expand provider/model resolution matrix coverage 2026-02-27 00:30:07 +09:00
nrslib
644c318295 fix: unify agent provider/model resolution and remove custom agent overrides 2026-02-27 00:27:52 +09:00
nrs
551299dbf8
takt: github-issue-390-to-no-provide (#393) 2026-02-26 23:45:03 +09:00