Release v0.22.0

This commit is contained in:
nrslib 2026-02-22 08:07:54 +09:00
parent 9e3fb5cf16
commit 3e9dee5779
8 changed files with 111 additions and 5 deletions

View File

@ -6,6 +6,35 @@ 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/). The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
## [0.22.0] - 2026-02-22
### Added
- **Ensemble package system** (`takt ensemble add/remove/list`): Import and manage external TAKT packages from GitHub — `takt ensemble add github:{owner}/{repo}@{ref}` downloads packages to `~/.takt/ensemble/` with atomic installation, version compatibility checks, lock files, and package content summary before confirmation
- **@scope references in piece YAML**: Facet references now support `@{owner}/{repo}/{facet-name}` syntax to reference facets from installed ensemble packages (e.g., `persona: @nrslib/takt-fullstack/expert-coder`)
- **4-layer facet resolution**: Upgraded from 3-layer (project → user → builtin) to 4-layer (package-local → project → user → builtin) — ensemble package pieces automatically resolve their own facets first
- **Ensemble category in piece selection**: Installed ensemble packages automatically appear as subcategories under an "ensemble" category in the piece selection UI
- **Build gate in implement/fix instructions**: `implement` and `fix` builtin instructions now require build (type check) verification before test execution
- **TAKT Pack specification** (`docs/takt-pack-spec.md`): Documentation for the TAKT package manifest format
### Changed
- **BREAKING: Facets directory restructured**: Facet directories moved under a `facets/` subdirectory at all levels — `builtins/{lang}/{facetType}/``builtins/{lang}/facets/{facetType}/`, `~/.takt/{facetType}/``~/.takt/facets/{facetType}/`, `.takt/{facetType}/``.takt/facets/{facetType}/`. Migration: move your custom facet files into the new `facets/` subdirectory
- Contract string hardcoding prevention rule added to coding policy and architecture review instruction
### Fixed
- Override piece validation now includes ensemble scope via the resolver
- Suppressed `poll_tick` debug log flooding during iteration input wait
- Piece resolver `stat()` calls now catch errors gracefully instead of crashing on inaccessible entries
### Internal
- Comprehensive ensemble test suite: atomic-update, ensemble-paths, file-filter, github-ref-resolver, github-spec, list, lock-file, pack-summary, package-facet-resolution, remove-reference-check, remove, takt-pack-config, tar-parser, takt-pack-schema
- Added `src/faceted-prompting/scope.ts` for @scope reference parsing, validation, and resolution
- Added scope-ref tests for the faceted-prompting module
- Added `inputWait.ts` for shared input-wait state to suppress worker pool log noise
## [0.21.0] - 2026-02-20 ## [0.21.0] - 2026-02-20
### Added ### Added

View File

@ -145,6 +145,7 @@ See the [Builtin Catalog](./docs/builtin-catalog.md) for all pieces and personas
| `takt #N` | Execute GitHub Issue as task | | `takt #N` | Execute GitHub Issue as task |
| `takt switch` | Switch active piece | | `takt switch` | Switch active piece |
| `takt eject` | Copy builtin pieces/personas for customization | | `takt eject` | Copy builtin pieces/personas for customization |
| `takt ensemble add` | Install an ensemble package from GitHub |
See the [CLI Reference](./docs/cli-reference.md) for all commands and options. See the [CLI Reference](./docs/cli-reference.md) for all commands and options.
@ -212,10 +213,12 @@ See the [CI/CD Guide](./docs/ci-cd.md) for full setup instructions.
~/.takt/ # Global config ~/.takt/ # Global config
├── config.yaml # Provider, model, language, etc. ├── config.yaml # Provider, model, language, etc.
├── pieces/ # User piece definitions ├── pieces/ # User piece definitions
└── personas/ # User persona prompts ├── facets/ # User facets (personas, policies, knowledge, etc.)
└── ensemble/ # Installed ensemble packages
.takt/ # Project-level .takt/ # Project-level
├── config.yaml # Project config ├── config.yaml # Project config
├── facets/ # Project facets
├── tasks.yaml # Pending tasks ├── tasks.yaml # Pending tasks
├── tasks/ # Task specifications ├── tasks/ # Task specifications
└── runs/ # Execution reports, logs, context └── runs/ # Execution reports, logs, context
@ -247,6 +250,7 @@ await engine.run();
| [Agent Guide](./docs/agents.md) | Custom agent configuration | | [Agent Guide](./docs/agents.md) | Custom agent configuration |
| [Builtin Catalog](./docs/builtin-catalog.md) | All builtin pieces and personas | | [Builtin Catalog](./docs/builtin-catalog.md) | All builtin pieces and personas |
| [Faceted Prompting](./docs/faceted-prompting.md) | Prompt design methodology | | [Faceted Prompting](./docs/faceted-prompting.md) | Prompt design methodology |
| [TAKT Pack Spec](./docs/takt-pack-spec.md) | Ensemble package format |
| [Task Management](./docs/task-management.md) | Task queuing, execution, isolation | | [Task Management](./docs/task-management.md) | Task queuing, execution, isolation |
| [CI/CD Integration](./docs/ci-cd.md) | GitHub Actions and pipeline mode | | [CI/CD Integration](./docs/ci-cd.md) | GitHub Actions and pipeline mode |
| [Changelog](./CHANGELOG.md) ([日本語](./docs/CHANGELOG.ja.md)) | Version history | | [Changelog](./CHANGELOG.md) ([日本語](./docs/CHANGELOG.ja.md)) | Version history |

