agy-plugins-cli 1.1.14
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.
- package/LICENSE +21 -0
- package/README.md +94 -0
- package/dist/config.js +90 -0
- package/dist/fetcher.js +265 -0
- package/dist/hooks-merger.js +89 -0
- package/dist/index.js +388 -0
- package/dist/manager.js +151 -0
- package/dist/mcp-merger.js +88 -0
- package/dist/state.js +89 -0
- package/i18n/ja/README.md +94 -0
- package/i18n/ko/README.md +94 -0
- package/i18n/zh-CN/README.md +94 -0
- package/i18n/zh-TW/README.md +94 -0
- package/package.json +42 -0
package/dist/state.js
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.loadState = loadState;
|
|
37
|
+
exports.saveState = saveState;
|
|
38
|
+
exports.recordPluginInstall = recordPluginInstall;
|
|
39
|
+
exports.getInstalledPlugin = getInstalledPlugin;
|
|
40
|
+
exports.removePluginState = removePluginState;
|
|
41
|
+
const fs = __importStar(require("fs"));
|
|
42
|
+
const path = __importStar(require("path"));
|
|
43
|
+
const os = __importStar(require("os"));
|
|
44
|
+
const STATE_DIR = path.join(os.homedir(), '.agy-plugin');
|
|
45
|
+
const STATE_FILE = path.join(STATE_DIR, 'installed.json');
|
|
46
|
+
const DEFAULT_STATE = {
|
|
47
|
+
plugins: {}
|
|
48
|
+
};
|
|
49
|
+
function loadState() {
|
|
50
|
+
if (!fs.existsSync(STATE_DIR)) {
|
|
51
|
+
fs.mkdirSync(STATE_DIR, { recursive: true });
|
|
52
|
+
}
|
|
53
|
+
if (!fs.existsSync(STATE_FILE)) {
|
|
54
|
+
return DEFAULT_STATE;
|
|
55
|
+
}
|
|
56
|
+
try {
|
|
57
|
+
const data = fs.readFileSync(STATE_FILE, 'utf-8');
|
|
58
|
+
return JSON.parse(data);
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
return DEFAULT_STATE;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
function saveState(state) {
|
|
65
|
+
if (!fs.existsSync(STATE_DIR)) {
|
|
66
|
+
fs.mkdirSync(STATE_DIR, { recursive: true });
|
|
67
|
+
}
|
|
68
|
+
fs.writeFileSync(STATE_FILE, JSON.stringify(state, null, 2), 'utf-8');
|
|
69
|
+
}
|
|
70
|
+
function recordPluginInstall(pluginName, repo, sha, files = [], hooks = []) {
|
|
71
|
+
const state = loadState();
|
|
72
|
+
state.plugins[pluginName] = {
|
|
73
|
+
repo,
|
|
74
|
+
sha,
|
|
75
|
+
installedAt: new Date().toISOString(),
|
|
76
|
+
files,
|
|
77
|
+
hooks
|
|
78
|
+
};
|
|
79
|
+
saveState(state);
|
|
80
|
+
}
|
|
81
|
+
function getInstalledPlugin(pluginName) {
|
|
82
|
+
const state = loadState();
|
|
83
|
+
return state.plugins[pluginName];
|
|
84
|
+
}
|
|
85
|
+
function removePluginState(pluginName) {
|
|
86
|
+
const state = loadState();
|
|
87
|
+
delete state.plugins[pluginName];
|
|
88
|
+
saveState(state);
|
|
89
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
# 🚀 Antigravity CLI パッケージマネージャー
|
|
4
|
+
**Google Antigravity (agy) の公式プラグインマネージャー。**
|
|
5
|
+
|
|
6
|
+
[English](../../README.md) · [简体中文](../zh-CN/README.md) · [繁體中文](../zh-TW/README.md) · [日本語](README.md) · [한국어](../ko/README.md)
|
|
7
|
+
|
|
8
|
+
[](https://www.typescriptlang.org/)
|
|
9
|
+
[](https://nodejs.org/)
|
|
10
|
+
[](https://www.npmjs.com/package/agy-plugins-cli)
|
|
11
|
+
[](https://github.com/ZaunEkko/agy-plugins-cli)
|
|
12
|
+
[](https://github.com/ZaunEkko/agy-plugins-cli/blob/main/LICENSE)
|
|
13
|
+
|
|
14
|
+
> 複数のリポジトリにまたがる Antigravity プラグインのインストール、更新、管理をシームレスに行います。インタラクティブな TUI、詳細な名前空間のサポート、および安全なコンテキストマージ機能を提供します。
|
|
15
|
+
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
<br />
|
|
19
|
+
|
|
20
|
+
## ✨ 主な機能
|
|
21
|
+
|
|
22
|
+
- **🌐 マルチマーケットプレイスのサポート**: 複数のリモート GitHub リポジトリ(例:`ZaunEkko/agy-plugins`)をプラグインのソースとして追加し、自由に切り替えることができます。
|
|
23
|
+
- **⚡ 超高速ホットアップデート**: リモートリポジトリから最新の `commit` フィンガープリントを取得し、グローバル、名前空間、または個々のプラグインレベルで瞬時にアップデートを実行します。
|
|
24
|
+
- **🖥️ インタラクティブな TUI**: `@clack/prompts` で構築された洗練されたターミナル UI を使用して、プラグインの参照、更新状態の確認、一括インストールを簡単に行えます。
|
|
25
|
+
- **🔐 プライベートリポジトリのゼロコンフィグアクセス**: ローカルの `gh auth token` をネイティブに検出し、GitHub API のレート制限を回避してエンタープライズのプライベートプラグインリポジトリにシームレスにアクセスします。
|
|
26
|
+
- **🛡️ Hook & MCP のマージ**: リモートの `hooks.json` と `mcp.json` を Antigravity 設定にマージします。Hook 配列は重複排除され、同名の MCP server は warning を表示したうえで新しい設定に置き換えられます。
|
|
27
|
+
|
|
28
|
+
<br />
|
|
29
|
+
|
|
30
|
+
## 📦 インストール
|
|
31
|
+
|
|
32
|
+
`agy-plugins-cli` をマシンにグローバルインストールするには、次のコマンドを実行します。
|
|
33
|
+
|
|
34
|
+
Node.js `^22.13.0 || >=23.5.0` が必要です。
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
npm install -g agy-plugins-cli@latest
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
*インストール後、ターミナルのどこからでも `agy-plugin` コマンドを使用できるようになります。*
|
|
41
|
+
|
|
42
|
+
<br />
|
|
43
|
+
|
|
44
|
+
## 🚀 クイックスタート
|
|
45
|
+
|
|
46
|
+
### 1. マーケットプレイスの追加と探索
|
|
47
|
+
GitHub リポジトリをローカルレジストリにバインドし、インタラクティブにプラグインを探索します。
|
|
48
|
+
```bash
|
|
49
|
+
# リポジトリをマーケットプレイスとして追加
|
|
50
|
+
agy-plugin marketplace add ZaunEkko/agy-plugins
|
|
51
|
+
|
|
52
|
+
# インタラクティブなマーケットプレイスダッシュボードを開く
|
|
53
|
+
agy-plugin marketplace list
|
|
54
|
+
```
|
|
55
|
+
*(インタラクティブなターミナルパネルでは、利用可能なプラグインを参照し、更新日を確認し、ワンキーストロークで一括インストールできます!)*
|
|
56
|
+
|
|
57
|
+
### 2. プラグインのインストール
|
|
58
|
+
プラグイン名とリポジトリの名前空間を指定して、接続されたマーケットプレイスからプラグインをインストールします。
|
|
59
|
+
```bash
|
|
60
|
+
agy-plugin add commit-commands@zaunekko
|
|
61
|
+
agy-plugin add explanatory-output-style@zaunekko
|
|
62
|
+
```
|
|
63
|
+
*(CLI は、対応する `skills` と `hooks` をローカルの `.gemini/config/` ディレクトリに安全にダウンロードします!)*
|
|
64
|
+
|
|
65
|
+
### 3. プラグインを最新に保つ
|
|
66
|
+
リモートの作成者から最新の更新を簡単に取得して同期します。CLI はローカルとリモートの SHA フィンガープリントを追跡し、古いプラグインを動的に検出します。
|
|
67
|
+
```bash
|
|
68
|
+
# グローバル更新:すべての名前空間のすべてのプラグインを更新
|
|
69
|
+
agy-plugin update
|
|
70
|
+
|
|
71
|
+
# 名前空間の更新:特定の名前空間のすべてのプラグインを更新
|
|
72
|
+
agy-plugin update @zaunekko
|
|
73
|
+
|
|
74
|
+
# 個別更新:特定のプラグインを直接更新
|
|
75
|
+
agy-plugin update commit-commands@zaunekko
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
<br />
|
|
79
|
+
|
|
80
|
+
## 🧠 アーキテクチャとセキュリティ
|
|
81
|
+
|
|
82
|
+
- **フィンガープリントの追跡**: `agy-plugin` は、ダウンロードしたディレクトリの最新の Git `sha` をローカルの `~/.agy-plugin/installed.json` にキャッシュし、marketplace 設定を `~/.agy-plugin/config.json` に保存します。これにより、インテリジェントな差分更新が可能になり、TUI パネルで直感的な視覚的フィードバック(インストール済み vs 更新可能)が提供されます。
|
|
83
|
+
- **動的コンテキスト注入**: Antigravity は、`.gemini/config/` ディレクトリに配置されたすべてのコンテンツをネイティブに読み込みます。この CLI は、リモートのコミュニティリポジトリとローカル AI コンテキストを接続する安全なブリッジとして機能します。
|
|
84
|
+
- **`gh` CLI 統合**: 内部では、環境変数 `GITHUB_TOKEN` が見つからない場合、ツールは `gh auth token` コマンドを介してトークンを抽出しようとします。これにより、ローカルの Git ワークフローが完全に妨げられないことが保証されます。
|
|
85
|
+
|
|
86
|
+
## 📄 ライセンス
|
|
87
|
+
|
|
88
|
+
このプロジェクトは [MIT License](https://github.com/ZaunEkko/agy-plugins-cli/blob/main/LICENSE) の下でオープンソース化されています。
|
|
89
|
+
|
|
90
|
+
<br />
|
|
91
|
+
|
|
92
|
+
<div align="center">
|
|
93
|
+
<i>Antigravity のために、Antigravity によって構築されました。</i>
|
|
94
|
+
</div>
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
# 🚀 Antigravity CLI 패키지 관리자
|
|
4
|
+
**Google Antigravity (agy) 공식 플러그인 관리자.**
|
|
5
|
+
|
|
6
|
+
[English](../../README.md) · [简体中文](../zh-CN/README.md) · [繁體中文](../zh-TW/README.md) · [日本語](../ja/README.md) · [한국어](README.md)
|
|
7
|
+
|
|
8
|
+
[](https://www.typescriptlang.org/)
|
|
9
|
+
[](https://nodejs.org/)
|
|
10
|
+
[](https://www.npmjs.com/package/agy-plugins-cli)
|
|
11
|
+
[](https://github.com/ZaunEkko/agy-plugins-cli)
|
|
12
|
+
[](https://github.com/ZaunEkko/agy-plugins-cli/blob/main/LICENSE)
|
|
13
|
+
|
|
14
|
+
> 여러 저장소에 걸쳐 Antigravity 플러그인을 완벽하게 설치, 업데이트 및 관리합니다. 대화형 터미널 UI, 세분화된 네임스페이스 지원 및 안전한 컨텍스트 병합 기능을 제공합니다.
|
|
15
|
+
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
<br />
|
|
19
|
+
|
|
20
|
+
## ✨ 주요 기능
|
|
21
|
+
|
|
22
|
+
- **🌐 다중 마켓플레이스 지원**: 여러 원격 GitHub 저장소(예: `ZaunEkko/agy-plugins`)를 플러그인 소스로 추가하고 전환할 수 있습니다.
|
|
23
|
+
- **⚡ 초고속 핫 업데이트**: 원격 저장소에서 최신 `commit` 지문을 가져와 글로벌, 네임스페이스 또는 개별 플러그인 수준에서 즉시 업데이트를 수행합니다.
|
|
24
|
+
- **🖥️ 대화형 TUI**: `@clack/prompts`로 구축된 멋진 터미널 사용자 인터페이스를 통해 플러그인을 탐색하고, 업데이트 상태를 확인하고, 일괄 설치할 수 있습니다.
|
|
25
|
+
- **🔐 비공개 저장소 제로 구성 액세스**: 로컬 `gh auth token`을 기본적으로 감지하고 활용하여 GitHub API 속도 제한을 우회하고 엔터프라이즈 비공개 플러그인 저장소에 원활하게 액세스합니다.
|
|
26
|
+
- **🛡️ Hook 및 MCP 병합**: 원격 `hooks.json` 및 `mcp.json`을 Antigravity 설정에 병합합니다. Hook 배열은 중복 제거되며, 같은 이름의 MCP server는 warning을 표시한 뒤 새 설정으로 대체됩니다.
|
|
27
|
+
|
|
28
|
+
<br />
|
|
29
|
+
|
|
30
|
+
## 📦 설치
|
|
31
|
+
|
|
32
|
+
컴퓨터에 `agy-plugins-cli`를 전역으로 설치하려면 다음 명령을 실행합니다.
|
|
33
|
+
|
|
34
|
+
Node.js `^22.13.0 || >=23.5.0`이 필요합니다.
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
npm install -g agy-plugins-cli@latest
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
*설치 후 터미널 어디에서나 `agy-plugin` 명령을 사용할 수 있습니다!*
|
|
41
|
+
|
|
42
|
+
<br />
|
|
43
|
+
|
|
44
|
+
## 🚀 빠른 시작
|
|
45
|
+
|
|
46
|
+
### 1. 마켓플레이스 추가 및 탐색
|
|
47
|
+
GitHub 저장소를 로컬 레지스트리에 바인딩하고 대화형 인터페이스를 통해 플러그인을 탐색합니다.
|
|
48
|
+
```bash
|
|
49
|
+
# 저장소를 마켓플레이스로 추가
|
|
50
|
+
agy-plugin marketplace add ZaunEkko/agy-plugins
|
|
51
|
+
|
|
52
|
+
# 대화형 마켓플레이스 대시보드 열기
|
|
53
|
+
agy-plugin marketplace list
|
|
54
|
+
```
|
|
55
|
+
*(대화형 터미널 패널에서는 사용 가능한 플러그인을 탐색하고, 업데이트 날짜를 확인하고, 단일 키 입력으로 일괄 설치할 수 있습니다!)*
|
|
56
|
+
|
|
57
|
+
### 2. 플러그인 설치
|
|
58
|
+
플러그인 이름과 저장소 네임스페이스를 지정하여 연결된 마켓플레이스에서 플러그인을 설치합니다.
|
|
59
|
+
```bash
|
|
60
|
+
agy-plugin add commit-commands@zaunekko
|
|
61
|
+
agy-plugin add explanatory-output-style@zaunekko
|
|
62
|
+
```
|
|
63
|
+
*(CLI는 해당 `skills` 및 `hooks`를 로컬 `.gemini/config/` 디렉토리에 안전하게 다운로드합니다!)*
|
|
64
|
+
|
|
65
|
+
### 3. 플러그인 최신 상태 유지
|
|
66
|
+
원격 작성자로부터 최신 업데이트를 쉽게 가져와 동기화합니다. CLI는 로컬 및 원격 SHA 지문을 추적하여 오래된 플러그인을 동적으로 감지합니다.
|
|
67
|
+
```bash
|
|
68
|
+
# 글로벌 업데이트: 모든 네임스페이스의 모든 플러그인 업데이트
|
|
69
|
+
agy-plugin update
|
|
70
|
+
|
|
71
|
+
# 네임스페이스 업데이트: 특정 네임스페이스의 모든 플러그인 업데이트
|
|
72
|
+
agy-plugin update @zaunekko
|
|
73
|
+
|
|
74
|
+
# 개별 업데이트: 특정 플러그인 직접 업데이트
|
|
75
|
+
agy-plugin update commit-commands@zaunekko
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
<br />
|
|
79
|
+
|
|
80
|
+
## 🧠 아키텍처 및 보안
|
|
81
|
+
|
|
82
|
+
- **지문 추적**: `agy-plugin`은 다운로드한 디렉토리의 최신 Git `sha`를 로컬 `~/.agy-plugin/installed.json`에 캐시하고 marketplace 설정을 `~/.agy-plugin/config.json`에 저장합니다. 이를 통해 지능형 델타 업데이트가 가능하며 TUI 패널에서 직관적인 시각적 피드백(설치됨 vs 업데이트 가능)을 제공합니다.
|
|
83
|
+
- **동적 컨텍스트 주입**: Antigravity는 `.gemini/config/` 디렉토리에 배치된 모든 콘텐츠를 기본적으로 로드합니다. 이 CLI는 원격 커뮤니티 저장소와 로컬 AI 컨텍스트를 연결하는 안전한 브리지 역할을 합니다.
|
|
84
|
+
- **`gh` CLI 통합**: 내부적으로 `GITHUB_TOKEN` 환경 변수를 찾을 수 없는 경우 도구는 `gh auth token` 명령을 통해 토큰을 추출하려고 시도합니다. 이를 통해 로컬 Git 워크플로가 방해받지 않도록 보장합니다.
|
|
85
|
+
|
|
86
|
+
## 📄 라이선스
|
|
87
|
+
|
|
88
|
+
이 프로젝트는 [MIT License](https://github.com/ZaunEkko/agy-plugins-cli/blob/main/LICENSE)에 따라 오픈 소스로 제공됩니다.
|
|
89
|
+
|
|
90
|
+
<br />
|
|
91
|
+
|
|
92
|
+
<div align="center">
|
|
93
|
+
<i>Antigravity를 위해, Antigravity가 만들었습니다.</i>
|
|
94
|
+
</div>
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
# 🚀 Antigravity CLI 包管理器
|
|
4
|
+
**官方且极速的 Google Antigravity (agy) 插件管理器。**
|
|
5
|
+
|
|
6
|
+
[English](../../README.md) · [简体中文](README.md) · [繁體中文](../zh-TW/README.md) · [日本語](../ja/README.md) · [한국어](../ko/README.md)
|
|
7
|
+
|
|
8
|
+
[](https://www.typescriptlang.org/)
|
|
9
|
+
[](https://nodejs.org/)
|
|
10
|
+
[](https://www.npmjs.com/package/agy-plugins-cli)
|
|
11
|
+
[](https://github.com/ZaunEkko/agy-plugins-cli)
|
|
12
|
+
[](https://github.com/ZaunEkko/agy-plugins-cli/blob/main/LICENSE)
|
|
13
|
+
|
|
14
|
+
> 无缝跨越多个代码仓库安装、更新和管理 Antigravity 插件,提供交互式终端面板、细粒度的命名空间支持,以及安全的上下文合并功能。
|
|
15
|
+
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
<br />
|
|
19
|
+
|
|
20
|
+
## ✨ 核心特性
|
|
21
|
+
|
|
22
|
+
- **🌐 多插件市场支持**: 将多个远程 GitHub 仓库添加为您专属的插件下载源(例如 `ZaunEkko/agy-plugins`),并可在其中自由切换。
|
|
23
|
+
- **⚡ 极其精准的热更新**: 实时抓取远程仓库最新的 `commit` 提交指纹,支持全局、命名空间级或单一插件级别的瞬间更新。
|
|
24
|
+
- **🖥️ 交互式终端面板 (TUI)**: 基于 `@clack/prompts` 构建了炫酷的终端图形界面,支持全盘浏览、更新状态检测以及一键批量安装插件。
|
|
25
|
+
- **🔐 零配置接入私有仓库**: 原生检测并利用您本地的 `gh auth token` 绕过 GitHub API 的速率限制,从而无缝访问企业的私有插件库。
|
|
26
|
+
- **🛡️ 合并 Hooks 与 MCP**: 将远程 `hooks.json` 和 `mcp.json` 合并到您的 Antigravity 配置中。Hook 数组会自动去重,同名 MCP server 会在提示 warning 后被新配置替换。
|
|
27
|
+
|
|
28
|
+
<br />
|
|
29
|
+
|
|
30
|
+
## 📦 安装指南
|
|
31
|
+
|
|
32
|
+
想要在您的机器上全局安装 `agy-plugins-cli`,只需运行:
|
|
33
|
+
|
|
34
|
+
需要 Node.js `^22.13.0 || >=23.5.0`。
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
npm install -g agy-plugins-cli@latest
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
*安装完毕后,您就可以在终端的任意位置使用 `agy-plugin` 命令了!*
|
|
41
|
+
|
|
42
|
+
<br />
|
|
43
|
+
|
|
44
|
+
## 🚀 快速开始
|
|
45
|
+
|
|
46
|
+
### 1. 添加并探索插件市场
|
|
47
|
+
将一个 GitHub 仓库绑定到您的本地注册表,并通过交互式界面探索其包含的插件。
|
|
48
|
+
```bash
|
|
49
|
+
# 将某个仓库添加为插件市场
|
|
50
|
+
agy-plugin marketplace add ZaunEkko/agy-plugins
|
|
51
|
+
|
|
52
|
+
# 打开交互式的市场仪表盘(可直观查看“已安装/有更新”状态!)
|
|
53
|
+
agy-plugin marketplace list
|
|
54
|
+
```
|
|
55
|
+
*(交互式的终端面板允许您浏览可用插件、查看最近更新日期,敲击一下键盘即可批量安装!)*
|
|
56
|
+
|
|
57
|
+
### 2. 安装插件
|
|
58
|
+
通过指定插件名称和所属仓库的命名空间,从已连接的市场中下载插件。
|
|
59
|
+
```bash
|
|
60
|
+
agy-plugin add commit-commands@zaunekko
|
|
61
|
+
agy-plugin add explanatory-output-style@zaunekko
|
|
62
|
+
```
|
|
63
|
+
*(CLI 会安全地将对应的 `skills` 和 `hooks` 下载到您本地的 `.gemini/config/` 目录!)*
|
|
64
|
+
|
|
65
|
+
### 3. 保持插件处于最新状态
|
|
66
|
+
轻松拉取并同步远程作者最新的插件改动。我们的 CLI 会时刻追踪本地与远程的 SHA 提交指纹,从而动态侦测出已经过时的插件。
|
|
67
|
+
```bash
|
|
68
|
+
# 全局更新:一键更新本地所有命名空间下的所有插件
|
|
69
|
+
agy-plugin update
|
|
70
|
+
|
|
71
|
+
# 命名空间级更新:更新某个特定命名空间下的所有插件
|
|
72
|
+
agy-plugin update @zaunekko
|
|
73
|
+
|
|
74
|
+
# 插件级更新:直接精准更新某一个特定的插件
|
|
75
|
+
agy-plugin update commit-commands@zaunekko
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
<br />
|
|
79
|
+
|
|
80
|
+
## 🧠 架构与安全
|
|
81
|
+
|
|
82
|
+
- **版本指纹追踪**: `agy-plugin` 会将已下载目录的最新 Git `sha` 缓存至本地的 `~/.agy-plugin/installed.json`,并将 marketplace 配置保存在 `~/.agy-plugin/config.json`。这使得智能增量更新成为可能,并能在 TUI 面板中向您展示直观的视觉反馈(已安装 vs 有更新可用)。
|
|
83
|
+
- **动态上下文注入**: Antigravity 会原生加载被放入 `.gemini/config/` 目录的所有内容。本 CLI 完美扮演了连接远程社区仓库与您本地 AI 脑容量的安全桥梁。
|
|
84
|
+
- **与 `gh` CLI 深度集成**: 在底层逻辑中,如果未发现环境变量 `GITHUB_TOKEN`,本工具将尝试通过 `gh auth token` 命令自动提取本地授权令牌,以确保您的本地 Git 工作流绝对不被打断。
|
|
85
|
+
|
|
86
|
+
## 📄 许可证
|
|
87
|
+
|
|
88
|
+
本项目使用 [MIT License](https://github.com/ZaunEkko/agy-plugins-cli/blob/main/LICENSE) 开源。
|
|
89
|
+
|
|
90
|
+
<br />
|
|
91
|
+
|
|
92
|
+
<div align="center">
|
|
93
|
+
<i>为 Antigravity 而生,由 Antigravity 打造。</i>
|
|
94
|
+
</div>
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
# 🚀 Antigravity CLI 套件管理器
|
|
4
|
+
**官方且極速的 Google Antigravity (agy) 外掛管理器。**
|
|
5
|
+
|
|
6
|
+
[English](../../README.md) · [简体中文](../zh-CN/README.md) · [繁體中文](README.md) · [日本語](../ja/README.md) · [한국어](../ko/README.md)
|
|
7
|
+
|
|
8
|
+
[](https://www.typescriptlang.org/)
|
|
9
|
+
[](https://nodejs.org/)
|
|
10
|
+
[](https://www.npmjs.com/package/agy-plugins-cli)
|
|
11
|
+
[](https://github.com/ZaunEkko/agy-plugins-cli)
|
|
12
|
+
[](https://github.com/ZaunEkko/agy-plugins-cli/blob/main/LICENSE)
|
|
13
|
+
|
|
14
|
+
> 無縫跨越多個程式碼儲存庫安裝、更新和管理 Antigravity 外掛,提供互動式終端機面板、細粒度的命名空間支援,以及安全的上下文合併功能。
|
|
15
|
+
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
<br />
|
|
19
|
+
|
|
20
|
+
## ✨ 核心特性
|
|
21
|
+
|
|
22
|
+
- **🌐 多外掛市場支援**: 將多個遠端 GitHub 儲存庫新增為您專屬的外掛下載源(例如 `ZaunEkko/agy-plugins`),並可在其中自由切換。
|
|
23
|
+
- **⚡ 極其精準的熱更新**: 即時抓取遠端儲存庫最新的 `commit` 提交指紋,支援全域、命名空間級或單一外掛級別的瞬間更新。
|
|
24
|
+
- **🖥️ 互動式終端機面板 (TUI)**: 基於 `@clack/prompts` 建構了炫酷的終端機圖形介面,支援全盤瀏覽、更新狀態檢測以及一鍵批次安裝外掛。
|
|
25
|
+
- **🔐 零配置接入私有儲存庫**: 原生檢測並利用您本地的 `gh auth token` 繞過 GitHub API 的速率限制,從而無縫存取企業的私有外掛庫。
|
|
26
|
+
- **🛡️ 合併 Hooks 與 MCP**: 將遠端 `hooks.json` 和 `mcp.json` 合併到您的 Antigravity 設定中。Hook 陣列會自動去重,同名 MCP server 會在提示 warning 後被新設定取代。
|
|
27
|
+
|
|
28
|
+
<br />
|
|
29
|
+
|
|
30
|
+
## 📦 安裝指南
|
|
31
|
+
|
|
32
|
+
想要在您的機器上全域安裝 `agy-plugins-cli`,只需執行:
|
|
33
|
+
|
|
34
|
+
需要 Node.js `^22.13.0 || >=23.5.0`。
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
npm install -g agy-plugins-cli@latest
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
*安裝完畢後,您就可以在終端機的任意位置使用 `agy-plugin` 指令了!*
|
|
41
|
+
|
|
42
|
+
<br />
|
|
43
|
+
|
|
44
|
+
## 🚀 快速開始
|
|
45
|
+
|
|
46
|
+
### 1. 新增並探索外掛市場
|
|
47
|
+
將一個 GitHub 儲存庫綁定到您的本地登錄檔,透過互動式介面探索其包含的外掛。
|
|
48
|
+
```bash
|
|
49
|
+
# 將某個儲存庫新增為外掛市場
|
|
50
|
+
agy-plugin marketplace add ZaunEkko/agy-plugins
|
|
51
|
+
|
|
52
|
+
# 開啟互動式的市場儀表板(可直觀查看「已安裝/有更新」狀態!)
|
|
53
|
+
agy-plugin marketplace list
|
|
54
|
+
```
|
|
55
|
+
*(互動式的終端機面板允許您瀏覽可用外掛、查看最近更新日期,敲擊一下鍵盤即可批次安裝!)*
|
|
56
|
+
|
|
57
|
+
### 2. 安裝外掛
|
|
58
|
+
透過指定外掛名稱和所屬儲存庫的命名空間,從已連接的市場中下載外掛。
|
|
59
|
+
```bash
|
|
60
|
+
agy-plugin add commit-commands@zaunekko
|
|
61
|
+
agy-plugin add explanatory-output-style@zaunekko
|
|
62
|
+
```
|
|
63
|
+
*(CLI 會安全地將對應的 `skills` 和 `hooks` 下載到您本地的 `.gemini/config/` 目錄!)*
|
|
64
|
+
|
|
65
|
+
### 3. 保持外掛處於最新狀態
|
|
66
|
+
輕鬆拉取並同步遠端作者最新的外掛更動。我們的 CLI 會時刻追蹤本地與遠端的 SHA 提交指紋,從而動態偵測出已經過時的外掛。
|
|
67
|
+
```bash
|
|
68
|
+
# 全域更新:一鍵更新本地所有命名空間下的所有外掛
|
|
69
|
+
agy-plugin update
|
|
70
|
+
|
|
71
|
+
# 命名空間級更新:更新某個特定命名空間下的所有外掛
|
|
72
|
+
agy-plugin update @zaunekko
|
|
73
|
+
|
|
74
|
+
# 外掛級更新:直接精準更新某一個特定的外掛
|
|
75
|
+
agy-plugin update commit-commands@zaunekko
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
<br />
|
|
79
|
+
|
|
80
|
+
## 🧠 架構與安全
|
|
81
|
+
|
|
82
|
+
- **版本指紋追蹤**: `agy-plugin` 會將已下載目錄的最新 Git `sha` 快取至本地的 `~/.agy-plugin/installed.json`,並將 marketplace 設定保存在 `~/.agy-plugin/config.json`。這使得智慧增量更新成為可能,並能在 TUI 面板中向您展示直觀的視覺反饋(已安裝 vs 有更新可用)。
|
|
83
|
+
- **動態上下文注入**: Antigravity 會原生載入被放入 `.gemini/config/` 目錄的所有內容。本 CLI 完美扮演了連接遠端社群儲存庫與您本地 AI 腦容量的安全橋樑。
|
|
84
|
+
- **與 `gh` CLI 深度整合**: 在底層邏輯中,如果未發現環境變數 `GITHUB_TOKEN`,本工具將嘗試透過 `gh auth token` 指令自動提取本地授權權杖,以確保您的本地 Git 工作流程絕對不被打斷。
|
|
85
|
+
|
|
86
|
+
## 📄 授權條款
|
|
87
|
+
|
|
88
|
+
本專案使用 [MIT License](https://github.com/ZaunEkko/agy-plugins-cli/blob/main/LICENSE) 開源。
|
|
89
|
+
|
|
90
|
+
<br />
|
|
91
|
+
|
|
92
|
+
<div align="center">
|
|
93
|
+
<i>為 Antigravity 而生,由 Antigravity 打造。</i>
|
|
94
|
+
</div>
|
package/package.json
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "agy-plugins-cli",
|
|
3
|
+
"version": "1.1.14",
|
|
4
|
+
"description": "Antigravity Plugin Manager",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"agy-plugin": "dist/index.js"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"dist/",
|
|
11
|
+
"README.md",
|
|
12
|
+
"i18n/",
|
|
13
|
+
"LICENSE"
|
|
14
|
+
],
|
|
15
|
+
"scripts": {
|
|
16
|
+
"build": "tsc",
|
|
17
|
+
"prepack": "npm run build",
|
|
18
|
+
"start": "ts-node src/index.ts",
|
|
19
|
+
"test": "npm run build && node dist/index.js --version"
|
|
20
|
+
},
|
|
21
|
+
"engines": {
|
|
22
|
+
"node": "^22.13.0 || >=23.5.0"
|
|
23
|
+
},
|
|
24
|
+
"keywords": [],
|
|
25
|
+
"author": "",
|
|
26
|
+
"license": "MIT",
|
|
27
|
+
"type": "commonjs",
|
|
28
|
+
"dependencies": {
|
|
29
|
+
"@clack/prompts": "^1.7.0",
|
|
30
|
+
"axios": "^1.18.1",
|
|
31
|
+
"chalk": "^5.6.2",
|
|
32
|
+
"commander": "^15.0.0",
|
|
33
|
+
"inquirer": "^14.0.2",
|
|
34
|
+
"ora": "^9.4.1"
|
|
35
|
+
},
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"@types/inquirer": "^9.0.10",
|
|
38
|
+
"@types/node": "^26.1.0",
|
|
39
|
+
"ts-node": "^10.9.2",
|
|
40
|
+
"typescript": "^6.0.3"
|
|
41
|
+
}
|
|
42
|
+
}
|