Config-Schema-Referenz
Alle Felder von Workspace-Config-Dateien auf einen Blick.
Kompakte Referenz aller Keys und Felder, die in Workspace-Config-Dateien gültig sind. Zum schnellen Nachschlagen.
apis.php
'apis' => [
'<key>' => [
'base_url' => string, // Pflicht
'headers' => array, // optional, header_name => value
'_auth' => string, // optional, Query-String-Suffix
'timeout' => int, // optional, Sekunden
],
],
Tool-Definition
'tools' => [
'<toolName>' => [
'description' => string, // Pflicht
'parameters' => [ // Pflicht (JSON-Schema)
'type' => 'object',
'properties' => [
'<field>' => [
'type' => 'string'|'integer'|'number'|'boolean'|'array'|'object',
'description' => string,
'enum' => array, // optional
// ...
],
],
'required' => array, // optional
],
// Einer oder Kombination aus:
'api' => string, // Key aus apis.php
'method' => 'GET'|'POST'|'PUT'|'PATCH'|'DELETE',
'path' => string, // mit {placeholders}
'body' => array|string, // Payload-Template
'query' => array, // Query-Parameter-Template
'handler' => callable, // PHP-Funktion
// Optional:
'preprocess' => callable,
'postprocess' => callable,
'mapping' => array,
'statusMessages' => array, // für SSE-status-Events
'args_fixture' => array, // für tm test-tool
'extends' => string, // Basis-Tool aus Shared-Lib
'options' => array, // Shared-Tool-Optionen
],
],
Assistant
'assistants.<slug>' => [
'name' => string, // Pflicht — Anzeigename
'description' => string, // empfohlen
'icon' => string, // optional — Emoji
'tools' => array, // Pflicht — Allowlist von Tool-Namen
'greeting' => string, // optional
'suggestions' => array, // optional — string[], Klick = Send
'toggles' => array, // optional — string[], Multi-Select-Suffix
'inputs' => array, // optional — string[] Placeholder, Prefix
'widget' => [ // optional — Per-Assistant UI-Override
'qr_scanner' => bool, // Default true in Assistenten
'voice_input' => bool, // Default true in Assistenten
'image_input' => bool, // Default true (Foto/Galerie)
],
'scanResolver' => array|false, // optional — false = Tenant-Default deaktivieren
'sheetView' => array, // optional — Mobile-App Datenansicht
'reminder' => string, // optional
'conversation_tests' => [ // optional
[
'description' => string, // Testname
'user_message' => string, // Eingabe
'expect_success' => bool, // optional — muss Antwort kommen (kein Error)?
'expect_tool_calls' => array, // optional — Tool-Namen, die aufgerufen werden müssen
'expect_response_contains' => array, // optional — Strings, die in der Antwort stehen müssen
],
// ...
],
],
'assistants.<slug>.prompt' => string, // Pflicht — System-Prompt
Quick-Action-UI (Suggestions, Toggles, Inputs)
Drei Typen für die Pill-Reihe unter dem letzten Assistant-Bubble. Reihenfolge
beim Send: [Eingabefeld-Text] [Inline-Inputs] [Suggestion] [aktive Toggles].
| Typ | Tool-Param | Klick | Reset-Verhalten |
|---|---|---|---|
suggestions |
suggestions (max 10) |
sofort senden | nach Send weg |
toggles |
toggles (max 5) |
nur State togglen | nach Send weg |
inputs |
inputs (max 3) |
Eingabefeld | nach Send geleert |
Mid-Stream gesetzt via setSuggestions(suggestions=…, toggles=…, inputs=…).
Initial-Slots werden nach Reset oder leerem Greeting-Send aus der Config
(Task-Level → Tenant-Level) gelesen.
Widget-Per-Assistant
'widget' => [
'qr_scanner' => true,
'voice_input' => false,
'image_input' => false,
]
Nur eine Anhang-Option übrig (z.B. nur Scanner) ⇒ Plus-Button öffnet die
direkt, kein Bottom-Sheet, Icon zeigt die Aktion (z.B. QR-Scanner statt +).
scanResolver-Opt-Out
// Tenant-global aktiviert (config/tenants/<code>/scan.php)
'scanResolver' => [
'tool' => 'searchItems',
'args' => ['searchSku' => '{{value}}'],
'resultMapping' => [...],
'urlPattern' => '#https?://...#',
]
// Per-Assistant deaktivieren wenn die gescannten Werte keine SKUs sind:
'assistants.<slug>' => [
// ...
'scanResolver' => false,
]
Scheduled Task
'scheduled' => [
'<id>' => [
'enabled' => bool, // Pflicht
'tool' => string, // Pflicht — Name eines Tools
'interval' => string, // optional — z. B. "5min", "2h", "1d"
'at_time' => string, // optional — tägliche Uhrzeit "HH:MM"
'args' => array, // optional — Tool-Args
],
],
Entweder interval oder at_time setzen.
Intervall-Syntax (interval)
| Muster | Bedeutung |
|---|---|
Xs |
Alle X Sekunden |
Xmin |
Alle X Minuten |
Xh |
Alle X Stunden |
Xd |
Alle X Tage |
Uhrzeit-Syntax (at_time)
HH:MM — täglich zur angegebenen Serverzeit, z. B. "09:00", "03:30".
Public Chat
// In tenants/<code>/public.php — Top-Level dot-path Keys, der Loader
// merged sie zum 'public' Inner-Block.
return [
'public.tools' => array, // Pflicht — Allowlist von Tool-Namen
'public.greeting' => string, // optional — erste Assistant-Bubble
'public.suggestions' => array, // optional — Click-to-send Pills
'public.toggles' => array, // optional — Multi-Select Pills (Suffix)
'public.inputs' => array, // optional — Inline-Textfelder (Prefix)
'public.llm' => string, // optional — LLM-Profile-Name
];
Hinweise:
- Tools-Allowlist ist fail-closed: leere Liste ⇒ keine Tools im Public-Chat
- System-Prompt für Public-Chats kommt aus
public.prompt - Der
public.llm-Override gilt nur für Public-Chats. Assistants und Unified ignorieren ihn und laufen auf demdefault-LLM-Profil.
Unified Chat
'unified' => [
'prompt' => string,
'greeting' => string, // Greeting beim Start
'suggestions' => array, // optional
'llm' => string, // optional — Profile-Name aus llm.php
],
Prompts
'prompts.<key>' => string,
Nutzung:
$tonePrompt = $prompts['tone'];
$prompts wird bei der Ausführung von Task-Files automatisch bereitgestellt.
Datei-erzeugende Tools
Es gibt keine reservierte Result-Struktur. Speichere die Datei serverseitig und gib URL + Name als normales Tool-Result zurück. Das Modell baut daraus einen Markdown-Link in die Antwort. Details: Tools, die Dateien erzeugen.
Chat-ID-Schemata
| Schema | Kontext |
|---|---|
task_<slug>_<user_id> |
Assistant-Chat |
unified_<user_id> |
Unified Chat |
public_<session_id> |
Public Widget |
test_<random> |
tm test-chat / tm chat |
Platzhalter
In System-Prompts
{{user_message_count}}{{task_name}}{{user_name}}{{workspace}}{{date}}{{time}}
In Tool-Args
<PDF:key>— PDF-Inhalt per Key<PDF_CONTENT_AVAILABLE>— letzter PDF-Inhalt (legacy)
In path / body / query von API-Tools
{argname}— aus Tool-Args ersetzt