348 Commits

Author SHA1 Message Date
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
nrslib
798e89605d feat: TeamLeader に refill threshold と動的パート追加を導入
TeamLeaderRunner を4モジュールに分割(execution, aggregation, common, streaming)し、
パート完了時にキュー残数が refill_threshold 以下になると追加タスクを動的に生成する
worker pool 型の実行モデルを実装。ParallelLogger に LineTimeSliceBuffer を追加し
ストリーミング出力を改善。deep-research ピースに team_leader 設定を追加。
2026-02-26 22:33:22 +09:00
nrs
deca6a2f3d
[#368] fix-broken-issue-title-session (#371)
* takt: fix-broken-issue-title-session

* takt: fix-broken-issue-title-session
2026-02-26 13:33:02 +09:00
nrslib
f6d8c353d3 refactor: provider のデフォルト値 'claude' を廃止し明示設定を必須化
暗黙の claude フォールバックを削除し、未設定時は明確なエラーを返すように変更。
permission は未設定時 readonly にフォールバック。テスト・E2E を新挙動に適合。
2026-02-26 02:11:49 +09:00
nrs
6d0bac9d07
[#367] abstract-git-provider (#375)
* takt: abstract-git-provider

* takt: abstract-git-provider

* takt: abstract-git-provider

* fix: pushBranch のインポートパスを infra/task に修正

Git provider 抽象化により pushBranch が infra/github から infra/task に
移動したため、taskSyncAction とテストのインポートパスを更新。
2026-02-26 01:09:29 +09:00
Junichi Kato
f6334b8e75
feat: add submodule acquisition support in project config (#387) 2026-02-26 01:06:14 +09:00
nrslib
9f15840d63 refactor: sync with root をピースエンジンから単発エージェント呼び出しに変更
- executeTask(フルピースエンジン)→ Provider 抽象経由の単発エージェント呼び出しに簡素化
- Claude 固定の callClaudeCustom → getProvider() による Provider 抽象化
- permissionMode: 'full' → 'edit' + onPermissionRequest で Bash 自動承認
- コンフリクト解決プロンプトをテンプレートファイル(en/ja)に分離
- sync 後に worktree → project → origin の2段階プッシュを追加
2026-02-26 00:33:33 +09:00
Yuma Satake
6a175bcb11
Merge pull request #377 from Yuma-Satake/feature/issue-111
Fix #111 Issue作成時にラベルを選択できるようにする
2026-02-25 23:48:36 +09:00
nrslib
6901b2a121 feat: default ピースをテスト先行開発に変更し、レポートファイル名をセマンティック命名に統一
- 全ピースのレポートファイル名から番号プレフィックスを除去(00-plan.md → plan.md 等)
- default ピースに write_tests ムーブメントと testing-review 並列レビューを追加
- プランナーに参照資料の意図判断ルールとスコープ外セクションを追加
2026-02-25 01:02:33 +09:00
nrslib
6bea78adb4 fix: lineEditor のサロゲートペア対応と Ctrl+J 改行挿入を追加 2026-02-24 23:51:07 +09:00
nrslib
a49d3af7a9 settingSources に project を追加し、CLAUDE.md の読み込みを SDK に委譲
手動で CLAUDE.md を読み込んでいた loadProjectContext を削除し、
SDK の settingSources: ['project'] でプロジェクトコンテキストを自動解決するよう変更
2026-02-24 16:48:43 +09:00
nrslib
cc7f73dc3e review ピースに拡張: PR/ブランチ/現在の差分の3モード自動判定に対応
pr-review → review にリネームし、gather が入力テキストからモードを自動判定する。
ブランチ名の判定を git branch -a で確認する方式に強化、直近Nコミット指定に対応、
output contract にコミット履歴セクションを追加。
2026-02-24 13:11:31 +09:00
nrslib
c44477dea0 pr-review ピース追加: 5並列レビュー(arch/security/qa/testing/requirements)で PR を多角的にレビュー
gather → reviewers(並列5) → supervise → COMPLETE のフローで、PR情報とリンクIssueを収集後、
5つの専門レビュワーが並列にレビューし、supervisorが統合サマリーを出力する。
review-only と review-fix-minimal は pr-review に置き換えて削除。
2026-02-24 11:20:56 +09:00
nrs
dfc9263ef0
Merge pull request #369 from KentarouTakeda/support-ask-user-question
feat: AskUserQuestion 対応 (#161)
2026-02-23 22:01:13 +09:00
nrslib
f2ca01ffe0 refactor: provider/model resolution precedenceを一元化 2026-02-23 15:28:38 +09:00
武田 憲太郎
61959f66a9 feat: AskUserQuestion 対応 (#161) 2026-02-23 15:24:10 +09:00
nrslib
69f13283a2 fix: movement provider override precedence in AgentRunner 2026-02-23 15:18:32 +09:00
nrslib
95cd36037a feat: ProjectLocalConfig に concurrency を追加 2026-02-23 14:59:40 +09:00
nrslib
6a28929497 fix: 通知ユーティリティのテストモック追加と check:release の通知対応
通知機能(notifySuccess/notifyError/playWarningSound)追加に伴い、
テストの vi.mock を修正。重複モックの統合、vitest 環境変数の追加、
GH API の recursive パラメータ修正、check:release に macOS 通知を追加。
2026-02-23 14:34:20 +09:00
nrs
e5902b87ad
takt: Execute アクションで tasks.yaml への追加をスキップする skipTaskList オプション (#334)
- SelectAndExecuteOptions に skipTaskList フラグを追加
- routing.ts の Execute アクションで skipTaskList: true を設定
- taskRecord の null チェックで条件分岐を統一
- テストを現在の taskResultHandler API に合わせて修正
2026-02-22 22:05:13 +09:00
nrs
f307ed80f0
takt: tasuku-takt-list-komandoni-iss (#335) 2026-02-22 21:57:48 +09:00
nrs
4a7dea48ca
takt: tasuku-taktga-surupull-request (#336) 2026-02-22 21:52:40 +09:00
nrs
b309233aeb
takt: github-issue-328-tasuku-ritora (#340) 2026-02-22 21:43:25 +09:00
nrs
9e68f086d4
takt: refactor-project-config-case (#358) 2026-02-22 21:33:42 +09:00
nrs
c066db46c7
takt: refactor-clone-manager (#359) 2026-02-22 21:28:46 +09:00
nrs
1acd991e7e
feat: pipeline モードでの Slack 通知を強化 (#346) (#347)
* feat: pipeline モードでの Slack 通知を try/finally パターンで実装

- executePipeline の本体を try/finally で囲み、全終了パスで通知を送信
- PipelineResult でスプレッド演算子による不変状態追跡
- notifySlack ヘルパーで webhook 未設定時は即 return
- 既存の早期リターンパターンを保持したまま通知機能を追加

* refactor: executePipeline のオーケストレーションと各ステップを分離

- execute.ts: オーケストレーション + Slack 通知 (157行)
- steps.ts: 5つのステップ関数 + テンプレートヘルパー (233行)
- runPipeline で全ステップを同じ抽象レベルに揃えた
- buildResult ヘルパーで let 再代入を最小化

* test: commitAndPush の git 操作失敗時の exit code 4 テストを追加
2026-02-22 21:06:29 +09:00
Tomohisa Takaoka
a08adadfb3
fix: PR creation failure handling + use default branch for base (#345)
* fix: mark task as failed when PR creation fails

Previously, when PR creation failed (e.g. invalid base branch),
the task was still marked as 'completed' even though the PR was
not created. This fix ensures:

- postExecutionFlow returns prFailed/prError on failure
- executeAndCompleteTask marks the task as failed when PR fails
- selectAndExecuteTask runs postExecution before persisting result

The pipeline path (executePipeline) already handled this correctly
via EXIT_PR_CREATION_FAILED.

* fix: use detectDefaultBranch instead of getCurrentBranch for PR base

Previously, baseBranch for PR creation was set to HEAD's current branch
via getCurrentBranch(). When the user was on a feature branch like
'codex/pr-16-review', PRs were created with --base codex/pr-16-review,
which fails because it doesn't exist on the remote.

Now uses detectDefaultBranch() (via git symbolic-ref refs/remotes/origin/HEAD)
to always use the actual default branch (main/master) as the PR base.

Affected paths:
- resolveTask.ts (takt run)
- selectAndExecute.ts (interactive mode)
- pipeline/execute.ts (takt pipeline)
2026-02-22 20:37:14 +09:00
nrs
f557db0908
feat: support --create-worktree in pipeline mode (#361)
Pipeline mode previously ignored the --create-worktree option.
Now when --create-worktree yes is specified with --pipeline,
a worktree is created and the agent executes in the isolated directory.

- Add createWorktree field to PipelineExecutionOptions
- Pass createWorktreeOverride from routing to executePipeline
- Use confirmAndCreateWorktree when createWorktree is true
- Execute task in worktree directory (execCwd) instead of project cwd
2026-02-22 20:32:36 +09:00
nrslib
a5e2badc0b fix: Claude resume候補をjsonlフォールバックで取得 2026-02-22 17:54:15 +09:00
nrs
077d19a6b0
Merge pull request #355 from s-kikuchi/takt/20260222T0402-tasuku-purojekuto-takt-config
fix: Project-level model config ignored — getLocalLayerValue missing model case
2026-02-22 17:35:33 +09:00
nrs
1d6770c479
Merge pull request #344 from tomohisa/feat/auto-sync-before-clone
feat: opt-in auto_fetch and base_branch config for clone
2026-02-22 17:29:39 +09:00
kikuchi
753deb6539 fix: Project-level model config ignored — getLocalLayerValue missing model case 2026-02-22 13:49:32 +09:00
nrslib
c630d78806 refactor: rename ensemble to repertoire across codebase 2026-02-22 10:50:50 +09:00