56 Commits

Author SHA1 Message Date
nrs
e256db8dea
takt: github-issue-398-branchexists (#401) 2026-02-28 12:31:24 +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
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
c066db46c7
takt: refactor-clone-manager (#359) 2026-02-22 21:28:46 +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
134b666480
Merge pull request #350 from tomohisa/fix/worktree-dir-plural
fix: use plural 'takt-worktrees' as default clone directory name
2026-02-22 17:41:21 +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
Tomohisa Takaoka
2e72054c0d fix: use plural 'takt-worktrees' as default clone directory name
The default clone base directory was 'takt-worktree' (singular), which is
inconsistent since multiple worktrees are created inside it.

Changed to 'takt-worktrees' (plural) while maintaining backward compatibility:
- If existing 'takt-worktree' directory exists, continue using it
- New installations will use 'takt-worktrees'
- Explicit worktree_dir config always takes priority
2026-02-21 08:47:42 -08:00
nrslib
291e05a24d fix: prevent romaji conversion stack overflow on long task names 2026-02-20 12:43:40 +09:00
nrslib
f479869d72 fix: retryタスクのcompleted_atクリア漏れを修正
startReExecutionで失敗タスクをrunningに戻す際、
completed_atをnullにリセットしていなかったためZodバリデーションエラーが発生していた。
2026-02-20 07:40:59 +09:00
nrs
4f8255d509
takt: add-draft-pr-option (#323) 2026-02-20 00:35:41 +09:00
nrs
e70bceb4a8
takt: extend-slack-task-notification (#316) 2026-02-19 23:08:17 +09:00
nrs
43f6fa6ade
takt: takt-list (#310) 2026-02-19 17:20:22 +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
nrslib
16d7f9f979 リトライモード新設と instruct/retry の直接再実行対応
失敗タスク専用のリトライモード(retryMode.ts)を追加し、失敗情報・実行ログ・
レポートをシステムプロンプトに注入する方式に変更。instruct モードもタスク情報を
プロンプトに含める専用テンプレートへ移行。requeue のみだった再実行を
startReExecution による即時実行に対応し、既存ワークツリーの再利用も実装。
不要になった DebugConfig を削除。
2026-02-18 22:35:31 +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
251acf8e51 refactor(task-store): replace file-based lock with in-memory guard 2026-02-16 10:14:29 +09:00
nrslib
89cb3f8dbf fix(task-store): prevent EPERM crash in lock release by tracking ownership in memory 2026-02-16 10:02:17 +09:00
nrslib
05b893f720 Release v0.17.0 2026-02-15 12:00:21 +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
nrslib
b54fbe32b2 clone時に既存ブランチのcheckoutが失敗する問題を修正
cloneAndIsolateがgit remote remove originした後、リモート追跡refが
全て消えるため、default以外の既存ブランチをcheckoutできなかった。

git clone --branchでclone時にローカルブランチを作成するように変更。
併せてブランチ名フォーマットからgit非互換の#を除去。
2026-02-12 11:52:43 +09:00
nrslib
eb32cf0138 slug エージェントが暴走するのを対処 2026-02-10 21:19:03 +09:00
nrs
8cb3c87801
takt: github-issue-204-takt-tasks (#205) 2026-02-10 14:26:37 +09:00
nrs
6b207e0c74
github-issue-201-completetask-completed-tasks-yaml (#202)
* fix: stable release時にnext dist-tagを自動同期

* takt: github-issue-201-completetask-completed-tasks-yaml
2026-02-10 13:37:33 +09:00
nrs
f4c105c0c3
takt: github-issue-191-takt-list-priority-refs-ref (#195) 2026-02-10 07:07:18 +09:00
nrs
f8bcc4ce7d
takt: optimize-base-commit-cache (#186) 2026-02-09 23:29:48 +09:00
nrs
4ca414be6b
takt: consolidate-tasks-yaml (#187) 2026-02-09 23:29:24 +09:00
nrs
a481346945
takt: fix-original-instruction-diff (#181) 2026-02-09 20:55:57 +09:00
nrslib
c2aa22f97c パラレルを改良 2026-02-08 17:09:26 +09:00
nrslib
f324225565 takt: github-issue-143-tasuku-takt-r 2026-02-08 11:59:35 +09:00
nrslib
b9a2a0329b auto PR のベースブランチをブランチ作成前の現在ブランチに設定
createPullRequest の全呼び出し箇所で base が未指定だったため、
PR が常にリポジトリデフォルトブランチ(main)向けに作成されていた。
ブランチ作成/clone作成の直前に getCurrentBranch() で元ブランチを
取得し、PR作成時に base として渡すように修正。
2026-02-08 07:51:03 +09:00
nrslib
ea7ce54912 takt: # タスク指示書: resources/ → builtins/ リネーム + export-cc 修正
## 概要
`resources/` ディレクトリを `builtins/` にリネームし、用途を明確化。同時に export-cc コマンドを拡張して全リソースをコピーするように修正する。

---

## タスク一覧

### 1. ディレクトリリネーム(優先度: 高)

| 変更前 | 変更後 |
|--------|--------|
| `resources/` | `builtins/` |
| `resources/global/{lang}/` | `builtins/{lang}/`(global/ 階層を除去) |
| `resources/project/` | `builtins/project/` |
| `resources/skill/` | `builtins/skill/` |

### 2. 不要ファイル削除(優先度: 高)

- `builtins/{lang}/prompts/` を削除
  - 対象: `interactive-system.md`, `interactive-summary.md`
  - 理由: コードから未参照、実体は `src/shared/prompts/`

### 3. コード修正 — パス参照(優先度: 高)

`resources` → `builtins`、`global/{lang}` → `{lang}` に更新:

| ファイル | 修正内容 |
|----------|----------|
| `src/infra/resources/index.ts` | `getResourcesDir()`, `getGlobalResourcesDir()`, `getLanguageResourcesDir()` 等のパス |
| `src/infra/config/paths.ts` | `getBuiltinPiecesDir()`, `getBuiltinPersonasDir()` |
| `src/infra/config/global/initialization.ts` | `copyLanguageConfigYaml()` |
| `src/infra/config/loaders/pieceCategories.ts` | `getLanguageResourcesDir()` 参照 |
| `src/features/config/ejectBuiltin.ts` | `getLanguageResourcesDir()` 参照 |
| `src/features/config/deploySkill.ts` | `getResourcesDir()` 参照 |

### 4. export-cc 修正(優先度: 高)

ファイル: `src/features/config/deploySkill.ts`

**現状**: pieces/ と personas/ のみコピー

**修正後**:
- `builtins/{lang}/` 全体を `~/.claude/skills/takt/` にコピー
- `skill/` のファイル(SKILL.md, references/, takt-command.md)は従来通り
- サマリー表示を新リソースタイプ(stances, instructions, knowledge 等)に対応
- confirm メッセージ修正:
  - 現状: `'上書きしますか?'`
  - 修正後: `'既存のスキルファイルをすべて削除し、最新版に置き換えます。続行しますか?'`

### 5. テスト修正(優先度: 中)

| ファイル | 修正内容 |
|----------|----------|
| `src/__tests__/initialization.test.ts` | `getLanguageResourcesDir` のパス期待値 |
| `src/__tests__/piece-category-config.test.ts` | mock パス |
| その他 `resources` パスを参照しているテスト | パス更新 |

### 6. ビルド・パッケージ設定(優先度: 中)

| ファイル | 修正内容 |
|----------|----------|
| `package.json` | `files` フィールドで `resources/` → `builtins/` |
| `tsconfig.json` | `resources/` への参照があれば更新 |
| `.gitignore` | 必要に応じて更新 |

### 7. ドキュメント(優先度: 低)

- `CLAUDE.md` の Directory Structure セクションを更新
- JSDoc コメントから `prompts/` 記述を削除

---

## 制約

- `builtins/{lang}/` のフラット構造は変更不可(ピースYAML内の相対パス依存)
- eject のセーフティ(skip-if-exists)は変更不要
- export-cc のセーフティ(SKILL.md 存在チェック + confirm)は維持

---

## 確認方法

- `npm run build` が成功すること
- `npm test` が全てパスすること
- `takt init` / `takt eject` / `takt export-cc` が正常動作すること
2026-02-07 14:46:20 +09:00
nrslib
401b2ff2ca wanakana制限 2026-02-07 13:06:14 +09:00
nrslib
e23cfa9a3b agent 周りの抽象化 2026-02-07 10:15:41 +09:00
nrslib
4c0b3c1593 takt: github-issue-98-pr-no-wo-ni-sh 2026-02-06 18:05:19 +09:00
nrslib
919215fad3 resolved 失敗タスクの再投入とムーブメント開始位置の選択機能 #110 2026-02-06 17:22:22 +09:00
nrslib
163561a5b3 ブランチ名生成戦略を設定可能に
デフォルトをローマ字化(高速)に変更し、AI生成が必要な場合は config.yaml で branchNameStrategy: ai を設定可能にした。これによりブランチ名生成の待ち時間を削減し、LLMコストも削減できる。

また、coder エージェントに「根本原因修正後の安全機構迂回は禁止」ルールを追加した。
2026-02-06 16:30:45 +09:00
nrslib
8c83cf60f9 stageAndCommit から git add -f .takt/reports/ を削除
エージェントが c89ac4c で追加した force-add により、worktree 実行時に
.takt/reports/ がコミットに含まれてしまう問題を修正。
.takt/ は .gitignore で除外済みのため force-add は不要。
2026-02-06 16:11:18 +09:00
nrslib
af6f59caa7 Merge branch 'takt/#113/generate-slug-for-task' into develop 2026-02-06 15:03:26 +09:00
nrslib
da2d07bdd3 coding ピースを plan ベースに刷新し、エージェントプロンプトにボーイスカウトルール・後方互換コード検出を追加
- architect-plan → plan ムーブメントに変更、architect-planner エージェント導入
- 「既存パターン踏襲」から「最適パターン検討」へ方針転換
- worktree-sessions 関連コードを削除(未使用機能の整理)
2026-02-06 14:14:09 +09:00
nrslib
c89ac4cc7a takt: fix-report-dir-path 2026-02-06 12:20:18 +09:00
nrslib
378f5477e4 list コマンドのリファクタリング: non-interactive モード分離、delete アクション追加、console.log を info に統一 2026-02-06 08:56:00 +09:00
nrslib
ee0cb8e13a E2Eテスト基盤の追加・レビューエージェント改善・lint修正
- E2Eテストのフィクスチャ、ヘルパー、スペックを追加
- mock/provider別のvitest設定を追加
- レビューエージェントのプロンプト改善
- TTY判定の共通化、list/confirmのnon-interactive対応
- eslint no-non-null-assertion を off に変更、未使用インポート削除
2026-02-05 16:59:32 +09:00
nrslib
c4ebbdb6a6 Codex の際にブランチ名のサマリ処理に問題があったのを修正 2026-02-04 13:40:57 +09:00
nrslib
38d43f2168 pieceに完全移行 2026-02-04 11:07:41 +09:00