Zum Hauptinhalt springen

Manifest-Referenz

Jedes Mini-Programm, Addon und Plugin benötigt eine manifest.json-Datei, die die Metadaten, Berechtigungen und Einstiegspunkte der Erweiterung beschreibt. Das Manifest folgt dem Manifest v2 Schema.

Minimales Beispiel​

Das einfachste gültige Manifest für ein Mini-Programm:

{
"name": "my-app",
"version": "1.0.0",
"abi": 1,
"type": "mini-program",
"entry": "index.html",
"base_url": "https://cdn.example.com/my-app/"
}

Vollständiges Beispiel​

Ein vollständiges Manifest mit allen häufig verwendeten Feldern:

{
"name": "word-counter",
"version": "1.2.0",
"abi": 1,
"type": "mini-program",
"title": "Wortzähler",
"description": "Zählen Sie Wörter in Ihrem Chat-Verlauf nach Rolle und visualisieren Sie Trends",
"icon": "https://cdn.example.com/word-counter/icon.png",
"author": {
"name": "Max Entwickler",
"url": "https://maxdev.com"
},
"entry": "index.html",
"base_url": "https://cdn.example.com/word-counter/",
"permissions": ["storage", "chat:read", "ui:toast"],
"keywords": ["statistik", "werkzeug", "wortzahl"],
"license": "MIT",
"repository": "https://github.com/maxdev/word-counter",
"min_platform_version": "1.0.0"
}

Feld-Referenz​

Erforderliche Felder​

name​

Eindeutiger Paketname. Wird als interner Bezeichner für Speicherisolation, Installationsprüfungen und Registry-Lookups verwendet.

EigenschaftWert
Typstring
Muster^[a-z0-9-]+$ (nur Kleinbuchstaben, Ziffern, Bindestriche)
Max. Länge64 Zeichen
ErforderlichJa
"name": "word-counter"
Vorsicht

Der Name muss innerhalb der Registry global eindeutig sein. Wählen Sie einen beschreibenden Namen. Sie können ihn nach der Veröffentlichung nicht ändern, ohne einen neuen Paketeintrag zu erstellen.

version​

Semantische Versionszeichenfolge. Muss dem semver-Format folgen.

EigenschaftWert
Typstring
Muster^\d+\.\d+\.\d+ (major.minor.patch, optionales Prerelease)
ErforderlichJa
"version": "1.0.0"

Wenn Sie Ihre App in der Registry aktualisieren, erhöhen Sie die Version sowohl im Manifest als auch im registry/packages.json-Eintrag.

Stark empfohlene Felder​

abi​

ABI-Version (Application Binary Interface), die dieses Manifest anspricht. Muss 1 für die aktuelle Plattform sein.

EigenschaftWert
Typinteger
Konstante1
ErforderlichTechnisch optional, aber stark empfohlen
"abi": 1

Die Plattform lehnt Manifeste mit anderen abi-Werten als 1 ab. Wenn weggelassen, geht die Plattform von ABI 1 aus, aber explizite Deklaration wird für Vorwärtskompatibilität bevorzugt.

type​

Erweiterungstyp. Bestimmt die Laufzeitumgebung und verfügbaren Funktionen.

EigenschaftWert
Typstring
Enum"plugin", "addon", "mini-program"
Standard"plugin"
"type": "mini-program"
TypLaufzeitUI-OberflächeAnforderungen
pluginWASM (Kernel-Slots 4-7)Keine (nur Hooks)wasm + wasm_sha256
addonWASM oder JSBenannte UI-Slotswasm oder entry
mini-programSandboxed iframe (null origin)Volles Panel (ersetzt Chat)entry + base_url

entry​

Pfad zur Entry-HTML-Datei, relativ zu base_url.

EigenschaftWert
Typstring
ErforderlichJa für Mini-Programme und HTML-Addons
"entry": "index.html"

Die Plattform ruft {base_url}{entry} zur Installationszeit ab und cacht das HTML für Offline-Nutzung.

base_url​

Basis-URL zur Auflösung der Entry-Datei und relativer Asset-Pfade (Bilder, Scripts, Stylesheets).

EigenschaftWert
Typstring (URI)
ErforderlichJa für Mini-Programme
"base_url": "https://cdn.example.com/word-counter/"

Ein <base href="{base_url}">-Tag wird in den iframe injiziert, damit relative Pfade in Ihrem HTML korrekt aufgelöst werden.

