Pseudonymize-and-AI workflow for handling PII-sensitive text via the Velum API and Raycast AI. Commands cover end-to-end email summary and reply, briefing/action-items/structured-data extraction, manual pseudonymize/depseudonymize on selection or clipboard, and session management. Includes Raycast 2.0 Beta workarounds for selection capture and rich-text clipboard. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
254 lines
8.0 KiB
JSON
254 lines
8.0 KiB
JSON
{
|
|
"$schema": "https://www.raycast.com/schemas/extension.json",
|
|
"name": "velum",
|
|
"title": "Velum",
|
|
"description": "Text per Velum-API pseudonymisieren und wiederherstellen.",
|
|
"icon": "extension-icon.png",
|
|
"author": "raphael",
|
|
"license": "MIT",
|
|
"categories": [
|
|
"Productivity",
|
|
"Developer Tools"
|
|
],
|
|
"commands": [
|
|
{
|
|
"name": "summarize-email",
|
|
"title": "Email-Konversation zusammenfassen",
|
|
"description": "Markierte Email pseudonymisieren, per Raycast-KI zusammenfassen und wiederherstellen.",
|
|
"mode": "view"
|
|
},
|
|
{
|
|
"name": "reply-email",
|
|
"title": "Email-Antwort generieren",
|
|
"description": "Antwort auf eine markierte Email/einen Mailverlauf per Raycast-KI verfassen — pseudonymisiert.",
|
|
"mode": "view"
|
|
},
|
|
{
|
|
"name": "briefing-from-notes",
|
|
"title": "Briefing aus Notizen",
|
|
"description": "Aus Notizen, Stichpunkten oder einem Transkript ein strukturiertes Briefing per Raycast-KI erstellen — pseudonymisiert.",
|
|
"mode": "view"
|
|
},
|
|
{
|
|
"name": "extract-action-items",
|
|
"title": "Action Items extrahieren",
|
|
"description": "Action Items aus einem Transkript, Thread oder Notizen als Markdown-Tabelle extrahieren — pseudonymisiert.",
|
|
"mode": "view"
|
|
},
|
|
{
|
|
"name": "extract-structured-data",
|
|
"title": "Strukturierte Daten extrahieren",
|
|
"description": "Strukturierte Daten (JSON oder Tabelle) aus Freitext gemäß einem Schema extrahieren — pseudonymisiert.",
|
|
"mode": "view"
|
|
},
|
|
{
|
|
"name": "pseudonymize-text",
|
|
"title": "Text pseudonymisieren",
|
|
"description": "Eingegebenen, markierten oder Zwischenablage-Text pseudonymisieren.",
|
|
"mode": "view"
|
|
},
|
|
{
|
|
"name": "pseudonymize-selected-text",
|
|
"title": "Markierten Text pseudonymisieren",
|
|
"description": "Aktuell markierten Text pseudonymisieren und das Ergebnis kopieren oder einfügen.",
|
|
"mode": "no-view"
|
|
},
|
|
{
|
|
"name": "pseudonymize-clipboard",
|
|
"title": "Zwischenablage pseudonymisieren",
|
|
"description": "Aktuellen Zwischenablage-Text pseudonymisieren und das Ergebnis kopieren oder einfügen.",
|
|
"mode": "no-view"
|
|
},
|
|
{
|
|
"name": "depseudonymize-text",
|
|
"title": "Text wiederherstellen",
|
|
"description": "Platzhalter mit einer gespeicherten Velum-Zuordnung wiederherstellen.",
|
|
"mode": "view"
|
|
},
|
|
{
|
|
"name": "depseudonymize-selected-text",
|
|
"title": "Markierten Text wiederherstellen",
|
|
"description": "Aktuell markierten Text mit der aktiven Sitzung wiederherstellen und das Ergebnis kopieren oder einfügen.",
|
|
"mode": "no-view"
|
|
},
|
|
{
|
|
"name": "depseudonymize-clipboard",
|
|
"title": "Zwischenablage wiederherstellen",
|
|
"description": "Aktuellen Zwischenablage-Text mit der aktiven Sitzung wiederherstellen und das Ergebnis kopieren oder einfügen.",
|
|
"mode": "no-view"
|
|
},
|
|
{
|
|
"name": "manage-sessions",
|
|
"title": "Sitzungen verwalten",
|
|
"description": "Velum-Sitzungen mit Zuordnungen anlegen, aktivieren, ansehen und löschen.",
|
|
"mode": "view"
|
|
}
|
|
],
|
|
"preferences": [
|
|
{
|
|
"name": "velumBaseUrl",
|
|
"title": "Velum Basis-URL",
|
|
"description": "Basis-URL der Velum-Installation, z. B. https://velum.example.com.",
|
|
"type": "textfield",
|
|
"required": true,
|
|
"placeholder": "https://velum.example.com"
|
|
},
|
|
{
|
|
"name": "authentikTokenUrl",
|
|
"title": "Authentik Token-URL",
|
|
"description": "OAuth2-Token-Endpunkt, üblicherweise https://auth.example.com/application/o/token/.",
|
|
"type": "textfield",
|
|
"required": true,
|
|
"placeholder": "https://auth.example.com/application/o/token/"
|
|
},
|
|
{
|
|
"name": "clientId",
|
|
"title": "OAuth Client-ID",
|
|
"description": "Client-ID des Authentik-Providers, der Tokens für Velum ausstellt.",
|
|
"type": "textfield",
|
|
"required": true
|
|
},
|
|
{
|
|
"name": "serviceAccountUsername",
|
|
"title": "Dienstkonto-Benutzername",
|
|
"description": "Benutzername des Authentik-Dienstkontos, z. B. svc-velum-raycast.",
|
|
"type": "textfield",
|
|
"required": true
|
|
},
|
|
{
|
|
"name": "serviceAccountPassword",
|
|
"title": "Dienstkonto App-Passwort",
|
|
"description": "App-Passwort/Token des Authentik-Dienstkontos.",
|
|
"type": "password",
|
|
"required": true
|
|
},
|
|
{
|
|
"name": "scope",
|
|
"title": "OAuth Scope",
|
|
"description": "Scopes, die von Authentik angefordert werden.",
|
|
"type": "textfield",
|
|
"required": false,
|
|
"default": "profile"
|
|
},
|
|
{
|
|
"name": "sessionMode",
|
|
"title": "Standard-Sitzungsmodus",
|
|
"description": "Bestimmt, wie Schnellbefehle eine Zuordnungs-Sitzung wählen.",
|
|
"type": "dropdown",
|
|
"required": true,
|
|
"default": "reuse-active",
|
|
"data": [
|
|
{
|
|
"title": "Aktive Sitzung wiederverwenden",
|
|
"value": "reuse-active"
|
|
},
|
|
{
|
|
"title": "Neue Sitzung pro Anfrage",
|
|
"value": "new-each-request"
|
|
},
|
|
{
|
|
"title": "Tagessitzung",
|
|
"value": "daily"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "quickOutput",
|
|
"title": "Ausgabe der Schnellbefehle",
|
|
"description": "Was die Befehle für markierten Text und Zwischenablage mit dem Ergebnis machen.",
|
|
"type": "dropdown",
|
|
"required": true,
|
|
"default": "copy",
|
|
"data": [
|
|
{
|
|
"title": "In die Zwischenablage kopieren",
|
|
"value": "copy"
|
|
},
|
|
{
|
|
"title": "Am Cursor einfügen",
|
|
"value": "paste"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "userFullName",
|
|
"title": "Eigener Name",
|
|
"description": "Dein Name in der Signatur generierter Email-Antworten (z. B. „Raphael“). Wird im Antwort-Befehl vorbefüllt und kann pro Aufruf überschrieben werden.",
|
|
"type": "textfield",
|
|
"required": true,
|
|
"placeholder": "Raphael"
|
|
},
|
|
{
|
|
"name": "summaryModel",
|
|
"title": "Standard-Modell für Zusammenfassungen",
|
|
"description": "Raycast-KI-Modell für „Email-Konversation zusammenfassen“. Benötigt Raycast Pro.",
|
|
"type": "dropdown",
|
|
"required": true,
|
|
"default": "anthropic-claude-sonnet-4-6",
|
|
"data": [
|
|
{
|
|
"title": "Claude 4.6 Sonnet",
|
|
"value": "anthropic-claude-sonnet-4-6"
|
|
},
|
|
{
|
|
"title": "Claude 4.7 Opus",
|
|
"value": "anthropic-claude-opus-4-7"
|
|
},
|
|
{
|
|
"title": "Claude 4.5 Haiku",
|
|
"value": "anthropic-claude-4-5-haiku"
|
|
},
|
|
{
|
|
"title": "OpenAI GPT-5.3 Instant",
|
|
"value": "openai-gpt-5.3-instant"
|
|
},
|
|
{
|
|
"title": "OpenAI GPT-4.1",
|
|
"value": "openai-gpt-4.1"
|
|
},
|
|
{
|
|
"title": "OpenAI GPT-4o mini",
|
|
"value": "openai-gpt-4o-mini"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "maxSessions",
|
|
"title": "Maximale Anzahl gespeicherter Sitzungen",
|
|
"description": "Älteste Sitzungen werden entfernt, wenn dieses Limit überschritten wird.",
|
|
"type": "textfield",
|
|
"required": true,
|
|
"default": "20"
|
|
},
|
|
{
|
|
"name": "closeAfterAction",
|
|
"title": "Verhalten nach Abschluss",
|
|
"label": "Raycast nach Kopieren/Einfügen schließen",
|
|
"description": "Schließt das Raycast-Fenster und kehrt zum Root-Search zurück, sobald in einem AI-Workflow Kopieren oder Einfügen ausgelöst wurde.",
|
|
"type": "checkbox",
|
|
"required": false,
|
|
"default": true
|
|
}
|
|
],
|
|
"scripts": {
|
|
"build": "ray build -e dist",
|
|
"dev": "ray develop",
|
|
"fix-lint": "ray lint --fix",
|
|
"lint": "ray lint",
|
|
"publish": "ray publish"
|
|
},
|
|
"dependencies": {
|
|
"@raycast/api": "^1.104.17",
|
|
"@raycast/utils": "^2.2.5",
|
|
"marked": "^18.0.3"
|
|
},
|
|
"devDependencies": {
|
|
"@raycast/eslint-config": "^2.0.4",
|
|
"@types/node": "^22.15.3",
|
|
"@types/react": "^19.1.2",
|
|
"eslint": "^9.26.0",
|
|
"prettier": "^3.5.3",
|
|
"typescript": "^5.8.3"
|
|
}
|
|
}
|