Plagin SDK
Plagin tomonidan tasvirlangan bir manifest.json. Rivojlantirish paytida manifestni tasdiqlaydigan shartnoma, platforma o’rnatish vaqtida majburlaydigan shartnoma bilan bir xil, shuning uchun o’tadigan manifest validate bu bozor qabul qiladigan bir manifestdir. aihummer plugin CLI butun hayot tsiklini qamrab oladi: ramkadan imzolash va nashrga qadar.
Bitta manifest, bitta shartnoma
Plagin aniq bitta haqqoniy manbaga ega — uning manifest.json. Bu plagin turini e’lon qiladi (kind), qanday sozlanganligi (config[]), uning imkoniyatlari va — mezbonning mahalliy xizmatlari uchun — install[] qadamlar va boshlash buyrug‘i SystemdDeployer ishlaydi. Chunki rivojlantirish va o‘rnatish bir xil validatsiya shartnomasidan foydalanadi, “yaroqli manifest” va “o‘rnatiladigan plagin” bir xil narsani anglatadi.
[!NOTE] Manifest plaginning shartnoma, uning do’kon-sahifa nomi emas. mashina
slugpapka/paket nomidan (xususiy yon yüklash) yoki dan keladi siz to’ldirgan taqdimot «Mening plaginlarim» jamiyat plagini e’lon qilganda — ko‘rish Pluginni nashr qilish.
CLI
aihummer plugin rivojlantirish, paketlash va nashr qilish buyruqlarini birlashtiradi:
# Scaffold a manifest (kind: connector | service | openapi | mcp)
aihummer plugin init <kind> [dir]
# Validate a manifest against the install contract
aihummer plugin validate <manifest.json>
# Generate an ed25519 author key (writes <prefix>.key and <prefix>.pub)
aihummer plugin keygen [--out <prefix>]
# Build and package the plugin into a release tarball + .sha256
aihummer plugin package <dir> [--out <file>] [--slug <slug>] [--build "<cmd>"]
# Sign the release identity (slug\0version\0source_ref); with --manifest the
# signature is embedded into the manifest.signature field
aihummer plugin sign --key <priv> [--manifest <m.json>] <bundle|dir>
# Upload a private plugin into your own instance (side-load)
aihummer plugin publish --private --instance <url> --token <admin> <bundle.tar.gz>
Nashr qilish uchun jamiyat har bir kishi uchun plagin, siz qilasiz emas CLI buyrug‘idan foydalaning — siz o‘zgartirilgan, imzolangani bo‘lgan artefaktni o‘zingizdan yuklaysiz Mening plaginlarim shaxsiy kabinetda (yuklash → AI ko‘rib chiqishi → moderatsiya). Ko‘ring Plagin yuborish.
| Buyruq | Nimani qiladi |
|---|---|
init <kind> [dir] |
Boshlovchi yozadi manifest.json tanlangan tur uchun. |
validate <m.json> |
Manifestni install bilan bir xil shartnoma bo‘yicha tasdiqlaydi. |
keygen |
Muallif kalit juftligini yaratadi: .key (shaxsiy, sir saqlang) va .pub, chop etadi key id. |
package <dir> |
Qurilmalar (ixt.) --build) va to’playdi <slug>-<version>.tar.gz bilan --strip-components=1 tartib, yozadi .sha256. Hech qachon ortmaydi .env, *.key, node_modules, .git. |
sign --key <priv> |
Chiqish shaxsini belgilaydi; imzoni bosadi va key id; bilan --manifest imzoni manifestga joylaydi. |
publish --private |
Sizning instansingizga paket yuklaydi POST /v1/admin/modules/upload. |
Ikkala nashr yo’li — shaxsiy yuklash va shaxsiy kabinet orqali jamiyat nashri — quyida batafsil bayon etilgan Pluginni nashr qilish.
Manifest maydonlari
Maydon talab qilinishi bog‘liq mehribon va plagin jamoatga ochiq yoki yo‘qligiga bog‘liq. Asosiy va shaxsiyat maydonlari:
| Maydon | Tur | Kerakli | Maqsad |
|---|---|---|---|
kind |
qator | har doim | Tur: connector | service | openapi | mcp. |
version |
qator | ha | Plagin versiyasi (semver), masalan 1.0.0. |
contract |
qator | kanallar uchun | Shartnoma ID, masalan aihummer.channel.v1. |
scope |
qator | yo‘q | Kirish modeli: shared (default) yoki personal. |
capabilities |
string[] | yo‘q | E’lon qilingan imkoniyatlar. |
config |
obyekt[] | yo‘q | Sozlash shakli maydonlari; har biri kerak key, plus label, secret, required. |
oauth |
ob’ekt | yo‘q | OAuth2 (authorize_url, token_url, scopes[]) foydalanuvchining hisobini ulash uchun. |
signature |
qator | imzolanganida | release identifikatori ustida base64 ed25519 imzosi (ichiga qo‘yilgan) sign). |
Turga xos maydonlar — aniq bitta blok quyilishiga qarab to’ldiriladi kind:
| Maydon | Mehribon uchun | Kerakli | Maqsad |
|---|---|---|---|
host_native.exec_start |
ulash qurilmasi, xizmat | ha | Uzoq umr ko‘radigan xizmatni ishga tushiradigan buyruq. |
host_native.runtime |
ulash vositasi, xizmat, mcp | yo‘q | node | python | binary. |
host_native.install |
ulash vositasi, xizmat, mcp | yo‘q | O‘rnatish bosqichlari (shell buyruqlari massivi), chiqarib olingandan keyin hostda ishga tushiriladi. |
host_native.port |
ulash qurilmasi, xizmat | yo‘q | Afzal ko‘rilgan TCP porti (joylashtiruvchi orqali qayta tayinlanishi mumkin $PORT). |
host_native.health_path |
ulash qurilmasi, xizmat | yo‘q | Sog’liqni tekshirish yo’li (standart) /healthz). |
openapi.spec_url |
openapi | ha | OpenAPI 3.x spetsifikatsiyasining URL manzili. |
openapi.base_url |
openapi | yo‘q | Oʻzlashtirish servers[0].url. |
openapi.allowed_hosts |
openapi | yo‘q | Sintetik asboblar uchun chiqish ruxsatnoma ro‘yxati. |
openapi.auth |
openapi | yo‘q | Xarita securityScheme → sirli ism. |
openapi.tool_prefix |
openapi | yo‘q | Asbob nomi old qo’shimchasi. |
mcp.transport |
mcp | ha | stdio yoki http. |
mcp.command / mcp.args |
mcp (stdio) | ha stdio uchun | Server ijro etiladigan fayli va argumentlari. |
mcp.url |
mcp (http) | ha http uchun | MCP endpoint URL manzili. |
mcp.auth_header / mcp.secret_token_key |
mcp (http) | yo‘q | Tashuvchi tokeni uchun sarlavha va maxfiy kalit. |
Doʻkon sahifasi va identifikatsiya maydonlari (jamiyat plaginlari uchun)
Manifest shuningdek nashriyot identifikatori va do‘kon-sahifa maydonlarini ham olib yurishi mumkin. Bir jamiyat plagin bu katalogda ko‘rsatilgan narsalar, lekin odatda ularni ichiga kiritasiz «Mening plaginlarim» tadbirkorlik vaqti kelganda shaxsiy kabinetingizdagi doʻkon sahifasida (nomi, tavsiflari, ikonkasi, ekran tasvirlari, kategoriyasi, xayriya havolasi) kiritiladi, manifestda qoʻlda emas. Shaxsiy yuklash ular hech qaysisiga muhtoj emas — bunday plagin instansiya darajasida ishonchli hisoblanadi.
| Maydon | Tur | Kerakli | Maqsad |
|---|---|---|---|
visibility |
qator | yo‘q | public | private | unlisted. Bo’sh = meros/ilk tomon (hech qanday shaxsni aniqlash talab qilinmaydi). |
publisher |
qator | jamoat uchun | Nashriyot nomlari fazosi, ^[a-z0-9][a-z0-9-]{1,38}$. Jamoat tirmalari nomlanadi @publisher/slug. |
publisher_key_id |
qator | jamoat uchun | key id kalit bilan artefakt imzolangan. |
description |
qator | jamoat uchun | Katalogdagi do’kon sahifasi qisqacha matni. |
icon |
qator | jamoat uchun | Plagin ikonkasi: bir https:// URL yoki a data: URI. |
screenshots |
string[] | yo‘q | Doʻkon sahifasi skrinshotlari (massiv) https:// URL-lar; har biri bo’sh emas). |
[!TIP] Yugur
aihummer plugin validatejo’natishdan oldin. O’rnatish va tasdiqlash shartnoma bir xil, shuning uchun mahalliy darajada o‘tadigan manifest ikkalasida ham qabul qilinadi bozor joylashtiruvchisi tomonidan va shaxsiy kabinetingizdagi bozor sharhi orqali.
Minimal manifestlar
A service skameyka (nima aihummer plugin init service yozadi):
{
"version": "1.0.0",
"kind": "service",
"scope": "shared",
"contract": "aihummer.channel.v1",
"host_native": {
"runtime": "node",
"install": ["npm ci --omit=dev"],
"exec_start": "node dist/main.js",
"port": 8800,
"health_path": "/healthz"
},
"config": [
{ "key": "api_token", "label": "API token", "secret": true, "required": true }
]
}
Nol-kod openapi manifest hattoki qisqaroq — u faqat spetsifikatsiyaga ishora qiladi:
{
"version": "1.0.0",
"kind": "openapi",
"scope": "shared",
"openapi": {
"spec_url": "https://api.example.com/openapi.json",
"tool_prefix": "example_",
"allowed_hosts": ["api.example.com"],
"auth": { "bearerAuth": "api_token" }
},
"config": [
{ "key": "api_token", "label": "API token", "secret": true, "required": true }
]
}
Bir mcp manifest (stdio transport):
{
"version": "1.0.0",
"kind": "mcp",
"scope": "shared",
"host_native": { "runtime": "node", "install": ["npm ci --omit=dev"] },
"mcp": { "transport": "stdio", "command": "node", "args": ["server.js"] }
}
Manifestdan bozorga
Tekshirishdan so‘ng, plagin paketlanadi (package), imzolangan (sign) va ikkita usuldan birida nashr etiladi:
- Shaxsiy (o’zingiz uchun) — Admin UI orqali yoki o‘z instantsiyangizga qo‘l bilan yuklang
publish --private. Artefakt hech qachon instansiyani tark etmaydi. - Jamiyat (hamma uchun) — qadoqlangan, imzolangan artefaktni yuklang Mening plaginlarim shaxsiy kabinetingizda; AI tekshiruvidan va inson moderatsiyasidan so‘ng u imzolanadi va jamoatchilikka e’lon qilinadi katalog.
Ko’r Pluginni nashr qilish to’liq qo’llanma uchun.
Keyin qayerga
- Pluginni nashr qilish — shaxsiy yuklash va shaxsiy kabinet orqali jamoat nashriyoti, sharh va moderatsiya.
- Kodsiz integratsiyalar —
openapivamcpturlari batafsil. - O’rnatish va yangilanishlar — nima haydaydi
install[], sog‘liq darvozasi, ishonch va imzolangan yangilanishlar. - Marketplace: umumiy ko‘rinish va darajalar — qayerda har bir tur qanday yashaydi va rasmiy katalog jamoatchilikdan qanday farq qiladi.