ai-adapter 0.5.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ai_adapter-0.5.0/.github/workflows/publish.yml +31 -0
- ai_adapter-0.5.0/.github/workflows/test.yml +29 -0
- ai_adapter-0.5.0/.gitignore +23 -0
- ai_adapter-0.5.0/CHANGELOG.md +132 -0
- ai_adapter-0.5.0/LICENSE +21 -0
- ai_adapter-0.5.0/PKG-INFO +529 -0
- ai_adapter-0.5.0/README.md +503 -0
- ai_adapter-0.5.0/examples/sample-config.json +55 -0
- ai_adapter-0.5.0/pyproject.toml +71 -0
- ai_adapter-0.5.0/src/ai_adapter/__init__.py +1 -0
- ai_adapter-0.5.0/src/ai_adapter/__main__.py +6 -0
- ai_adapter-0.5.0/src/ai_adapter/agent.py +333 -0
- ai_adapter-0.5.0/src/ai_adapter/bin.py +259 -0
- ai_adapter-0.5.0/src/ai_adapter/cli.py +327 -0
- ai_adapter-0.5.0/src/ai_adapter/config.py +132 -0
- ai_adapter-0.5.0/src/ai_adapter/env.py +248 -0
- ai_adapter-0.5.0/src/ai_adapter/git.py +239 -0
- ai_adapter-0.5.0/src/ai_adapter/mcp.py +252 -0
- ai_adapter-0.5.0/src/ai_adapter/models.py +203 -0
- ai_adapter-0.5.0/src/ai_adapter/opencode.py +87 -0
- ai_adapter-0.5.0/src/ai_adapter/skill.py +334 -0
- ai_adapter-0.5.0/src/ai_adapter/sync.py +166 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
name: Publish to PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*"
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
publish:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
permissions:
|
|
12
|
+
contents: read
|
|
13
|
+
id-token: write
|
|
14
|
+
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v4
|
|
17
|
+
|
|
18
|
+
- uses: actions/setup-python@v5
|
|
19
|
+
with:
|
|
20
|
+
python-version: "3.10"
|
|
21
|
+
|
|
22
|
+
- name: Install build tools
|
|
23
|
+
run: |
|
|
24
|
+
python -m pip install --upgrade pip
|
|
25
|
+
pip install build hatchling
|
|
26
|
+
|
|
27
|
+
- name: Build package
|
|
28
|
+
run: python -m build
|
|
29
|
+
|
|
30
|
+
- name: Publish to PyPI
|
|
31
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
name: Test
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
test:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
strategy:
|
|
13
|
+
matrix:
|
|
14
|
+
python-version: ["3.10", "3.11", "3.12"]
|
|
15
|
+
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v5
|
|
18
|
+
|
|
19
|
+
- uses: actions/setup-python@v6
|
|
20
|
+
with:
|
|
21
|
+
python-version: ${{ matrix.python-version }}
|
|
22
|
+
|
|
23
|
+
- name: Install dependencies
|
|
24
|
+
run: |
|
|
25
|
+
python -m pip install --upgrade pip
|
|
26
|
+
pip install -e .
|
|
27
|
+
|
|
28
|
+
- name: Run tests
|
|
29
|
+
run: python -m unittest discover tests -v
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [0.5.0] - 2026-07-21
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- **`opencode` サブコマンド**: OpenCode 連携設定(`alias`, `install`, `uninstall`)
|
|
8
|
+
- `alias`: `.opencode` → `.github` のシンボリックリンクを作成
|
|
9
|
+
- `install`: テンプレートを元に `opencode.json` を生成
|
|
10
|
+
- `uninstall`: `opencode.json` を削除
|
|
11
|
+
- **`mcp load --file` コマンド**: `.mcp.json` から MCP サーバー設定を一括読み込み
|
|
12
|
+
- **`agent get-all` / `bin get-all` / `skill get-all`**: 全登録アイテムの一括展開コマンド
|
|
13
|
+
- **`agent remove-all` / `env remove-all` / `bin remove-all` / `skill remove-all`**: 全登録アイテムの一括削除コマンド
|
|
14
|
+
- **`skill get-all` / `skill remove-all`**: スキルの一括展開・削除コマンド
|
|
15
|
+
- **ファイルベース同期**: `rebuild_config()` による自動復元機能
|
|
16
|
+
- `sync` の pull 成功後に設定をファイルから自動再構築
|
|
17
|
+
- `start` の clone/init 後に設定を自動再構築
|
|
18
|
+
- `status` で実ファイル数を表示
|
|
19
|
+
- `list` / `get-all` が config 空でもファイルシステムから動作
|
|
20
|
+
|
|
21
|
+
### Changed
|
|
22
|
+
|
|
23
|
+
- **`mcp export`**: 出力先をカレントディレクトリに変更、出力ファイルを常に `.mcp.json` に固定
|
|
24
|
+
- `--path` オプションで出力先ディレクトリを指定可能
|
|
25
|
+
- **`mcp export` の `--tool` オプションを `--path` に名称変更**
|
|
26
|
+
- **`mcp add`**: `--file` オプションを廃止し `--command` 必須に簡略化
|
|
27
|
+
- **`bin` コマンド**: `env` を位置引数(`click.argument`)から `--env` オプション(`click.option`)に変更
|
|
28
|
+
- `bin get script.py` のように単一引数でファイル名のみ渡せるよう改善
|
|
29
|
+
- **スキル展開先を統一**: `get_claude_skills_dir()` → `get_github_skills_dir()` に変更
|
|
30
|
+
- `skill get` / `skill get-all` の出力先を `.claude/skills/` から `.github/skills/` に変更
|
|
31
|
+
- `agent` / `bin` と同じ `.github/` 配下に統一
|
|
32
|
+
- **`agent add`**: `.agent.md` ファイルの frontmatter から `name` を読み取り登録名として使用
|
|
33
|
+
|
|
34
|
+
### Fixed
|
|
35
|
+
|
|
36
|
+
- **`sync`**: `git diff --cached --quiet` の exit code 1(変更あり)でクラッシュしないよう修正
|
|
37
|
+
- **`sync`**: pull/push 失敗時にクラッシュせずガイドメッセージを表示(接続不可/ブランチ不一致/コンフリクト)
|
|
38
|
+
- **`sync`**: Git user config(user.name / user.email)未設定時にクラッシュせず設定手順を表示
|
|
39
|
+
- **`skill get-all`**: `--force` なしで既存ディレクトリに当たるとクラッシュする問題を修正
|
|
40
|
+
|
|
41
|
+
## [0.4.1] - 2026-07-20
|
|
42
|
+
|
|
43
|
+
### Changed
|
|
44
|
+
|
|
45
|
+
- **スキル展開先を統一**: `get_claude_skills_dir()` → `get_github_skills_dir()` に変更
|
|
46
|
+
- `skill get` / `skill get-all` の出力先を `.claude/skills/` から `.github/skills/` に変更
|
|
47
|
+
- `agent` / `bin` と同じ `.github/` 配下に統一
|
|
48
|
+
|
|
49
|
+
## [0.4.0] - 2026-07-20
|
|
50
|
+
|
|
51
|
+
### Added
|
|
52
|
+
|
|
53
|
+
- **`agent remove-all` コマンド**: 全てのエージェントを一括削除(`--keep-file`, `--force` オプション対応)
|
|
54
|
+
- **`env remove-all` コマンド**: デフォルト環境を除く全ての環境を一括削除(`--force` オプション対応)
|
|
55
|
+
- **`bin remove-all` コマンド**: 全てのスクリプトの登録を一括解除(`--force` オプション対応)
|
|
56
|
+
|
|
57
|
+
### Changed
|
|
58
|
+
|
|
59
|
+
- `bin` コマンドの `env` を位置引数(`click.argument`)から `--env` オプション(`click.option`)に変更
|
|
60
|
+
- `bin get script.py` のように単一引数でファイル名のみ渡せるよう改善
|
|
61
|
+
- `--env` 省略時は従来通り環境解決ロジックで補完
|
|
62
|
+
|
|
63
|
+
## [0.3.0] - 2026-07-20
|
|
64
|
+
|
|
65
|
+
### Added
|
|
66
|
+
|
|
67
|
+
- **`start <URL>` コマンド**: GitHub リモートリポジトリと連携した一発セットアップ
|
|
68
|
+
- `git clone` を試行し、失敗した場合は `git init` + `remote add` で初期化
|
|
69
|
+
- `~/.ai-adapter/` のディレクトリ構造と `config.json` を自動生成
|
|
70
|
+
- リモートURLは `Config.remote` フィールドに保存
|
|
71
|
+
- **`init --remote` オプション**: コマンドラインからリモートURLを指定して初期化
|
|
72
|
+
- **`init` 対話的プロンプト**: `--remote` 未指定時に対話的にリモートURLを質問(スキップ可能)
|
|
73
|
+
- **`sync` リモート未設定時の対話的入力**: `config.remote` の保存値 → 手動入力 → スキップ の順で処理
|
|
74
|
+
- **`status` リモート表示**: 設定ファイルに `remote` が保存されていれば表示
|
|
75
|
+
- **`git.py`**: `clone()`, `add_remote()`, `get_current_branch()` 関数を追加
|
|
76
|
+
- **`Config.remote` フィールド**: 設定ファイルに Git リモートURLを永続化
|
|
77
|
+
|
|
78
|
+
### Changed
|
|
79
|
+
|
|
80
|
+
- `init` が Git リポジトリ初期化 + リモート設定まで行うように改善
|
|
81
|
+
- `sync` がリモート未設定でもエラー終了せず、対話的入力で補完するように改善
|
|
82
|
+
|
|
83
|
+
## [0.2.0] - 2026-07-20
|
|
84
|
+
|
|
85
|
+
### Added
|
|
86
|
+
|
|
87
|
+
- **`uninstall` コマンド**: `~/.ai-adapter/` を削除して初期状態に戻す(`--force`, `--keep-git` オプション対応)
|
|
88
|
+
- **`status` コマンド**: skills/mcp の登録数とディレクトリ状態を表示するように拡張
|
|
89
|
+
- **`CHANGELOG.md`**: 新規作成
|
|
90
|
+
|
|
91
|
+
## [0.1.0] - 2026-07-20
|
|
92
|
+
|
|
93
|
+
### Added
|
|
94
|
+
|
|
95
|
+
- **CLI 基盤**: Click フレームワークによる CLI エントリーポイント (`ai-adapter` / `python -m ai_adapter`)
|
|
96
|
+
- **`init` コマンド**: `~/.ai-adapter/` ディレクトリの初期化(`agents/`, `bin/`, `skills/`, `mcp/` ディレクトリ + `config.json` 作成)
|
|
97
|
+
- **`status` コマンド**: 現在の設定状態(登録数、デフォルト環境、ディレクトリ状態)を表示
|
|
98
|
+
- **`agent` サブコマンド**: AIエージェント指示ファイルの管理(`add`, `get`, `list`, `remove`)
|
|
99
|
+
- `~/.ai-adapter/agents/` にファイルを保存し、`.github/agents/` に展開
|
|
100
|
+
- **`env` サブコマンド**: 環境設定の管理(`add`, `remove`, `list`, `default`, `set-default`, `link-agent`, `unlink-agent`)
|
|
101
|
+
- デフォルト環境の保護(削除不可)、エージェントと環境の紐付け機能
|
|
102
|
+
- **`bin` サブコマンド**: スクリプトファイルの管理(`add`, `get`, `list`, `remove`)
|
|
103
|
+
- env 省略時の環境解決ロジック(エージェント紐付け → デフォルト環境)
|
|
104
|
+
- `--agent` オプションによる明示的なエージェント指定
|
|
105
|
+
- **`skill` サブコマンド**: スキルディレクトリの管理(`add`, `get`, `list`, `remove`, `search`, `link-agent`)
|
|
106
|
+
- SKILL.md の YAML frontmatter 自動パース
|
|
107
|
+
- `.claude/skills/` への展開、タグフィルタ・キーワード検索対応
|
|
108
|
+
- **`mcp` サブコマンド**: MCP サーバー設定の管理(`add`, `remove`, `list`, `export`, `enable`, `disable`)
|
|
109
|
+
- 対話的追加・JSON ファイルからの追加に対応
|
|
110
|
+
- `export` で VS Code / Claude / Cursor 形式に出力(`.vscode/mcp.json`, `.mcp.json`, `.cursor/mcp.json`)
|
|
111
|
+
- `--tool`, `--env` フィルタ対応
|
|
112
|
+
- **`sync` コマンド**: `~/.ai-adapter/` を GitHub リモートと同期(`git add` → `commit` → `pull --rebase` → `push`)
|
|
113
|
+
- **データモデル**: `Agent`, `Env`, `AgentBinding`, `Bin`, `Skill`, `MCPServer`, `Config` の dataclass 定義と JSON シリアライズ
|
|
114
|
+
- **設定ファイル管理**: `~/.ai-adapter/config.json` の読み書き(環境変数 `AI_ADAPTER_CONFIG` でパス上書き可能)
|
|
115
|
+
- **Git 操作ラッパー**: `subprocess` による git コマンドラッパー(`is_repo`, `init_repo`, `add_all`, `commit`, `pull_rebase`, `push`, `has_remote`, `get_remotes`)
|
|
116
|
+
- **テスト**: 84 の単体テスト(Click CliRunner + unittest.mock によるファイル操作/CLI/モックテスト)
|
|
117
|
+
|
|
118
|
+
### Changed
|
|
119
|
+
|
|
120
|
+
- 設定ファイル形式を YAML(`.ai-adapter.yaml`)から JSON(`config.json`)に変更
|
|
121
|
+
- 全データ保存先をプロジェクトルートから `~/.ai-adapter/` に統一
|
|
122
|
+
|
|
123
|
+
### Removed
|
|
124
|
+
|
|
125
|
+
- `pyyaml` 依存を削除(設定ファイルの JSON 化に伴い)
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## 注意事項
|
|
130
|
+
|
|
131
|
+
- 本バージョンは開発初期フェーズのため、API は予告なく変更される可能性があります
|
|
132
|
+
- `~/.ai-adapter/` に保存されたデータは `ai-adapter uninstall` で削除可能です
|
ai_adapter-0.5.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 smapira
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|