From d04bc24591f635ffd3045d1fe16ca9033aab9af3 Mon Sep 17 00:00:00 2001 From: nrslib <38722970+nrslib@users.noreply.github.com> Date: Sun, 15 Feb 2026 12:45:34 +0900 Subject: [PATCH 1/3] feat: add expert-mini/expert-cqrs-mini pieces and fix permission fallback - Add expert-mini and expert-cqrs-mini pieces (ja/en) - Add new pieces to Mini and Expert categories - Fall back to readonly when permission mode is unresolved instead of throwing --- builtins/en/piece-categories.yaml | 4 + builtins/en/pieces/expert-cqrs-mini.yaml | 254 ++++++++++++++++++ builtins/en/pieces/expert-mini.yaml | 247 +++++++++++++++++ builtins/ja/piece-categories.yaml | 4 + builtins/ja/pieces/expert-cqrs-mini.yaml | 254 ++++++++++++++++++ builtins/ja/pieces/expert-mini.yaml | 247 +++++++++++++++++ .../permission-profile-resolution.test.ts | 8 +- .../piece/permission-profile-resolution.ts | 5 +- 8 files changed, 1016 insertions(+), 7 deletions(-) create mode 100644 builtins/en/pieces/expert-cqrs-mini.yaml create mode 100644 builtins/en/pieces/expert-mini.yaml create mode 100644 builtins/ja/pieces/expert-cqrs-mini.yaml create mode 100644 builtins/ja/pieces/expert-mini.yaml diff --git a/builtins/en/piece-categories.yaml b/builtins/en/piece-categories.yaml index b8c77b5..41a521a 100644 --- a/builtins/en/piece-categories.yaml +++ b/builtins/en/piece-categories.yaml @@ -12,6 +12,8 @@ piece_categories: - frontend-mini - backend-mini - backend-cqrs-mini + - expert-mini + - expert-cqrs-mini 🎨 Frontend: pieces: - frontend @@ -25,7 +27,9 @@ piece_categories: 🔧 Expert: pieces: - expert + - expert-mini - expert-cqrs + - expert-cqrs-mini 🛠️ Refactoring: pieces: - structural-reform diff --git a/builtins/en/pieces/expert-cqrs-mini.yaml b/builtins/en/pieces/expert-cqrs-mini.yaml new file mode 100644 index 0000000..e1e7a30 --- /dev/null +++ b/builtins/en/pieces/expert-cqrs-mini.yaml @@ -0,0 +1,254 @@ +name: expert-cqrs-mini +description: CQRS+ES Expert-focused mini development piece (plan -> implement -> parallel review -> fix if needed -> complete) +piece_config: + provider_options: + codex: + network_access: true + opencode: + network_access: true +max_movements: 20 +initial_movement: plan +movements: + - name: plan + edit: false + persona: planner + knowledge: + - frontend + - backend + - cqrs-es + - security + - architecture + allowed_tools: + - Read + - Glob + - Grep + - Bash + - WebSearch + - WebFetch + rules: + - condition: Requirements are clear and implementation is possible + next: implement + - condition: User is asking a question (not an implementation task) + next: COMPLETE + - condition: Requirements are unclear, insufficient information + next: ABORT + instruction: plan + output_contracts: + report: + - name: 00-plan.md + format: plan + - name: implement + edit: true + persona: coder + policy: + - coding + - testing + knowledge: + - frontend + - backend + - cqrs-es + - security + - architecture + allowed_tools: + - Read + - Glob + - Grep + - Edit + - Write + - Bash + - WebSearch + - WebFetch + required_permission_mode: edit + instruction: implement + rules: + - condition: Implementation complete + next: reviewers + - condition: Cannot proceed, insufficient info + next: ABORT + - condition: User input required because there are items to confirm with the user + next: implement + requires_user_input: true + interactive_only: true + output_contracts: + report: + - name: coder-scope.md + format: coder-scope + - name: coder-decisions.md + format: coder-decisions + - name: reviewers + parallel: + - name: ai_review + edit: false + persona: ai-antipattern-reviewer + policy: + - review + - ai-antipattern + allowed_tools: + - Read + - Glob + - Grep + - WebSearch + - WebFetch + instruction: review-ai + rules: + - condition: No AI-specific issues + - condition: AI-specific issues found + output_contracts: + report: + - name: 03-ai-review.md + format: ai-review + - name: supervise + edit: false + persona: expert-supervisor + policy: review + knowledge: + - frontend + - backend + - cqrs-es + - security + - architecture + allowed_tools: + - Read + - Glob + - Grep + - Bash + - WebSearch + - WebFetch + instruction: supervise + rules: + - condition: All checks passed + - condition: Requirements unmet, tests failing + output_contracts: + report: + - name: supervisor-validation.md + format: supervisor-validation + - name: summary.md + format: summary + use_judge: false + rules: + - condition: all("No AI-specific issues", "All checks passed") + next: COMPLETE + - condition: all("AI-specific issues found", "Requirements unmet, tests failing") + next: fix_both + - condition: any("AI-specific issues found") + next: ai_fix + - condition: any("Requirements unmet, tests failing") + next: supervise_fix + - name: fix_both + parallel: + - name: ai_fix_parallel + edit: true + persona: coder + policy: + - coding + - testing + knowledge: + - frontend + - backend + - cqrs-es + - security + - architecture + allowed_tools: + - Read + - Glob + - Grep + - Edit + - Bash + - WebSearch + - WebFetch + required_permission_mode: edit + rules: + - condition: AI Reviewer's issues fixed + - condition: No fix needed (verified target files/spec) + - condition: Cannot proceed, insufficient info + instruction: ai-fix + - name: supervise_fix_parallel + edit: true + persona: coder + policy: + - coding + - testing + knowledge: + - frontend + - backend + - cqrs-es + - security + - architecture + allowed_tools: + - Read + - Glob + - Grep + - Edit + - Bash + - WebSearch + - WebFetch + required_permission_mode: edit + rules: + - condition: Supervisor's issues fixed + - condition: Cannot proceed, insufficient info + instruction: fix-supervisor + rules: + - condition: all("AI Reviewer's issues fixed", "Supervisor's issues fixed") + next: reviewers + - condition: any("No fix needed (verified target files/spec)", "Cannot proceed, insufficient info") + next: implement + - name: ai_fix + edit: true + persona: coder + policy: + - coding + - testing + knowledge: + - frontend + - backend + - cqrs-es + - security + - architecture + allowed_tools: + - Read + - Glob + - Grep + - Edit + - Write + - Bash + - WebSearch + - WebFetch + required_permission_mode: edit + pass_previous_response: false + rules: + - condition: AI Reviewer's issues fixed + next: reviewers + - condition: No fix needed (verified target files/spec) + next: implement + - condition: Cannot proceed, insufficient info + next: implement + instruction: ai-fix + - name: supervise_fix + edit: true + persona: coder + policy: + - coding + - testing + knowledge: + - frontend + - backend + - cqrs-es + - security + - architecture + allowed_tools: + - Read + - Glob + - Grep + - Edit + - Write + - Bash + - WebSearch + - WebFetch + required_permission_mode: edit + pass_previous_response: false + rules: + - condition: Supervisor's issues fixed + next: reviewers + - condition: Cannot proceed, insufficient info + next: implement + instruction: fix-supervisor diff --git a/builtins/en/pieces/expert-mini.yaml b/builtins/en/pieces/expert-mini.yaml new file mode 100644 index 0000000..4bd34ee --- /dev/null +++ b/builtins/en/pieces/expert-mini.yaml @@ -0,0 +1,247 @@ +name: expert-mini +description: Expert-focused mini development piece (plan -> implement -> parallel review -> fix if needed -> complete) +piece_config: + provider_options: + codex: + network_access: true + opencode: + network_access: true +max_movements: 20 +initial_movement: plan +movements: + - name: plan + edit: false + persona: planner + knowledge: + - frontend + - backend + - security + - architecture + allowed_tools: + - Read + - Glob + - Grep + - Bash + - WebSearch + - WebFetch + rules: + - condition: Requirements are clear and implementation is possible + next: implement + - condition: User is asking a question (not an implementation task) + next: COMPLETE + - condition: Requirements are unclear, insufficient information + next: ABORT + instruction: plan + output_contracts: + report: + - name: 00-plan.md + format: plan + - name: implement + edit: true + persona: coder + policy: + - coding + - testing + knowledge: + - frontend + - backend + - security + - architecture + allowed_tools: + - Read + - Glob + - Grep + - Edit + - Write + - Bash + - WebSearch + - WebFetch + required_permission_mode: edit + instruction: implement + rules: + - condition: Implementation complete + next: reviewers + - condition: Cannot proceed, insufficient info + next: ABORT + - condition: User input required because there are items to confirm with the user + next: implement + requires_user_input: true + interactive_only: true + output_contracts: + report: + - name: coder-scope.md + format: coder-scope + - name: coder-decisions.md + format: coder-decisions + - name: reviewers + parallel: + - name: ai_review + edit: false + persona: ai-antipattern-reviewer + policy: + - review + - ai-antipattern + allowed_tools: + - Read + - Glob + - Grep + - WebSearch + - WebFetch + instruction: review-ai + rules: + - condition: No AI-specific issues + - condition: AI-specific issues found + output_contracts: + report: + - name: 03-ai-review.md + format: ai-review + - name: supervise + edit: false + persona: expert-supervisor + policy: review + knowledge: + - frontend + - backend + - security + - architecture + allowed_tools: + - Read + - Glob + - Grep + - Bash + - WebSearch + - WebFetch + instruction: supervise + rules: + - condition: All checks passed + - condition: Requirements unmet, tests failing + output_contracts: + report: + - name: supervisor-validation.md + format: supervisor-validation + - name: summary.md + format: summary + use_judge: false + rules: + - condition: all("No AI-specific issues", "All checks passed") + next: COMPLETE + - condition: all("AI-specific issues found", "Requirements unmet, tests failing") + next: fix_both + - condition: any("AI-specific issues found") + next: ai_fix + - condition: any("Requirements unmet, tests failing") + next: supervise_fix + - name: fix_both + parallel: + - name: ai_fix_parallel + edit: true + persona: coder + policy: + - coding + - testing + knowledge: + - frontend + - backend + - security + - architecture + allowed_tools: + - Read + - Glob + - Grep + - Edit + - Bash + - WebSearch + - WebFetch + required_permission_mode: edit + rules: + - condition: AI Reviewer's issues fixed + - condition: No fix needed (verified target files/spec) + - condition: Cannot proceed, insufficient info + instruction: ai-fix + - name: supervise_fix_parallel + edit: true + persona: coder + policy: + - coding + - testing + knowledge: + - frontend + - backend + - security + - architecture + allowed_tools: + - Read + - Glob + - Grep + - Edit + - Bash + - WebSearch + - WebFetch + required_permission_mode: edit + rules: + - condition: Supervisor's issues fixed + - condition: Cannot proceed, insufficient info + instruction: fix-supervisor + rules: + - condition: all("AI Reviewer's issues fixed", "Supervisor's issues fixed") + next: reviewers + - condition: any("No fix needed (verified target files/spec)", "Cannot proceed, insufficient info") + next: implement + - name: ai_fix + edit: true + persona: coder + policy: + - coding + - testing + knowledge: + - frontend + - backend + - security + - architecture + allowed_tools: + - Read + - Glob + - Grep + - Edit + - Write + - Bash + - WebSearch + - WebFetch + required_permission_mode: edit + pass_previous_response: false + rules: + - condition: AI Reviewer's issues fixed + next: reviewers + - condition: No fix needed (verified target files/spec) + next: implement + - condition: Cannot proceed, insufficient info + next: implement + instruction: ai-fix + - name: supervise_fix + edit: true + persona: coder + policy: + - coding + - testing + knowledge: + - frontend + - backend + - security + - architecture + allowed_tools: + - Read + - Glob + - Grep + - Edit + - Write + - Bash + - WebSearch + - WebFetch + required_permission_mode: edit + pass_previous_response: false + rules: + - condition: Supervisor's issues fixed + next: reviewers + - condition: Cannot proceed, insufficient info + next: implement + instruction: fix-supervisor diff --git a/builtins/ja/piece-categories.yaml b/builtins/ja/piece-categories.yaml index 3a3c28b..7e4e4c3 100644 --- a/builtins/ja/piece-categories.yaml +++ b/builtins/ja/piece-categories.yaml @@ -12,6 +12,8 @@ piece_categories: - frontend-mini - backend-mini - backend-cqrs-mini + - expert-mini + - expert-cqrs-mini 🎨 フロントエンド: pieces: - frontend @@ -25,7 +27,9 @@ piece_categories: 🔧 エキスパート: pieces: - expert + - expert-mini - expert-cqrs + - expert-cqrs-mini 🛠️ リファクタリング: pieces: - structural-reform diff --git a/builtins/ja/pieces/expert-cqrs-mini.yaml b/builtins/ja/pieces/expert-cqrs-mini.yaml new file mode 100644 index 0000000..2b5ceaf --- /dev/null +++ b/builtins/ja/pieces/expert-cqrs-mini.yaml @@ -0,0 +1,254 @@ +name: expert-cqrs-mini +description: CQRS+ES Expert向けMini開発ピース(plan → implement → 並列レビュー → 修正 → 完了) +piece_config: + provider_options: + codex: + network_access: true + opencode: + network_access: true +max_movements: 20 +initial_movement: plan +movements: + - name: plan + edit: false + persona: planner + knowledge: + - frontend + - backend + - cqrs-es + - security + - architecture + allowed_tools: + - Read + - Glob + - Grep + - Bash + - WebSearch + - WebFetch + rules: + - condition: 要件が明確で実装可能 + next: implement + - condition: ユーザーが質問をしている(実装タスクではない) + next: COMPLETE + - condition: 要件が不明確、情報不足 + next: ABORT + instruction: plan + output_contracts: + report: + - name: 00-plan.md + format: plan + - name: implement + edit: true + persona: coder + policy: + - coding + - testing + knowledge: + - frontend + - backend + - cqrs-es + - security + - architecture + allowed_tools: + - Read + - Glob + - Grep + - Edit + - Write + - Bash + - WebSearch + - WebFetch + required_permission_mode: edit + instruction: implement + rules: + - condition: 実装が完了した + next: reviewers + - condition: 実装を進行できない + next: ABORT + - condition: ユーザーへの確認事項があるためユーザー入力が必要 + next: implement + requires_user_input: true + interactive_only: true + output_contracts: + report: + - name: coder-scope.md + format: coder-scope + - name: coder-decisions.md + format: coder-decisions + - name: reviewers + parallel: + - name: ai_review + edit: false + persona: ai-antipattern-reviewer + policy: + - review + - ai-antipattern + allowed_tools: + - Read + - Glob + - Grep + - WebSearch + - WebFetch + instruction: review-ai + rules: + - condition: AI特有の問題なし + - condition: AI特有の問題あり + output_contracts: + report: + - name: 03-ai-review.md + format: ai-review + - name: supervise + edit: false + persona: expert-supervisor + policy: review + knowledge: + - frontend + - backend + - cqrs-es + - security + - architecture + allowed_tools: + - Read + - Glob + - Grep + - Bash + - WebSearch + - WebFetch + instruction: supervise + rules: + - condition: すべて問題なし + - condition: 要求未達成、テスト失敗、ビルドエラー + output_contracts: + report: + - name: supervisor-validation.md + format: supervisor-validation + - name: summary.md + format: summary + use_judge: false + rules: + - condition: all("AI特有の問題なし", "すべて問題なし") + next: COMPLETE + - condition: all("AI特有の問題あり", "要求未達成、テスト失敗、ビルドエラー") + next: fix_both + - condition: any("AI特有の問題あり") + next: ai_fix + - condition: any("要求未達成、テスト失敗、ビルドエラー") + next: supervise_fix + - name: fix_both + parallel: + - name: ai_fix_parallel + edit: true + persona: coder + policy: + - coding + - testing + knowledge: + - frontend + - backend + - cqrs-es + - security + - architecture + allowed_tools: + - Read + - Glob + - Grep + - Edit + - Bash + - WebSearch + - WebFetch + required_permission_mode: edit + rules: + - condition: AI問題の修正完了 + - condition: 修正不要(指摘対象ファイル/仕様の確認済み) + - condition: 判断できない、情報不足 + instruction: ai-fix + - name: supervise_fix_parallel + edit: true + persona: coder + policy: + - coding + - testing + knowledge: + - frontend + - backend + - cqrs-es + - security + - architecture + allowed_tools: + - Read + - Glob + - Grep + - Edit + - Bash + - WebSearch + - WebFetch + required_permission_mode: edit + rules: + - condition: 監督者の指摘に対する修正が完了した + - condition: 修正を進行できない + instruction: fix-supervisor + rules: + - condition: all("AI問題の修正完了", "監督者の指摘に対する修正が完了した") + next: reviewers + - condition: any("修正不要(指摘対象ファイル/仕様の確認済み)", "判断できない、情報不足", "修正を進行できない") + next: implement + - name: ai_fix + edit: true + persona: coder + policy: + - coding + - testing + knowledge: + - frontend + - backend + - cqrs-es + - security + - architecture + allowed_tools: + - Read + - Glob + - Grep + - Edit + - Write + - Bash + - WebSearch + - WebFetch + required_permission_mode: edit + pass_previous_response: false + rules: + - condition: AI問題の修正完了 + next: reviewers + - condition: 修正不要(指摘対象ファイル/仕様の確認済み) + next: implement + - condition: 判断できない、情報不足 + next: implement + instruction: ai-fix + - name: supervise_fix + edit: true + persona: coder + policy: + - coding + - testing + knowledge: + - frontend + - backend + - cqrs-es + - security + - architecture + allowed_tools: + - Read + - Glob + - Grep + - Edit + - Write + - Bash + - WebSearch + - WebFetch + required_permission_mode: edit + pass_previous_response: false + rules: + - condition: 監督者の指摘に対する修正が完了した + next: reviewers + - condition: 修正を進行できない + next: implement + instruction: fix-supervisor diff --git a/builtins/ja/pieces/expert-mini.yaml b/builtins/ja/pieces/expert-mini.yaml new file mode 100644 index 0000000..82a1298 --- /dev/null +++ b/builtins/ja/pieces/expert-mini.yaml @@ -0,0 +1,247 @@ +name: expert-mini +description: Expert向けMini開発ピース(plan → implement → 並列レビュー → 修正 → 完了) +piece_config: + provider_options: + codex: + network_access: true + opencode: + network_access: true +max_movements: 20 +initial_movement: plan +movements: + - name: plan + edit: false + persona: planner + knowledge: + - frontend + - backend + - security + - architecture + allowed_tools: + - Read + - Glob + - Grep + - Bash + - WebSearch + - WebFetch + rules: + - condition: 要件が明確で実装可能 + next: implement + - condition: ユーザーが質問をしている(実装タスクではない) + next: COMPLETE + - condition: 要件が不明確、情報不足 + next: ABORT + instruction: plan + output_contracts: + report: + - name: 00-plan.md + format: plan + - name: implement + edit: true + persona: coder + policy: + - coding + - testing + knowledge: + - frontend + - backend + - security + - architecture + allowed_tools: + - Read + - Glob + - Grep + - Edit + - Write + - Bash + - WebSearch + - WebFetch + required_permission_mode: edit + instruction: implement + rules: + - condition: 実装が完了した + next: reviewers + - condition: 実装を進行できない + next: ABORT + - condition: ユーザーへの確認事項があるためユーザー入力が必要 + next: implement + requires_user_input: true + interactive_only: true + output_contracts: + report: + - name: coder-scope.md + format: coder-scope + - name: coder-decisions.md + format: coder-decisions + - name: reviewers + parallel: + - name: ai_review + edit: false + persona: ai-antipattern-reviewer + policy: + - review + - ai-antipattern + allowed_tools: + - Read + - Glob + - Grep + - WebSearch + - WebFetch + instruction: review-ai + rules: + - condition: AI特有の問題なし + - condition: AI特有の問題あり + output_contracts: + report: + - name: 03-ai-review.md + format: ai-review + - name: supervise + edit: false + persona: expert-supervisor + policy: review + knowledge: + - frontend + - backend + - security + - architecture + allowed_tools: + - Read + - Glob + - Grep + - Bash + - WebSearch + - WebFetch + instruction: supervise + rules: + - condition: すべて問題なし + - condition: 要求未達成、テスト失敗、ビルドエラー + output_contracts: + report: + - name: supervisor-validation.md + format: supervisor-validation + - name: summary.md + format: summary + use_judge: false + rules: + - condition: all("AI特有の問題なし", "すべて問題なし") + next: COMPLETE + - condition: all("AI特有の問題あり", "要求未達成、テスト失敗、ビルドエラー") + next: fix_both + - condition: any("AI特有の問題あり") + next: ai_fix + - condition: any("要求未達成、テスト失敗、ビルドエラー") + next: supervise_fix + - name: fix_both + parallel: + - name: ai_fix_parallel + edit: true + persona: coder + policy: + - coding + - testing + knowledge: + - frontend + - backend + - security + - architecture + allowed_tools: + - Read + - Glob + - Grep + - Edit + - Bash + - WebSearch + - WebFetch + required_permission_mode: edit + rules: + - condition: AI問題の修正完了 + - condition: 修正不要(指摘対象ファイル/仕様の確認済み) + - condition: 判断できない、情報不足 + instruction: ai-fix + - name: supervise_fix_parallel + edit: true + persona: coder + policy: + - coding + - testing + knowledge: + - frontend + - backend + - security + - architecture + allowed_tools: + - Read + - Glob + - Grep + - Edit + - Bash + - WebSearch + - WebFetch + required_permission_mode: edit + rules: + - condition: 監督者の指摘に対する修正が完了した + - condition: 修正を進行できない + instruction: fix-supervisor + rules: + - condition: all("AI問題の修正完了", "監督者の指摘に対する修正が完了した") + next: reviewers + - condition: any("修正不要(指摘対象ファイル/仕様の確認済み)", "判断できない、情報不足", "修正を進行できない") + next: implement + - name: ai_fix + edit: true + persona: coder + policy: + - coding + - testing + knowledge: + - frontend + - backend + - security + - architecture + allowed_tools: + - Read + - Glob + - Grep + - Edit + - Write + - Bash + - WebSearch + - WebFetch + required_permission_mode: edit + pass_previous_response: false + rules: + - condition: AI問題の修正完了 + next: reviewers + - condition: 修正不要(指摘対象ファイル/仕様の確認済み) + next: implement + - condition: 判断できない、情報不足 + next: implement + instruction: ai-fix + - name: supervise_fix + edit: true + persona: coder + policy: + - coding + - testing + knowledge: + - frontend + - backend + - security + - architecture + allowed_tools: + - Read + - Glob + - Grep + - Edit + - Write + - Bash + - WebSearch + - WebFetch + required_permission_mode: edit + pass_previous_response: false + rules: + - condition: 監督者の指摘に対する修正が完了した + next: reviewers + - condition: 修正を進行できない + next: implement + instruction: fix-supervisor diff --git a/src/__tests__/permission-profile-resolution.test.ts b/src/__tests__/permission-profile-resolution.test.ts index d789c02..6fe9fac 100644 --- a/src/__tests__/permission-profile-resolution.test.ts +++ b/src/__tests__/permission-profile-resolution.test.ts @@ -43,11 +43,13 @@ describe('resolveMovementPermissionMode', () => { expect(mode).toBe('full'); }); - it('throws when unresolved', () => { - expect(() => resolveMovementPermissionMode({ + it('falls back to readonly when unresolved', () => { + const mode = resolveMovementPermissionMode({ movementName: 'fix', provider: 'codex', - })).toThrow(/Unable to resolve permission mode/); + }); + + expect(mode).toBe('readonly'); }); it('resolves from required_permission_mode when provider is omitted', () => { diff --git a/src/core/piece/permission-profile-resolution.ts b/src/core/piece/permission-profile-resolution.ts index 41dbdc2..340626f 100644 --- a/src/core/piece/permission-profile-resolution.ts +++ b/src/core/piece/permission-profile-resolution.ts @@ -63,10 +63,7 @@ export function resolveMovementPermissionMode(input: ResolvePermissionModeInput) return input.requiredPermissionMode; } - throw new Error( - `Unable to resolve permission mode for movement "${input.movementName}" and provider "${input.provider}": ` + - 'define provider_profiles defaults/overrides or movement.required_permission_mode.', - ); + return 'readonly'; } const PERMISSION_MODE_RANK: Record = { From b9e66a116684fcfad1f3dd8d09338e4f02eeb0ca Mon Sep 17 00:00:00 2001 From: nrslib <38722970+nrslib@users.noreply.github.com> Date: Sun, 15 Feb 2026 12:46:16 +0900 Subject: [PATCH 2/3] Release v0.17.2 --- CHANGELOG.md | 11 +++++++++++ README.md | 2 ++ docs/README.ja.md | 2 ++ package-lock.json | 4 ++-- package.json | 2 +- 5 files changed, 18 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 543ec7a..7eaa550 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,17 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). +## [0.17.2] - 2026-02-15 + +### Added + +- `expert-mini`、`expert-cqrs-mini` ピースを追加 — Expert ピースの軽量版として、plan → implement → 並列レビュー(AI アンチパターン+スーパーバイザー)→ 修正のワークフローを提供 +- ピースカテゴリの「⚡ Mini」「🔧 エキスパート」に新ピースを追加 + +### Fixed + +- パーミッションモード未解決時にエラーをスローしていた問題を修正 — `readonly` にフォールバックするように変更 + ## [0.17.1] - 2026-02-15 ### Changed diff --git a/README.md b/README.md index bfd9ae0..175702f 100644 --- a/README.md +++ b/README.md @@ -467,7 +467,9 @@ TAKT includes multiple builtin pieces: | `review-fix-minimal` | Review-focused piece: review → fix → supervisor. For iterative improvement based on review feedback. | | `research` | Research piece: planner → digger → supervisor. Autonomously executes research without asking questions. | | `expert` | Full-stack development piece: architecture, frontend, security, QA reviews with fix loops. | +| `expert-mini` | Mini expert piece: plan → implement → parallel review (AI antipattern + expert supervisor) with full-stack knowledge injection. | | `expert-cqrs` | Full-stack development piece (CQRS+ES specialized): CQRS+ES, frontend, security, QA reviews with fix loops. | +| `expert-cqrs-mini` | Mini CQRS+ES expert piece: plan → implement → parallel review (AI antipattern + expert supervisor) with CQRS+ES knowledge injection. | | `magi` | Deliberation system inspired by Evangelion. Three AI personas (MELCHIOR, BALTHASAR, CASPER) analyze and vote. | | `passthrough` | Thinnest wrapper. Pass task directly to coder as-is. No review. | | `compound-eye` | Multi-model review: sends the same instruction to Claude and Codex simultaneously, then synthesizes both responses. | diff --git a/docs/README.ja.md b/docs/README.ja.md index 1a5e362..f6ec48f 100644 --- a/docs/README.ja.md +++ b/docs/README.ja.md @@ -467,7 +467,9 @@ TAKTには複数のビルトインピースが同梱されています: | `review-fix-minimal` | レビュー重視ピース: レビュー → 修正 → スーパーバイザー。レビューフィードバックに基づく反復改善向け。 | | `research` | リサーチピース: プランナー → ディガー → スーパーバイザー。質問せずに自律的にリサーチを実行。 | | `expert` | フルスタック開発ピース: アーキテクチャ、フロントエンド、セキュリティ、QA レビューと修正ループ。 | +| `expert-mini` | ミニエキスパートピース: 計画 → 実装 → 並列レビュー(AI アンチパターン+エキスパートスーパーバイザー)。フルスタックナレッジ注入付き。 | | `expert-cqrs` | フルスタック開発ピース(CQRS+ES特化): CQRS+ES、フロントエンド、セキュリティ、QA レビューと修正ループ。 | +| `expert-cqrs-mini` | ミニ CQRS+ES エキスパートピース: 計画 → 実装 → 並列レビュー(AI アンチパターン+エキスパートスーパーバイザー)。CQRS+ES ナレッジ注入付き。 | | `magi` | エヴァンゲリオンにインスパイアされた審議システム。3つの AI ペルソナ(MELCHIOR、BALTHASAR、CASPER)が分析し投票。 | | `passthrough` | 最小構成。タスクをそのまま coder に渡す薄いラッパー。レビューなし。 | | `compound-eye` | マルチモデルレビュー: Claude と Codex に同じ指示を同時送信し、両方の回答を統合。 | diff --git a/package-lock.json b/package-lock.json index c7e197a..6a506ed 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "takt", - "version": "0.17.1", + "version": "0.17.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "takt", - "version": "0.17.1", + "version": "0.17.2", "license": "MIT", "dependencies": { "@anthropic-ai/claude-agent-sdk": "^0.2.37", diff --git a/package.json b/package.json index 4eb89ad..d8c9782 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "takt", - "version": "0.17.1", + "version": "0.17.2", "description": "TAKT: TAKT Agent Koordination Topology - AI Agent Piece Orchestration", "main": "dist/index.js", "types": "dist/index.d.ts", From 1a05f31a037328b0840dc7d2c5e0ba32ac3e553e Mon Sep 17 00:00:00 2001 From: nrslib <38722970+nrslib@users.noreply.github.com> Date: Sun, 15 Feb 2026 12:58:07 +0900 Subject: [PATCH 3/3] fix(e2e): align add-and-run test with completed-status task lifecycle --- docs/testing/e2e.md | 2 +- e2e/specs/add-and-run.e2e.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/testing/e2e.md b/docs/testing/e2e.md index da7eaa0..01ed20c 100644 --- a/docs/testing/e2e.md +++ b/docs/testing/e2e.md @@ -43,7 +43,7 @@ E2Eテストを追加・変更した場合は、このドキュメントも更 - `.takt/tasks.yaml` にタスクを作成(`piece` は `e2e/fixtures/pieces/simple.yaml` を指定)。 - `takt run` を実行する。 - `README.md` に行が追加されることを確認する。 - - 実行後にタスクが `tasks.yaml` から消えることを確認する。 + - 実行後にタスクが `tasks.yaml` で `completed` ステータスになることを確認する。 - Worktree/Clone isolation(`e2e/specs/worktree.e2e.ts`) - 目的: `--create-worktree yes` 指定で隔離環境に実行されることを確認。 - LLM: 条件付き(`TAKT_E2E_PROVIDER` が `claude` / `codex` の場合に呼び出す) diff --git a/e2e/specs/add-and-run.e2e.ts b/e2e/specs/add-and-run.e2e.ts index ac91c0e..01b4373 100644 --- a/e2e/specs/add-and-run.e2e.ts +++ b/e2e/specs/add-and-run.e2e.ts @@ -74,10 +74,10 @@ describe('E2E: Add task and run (takt add → takt run)', () => { const readme = readFileSync(readmePath, 'utf-8'); expect(readme).toContain('E2E test passed'); - // Verify completed task was removed from tasks.yaml + // Verify completed task is marked as completed in tasks.yaml const tasksRaw = readFileSync(tasksFile, 'utf-8'); const parsed = parseYaml(tasksRaw) as { tasks?: Array<{ name?: string; status?: string }> }; const executed = parsed.tasks?.find((task) => task.name === 'e2e-test-task'); - expect(executed).toBeUndefined(); + expect(executed?.status).toBe('completed'); }, 240_000); });