Files
velum-raycast/package.json
muena c8b3cf44e3 docs: note model and signature overrides in AI views
Clarify in the preferences list that summaryModel acts as a default
overridable per AI view, and that userFullName is overridable in the
reply-email form. Also lock closeAfterAction as a required preference.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 07:01:35 +02:00

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": true,
"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"
}
}