From def5f27309de5783b8686a966ae103ffe785a319 Mon Sep 17 00:00:00 2001 From: nrslib <38722970+nrslib@users.noreply.github.com> Date: Sun, 15 Feb 2026 07:10:44 +0900 Subject: [PATCH] Release v0.16.0 --- CHANGELOG.md | 16 ++++++++++++++++ CLAUDE.md | 9 ++++----- README.md | 16 +++++++++++++--- docs/README.ja.md | 16 +++++++++++++--- docs/pieces.md | 8 ++++---- package-lock.json | 4 ++-- package.json | 2 +- 7 files changed, 53 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a436a95..8602f34 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,22 @@ 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.16.0] - 2026-02-15 + +### Added + +- **プロバイダー別パーミッションプロファイル(`provider_profiles`)**: グローバル設定(`~/.takt/config.yaml`)およびプロジェクト設定(`.takt/config.yaml`)でプロバイダーごとのデフォルトパーミッションモードとムーブメント単位のオーバーライドを定義可能に — 5段階の優先順位解決(project override → global override → project default → global default → `required_permission_mode` 下限補正) + +### Changed + +- **BREAKING: `permission_mode` → `required_permission_mode`**: ムーブメントの `permission_mode` フィールドを `required_permission_mode` にリネーム — 下限(フロア)として機能し、実際のパーミッションモードは `provider_profiles` で解決される設計に変更。旧 `permission_mode` は `z.never()` で拒否されるため後方互換性なし +- ビルトイン `config.yaml` テンプレートを全面リライト: コメント整理、`provider_profiles` の説明と使用例を追加、OpenCode 関連設定の追加 + +### Internal + +- プロバイダープロファイル関連のテスト追加(global-provider-profiles, project-provider-profiles, permission-profile-resolution, options-builder) +- 並行実行テストに不足していた `loadProjectConfig` モックを追加 + ## [0.15.0] - 2026-02-15 ### Added diff --git a/CLAUDE.md b/CLAUDE.md index f195450..56f9f2d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -229,7 +229,7 @@ steps: provider: codex # claude|codex (optional) model: opus # Model name (optional) edit: true # Whether step can edit files - permission_mode: acceptEdits # Tool permission mode (optional) + required_permission_mode: edit # Required minimum permission mode (optional) instruction_template: | Custom instructions for this step. {task}, {previous_response} are auto-injected if not present as placeholders. @@ -500,10 +500,9 @@ Debug logs are written to `.takt/logs/debug.log` (ndjson format). Log levels: `d - Claude supports aliases: `opus`, `sonnet`, `haiku` - Codex defaults to `codex` if model not specified -**Permission modes (v0.3.8+: provider-independent values):** +**Permission modes (provider-independent values):** - `readonly`: Read-only access, no file modifications (Claude: `default`, Codex: `read-only`) - `edit`: Allow file edits with confirmation (Claude: `acceptEdits`, Codex: `workspace-write`) - `full`: Bypass all permission checks (Claude: `bypassPermissions`, Codex: `danger-full-access`) -- Specified at step level (`permission_mode` field) or global config -- **v0.3.8+:** Permission mode values are unified across providers; TAKT translates to provider-specific flags -- Legacy values (`default`, `acceptEdits`, `bypassPermissions`) are **no longer supported** +- Resolved via `provider_profiles` (global/project config) with `required_permission_mode` as minimum floor +- Movement-level `required_permission_mode` sets the minimum; `provider_profiles` defaults/overrides can raise it diff --git a/README.md b/README.md index 328f1f9..449c89c 100644 --- a/README.md +++ b/README.md @@ -366,7 +366,7 @@ movements: policy: coding knowledge: architecture edit: true - permission_mode: edit + required_permission_mode: edit rules: - condition: Implementation complete next: review @@ -590,6 +590,16 @@ interactive_preview_movements: 3 # Movement previews in interactive mode (0-10, # coder: codex # Run coder on Codex # ai-antipattern-reviewer: claude # Keep reviewers on Claude +# Provider-specific permission profiles (optional) +# Priority: project override → global override → project default → global default → required_permission_mode (floor) +# provider_profiles: +# codex: +# default_permission_mode: full +# movement_permission_overrides: +# ai_review: readonly +# claude: +# default_permission_mode: edit + # API Key configuration (optional) # Can be overridden by environment variables TAKT_ANTHROPIC_API_KEY / TAKT_OPENAI_API_KEY / TAKT_OPENCODE_API_KEY anthropic_api_key: sk-ant-... # For Claude (Anthropic) @@ -739,7 +749,7 @@ movements: - name: implement persona: coder edit: true - permission_mode: edit + required_permission_mode: edit pass_previous_response: true rules: - condition: Complete @@ -808,7 +818,7 @@ Special `next` values: `COMPLETE` (success), `ABORT` (failure) | `allowed_tools` | - | List of tools agent can use (Read, Glob, Grep, Edit, Write, Bash, etc.) | | `provider` | - | Override provider for this movement (`claude`, `codex`, or `opencode`) | | `model` | - | Override model for this movement | -| `permission_mode` | - | Permission mode: `readonly`, `edit`, `full` (provider-independent) | +| `required_permission_mode` | - | Required minimum permission mode: `readonly`, `edit`, `full` (acts as floor; actual mode resolved via `provider_profiles`) | | `provider_options` | - | Provider-specific options (e.g. `codex.network_access`, `opencode.network_access`) | | `output_contracts` | - | Output contract definitions for report files | | `quality_gates` | - | AI directives for movement completion requirements | diff --git a/docs/README.ja.md b/docs/README.ja.md index 82deb52..65af6ad 100644 --- a/docs/README.ja.md +++ b/docs/README.ja.md @@ -366,7 +366,7 @@ movements: policy: coding knowledge: architecture edit: true - permission_mode: edit + required_permission_mode: edit rules: - condition: 実装完了 next: review @@ -590,6 +590,16 @@ interactive_preview_movements: 3 # 対話モードでのムーブメントプ # coder: codex # coder を Codex で実行 # ai-antipattern-reviewer: claude # レビュアーは Claude のまま +# プロバイダー別パーミッションプロファイル(オプション) +# 優先順: project override → global override → project default → global default → required_permission_mode(下限) +# provider_profiles: +# codex: +# default_permission_mode: full +# movement_permission_overrides: +# ai_review: readonly +# claude: +# default_permission_mode: edit + # API Key 設定(オプション) # 環境変数 TAKT_ANTHROPIC_API_KEY / TAKT_OPENAI_API_KEY / TAKT_OPENCODE_API_KEY で上書き可能 anthropic_api_key: sk-ant-... # Claude (Anthropic) を使う場合 @@ -739,7 +749,7 @@ movements: - name: implement persona: coder edit: true - permission_mode: edit + required_permission_mode: edit pass_previous_response: true rules: - condition: 完了 @@ -808,7 +818,7 @@ rules: | `allowed_tools` | - | エージェントが使用できるツール一覧(Read, Glob, Grep, Edit, Write, Bash等) | | `provider` | - | このムーブメントのプロバイダーを上書き(`claude`、`codex`、または`opencode`) | | `model` | - | このムーブメントのモデルを上書き | -| `permission_mode` | - | パーミッションモード: `readonly`、`edit`、`full`(プロバイダー非依存) | +| `required_permission_mode` | - | 必要最小パーミッションモード: `readonly`、`edit`、`full`(下限として機能; 実際のモードは `provider_profiles` で解決) | | `provider_options` | - | プロバイダー固有オプション(例: `codex.network_access`、`opencode.network_access`) | | `output_contracts` | - | レポートファイルの出力契約定義 | | `quality_gates` | - | ムーブメント完了要件のAIディレクティブ | diff --git a/docs/pieces.md b/docs/pieces.md index 1663197..f5ce902 100644 --- a/docs/pieces.md +++ b/docs/pieces.md @@ -161,7 +161,7 @@ report: | `allowed_tools` | - | List of tools the agent can use (Read, Glob, Grep, Edit, Write, Bash, etc.) | | `provider` | - | Override provider for this step (`claude` or `codex`) | | `model` | - | Override model for this step | -| `permission_mode` | `default` | Permission mode: `default`, `acceptEdits`, or `bypassPermissions` | +| `required_permission_mode` | - | Required minimum permission mode: `readonly`, `edit`, or `full` (provider-independent) | | `report` | - | Report file configuration (name, format) for auto-generated reports | ## Examples @@ -176,7 +176,7 @@ steps: - name: implement agent: ../agents/default/coder.md edit: true - permission_mode: acceptEdits + required_permission_mode: edit allowed_tools: [Read, Glob, Grep, Edit, Write, Bash, WebSearch, WebFetch] rules: - condition: Implementation complete @@ -197,7 +197,7 @@ steps: - name: implement agent: ../agents/default/coder.md edit: true - permission_mode: acceptEdits + required_permission_mode: edit allowed_tools: [Read, Glob, Grep, Edit, Write, Bash, WebSearch, WebFetch] rules: - condition: Implementation complete @@ -238,7 +238,7 @@ steps: agent: ../agents/default/coder.md edit: true pass_previous_response: true - permission_mode: acceptEdits + required_permission_mode: edit allowed_tools: [Read, Glob, Grep, Edit, Write, Bash, WebSearch, WebFetch] rules: - condition: Implementation complete diff --git a/package-lock.json b/package-lock.json index a35d1d4..ec4a22f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "takt", - "version": "0.15.0", + "version": "0.16.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "takt", - "version": "0.15.0", + "version": "0.16.0", "license": "MIT", "dependencies": { "@anthropic-ai/claude-agent-sdk": "^0.2.37", diff --git a/package.json b/package.json index 58f63a6..bb1f49a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "takt", - "version": "0.15.0", + "version": "0.16.0", "description": "TAKT: TAKT Agent Koordination Topology - AI Agent Piece Orchestration", "main": "dist/index.js", "types": "dist/index.d.ts",