Kartentypen und benutzerdefinierte Felder
Wissenskarten in Memories unterstützen geordnete, typisierte Felder zusätzlich zu ihrem bestehenden
Titel, Dokumentinhalt, ihren Tags und Links. Die integrierten Typen sind note, contact,
link, snippet, checklist, event und credential. Ein Typ stellt anfängliche
Felder bereit und schränkt nicht ein, welche zusätzlichen Felder eine Karte enthalten darf.
Schema
Content.card_type ist eine optionale Zeichenfolge: der Name eines integrierten Typs oder die
ID einer benutzerdefinierten Vorlage. Content.fields ist ein geordnetes Array:
{"id":"work-email","name":"Work email","kind":"email","value":"name@example.com"}
Feld-IDs bleiben bei Umbenennungen und Änderungen der Reihenfolge stabil. Unterstützte Feldarten:
| Feldart | Wert |
|---|---|
text, multiline, sensitive |
Zeichenfolge |
number |
JSON-Zahl |
date |
gültiges Kalenderdatum, YYYY-MM-DD |
url |
absolute HTTP- oder HTTPS-URL |
email, phone |
validierte Zeichenfolge |
checkbox |
JSON-Boolescher Wert |
single_select |
eine Zeichenfolge aus options |
multi_select |
unterschiedliche Zeichenfolgen aus options |
null bedeutet leer (oder maskiert bei einem sensiblen Feld). Auswahlarten erfordern ein
nicht leeres options-Array mit eindeutigen Einträgen; bei anderen Arten muss options entfallen. Eine Karte hat
höchstens 64 Felder mit eindeutigen IDs sowie begrenzten Namen und Werten.
Verschlüsselung und Autorisierung
Jede Revision verschlüsselt den vollständigen Content mit der bestehenden
Tresorverschlüsselung. Sensible Werte gewöhnlicher Karten werden aus fields entfernt und
im internen field_body gespeichert, einem base64url-kodierten strukturierten Inhalt innerhalb dieser verschlüsselten
Revision, analog zu Zugangsdateninhalten. Base64url selbst ist keine Verschlüsselung.
field_body wird bei normalen Lese-, Auflistungs- und Anzeigeoperationen niemals zurückgegeben, und sensible
Feldwerte erscheinen als null. Dokumentinhalte bleiben unverändert und durchsuchbar;
sensible Werte werden weder im Dokumentinhalt noch im Abrufcache abgelegt. Diffs
zeigen nur Deskriptoren und nicht sensible Felder.
Ein gezielter Aufruf von card_fields mit reveal: true erfordert eine verifizierte CLI-/Mobil-Berechtigungserhöhung
oder eine MCP-Capability mit allow_all. Die Auslieferungsabsicht wird vor der
Rückgabe von Klartext im Audit protokolliert und dauerhaft gespeichert. MCP-Capabilities erben niemals eine Berechtigungserhöhung des Terminals. Die Anzeige
typisierter Felder auf Mobilgeräten erfordert zusätzlich eine erfolgreiche biometrische/PIN-Prüfung des Systems,
auch wenn die optionale Schnellentsperrung deaktiviert ist; abgebrochene oder nicht verfügbare Prüfungen
rufen keine sensiblen Werte ab. Der
Browsereditor auf dem Desktop besitzt bewusst keinen Endpunkt zum Anzeigen von Geheimnissen oder Passwörtern;
verwenden Sie für sensible Werte die verifizierte native App oder CLI.
Wiederverwendbare Vorlagen
Vorlagen sind private, verschlüsselte, signierte Kartenrevisionen mit
type_template: {id, name, fields}. Sie verwenden den bestehenden Revisionsverlauf, die Tresor-
Autorisierung, Konfliktbehandlung und verschlüsselte Geräte-/Cloud-Synchronisierung statt
einer unsignierten separaten Datenbank. Sie werden aus gewöhnlichen Kartenlisten und Abrufen ausgeschlossen.
Integrierte Typen können weder geändert noch gelöscht werden. Eine benutzerdefinierte Vorlage kann aus
einer bestehenden Karte erstellt werden; sensible Standardwerte sind immer maskiert. Das direkte Erstellen einer Vorlage
mit einem sensiblen Standardwert ungleich null wird abgelehnt.
Das Aktualisieren oder Löschen einer Vorlage schreibt bestehende Karten nicht um. Karten behalten ihre eigenen Felder und können nach dem Löschen ihrer Vorlage weiterhin bearbeitet werden.
CLI
Starten Sie den Daemon mit demselben dedizierten Home-Verzeichnis, das die Clients verwenden:
memories daemon
memories type list VAULT
memories type create VAULT Project --from-card CARD
memories type show VAULT TYPE
memories type update VAULT TYPE Project --fields template-fields.json
memories type delete VAULT TYPE
memories card create VAULT --title Ada --type contact
memories card put VAULT --title Notes --type note --input notes.md
memories card field add VAULT CARD Team --id team --kind text --value Core
memories card field add VAULT CARD Status --kind single_select --option Open --option Done
memories card field set VAULT CARD team Platform
memories card field rename VAULT CARD team "Working team"
memories card field mv VAULT CARD team 0
memories card field rm VAULT CARD team
memories card field list VAULT CARD
memories sudo
memories card field add VAULT CARD Key --kind sensitive
memories card field list VAULT CARD --reveal
Sensible Werte werden über verborgene Terminal-Eingabeaufforderungen eingegeben, niemals als Befehlszeilenwerte. Zahlen,
Kontrollkästchen und Mehrfachauswahlwerte verwenden JSON-Syntax. Verwenden Sie die kurzen IDs, die
die CLI bei Auflistung und Anzeige zurückgibt, einschließlich der IDs benutzerdefinierter Typen. --fields akzeptiert ein JSON-Feldarray.
Daemon, FFI und MCP
Die gemeinsame JSON-/C-ABI unterstützt type_list, type_show, type_create,
type_update, type_delete, card_create, card_fields und card_field.
card_field.operation verwendet action: add|remove|reorder|rename|set mit dem jeweiligen Feld,
der ID, dem nullbasierten Index, dem neuen Namen oder Wert. Beim Speichern nativer Formulare wird auch
replace verwendet, um ein geordnetes Feldarray atomar zu speichern und dabei maskierte
bestehende sensible Werte zu erhalten. Diese Operationen hängen
signierte Revisionen an und behalten die ursprüngliche Asset-Art bei.
MCP-Tools verwenden dieselben Namen für Vorlagen, card_fields für eine maskierte Einsicht
und card_field_add|remove|reorder|rename|set für Änderungen. card_field_reveal
erfordert eine einzelne field-ID, intent: "reveal_plaintext", einen kurzen reason und
den Geltungsbereich allow_all. MCP kann keine Auslieferung sämtlicher Geheimnisse einer Karte anfordern.
Normale Schreibvorgänge erfordern einen Schreib-Geltungsbereich; das Löschen eines Typs erfordert einen Lösch-Geltungsbereich. Änderungen sensibler Werte
erfordern eine unabhängig verifizierte MCP-Capability mit allow_all; dadurch wird
weder eine Sitzung mit erhöhten Terminalberechtigungen erstellt noch werden private gewöhnliche Karten offengelegt.
Flutter verwendet die bestehende JSON-ABI memories_call: Es ist keine Änderung der ABI-Symbole
nötig. Der generische Editor umfasst die Typauswahl, Eingaben je Feldart,
das Umbenennen und Entfernen von Feldern sowie das Ändern der Reihenfolge durch Ziehen. Der gehostete Einstieg verwendet dasselbe Formular und behält
den Warnhinweis zur Lesbarkeit durch den Server bei.
Gehostete und geräteversiegelte Karten
Hosted-SaaS-RPC stellt diese Operationen innerhalb des Tresors und Geltungsbereichs des Bearer-Tokens bereit.
Für den Server lesbare gehostete Karten verwenden weiterhin die Tresorverschlüsselung im Ruhezustand. Eine e2e-Karte
darf weder sensible Felder ungleich null noch einen internen field_body enthalten; sowohl rohe
Put-Operationen als auch Feldänderungen lehnen sensible Klartextwerte ab. Nicht sensible Deskriptoren können
bearbeitet werden, ohne sensible Werte an Center zu senden.
Das mobile Versiegelungsformular für gekoppelte Geräte sendet ausschließlich einen verschlüsselten Umschlag. Generische Karten verwenden diesen Umschlag-Klartext, der auf dem Client aufgebaut wird:
{"memories.card":1,"meta":{"card_type":"contact","fields":[
{"id":"key","name":"Key","kind":"sensitive","value":null}
]},"body":{"text":"notes","sensitive":{"key":"value"}}}
Center erhält den Umschlag, nicht diesen Klartext. memories device sealed-get
--vault V --card C --field key --reveal liest ein einzelnes Feld auf einem vertrauenswürdigen gekoppelten
Gerät. Ältere Umschläge für rohe Geheimnisse und strukturierte Zugangsdaten werden weiterhin unterstützt.
Kompatibilität
Fehlende Typ- und Feldmember werden mit Standardwerten deserialisiert. Bestehende untypisierte Karten
werden als note behandelt, ohne ihre Inhalte umzuschreiben. Ältere Zugangsdaten werden
als credential behandelt; nicht sensible Metadaten werden beim Lesen auf nicht sensible Felder und Werte des geheimen
Inhalts auf sensible Felder abgebildet. Änderungen an Zugangsdatenfeldern behalten den
bestehenden strukturierten Zugangsdateninhalt bei, damit Verbraucher für Kopieren, OTP und Einfügen weiterhin
funktionieren. Binäre ältere Zugangsdaten lehnen die Migration zu generischen Textfeldern ab,
anstatt ihre Bytes zu verwerfen. Frühere signierte Revisionen bleiben im Verlauf erhalten.
Aktualisieren Sie alle Geräte, bevor Sie das neue Schema austauschen: Ältere ausführbare Programme, die unbekannte JSON-Member ablehnen, verstehen die neuen Revisionen typisierter Karten nicht.