155 Commits

Author SHA1 Message Date
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
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
nrslib
c630d78806 refactor: rename ensemble to repertoire across codebase 2026-02-22 10:50:50 +09:00
nrslib
53a465ef56 fix: update deploySkill for facets layout, add piped stdin confirm support 2026-02-22 08:12:00 +09:00
Tomohisa Takaoka
1d7336950e feat: opt-in auto_fetch and base_branch config for clone
Replace the always-on syncDefaultBranch with opt-in resolveBaseBranch:

- Add auto_fetch config (default: false) — only fetch when enabled
- Add base_branch config (project and global) — fallback to current branch
- Fetch-only mode: git fetch origin without modifying local branches
- Use fetched commit hash (origin/<base_branch>) to reset clone to latest
- No more git merge --ff-only or git fetch origin main:main

Config example:
  # ~/.takt/config.yaml or .takt/config.yaml
  auto_fetch: true
  base_branch: develop

Addresses review feedback: opt-in behavior, no local branch changes,
configurable base branch with current-branch fallback.
2026-02-21 12:30:26 -08:00
nrslib
9e3fb5cf16 fix: validate override piece via resolver including ensemble scope 2026-02-22 02:47:11 +09:00
nrslib
102f31447a refactor: rename faceted to facets across package layout 2026-02-22 02:40:33 +09:00
nrslib
8930688a95 fix: simplify package content check and facets label 2026-02-22 02:39:25 +09:00
nrslib
9e6e7e3550 update message 2026-02-22 02:27:47 +09:00
nrslib
cb0b7a04ca fix: resolve ensemble build type errors 2026-02-22 02:19:18 +09:00
nrslib
05865eb04e refactor: centralize ensemble manifest filename constant 2026-02-22 02:07:32 +09:00
nrslib
b6e3c7883d feat: implement ensemble package import and faceted layout 2026-02-22 02:05:48 +09:00
nrslib
75ce583d0b fix: イテレーション入力待ち中のpoll_tickログ連続出力を抑制
入力待ちフラグ(enterInputWait/leaveInputWait)を導入し、
selectOption待ち中はワーカープールのポーリングログをスキップする。
入力完了で自動復活。
2026-02-20 23:42:38 +09:00
nrs
b9dfe93d85
takt: add-sync-with-root (#325) 2026-02-20 11:58:48 +09:00
nrs
dec77e069e
add-model-to-persona-providers (#324)
* takt: add-model-to-persona-providers

* refactor: loadConfigを廃止しresolveConfigValueにキー単位解決を一元化

loadConfig()による一括マージを廃止し、resolveConfigValue()でキーごとに
global/project/piece/envの優先順位を宣言的に解決する方式に移行。
providerOptionsの優先順位をglobal < piece < project < envに修正し、
sourceトラッキングでOptionsBuilderのマージ方向を制御する。
2026-02-20 11:12:46 +09:00
nrs
4f8255d509
takt: add-draft-pr-option (#323) 2026-02-20 00:35:41 +09:00
nrs
5960a0d212
takt: add-all-delete-option (#322) 2026-02-20 00:29:07 +09:00
nrslib
2926785c2c fix: retryコマンドの有効範囲と案内文を修正 2026-02-19 23:28:39 +09:00
nrs
e70bceb4a8
takt: extend-slack-task-notification (#316) 2026-02-19 23:08:17 +09:00
nrslib
3c319d612d 未使用import削除とclaude-agent-sdk更新
未使用のloadPersonaSessions、EXIT_SIGINT、hasPreviousOrder変数を削除。
claude-agent-sdkを0.2.47に更新。saveTaskFileテストにsummarize mockを追加。
2026-02-19 21:22:08 +09:00
nrslib
743344a51b 既存PRへのコメント追加に対応し、PR重複作成を防止
タスク再実行時に同じブランチのPRが既に存在する場合、新規作成ではなく
既存PRにコメントを追加するようにした。
2026-02-19 21:21:59 +09:00
nrslib
a8adfdd02a リトライ時のムーブメント選択で失敗箇所にカーソルを初期配置する
selectOption → selectOptionWithDefault に変更し、前回失敗したムーブメントが
デフォルト選択されるようにした。Enter一発で失敗箇所から再開できる。
2026-02-19 20:08:14 +09:00
nrs
6371b8f3b1
takt: task-1771451707814 (#314) 2026-02-19 19:51:18 +09:00
nrslib
0441ba55d1 Merge branch 'develop' into takt/308/improve-retry-instruct-interac 2026-02-19 17:34:39 +09:00
nrs
340996c57e
takt: task-1771426242274 (#311) 2026-02-19 17:32:11 +09:00
nrs
43f6fa6ade
takt: takt-list (#310) 2026-02-19 17:20:22 +09:00
nrs
80a79683ac
github-issue-304-builtin (#309)
* takt: github-issue-304-builtin

* ピース選択UIから「also in」表示を削除
2026-02-19 17:14:07 +09:00
nrs
99aa22d250
takt: github-issue-259-debug-takt (#312) 2026-02-19 16:57:24 +09:00
nrslib
54001b5122 takt: instruct 2026-02-19 13:16:47 +09:00
nrslib
5f4ad753d8 feat: add takt reset config with backup restore 2026-02-19 11:59:42 +09:00
nrslib
67ae3e8ae5 refactor: piece設定解決とconfig優先順位の参照経路を統一 2026-02-19 11:22:49 +09:00
nrslib
cbde7ac654 refactor: 設定参照をresolveConfigValueへ統一 2026-02-19 10:55:03 +09:00
nrslib
5dc79946f2 refactor: 設定解決をloadConfigへ統一し不要設定を削除 2026-02-19 10:32:59 +09:00
nrs
3de574e81b
takt: github-issue-215-issue (#294) 2026-02-18 22:48:50 +09:00
nrslib
16d7f9f979 リトライモード新設と instruct/retry の直接再実行対応
失敗タスク専用のリトライモード(retryMode.ts)を追加し、失敗情報・実行ログ・
レポートをシステムプロンプトに注入する方式に変更。instruct モードもタスク情報を
プロンプトに含める専用テンプレートへ移行。requeue のみだった再実行を
startReExecution による即時実行に対応し、既存ワークツリーの再利用も実装。
不要になった DebugConfig を削除。
2026-02-18 22:35:31 +09:00
nrslib
85c845057e 対話ループのE2Eテスト追加とstdinシミュレーション共通化
parseMetaJsonの空ファイル・不正JSON耐性を修正し、実際のstdin入力を
再現するE2Eテスト(会話ルート20件、ランセッション連携6件)を追加。
3ファイルに散在していたstdinシミュレーションコードをhelpers/stdinSimulator.tsに集約。
2026-02-18 19:50:33 +09:00
nrslib
620e384251 interactiveモジュールの分割とタスク再キュー方式への移行
interactive.tsからsummary/runSelector/runSessionReader/selectorUtilsを分離し、
run session参照をrouting層からinstructMode層に移動。instructBranchで新タスク
作成の代わりに既存タスクのrequeueを使用する方式に変更。worktree確認プロンプトを
廃止し常時有効化。
2026-02-18 18:49:21 +09:00
nrslib
05b893f720 Release v0.17.0 2026-02-15 12:00:21 +09:00
nrslib
f065ee510f feat: resolve movement permissions via provider profiles with required floor 2026-02-15 07:00:03 +09:00
nrslib
6e14cd3c38 feat(runtime): add configurable prepare presets and provider e2e 2026-02-15 05:28:39 +09:00
nrs
e52e1da6bf
takt-list (#271)
* refactor: provider/modelの解決ロジックをAgentRunnerに集約

OptionsBuilderでCLIレベルとstepレベルを事前マージしていたのをやめ、
stepProvider/stepModelとして分離して渡す形に変更。
AgentRunnerが全レイヤーの優先度を一括で解決する。

* takt: takt-list
2026-02-14 11:44:01 +09:00
nrslib
9cc6ac2ca7 ポストエクスキューションの共通化とinstructモードの改善
- commit+push+PR作成ロジックをpostExecutionFlowに抽出し、interactive/run/watchの3ルートで共通化
- instructモードはexecuteでcommit+pushのみ(既存PRにpushで反映されるためPR作成不要)
- instructのsave_taskで元ブランチ名・worktree・auto_pr:falseを固定保存(プロンプト不要)
- instructの会話ループにpieceContextを渡し、/goのサマリー品質を改善
- resolveTaskExecutionのautoPrをboolean必須に変更(undefinedフォールバック廃止)
- cloneデフォルトパスを../から../takt-worktree/に変更
2026-02-14 01:02:23 +09:00
nrs
4e58c86643
github-issue-256-takt-list-instruct (#267)
* fix: OpenCode SDKサーバー起動タイムアウトを30秒に延長

* takt: github-issue-256-takt-list-instruct

* refactor: 会話後アクションフローを共通化
2026-02-13 22:08:28 +09:00
nrs
02272e595c
github-issue-255-ui (#266)
* update builtin

* fix: OpenCode SDKサーバー起動タイムアウトを30秒に延長

* takt: github-issue-255-ui

* 無駄な条件分岐を削除
2026-02-13 21:59:00 +09:00
nrs
3ff6f99152
task-1770947391780 (#270)
* fix: OpenCode SDKサーバー起動タイムアウトを30秒に延長

* takt: task-1770947391780
2026-02-13 21:52:17 +09:00
nrslib
0fe835ecd9 fix e2e 2026-02-13 07:24:12 +09:00
nrslib
7d20c016c7 無用なexportを排除 2026-02-12 17:33:39 +09:00
nrslib
bf4196d3b3 takt: github-issue-257 2026-02-12 13:32:28 +09:00