refactor: improve output selection logic and edge updating in GenericNode (#8254)
* refactor: improve output selection logic and edge updating in GenericNode * feat: enhance output rendering logic for loop and conditional components * feat: add group_outputs flag to output components for enhanced display control * feat: enhance output handling by adding support for hidden outputs in NodeOutputs component * fix: update display output logic to handle tool mode correctly * fix: improve output selection logic in NodeOutputs component * refactor: simplify output selection logic in OutputComponent and GenericNode * refactor: remove commented code and clean up unused memoization in various components * refactor: clean up NodeOutputs component by removing commented code and simplifying output logic * [autofix.ci] apply automated fixes * feat: add group_outputs field to test_output in schema tests * test: Skip grouped components output preview test and add wait times for stability * fix: remove 'group_outputs' property from multiple starter project JSON files * Revert starter_projects folder to main branch state * Revert starter_projects folder to match origin/main exactly * Re-sync starter_projects folder with main branch after merge conflict * Add "group_outputs" property to various agent configurations * test: skip progress tracking test for admin users * test: enable progress tracking for admin users and improve component interaction * test: remove redundant dropdown interaction and enhance multi-select functionality --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
This commit is contained in:
parent
b03ce1ca3d
commit
5c40410f00
44 changed files with 372 additions and 176 deletions
|
|
@ -34,6 +34,7 @@ def vector_store_connection(cls):
|
|||
hidden=True,
|
||||
name="vectorstoreconnection",
|
||||
method="as_vector_store",
|
||||
group_outputs=False,
|
||||
)
|
||||
]
|
||||
)
|
||||
|
|
|
|||
|
|
@ -65,8 +65,8 @@ class ConditionalRouterComponent(Component):
|
|||
]
|
||||
|
||||
outputs = [
|
||||
Output(display_name="True", name="true_result", method="true_response"),
|
||||
Output(display_name="False", name="false_result", method="false_response"),
|
||||
Output(display_name="True", name="true_result", method="true_response", group_outputs=True),
|
||||
Output(display_name="False", name="false_result", method="false_response", group_outputs=True),
|
||||
]
|
||||
|
||||
def _pre_run_setup(self):
|
||||
|
|
|
|||
|
|
@ -21,8 +21,8 @@ class LoopComponent(Component):
|
|||
]
|
||||
|
||||
outputs = [
|
||||
Output(display_name="Item", name="item", method="item_output", allows_loop=True),
|
||||
Output(display_name="Done", name="done", method="done_output"),
|
||||
Output(display_name="Item", name="item", method="item_output", allows_loop=True, group_outputs=True),
|
||||
Output(display_name="Done", name="done", method="done_output", group_outputs=True),
|
||||
]
|
||||
|
||||
def initialize_data(self) -> None:
|
||||
|
|
|
|||
|
|
@ -226,6 +226,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Prompt",
|
||||
"group_outputs": false,
|
||||
"method": "build_prompt",
|
||||
"name": "prompt",
|
||||
"selected": "Message",
|
||||
|
|
@ -359,6 +360,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -655,6 +657,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -952,6 +955,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Prompt",
|
||||
"group_outputs": false,
|
||||
"method": "build_prompt",
|
||||
"name": "prompt",
|
||||
"selected": "Message",
|
||||
|
|
@ -1079,6 +1083,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Prompt",
|
||||
"group_outputs": false,
|
||||
"method": "build_prompt",
|
||||
"name": "prompt",
|
||||
"selected": "Message",
|
||||
|
|
@ -1296,6 +1301,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text_output",
|
||||
"required_inputs": [],
|
||||
|
|
@ -1310,6 +1316,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Language Model",
|
||||
"group_outputs": false,
|
||||
"method": "build_model",
|
||||
"name": "model_output",
|
||||
"required_inputs": [
|
||||
|
|
@ -1687,6 +1694,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text_output",
|
||||
"required_inputs": [],
|
||||
|
|
@ -1701,6 +1709,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Language Model",
|
||||
"group_outputs": false,
|
||||
"method": "build_model",
|
||||
"name": "model_output",
|
||||
"required_inputs": [
|
||||
|
|
@ -2078,6 +2087,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text_output",
|
||||
"required_inputs": [],
|
||||
|
|
@ -2092,6 +2102,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Language Model",
|
||||
"group_outputs": false,
|
||||
"method": "build_model",
|
||||
"name": "model_output",
|
||||
"required_inputs": [
|
||||
|
|
|
|||
|
|
@ -118,6 +118,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -401,6 +402,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Prompt",
|
||||
"group_outputs": false,
|
||||
"method": "build_prompt",
|
||||
"name": "prompt",
|
||||
"selected": "Message",
|
||||
|
|
@ -604,6 +606,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -917,6 +920,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text_output",
|
||||
"required_inputs": [],
|
||||
|
|
@ -931,6 +935,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Language Model",
|
||||
"group_outputs": false,
|
||||
"method": "build_model",
|
||||
"name": "model_output",
|
||||
"required_inputs": [
|
||||
|
|
|
|||
|
|
@ -183,6 +183,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Prompt",
|
||||
"group_outputs": false,
|
||||
"method": "build_prompt",
|
||||
"name": "prompt",
|
||||
"selected": "Message",
|
||||
|
|
@ -353,6 +354,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text",
|
||||
"selected": "Message",
|
||||
|
|
@ -464,6 +466,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -799,6 +802,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text_output",
|
||||
"required_inputs": [],
|
||||
|
|
@ -813,6 +817,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Language Model",
|
||||
"group_outputs": false,
|
||||
"method": "build_model",
|
||||
"name": "model_output",
|
||||
"required_inputs": [
|
||||
|
|
@ -1176,6 +1181,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Parsed Text",
|
||||
"group_outputs": false,
|
||||
"method": "parse_combined_text",
|
||||
"name": "parsed_text",
|
||||
"selected": "Message",
|
||||
|
|
@ -1358,6 +1364,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Result",
|
||||
"group_outputs": false,
|
||||
"method": "fetch_content",
|
||||
"name": "page_results",
|
||||
"selected": "DataFrame",
|
||||
|
|
@ -1371,6 +1378,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Raw Result",
|
||||
"group_outputs": false,
|
||||
"method": "as_message",
|
||||
"name": "raw_results",
|
||||
"selected": "Message",
|
||||
|
|
|
|||
|
|
@ -240,6 +240,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Data",
|
||||
"group_outputs": false,
|
||||
"method": "retrieve_messages",
|
||||
"name": "messages",
|
||||
"selected": "Data",
|
||||
|
|
@ -253,6 +254,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "retrieve_messages_as_text",
|
||||
"name": "messages_text",
|
||||
"selected": "Message",
|
||||
|
|
@ -266,6 +268,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "DataFrame",
|
||||
"group_outputs": false,
|
||||
"method": "as_dataframe",
|
||||
"name": "dataframe",
|
||||
"selected": "DataFrame",
|
||||
|
|
@ -504,6 +507,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Prompt",
|
||||
"group_outputs": false,
|
||||
"method": "build_prompt",
|
||||
"name": "prompt",
|
||||
"selected": "Message",
|
||||
|
|
@ -1414,6 +1418,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text_output",
|
||||
"required_inputs": [],
|
||||
|
|
@ -1428,6 +1433,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Language Model",
|
||||
"group_outputs": false,
|
||||
"method": "build_model",
|
||||
"name": "model_output",
|
||||
"required_inputs": [
|
||||
|
|
@ -1744,6 +1750,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -2056,6 +2063,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
|
|||
|
|
@ -126,6 +126,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -436,6 +437,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Prompt",
|
||||
"group_outputs": false,
|
||||
"method": "build_prompt",
|
||||
"name": "prompt",
|
||||
"selected": "Message",
|
||||
|
|
@ -574,6 +576,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text_output",
|
||||
"required_inputs": [],
|
||||
|
|
@ -588,6 +591,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Language Model",
|
||||
"group_outputs": false,
|
||||
"method": "build_model",
|
||||
"name": "model_output",
|
||||
"required_inputs": [],
|
||||
|
|
@ -939,6 +943,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
|
|||
|
|
@ -180,6 +180,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -470,6 +471,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -801,6 +803,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Loaded Files",
|
||||
"group_outputs": false,
|
||||
"method": "load_dataframe",
|
||||
"name": "dataframe",
|
||||
"required_inputs": [],
|
||||
|
|
@ -1074,6 +1077,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Prompt",
|
||||
"group_outputs": false,
|
||||
"method": "build_prompt",
|
||||
"name": "prompt",
|
||||
"selected": "Message",
|
||||
|
|
@ -1238,6 +1242,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text_output",
|
||||
"required_inputs": [],
|
||||
|
|
@ -1252,6 +1257,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Language Model",
|
||||
"group_outputs": false,
|
||||
"method": "build_model",
|
||||
"name": "model_output",
|
||||
"required_inputs": [
|
||||
|
|
|
|||
|
|
@ -349,6 +349,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -1373,6 +1374,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -1974,6 +1976,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text_output",
|
||||
"required_inputs": [],
|
||||
|
|
@ -1988,6 +1991,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Language Model",
|
||||
"group_outputs": false,
|
||||
"method": "build_model",
|
||||
"name": "model_output",
|
||||
"required_inputs": [
|
||||
|
|
@ -3699,6 +3703,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Prompt",
|
||||
"group_outputs": false,
|
||||
"method": "build_prompt",
|
||||
"name": "prompt",
|
||||
"selected": "Message",
|
||||
|
|
@ -3875,6 +3880,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Prompt",
|
||||
"group_outputs": false,
|
||||
"method": "build_prompt",
|
||||
"name": "prompt",
|
||||
"selected": "Message",
|
||||
|
|
|
|||
|
|
@ -165,6 +165,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text_output",
|
||||
"required_inputs": [],
|
||||
|
|
@ -179,6 +180,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Language Model",
|
||||
"group_outputs": false,
|
||||
"method": "build_model",
|
||||
"name": "model_output",
|
||||
"required_inputs": [
|
||||
|
|
@ -547,6 +549,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -858,6 +861,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -1218,6 +1222,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Structured Output",
|
||||
"group_outputs": false,
|
||||
"method": "build_structured_output",
|
||||
"name": "structured_output",
|
||||
"selected": "Data",
|
||||
|
|
@ -1231,6 +1236,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "DataFrame",
|
||||
"group_outputs": false,
|
||||
"method": "as_dataframe",
|
||||
"name": "structured_output_dataframe",
|
||||
"selected": "DataFrame",
|
||||
|
|
|
|||
|
|
@ -797,6 +797,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -1109,6 +1110,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
|
|||
|
|
@ -268,6 +268,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -578,6 +579,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Structured Output",
|
||||
"group_outputs": false,
|
||||
"method": "build_structured_output",
|
||||
"name": "structured_output",
|
||||
"selected": "Data",
|
||||
|
|
@ -591,6 +593,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "DataFrame",
|
||||
"group_outputs": false,
|
||||
"method": "as_dataframe",
|
||||
"name": "structured_output_dataframe",
|
||||
"selected": "DataFrame",
|
||||
|
|
@ -900,6 +903,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text_output",
|
||||
"required_inputs": [],
|
||||
|
|
@ -914,6 +918,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Language Model",
|
||||
"group_outputs": false,
|
||||
"method": "build_model",
|
||||
"name": "model_output",
|
||||
"required_inputs": [
|
||||
|
|
@ -1296,6 +1301,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Search Results",
|
||||
"group_outputs": false,
|
||||
"method": "search_documents",
|
||||
"name": "search_results",
|
||||
"required_inputs": [
|
||||
|
|
@ -1314,6 +1320,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "DataFrame",
|
||||
"group_outputs": false,
|
||||
"method": "as_dataframe",
|
||||
"name": "dataframe",
|
||||
"required_inputs": [],
|
||||
|
|
@ -1328,6 +1335,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Vector Store Connection",
|
||||
"group_outputs": false,
|
||||
"hidden": true,
|
||||
"method": "as_vector_store",
|
||||
"name": "vectorstoreconnection",
|
||||
|
|
@ -2056,6 +2064,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Parsed Text",
|
||||
"group_outputs": false,
|
||||
"method": "parse_combined_text",
|
||||
"name": "parsed_text",
|
||||
"selected": "Message",
|
||||
|
|
@ -2234,6 +2243,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -2535,6 +2545,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Parsed Text",
|
||||
"group_outputs": false,
|
||||
"method": "parse_combined_text",
|
||||
"name": "parsed_text",
|
||||
"selected": "Message",
|
||||
|
|
|
|||
|
|
@ -212,6 +212,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -516,6 +517,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -848,6 +850,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Prompt",
|
||||
"group_outputs": false,
|
||||
"method": "build_prompt",
|
||||
"name": "prompt",
|
||||
"selected": "Message",
|
||||
|
|
@ -992,6 +995,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text_output",
|
||||
"required_inputs": [],
|
||||
|
|
@ -1006,6 +1010,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Language Model",
|
||||
"group_outputs": false,
|
||||
"method": "build_model",
|
||||
"name": "model_output",
|
||||
"required_inputs": [
|
||||
|
|
@ -1372,6 +1377,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Structured Output",
|
||||
"group_outputs": false,
|
||||
"method": "build_structured_output",
|
||||
"name": "structured_output",
|
||||
"selected": "Data",
|
||||
|
|
@ -1385,6 +1391,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "DataFrame",
|
||||
"group_outputs": false,
|
||||
"method": "as_dataframe",
|
||||
"name": "structured_output_dataframe",
|
||||
"selected": "DataFrame",
|
||||
|
|
|
|||
|
|
@ -326,6 +326,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -619,6 +620,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Prompt",
|
||||
"group_outputs": false,
|
||||
"method": "build_prompt",
|
||||
"name": "prompt",
|
||||
"selected": "Message",
|
||||
|
|
@ -788,6 +790,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text",
|
||||
"selected": "Message",
|
||||
|
|
@ -898,6 +901,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Prompt",
|
||||
"group_outputs": false,
|
||||
"method": "build_prompt",
|
||||
"name": "prompt",
|
||||
"selected": "Message",
|
||||
|
|
@ -1053,6 +1057,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -1372,6 +1377,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Response",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "response",
|
||||
"selected": "Message",
|
||||
|
|
@ -1974,6 +1980,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Prompt",
|
||||
"group_outputs": false,
|
||||
"method": "build_prompt",
|
||||
"name": "prompt",
|
||||
"selected": "Message",
|
||||
|
|
@ -2793,6 +2800,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text_output",
|
||||
"required_inputs": [],
|
||||
|
|
@ -2807,6 +2815,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Language Model",
|
||||
"group_outputs": false,
|
||||
"method": "build_model",
|
||||
"name": "model_output",
|
||||
"required_inputs": [
|
||||
|
|
@ -3184,6 +3193,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text_output",
|
||||
"required_inputs": [],
|
||||
|
|
@ -3198,6 +3208,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Language Model",
|
||||
"group_outputs": false,
|
||||
"method": "build_model",
|
||||
"name": "model_output",
|
||||
"required_inputs": [
|
||||
|
|
|
|||
|
|
@ -183,6 +183,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Prompt",
|
||||
"group_outputs": false,
|
||||
"method": "build_prompt",
|
||||
"name": "prompt",
|
||||
"selected": "Message",
|
||||
|
|
@ -311,6 +312,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -874,6 +876,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
|
|||
|
|
@ -208,6 +208,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -504,6 +505,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -843,6 +845,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Structured Output",
|
||||
"group_outputs": false,
|
||||
"method": "build_structured_output",
|
||||
"name": "structured_output",
|
||||
"selected": "Data",
|
||||
|
|
@ -856,6 +859,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "DataFrame",
|
||||
"group_outputs": false,
|
||||
"method": "as_dataframe",
|
||||
"name": "structured_output_dataframe",
|
||||
"selected": "DataFrame",
|
||||
|
|
@ -1223,6 +1227,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Response",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "response",
|
||||
"selected": "Message",
|
||||
|
|
@ -2302,6 +2307,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text_output",
|
||||
"required_inputs": [],
|
||||
|
|
@ -2316,6 +2322,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Language Model",
|
||||
"group_outputs": false,
|
||||
"method": "build_model",
|
||||
"name": "model_output",
|
||||
"required_inputs": [
|
||||
|
|
|
|||
|
|
@ -317,6 +317,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Transcription Result",
|
||||
"group_outputs": false,
|
||||
"method": "poll_transcription_job",
|
||||
"name": "transcription_result",
|
||||
"selected": "Data",
|
||||
|
|
@ -478,6 +479,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text_output",
|
||||
"required_inputs": [],
|
||||
|
|
@ -492,6 +494,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Language Model",
|
||||
"group_outputs": false,
|
||||
"method": "build_model",
|
||||
"name": "model_output",
|
||||
"required_inputs": [
|
||||
|
|
@ -859,6 +862,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Prompt",
|
||||
"group_outputs": false,
|
||||
"method": "build_prompt",
|
||||
"name": "prompt",
|
||||
"selected": "Message",
|
||||
|
|
@ -1009,6 +1013,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -1310,6 +1315,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -1621,6 +1627,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text_output",
|
||||
"required_inputs": [],
|
||||
|
|
@ -1635,6 +1642,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Language Model",
|
||||
"group_outputs": false,
|
||||
"method": "build_model",
|
||||
"name": "model_output",
|
||||
"required_inputs": [
|
||||
|
|
@ -2001,6 +2009,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -2304,6 +2313,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Prompt",
|
||||
"group_outputs": false,
|
||||
"method": "build_prompt",
|
||||
"name": "prompt",
|
||||
"selected": "Message",
|
||||
|
|
@ -2474,6 +2484,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Data",
|
||||
"group_outputs": false,
|
||||
"method": "retrieve_messages",
|
||||
"name": "messages",
|
||||
"selected": "Data",
|
||||
|
|
@ -2487,6 +2498,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "retrieve_messages_as_text",
|
||||
"name": "messages_text",
|
||||
"selected": "Message",
|
||||
|
|
@ -2500,6 +2512,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "DataFrame",
|
||||
"group_outputs": false,
|
||||
"method": "as_dataframe",
|
||||
"name": "dataframe",
|
||||
"selected": "DataFrame",
|
||||
|
|
@ -2741,6 +2754,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -3154,6 +3168,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Transcript ID",
|
||||
"group_outputs": false,
|
||||
"method": "create_transcription_job",
|
||||
"name": "transcript_id",
|
||||
"selected": "Data",
|
||||
|
|
|
|||
|
|
@ -150,6 +150,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -454,6 +455,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -821,6 +823,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Data",
|
||||
"group_outputs": false,
|
||||
"method": "retrieve_messages",
|
||||
"name": "messages",
|
||||
"selected": "Data",
|
||||
|
|
@ -834,6 +837,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "retrieve_messages_as_text",
|
||||
"name": "messages_text",
|
||||
"selected": "Message",
|
||||
|
|
@ -847,6 +851,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "DataFrame",
|
||||
"group_outputs": false,
|
||||
"method": "as_dataframe",
|
||||
"name": "dataframe",
|
||||
"selected": "DataFrame",
|
||||
|
|
@ -1085,6 +1090,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Prompt",
|
||||
"group_outputs": false,
|
||||
"method": "build_prompt",
|
||||
"name": "prompt",
|
||||
"selected": "Message",
|
||||
|
|
@ -1250,6 +1256,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text_output",
|
||||
"required_inputs": [],
|
||||
|
|
@ -1264,6 +1271,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Language Model",
|
||||
"group_outputs": false,
|
||||
"method": "build_model",
|
||||
"name": "model_output",
|
||||
"required_inputs": [
|
||||
|
|
|
|||
|
|
@ -616,6 +616,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -943,6 +944,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Response",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "response",
|
||||
"selected": "Message",
|
||||
|
|
@ -1642,6 +1644,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Confirmation",
|
||||
"group_outputs": false,
|
||||
"method": "save_to_file",
|
||||
"name": "confirmation",
|
||||
"selected": "Text",
|
||||
|
|
@ -1800,6 +1803,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
|
|||
|
|
@ -125,6 +125,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -437,6 +438,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
|
|||
|
|
@ -234,6 +234,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text",
|
||||
"selected": "Message",
|
||||
|
|
@ -357,6 +358,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text_output",
|
||||
"required_inputs": [],
|
||||
|
|
@ -371,6 +373,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Language Model",
|
||||
"group_outputs": false,
|
||||
"method": "build_model",
|
||||
"name": "model_output",
|
||||
"required_inputs": [
|
||||
|
|
@ -697,6 +700,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text_output",
|
||||
"required_inputs": [],
|
||||
|
|
@ -711,6 +715,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Language Model",
|
||||
"group_outputs": false,
|
||||
"method": "build_model",
|
||||
"name": "model_output",
|
||||
"required_inputs": [
|
||||
|
|
@ -1028,6 +1033,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -1479,6 +1485,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Structured Output",
|
||||
"group_outputs": false,
|
||||
"method": "build_structured_output",
|
||||
"name": "structured_output",
|
||||
"selected": "Data",
|
||||
|
|
@ -1492,6 +1499,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "DataFrame",
|
||||
"group_outputs": false,
|
||||
"method": "as_dataframe",
|
||||
"name": "structured_output_dataframe",
|
||||
"selected": "DataFrame",
|
||||
|
|
@ -1848,6 +1856,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Loaded Files",
|
||||
"group_outputs": false,
|
||||
"method": "load_dataframe",
|
||||
"name": "dataframe",
|
||||
"required_inputs": [],
|
||||
|
|
@ -2126,6 +2135,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Parsed Text",
|
||||
"group_outputs": false,
|
||||
"method": "parse_combined_text",
|
||||
"name": "parsed_text",
|
||||
"selected": "Message",
|
||||
|
|
|
|||
|
|
@ -156,6 +156,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -467,6 +468,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -1652,6 +1654,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Response",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "response",
|
||||
"selected": "Message",
|
||||
|
|
|
|||
|
|
@ -322,6 +322,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Prompt",
|
||||
"group_outputs": false,
|
||||
"method": "build_prompt",
|
||||
"name": "prompt",
|
||||
"selected": "Message",
|
||||
|
|
@ -478,6 +479,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -771,6 +773,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Prompt",
|
||||
"group_outputs": false,
|
||||
"method": "build_prompt",
|
||||
"name": "prompt",
|
||||
"selected": "Message",
|
||||
|
|
@ -1004,6 +1007,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Response",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "response",
|
||||
"selected": "Message",
|
||||
|
|
@ -1603,6 +1607,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Prompt",
|
||||
"group_outputs": false,
|
||||
"method": "build_prompt",
|
||||
"name": "prompt",
|
||||
"selected": "Message",
|
||||
|
|
@ -1730,6 +1735,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Prompt",
|
||||
"group_outputs": false,
|
||||
"method": "build_prompt",
|
||||
"name": "prompt",
|
||||
"selected": "Message",
|
||||
|
|
@ -2369,6 +2375,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text_output",
|
||||
"required_inputs": [],
|
||||
|
|
@ -2383,6 +2390,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Language Model",
|
||||
"group_outputs": false,
|
||||
"method": "build_model",
|
||||
"name": "model_output",
|
||||
"required_inputs": [
|
||||
|
|
@ -2760,6 +2768,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text_output",
|
||||
"required_inputs": [],
|
||||
|
|
@ -2774,6 +2783,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Language Model",
|
||||
"group_outputs": false,
|
||||
"method": "build_model",
|
||||
"name": "model_output",
|
||||
"required_inputs": [
|
||||
|
|
@ -3142,6 +3152,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
|
|||
|
|
@ -234,6 +234,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "DataFrame",
|
||||
"group_outputs": false,
|
||||
"method": "search_papers_dataframe",
|
||||
"name": "dataframe",
|
||||
"selected": "DataFrame",
|
||||
|
|
@ -399,6 +400,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text_output",
|
||||
"required_inputs": [],
|
||||
|
|
@ -413,6 +415,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Language Model",
|
||||
"group_outputs": false,
|
||||
"method": "build_model",
|
||||
"name": "model_output",
|
||||
"required_inputs": [
|
||||
|
|
@ -722,6 +725,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Data",
|
||||
"group_outputs": false,
|
||||
"method": "convert_message_to_data",
|
||||
"name": "data",
|
||||
"selected": "Data",
|
||||
|
|
@ -833,6 +837,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -1142,6 +1147,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -1503,6 +1509,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Parsed Text",
|
||||
"group_outputs": false,
|
||||
"method": "parse_combined_text",
|
||||
"name": "parsed_text",
|
||||
"selected": "Message",
|
||||
|
|
@ -1676,6 +1683,7 @@
|
|||
"allows_loop": true,
|
||||
"cache": true,
|
||||
"display_name": "Item",
|
||||
"group_outputs": true,
|
||||
"method": "item_output",
|
||||
"name": "item",
|
||||
"selected": "Data",
|
||||
|
|
@ -1689,6 +1697,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Done",
|
||||
"group_outputs": true,
|
||||
"method": "done_output",
|
||||
"name": "done",
|
||||
"selected": "DataFrame",
|
||||
|
|
@ -1719,7 +1728,7 @@
|
|||
"show": true,
|
||||
"title_case": false,
|
||||
"type": "code",
|
||||
"value": "from langflow.custom import Component\nfrom langflow.io import HandleInput, Output\nfrom langflow.schema import Data\nfrom langflow.schema.dataframe import DataFrame\n\n\nclass LoopComponent(Component):\n display_name = \"Loop\"\n description = (\n \"Iterates over a list of Data objects, outputting one item at a time and aggregating results from loop inputs.\"\n )\n icon = \"infinity\"\n\n inputs = [\n HandleInput(\n name=\"data\",\n display_name=\"Data or DataFrame\",\n info=\"The initial list of Data objects or DataFrame to iterate over.\",\n input_types=[\"Data\", \"DataFrame\"],\n ),\n ]\n\n outputs = [\n Output(display_name=\"Item\", name=\"item\", method=\"item_output\", allows_loop=True),\n Output(display_name=\"Done\", name=\"done\", method=\"done_output\"),\n ]\n\n def initialize_data(self) -> None:\n \"\"\"Initialize the data list, context index, and aggregated list.\"\"\"\n if self.ctx.get(f\"{self._id}_initialized\", False):\n return\n\n # Ensure data is a list of Data objects\n data_list = self._validate_data(self.data)\n\n # Store the initial data and context variables\n self.update_ctx(\n {\n f\"{self._id}_data\": data_list,\n f\"{self._id}_index\": 0,\n f\"{self._id}_aggregated\": [],\n f\"{self._id}_initialized\": True,\n }\n )\n\n def _validate_data(self, data):\n \"\"\"Validate and return a list of Data objects.\"\"\"\n if isinstance(data, DataFrame):\n return data.to_data_list()\n if isinstance(data, Data):\n return [data]\n if isinstance(data, list) and all(isinstance(item, Data) for item in data):\n return data\n msg = \"The 'data' input must be a DataFrame, a list of Data objects, or a single Data object.\"\n raise TypeError(msg)\n\n def evaluate_stop_loop(self) -> bool:\n \"\"\"Evaluate whether to stop item or done output.\"\"\"\n current_index = self.ctx.get(f\"{self._id}_index\", 0)\n data_length = len(self.ctx.get(f\"{self._id}_data\", []))\n return current_index > data_length\n\n def item_output(self) -> Data:\n \"\"\"Output the next item in the list or stop if done.\"\"\"\n self.initialize_data()\n current_item = Data(text=\"\")\n\n if self.evaluate_stop_loop():\n self.stop(\"item\")\n return Data(text=\"\")\n\n # Get data list and current index\n data_list, current_index = self.loop_variables()\n if current_index < len(data_list):\n # Output current item and increment index\n try:\n current_item = data_list[current_index]\n except IndexError:\n current_item = Data(text=\"\")\n self.aggregated_output()\n self.update_ctx({f\"{self._id}_index\": current_index + 1})\n return current_item\n\n def done_output(self) -> DataFrame:\n \"\"\"Trigger the done output when iteration is complete.\"\"\"\n self.initialize_data()\n\n if self.evaluate_stop_loop():\n self.stop(\"item\")\n self.start(\"done\")\n\n aggregated = self.ctx.get(f\"{self._id}_aggregated\", [])\n\n return DataFrame(aggregated)\n self.stop(\"done\")\n return DataFrame([])\n\n def loop_variables(self):\n \"\"\"Retrieve loop variables from context.\"\"\"\n return (\n self.ctx.get(f\"{self._id}_data\", []),\n self.ctx.get(f\"{self._id}_index\", 0),\n )\n\n def aggregated_output(self) -> list[Data]:\n \"\"\"Return the aggregated list once all items are processed.\"\"\"\n self.initialize_data()\n\n # Get data list and aggregated list\n data_list = self.ctx.get(f\"{self._id}_data\", [])\n aggregated = self.ctx.get(f\"{self._id}_aggregated\", [])\n loop_input = self.item\n if loop_input is not None and not isinstance(loop_input, str) and len(aggregated) <= len(data_list):\n aggregated.append(loop_input)\n self.update_ctx({f\"{self._id}_aggregated\": aggregated})\n return aggregated\n"
|
||||
"value": "from langflow.custom import Component\nfrom langflow.io import HandleInput, Output\nfrom langflow.schema import Data\nfrom langflow.schema.dataframe import DataFrame\n\n\nclass LoopComponent(Component):\n display_name = \"Loop\"\n description = (\n \"Iterates over a list of Data objects, outputting one item at a time and aggregating results from loop inputs.\"\n )\n icon = \"infinity\"\n\n inputs = [\n HandleInput(\n name=\"data\",\n display_name=\"Data or DataFrame\",\n info=\"The initial list of Data objects or DataFrame to iterate over.\",\n input_types=[\"Data\", \"DataFrame\"],\n ),\n ]\n\n outputs = [\n Output(display_name=\"Item\", name=\"item\", method=\"item_output\", allows_loop=True, group_outputs=True),\n Output(display_name=\"Done\", name=\"done\", method=\"done_output\", group_outputs=True),\n ]\n\n def initialize_data(self) -> None:\n \"\"\"Initialize the data list, context index, and aggregated list.\"\"\"\n if self.ctx.get(f\"{self._id}_initialized\", False):\n return\n\n # Ensure data is a list of Data objects\n data_list = self._validate_data(self.data)\n\n # Store the initial data and context variables\n self.update_ctx(\n {\n f\"{self._id}_data\": data_list,\n f\"{self._id}_index\": 0,\n f\"{self._id}_aggregated\": [],\n f\"{self._id}_initialized\": True,\n }\n )\n\n def _validate_data(self, data):\n \"\"\"Validate and return a list of Data objects.\"\"\"\n if isinstance(data, DataFrame):\n return data.to_data_list()\n if isinstance(data, Data):\n return [data]\n if isinstance(data, list) and all(isinstance(item, Data) for item in data):\n return data\n msg = \"The 'data' input must be a DataFrame, a list of Data objects, or a single Data object.\"\n raise TypeError(msg)\n\n def evaluate_stop_loop(self) -> bool:\n \"\"\"Evaluate whether to stop item or done output.\"\"\"\n current_index = self.ctx.get(f\"{self._id}_index\", 0)\n data_length = len(self.ctx.get(f\"{self._id}_data\", []))\n return current_index > data_length\n\n def item_output(self) -> Data:\n \"\"\"Output the next item in the list or stop if done.\"\"\"\n self.initialize_data()\n current_item = Data(text=\"\")\n\n if self.evaluate_stop_loop():\n self.stop(\"item\")\n return Data(text=\"\")\n\n # Get data list and current index\n data_list, current_index = self.loop_variables()\n if current_index < len(data_list):\n # Output current item and increment index\n try:\n current_item = data_list[current_index]\n except IndexError:\n current_item = Data(text=\"\")\n self.aggregated_output()\n self.update_ctx({f\"{self._id}_index\": current_index + 1})\n return current_item\n\n def done_output(self) -> DataFrame:\n \"\"\"Trigger the done output when iteration is complete.\"\"\"\n self.initialize_data()\n\n if self.evaluate_stop_loop():\n self.stop(\"item\")\n self.start(\"done\")\n\n aggregated = self.ctx.get(f\"{self._id}_aggregated\", [])\n\n return DataFrame(aggregated)\n self.stop(\"done\")\n return DataFrame([])\n\n def loop_variables(self):\n \"\"\"Retrieve loop variables from context.\"\"\"\n return (\n self.ctx.get(f\"{self._id}_data\", []),\n self.ctx.get(f\"{self._id}_index\", 0),\n )\n\n def aggregated_output(self) -> list[Data]:\n \"\"\"Return the aggregated list once all items are processed.\"\"\"\n self.initialize_data()\n\n # Get data list and aggregated list\n data_list = self.ctx.get(f\"{self._id}_data\", [])\n aggregated = self.ctx.get(f\"{self._id}_aggregated\", [])\n loop_input = self.item\n if loop_input is not None and not isinstance(loop_input, str) and len(aggregated) <= len(data_list):\n aggregated.append(loop_input)\n self.update_ctx({f\"{self._id}_aggregated\": aggregated})\n return aggregated\n"
|
||||
},
|
||||
"data": {
|
||||
"_input_type": "HandleInput",
|
||||
|
|
|
|||
|
|
@ -128,6 +128,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Prompt",
|
||||
"group_outputs": false,
|
||||
"method": "build_prompt",
|
||||
"name": "prompt",
|
||||
"selected": "Message",
|
||||
|
|
@ -428,6 +429,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Prompt",
|
||||
"group_outputs": false,
|
||||
"method": "build_prompt",
|
||||
"name": "prompt",
|
||||
"selected": "Message",
|
||||
|
|
@ -561,6 +563,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -904,6 +907,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text_output",
|
||||
"required_inputs": [],
|
||||
|
|
@ -918,6 +922,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Language Model",
|
||||
"group_outputs": false,
|
||||
"method": "build_model",
|
||||
"name": "model_output",
|
||||
"required_inputs": [
|
||||
|
|
|
|||
|
|
@ -123,6 +123,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Prompt",
|
||||
"group_outputs": false,
|
||||
"method": "build_prompt",
|
||||
"name": "prompt",
|
||||
"selected": "Message",
|
||||
|
|
@ -371,6 +372,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -726,6 +728,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Response",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "response",
|
||||
"selected": "Message",
|
||||
|
|
|
|||
|
|
@ -343,6 +343,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -652,6 +653,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
|
|||
|
|
@ -370,6 +370,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Response",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "response",
|
||||
"selected": "Message",
|
||||
|
|
@ -992,6 +993,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Response",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "response",
|
||||
"selected": "Message",
|
||||
|
|
@ -1597,6 +1599,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Prompt",
|
||||
"group_outputs": false,
|
||||
"method": "build_prompt",
|
||||
"name": "prompt",
|
||||
"selected": "Message",
|
||||
|
|
@ -1730,6 +1733,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Prompt",
|
||||
"group_outputs": false,
|
||||
"method": "build_prompt",
|
||||
"name": "prompt",
|
||||
"selected": "Message",
|
||||
|
|
@ -1866,6 +1870,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Prompt",
|
||||
"group_outputs": false,
|
||||
"method": "build_prompt",
|
||||
"name": "prompt",
|
||||
"selected": "Message",
|
||||
|
|
@ -2043,6 +2048,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -2436,6 +2442,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Response",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "response",
|
||||
"selected": "Message",
|
||||
|
|
@ -4064,6 +4071,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
|
|||
|
|
@ -602,6 +602,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -915,6 +916,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
|
|||
|
|
@ -642,6 +642,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -952,6 +953,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
|
|||
|
|
@ -265,6 +265,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Loaded Files",
|
||||
"group_outputs": false,
|
||||
"method": "load_dataframe",
|
||||
"name": "dataframe",
|
||||
"required_inputs": [],
|
||||
|
|
@ -549,6 +550,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Prompt",
|
||||
"group_outputs": false,
|
||||
"method": "build_prompt",
|
||||
"name": "prompt",
|
||||
"selected": "Message",
|
||||
|
|
@ -702,6 +704,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Prompt",
|
||||
"group_outputs": false,
|
||||
"method": "build_prompt",
|
||||
"name": "prompt",
|
||||
"selected": "Message",
|
||||
|
|
@ -864,6 +867,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text_output",
|
||||
"required_inputs": [],
|
||||
|
|
@ -878,6 +882,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Language Model",
|
||||
"group_outputs": false,
|
||||
"method": "build_model",
|
||||
"name": "model_output",
|
||||
"required_inputs": [
|
||||
|
|
@ -1255,6 +1260,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text_output",
|
||||
"required_inputs": [],
|
||||
|
|
@ -1269,6 +1275,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Language Model",
|
||||
"group_outputs": false,
|
||||
"method": "build_model",
|
||||
"name": "model_output",
|
||||
"required_inputs": [
|
||||
|
|
@ -1635,6 +1642,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Prompt",
|
||||
"group_outputs": false,
|
||||
"method": "build_prompt",
|
||||
"name": "prompt",
|
||||
"selected": "Message",
|
||||
|
|
@ -1775,6 +1783,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text_output",
|
||||
"required_inputs": [],
|
||||
|
|
@ -1789,6 +1798,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Language Model",
|
||||
"group_outputs": false,
|
||||
"method": "build_model",
|
||||
"name": "model_output",
|
||||
"required_inputs": [
|
||||
|
|
@ -2182,6 +2192,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -2489,6 +2500,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
|
|||
|
|
@ -232,6 +232,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -528,6 +529,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
|
|||
|
|
@ -296,6 +296,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -582,6 +583,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text",
|
||||
"selected": "Message",
|
||||
|
|
@ -696,6 +698,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -989,6 +992,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text",
|
||||
"selected": "Message",
|
||||
|
|
@ -1093,6 +1097,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text",
|
||||
"selected": "Message",
|
||||
|
|
@ -1197,6 +1202,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text",
|
||||
"selected": "Message",
|
||||
|
|
@ -1301,6 +1307,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text",
|
||||
"selected": "Message",
|
||||
|
|
@ -1405,6 +1412,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text",
|
||||
"selected": "Message",
|
||||
|
|
@ -1557,6 +1565,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Prompt",
|
||||
"group_outputs": false,
|
||||
"method": "build_prompt",
|
||||
"name": "prompt",
|
||||
"selected": "Message",
|
||||
|
|
@ -1838,6 +1847,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text_output",
|
||||
"required_inputs": [],
|
||||
|
|
@ -1852,6 +1862,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Language Model",
|
||||
"group_outputs": false,
|
||||
"method": "build_model",
|
||||
"name": "model_output",
|
||||
"required_inputs": [
|
||||
|
|
|
|||
|
|
@ -325,6 +325,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -617,6 +618,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Prompt",
|
||||
"group_outputs": false,
|
||||
"method": "build_prompt",
|
||||
"name": "prompt",
|
||||
"selected": "Message",
|
||||
|
|
@ -789,6 +791,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Chunks",
|
||||
"group_outputs": false,
|
||||
"method": "split_text",
|
||||
"name": "chunks",
|
||||
"selected": "Data",
|
||||
|
|
@ -802,6 +805,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "DataFrame",
|
||||
"group_outputs": false,
|
||||
"method": "as_dataframe",
|
||||
"name": "dataframe",
|
||||
"selected": "DataFrame",
|
||||
|
|
@ -1085,6 +1089,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "message_response",
|
||||
"name": "message",
|
||||
"selected": "Message",
|
||||
|
|
@ -1398,6 +1403,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Embeddings",
|
||||
"group_outputs": false,
|
||||
"method": "build_embeddings",
|
||||
"name": "embeddings",
|
||||
"required_inputs": [
|
||||
|
|
@ -1932,6 +1938,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Embeddings",
|
||||
"group_outputs": false,
|
||||
"method": "build_embeddings",
|
||||
"name": "embeddings",
|
||||
"required_inputs": [
|
||||
|
|
@ -2412,6 +2419,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Loaded Files",
|
||||
"group_outputs": false,
|
||||
"method": "load_dataframe",
|
||||
"name": "dataframe",
|
||||
"required_inputs": [],
|
||||
|
|
@ -2790,6 +2798,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Message",
|
||||
"group_outputs": false,
|
||||
"method": "text_response",
|
||||
"name": "text_output",
|
||||
"required_inputs": [],
|
||||
|
|
@ -2804,6 +2813,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Language Model",
|
||||
"group_outputs": false,
|
||||
"method": "build_model",
|
||||
"name": "model_output",
|
||||
"required_inputs": [
|
||||
|
|
@ -3359,6 +3369,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Search Results",
|
||||
"group_outputs": false,
|
||||
"method": "search_documents",
|
||||
"name": "search_results",
|
||||
"required_inputs": [
|
||||
|
|
@ -3377,6 +3388,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "DataFrame",
|
||||
"group_outputs": false,
|
||||
"method": "as_dataframe",
|
||||
"name": "dataframe",
|
||||
"required_inputs": [],
|
||||
|
|
@ -3391,6 +3403,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Vector Store Connection",
|
||||
"group_outputs": false,
|
||||
"hidden": true,
|
||||
"method": "as_vector_store",
|
||||
"name": "vectorstoreconnection",
|
||||
|
|
@ -4118,6 +4131,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Search Results",
|
||||
"group_outputs": false,
|
||||
"method": "search_documents",
|
||||
"name": "search_results",
|
||||
"required_inputs": [
|
||||
|
|
@ -4136,6 +4150,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "DataFrame",
|
||||
"group_outputs": false,
|
||||
"method": "as_dataframe",
|
||||
"name": "dataframe",
|
||||
"required_inputs": [],
|
||||
|
|
@ -4150,6 +4165,7 @@
|
|||
"allows_loop": false,
|
||||
"cache": true,
|
||||
"display_name": "Vector Store Connection",
|
||||
"group_outputs": false,
|
||||
"hidden": true,
|
||||
"method": "as_vector_store",
|
||||
"name": "vectorstoreconnection",
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -208,6 +208,9 @@ class Output(BaseModel):
|
|||
allows_loop: bool = Field(default=False)
|
||||
"""Specifies if the output allows looping."""
|
||||
|
||||
group_outputs: bool = Field(default=False)
|
||||
"""Specifies if all outputs should be grouped and shown without dropdowns."""
|
||||
|
||||
options: OutputOptions | None = Field(default=None)
|
||||
"""Options for the output."""
|
||||
|
||||
|
|
|
|||
|
|
@ -139,6 +139,7 @@ class TestOutput:
|
|||
"types": [],
|
||||
"name": "test_output",
|
||||
"display_name": "test_output",
|
||||
"group_outputs": False,
|
||||
"cache": True,
|
||||
"value": "__UNDEFINED__",
|
||||
"tool_mode": True,
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
// NodeOutputs.tsx
|
||||
import { NodeDataType } from "@/types/flow";
|
||||
import { OutputParameter } from ".";
|
||||
|
||||
|
|
@ -25,80 +24,86 @@ export default function NodeOutputs({
|
|||
selectedOutput: any;
|
||||
handleSelectOutput: any;
|
||||
}) {
|
||||
const output = selectedOutput
|
||||
? outputs.find((output) => output.name === selectedOutput.name)
|
||||
: outputs[0];
|
||||
const hasLoopOutput = outputs.some((output) => output.allows_loop);
|
||||
const hasGroupOutputs = outputs.some((output) => output.group_outputs);
|
||||
const isConditionalRouter = data.type === "ConditionalRouter";
|
||||
const hasHiddenOutputs = outputs.some((output) => output.hidden);
|
||||
|
||||
if (!output) return null;
|
||||
const shouldShowAllOutputs =
|
||||
hasLoopOutput || hasGroupOutputs || isConditionalRouter || hasHiddenOutputs;
|
||||
|
||||
const idx =
|
||||
data.node!.outputs?.findIndex((out) => out.name === output.name) ?? 0;
|
||||
if (shouldShowAllOutputs) {
|
||||
const outputsToRender =
|
||||
keyPrefix === "hidden"
|
||||
? outputs.filter((output) => output.hidden)
|
||||
: outputs.filter((output) => !output.hidden);
|
||||
|
||||
const isLoop = output?.allows_loop ?? false;
|
||||
return (
|
||||
<>
|
||||
{outputsToRender?.map((output, idx) => (
|
||||
<OutputParameter
|
||||
key={`${keyPrefix}-${output.name}-${idx}`}
|
||||
output={output}
|
||||
outputs={outputs}
|
||||
idx={
|
||||
data.node!.outputs?.findIndex(
|
||||
(out) => out.name === output.name,
|
||||
) ?? idx
|
||||
}
|
||||
lastOutput={idx === outputsToRender.length - 1}
|
||||
data={data}
|
||||
types={types}
|
||||
selected={selected}
|
||||
showNode={showNode}
|
||||
isToolMode={isToolMode}
|
||||
showHiddenOutputs={showHiddenOutputs}
|
||||
handleSelectOutput={handleSelectOutput}
|
||||
hidden={
|
||||
keyPrefix === "hidden"
|
||||
? showHiddenOutputs
|
||||
? output.hidden
|
||||
: true
|
||||
: false
|
||||
}
|
||||
/>
|
||||
))}
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
const hiddenOutputs = outputs.filter((output) => output.hidden);
|
||||
const getDisplayOutput = () => {
|
||||
const filteredOutputs =
|
||||
keyPrefix === "hidden"
|
||||
? outputs.filter((output) => output.hidden)
|
||||
: outputs.filter((output) => !output.hidden);
|
||||
|
||||
return isLoop ? (
|
||||
keyPrefix === "hidden" ? (
|
||||
hiddenOutputs?.map((output, idx) => (
|
||||
<OutputParameter
|
||||
key={`${keyPrefix}-${output.name}-${idx}`}
|
||||
output={output}
|
||||
idx={
|
||||
data.node!.outputs?.findIndex((out) => out.name === output.name) ??
|
||||
idx
|
||||
}
|
||||
lastOutput={idx === outputs.length - 1}
|
||||
data={data}
|
||||
types={types}
|
||||
selected={selected}
|
||||
showNode={showNode}
|
||||
isToolMode={isToolMode}
|
||||
showHiddenOutputs={showHiddenOutputs}
|
||||
handleSelectOutput={handleSelectOutput}
|
||||
hidden={
|
||||
keyPrefix === "hidden"
|
||||
? showHiddenOutputs
|
||||
? output.hidden
|
||||
: true
|
||||
: false
|
||||
}
|
||||
/>
|
||||
))
|
||||
) : (
|
||||
outputs?.map((output, idx) => (
|
||||
<OutputParameter
|
||||
key={`${keyPrefix}-${output.name}-${idx}`}
|
||||
output={output}
|
||||
idx={
|
||||
data.node!.outputs?.findIndex((out) => out.name === output.name) ??
|
||||
idx
|
||||
}
|
||||
lastOutput={idx === outputs.length - 1}
|
||||
data={data}
|
||||
types={types}
|
||||
selected={selected}
|
||||
showNode={showNode}
|
||||
isToolMode={isToolMode}
|
||||
showHiddenOutputs={showHiddenOutputs}
|
||||
handleSelectOutput={handleSelectOutput}
|
||||
hidden={
|
||||
keyPrefix === "hidden"
|
||||
? showHiddenOutputs
|
||||
? output.hidden
|
||||
: true
|
||||
: false
|
||||
}
|
||||
/>
|
||||
))
|
||||
)
|
||||
) : (
|
||||
if (selectedOutput) {
|
||||
return (
|
||||
filteredOutputs.find((output) => output.name === selectedOutput.name) ||
|
||||
filteredOutputs[0]
|
||||
);
|
||||
}
|
||||
|
||||
const outputWithSelection = filteredOutputs.find(
|
||||
(output) => output.selected,
|
||||
);
|
||||
|
||||
return outputWithSelection || filteredOutputs[0];
|
||||
};
|
||||
|
||||
const displayOutput = getDisplayOutput();
|
||||
|
||||
if (!displayOutput) return null;
|
||||
|
||||
return (
|
||||
<OutputParameter
|
||||
key={`${keyPrefix}-${output.name}-${idx}`}
|
||||
output={output}
|
||||
key={`${keyPrefix}-${displayOutput.name}`}
|
||||
output={displayOutput}
|
||||
outputs={outputs}
|
||||
idx={
|
||||
data.node!.outputs?.findIndex((out) => out.name === output.name) ?? idx
|
||||
data.node!.outputs?.findIndex(
|
||||
(out) => out.name === displayOutput.name,
|
||||
) ?? 0
|
||||
}
|
||||
lastOutput={true}
|
||||
data={data}
|
||||
|
|
@ -111,7 +116,7 @@ export default function NodeOutputs({
|
|||
hidden={
|
||||
keyPrefix === "hidden"
|
||||
? showHiddenOutputs
|
||||
? output.hidden
|
||||
? displayOutput.hidden
|
||||
: true
|
||||
: false
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,7 +38,6 @@ import OutputComponent from "../OutputComponent";
|
|||
import HandleRenderComponent from "../handleRenderComponent";
|
||||
import OutputModal from "../outputModal";
|
||||
|
||||
// Memoize IconComponent instances
|
||||
const EyeIcon = memo(
|
||||
({ hidden, className }: { hidden: boolean; className: string }) => (
|
||||
<IconComponent
|
||||
|
|
@ -53,7 +52,6 @@ const SnowflakeIcon = memo(() => (
|
|||
<IconComponent className="h-5 w-5 text-ice" name="Snowflake" />
|
||||
));
|
||||
|
||||
// Memoize Button components
|
||||
const HideShowButton = memo(
|
||||
({
|
||||
disabled,
|
||||
|
|
@ -178,14 +176,12 @@ function NodeOutputField({
|
|||
const ref = useRef<HTMLDivElement>(null);
|
||||
const updateNodeInternals = useUpdateNodeInternals();
|
||||
|
||||
// Use selective store subscriptions
|
||||
const edges = useFlowStore((state) => state.edges);
|
||||
const setNode = useFlowStore((state) => state.setNode);
|
||||
const setFilterEdge = useFlowStore((state) => state.setFilterEdge);
|
||||
const flowPool = useFlowStore((state) => state.flowPool);
|
||||
const myData = useTypesStore((state) => state.data);
|
||||
|
||||
// Memoize computed values
|
||||
const { flowPoolId, internalOutputName } = useMemo(() => {
|
||||
if (data.node?.flow && outputProxy) {
|
||||
const realOutput = getGroupOutputNodeId(
|
||||
|
|
@ -450,9 +446,7 @@ function NodeOutputField({
|
|||
errorOutput={errorOutput ?? false}
|
||||
isToolMode={isToolMode}
|
||||
title={title}
|
||||
onClick={() => {
|
||||
//just to trigger the memoization
|
||||
}}
|
||||
onClick={() => {}}
|
||||
id={data?.type}
|
||||
/>
|
||||
</OutputModal>
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import {
|
|||
DropdownMenuItem,
|
||||
DropdownMenuTrigger,
|
||||
} from "@/components/ui/dropdown-menu";
|
||||
import useFlowStore from "@/stores/flowStore";
|
||||
import ShadTooltip from "../../../../components/common/shadTooltipComponent";
|
||||
import { outputComponentType } from "../../../../types/components";
|
||||
import { cn } from "../../../../utils/utils";
|
||||
|
|
@ -23,6 +24,10 @@ export default function OutputComponent({
|
|||
handleSelectOutput,
|
||||
outputName,
|
||||
}: outputComponentType) {
|
||||
const nodeType = useFlowStore(
|
||||
(state) => state.nodes.find((node) => node.id === nodeId)?.data?.type,
|
||||
);
|
||||
|
||||
const displayProxy = (children) => {
|
||||
if (proxy) {
|
||||
return (
|
||||
|
|
@ -47,9 +52,17 @@ export default function OutputComponent({
|
|||
</span>,
|
||||
);
|
||||
|
||||
const hasLoopOutput = outputs?.some?.((output) => output.allows_loop);
|
||||
const hasGroupOutputs = outputs?.some?.((output) => output.group_outputs);
|
||||
const isConditionalRouter = nodeType === "ConditionalRouter";
|
||||
const hasOutputs = outputs.length > 1;
|
||||
|
||||
const shouldShowDropdown =
|
||||
hasOutputs && !hasLoopOutput && !hasGroupOutputs && !isConditionalRouter;
|
||||
|
||||
return (
|
||||
<div>
|
||||
{outputs.length > 1 ? (
|
||||
{shouldShowDropdown ? (
|
||||
<DropdownMenu>
|
||||
<DropdownMenuTrigger asChild>
|
||||
<Button
|
||||
|
|
@ -86,51 +99,4 @@ export default function OutputComponent({
|
|||
)}
|
||||
</div>
|
||||
);
|
||||
|
||||
// ! DEACTIVATED UNTIL BETTER IMPLEMENTATION
|
||||
// return (
|
||||
// <div className="noflow nopan nodelete nodrag flex items-center gap-2">
|
||||
// <DropdownMenu>
|
||||
// <DropdownMenuTrigger asChild>
|
||||
// <Button
|
||||
// disabled={frozen}
|
||||
// variant="primary"
|
||||
// size="xs"
|
||||
// className={cn(
|
||||
// frozen ? "text-ice" : "",
|
||||
// "items-center gap-1 pl-2 pr-1.5 align-middle text-xs font-normal",
|
||||
// )}
|
||||
// >
|
||||
// <span className="pb-px">{selected}</span>
|
||||
// <ForwardedIconComponent name="ChevronDown" className="h-3 w-3" />
|
||||
// </Button>
|
||||
// </DropdownMenuTrigger>
|
||||
// <DropdownMenuContent>
|
||||
// {types.map((type) => (
|
||||
// <DropdownMenuItem
|
||||
// onSelect={() => {
|
||||
// // TODO: UDPDATE SET NODE TO NEW NODE FORM
|
||||
// setNode(nodeId, (node) => {
|
||||
// const newNode = cloneDeep(node);
|
||||
// (newNode.data as NodeDataType).node!.outputs![idx].selected =
|
||||
// type;
|
||||
// return newNode;
|
||||
// });
|
||||
// updateNodeInternals(nodeId);
|
||||
// }}
|
||||
// >
|
||||
// {type}
|
||||
// </DropdownMenuItem>
|
||||
// ))}
|
||||
// </DropdownMenuContent>
|
||||
// </DropdownMenu>
|
||||
// {proxy ? (
|
||||
// <ShadTooltip content={<span>{proxy.nodeDisplayName}</span>}>
|
||||
// <span>{name}</span>
|
||||
// </ShadTooltip>
|
||||
// ) : (
|
||||
// <span>{name}</span>
|
||||
// )}
|
||||
// </div>
|
||||
// );
|
||||
}
|
||||
|
|
|
|||
|
|
@ -54,13 +54,12 @@ const HiddenOutputsButton = memo(
|
|||
}) => (
|
||||
<Button
|
||||
unstyled
|
||||
className="group flex h-[1.75rem] w-[1.75rem] items-center justify-center rounded-full border bg-muted hover:text-foreground"
|
||||
className="group flex h-[1.25rem] w-[1.25rem] items-center justify-center rounded-full border bg-muted hover:text-foreground"
|
||||
onClick={onClick}
|
||||
>
|
||||
<ForwardedIconComponent
|
||||
name={showHiddenOutputs ? "ChevronsDownUp" : "ChevronsUpDown"}
|
||||
strokeWidth={ICON_STROKE_WIDTH}
|
||||
className="icon-size text-placeholder-foreground group-hover:text-foreground"
|
||||
className="h-3 w-3 text-placeholder-foreground group-hover:text-foreground"
|
||||
/>
|
||||
</Button>
|
||||
),
|
||||
|
|
@ -219,7 +218,6 @@ function GenericNode({
|
|||
const update = useShortcutsStore((state) => state.update);
|
||||
useHotkeys(update, handleUpdateCodeWShortcut, { preventDefault: true });
|
||||
|
||||
// Memoized values
|
||||
const isToolMode = useMemo(
|
||||
() =>
|
||||
data.node?.outputs?.some(
|
||||
|
|
@ -261,35 +259,47 @@ function GenericNode({
|
|||
}, [data.node?.outputs]);
|
||||
|
||||
const [selectedOutput, setSelectedOutput] = useState<OutputFieldType | null>(
|
||||
null,
|
||||
() => data.node?.outputs?.find((output) => output.selected) || null,
|
||||
);
|
||||
|
||||
const handleSelectOutput = useCallback(
|
||||
(output) => {
|
||||
setSelectedOutput(output);
|
||||
// Remove any edges connected to this output handle
|
||||
const sourceHandleId = scapedJSONStringfy({
|
||||
output_types: [output.selected ?? output.types[0]],
|
||||
id: data.id,
|
||||
dataType: data.type,
|
||||
name: output.name,
|
||||
});
|
||||
|
||||
setEdges((eds) =>
|
||||
eds.filter((edge) => edge.sourceHandle !== sourceHandleId),
|
||||
);
|
||||
setEdges((eds) => {
|
||||
return eds.map((edge) => {
|
||||
if (edge.source === data.id && edge.data?.sourceHandle) {
|
||||
const sourceHandle = edge.data.sourceHandle;
|
||||
if (sourceHandle.name === output.name) {
|
||||
const newSourceHandle = {
|
||||
...sourceHandle,
|
||||
output_types: [output.selected ?? output.types[0]],
|
||||
};
|
||||
const newSourceHandleId = scapedJSONStringfy(newSourceHandle);
|
||||
|
||||
return {
|
||||
...edge,
|
||||
sourceHandle: newSourceHandleId,
|
||||
data: {
|
||||
...edge.data,
|
||||
sourceHandle: newSourceHandle,
|
||||
},
|
||||
};
|
||||
}
|
||||
}
|
||||
return edge;
|
||||
});
|
||||
});
|
||||
|
||||
setNode(data.id, (oldNode) => {
|
||||
const newNode = cloneDeep(oldNode);
|
||||
if (newNode.data.node?.outputs) {
|
||||
// First, clear any previous selections
|
||||
newNode.data.node.outputs.forEach((out) => {
|
||||
if (out.selected) {
|
||||
out.selected = undefined;
|
||||
}
|
||||
});
|
||||
|
||||
// Then set the new selection
|
||||
const outputIndex = newNode.data.node.outputs.findIndex(
|
||||
(o) => o.name === output.name,
|
||||
);
|
||||
|
|
@ -566,38 +576,32 @@ function GenericNode({
|
|||
>
|
||||
{" "}
|
||||
</div>
|
||||
{!showHiddenOutputs && shownOutputs && (
|
||||
<MemoizedNodeOutputs
|
||||
outputs={shownOutputs}
|
||||
keyPrefix={"shown"}
|
||||
data={data}
|
||||
types={types}
|
||||
selected={selected ?? false}
|
||||
showNode={showNode}
|
||||
isToolMode={isToolMode}
|
||||
showHiddenOutputs={showHiddenOutputs}
|
||||
selectedOutput={selectedOutput}
|
||||
handleSelectOutput={handleSelectOutput}
|
||||
/>
|
||||
{showHiddenOutputs && (
|
||||
<MemoizedNodeOutputs
|
||||
outputs={showHiddenOutputs ? hiddenOutputs : shownOutputs}
|
||||
keyPrefix="shown"
|
||||
outputs={hiddenOutputs}
|
||||
keyPrefix="hidden"
|
||||
data={data}
|
||||
types={types}
|
||||
selected={selected ?? false}
|
||||
showNode={showNode}
|
||||
isToolMode={isToolMode}
|
||||
showHiddenOutputs={showHiddenOutputs}
|
||||
showHiddenOutputs={true}
|
||||
selectedOutput={selectedOutput}
|
||||
handleSelectOutput={handleSelectOutput}
|
||||
/>
|
||||
)}
|
||||
<div
|
||||
className={cn(showHiddenOutputs ? "" : "h-0 overflow-hidden")}
|
||||
>
|
||||
<div className="block">
|
||||
<MemoizedNodeOutputs
|
||||
outputs={data.node!.outputs}
|
||||
keyPrefix="hidden"
|
||||
data={data}
|
||||
types={types}
|
||||
selected={selected ?? false}
|
||||
showNode={showNode}
|
||||
isToolMode={isToolMode}
|
||||
showHiddenOutputs={showHiddenOutputs}
|
||||
selectedOutput={selectedOutput}
|
||||
handleSelectOutput={handleSelectOutput}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
{hiddenOutputs && hiddenOutputs.length > 0 && (
|
||||
<ShadTooltip
|
||||
content={
|
||||
|
|
|
|||
|
|
@ -113,8 +113,6 @@ const NodeToolbarComponent = memo(
|
|||
[data.node],
|
||||
);
|
||||
|
||||
// Check if any of the data.node.template fields have tool_mode as True
|
||||
// if so we can show the tool mode button
|
||||
const hasToolMode = useMemo(
|
||||
() => checkHasToolMode(data.node?.template ?? {}) && !isGroup,
|
||||
[data.node?.template, isGroup],
|
||||
|
|
|
|||
|
|
@ -322,12 +322,6 @@ test(
|
|||
.getByTestId("handle-pass-shownode-ignored message-left")
|
||||
.nth(1)
|
||||
.click();
|
||||
|
||||
await page.getByTestId("dropdown-output-conditionalrouter").click();
|
||||
await page
|
||||
.getByTestId("dropdown-item-output-conditionalrouter-false")
|
||||
.click();
|
||||
|
||||
await page
|
||||
.getByTestId("handle-conditionalrouter-shownode-false-right")
|
||||
.nth(0)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue