240 lines
11 KiB
Python
240 lines
11 KiB
Python
# Copyright (c) 2025 Patrick Motsch
|
|
# All rights reserved.
|
|
"""ClickUp nodes — map to MethodClickup actions."""
|
|
|
|
from modules.shared.i18nRegistry import t
|
|
|
|
from modules.features.graphicalEditor.nodeDefinitions.ai import ACTION_RESULT_DATA_PICK_OPTIONS
|
|
|
|
TASK_LIST_DATA_PICK_OPTIONS = [
|
|
{
|
|
"path": ["tasks"],
|
|
"pickerLabel": t("Alle Aufgaben"),
|
|
"detail": t("Vollständige Aufgabenliste."),
|
|
"recommended": True,
|
|
"type": "List[TaskItem]",
|
|
},
|
|
{
|
|
"path": ["tasks", 0],
|
|
"pickerLabel": t("Erste Aufgabe"),
|
|
"detail": t("Erstes Listenelement."),
|
|
"recommended": False,
|
|
"type": "TaskItem",
|
|
},
|
|
{
|
|
"path": ["count"],
|
|
"pickerLabel": t("Anzahl"),
|
|
"detail": t("Anzahl der Aufgaben."),
|
|
"recommended": False,
|
|
"type": "int",
|
|
},
|
|
{
|
|
"path": ["listId"],
|
|
"pickerLabel": t("Listen-ID"),
|
|
"detail": t("ClickUp-Listen-Kontext, falls gesetzt."),
|
|
"recommended": False,
|
|
"type": "str",
|
|
},
|
|
]
|
|
|
|
TASK_RESULT_DATA_PICK_OPTIONS = [
|
|
{
|
|
"path": ["success"],
|
|
"pickerLabel": t("Erfolg"),
|
|
"detail": t("Ob der API-Aufruf erfolgreich war."),
|
|
"recommended": True,
|
|
"type": "bool",
|
|
},
|
|
{
|
|
"path": ["taskId"],
|
|
"pickerLabel": t("Aufgaben-ID"),
|
|
"detail": t("ID der betroffenen Aufgabe."),
|
|
"recommended": True,
|
|
"type": "str",
|
|
},
|
|
{
|
|
"path": ["task"],
|
|
"pickerLabel": t("Aufgabendaten"),
|
|
"detail": t("Vollständiges Task-Objekt (Dict)."),
|
|
"recommended": True,
|
|
"type": "Dict",
|
|
},
|
|
]
|
|
|
|
CLICKUP_NODES = [
|
|
{
|
|
"id": "clickup.searchTasks",
|
|
"category": "clickup",
|
|
"label": t("Aufgaben suchen"),
|
|
"description": t("Aufgaben in einem Workspace suchen"),
|
|
"parameters": [
|
|
{"name": "connectionReference", "type": "str", "required": True, "frontendType": "userConnection",
|
|
"frontendOptions": {"authority": "clickup"},
|
|
"description": t("ClickUp-Verbindung")},
|
|
{"name": "teamId", "type": "str", "required": True, "frontendType": "text",
|
|
"description": t("Team-/Workspace-ID")},
|
|
{"name": "query", "type": "str", "required": True, "frontendType": "text",
|
|
"description": t("Suchbegriff")},
|
|
{"name": "page", "type": "int", "required": False, "frontendType": "number",
|
|
"description": t("Seite"), "default": 0},
|
|
{"name": "listId", "type": "str", "required": False, "frontendType": "clickupList",
|
|
"frontendOptions": {"dependsOn": "connectionReference"},
|
|
"description": t("In dieser Liste suchen")},
|
|
{"name": "includeClosed", "type": "bool", "required": False, "frontendType": "checkbox",
|
|
"description": t("Erledigte einbeziehen"), "default": False},
|
|
{"name": "fullTaskData", "type": "bool", "required": False, "frontendType": "checkbox",
|
|
"description": t("Vollständige Daten"), "default": False},
|
|
{"name": "matchNameOnly", "type": "bool", "required": False, "frontendType": "checkbox",
|
|
"description": t("Nur Titel"), "default": True},
|
|
],
|
|
"inputs": 1,
|
|
"outputs": 1,
|
|
"inputPorts": {0: {"accepts": ["Transit"]}},
|
|
"outputPorts": {0: {"schema": "TaskList", "dataPickOptions": TASK_LIST_DATA_PICK_OPTIONS}},
|
|
"meta": {"icon": "mdi-magnify", "color": "#7B68EE", "usesAi": False},
|
|
"_method": "clickup",
|
|
"_action": "searchTasks",
|
|
},
|
|
{
|
|
"id": "clickup.listTasks",
|
|
"category": "clickup",
|
|
"label": t("Aufgaben auflisten"),
|
|
"description": t("Aufgaben einer Liste auflisten"),
|
|
"parameters": [
|
|
{"name": "connectionReference", "type": "str", "required": True, "frontendType": "userConnection",
|
|
"frontendOptions": {"authority": "clickup"},
|
|
"description": t("ClickUp-Verbindung")},
|
|
{"name": "pathQuery", "type": "str", "required": True, "frontendType": "clickupList",
|
|
"frontendOptions": {"dependsOn": "connectionReference"},
|
|
"description": t("Pfad zur Liste")},
|
|
{"name": "page", "type": "int", "required": False, "frontendType": "number",
|
|
"description": t("Seite"), "default": 0},
|
|
{"name": "includeClosed", "type": "bool", "required": False, "frontendType": "checkbox",
|
|
"description": t("Erledigte einbeziehen"), "default": False},
|
|
],
|
|
"inputs": 1,
|
|
"outputs": 1,
|
|
"inputPorts": {0: {"accepts": ["Transit"]}},
|
|
"outputPorts": {0: {"schema": "TaskList", "dataPickOptions": TASK_LIST_DATA_PICK_OPTIONS}},
|
|
"meta": {"icon": "mdi-format-list-bulleted", "color": "#7B68EE", "usesAi": False},
|
|
"_method": "clickup",
|
|
"_action": "listTasks",
|
|
},
|
|
{
|
|
"id": "clickup.getTask",
|
|
"category": "clickup",
|
|
"label": t("Aufgabe abrufen"),
|
|
"description": t("Eine Aufgabe abrufen"),
|
|
"parameters": [
|
|
{"name": "connectionReference", "type": "str", "required": True, "frontendType": "userConnection",
|
|
"frontendOptions": {"authority": "clickup"},
|
|
"description": t("ClickUp-Verbindung")},
|
|
{"name": "taskId", "type": "str", "required": False, "frontendType": "text",
|
|
"description": t("Task-ID")},
|
|
{"name": "pathQuery", "type": "str", "required": False, "frontendType": "text",
|
|
"description": t("Oder Pfad")},
|
|
],
|
|
"inputs": 1,
|
|
"outputs": 1,
|
|
"inputPorts": {0: {"accepts": ["Transit"]}},
|
|
"outputPorts": {0: {"schema": "TaskResult", "dataPickOptions": TASK_RESULT_DATA_PICK_OPTIONS}},
|
|
"meta": {"icon": "mdi-file-document-outline", "color": "#7B68EE", "usesAi": False},
|
|
"_method": "clickup",
|
|
"_action": "getTask",
|
|
},
|
|
{
|
|
"id": "clickup.createTask",
|
|
"category": "clickup",
|
|
"label": t("Aufgabe erstellen"),
|
|
"description": t("Aufgabe erstellen"),
|
|
"parameters": [
|
|
{"name": "connectionReference", "type": "str", "required": True, "frontendType": "userConnection",
|
|
"frontendOptions": {"authority": "clickup"},
|
|
"description": t("ClickUp-Verbindung")},
|
|
{"name": "pathQuery", "type": "str", "required": False, "frontendType": "clickupList",
|
|
"frontendOptions": {"dependsOn": "connectionReference"},
|
|
"description": t("Pfad zur Liste")},
|
|
{"name": "listId", "type": "str", "required": False, "frontendType": "text",
|
|
"description": t("Listen-ID")},
|
|
{"name": "name", "type": "str", "required": True, "frontendType": "text",
|
|
"description": t("Name")},
|
|
{"name": "description", "type": "str", "required": False, "frontendType": "textarea",
|
|
"description": t("Beschreibung")},
|
|
{"name": "taskStatus", "type": "str", "required": False, "frontendType": "text",
|
|
"description": t("Status")},
|
|
{"name": "taskPriority", "type": "str", "required": False, "frontendType": "select",
|
|
"frontendOptions": {"options": ["1", "2", "3", "4"]},
|
|
"description": t("Priorität 1-4")},
|
|
{"name": "taskDueDateMs", "type": "str", "required": False, "frontendType": "text",
|
|
"description": t("Fälligkeit (ms)")},
|
|
{"name": "taskAssigneeIds", "type": "object", "required": False, "frontendType": "json",
|
|
"description": t("Zugewiesene")},
|
|
{"name": "taskTimeEstimateMs", "type": "str", "required": False, "frontendType": "text",
|
|
"description": t("Zeitschätzung (ms)")},
|
|
{"name": "taskTimeEstimateHours", "type": "str", "required": False, "frontendType": "text",
|
|
"description": t("Zeitschätzung (h)")},
|
|
{"name": "customFieldValues", "type": "object", "required": False, "frontendType": "json",
|
|
"description": t("Benutzerdefinierte Felder")},
|
|
{"name": "taskFields", "type": "str", "required": False, "frontendType": "json",
|
|
"description": t("Zusätzliches JSON")},
|
|
],
|
|
"inputs": 1,
|
|
"outputs": 1,
|
|
"inputPorts": {0: {"accepts": ["Transit"]}},
|
|
"outputPorts": {0: {"schema": "TaskResult", "dataPickOptions": TASK_RESULT_DATA_PICK_OPTIONS}},
|
|
"meta": {"icon": "mdi-plus-circle-outline", "color": "#7B68EE", "usesAi": False},
|
|
"_method": "clickup",
|
|
"_action": "createTask",
|
|
},
|
|
{
|
|
"id": "clickup.updateTask",
|
|
"category": "clickup",
|
|
"label": t("Aufgabe aktualisieren"),
|
|
"description": t("Felder der Aufgabe ändern"),
|
|
"parameters": [
|
|
{"name": "connectionReference", "type": "str", "required": True, "frontendType": "userConnection",
|
|
"frontendOptions": {"authority": "clickup"},
|
|
"description": t("ClickUp-Verbindung")},
|
|
{"name": "taskId", "type": "str", "required": False, "frontendType": "text",
|
|
"description": t("Task-ID")},
|
|
{"name": "path", "type": "str", "required": False, "frontendType": "text",
|
|
"description": t("Oder Pfad")},
|
|
{"name": "taskUpdate", "type": "str", "required": False, "frontendType": "json",
|
|
"description": t("JSON-Body für PUT /task/{id}, z.B. {\"name\":\"...\",\"status\":\"...\"}")},
|
|
],
|
|
"inputs": 1,
|
|
"outputs": 1,
|
|
"inputPorts": {0: {"accepts": ["TaskResult", "Transit"]}},
|
|
"outputPorts": {0: {"schema": "TaskResult", "dataPickOptions": TASK_RESULT_DATA_PICK_OPTIONS}},
|
|
"paramMappers": ["clickupTaskUpdateMerge"],
|
|
"meta": {"icon": "mdi-pencil-outline", "color": "#7B68EE", "usesAi": False},
|
|
"_method": "clickup",
|
|
"_action": "updateTask",
|
|
},
|
|
{
|
|
"id": "clickup.uploadAttachment",
|
|
"category": "clickup",
|
|
"label": t("Anhang hochladen"),
|
|
"description": t("Datei an Task anhängen"),
|
|
"parameters": [
|
|
{"name": "connectionReference", "type": "str", "required": True, "frontendType": "userConnection",
|
|
"frontendOptions": {"authority": "clickup"},
|
|
"description": t("ClickUp-Verbindung")},
|
|
{"name": "taskId", "type": "str", "required": False, "frontendType": "text",
|
|
"description": t("Task-ID")},
|
|
{"name": "path", "type": "str", "required": False, "frontendType": "text",
|
|
"description": t("Oder Pfad")},
|
|
{"name": "fileName", "type": "str", "required": False, "frontendType": "text",
|
|
"description": t("Dateiname")},
|
|
{"name": "content", "type": "str", "required": True, "frontendType": "hidden",
|
|
"description": t("Datei-Inhalt aus Upstream-Node (via Wire oder DataRef)"), "default": ""},
|
|
],
|
|
"inputs": 1,
|
|
"outputs": 1,
|
|
"inputPorts": {0: {"accepts": ["DocumentList", "Transit"]}},
|
|
"outputPorts": {0: {"schema": "ActionResult", "dataPickOptions": ACTION_RESULT_DATA_PICK_OPTIONS}},
|
|
"meta": {"icon": "mdi-attachment", "color": "#7B68EE", "usesAi": False},
|
|
"_method": "clickup",
|
|
"_action": "uploadAttachment",
|
|
},
|
|
]
|