प्लगइन एसडीके
एक प्लगइन द्वारा वर्णित किया जाता है एक manifest.json. विकास के दौरान मैनिफेस्ट को मान्य करने वाला अनुबंध वही है जिसे प्लेटफ़ॉर्म इंस्टॉल समय पर लागू करता है, इसलिए एक मैनिफेस्ट जो सफल होता है validate क्या एक घोषणापत्र है जिसे बाज़ार स्वीकार करेगा। aihummer plugin CLI पूरे जीवनचक्र को कवर करता है: स्कैफोल्ड से साइनिंग और प्रकाशन तक।
एक मैनिफेस्ट, एक अनुबंध
एक प्लगइन के पास ठीक एक ही सत्य का स्रोत होता है — इसका manifest.json. यह प्लगइन प्रकार घोषित करता है (kind), इसे कैसे कॉन्फ़िगर किया गया है (config[]), इसकी क्षमताओं, और — होस्ट-लोकल सेवाओं के लिए — install[] कदम और स्टार्ट कमांड जो सिस्टमडीडिप्लॉयर चलता है। क्योंकि विकास और स्थापना में एक ही सत्यापन अनुबंध का उपयोग होता है, इसलिए “मान्य मैनिफेस्ट” और “स्थापनीय प्लगइन” का अर्थ एक ही है।
[!NOTE] मैनिफेस्ट किसी प्लगइन का वर्णन करता है संधि, इसकी स्टोर-पेज नाम नहीं। मशीन
slugनिर्देशिका/बंडल नाम (निजी साइड-लोड) से आता है या से जो सबमिशन आप भरते हैं «मेरे प्लगइन्स» जब एक समुदाय प्लगइन प्रकाशित कर रहे हों — देखना एक प्लगइन प्रकाशित करना.
कमांड लाइन इंटरफ़ेस
aihummer plugin विकास, पैकेजिंग और प्रकाशन कमांड को बंडल करता है:
# 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>
प्रकाशित करने के लिए समुदाय सभी के लिए प्लगइन, आप करते हैं नहीं एक CLI कमांड का उपयोग करें — आप अपने पैक किए हुए, साइन किए गए आर्टिफैक्ट को अपलोड करते हैं मेरे प्लगइन्स व्यक्तिगत कैबिनेट में (अपलोड → एआई समीक्षा → मॉडरेशन)। देखें एक प्लगइन प्रस्तुत करें.
| आदेश | यह क्या करता है |
|---|---|
init <kind> [dir] |
एक स्टार्टर लिखता है manifest.json चुने हुए प्रकार के लिए। |
validate <m.json> |
इंस्टॉल के समान अनुबंध के साथ मैनिफेस्ट को मान्य करता है। |
keygen |
लेखक कुंजी जोड़ी उत्पन्न करता है: .key (निजी, गुप्त रखें) और .pub, प्रिंट करता है key id. |
package <dir> |
निर्माण (वैकल्पिक) --build) और पैक करता है <slug>-<version>.tar.gz के साथ --strip-components=1 लेआउट, लिखता है .sha256. कभी भी पैक नहीं करता .env, *.key, node_modules, .git. |
sign --key <priv> |
रिलीज़ पहचान के संकेत; हस्ताक्षर और मुद्रित करता है key id; के साथ --manifest हस्ताक्षर को मैनिफेस्ट में सम्मिलित करता है। |
publish --private |
आपके इंस्टेंस पर एक बंडल अपलोड करता है POST /v1/admin/modules/upload. |
दोनों प्रकाशन मार्ग — निजी साइड-लोड और व्यक्तिगत कैबिनेट के माध्यम से सामुदायिक प्रकाशन — पर विस्तार से बताया गया है एक प्लगइन प्रकाशित करना.
मैनिफेस्ट फ़ील्ड
किसी फील्ड की आवश्यकता इस पर निर्भर करती है दयालु और यह प्लगइन सार्वजनिक है या नहीं। बेस और पहचान फ़ील्ड:
| मैदान | लिखें | आवश्यक | उद्देश्य |
|---|---|---|---|
kind |
स्ट्रिंग | हमेशा | प्रकार: connector | service | openapi | mcp. |
version |
स्ट्रिंग | हाँ | प्लगइन संस्करण (सेमवर), उदाहरण के लिए 1.0.0. |
contract |
स्ट्रिंग | चैनलों के लिए | संपर्क आईडी, उदाहरण के लिए aihummer.channel.v1. |
scope |
स्ट्रिंग | नहीं | एक्सेस मॉडल: shared (डिफ़ॉल्ट) या personal. |
capabilities |
स्ट्रिंग[] | नहीं | घोषित क्षमताएँ। |
config |
वस्तु[] | नहीं | कॉन्फ़िग फॉर्म फ़ील्ड; प्रत्येक की आवश्यकता है key, प्लस label, secret, required. |
oauth |
वस्तु | नहीं | OAuth2 (authorize_url, token_url, scopes[]) एक उपयोगकर्ता के खाते को जोड़ने के लिए। |
signature |
स्ट्रिंग | जब हस्ताक्षर किया गया | रिलीज़ पहचान पर base64 ed25519 हस्ताक्षर (एम्बेड किया गया द्वारा sign). |
प्रकार-विशिष्ट फ़ील्ड — ठीक एक ब्लॉक इस पर निर्भर करके भरा जाता है kind:
| मैदान | दयालु के लिए | आवश्यक | उद्देश्य |
|---|---|---|---|
host_native.exec_start |
कनेक्टर, सेवा | हाँ | कमांड जो लंबे समय तक चलने वाली सेवा को चलाता है। |
host_native.runtime |
कनेक्टर, सेवा, एमसीपी | नहीं | node | python | binary. |
host_native.install |
कनेक्टर, सेवा, एमसीपी | नहीं | इंस्टॉल चरण (शेल कमांड्स की सूची), निष्कर्षण के बाद होस्ट पर चलाएं। |
host_native.port |
कनेक्टर, सेवा | नहीं | पसंदीदा TCP पोर्ट (तैनात करने वाला इसे पुनः असाइन कर सकता है $PORT). |
host_native.health_path |
कनेक्टर, सेवा | नहीं | हेल्थ-चेक पथ (डिफ़ॉल्ट /healthz). |
openapi.spec_url |
ओपनएपीआई | हाँ | OpenAPI 3.x विनिर्देश का URL। |
openapi.base_url |
ओपनएपीआई | नहीं | अधिकारपूर्वक बदलना servers[0].url. |
openapi.allowed_hosts |
ओपनएपीआई | नहीं | सिंथेसाइज किए गए टूल्स के लिए एग्रीस अलाउलिस्ट। |
openapi.auth |
ओपनएपीआई | नहीं | नक्शा securityScheme → गुप्त नाम। |
openapi.tool_prefix |
ओपनएपीआई | नहीं | उपकरण-नाम उपसर्ग। |
mcp.transport |
एमसीपी | हाँ | stdio या http. |
mcp.command / mcp.args |
एमसीपी (स्ट्डियो) | हाँ, स्टडियो के लिए | सर्वर निष्पादन योग्य और तर्क। |
mcp.url |
एमसीपी (एचटीटीपी) | हाँ http के लिए | एमसीपी एंडपॉइंट यूआरएल। |
mcp.auth_header / mcp.secret_token_key |
एमसीपी (एचटीटीपी) | नहीं | बेयरर टोकन के लिए हेडर और सीक्रेट कुंजी। |
स्टोर-पेज और पहचान फ़ील्ड (समुदाय प्लगइन्स के लिए)
मैनिफेस्ट में प्रकाशक की पहचान और स्टोर-पृष्ठ फ़ील्ड भी शामिल हो सकते हैं। एक के लिए समुदाय प्लगइन ये हैं जो कैटलॉग दिखाता है, लेकिन आप आम तौर पर इन्हें इसमें दर्ज करते हैं «मेरे प्लगइन्स» सबमिशन समय आपके व्यक्तिगत कैबिनेट में स्टोर पेज (नाम, विवरण, आइकन, स्क्रीनशॉट, श्रेणी, दान लिंक) में दर्ज करें, मैनिफेस्ट में हाथ से नहीं। एक निजी साइड-लोड को इनमें से किसी की भी आवश्यकता नहीं होती — ऐसा प्लगइन उदाहरण स्तर पर भरोसेमंद होता है।
| मैदान | लिखें | आवश्यक | उद्देश्य |
|---|---|---|---|
visibility |
स्ट्रिंग | नहीं | public | private | unlisted. खाली = लेगसी/प्रथम-पक्ष (कोई पहचान आवश्यकता नहीं)। |
publisher |
स्ट्रिंग | सार्वजनिक के लिए | प्रकाशक नामस्थान, ^[a-z0-9][a-z0-9-]{1,38}$. सार्वजनिक स्लग्स को नाम दिया जाता है @publisher/slug. |
publisher_key_id |
स्ट्रिंग | सार्वजनिक के लिए | key id उस कुंजी के साथ जिस पर कलाकृति साइन की गई है। |
description |
स्ट्रिंग | सार्वजनिक के लिए | कैटलॉग में स्टोर-पृष्ठ का संक्षिप्त वर्णन। |
icon |
स्ट्रिंग | सार्वजनिक के लिए | प्लगइन आइकन: एक https:// यूआरएल या एक data: यूआरआई. |
screenshots |
स्ट्रिंग[] | नहीं | स्टोर-पेज स्क्रीनशॉट्स (ऐरे ऑफ https:// URLs; प्रत्येक खाली नहीं)। |
[!TIP] भागो
aihummer plugin validateजमा करने से पहले। इंस्टॉल और सत्यापन ठेका समान होते हैं, इसलिए एक मैनिफेस्ट जो स्थानीय रूप से पास होता है वह दोनों जगह स्वीकार किया जाएगा मार्केटप्लेस डिप्लॉयर और आपके व्यक्तिगत कैबिनेट में मार्केटप्लेस समीक्षा द्वारा।
न्यूनतम अभिव्यक्तियाँ
ए service मचान (क्या aihummer plugin init service लिखता है):
{
"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 }
]
}
एक शून्य-कोड openapi मैनीफेस्ट और भी छोटा है — यह सिर्फ स्पेक की ओर इशारा करता है:
{
"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 }
]
}
एक mcp मेनिफेस्ट (स्ट्डिओ ट्रांसपोर्ट):
{
"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"] }
}
मैनिफेस्ट से मार्केटप्लेस तक
मान्यकरण के बाद, एक प्लगइन पैक किया जाता है (package), पर हस्ताक्षरित (sign) और दो तरीकों में से किसी एक तरीके से प्रकाशित किया गया:
- निजी (अपने लिए) — अपने इंस्टेंस में एडमिन यूआई के माध्यम से साइड-लोड करें या
publish --privateवस्तु कभी भी उदाहरण को नहीं छोड़ती। - समुदाय (सभी के लिए) — पैकेज किए गए, हस्ताक्षरित आर्टिफैक्ट को अपलोड करें मेरे प्लगइन्स आपके व्यक्तिगत अलमारी में; एआई समीक्षा और मानव मध्यस्थता के बाद इसे हस्ताक्षरित किया जाता है और समुदाय में प्रकाशित किया जाता है कैटलॉग.
देखो एक प्लगइन प्रकाशित करना पूर्ण मार्गदर्शन के लिए।
अगला कहाँ
- एक प्लगइन प्रकाशित करना — निजी साइड-लोड और सामुदायिक प्रकाशन व्यक्तिगत कैबिनेट के माध्यम से, समीक्षा और निगरानी।
- ज़ीरो-कोड इंटीग्रेशन —
openapiऔरmcpविस्तार में प्रकार। - स्थापित करें और अपडेट — क्या प्रेरित करता है
install[], स्वास्थ्य द्वार, भरोसा और हस्ताक्षरित अपडेट्स। - मार्केटप्लेस: अवलोकन और स्तर — कहाँ प्रत्येक प्रकार कैसे जीवित रहता है और आधिकारिक सूची समुदाय से कैसे अलग है।