backeer-agy 0.0.0-stage → 1.1.0
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 +54 -2
- package/assets/logo.svg +5 -0
- package/bin/cli.js +259 -0
- package/hooks.json +17 -0
- package/package.json +37 -4
- package/plugin.json +11 -0
- package/scripts/approve_file_access.py +858 -0
- package/scripts/policy.json +90 -0
- package/scripts/safe_commands.py +470 -0
- package/vscode-extension/backeer-agy-statusbar-1.1.0.vsix +0 -0
- package/vscode-extension/state_store.js +148 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Emre
|
|
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.
|
package/README.md
CHANGED
|
@@ -1,3 +1,55 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Backeer AGY — Otomatik Onay Eklentisi + IDE Durum Çubuğu
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Google Antigravity (`agy`) için resmi **Plugin + `PreToolUse` Hook** mimarisi ve eşlikçi **Antigravity IDE / VS Code Durum Çubuğu (`.vsix`)** eklentisi.
|
|
4
|
+
|
|
5
|
+
## Neler Sağlar?
|
|
6
|
+
|
|
7
|
+
1. **Dosya Erişimi Otomatik Onayı:** Hassas olmayan dosyalarda okuma, listeleme, arama ve yazma/düzenleme işlemlerini kesintisiz otomatik onaylar.
|
|
8
|
+
2. **Zararsız Terminal Komutları Otomatik Onayı (`run_command`):**
|
|
9
|
+
- **Salt-Okunur İnceleme Komutları:** `ls`, `pwd`, `git status`, `git diff`, `git log`, `git branch -a`, `rg`, `grep`, `head`, `cat`, `<araç> --version`, `flutter doctor`, `agy plugin validate` vb.
|
|
10
|
+
- **Güvenli Geliştirme / Test Komutları:** `npm test`, `npm run lint`, `pytest`, `ruff check`, `mypy`, `tsc --noEmit`, `flutter analyze`, `cargo check`, `go test`, `swift test` vb.
|
|
11
|
+
- **Sıkı Güvenlik Filtresi:** Zincirleme komutlar (`&&`, `;`, `|`, `>`), alt kabuklar (`$()`, `` ` ``), tehlikeli bayraklar (`-exec`, `-delete`, `--fix`, `--ext-diff`), arka plan servisleri (`IsDaemon`) ve hassas dosyalara dokunan komutlar (`cat .env` vb.) **asla** otomatik onaylanmaz.
|
|
12
|
+
3. **IDE Durum Çubuğu (Status Bar) Düğmesi:** Sağ alt köşeden tek tıkla (veya `Cmd+Shift+Y` / `Ctrl+Shift+Y` kısayoluyla) 4 mod arasında anında geçiş:
|
|
13
|
+
- `AGY: Açık` — Dosya Okuma/Yazma + Zararsız Komutlar
|
|
14
|
+
- `AGY: Sadece Dosya` — Dosya Okuma/Yazma (Komutlar sorulur)
|
|
15
|
+
- `AGY: Salt Okunur` — Dosya Okuma + Salt-Okunur İnceleme Komutları (Yazma sorulur)
|
|
16
|
+
- `AGY: Kapalı` — Otomatik Onay Devre Dışı
|
|
17
|
+
4. **Hassas Dosya Koruması:** `.env` (`.env.example` hariç), `.ssh`, `.aws`, `.gnupg`, `.pem`/`.p8`/`.key`, `master.key`, sistem dizinleri ve eklenti yapılandırma dosyaları her zaman korunur.
|
|
18
|
+
|
|
19
|
+
## Kurulum
|
|
20
|
+
|
|
21
|
+
### Hızlı Kurulum (NPM / `npx`)
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npx backeer-agy install
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Diğer yönetim komutları:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
npx backeer-agy status # Aktif modu ve kurulum durumunu gösterir
|
|
31
|
+
npx backeer-agy mode readonly # Mod değiştirir (all | files_only | readonly | off)
|
|
32
|
+
npx backeer-agy export-vsix # .vsix dosyasını mevcut klasöre kopyalar
|
|
33
|
+
npx backeer-agy uninstall # Eklentiyi kaldırır
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Yerel Kaynak Koddan Kurulum
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
cd /Users/emre/Library/CloudStorage/SynologyDrive-DW/03_Yazilim_Sunucu_ve_Yedekler/mobileapps/backeer-agy
|
|
40
|
+
agy plugin validate --strict .
|
|
41
|
+
agy plugin install .
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### 2. IDE Durum Çubuğu (`.vsix`) Eklentisini Kurun
|
|
45
|
+
|
|
46
|
+
Hazır paketlenmiş dosya: `vscode-extension/backeer-agy-statusbar-1.1.0.vsix`
|
|
47
|
+
|
|
48
|
+
- **Antigravity IDE Arayüzünden:** Komut Paletini (`Cmd + Shift + P`) açın → **`Extensions: Install from VSIX...`** seçin → `vscode-extension/backeer-agy-statusbar-1.1.0.vsix` dosyasını seçin.
|
|
49
|
+
- *(Kaynak kodda değişiklik yaparsanız `python3 -B vscode-extension/build_vsix.py` komutuyla `.vsix` paketini yeniden üretebilirsiniz.)*
|
|
50
|
+
|
|
51
|
+
## Testleri Çalıştırma
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
PYTHONDONTWRITEBYTECODE=1 python3 -W error -m unittest discover -s tests -v
|
|
55
|
+
```
|
package/assets/logo.svg
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128" fill="none">
|
|
2
|
+
<rect width="128" height="128" rx="28" fill="#0F172A"/>
|
|
3
|
+
<path d="M64 20L28 36V62C28 85.4 43.4 106.8 64 114C84.6 106.8 100 85.4 100 62V36L64 20Z" fill="#1E293B" stroke="#38BDF8" stroke-width="5" stroke-linejoin="round"/>
|
|
4
|
+
<path d="M49 65L59 75L80 54" stroke="#34D399" stroke-width="7" stroke-linecap="round" stroke-linejoin="round"/>
|
|
5
|
+
</svg>
|
package/bin/cli.js
ADDED
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// @ts-check
|
|
3
|
+
"use strict";
|
|
4
|
+
|
|
5
|
+
const { spawnSync } = require("child_process");
|
|
6
|
+
const fs = require("fs");
|
|
7
|
+
const path = require("path");
|
|
8
|
+
const {
|
|
9
|
+
DEFAULT_STATE_PATH,
|
|
10
|
+
MODES,
|
|
11
|
+
VALID_MODE_IDS,
|
|
12
|
+
expandHome,
|
|
13
|
+
readStateMode,
|
|
14
|
+
writeStateMode,
|
|
15
|
+
} = require("../vscode-extension/state_store");
|
|
16
|
+
|
|
17
|
+
const PACKAGE_ROOT = path.resolve(__dirname, "..");
|
|
18
|
+
const PKG_JSON = JSON.parse(
|
|
19
|
+
fs.readFileSync(path.join(PACKAGE_ROOT, "package.json"), "utf8")
|
|
20
|
+
);
|
|
21
|
+
const VSIX_FILENAME = `backeer-agy-statusbar-${PKG_JSON.version}.vsix`;
|
|
22
|
+
const BUNDLED_VSIX = path.join(PACKAGE_ROOT, "vscode-extension", VSIX_FILENAME);
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Resolve state file path using env override or default ~/.config/backeer-agy/state.json.
|
|
26
|
+
* @returns {string}
|
|
27
|
+
*/
|
|
28
|
+
function resolveStatePath() {
|
|
29
|
+
const envPath = process.env.BACKEER_AGY_STATE_FILE;
|
|
30
|
+
return expandHome(envPath && envPath.trim() ? envPath : DEFAULT_STATE_PATH);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Check if an executable exists and responds to `--version`.
|
|
35
|
+
* @param {string} bin
|
|
36
|
+
* @returns {boolean}
|
|
37
|
+
*/
|
|
38
|
+
function canRunBinary(bin) {
|
|
39
|
+
const res = spawnSync(bin, ["--version"], { stdio: "ignore" });
|
|
40
|
+
return !res.error && res.status === 0;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Detect Antigravity IDE or VS Code CLI binary if available.
|
|
45
|
+
* @param {boolean} includeVscode
|
|
46
|
+
* @returns {string | null}
|
|
47
|
+
*/
|
|
48
|
+
function detectIdeCli(includeVscode) {
|
|
49
|
+
const candidates = [
|
|
50
|
+
"antigravity",
|
|
51
|
+
"/Applications/Antigravity.app/Contents/Resources/app/bin/antigravity",
|
|
52
|
+
"/Applications/Google Antigravity.app/Contents/Resources/app/bin/antigravity",
|
|
53
|
+
];
|
|
54
|
+
if (includeVscode) {
|
|
55
|
+
candidates.push("code");
|
|
56
|
+
}
|
|
57
|
+
for (const bin of candidates) {
|
|
58
|
+
if (canRunBinary(bin)) {
|
|
59
|
+
return bin;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function printHelp() {
|
|
66
|
+
console.log(`backeer-agy v${PKG_JSON.version} — Google Antigravity Otomatik Onay Eklentisi
|
|
67
|
+
|
|
68
|
+
Kullanım:
|
|
69
|
+
npx backeer-agy install [--vscode] [--skip-vsix] AGY eklentisini (ve varsa IDE .vsix paketini) kurar
|
|
70
|
+
npx backeer-agy uninstall AGY eklentisini kaldırır
|
|
71
|
+
npx backeer-agy status Aktif onay modunu ve kurulum durumunu gösterir
|
|
72
|
+
npx backeer-agy mode <all|files_only|readonly|off> Çalışma modunu değiştirir
|
|
73
|
+
npx backeer-agy export-vsix [dizin] IDE .vsix dosyasını belirtilen dizine kopyalar
|
|
74
|
+
npx backeer-agy --version Sürüm bilgisini yazdırır
|
|
75
|
+
`);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* @param {string[]} flags
|
|
80
|
+
* @returns {number}
|
|
81
|
+
*/
|
|
82
|
+
function cmdInstall(flags) {
|
|
83
|
+
if (!canRunBinary("agy")) {
|
|
84
|
+
console.error(
|
|
85
|
+
"Hata: 'agy' komutu bulunamadı. Lütfen önce Google Antigravity CLI'nin kurulu olduğundan emin olun."
|
|
86
|
+
);
|
|
87
|
+
return 1;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
console.log("→ AGY native eklentisi kuruluyor (backeer-agy)...");
|
|
91
|
+
const installRes = spawnSync("agy", ["plugin", "install", PACKAGE_ROOT], {
|
|
92
|
+
stdio: "inherit",
|
|
93
|
+
});
|
|
94
|
+
if (installRes.error || installRes.status !== 0) {
|
|
95
|
+
console.error("Hata: 'agy plugin install' başarısız oldu.");
|
|
96
|
+
return installRes.status || 1;
|
|
97
|
+
}
|
|
98
|
+
console.log("✔ AGY native eklentisi kuruldu.");
|
|
99
|
+
|
|
100
|
+
if (flags.includes("--skip-vsix")) {
|
|
101
|
+
return 0;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
if (!fs.existsSync(BUNDLED_VSIX)) {
|
|
105
|
+
console.warn(`Uyarı: Paketlenmiş VSIX bulunamadı: ${BUNDLED_VSIX}`);
|
|
106
|
+
return 0;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
const ideBin = detectIdeCli(flags.includes("--vscode"));
|
|
110
|
+
if (ideBin) {
|
|
111
|
+
console.log(`→ Durum çubuğu eklentisi kuruluyor (${ideBin})...`);
|
|
112
|
+
const vsixRes = spawnSync(ideBin, ["--install-extension", BUNDLED_VSIX], {
|
|
113
|
+
stdio: "inherit",
|
|
114
|
+
});
|
|
115
|
+
if (!vsixRes.error && vsixRes.status === 0) {
|
|
116
|
+
console.log("✔ Durum çubuğu (.vsix) eklentisi kuruldu.");
|
|
117
|
+
return 0;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
console.log(
|
|
122
|
+
"\nℹ IDE Durum Çubuğu düğmesini kurmak için:\n" +
|
|
123
|
+
" 1) 'npx backeer-agy export-vsix' komutuyla .vsix dosyasını çalışma klasörünüze çıkarın,\n" +
|
|
124
|
+
" 2) Antigravity IDE'de Cmd+Shift+P → 'Extensions: Install from VSIX...' menüsünden seçin."
|
|
125
|
+
);
|
|
126
|
+
return 0;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* @param {string[]} flags
|
|
131
|
+
* @returns {number}
|
|
132
|
+
*/
|
|
133
|
+
function cmdUninstall(flags) {
|
|
134
|
+
if (canRunBinary("agy")) {
|
|
135
|
+
console.log("→ AGY native eklentisi kaldırılıyor...");
|
|
136
|
+
spawnSync("agy", ["plugin", "uninstall", "backeer-agy"], {
|
|
137
|
+
stdio: "inherit",
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
const ideBin = detectIdeCli(flags.includes("--vscode"));
|
|
141
|
+
if (ideBin) {
|
|
142
|
+
spawnSync(
|
|
143
|
+
ideBin,
|
|
144
|
+
["--uninstall-extension", "backeer.backeer-agy-statusbar"],
|
|
145
|
+
{ stdio: "inherit" }
|
|
146
|
+
);
|
|
147
|
+
}
|
|
148
|
+
console.log("✔ Kaldırma işlemi tamamlandı.");
|
|
149
|
+
return 0;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* @returns {number}
|
|
154
|
+
*/
|
|
155
|
+
function cmdStatus() {
|
|
156
|
+
const statePath = resolveStatePath();
|
|
157
|
+
const mode = readStateMode(statePath);
|
|
158
|
+
const info = MODES.find((m) => m.id === mode) || MODES[0];
|
|
159
|
+
|
|
160
|
+
console.log(`Aktif Mod : ${mode} (${info.detail})`);
|
|
161
|
+
console.log(`Durum Dosyası: ${statePath}`);
|
|
162
|
+
|
|
163
|
+
if (canRunBinary("agy")) {
|
|
164
|
+
const listRes = spawnSync("agy", ["plugin", "list", "--json"], {
|
|
165
|
+
encoding: "utf8",
|
|
166
|
+
});
|
|
167
|
+
if (!listRes.error && listRes.status === 0) {
|
|
168
|
+
try {
|
|
169
|
+
const plugins = JSON.parse(listRes.stdout || "[]");
|
|
170
|
+
const found =
|
|
171
|
+
Array.isArray(plugins) &&
|
|
172
|
+
plugins.find((p) => p && p.name === "backeer-agy");
|
|
173
|
+
console.log(
|
|
174
|
+
`AGY Eklentisi: ${found ? "Kurulu" : "Kurulu değil ('npx backeer-agy install' çalıştırın)"}`
|
|
175
|
+
);
|
|
176
|
+
} catch {
|
|
177
|
+
// Ignore JSON parse errors
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
return 0;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* @param {string | undefined} rawTargetMode
|
|
186
|
+
* @returns {number}
|
|
187
|
+
*/
|
|
188
|
+
function cmdMode(rawTargetMode) {
|
|
189
|
+
const candidate = /** @type {import("../vscode-extension/state_store").ApprovalMode} */ (
|
|
190
|
+
(rawTargetMode || "").trim().toLowerCase()
|
|
191
|
+
);
|
|
192
|
+
if (!VALID_MODE_IDS.has(candidate)) {
|
|
193
|
+
console.error(
|
|
194
|
+
`Hata: Geçersiz mod '${rawTargetMode || ""}'. Geçerli modlar: all, files_only, readonly, off`
|
|
195
|
+
);
|
|
196
|
+
return 1;
|
|
197
|
+
}
|
|
198
|
+
const statePath = resolveStatePath();
|
|
199
|
+
writeStateMode(statePath, candidate);
|
|
200
|
+
const info = MODES.find((m) => m.id === candidate) || MODES[0];
|
|
201
|
+
console.log(`✔ Mod güncellendi: ${candidate} — ${info.detail}`);
|
|
202
|
+
return 0;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* @param {string | undefined} destArg
|
|
207
|
+
* @returns {number}
|
|
208
|
+
*/
|
|
209
|
+
function cmdExportVsix(destArg) {
|
|
210
|
+
if (!fs.existsSync(BUNDLED_VSIX)) {
|
|
211
|
+
console.error(`Hata: VSIX dosyası bulunamadı: ${BUNDLED_VSIX}`);
|
|
212
|
+
return 1;
|
|
213
|
+
}
|
|
214
|
+
const targetDir = path.resolve(destArg || process.cwd());
|
|
215
|
+
fs.mkdirSync(targetDir, { recursive: true });
|
|
216
|
+
const targetFile = path.join(targetDir, VSIX_FILENAME);
|
|
217
|
+
fs.copyFileSync(BUNDLED_VSIX, targetFile);
|
|
218
|
+
console.log(`✔ VSIX kopyalandı: ${targetFile}`);
|
|
219
|
+
return 0;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
function main() {
|
|
223
|
+
const args = process.argv.slice(2);
|
|
224
|
+
const sub = args[0];
|
|
225
|
+
|
|
226
|
+
if (!sub || sub === "help" || sub === "--help" || sub === "-h") {
|
|
227
|
+
printHelp();
|
|
228
|
+
return 0;
|
|
229
|
+
}
|
|
230
|
+
if (sub === "--version" || sub === "-v" || sub === "version") {
|
|
231
|
+
console.log(PKG_JSON.version);
|
|
232
|
+
return 0;
|
|
233
|
+
}
|
|
234
|
+
if (sub === "install") {
|
|
235
|
+
return cmdInstall(args.slice(1));
|
|
236
|
+
}
|
|
237
|
+
if (sub === "uninstall") {
|
|
238
|
+
return cmdUninstall(args.slice(1));
|
|
239
|
+
}
|
|
240
|
+
if (sub === "status") {
|
|
241
|
+
return cmdStatus();
|
|
242
|
+
}
|
|
243
|
+
if (sub === "mode") {
|
|
244
|
+
return cmdMode(args[1]);
|
|
245
|
+
}
|
|
246
|
+
if (sub === "export-vsix") {
|
|
247
|
+
return cmdExportVsix(args[1]);
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
console.error(`Bilinmeyen komut: ${sub}\n`);
|
|
251
|
+
printHelp();
|
|
252
|
+
return 1;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
if (require.main === module) {
|
|
256
|
+
process.exitCode = main();
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
module.exports = { main };
|
package/hooks.json
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"file-access-auto-approve": {
|
|
3
|
+
"enabled": true,
|
|
4
|
+
"PreToolUse": [
|
|
5
|
+
{
|
|
6
|
+
"matcher": "read_file|write_file|edit_file|view_file|view_file_outline|view_code_item|write_to_file|replace_file_content|multi_replace_file_content|delete_file|list_dir|find_by_name|grep_search|run_command",
|
|
7
|
+
"hooks": [
|
|
8
|
+
{
|
|
9
|
+
"type": "command",
|
|
10
|
+
"command": "python3 -B ./scripts/approve_file_access.py",
|
|
11
|
+
"timeout": 5
|
|
12
|
+
}
|
|
13
|
+
]
|
|
14
|
+
}
|
|
15
|
+
]
|
|
16
|
+
}
|
|
17
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,39 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "backeer-agy",
|
|
3
|
-
"version": "
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"description": "Google Antigravity (AGY) plugin & IDE Status Bar extension to auto-approve non-sensitive file access and safe terminal commands.",
|
|
5
|
+
"author": "emresaracoglu",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"bin": {
|
|
8
|
+
"backeer-agy": "./bin/cli.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"plugin.json",
|
|
12
|
+
"hooks.json",
|
|
13
|
+
"assets/",
|
|
14
|
+
"scripts/",
|
|
15
|
+
"bin/",
|
|
16
|
+
"vscode-extension/backeer-agy-statusbar-1.1.0.vsix",
|
|
17
|
+
"vscode-extension/state_store.js",
|
|
18
|
+
"README.md",
|
|
19
|
+
"LICENSE"
|
|
20
|
+
],
|
|
21
|
+
"scripts": {
|
|
22
|
+
"build:vsix": "python3 -B vscode-extension/build_vsix.py",
|
|
23
|
+
"prepack": "python3 -B vscode-extension/build_vsix.py",
|
|
24
|
+
"test": "PYTHONDONTWRITEBYTECODE=1 python3 -W error -m unittest discover -s tests -v"
|
|
25
|
+
},
|
|
26
|
+
"engines": {
|
|
27
|
+
"node": ">=18.0.0"
|
|
28
|
+
},
|
|
29
|
+
"keywords": [
|
|
30
|
+
"google-antigravity",
|
|
31
|
+
"antigravity",
|
|
32
|
+
"agy",
|
|
33
|
+
"agy-plugin",
|
|
34
|
+
"auto-approve",
|
|
35
|
+
"permissions",
|
|
36
|
+
"hooks",
|
|
37
|
+
"vscode-extension"
|
|
38
|
+
]
|
|
39
|
+
}
|
package/plugin.json
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://antigravity.google/schemas/v1/plugin.json",
|
|
3
|
+
"name": "backeer-agy",
|
|
4
|
+
"displayName": "Backeer AGY Auto-Approve",
|
|
5
|
+
"version": "1.1.0",
|
|
6
|
+
"description": "Hassas dosyaları koruyarak dosya erişimlerini ve zararsız terminal komutlarını sessizce otomatik onaylayan, IDE Durum Çubuğu (Status Bar) destekli AGY eklentisi.",
|
|
7
|
+
"logo": "assets/logo.svg",
|
|
8
|
+
"suggestedPrompts": [
|
|
9
|
+
"Bu eklentinin hangi dosya erişimlerini ve terminal komutlarını otomatik onayladığını açıkla"
|
|
10
|
+
]
|
|
11
|
+
}
|