Info

Für .ais-Bundles, die per Datei-Upload installiert wurden, wird base_url automatisch auf local:// gesetzt, da alle Assets inline sind.

Optionale Metadaten-Felder​

title​

Menschenlesbarer Anzeigename, der im App Store und Berechtigungsdialog gezeigt wird. Wenn weggelassen, wird name verwendet.

EigenschaftWert
Typstring
"title": "Wortzähler"

description​

Kurze Beschreibung für den Store-Eintrag und den Berechtigungsdialog.

EigenschaftWert
Typstring
Max. Länge256 Zeichen
"description": "Zählen Sie Wörter in Ihrem Chat-Verlauf nach Rolle und visualisieren Sie Trends"

icon​

URL zu einem quadratischen Icon-Bild. Empfohlene Größe: 128x128 PNG. Angezeigt im Apps-Grid und Store-Eintrag.

EigenschaftWert
Typstring (URI)
"icon": "https://cdn.example.com/word-counter/icon.png"
Tipp

Verwenden Sie ein quadratisches PNG mit 128x128 Pixeln mit transparentem oder dunklem Hintergrund, um zum dunklen Theme der Plattform zu passen. SVG wird ebenfalls akzeptiert.

author​

Autoreninformation.

EigenschaftWert
Typobject
Eigenschaftenname (string, max 100), url (string, URI)
"author": {
"name": "Max Entwickler",
"url": "https://maxdev.com"
}

license​

SPDX-Lizenzkennung.

EigenschaftWert
Typstring
"license": "MIT"

repository​

Quellcode-Repository-URL.

EigenschaftWert
Typstring (URI)
"repository": "https://github.com/maxdev/word-counter"

keywords​

Suchbegriffe für die Auffindbarkeit im App Store.

EigenschaftWert
Typstring[]
Max. Items10
Max. pro Keyword32 Zeichen
"keywords": ["statistik", "werkzeug", "wortzahl"]

min_platform_version​

Minimale AISCouncil Plattform-Version, die zum Ausführen dieser Erweiterung erforderlich ist.

EigenschaftWert
Typstring (semver)
"min_platform_version": "1.0.0"

Berechtigungen​

permissions​

Array von Berechtigungszeichenfolgen, die die Erweiterung anfordert. Der Benutzer muss diese zur Installationszeit genehmigen.

EigenschaftWert
Typstring[]
Eindeutige ItemsJa
"permissions": ["storage", "chat:read", "ui:toast"]

Verfügbare Berechtigungen​

BerechtigungBeschreibungAuto-genehmigt?
storagePro-App isolierter Schlüssel-Wert-SpeicherJa (immer erlaubt)
chat:readChat-Verlauf lesen und neue Nachrichten abonnierenNein
chat:writeNachrichten als Benutzer senden (löst KI-Antworten aus)Nein
config:readAktive Bot-Konfiguration lesen (Anbieter, Modell, System-Prompt)Nein
config:writeAktive Bot-Konfiguration ändernNein
auth:readBenutzerinfo lesen (Name, E-Mail, Profilbild) und Abonnement-LevelNein
ui:toastToast-Benachrichtigungen in der Plattform-UI anzeigenNein
ui:modalBestätigungsdialoge anzeigenNein
hooks:actionHook-Events registrieren und feuernNein
hooks:filterFilter-Hooks registrierenNein
network:fetchProxied Netzwerkrequests durch die Plattform machen (zukünftig)Nein
secrets:syncAPI-Schlüssel für Gerät-zu-Gerät-Übertragung lesen und schreibenNein
pages:publishWebseiten auf bcz.co veröffentlichenNein
Warnung

Fordern Sie nur die Berechtigungen an, die Ihre App tatsächlich benötigt. Jede zusätzliche Berechtigung erhöht die Installationshürde – Benutzer genehmigen eher Apps mit weniger Berechtigungen.

Plugin-spezifische Felder​

Diese Felder werden von Plugins und WASM-Addons verwendet, nicht von Mini-Programmen.

wasm​

URL zur WASM-Binärdatei.

EigenschaftWert
Typstring (URI)
ErforderlichFür Plugins
"wasm": "https://cdn.example.com/my-plugin/plugin.wasm"

wasm_sha256​

SHA-256 Hex-Digest der WASM-Binärdatei zur Integritätsprüfung.

