TaskMonkey Handbuch

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 dem default-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
Zuletzt aktualisiert: 2026-05-04