{ "$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" } }