EigenschaftWert
Typstring
Muster^[0-9a-f]{64}$
ErforderlichFür Plugins
"wasm_sha256": "a1b2c3d4e5f6..."

segment_size​

WASM-Modul-Speichersegmentgröße in Bytes.

EigenschaftWert
Typinteger
Minimum0
"segment_size": 4194304

Erweiterte Felder​

pages​

Zusätzliche Seitenpfade für Multi-Page-Mini-Programme.

EigenschaftWert
Typstring[]
"pages": ["settings.html", "about.html"]

hooks​

Hook-Registrierungen für Plugins und Addons. Jeder Hook hat einen Namen und optionale Priorität.

EigenschaftWert
Typobject[]
"hooks": [
{ "name": "chat:before-send", "priority": 50 },
{ "name": "message:filter", "priority": 100 }
]

Hook-Namen müssen ^[a-z][a-z0-9_.:-]*$ entsprechen und maximal 128 Zeichen lang sein. Die Priorität reicht von 0 (frühestens) bis 999 (spätestens), Standard ist 100.

settings​

Benutzerkonfigurierbare Einstellungen, die in der Plattform-Einstellungs-UI erscheinen.

EigenschaftWert
Typobject (Schlüssel sind Einstellungsnamen, Werte sind Einstellungsdefinitionen)
"settings": {
"theme": {
"type": "select",
"label": "Farbdesign",
"default": "dark",
"options": [
{ "value": "dark", "label": "Dunkel" },
{ "value": "light", "label": "Hell" }
]
},
"maxMessages": {
"type": "number",
"label": "Max. zu analysierende Nachrichten",
"default": 500,
"description": "Begrenzen Sie die Anzahl der geladenen Chat-Nachrichten"
},
"autoRefresh": {
"type": "boolean",
"label": "Auto-Aktualisierung beim Öffnen",
"default": true
}
}

Einstellungstypen: string, number, boolean, select.

mcp_tools​

MCP (Model Context Protocol) Werkzeugdeklarationen, die von dieser Erweiterung bereitgestellt werden.

EigenschaftWert
Typobject[]
"mcp_tools": [
{
"name": "count-words",
"description": "Wörter im angegebenen Text zählen",
"inputSchema": {
"type": "object",
"properties": {
"text": { "type": "string" }
},
"required": ["text"]
}
}
]

Typ-spezifische Anforderungen​

FeldPluginAddonMini-Programm
nameErforderlichErforderlichErforderlich
versionErforderlichErforderlichErforderlich
type"plugin""addon""mini-program"
wasmErforderlichErforderlich wenn kein entryNicht verwendet
wasm_sha256ErforderlichErforderlich wenn wasm verwendetNicht verwendet
entryNicht verwendetErforderlich wenn kein wasmErforderlich
base_urlNicht verwendetOptionalErforderlich

Validierung​

Verwenden Sie das integrierte Validierungsskript, um Ihr Manifest vor der Veröffentlichung zu prüfen:

# Eine einzelne Manifest-Datei validieren
python3 registry/validate.py manifest path/to/manifest.json

Der Validator prüft:

  • Erforderliche Felder sind vorhanden
  • name entspricht dem Muster ^[a-z0-9-]+$ und ist maximal 64 Zeichen
  • version ist gültiges semver
  • abi ist 1 (falls vorhanden)
  • type ist einer von plugin, addon, mini-program
  • Berechtigungen stammen aus der zulässigen Menge
  • Typ-spezifische erforderliche Felder sind vorhanden (z.B. entry für Mini-Programme)
  • Keine unbekannten Felder (Schema ist strikt mit additionalProperties: false)
Tipp

Das JSON Schema ist unter registry/manifest-schema.json veröffentlicht. Sie können es mit jedem JSON Schema Validator für IDE-Integration oder CI-Pipelines verwenden.


Schema-Referenz​

Das Manifest-Schema ist als JSON Schema (Draft 2020-12) definiert und verfügbar unter:

https://aiscouncil.com/schema/manifest/v2

Referenzieren Sie es in Ihrem Manifest für Editor-Autocompletion:

{
"$schema": "https://aiscouncil.com/schema/manifest/v2",
"name": "my-app",
"version": "1.0.0"
}

Die meisten Editoren (VS Code, JetBrains, etc.) bieten Autocompletion und Validierung, wenn das $schema-Feld vorhanden ist.