View File

@ -6,6 +6,35 @@
フォーマットは [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) に基づいています。 フォーマットは [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) に基づいています。
## [0.22.0] - 2026-02-22
### Added
- **Ensemble パッケージシステム** (`takt ensemble add/remove/list`): GitHub から外部 TAKT パッケージをインポート・管理 — `takt ensemble add github:{owner}/{repo}@{ref}` でパッケージを `~/.takt/ensemble/` にダウンロード。アトミックなインストール、バージョン互換チェック、ロックファイル生成、確認前のパッケージ内容サマリ表示に対応
- **@scope 参照**: piece YAML のファセット参照で `@{owner}/{repo}/{facet-name}` 構文をサポート — インストール済み ensemble パッケージのファセットを直接参照可能(例: `persona: @nrslib/takt-fullstack/expert-coder`
- **4層ファセット解決**: 3層project → user → builtinから4層package-local → project → user → builtinに拡張 — ensemble パッケージのピースは自パッケージ内のファセットを最優先で解決
- **ピース選択に ensemble カテゴリ追加**: インストール済みの ensemble パッケージがピース選択 UI の「ensemble」カテゴリにサブカテゴリとして自動表示
- **implement/fix インストラクションにビルドゲート追加**: `implement``fix` のビルトインインストラクションでテスト実行前にビルド(型チェック)の実行を必須化
- **TAKT Pack 仕様** (`docs/takt-pack-spec.md`): TAKT パッケージマニフェストのフォーマット仕様ドキュメント
### Changed
- **BREAKING: ファセットディレクトリ構造の変更**: 全レイヤーでファセットディレクトリが `facets/` サブディレクトリ配下に移動 — `builtins/{lang}/{facetType}/``builtins/{lang}/facets/{facetType}/``~/.takt/{facetType}/``~/.takt/facets/{facetType}/``.takt/{facetType}/``.takt/facets/{facetType}/`。マイグレーション: カスタムファセットファイルを新しい `facets/` サブディレクトリに移動してください
- 契約文字列のハードコード散在防止ルールをコーディングポリシーとアーキテクチャレビューインストラクションに追加
### Fixed
- オーバーライドピースの検証が ensemble スコープを含むリゾルバー経由で実行されるよう修正
- イテレーション入力待ち中の `poll_tick` デバッグログ連続出力を抑制
- ピースリゾルバーの `stat()` 呼び出しでアクセス不能エントリ時にクラッシュせずエラーハンドリング
### Internal
- Ensemble テストスイート: atomic-update, ensemble-paths, file-filter, github-ref-resolver, github-spec, list, lock-file, pack-summary, package-facet-resolution, remove-reference-check, remove, takt-pack-config, tar-parser, takt-pack-schema
- `src/faceted-prompting/scope.ts` を追加(@scope 参照のパース・バリデーション・解決)
- faceted-prompting モジュールの scope-ref テストを追加
- `inputWait.ts` を追加(ワーカープールのログノイズ抑制のための入力待ち状態共有)
## [0.21.0] - 2026-02-20 ## [0.21.0] - 2026-02-20
### Added ### Added

View File

@ -156,6 +156,7 @@ movements:
| `takt #N` | GitHub Issue をタスクとして実行します | | `takt #N` | GitHub Issue をタスクとして実行します |
| `takt switch` | 使う piece を切り替えます | | `takt switch` | 使う piece を切り替えます |
| `takt eject` | ビルトインの piece/persona をコピーしてカスタマイズできます | | `takt eject` | ビルトインの piece/persona をコピーしてカスタマイズできます |
| `takt ensemble add` | GitHub から ensemble パッケージをインストールします |
全コマンド・オプションは [CLI Reference](./cli-reference.ja.md) を参照してください。 全コマンド・オプションは [CLI Reference](./cli-reference.ja.md) を参照してください。
@ -223,10 +224,12 @@ takt --pipeline --task "バグを修正して" --auto-pr
~/.takt/ # グローバル設定 ~/.takt/ # グローバル設定
├── config.yaml # プロバイダー、モデル、言語など ├── config.yaml # プロバイダー、モデル、言語など
├── pieces/ # ユーザー定義の piece ├── pieces/ # ユーザー定義の piece
└── personas/ # ユーザー定義の persona ├── facets/ # ユーザー定義のファセットpersonas, policies, knowledge など)
└── ensemble/ # インストール済み ensemble パッケージ
.takt/ # プロジェクトレベル .takt/ # プロジェクトレベル
├── config.yaml # プロジェクト設定 ├── config.yaml # プロジェクト設定
├── facets/ # プロジェクトのファセット
├── tasks.yaml # 積まれたタスク ├── tasks.yaml # 積まれたタスク
├── tasks/ # タスクの仕様書 ├── tasks/ # タスクの仕様書
└── runs/ # 実行レポート、ログ、コンテキスト └── runs/ # 実行レポート、ログ、コンテキスト
@ -258,6 +261,7 @@ await engine.run();
| [Agent Guide](./agents.md) | カスタムエージェントの設定 | | [Agent Guide](./agents.md) | カスタムエージェントの設定 |
| [Builtin Catalog](./builtin-catalog.ja.md) | ビルトイン piece・persona の一覧 | | [Builtin Catalog](./builtin-catalog.ja.md) | ビルトイン piece・persona の一覧 |
| [Faceted Prompting](./faceted-prompting.ja.md) | プロンプト設計の方法論 | | [Faceted Prompting](./faceted-prompting.ja.md) | プロンプト設計の方法論 |
| [TAKT Pack Spec](./takt-pack-spec.md) | Ensemble パッケージのフォーマット仕様 |
| [Task Management](./task-management.ja.md) | タスクの追加・実行・隔離 | | [Task Management](./task-management.ja.md) | タスクの追加・実行・隔離 |
| [CI/CD Integration](./ci-cd.ja.md) | GitHub Actions・パイプラインモード | | [CI/CD Integration](./ci-cd.ja.md) | GitHub Actions・パイプラインモード |
| [Changelog](../CHANGELOG.md) ([日本語](./CHANGELOG.ja.md)) | バージョン履歴 | | [Changelog](../CHANGELOG.md) ([日本語](./CHANGELOG.ja.md)) | バージョン履歴 |

View File

@ -300,6 +300,26 @@ takt metrics review
takt metrics review --since 7d takt metrics review --since 7d
``` ```
### takt ensemble
Ensemble パッケージGitHub 上の外部 TAKT パッケージ)を管理します。
```bash
# GitHub からパッケージをインストール
takt ensemble add github:{owner}/{repo}@{ref}
# デフォルトブランチからインストール
takt ensemble add github:{owner}/{repo}
# インストール済みパッケージを一覧表示
takt ensemble list
# パッケージを削除
takt ensemble remove @{owner}/{repo}
```
インストールされたパッケージは `~/.takt/ensemble/` に保存され、ピース選択やファセット解決で利用可能になります。
### takt purge ### takt purge
古いアナリティクスイベントファイルを削除します。 古いアナリティクスイベントファイルを削除します。

