Release v0.12.0
This commit is contained in:
parent
9f1c7e6aff
commit
21537a3214
39
CHANGELOG.md
39
CHANGELOG.md
@ -4,6 +4,45 @@ 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.12.0] - 2026-02-11
|
||||
|
||||
### Added
|
||||
|
||||
- **OpenCode プロバイダー**: 第3のプロバイダーとして OpenCode をネイティブサポート — `@opencode-ai/sdk/v2` による SDK 統合、権限マッピング(readonly/edit/full → reject/once/always)、SSE ストリーム処理、リトライ機構(最大3回)、10分タイムアウトによるハング検出 (#236, #238)
|
||||
- **Arpeggio ムーブメント**: データ駆動バッチ処理の新ムーブメントタイプ — CSV データソースからバッチ分割、テンプレート展開(`{line:N}`, `{col:N:name}`, `{batch_index}`)、並行 LLM 呼び出し(Semaphore 制御)、concat/custom マージ戦略をサポート (#200)
|
||||
- **`frontend` ビルトインピース**: フロントエンド開発特化のピースを新規追加 — React/Next.js 向けの knowledge 注入、coding/testing ポリシー適用、並列アーキテクチャレビュー対応
|
||||
- **Slack Webhook 通知**: ピース実行完了時に Slack へ自動通知 — `TAKT_NOTIFY_WEBHOOK` 環境変数で設定、10秒タイムアウト、失敗時も他処理をブロックしない (#234)
|
||||
- **セッション選択 UI**: インタラクティブモード開始時に Claude Code の過去セッションから再開可能なセッションを選択可能に — 最新10セッションの一覧表示、初期入力・最終応答プレビュー付き (#180)
|
||||
- **プロバイダーイベントログ**: Claude/Codex/OpenCode の実行中イベントを NDJSON 形式でファイル出力 — `.takt/logs/{sessionId}-provider-events.jsonl` に記録、長大テキストの自動圧縮 (#236)
|
||||
- **プロバイダー・モデル名の出力表示**: 各ムーブメント実行時に使用中のプロバイダーとモデル名をコンソールに表示
|
||||
|
||||
### Changed
|
||||
|
||||
- **`takt add` の刷新**: Issue 選択時にタスクへの自動追加、インタラクティブモードの廃止、Issue 作成時のタスク積み込み確認 (#193, #194)
|
||||
- **`max_iteration` → `max_movement` 統一**: イテレーション上限の用語を統一し、無限実行指定として `ostinato` を追加 (#212)
|
||||
- **`previous_response` 注入仕様の改善**: 長さ制御と Source Path 常時注入を実装 (#207)
|
||||
- **タスク管理の改善**: `.takt/tasks/` を長文タスク仕様の置き場所として再定義、`completeTask()` で completed レコードを `tasks.yaml` から削除 (#201, #204)
|
||||
- **レビュー出力の改善**: レビュー出力を最新化し、過去レポートは履歴ログへ分離 (#209)
|
||||
- **ビルトインピース簡素化**: 全ビルトインピースのトップレベル宣言をさらに整理
|
||||
|
||||
### Fixed
|
||||
|
||||
- **Report Phase blocked 時の動作修正**: Report Phase(Phase 2)で blocked 状態の際に新規セッションでリトライするよう修正 (#163)
|
||||
- **OpenCode のハング・終了判定の修正**: プロンプトのエコー抑制、question の抑制、ハング問題の修正、終了判定の誤りを修正 (#238)
|
||||
- **OpenCode の権限・ツール設定の修正**: edit 実行時の権限とツール配線を修正
|
||||
- **Worktree へのタスク指示書コピー**: Worktree 実行時にタスク指示書が正しくコピーされるよう修正
|
||||
- lint エラーの修正(merge/resolveTask/confirm)
|
||||
|
||||
### Internal
|
||||
|
||||
- OpenCode プロバイダーの包括的なテスト追加(client-cleanup, config, provider, stream-handler, types)
|
||||
- Arpeggio の包括的なテスト追加(csv, data-source-factory, merge, schema, template, engine-arpeggio)
|
||||
- E2E テストの大幅な拡充: cli-catalog, cli-clear, cli-config, cli-export-cc, cli-help, cli-prompt, cli-reset-categories, cli-switch, error-handling, piece-error-handling, provider-error, quiet-mode, run-multiple-tasks, task-content-file (#192, #198)
|
||||
- `providerEventLogger.ts`, `providerModel.ts`, `slackWebhook.ts`, `session-reader.ts`, `sessionSelector.ts`, `provider-resolution.ts`, `run-paths.ts` の新規追加
|
||||
- `ArpeggioRunner.ts` の新規追加(データ駆動バッチ処理エンジン)
|
||||
- AI Judge をプロバイダーシステム経由に変更(Codex/OpenCode 対応)
|
||||
- テスト追加・拡充: report-phase-blocked, phase-runner-report-history, judgment-fallback, pieceExecution-session-loading, globalConfig-defaults, session-reader, sessionSelector, slackWebhook, providerEventLogger, provider-model, interactive, run-paths, engine-test-helpers
|
||||
|
||||
## [0.11.1] - 2026-02-10
|
||||
|
||||
### Fixed
|
||||
|
||||
31
README.md
31
README.md
@ -4,7 +4,7 @@
|
||||
|
||||
**T**ask **A**gent **K**oordination **T**ool - Define how AI agents coordinate, where humans intervene, and what gets recorded — in YAML
|
||||
|
||||
TAKT runs multiple AI agents (Claude Code, Codex) through YAML-defined workflows. Each step — who runs, what they see, what's allowed, what happens on failure — is declared in a piece file, not left to the agent.
|
||||
TAKT runs multiple AI agents (Claude Code, Codex, OpenCode) through YAML-defined workflows. Each step — who runs, what they see, what's allowed, what happens on failure — is declared in a piece file, not left to the agent.
|
||||
|
||||
TAKT is built with TAKT itself (dogfooding).
|
||||
|
||||
@ -49,14 +49,14 @@ Personas, policies, and knowledge are managed as independent files and freely co
|
||||
|
||||
Choose one:
|
||||
|
||||
- **Use provider CLIs**: [Claude Code](https://docs.anthropic.com/en/docs/claude-code) or [Codex](https://github.com/openai/codex) installed
|
||||
- **Use direct API**: **Anthropic API Key** or **OpenAI API Key** (no CLI required)
|
||||
- **Use provider CLIs**: [Claude Code](https://docs.anthropic.com/en/docs/claude-code), [Codex](https://github.com/openai/codex), or [OpenCode](https://opencode.ai) installed
|
||||
- **Use direct API**: **Anthropic API Key**, **OpenAI API Key**, or **OpenCode API Key** (no CLI required)
|
||||
|
||||
Additionally required:
|
||||
|
||||
- [GitHub CLI](https://cli.github.com/) (`gh`) — Only needed for `takt #N` (GitHub Issue execution)
|
||||
|
||||
**Pricing Note**: When using API Keys, TAKT directly calls the Claude API (Anthropic) or OpenAI API. The pricing structure is the same as using Claude Code or Codex. Be mindful of costs, especially when running automated tasks in CI/CD environments, as API usage can accumulate.
|
||||
**Pricing Note**: When using API Keys, TAKT directly calls the Claude API (Anthropic), OpenAI API, or OpenCode API. The pricing structure is the same as using the respective CLI tools. Be mindful of costs, especially when running automated tasks in CI/CD environments, as API usage can accumulate.
|
||||
|
||||
## Installation
|
||||
|
||||
@ -322,7 +322,7 @@ takt reset categories
|
||||
| `--repo <owner/repo>` | Specify repository (for PR creation) |
|
||||
| `--create-worktree <yes\|no>` | Skip worktree confirmation prompt |
|
||||
| `-q, --quiet` | Minimal output mode: suppress AI output (for CI) |
|
||||
| `--provider <name>` | Override agent provider (claude\|codex\|mock) |
|
||||
| `--provider <name>` | Override agent provider (claude\|codex\|opencode\|mock) |
|
||||
| `--model <name>` | Override agent model |
|
||||
|
||||
## Pieces
|
||||
@ -473,6 +473,7 @@ TAKT includes multiple builtin pieces:
|
||||
| `structural-reform` | Full project review and structural reform: iterative codebase restructuring with staged file splits. |
|
||||
| `unit-test` | Unit test focused piece: test analysis → test implementation → review → fix. |
|
||||
| `e2e-test` | E2E test focused piece: E2E analysis → E2E implementation → review → fix (Vitest-based E2E flow). |
|
||||
| `frontend` | Frontend-specialized development piece with React/Next.js focused reviews and knowledge injection. |
|
||||
|
||||
**Per-persona provider overrides:** Use `persona_providers` in config to route specific personas to different providers (e.g., coder on Codex, reviewers on Claude) without duplicating pieces.
|
||||
|
||||
@ -560,7 +561,7 @@ Configure default provider and model in `~/.takt/config.yaml`:
|
||||
language: en
|
||||
default_piece: default
|
||||
log_level: info
|
||||
provider: claude # Default provider: claude or codex
|
||||
provider: claude # Default provider: claude, codex, or opencode
|
||||
model: sonnet # Default model (optional)
|
||||
branch_name_strategy: romaji # Branch name generation: 'romaji' (fast) or 'ai' (slow)
|
||||
prevent_sleep: false # Prevent macOS idle sleep during execution (caffeinate)
|
||||
@ -582,9 +583,10 @@ interactive_preview_movements: 3 # Movement previews in interactive mode (0-10,
|
||||
# ai-antipattern-reviewer: claude # Keep reviewers on Claude
|
||||
|
||||
# API Key configuration (optional)
|
||||
# Can be overridden by environment variables TAKT_ANTHROPIC_API_KEY / TAKT_OPENAI_API_KEY
|
||||
# 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)
|
||||
# openai_api_key: sk-... # For Codex (OpenAI)
|
||||
# opencode_api_key: ... # For OpenCode
|
||||
|
||||
# Builtin piece filtering (optional)
|
||||
# builtin_pieces_enabled: true # Set false to disable all builtins
|
||||
@ -608,17 +610,17 @@ anthropic_api_key: sk-ant-... # For Claude (Anthropic)
|
||||
1. **Set via environment variables**:
|
||||
```bash
|
||||
export TAKT_ANTHROPIC_API_KEY=sk-ant-... # For Claude
|
||||
# or
|
||||
export TAKT_OPENAI_API_KEY=sk-... # For Codex
|
||||
export TAKT_OPENCODE_API_KEY=... # For OpenCode
|
||||
```
|
||||
|
||||
2. **Set in config file**:
|
||||
Write `anthropic_api_key` or `openai_api_key` in `~/.takt/config.yaml` as shown above
|
||||
Write `anthropic_api_key`, `openai_api_key`, or `opencode_api_key` in `~/.takt/config.yaml` as shown above
|
||||
|
||||
Priority: Environment variables > `config.yaml` settings
|
||||
|
||||
**Notes:**
|
||||
- If you set an API Key, installing Claude Code or Codex is not necessary. TAKT directly calls the Anthropic API or OpenAI API.
|
||||
- If you set an API Key, installing Claude Code, Codex, or OpenCode is not necessary. TAKT directly calls the respective API.
|
||||
- **Security**: If you write API Keys in `config.yaml`, be careful not to commit this file to Git. Consider using environment variables or adding `~/.takt/config.yaml` to `.gitignore`.
|
||||
|
||||
**Pipeline Template Variables:**
|
||||
@ -634,7 +636,7 @@ Priority: Environment variables > `config.yaml` settings
|
||||
1. Piece movement `model` (highest priority)
|
||||
2. Custom agent `model`
|
||||
3. Global config `model`
|
||||
4. Provider default (Claude: sonnet, Codex: codex)
|
||||
4. Provider default (Claude: sonnet, Codex: codex, OpenCode: provider default)
|
||||
|
||||
## Detailed Guides
|
||||
|
||||
@ -796,7 +798,7 @@ Special `next` values: `COMPLETE` (success), `ABORT` (failure)
|
||||
| `edit` | - | Whether movement can edit project files (`true`/`false`) |
|
||||
| `pass_previous_response` | `true` | Pass previous movement output to `{previous_response}` |
|
||||
| `allowed_tools` | - | List of tools agent can use (Read, Glob, Grep, Edit, Write, Bash, etc.) |
|
||||
| `provider` | - | Override provider for this movement (`claude` or `codex`) |
|
||||
| `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) |
|
||||
| `output_contracts` | - | Output contract definitions for report files |
|
||||
@ -874,7 +876,7 @@ npm install -g takt
|
||||
takt --pipeline --task "Fix bug" --auto-pr --repo owner/repo
|
||||
```
|
||||
|
||||
For authentication, set `TAKT_ANTHROPIC_API_KEY` or `TAKT_OPENAI_API_KEY` environment variables (TAKT-specific prefix).
|
||||
For authentication, set `TAKT_ANTHROPIC_API_KEY`, `TAKT_OPENAI_API_KEY`, or `TAKT_OPENCODE_API_KEY` environment variables (TAKT-specific prefix).
|
||||
|
||||
```bash
|
||||
# For Claude (Anthropic)
|
||||
@ -882,6 +884,9 @@ export TAKT_ANTHROPIC_API_KEY=sk-ant-...
|
||||
|
||||
# For Codex (OpenAI)
|
||||
export TAKT_OPENAI_API_KEY=sk-...
|
||||
|
||||
# For OpenCode
|
||||
export TAKT_OPENCODE_API_KEY=...
|
||||
```
|
||||
|
||||
## Documentation
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
|
||||
**T**ask **A**gent **K**oordination **T**ool - AIエージェントの協調手順・人の介入ポイント・記録をYAMLで定義する
|
||||
|
||||
TAKTは複数のAIエージェント(Claude Code、Codex)をYAMLで定義されたワークフローに従って実行します。各ステップで誰が実行し、何を見て、何を許可し、失敗時にどうするかはピースファイルに宣言され、エージェント任せにしません。
|
||||
TAKTは複数のAIエージェント(Claude Code、Codex、OpenCode)をYAMLで定義されたワークフローに従って実行します。各ステップで誰が実行し、何を見て、何を許可し、失敗時にどうするかはピースファイルに宣言され、エージェント任せにしません。
|
||||
|
||||
TAKTはTAKT自身で開発されています(ドッグフーディング)。
|
||||
|
||||
@ -45,14 +45,14 @@ TAKTはエージェントの実行を**制御**し、プロンプトの構成要
|
||||
|
||||
次のいずれかを選択してください。
|
||||
|
||||
- **プロバイダーCLIを使用**: [Claude Code](https://docs.anthropic.com/en/docs/claude-code) または [Codex](https://github.com/openai/codex) をインストール
|
||||
- **API直接利用**: **Anthropic API Key** または **OpenAI API Key**(CLI不要)
|
||||
- **プロバイダーCLIを使用**: [Claude Code](https://docs.anthropic.com/en/docs/claude-code)、[Codex](https://github.com/openai/codex)、または [OpenCode](https://opencode.ai) をインストール
|
||||
- **API直接利用**: **Anthropic API Key**、**OpenAI API Key**、または **OpenCode API Key**(CLI不要)
|
||||
|
||||
追加で必要なもの:
|
||||
|
||||
- [GitHub CLI](https://cli.github.com/) (`gh`) — `takt #N`(GitHub Issue実行)を使う場合のみ必要
|
||||
|
||||
**料金について**: API Key を使用する場合、TAKT は Claude API(Anthropic)または OpenAI API を直接呼び出します。料金体系は Claude Code や Codex を使った場合と同じです。特に CI/CD で自動実行する場合、API 使用量が増えるため、コストに注意してください。
|
||||
**料金について**: API Key を使用する場合、TAKT は Claude API(Anthropic)、OpenAI API、または OpenCode API を直接呼び出します。料金体系は各 CLI ツールを使った場合と同じです。特に CI/CD で自動実行する場合、API 使用量が増えるため、コストに注意してください。
|
||||
|
||||
## インストール
|
||||
|
||||
@ -322,7 +322,7 @@ takt reset categories
|
||||
| `--repo <owner/repo>` | リポジトリ指定(PR作成時) |
|
||||
| `--create-worktree <yes\|no>` | worktree確認プロンプトをスキップ |
|
||||
| `-q, --quiet` | 最小限の出力モード: AIの出力を抑制(CI向け) |
|
||||
| `--provider <name>` | エージェントプロバイダーを上書き(claude\|codex\|mock) |
|
||||
| `--provider <name>` | エージェントプロバイダーを上書き(claude\|codex\|opencode\|mock) |
|
||||
| `--model <name>` | エージェントモデルを上書き |
|
||||
|
||||
## ピース
|
||||
@ -473,6 +473,7 @@ TAKTには複数のビルトインピースが同梱されています:
|
||||
| `structural-reform` | プロジェクト全体の構造改革: 段階的なファイル分割を伴う反復的なコードベース再構成。 |
|
||||
| `unit-test` | ユニットテスト重視ピース: テスト分析 → テスト実装 → レビュー → 修正。 |
|
||||
| `e2e-test` | E2Eテスト重視ピース: E2E分析 → E2E実装 → レビュー → 修正(VitestベースのE2Eフロー)。 |
|
||||
| `frontend` | フロントエンド特化開発ピース: React/Next.js 向けのレビューとナレッジ注入。 |
|
||||
|
||||
**ペルソナ別プロバイダー設定:** 設定ファイルの `persona_providers` で、特定のペルソナを異なるプロバイダーにルーティングできます(例: coder は Codex、レビュアーは Claude)。ピースを複製する必要はありません。
|
||||
|
||||
@ -560,7 +561,7 @@ Claude Code はエイリアス(`opus`、`sonnet`、`haiku`、`opusplan`、`def
|
||||
language: ja
|
||||
default_piece: default
|
||||
log_level: info
|
||||
provider: claude # デフォルトプロバイダー: claude または codex
|
||||
provider: claude # デフォルトプロバイダー: claude、codex、または opencode
|
||||
model: sonnet # デフォルトモデル(オプション)
|
||||
branch_name_strategy: romaji # ブランチ名生成: 'romaji'(高速)または 'ai'(低速)
|
||||
prevent_sleep: false # macOS の実行中スリープ防止(caffeinate)
|
||||
@ -582,9 +583,10 @@ interactive_preview_movements: 3 # 対話モードでのムーブメントプ
|
||||
# ai-antipattern-reviewer: claude # レビュアーは Claude のまま
|
||||
|
||||
# API Key 設定(オプション)
|
||||
# 環境変数 TAKT_ANTHROPIC_API_KEY / TAKT_OPENAI_API_KEY で上書き可能
|
||||
# 環境変数 TAKT_ANTHROPIC_API_KEY / TAKT_OPENAI_API_KEY / TAKT_OPENCODE_API_KEY で上書き可能
|
||||
anthropic_api_key: sk-ant-... # Claude (Anthropic) を使う場合
|
||||
# openai_api_key: sk-... # Codex (OpenAI) を使う場合
|
||||
# opencode_api_key: ... # OpenCode を使う場合
|
||||
|
||||
# ビルトインピースのフィルタリング(オプション)
|
||||
# builtin_pieces_enabled: true # false でビルトイン全体を無効化
|
||||
@ -608,17 +610,17 @@ anthropic_api_key: sk-ant-... # Claude (Anthropic) を使う場合
|
||||
1. **環境変数で設定**:
|
||||
```bash
|
||||
export TAKT_ANTHROPIC_API_KEY=sk-ant-... # Claude の場合
|
||||
# または
|
||||
export TAKT_OPENAI_API_KEY=sk-... # Codex の場合
|
||||
export TAKT_OPENCODE_API_KEY=... # OpenCode の場合
|
||||
```
|
||||
|
||||
2. **設定ファイルで設定**:
|
||||
上記の `~/.takt/config.yaml` に `anthropic_api_key` または `openai_api_key` を記述
|
||||
上記の `~/.takt/config.yaml` に `anthropic_api_key`、`openai_api_key`、または `opencode_api_key` を記述
|
||||
|
||||
優先順位: 環境変数 > `config.yaml` の設定
|
||||
|
||||
**注意事項:**
|
||||
- API Key を設定した場合、Claude Code や Codex のインストールは不要です。TAKT が直接 Anthropic API または OpenAI API を呼び出します。
|
||||
- API Key を設定した場合、Claude Code、Codex、OpenCode のインストールは不要です。TAKT が直接各 API を呼び出します。
|
||||
- **セキュリティ**: `config.yaml` に API Key を記述した場合、このファイルを Git にコミットしないよう注意してください。環境変数での設定を使うか、`.gitignore` に `~/.takt/config.yaml` を追加することを検討してください。
|
||||
|
||||
**パイプラインテンプレート変数:**
|
||||
@ -634,7 +636,7 @@ anthropic_api_key: sk-ant-... # Claude (Anthropic) を使う場合
|
||||
1. ピースのムーブメントの `model`(最優先)
|
||||
2. カスタムエージェントの `model`
|
||||
3. グローバル設定の `model`
|
||||
4. プロバイダーデフォルト(Claude: sonnet、Codex: codex)
|
||||
4. プロバイダーデフォルト(Claude: sonnet、Codex: codex、OpenCode: プロバイダーデフォルト)
|
||||
|
||||
## 詳細ガイド
|
||||
|
||||
@ -796,7 +798,7 @@ rules:
|
||||
| `edit` | - | ムーブメントがプロジェクトファイルを編集できるか(`true`/`false`) |
|
||||
| `pass_previous_response` | `true` | 前のムーブメントの出力を`{previous_response}`に渡す |
|
||||
| `allowed_tools` | - | エージェントが使用できるツール一覧(Read, Glob, Grep, Edit, Write, Bash等) |
|
||||
| `provider` | - | このムーブメントのプロバイダーを上書き(`claude`または`codex`) |
|
||||
| `provider` | - | このムーブメントのプロバイダーを上書き(`claude`、`codex`、または`opencode`) |
|
||||
| `model` | - | このムーブメントのモデルを上書き |
|
||||
| `permission_mode` | - | パーミッションモード: `readonly`、`edit`、`full`(プロバイダー非依存) |
|
||||
| `output_contracts` | - | レポートファイルの出力契約定義 |
|
||||
@ -874,7 +876,7 @@ npm install -g takt
|
||||
takt --pipeline --task "バグ修正" --auto-pr --repo owner/repo
|
||||
```
|
||||
|
||||
認証には `TAKT_ANTHROPIC_API_KEY` または `TAKT_OPENAI_API_KEY` 環境変数を設定してください(TAKT 独自のプレフィックス付き)。
|
||||
認証には `TAKT_ANTHROPIC_API_KEY`、`TAKT_OPENAI_API_KEY`、または `TAKT_OPENCODE_API_KEY` 環境変数を設定してください(TAKT 独自のプレフィックス付き)。
|
||||
|
||||
```bash
|
||||
# Claude (Anthropic) を使う場合
|
||||
@ -882,6 +884,9 @@ export TAKT_ANTHROPIC_API_KEY=sk-ant-...
|
||||
|
||||
# Codex (OpenAI) を使う場合
|
||||
export TAKT_OPENAI_API_KEY=sk-...
|
||||
|
||||
# OpenCode を使う場合
|
||||
export TAKT_OPENCODE_API_KEY=...
|
||||
```
|
||||
|
||||
## ドキュメント
|
||||
|
||||
4
package-lock.json
generated
4
package-lock.json
generated
@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "takt",
|
||||
"version": "0.11.1",
|
||||
"version": "0.12.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "takt",
|
||||
"version": "0.11.1",
|
||||
"version": "0.12.0",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@anthropic-ai/claude-agent-sdk": "^0.2.37",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "takt",
|
||||
"version": "0.11.1",
|
||||
"version": "0.12.0",
|
||||
"description": "TAKT: Task Agent Koordination Tool - AI Agent Piece Orchestration",
|
||||
"main": "dist/index.js",
|
||||
"types": "dist/index.d.ts",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user