@mana/shared-share-protocol@0.1.0 ist jetzt installierbar (NPM_AUTH_TOKEN aus claudebot-Verdaccio-Account). Lokaler protocol/-Mirror zeigt jetzt auf upstream: - envelope.ts → Re-Export von ShareEnvelopeSchema/Strict, parseEnvelope, ENVELOPE_VERSION, ShareEnvelope - search.ts → Re-Export von SearchHitSchema, SearchResultEnvelopeSchema, SEARCH_ENVELOPE_VERSION, SearchHit, SearchResultEnvelope - payloads.ts → Re-Export der Format-Schemas (Quote/Link/Text); Cards-spezifische PAYLOAD_SCHEMAS / validatePayloadForType bleiben lokal (Akzeptanz-Liste ist Cards-Layer, nicht Föderation) Spec-Drift gefixt: der frühere Mirror nutzte MANA_TYPE_URL = 'mana/url', upstream definiert MANA_TYPE_LINK = 'mana/link'. app-manifest.json, share-handlers (UrlPayload → LinkPayload, "mana/url" → "mana/link") und Doku-Kommentare auf den Spec-konformen Namen umgestellt. DNS-Korrektur in Repo-.npmrc: pkg.mana.how-Tunnel ist Lame-Duck (404), npm.mana.how ist die produktive Verdaccio-Route nach 2026-05-07-Re-Deploy. ~/.npmrc bleibt unangetastet — Anpassung ist user-side. Tests + svelte-check 0 errors, 92 Tests grün (41 Domain + 46 API + 5 Web), prod-Build sauber. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
65 lines
2 KiB
JSON
65 lines
2 KiB
JSON
{
|
|
"$schema": "https://pkg.mana.how/@mana/shared-share-protocol/0.1/manifest.json",
|
|
"schema_version": "0.1",
|
|
"id": "cards",
|
|
"name": "Cardecky",
|
|
"version": "1.0.0",
|
|
"homepage": "https://cardecky.mana.how",
|
|
"icon": "https://cardecky.mana.how/icon-512.png",
|
|
"description": "Spaced-repetition flashcards with FSRS scheduling.",
|
|
"description_de": "Lernkarten mit Spaced-Repetition (FSRS).",
|
|
"ownership": { "kind": "verein" },
|
|
"tier_required": "beta",
|
|
"endpoints": {
|
|
"base_url": "https://cardecky.mana.how",
|
|
"health": "/healthz",
|
|
"dsgvo_export": "/api/v1/dsgvo/export",
|
|
"search": "/api/v1/search",
|
|
"share_receive": "/api/v1/share/receive",
|
|
"tool_invoke": "/api/v1/tools/:name",
|
|
"deep_link_scheme": "cards://",
|
|
"link_patterns": [
|
|
{
|
|
"pattern": "card/(?<id>[a-z0-9_-]+)",
|
|
"template": "https://cardecky.mana.how/c/{id}"
|
|
},
|
|
{
|
|
"pattern": "deck/(?<id>[a-z0-9_-]+)",
|
|
"template": "https://cardecky.mana.how/d/{id}"
|
|
}
|
|
]
|
|
},
|
|
"shares": [{ "type": "mana/card", "schema_ref": "/payload-schemas/card.json" }],
|
|
"accepts": [
|
|
{ "type": "mana/quote", "handler": "create_card_from_quote" },
|
|
{ "type": "mana/link", "handler": "save_link_as_card" },
|
|
{ "type": "mana/text", "handler": "create_card_from_text" }
|
|
],
|
|
"tools": [
|
|
{
|
|
"name": "cards.create",
|
|
"description": "Erzeugt eine Lernkarte für den authentifizierten User.",
|
|
"input_schema": { "$ref": "/payload-schemas/create-card-input.json" },
|
|
"output_schema": { "$ref": "/payload-schemas/card.json" },
|
|
"auth": "user_token"
|
|
},
|
|
{
|
|
"name": "cards.search",
|
|
"description": "Sucht in den Lernkarten des authentifizierten Users.",
|
|
"input_schema": { "$ref": "/payload-schemas/search-input.json" },
|
|
"output_schema": { "$ref": "/payload-schemas/search-output.json" },
|
|
"auth": "user_token"
|
|
}
|
|
],
|
|
"search": {
|
|
"types": ["card", "deck"],
|
|
"languages": ["de", "en", "fr", "es", "it"],
|
|
"max_results": 30,
|
|
"timeout_ms": 3000
|
|
},
|
|
"data": {
|
|
"personal_data_categories": ["card_content", "review_history"],
|
|
"encrypted_at_rest": false,
|
|
"storage_location": "EU"
|
|
}
|
|
}
|