View File

@ -300,6 +300,26 @@ takt metrics review
takt metrics review --since 7d takt metrics review --since 7d
``` ```
### takt ensemble
Manage ensemble packages (external TAKT packages from GitHub).
```bash
# Install a package from GitHub
takt ensemble add github:{owner}/{repo}@{ref}
# Install from default branch
takt ensemble add github:{owner}/{repo}
# List installed packages
takt ensemble list
# Remove a package
takt ensemble remove @{owner}/{repo}
```
Installed packages are stored in `~/.takt/ensemble/` and their pieces/facets become available in piece selection and facet resolution.
### takt purge ### takt purge
Purge old analytics event files. Purge old analytics event files.

4
package-lock.json generated
View File

@ -1,12 +1,12 @@
{ {
"name": "takt", "name": "takt",
"version": "0.21.0", "version": "0.22.0",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "takt", "name": "takt",
"version": "0.21.0", "version": "0.22.0",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@anthropic-ai/claude-agent-sdk": "^0.2.47", "@anthropic-ai/claude-agent-sdk": "^0.2.47",

View File

@ -1,6 +1,6 @@
{ {
"name": "takt", "name": "takt",
"version": "0.21.0", "version": "0.22.0",
"description": "TAKT: TAKT Agent Koordination Topology - AI Agent Piece Orchestration", "description": "TAKT: TAKT Agent Koordination Topology - AI Agent Piece Orchestration",
"main": "dist/index.js", "main": "dist/index.js",
"types": "dist/index.d.ts", "types": "dist/index.d.ts",