diff --git a/1.8.0.html b/1.8.0.html index 5a25f5105f..1f622952f9 100644 --- a/1.8.0.html +++ b/1.8.0.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/agent-tutorial.html b/1.8.0/agent-tutorial.html index e0e01efb81..ed6914c0bd 100644 --- a/1.8.0/agent-tutorial.html +++ b/1.8.0/agent-tutorial.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/agents-tools.html b/1.8.0/agents-tools.html index 32793b9ec5..bc2d150929 100644 --- a/1.8.0/agents-tools.html +++ b/1.8.0/agents-tools.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/agents.html b/1.8.0/agents.html index f8891dfa58..ba9c239be7 100644 --- a/1.8.0/agents.html +++ b/1.8.0/agents.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/api-build.html b/1.8.0/api-build.html index 2f42ba7ef4..7787b60dfd 100644 --- a/1.8.0/api-build.html +++ b/1.8.0/api-build.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/api-files.html b/1.8.0/api-files.html index 562041e342..cab63dd4cc 100644 --- a/1.8.0/api-files.html +++ b/1.8.0/api-files.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/api-flows-run.html b/1.8.0/api-flows-run.html index 456317a617..80086378d7 100644 --- a/1.8.0/api-flows-run.html +++ b/1.8.0/api-flows-run.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/api-flows.html b/1.8.0/api-flows.html index d596d7f4a6..a863666871 100644 --- a/1.8.0/api-flows.html +++ b/1.8.0/api-flows.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/api-keys-and-authentication.html b/1.8.0/api-keys-and-authentication.html index 7454c9a8ee..a7556cedeb 100644 --- a/1.8.0/api-keys-and-authentication.html +++ b/1.8.0/api-keys-and-authentication.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/api-logs.html b/1.8.0/api-logs.html index 52b5afd210..f59c846a2f 100644 --- a/1.8.0/api-logs.html +++ b/1.8.0/api-logs.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/api-monitor.html b/1.8.0/api-monitor.html index a3ead1a737..731bce7a15 100644 --- a/1.8.0/api-monitor.html +++ b/1.8.0/api-monitor.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/api-openai-responses.html b/1.8.0/api-openai-responses.html index 468f14bf50..aa5d330e3d 100644 --- a/1.8.0/api-openai-responses.html +++ b/1.8.0/api-openai-responses.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/api-projects.html b/1.8.0/api-projects.html index 3d6534d58d..9463eeef25 100644 --- a/1.8.0/api-projects.html +++ b/1.8.0/api-projects.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/api-reference-api-examples.html b/1.8.0/api-reference-api-examples.html index 3b1d82efb8..91620e07ae 100644 --- a/1.8.0/api-reference-api-examples.html +++ b/1.8.0/api-reference-api-examples.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/api-request.html b/1.8.0/api-request.html index 73e08beee8..1ceee0ca39 100644 --- a/1.8.0/api-request.html +++ b/1.8.0/api-request.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/api-users.html b/1.8.0/api-users.html index ce6daf490c..e3331bbc03 100644 --- a/1.8.0/api-users.html +++ b/1.8.0/api-users.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/batch-run.html b/1.8.0/batch-run.html index 2075ad5da5..dec1275ffd 100644 --- a/1.8.0/batch-run.html +++ b/1.8.0/batch-run.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-agentics.html b/1.8.0/bundles-agentics.html index 1a2c612778..cbc240c6b0 100644 --- a/1.8.0/bundles-agentics.html +++ b/1.8.0/bundles-agentics.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-aiml.html b/1.8.0/bundles-aiml.html index 7650b21179..59c0686d4c 100644 --- a/1.8.0/bundles-aiml.html +++ b/1.8.0/bundles-aiml.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-altk.html b/1.8.0/bundles-altk.html index 334d9a42ce..eff40000ed 100644 --- a/1.8.0/bundles-altk.html +++ b/1.8.0/bundles-altk.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-amazon.html b/1.8.0/bundles-amazon.html index 64057c31cc..a354a7e27c 100644 --- a/1.8.0/bundles-amazon.html +++ b/1.8.0/bundles-amazon.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-anthropic.html b/1.8.0/bundles-anthropic.html index 5cf8868896..fb50e31a4a 100644 --- a/1.8.0/bundles-anthropic.html +++ b/1.8.0/bundles-anthropic.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-apify.html b/1.8.0/bundles-apify.html index c5eedcdedd..a22ab46272 100644 --- a/1.8.0/bundles-apify.html +++ b/1.8.0/bundles-apify.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-arxiv.html b/1.8.0/bundles-arxiv.html index 65be990a03..c368a34385 100644 --- a/1.8.0/bundles-arxiv.html +++ b/1.8.0/bundles-arxiv.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-assemblyai.html b/1.8.0/bundles-assemblyai.html index 71b502d0c6..4c9a6b0c91 100644 --- a/1.8.0/bundles-assemblyai.html +++ b/1.8.0/bundles-assemblyai.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-azure.html b/1.8.0/bundles-azure.html index 18005d94c5..29b689bc82 100644 --- a/1.8.0/bundles-azure.html +++ b/1.8.0/bundles-azure.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-baidu.html b/1.8.0/bundles-baidu.html index 5a41627f44..3175354fda 100644 --- a/1.8.0/bundles-baidu.html +++ b/1.8.0/bundles-baidu.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-bing.html b/1.8.0/bundles-bing.html index 98f5a8beb3..d477bbfb00 100644 --- a/1.8.0/bundles-bing.html +++ b/1.8.0/bundles-bing.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-cassandra.html b/1.8.0/bundles-cassandra.html index 823deb8ee4..256fce4d15 100644 --- a/1.8.0/bundles-cassandra.html +++ b/1.8.0/bundles-cassandra.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-chroma.html b/1.8.0/bundles-chroma.html index 2d7b3d4d6a..e8df6f0654 100644 --- a/1.8.0/bundles-chroma.html +++ b/1.8.0/bundles-chroma.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-cleanlab.html b/1.8.0/bundles-cleanlab.html index 9362c90752..006ea4905a 100644 --- a/1.8.0/bundles-cleanlab.html +++ b/1.8.0/bundles-cleanlab.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-clickhouse.html b/1.8.0/bundles-clickhouse.html index 76a0136db9..20566c9573 100644 --- a/1.8.0/bundles-clickhouse.html +++ b/1.8.0/bundles-clickhouse.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-cloudflare.html b/1.8.0/bundles-cloudflare.html index e41aebdc03..7b8f8ee6e8 100644 --- a/1.8.0/bundles-cloudflare.html +++ b/1.8.0/bundles-cloudflare.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-cohere.html b/1.8.0/bundles-cohere.html index 0bc38a117c..24af5a91f3 100644 --- a/1.8.0/bundles-cohere.html +++ b/1.8.0/bundles-cohere.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-cometapi.html b/1.8.0/bundles-cometapi.html index 41333eec2c..04eb1e8c85 100644 --- a/1.8.0/bundles-cometapi.html +++ b/1.8.0/bundles-cometapi.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-composio.html b/1.8.0/bundles-composio.html index 200b55d3b8..65d0129caa 100644 --- a/1.8.0/bundles-composio.html +++ b/1.8.0/bundles-composio.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-couchbase.html b/1.8.0/bundles-couchbase.html index f65f16f907..0f0a61f213 100644 --- a/1.8.0/bundles-couchbase.html +++ b/1.8.0/bundles-couchbase.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-cuga.html b/1.8.0/bundles-cuga.html index 91ec25bf67..d76f01e250 100644 --- a/1.8.0/bundles-cuga.html +++ b/1.8.0/bundles-cuga.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-datastax.html b/1.8.0/bundles-datastax.html index 48a189492a..4226b07d4a 100644 --- a/1.8.0/bundles-datastax.html +++ b/1.8.0/bundles-datastax.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-deepseek.html b/1.8.0/bundles-deepseek.html index 167a634ef1..8d85d2d37a 100644 --- a/1.8.0/bundles-deepseek.html +++ b/1.8.0/bundles-deepseek.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-docling.html b/1.8.0/bundles-docling.html index a1da5e9b8d..a5f8b54c65 100644 --- a/1.8.0/bundles-docling.html +++ b/1.8.0/bundles-docling.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-duckduckgo.html b/1.8.0/bundles-duckduckgo.html index 993d137a05..65e1dd9e0f 100644 --- a/1.8.0/bundles-duckduckgo.html +++ b/1.8.0/bundles-duckduckgo.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-elastic.html b/1.8.0/bundles-elastic.html index 4a94a545df..49daea11fe 100644 --- a/1.8.0/bundles-elastic.html +++ b/1.8.0/bundles-elastic.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-exa.html b/1.8.0/bundles-exa.html index 196c8bd7c7..7af66e23cf 100644 --- a/1.8.0/bundles-exa.html +++ b/1.8.0/bundles-exa.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-faiss.html b/1.8.0/bundles-faiss.html index 2590d5ab66..0f45ecfeaf 100644 --- a/1.8.0/bundles-faiss.html +++ b/1.8.0/bundles-faiss.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-glean.html b/1.8.0/bundles-glean.html index c06184a5e3..7caa175991 100644 --- a/1.8.0/bundles-glean.html +++ b/1.8.0/bundles-glean.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-google.html b/1.8.0/bundles-google.html index 609fe8f5e7..509e418a2f 100644 --- a/1.8.0/bundles-google.html +++ b/1.8.0/bundles-google.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-groq.html b/1.8.0/bundles-groq.html index 3989377b87..fe47e92257 100644 --- a/1.8.0/bundles-groq.html +++ b/1.8.0/bundles-groq.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-huggingface.html b/1.8.0/bundles-huggingface.html index b91b1c0c94..130424955b 100644 --- a/1.8.0/bundles-huggingface.html +++ b/1.8.0/bundles-huggingface.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-ibm.html b/1.8.0/bundles-ibm.html index e2d88f362c..94c7b70831 100644 --- a/1.8.0/bundles-ibm.html +++ b/1.8.0/bundles-ibm.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-icosacomputing.html b/1.8.0/bundles-icosacomputing.html index 874a00a63a..af8e9e76fb 100644 --- a/1.8.0/bundles-icosacomputing.html +++ b/1.8.0/bundles-icosacomputing.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-langchain.html b/1.8.0/bundles-langchain.html index 7655f6f2e7..e163a01ac5 100644 --- a/1.8.0/bundles-langchain.html +++ b/1.8.0/bundles-langchain.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-lite-llm.html b/1.8.0/bundles-lite-llm.html index 232a45177d..f97d85c1b0 100644 --- a/1.8.0/bundles-lite-llm.html +++ b/1.8.0/bundles-lite-llm.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-lmstudio.html b/1.8.0/bundles-lmstudio.html index c653a1414b..baec39dab6 100644 --- a/1.8.0/bundles-lmstudio.html +++ b/1.8.0/bundles-lmstudio.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-maritalk.html b/1.8.0/bundles-maritalk.html index ac68923a3c..12589136b4 100644 --- a/1.8.0/bundles-maritalk.html +++ b/1.8.0/bundles-maritalk.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-mem0.html b/1.8.0/bundles-mem0.html index 53c9209c28..56206f88bb 100644 --- a/1.8.0/bundles-mem0.html +++ b/1.8.0/bundles-mem0.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-milvus.html b/1.8.0/bundles-milvus.html index 32c7b23256..d7b09d80af 100644 --- a/1.8.0/bundles-milvus.html +++ b/1.8.0/bundles-milvus.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-mistralai.html b/1.8.0/bundles-mistralai.html index e004fd380d..4a33d39362 100644 --- a/1.8.0/bundles-mistralai.html +++ b/1.8.0/bundles-mistralai.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-mongodb.html b/1.8.0/bundles-mongodb.html index b15f321a2f..48d7fa48e4 100644 --- a/1.8.0/bundles-mongodb.html +++ b/1.8.0/bundles-mongodb.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-notion.html b/1.8.0/bundles-notion.html index 138c775f34..e82a54e93b 100644 --- a/1.8.0/bundles-notion.html +++ b/1.8.0/bundles-notion.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-novita.html b/1.8.0/bundles-novita.html index 67b9236fe3..9f79afba00 100644 --- a/1.8.0/bundles-novita.html +++ b/1.8.0/bundles-novita.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-nvidia.html b/1.8.0/bundles-nvidia.html index 2130c9d46a..efe1b5a0b9 100644 --- a/1.8.0/bundles-nvidia.html +++ b/1.8.0/bundles-nvidia.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-ollama.html b/1.8.0/bundles-ollama.html index 471b704d7e..055a09871f 100644 --- a/1.8.0/bundles-ollama.html +++ b/1.8.0/bundles-ollama.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-openai.html b/1.8.0/bundles-openai.html index bdb2cc05a0..96aa8bf343 100644 --- a/1.8.0/bundles-openai.html +++ b/1.8.0/bundles-openai.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-openrouter.html b/1.8.0/bundles-openrouter.html index 5cf9d032e3..2d664c11b0 100644 --- a/1.8.0/bundles-openrouter.html +++ b/1.8.0/bundles-openrouter.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-perplexity.html b/1.8.0/bundles-perplexity.html index d74fb58414..06ab5366de 100644 --- a/1.8.0/bundles-perplexity.html +++ b/1.8.0/bundles-perplexity.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-pgvector.html b/1.8.0/bundles-pgvector.html index 5c66282bdb..5e3ce79f7e 100644 --- a/1.8.0/bundles-pgvector.html +++ b/1.8.0/bundles-pgvector.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-pinecone.html b/1.8.0/bundles-pinecone.html index a3ab018156..02c82f3633 100644 --- a/1.8.0/bundles-pinecone.html +++ b/1.8.0/bundles-pinecone.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-qdrant.html b/1.8.0/bundles-qdrant.html index 79d25e7e01..430c579c0c 100644 --- a/1.8.0/bundles-qdrant.html +++ b/1.8.0/bundles-qdrant.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-redis.html b/1.8.0/bundles-redis.html index cefcc5ba5c..e3309f2304 100644 --- a/1.8.0/bundles-redis.html +++ b/1.8.0/bundles-redis.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-sambanova.html b/1.8.0/bundles-sambanova.html index 7507f82b10..51148c1e23 100644 --- a/1.8.0/bundles-sambanova.html +++ b/1.8.0/bundles-sambanova.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-searchapi.html b/1.8.0/bundles-searchapi.html index 27c7b56f57..20ee45ac0b 100644 --- a/1.8.0/bundles-searchapi.html +++ b/1.8.0/bundles-searchapi.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-serper.html b/1.8.0/bundles-serper.html index 2546519ac7..c7893c6b3d 100644 --- a/1.8.0/bundles-serper.html +++ b/1.8.0/bundles-serper.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-supabase.html b/1.8.0/bundles-supabase.html index 13b3491328..587ac7708b 100644 --- a/1.8.0/bundles-supabase.html +++ b/1.8.0/bundles-supabase.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-upstash.html b/1.8.0/bundles-upstash.html index a55a47e3ee..bc699e6150 100644 --- a/1.8.0/bundles-upstash.html +++ b/1.8.0/bundles-upstash.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-vectara.html b/1.8.0/bundles-vectara.html index de17452b1b..262567a829 100644 --- a/1.8.0/bundles-vectara.html +++ b/1.8.0/bundles-vectara.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-vertexai.html b/1.8.0/bundles-vertexai.html index 5bc80cf788..6f893091f9 100644 --- a/1.8.0/bundles-vertexai.html +++ b/1.8.0/bundles-vertexai.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-vllm.html b/1.8.0/bundles-vllm.html index 3b3c1ab06a..4094f97665 100644 --- a/1.8.0/bundles-vllm.html +++ b/1.8.0/bundles-vllm.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-weaviate.html b/1.8.0/bundles-weaviate.html index 1766df6df8..5c5f277fa4 100644 --- a/1.8.0/bundles-weaviate.html +++ b/1.8.0/bundles-weaviate.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-wikipedia.html b/1.8.0/bundles-wikipedia.html index a84e42efa2..1f64ee877e 100644 --- a/1.8.0/bundles-wikipedia.html +++ b/1.8.0/bundles-wikipedia.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/bundles-xai.html b/1.8.0/bundles-xai.html index 8beba44846..a0152eabe3 100644 --- a/1.8.0/bundles-xai.html +++ b/1.8.0/bundles-xai.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/calculator.html b/1.8.0/calculator.html index ec758d8a67..c504c54e05 100644 --- a/1.8.0/calculator.html +++ b/1.8.0/calculator.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/chat-input-and-output.html b/1.8.0/chat-input-and-output.html index 4e93341140..067f0f62ed 100644 --- a/1.8.0/chat-input-and-output.html +++ b/1.8.0/chat-input-and-output.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/chat-with-files.html b/1.8.0/chat-with-files.html index 2894053575..93d365a9b0 100644 --- a/1.8.0/chat-with-files.html +++ b/1.8.0/chat-with-files.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/chat-with-rag.html b/1.8.0/chat-with-rag.html index 19b5948a9a..f667bffa72 100644 --- a/1.8.0/chat-with-rag.html +++ b/1.8.0/chat-with-rag.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/component-webhook.html b/1.8.0/component-webhook.html index a98ae5d7bb..a4971132b1 100644 --- a/1.8.0/component-webhook.html +++ b/1.8.0/component-webhook.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/components-agents.html b/1.8.0/components-agents.html index b17078d119..caaf3a9138 100644 --- a/1.8.0/components-agents.html +++ b/1.8.0/components-agents.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/components-bundle-components.html b/1.8.0/components-bundle-components.html index c0a395d081..3aaeefdf69 100644 --- a/1.8.0/components-bundle-components.html +++ b/1.8.0/components-bundle-components.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/components-custom-components.html b/1.8.0/components-custom-components.html index 116ba5305b..6986d2aa3f 100644 --- a/1.8.0/components-custom-components.html +++ b/1.8.0/components-custom-components.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/components-embedding-models.html b/1.8.0/components-embedding-models.html index 3283458140..ad3e72402c 100644 --- a/1.8.0/components-embedding-models.html +++ b/1.8.0/components-embedding-models.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/components-models.html b/1.8.0/components-models.html index 4b61ff79c2..2ad908ccb9 100644 --- a/1.8.0/components-models.html +++ b/1.8.0/components-models.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/components-prompts.html b/1.8.0/components-prompts.html index 18422c17c8..b40c8ed143 100644 --- a/1.8.0/components-prompts.html +++ b/1.8.0/components-prompts.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/concepts-components.html b/1.8.0/concepts-components.html index 2882aa7395..814f6eb1aa 100644 --- a/1.8.0/concepts-components.html +++ b/1.8.0/concepts-components.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/concepts-file-management.html b/1.8.0/concepts-file-management.html index a3d020ec9a..f3f859a011 100644 --- a/1.8.0/concepts-file-management.html +++ b/1.8.0/concepts-file-management.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/concepts-flows-import.html b/1.8.0/concepts-flows-import.html index e17f00ea61..634a1c97ac 100644 --- a/1.8.0/concepts-flows-import.html +++ b/1.8.0/concepts-flows-import.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/concepts-flows.html b/1.8.0/concepts-flows.html index 70ae0f2750..a675f69576 100644 --- a/1.8.0/concepts-flows.html +++ b/1.8.0/concepts-flows.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/concepts-overview.html b/1.8.0/concepts-overview.html index 52b4b8d7d7..56626522c5 100644 --- a/1.8.0/concepts-overview.html +++ b/1.8.0/concepts-overview.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/concepts-playground.html b/1.8.0/concepts-playground.html index 616994506d..15690c6c39 100644 --- a/1.8.0/concepts-playground.html +++ b/1.8.0/concepts-playground.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/concepts-publish.html b/1.8.0/concepts-publish.html index f564745c44..d79470902b 100644 --- a/1.8.0/concepts-publish.html +++ b/1.8.0/concepts-publish.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/concepts-voice-mode.html b/1.8.0/concepts-voice-mode.html index 754d9fffb5..73a03cdf98 100644 --- a/1.8.0/concepts-voice-mode.html +++ b/1.8.0/concepts-voice-mode.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/configuration-cli.html b/1.8.0/configuration-cli.html index 85b10ec2e0..8efa5f69a8 100644 --- a/1.8.0/configuration-cli.html +++ b/1.8.0/configuration-cli.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/configuration-custom-database.html b/1.8.0/configuration-custom-database.html index 03cfccae4d..41b95231c9 100644 --- a/1.8.0/configuration-custom-database.html +++ b/1.8.0/configuration-custom-database.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/configuration-global-variables.html b/1.8.0/configuration-global-variables.html index d6d707d6ab..0467218e4f 100644 --- a/1.8.0/configuration-global-variables.html +++ b/1.8.0/configuration-global-variables.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/contributing-bundles.html b/1.8.0/contributing-bundles.html index e04fb9e3a0..42c68bd7c6 100644 --- a/1.8.0/contributing-bundles.html +++ b/1.8.0/contributing-bundles.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/contributing-community.html b/1.8.0/contributing-community.html index 9db3fa2c17..0685f9e8e3 100644 --- a/1.8.0/contributing-community.html +++ b/1.8.0/contributing-community.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/contributing-component-tests.html b/1.8.0/contributing-component-tests.html index 72bd59f64e..5eb0385946 100644 --- a/1.8.0/contributing-component-tests.html +++ b/1.8.0/contributing-component-tests.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/contributing-components.html b/1.8.0/contributing-components.html index 1760344d13..94226c9fd3 100644 --- a/1.8.0/contributing-components.html +++ b/1.8.0/contributing-components.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/contributing-github-issues.html b/1.8.0/contributing-github-issues.html index f03b843dc7..1c53b7d094 100644 --- a/1.8.0/contributing-github-issues.html +++ b/1.8.0/contributing-github-issues.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/contributing-how-to-contribute.html b/1.8.0/contributing-how-to-contribute.html index 2a18c4113a..74840fcf76 100644 --- a/1.8.0/contributing-how-to-contribute.html +++ b/1.8.0/contributing-how-to-contribute.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/contributing-telemetry.html b/1.8.0/contributing-telemetry.html index d8abb90adb..74339aa884 100644 --- a/1.8.0/contributing-telemetry.html +++ b/1.8.0/contributing-telemetry.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/contributing-templates.html b/1.8.0/contributing-templates.html index ed5b6b6af9..654c574e0d 100644 --- a/1.8.0/contributing-templates.html +++ b/1.8.0/contributing-templates.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/current-date.html b/1.8.0/current-date.html index 43ebfa5b4f..a54cbb0447 100644 --- a/1.8.0/current-date.html +++ b/1.8.0/current-date.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/data-operations.html b/1.8.0/data-operations.html index 4565184bd4..e5d6228ea8 100644 --- a/1.8.0/data-operations.html +++ b/1.8.0/data-operations.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/data-types.html b/1.8.0/data-types.html index 7222d51027..0f6bbec47a 100644 --- a/1.8.0/data-types.html +++ b/1.8.0/data-types.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/dataframe-operations.html b/1.8.0/dataframe-operations.html index 3e416c3ebb..00a30dbc56 100644 --- a/1.8.0/dataframe-operations.html +++ b/1.8.0/dataframe-operations.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/deployment-architecture.html b/1.8.0/deployment-architecture.html index f228c002b4..e5da4c76a0 100644 --- a/1.8.0/deployment-architecture.html +++ b/1.8.0/deployment-architecture.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/deployment-caddyfile.html b/1.8.0/deployment-caddyfile.html index 04500f2b54..a9af17eb70 100644 --- a/1.8.0/deployment-caddyfile.html +++ b/1.8.0/deployment-caddyfile.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/deployment-docker.html b/1.8.0/deployment-docker.html index 0a1a5277f6..9382c649e2 100644 --- a/1.8.0/deployment-docker.html +++ b/1.8.0/deployment-docker.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/deployment-gcp.html b/1.8.0/deployment-gcp.html index fe6ee16c0e..54f9061bd0 100644 --- a/1.8.0/deployment-gcp.html +++ b/1.8.0/deployment-gcp.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/deployment-hugging-face-spaces.html b/1.8.0/deployment-hugging-face-spaces.html index 58f95d1180..06343ffd78 100644 --- a/1.8.0/deployment-hugging-face-spaces.html +++ b/1.8.0/deployment-hugging-face-spaces.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/deployment-kubernetes-dev.html b/1.8.0/deployment-kubernetes-dev.html index fe50385efd..b7b8735c38 100644 --- a/1.8.0/deployment-kubernetes-dev.html +++ b/1.8.0/deployment-kubernetes-dev.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/deployment-kubernetes-prod.html b/1.8.0/deployment-kubernetes-prod.html index ffb2199778..09ebdacf3e 100644 --- a/1.8.0/deployment-kubernetes-prod.html +++ b/1.8.0/deployment-kubernetes-prod.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/deployment-nginx-ssl.html b/1.8.0/deployment-nginx-ssl.html index 5db605e95d..68a42256a8 100644 --- a/1.8.0/deployment-nginx-ssl.html +++ b/1.8.0/deployment-nginx-ssl.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/deployment-overview.html b/1.8.0/deployment-overview.html index f2ee8ceb03..a8a3bebea2 100644 --- a/1.8.0/deployment-overview.html +++ b/1.8.0/deployment-overview.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/deployment-prod-best-practices.html b/1.8.0/deployment-prod-best-practices.html index f33ec4b421..b3309d59a7 100644 --- a/1.8.0/deployment-prod-best-practices.html +++ b/1.8.0/deployment-prod-best-practices.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/deployment-public-server.html b/1.8.0/deployment-public-server.html index 118de5e357..41dc6fb164 100644 --- a/1.8.0/deployment-public-server.html +++ b/1.8.0/deployment-public-server.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/deployment-railway.html b/1.8.0/deployment-railway.html index cce67c5104..e9cacb62f7 100644 --- a/1.8.0/deployment-railway.html +++ b/1.8.0/deployment-railway.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/deployment-render.html b/1.8.0/deployment-render.html index 7ecfd4724b..46e33a13a0 100644 --- a/1.8.0/deployment-render.html +++ b/1.8.0/deployment-render.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/develop-application.html b/1.8.0/develop-application.html index 04c5be177e..1ed4ddf07b 100644 --- a/1.8.0/develop-application.html +++ b/1.8.0/develop-application.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/directory.html b/1.8.0/directory.html index 68d9c0f8f6..0beab7698a 100644 --- a/1.8.0/directory.html +++ b/1.8.0/directory.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/dynamic-create-data.html b/1.8.0/dynamic-create-data.html index 719cc3dcf8..dd44249f0c 100644 --- a/1.8.0/dynamic-create-data.html +++ b/1.8.0/dynamic-create-data.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/enterprise-database-guide.html b/1.8.0/enterprise-database-guide.html index 982fedcfa8..b6ab3cf1fa 100644 --- a/1.8.0/enterprise-database-guide.html +++ b/1.8.0/enterprise-database-guide.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/environment-variables.html b/1.8.0/environment-variables.html index fa6d1cb534..2ab570e3b7 100644 --- a/1.8.0/environment-variables.html +++ b/1.8.0/environment-variables.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/get-started-installation.html b/1.8.0/get-started-installation.html index 0c0597caa0..41785070f9 100644 --- a/1.8.0/get-started-installation.html +++ b/1.8.0/get-started-installation.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/get-started-quickstart.html b/1.8.0/get-started-quickstart.html index 100ec68e70..55bb5f06c9 100644 --- a/1.8.0/get-started-quickstart.html +++ b/1.8.0/get-started-quickstart.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/guardrails.html b/1.8.0/guardrails.html index 69e9710c0d..9fd0b9a255 100644 --- a/1.8.0/guardrails.html +++ b/1.8.0/guardrails.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/if-else.html b/1.8.0/if-else.html index cf105ff0e6..3231bf588d 100644 --- a/1.8.0/if-else.html +++ b/1.8.0/if-else.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/install-custom-dependencies.html b/1.8.0/install-custom-dependencies.html index c93c027d36..0a470d927e 100644 --- a/1.8.0/install-custom-dependencies.html +++ b/1.8.0/install-custom-dependencies.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/integrations-arize.html b/1.8.0/integrations-arize.html index 7687481697..2afb861db8 100644 --- a/1.8.0/integrations-arize.html +++ b/1.8.0/integrations-arize.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/integrations-instana-traceloop.html b/1.8.0/integrations-instana-traceloop.html index b66c9ef8d1..2ca38376b8 100644 --- a/1.8.0/integrations-instana-traceloop.html +++ b/1.8.0/integrations-instana-traceloop.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/integrations-langfuse.html b/1.8.0/integrations-langfuse.html index ba460ec0d5..eff758988c 100644 --- a/1.8.0/integrations-langfuse.html +++ b/1.8.0/integrations-langfuse.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/integrations-langsmith.html b/1.8.0/integrations-langsmith.html index 31796f6c44..aa2cbd4972 100644 --- a/1.8.0/integrations-langsmith.html +++ b/1.8.0/integrations-langsmith.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/integrations-langwatch.html b/1.8.0/integrations-langwatch.html index a6dc847362..a0dc5e770c 100644 --- a/1.8.0/integrations-langwatch.html +++ b/1.8.0/integrations-langwatch.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/integrations-openlayer.html b/1.8.0/integrations-openlayer.html index 5434682e3e..ac146b006f 100644 --- a/1.8.0/integrations-openlayer.html +++ b/1.8.0/integrations-openlayer.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/integrations-opik.html b/1.8.0/integrations-opik.html index b1c5bf001d..5de4087817 100644 --- a/1.8.0/integrations-opik.html +++ b/1.8.0/integrations-opik.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/jwt-authentication.html b/1.8.0/jwt-authentication.html index 4ed7b069a5..f31fdc02de 100644 --- a/1.8.0/jwt-authentication.html +++ b/1.8.0/jwt-authentication.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/knowledge-base.html b/1.8.0/knowledge-base.html index b4b363a115..bfd62e3bcd 100644 --- a/1.8.0/knowledge-base.html +++ b/1.8.0/knowledge-base.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/knowledge.html b/1.8.0/knowledge.html index 5e972720ef..8b2c1fa482 100644 --- a/1.8.0/knowledge.html +++ b/1.8.0/knowledge.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/legacy-core-components.html b/1.8.0/legacy-core-components.html index 76fceb5fc7..86a89569f0 100644 --- a/1.8.0/legacy-core-components.html +++ b/1.8.0/legacy-core-components.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/llm-selector.html b/1.8.0/llm-selector.html index c4c29e2ca5..b3a00d3a7c 100644 --- a/1.8.0/llm-selector.html +++ b/1.8.0/llm-selector.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/logging.html b/1.8.0/logging.html index ad555e1d42..c73b9d186b 100644 --- a/1.8.0/logging.html +++ b/1.8.0/logging.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/loop.html b/1.8.0/loop.html index 5f78821a9f..da1b5cad95 100644 --- a/1.8.0/loop.html +++ b/1.8.0/loop.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/luna-for-langflow.html b/1.8.0/luna-for-langflow.html index e81c4557d2..00d488fb6e 100644 --- a/1.8.0/luna-for-langflow.html +++ b/1.8.0/luna-for-langflow.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/mcp-client.html b/1.8.0/mcp-client.html index ebf083bd4c..1ff3b70e80 100644 --- a/1.8.0/mcp-client.html +++ b/1.8.0/mcp-client.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/mcp-component-astra.html b/1.8.0/mcp-component-astra.html index 642aa86aac..f72e247637 100644 --- a/1.8.0/mcp-component-astra.html +++ b/1.8.0/mcp-component-astra.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/mcp-server.html b/1.8.0/mcp-server.html index d69ef03dff..2175fbb664 100644 --- a/1.8.0/mcp-server.html +++ b/1.8.0/mcp-server.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/mcp-tools.html b/1.8.0/mcp-tools.html index d96e896757..82e9acc864 100644 --- a/1.8.0/mcp-tools.html +++ b/1.8.0/mcp-tools.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/mcp-tutorial.html b/1.8.0/mcp-tutorial.html index 5b06398e33..5da8dab907 100644 --- a/1.8.0/mcp-tutorial.html +++ b/1.8.0/mcp-tutorial.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/memory.html b/1.8.0/memory.html index bbf13c6528..720b1c3571 100644 --- a/1.8.0/memory.html +++ b/1.8.0/memory.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/message-history.html b/1.8.0/message-history.html index 171a84c8b7..214aec0ca1 100644 --- a/1.8.0/message-history.html +++ b/1.8.0/message-history.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/mock-data.html b/1.8.0/mock-data.html index 8f76b5c2a3..44048e7031 100644 --- a/1.8.0/mock-data.html +++ b/1.8.0/mock-data.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/notify-and-listen.html b/1.8.0/notify-and-listen.html index 0ef8ff587f..fa4b68f512 100644 --- a/1.8.0/notify-and-listen.html +++ b/1.8.0/notify-and-listen.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/parser.html b/1.8.0/parser.html index 34058bf449..c70f97fdfa 100644 --- a/1.8.0/parser.html +++ b/1.8.0/parser.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/python-interpreter.html b/1.8.0/python-interpreter.html index 1867eef8d2..3cbda5fed4 100644 --- a/1.8.0/python-interpreter.html +++ b/1.8.0/python-interpreter.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/read-file.html b/1.8.0/read-file.html index 0c260e8085..27970a01cd 100644 --- a/1.8.0/read-file.html +++ b/1.8.0/read-file.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/release-notes.html b/1.8.0/release-notes.html index 32b79d9739..ff45f41b8d 100644 --- a/1.8.0/release-notes.html +++ b/1.8.0/release-notes.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/run-flow.html b/1.8.0/run-flow.html index 2e0d741861..1a4eae2c87 100644 --- a/1.8.0/run-flow.html +++ b/1.8.0/run-flow.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/security.html b/1.8.0/security.html index 1412b723c2..8b08da4862 100644 --- a/1.8.0/security.html +++ b/1.8.0/security.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/session-id.html b/1.8.0/session-id.html index 789254b26a..5e8b1353c7 100644 --- a/1.8.0/session-id.html +++ b/1.8.0/session-id.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/smart-router.html b/1.8.0/smart-router.html index 550d6aff95..d06e5781ea 100644 --- a/1.8.0/smart-router.html +++ b/1.8.0/smart-router.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/smart-transform.html b/1.8.0/smart-transform.html index 1775e4d13a..33af6c916f 100644 --- a/1.8.0/smart-transform.html +++ b/1.8.0/smart-transform.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/split-text.html b/1.8.0/split-text.html index 0d8e11bf0b..4ccb05039e 100644 --- a/1.8.0/split-text.html +++ b/1.8.0/split-text.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/sql-database.html b/1.8.0/sql-database.html index 9a1a740274..92a4605eb1 100644 --- a/1.8.0/sql-database.html +++ b/1.8.0/sql-database.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/structured-output.html b/1.8.0/structured-output.html index e2bf3c0a76..3e9956a5e6 100644 --- a/1.8.0/structured-output.html +++ b/1.8.0/structured-output.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/text-input-and-output.html b/1.8.0/text-input-and-output.html index 30f16e4fd0..a1ea49c3bb 100644 --- a/1.8.0/text-input-and-output.html +++ b/1.8.0/text-input-and-output.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/traces.html b/1.8.0/traces.html index e9208c9e4d..20f2343ef6 100644 --- a/1.8.0/traces.html +++ b/1.8.0/traces.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/troubleshoot.html b/1.8.0/troubleshoot.html index 87572c9c9e..fbbeac0dde 100644 --- a/1.8.0/troubleshoot.html +++ b/1.8.0/troubleshoot.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/type-convert.html b/1.8.0/type-convert.html index 9e90260710..1d8673bbd8 100644 --- a/1.8.0/type-convert.html +++ b/1.8.0/type-convert.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/typescript-client.html b/1.8.0/typescript-client.html index dbcb85b74f..911799a685 100644 --- a/1.8.0/typescript-client.html +++ b/1.8.0/typescript-client.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/url.html b/1.8.0/url.html index e52660560a..64b8af6dfd 100644 --- a/1.8.0/url.html +++ b/1.8.0/url.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/web-search.html b/1.8.0/web-search.html index 99296047fb..05d21418ad 100644 --- a/1.8.0/web-search.html +++ b/1.8.0/web-search.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/webhook.html b/1.8.0/webhook.html index f571f0dc0d..bdadc0b2bd 100644 --- a/1.8.0/webhook.html +++ b/1.8.0/webhook.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/workflow-api.html b/1.8.0/workflow-api.html index d3c2c0b55f..36e033022f 100644 --- a/1.8.0/workflow-api.html +++ b/1.8.0/workflow-api.html @@ -25,7 +25,7 @@ - + diff --git a/1.8.0/write-file.html b/1.8.0/write-file.html index 86248bc86c..0097f39c79 100644 --- a/1.8.0/write-file.html +++ b/1.8.0/write-file.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0.html b/1.9.0.html index 154b52515d..091c7b4ab7 100644 --- a/1.9.0.html +++ b/1.9.0.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/API-Reference.html b/1.9.0/API-Reference.html index 3dbc842d6f..dc12a552c3 100644 --- a/1.9.0/API-Reference.html +++ b/1.9.0/API-Reference.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/agent-tutorial.html b/1.9.0/agent-tutorial.html index c84a38c1d6..ccd1f032ec 100644 --- a/1.9.0/agent-tutorial.html +++ b/1.9.0/agent-tutorial.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/agents-tools.html b/1.9.0/agents-tools.html index 2385e65d8b..ad85fdf7db 100644 --- a/1.9.0/agents-tools.html +++ b/1.9.0/agents-tools.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/agents.html b/1.9.0/agents.html index ba21062868..d8c292db82 100644 --- a/1.9.0/agents.html +++ b/1.9.0/agents.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/api-build.html b/1.9.0/api-build.html index 4301dcf384..19e8148de2 100644 --- a/1.9.0/api-build.html +++ b/1.9.0/api-build.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/api-files.html b/1.9.0/api-files.html index 9f71fdb3e6..f2b617eec2 100644 --- a/1.9.0/api-files.html +++ b/1.9.0/api-files.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/api-flows-run.html b/1.9.0/api-flows-run.html index 9b08a981c9..b3c93fb50f 100644 --- a/1.9.0/api-flows-run.html +++ b/1.9.0/api-flows-run.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/api-flows.html b/1.9.0/api-flows.html index f6c833ed3e..461262fbb9 100644 --- a/1.9.0/api-flows.html +++ b/1.9.0/api-flows.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/api-keys-and-authentication.html b/1.9.0/api-keys-and-authentication.html index 7af6687e43..85b556aa62 100644 --- a/1.9.0/api-keys-and-authentication.html +++ b/1.9.0/api-keys-and-authentication.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/api-logs.html b/1.9.0/api-logs.html index 0b8745040c..7badcd04da 100644 --- a/1.9.0/api-logs.html +++ b/1.9.0/api-logs.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/api-monitor.html b/1.9.0/api-monitor.html index a4b334db30..9d5c950da1 100644 --- a/1.9.0/api-monitor.html +++ b/1.9.0/api-monitor.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/api-openai-responses.html b/1.9.0/api-openai-responses.html index e66c3c9bd8..06333cbe5e 100644 --- a/1.9.0/api-openai-responses.html +++ b/1.9.0/api-openai-responses.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/api-projects.html b/1.9.0/api-projects.html index 4d2e1ac8c9..e56527c3f3 100644 --- a/1.9.0/api-projects.html +++ b/1.9.0/api-projects.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/api-reference-api-examples.html b/1.9.0/api-reference-api-examples.html index 54831e017f..62dffc4a5e 100644 --- a/1.9.0/api-reference-api-examples.html +++ b/1.9.0/api-reference-api-examples.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/api-request.html b/1.9.0/api-request.html index dfaec6de4e..5456c37406 100644 --- a/1.9.0/api-request.html +++ b/1.9.0/api-request.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/api-users.html b/1.9.0/api-users.html index 29a7d68a07..da5efad1d9 100644 --- a/1.9.0/api-users.html +++ b/1.9.0/api-users.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/batch-run.html b/1.9.0/batch-run.html index 03d695c8d8..9720d7c894 100644 --- a/1.9.0/batch-run.html +++ b/1.9.0/batch-run.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-agentics.html b/1.9.0/bundles-agentics.html index 8e0f4b6a94..77ba6e2b1d 100644 --- a/1.9.0/bundles-agentics.html +++ b/1.9.0/bundles-agentics.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-aiml.html b/1.9.0/bundles-aiml.html index 1c34ecb3a6..eaed657ddf 100644 --- a/1.9.0/bundles-aiml.html +++ b/1.9.0/bundles-aiml.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-altk.html b/1.9.0/bundles-altk.html index 49039fbc5a..5eb92a3449 100644 --- a/1.9.0/bundles-altk.html +++ b/1.9.0/bundles-altk.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-amazon.html b/1.9.0/bundles-amazon.html index 8e7033ef58..6c588240ac 100644 --- a/1.9.0/bundles-amazon.html +++ b/1.9.0/bundles-amazon.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-anthropic.html b/1.9.0/bundles-anthropic.html index a99905ed21..b0d95528ae 100644 --- a/1.9.0/bundles-anthropic.html +++ b/1.9.0/bundles-anthropic.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-apify.html b/1.9.0/bundles-apify.html index 71d3b22bc9..8960d182fc 100644 --- a/1.9.0/bundles-apify.html +++ b/1.9.0/bundles-apify.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-arxiv.html b/1.9.0/bundles-arxiv.html index 0f7931f03a..e37b1cbb9f 100644 --- a/1.9.0/bundles-arxiv.html +++ b/1.9.0/bundles-arxiv.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-assemblyai.html b/1.9.0/bundles-assemblyai.html index 49b527ed1e..e65636a6f2 100644 --- a/1.9.0/bundles-assemblyai.html +++ b/1.9.0/bundles-assemblyai.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-azure.html b/1.9.0/bundles-azure.html index 3e44e5858c..72154f67d8 100644 --- a/1.9.0/bundles-azure.html +++ b/1.9.0/bundles-azure.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-baidu.html b/1.9.0/bundles-baidu.html index a5af4a0cb4..10b26621d6 100644 --- a/1.9.0/bundles-baidu.html +++ b/1.9.0/bundles-baidu.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-bing.html b/1.9.0/bundles-bing.html index 470c8b089c..0259c17730 100644 --- a/1.9.0/bundles-bing.html +++ b/1.9.0/bundles-bing.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-cassandra.html b/1.9.0/bundles-cassandra.html index 0ed5d69426..b884a36bba 100644 --- a/1.9.0/bundles-cassandra.html +++ b/1.9.0/bundles-cassandra.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-chroma.html b/1.9.0/bundles-chroma.html index e8c1c454f3..3e5444f056 100644 --- a/1.9.0/bundles-chroma.html +++ b/1.9.0/bundles-chroma.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-cleanlab.html b/1.9.0/bundles-cleanlab.html index 8f033946d7..133d58af7f 100644 --- a/1.9.0/bundles-cleanlab.html +++ b/1.9.0/bundles-cleanlab.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-clickhouse.html b/1.9.0/bundles-clickhouse.html index 21f994967e..88bb72aea4 100644 --- a/1.9.0/bundles-clickhouse.html +++ b/1.9.0/bundles-clickhouse.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-cloudflare.html b/1.9.0/bundles-cloudflare.html index c5719618a2..fe7afd66ac 100644 --- a/1.9.0/bundles-cloudflare.html +++ b/1.9.0/bundles-cloudflare.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-cohere.html b/1.9.0/bundles-cohere.html index b52b56fecb..d183d56c29 100644 --- a/1.9.0/bundles-cohere.html +++ b/1.9.0/bundles-cohere.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-cometapi.html b/1.9.0/bundles-cometapi.html index 5c86bc49b2..3a08f23693 100644 --- a/1.9.0/bundles-cometapi.html +++ b/1.9.0/bundles-cometapi.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-composio.html b/1.9.0/bundles-composio.html index 6ac0c912ba..381a3a61b5 100644 --- a/1.9.0/bundles-composio.html +++ b/1.9.0/bundles-composio.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-couchbase.html b/1.9.0/bundles-couchbase.html index 65daa6828c..213b185005 100644 --- a/1.9.0/bundles-couchbase.html +++ b/1.9.0/bundles-couchbase.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-cuga.html b/1.9.0/bundles-cuga.html index 1e2e493539..f12c249fca 100644 --- a/1.9.0/bundles-cuga.html +++ b/1.9.0/bundles-cuga.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-datastax.html b/1.9.0/bundles-datastax.html index 3c3905c398..b0e98b30a2 100644 --- a/1.9.0/bundles-datastax.html +++ b/1.9.0/bundles-datastax.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-deepseek.html b/1.9.0/bundles-deepseek.html index ac4d9105e3..e87e36dab0 100644 --- a/1.9.0/bundles-deepseek.html +++ b/1.9.0/bundles-deepseek.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-docling.html b/1.9.0/bundles-docling.html index 0bd60063fa..0c9316abbd 100644 --- a/1.9.0/bundles-docling.html +++ b/1.9.0/bundles-docling.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-duckduckgo.html b/1.9.0/bundles-duckduckgo.html index d314820cba..f94b083f33 100644 --- a/1.9.0/bundles-duckduckgo.html +++ b/1.9.0/bundles-duckduckgo.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-elastic.html b/1.9.0/bundles-elastic.html index ca6c6cdbee..50506a5a76 100644 --- a/1.9.0/bundles-elastic.html +++ b/1.9.0/bundles-elastic.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-exa.html b/1.9.0/bundles-exa.html index 4dc24b6a0e..065f64583a 100644 --- a/1.9.0/bundles-exa.html +++ b/1.9.0/bundles-exa.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-faiss.html b/1.9.0/bundles-faiss.html index d89cb8b4f8..83786113d9 100644 --- a/1.9.0/bundles-faiss.html +++ b/1.9.0/bundles-faiss.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-glean.html b/1.9.0/bundles-glean.html index 9bf230aab1..f69e6c1641 100644 --- a/1.9.0/bundles-glean.html +++ b/1.9.0/bundles-glean.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-google.html b/1.9.0/bundles-google.html index b2c91294ad..085a74bb50 100644 --- a/1.9.0/bundles-google.html +++ b/1.9.0/bundles-google.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-groq.html b/1.9.0/bundles-groq.html index e27e1f9b1c..8c26725e70 100644 --- a/1.9.0/bundles-groq.html +++ b/1.9.0/bundles-groq.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-huggingface.html b/1.9.0/bundles-huggingface.html index 20b2318802..6f16110351 100644 --- a/1.9.0/bundles-huggingface.html +++ b/1.9.0/bundles-huggingface.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-ibm.html b/1.9.0/bundles-ibm.html index 9bbab86263..75c33610b2 100644 --- a/1.9.0/bundles-ibm.html +++ b/1.9.0/bundles-ibm.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-icosacomputing.html b/1.9.0/bundles-icosacomputing.html index fc04a046a4..70a9de9ec2 100644 --- a/1.9.0/bundles-icosacomputing.html +++ b/1.9.0/bundles-icosacomputing.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-langchain.html b/1.9.0/bundles-langchain.html index 189be33111..8a0487d2c6 100644 --- a/1.9.0/bundles-langchain.html +++ b/1.9.0/bundles-langchain.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-lite-llm.html b/1.9.0/bundles-lite-llm.html index b0b8d1171c..700895f979 100644 --- a/1.9.0/bundles-lite-llm.html +++ b/1.9.0/bundles-lite-llm.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-lmstudio.html b/1.9.0/bundles-lmstudio.html index bc0f1e93ac..70d0780a18 100644 --- a/1.9.0/bundles-lmstudio.html +++ b/1.9.0/bundles-lmstudio.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-maritalk.html b/1.9.0/bundles-maritalk.html index 33ca4b8527..cf139c4f3f 100644 --- a/1.9.0/bundles-maritalk.html +++ b/1.9.0/bundles-maritalk.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-mem0.html b/1.9.0/bundles-mem0.html index c6a07675bb..e0eb610c84 100644 --- a/1.9.0/bundles-mem0.html +++ b/1.9.0/bundles-mem0.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-milvus.html b/1.9.0/bundles-milvus.html index 1046a307b8..43ed0246fd 100644 --- a/1.9.0/bundles-milvus.html +++ b/1.9.0/bundles-milvus.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-mistralai.html b/1.9.0/bundles-mistralai.html index 0e859200e9..5acc3632f1 100644 --- a/1.9.0/bundles-mistralai.html +++ b/1.9.0/bundles-mistralai.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-mongodb.html b/1.9.0/bundles-mongodb.html index 23d964d6cf..77f37426ec 100644 --- a/1.9.0/bundles-mongodb.html +++ b/1.9.0/bundles-mongodb.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-notion.html b/1.9.0/bundles-notion.html index 126ea63c51..1d198e750a 100644 --- a/1.9.0/bundles-notion.html +++ b/1.9.0/bundles-notion.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-novita.html b/1.9.0/bundles-novita.html index dcb6dd0d49..e08a1cd866 100644 --- a/1.9.0/bundles-novita.html +++ b/1.9.0/bundles-novita.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-nvidia.html b/1.9.0/bundles-nvidia.html index 5a164a3c6f..f08a7643ec 100644 --- a/1.9.0/bundles-nvidia.html +++ b/1.9.0/bundles-nvidia.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-ollama.html b/1.9.0/bundles-ollama.html index ae00dc5664..1eccfd2eac 100644 --- a/1.9.0/bundles-ollama.html +++ b/1.9.0/bundles-ollama.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-openai.html b/1.9.0/bundles-openai.html index bce175f9af..8f9b3f9663 100644 --- a/1.9.0/bundles-openai.html +++ b/1.9.0/bundles-openai.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-openrouter.html b/1.9.0/bundles-openrouter.html index 5cc8aeccd9..76cfa34f55 100644 --- a/1.9.0/bundles-openrouter.html +++ b/1.9.0/bundles-openrouter.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-perplexity.html b/1.9.0/bundles-perplexity.html index 273825f55c..878545bcfc 100644 --- a/1.9.0/bundles-perplexity.html +++ b/1.9.0/bundles-perplexity.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-pgvector.html b/1.9.0/bundles-pgvector.html index 0a17120e16..5052af7a4f 100644 --- a/1.9.0/bundles-pgvector.html +++ b/1.9.0/bundles-pgvector.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-pinecone.html b/1.9.0/bundles-pinecone.html index f0757fe830..cd3d58e6fd 100644 --- a/1.9.0/bundles-pinecone.html +++ b/1.9.0/bundles-pinecone.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-qdrant.html b/1.9.0/bundles-qdrant.html index fcf3c4ae0d..69acf43f35 100644 --- a/1.9.0/bundles-qdrant.html +++ b/1.9.0/bundles-qdrant.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-redis.html b/1.9.0/bundles-redis.html index 20ebfd3e5a..894ef052b1 100644 --- a/1.9.0/bundles-redis.html +++ b/1.9.0/bundles-redis.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-sambanova.html b/1.9.0/bundles-sambanova.html index c5dd935c6b..bdf3c5a2f5 100644 --- a/1.9.0/bundles-sambanova.html +++ b/1.9.0/bundles-sambanova.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-searchapi.html b/1.9.0/bundles-searchapi.html index f079a264de..642326b749 100644 --- a/1.9.0/bundles-searchapi.html +++ b/1.9.0/bundles-searchapi.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-serper.html b/1.9.0/bundles-serper.html index c099e9ec7a..d1f91d6aa3 100644 --- a/1.9.0/bundles-serper.html +++ b/1.9.0/bundles-serper.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-supabase.html b/1.9.0/bundles-supabase.html index bf52a5cc7b..f35cb56022 100644 --- a/1.9.0/bundles-supabase.html +++ b/1.9.0/bundles-supabase.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-upstash.html b/1.9.0/bundles-upstash.html index 73cf42e549..543c0d1aa2 100644 --- a/1.9.0/bundles-upstash.html +++ b/1.9.0/bundles-upstash.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-vectara.html b/1.9.0/bundles-vectara.html index b648762c5d..4fc628f048 100644 --- a/1.9.0/bundles-vectara.html +++ b/1.9.0/bundles-vectara.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-vertexai.html b/1.9.0/bundles-vertexai.html index 4d7a1c9be1..f724b7f8fa 100644 --- a/1.9.0/bundles-vertexai.html +++ b/1.9.0/bundles-vertexai.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-vllm.html b/1.9.0/bundles-vllm.html index 225475b79c..8cb22110c5 100644 --- a/1.9.0/bundles-vllm.html +++ b/1.9.0/bundles-vllm.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-weaviate.html b/1.9.0/bundles-weaviate.html index 0994edc473..8c54a0e82c 100644 --- a/1.9.0/bundles-weaviate.html +++ b/1.9.0/bundles-weaviate.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-wikipedia.html b/1.9.0/bundles-wikipedia.html index 8763faf6c5..14b2bf0b64 100644 --- a/1.9.0/bundles-wikipedia.html +++ b/1.9.0/bundles-wikipedia.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/bundles-xai.html b/1.9.0/bundles-xai.html index 8eae1b5d22..9d4a82b7e2 100644 --- a/1.9.0/bundles-xai.html +++ b/1.9.0/bundles-xai.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/calculator.html b/1.9.0/calculator.html index d49bf508ee..f9ce51dafc 100644 --- a/1.9.0/calculator.html +++ b/1.9.0/calculator.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/chat-input-and-output.html b/1.9.0/chat-input-and-output.html index 661b944a84..510b074927 100644 --- a/1.9.0/chat-input-and-output.html +++ b/1.9.0/chat-input-and-output.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/chat-with-files.html b/1.9.0/chat-with-files.html index 90d4173853..4bb8a56ae8 100644 --- a/1.9.0/chat-with-files.html +++ b/1.9.0/chat-with-files.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/chat-with-rag.html b/1.9.0/chat-with-rag.html index 19d20f6b1e..6975ecae86 100644 --- a/1.9.0/chat-with-rag.html +++ b/1.9.0/chat-with-rag.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/component-webhook.html b/1.9.0/component-webhook.html index 173fb7ad85..fa69113e96 100644 --- a/1.9.0/component-webhook.html +++ b/1.9.0/component-webhook.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/components-agents.html b/1.9.0/components-agents.html index 7ac0a6bcc0..b84b650c06 100644 --- a/1.9.0/components-agents.html +++ b/1.9.0/components-agents.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/components-bundle-components.html b/1.9.0/components-bundle-components.html index d67074214d..aa0b80626a 100644 --- a/1.9.0/components-bundle-components.html +++ b/1.9.0/components-bundle-components.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/components-custom-components.html b/1.9.0/components-custom-components.html index 76c9cabc8a..e857508376 100644 --- a/1.9.0/components-custom-components.html +++ b/1.9.0/components-custom-components.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/components-embedding-models.html b/1.9.0/components-embedding-models.html index 8fedb700c6..ee818141ea 100644 --- a/1.9.0/components-embedding-models.html +++ b/1.9.0/components-embedding-models.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/components-models.html b/1.9.0/components-models.html index b3073cb580..833a3b5e9f 100644 --- a/1.9.0/components-models.html +++ b/1.9.0/components-models.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/components-prompts.html b/1.9.0/components-prompts.html index 7c36b598ce..9cc983c8db 100644 --- a/1.9.0/components-prompts.html +++ b/1.9.0/components-prompts.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/concepts-components.html b/1.9.0/concepts-components.html index cd6071305c..8bf0da86bf 100644 --- a/1.9.0/concepts-components.html +++ b/1.9.0/concepts-components.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/concepts-file-management.html b/1.9.0/concepts-file-management.html index 0880925810..295b5f76e1 100644 --- a/1.9.0/concepts-file-management.html +++ b/1.9.0/concepts-file-management.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/concepts-flows-import.html b/1.9.0/concepts-flows-import.html index 97b4daaf18..cfca4f746a 100644 --- a/1.9.0/concepts-flows-import.html +++ b/1.9.0/concepts-flows-import.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/concepts-flows.html b/1.9.0/concepts-flows.html index c6d97e2523..b0900b909f 100644 --- a/1.9.0/concepts-flows.html +++ b/1.9.0/concepts-flows.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/concepts-overview.html b/1.9.0/concepts-overview.html index ccc0303834..140f171b27 100644 --- a/1.9.0/concepts-overview.html +++ b/1.9.0/concepts-overview.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/concepts-playground.html b/1.9.0/concepts-playground.html index 63ac878b72..40c0cfe641 100644 --- a/1.9.0/concepts-playground.html +++ b/1.9.0/concepts-playground.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/concepts-publish.html b/1.9.0/concepts-publish.html index 070abe191c..5e87a76077 100644 --- a/1.9.0/concepts-publish.html +++ b/1.9.0/concepts-publish.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/concepts-voice-mode.html b/1.9.0/concepts-voice-mode.html index 5bb7cd16a6..fa964e9452 100644 --- a/1.9.0/concepts-voice-mode.html +++ b/1.9.0/concepts-voice-mode.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/configuration-cli.html b/1.9.0/configuration-cli.html index c1ea528a63..300782476b 100644 --- a/1.9.0/configuration-cli.html +++ b/1.9.0/configuration-cli.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/configuration-custom-database.html b/1.9.0/configuration-custom-database.html index 09c57675b3..6793c31384 100644 --- a/1.9.0/configuration-custom-database.html +++ b/1.9.0/configuration-custom-database.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/configuration-global-variables.html b/1.9.0/configuration-global-variables.html index 4370469aab..4e59a7d0d8 100644 --- a/1.9.0/configuration-global-variables.html +++ b/1.9.0/configuration-global-variables.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/contributing-bundles.html b/1.9.0/contributing-bundles.html index 9ee922a445..0902b8bfab 100644 --- a/1.9.0/contributing-bundles.html +++ b/1.9.0/contributing-bundles.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/contributing-community.html b/1.9.0/contributing-community.html index 0e3b10fe27..802fe51e78 100644 --- a/1.9.0/contributing-community.html +++ b/1.9.0/contributing-community.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/contributing-component-tests.html b/1.9.0/contributing-component-tests.html index 0e89475c32..8bf1639b23 100644 --- a/1.9.0/contributing-component-tests.html +++ b/1.9.0/contributing-component-tests.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/contributing-components.html b/1.9.0/contributing-components.html index 8b5aa7955d..b7dff54aa1 100644 --- a/1.9.0/contributing-components.html +++ b/1.9.0/contributing-components.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/contributing-github-issues.html b/1.9.0/contributing-github-issues.html index 1f9b49e234..4968148c3a 100644 --- a/1.9.0/contributing-github-issues.html +++ b/1.9.0/contributing-github-issues.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/contributing-how-to-contribute.html b/1.9.0/contributing-how-to-contribute.html index 0a48f19cbd..ebb21f83b8 100644 --- a/1.9.0/contributing-how-to-contribute.html +++ b/1.9.0/contributing-how-to-contribute.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/contributing-telemetry.html b/1.9.0/contributing-telemetry.html index ee9cd378f3..951a863df9 100644 --- a/1.9.0/contributing-telemetry.html +++ b/1.9.0/contributing-telemetry.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/contributing-templates.html b/1.9.0/contributing-templates.html index f260af9821..bdfaf13b65 100644 --- a/1.9.0/contributing-templates.html +++ b/1.9.0/contributing-templates.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/current-date.html b/1.9.0/current-date.html index 25d4103454..d0a1957ff6 100644 --- a/1.9.0/current-date.html +++ b/1.9.0/current-date.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/data-operations.html b/1.9.0/data-operations.html index c0193e0b43..0f26fc1688 100644 --- a/1.9.0/data-operations.html +++ b/1.9.0/data-operations.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/data-types.html b/1.9.0/data-types.html index 40eeea869a..e9f7ec0c83 100644 --- a/1.9.0/data-types.html +++ b/1.9.0/data-types.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/dataframe-operations.html b/1.9.0/dataframe-operations.html index 249bbd8d37..bf30b98cd8 100644 --- a/1.9.0/dataframe-operations.html +++ b/1.9.0/dataframe-operations.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/deployment-architecture.html b/1.9.0/deployment-architecture.html index c0317751b1..58b3710b2c 100644 --- a/1.9.0/deployment-architecture.html +++ b/1.9.0/deployment-architecture.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/deployment-block-custom-components.html b/1.9.0/deployment-block-custom-components.html index 2728c3ee7d..58e731c330 100644 --- a/1.9.0/deployment-block-custom-components.html +++ b/1.9.0/deployment-block-custom-components.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/deployment-caddyfile.html b/1.9.0/deployment-caddyfile.html index e04b6febb6..dca983f53f 100644 --- a/1.9.0/deployment-caddyfile.html +++ b/1.9.0/deployment-caddyfile.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/deployment-docker.html b/1.9.0/deployment-docker.html index ede64068ad..238e4940a6 100644 --- a/1.9.0/deployment-docker.html +++ b/1.9.0/deployment-docker.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/deployment-gcp.html b/1.9.0/deployment-gcp.html index 4812a6c391..ee72fb0c0e 100644 --- a/1.9.0/deployment-gcp.html +++ b/1.9.0/deployment-gcp.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/deployment-hugging-face-spaces.html b/1.9.0/deployment-hugging-face-spaces.html index 298b6e63a5..bcdc82b226 100644 --- a/1.9.0/deployment-hugging-face-spaces.html +++ b/1.9.0/deployment-hugging-face-spaces.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/deployment-kubernetes-dev.html b/1.9.0/deployment-kubernetes-dev.html index 7fdf05640f..ce4e2b2ff6 100644 --- a/1.9.0/deployment-kubernetes-dev.html +++ b/1.9.0/deployment-kubernetes-dev.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/deployment-kubernetes-prod.html b/1.9.0/deployment-kubernetes-prod.html index 81bc865c8d..12c1199372 100644 --- a/1.9.0/deployment-kubernetes-prod.html +++ b/1.9.0/deployment-kubernetes-prod.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/deployment-nginx-ssl.html b/1.9.0/deployment-nginx-ssl.html index 66e2abf94c..b46294a45f 100644 --- a/1.9.0/deployment-nginx-ssl.html +++ b/1.9.0/deployment-nginx-ssl.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/deployment-overview.html b/1.9.0/deployment-overview.html index 6838c0b44a..c6bb90fc8b 100644 --- a/1.9.0/deployment-overview.html +++ b/1.9.0/deployment-overview.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/deployment-prod-best-practices.html b/1.9.0/deployment-prod-best-practices.html index f7a7fe889c..a44c3dc2d5 100644 --- a/1.9.0/deployment-prod-best-practices.html +++ b/1.9.0/deployment-prod-best-practices.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/deployment-public-server.html b/1.9.0/deployment-public-server.html index 0f2405ebbe..0a11ab5bff 100644 --- a/1.9.0/deployment-public-server.html +++ b/1.9.0/deployment-public-server.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/deployment-railway.html b/1.9.0/deployment-railway.html index 6affc1a36f..f96b32a569 100644 --- a/1.9.0/deployment-railway.html +++ b/1.9.0/deployment-railway.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/deployment-render.html b/1.9.0/deployment-render.html index 611d1f3fec..913149f166 100644 --- a/1.9.0/deployment-render.html +++ b/1.9.0/deployment-render.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/deployment-wxo.html b/1.9.0/deployment-wxo.html index df0da70db9..ec0d01c58f 100644 --- a/1.9.0/deployment-wxo.html +++ b/1.9.0/deployment-wxo.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/develop-application.html b/1.9.0/develop-application.html index b6f832e9d3..903ad4f6d4 100644 --- a/1.9.0/develop-application.html +++ b/1.9.0/develop-application.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/directory.html b/1.9.0/directory.html index 6fa7b3ff82..ba46a1c885 100644 --- a/1.9.0/directory.html +++ b/1.9.0/directory.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/dynamic-create-data.html b/1.9.0/dynamic-create-data.html index a9dfb168c9..72222f9201 100644 --- a/1.9.0/dynamic-create-data.html +++ b/1.9.0/dynamic-create-data.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/enterprise-database-guide.html b/1.9.0/enterprise-database-guide.html index b9dea2294a..1a92fa2b0c 100644 --- a/1.9.0/enterprise-database-guide.html +++ b/1.9.0/enterprise-database-guide.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/environment-variables.html b/1.9.0/environment-variables.html index b4dd16777a..02aab62742 100644 --- a/1.9.0/environment-variables.html +++ b/1.9.0/environment-variables.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/flow-devops-sdk.html b/1.9.0/flow-devops-sdk.html index f7d8d5d9ac..607dc04c45 100644 --- a/1.9.0/flow-devops-sdk.html +++ b/1.9.0/flow-devops-sdk.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/get-started-installation.html b/1.9.0/get-started-installation.html index 46c849ff8b..57edc94d29 100644 --- a/1.9.0/get-started-installation.html +++ b/1.9.0/get-started-installation.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/get-started-quickstart.html b/1.9.0/get-started-quickstart.html index d9b9129974..dfd8ed83b8 100644 --- a/1.9.0/get-started-quickstart.html +++ b/1.9.0/get-started-quickstart.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/guardrails.html b/1.9.0/guardrails.html index 365f1a8cd5..4f682ba814 100644 --- a/1.9.0/guardrails.html +++ b/1.9.0/guardrails.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/if-else.html b/1.9.0/if-else.html index 9a79442949..564869bb7f 100644 --- a/1.9.0/if-else.html +++ b/1.9.0/if-else.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/install-custom-dependencies.html b/1.9.0/install-custom-dependencies.html index 88188d25e3..824d8b0598 100644 --- a/1.9.0/install-custom-dependencies.html +++ b/1.9.0/install-custom-dependencies.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/integrations-arize.html b/1.9.0/integrations-arize.html index 0781cd8956..b660f18eb7 100644 --- a/1.9.0/integrations-arize.html +++ b/1.9.0/integrations-arize.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/integrations-instana-traceloop.html b/1.9.0/integrations-instana-traceloop.html index 420c774c74..3b0ba14fbb 100644 --- a/1.9.0/integrations-instana-traceloop.html +++ b/1.9.0/integrations-instana-traceloop.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/integrations-langfuse.html b/1.9.0/integrations-langfuse.html index 36c3cee16b..218a96230f 100644 --- a/1.9.0/integrations-langfuse.html +++ b/1.9.0/integrations-langfuse.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/integrations-langsmith.html b/1.9.0/integrations-langsmith.html index 0a09aaf3a6..b61d6879fb 100644 --- a/1.9.0/integrations-langsmith.html +++ b/1.9.0/integrations-langsmith.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/integrations-langwatch.html b/1.9.0/integrations-langwatch.html index e05cf0b947..0952d59112 100644 --- a/1.9.0/integrations-langwatch.html +++ b/1.9.0/integrations-langwatch.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/integrations-openlayer.html b/1.9.0/integrations-openlayer.html index 26d85d6847..31fc60b43d 100644 --- a/1.9.0/integrations-openlayer.html +++ b/1.9.0/integrations-openlayer.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/integrations-opik.html b/1.9.0/integrations-opik.html index 4ec7c737d3..468501e19d 100644 --- a/1.9.0/integrations-opik.html +++ b/1.9.0/integrations-opik.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/jwt-authentication.html b/1.9.0/jwt-authentication.html index 9ad4ceb1a4..474c28c7f9 100644 --- a/1.9.0/jwt-authentication.html +++ b/1.9.0/jwt-authentication.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/knowledge-base.html b/1.9.0/knowledge-base.html index 59eb1c60a2..15dfb8db54 100644 --- a/1.9.0/knowledge-base.html +++ b/1.9.0/knowledge-base.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/knowledge.html b/1.9.0/knowledge.html index 2153005aa2..eecf8f4eb7 100644 --- a/1.9.0/knowledge.html +++ b/1.9.0/knowledge.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/langflow-assistant.html b/1.9.0/langflow-assistant.html index e8497a0138..83bb207b3c 100644 --- a/1.9.0/langflow-assistant.html +++ b/1.9.0/langflow-assistant.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/langflow-mcp-client.html b/1.9.0/langflow-mcp-client.html index 4bd50769da..6e3b9fb2f4 100644 --- a/1.9.0/langflow-mcp-client.html +++ b/1.9.0/langflow-mcp-client.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/legacy-core-components.html b/1.9.0/legacy-core-components.html index c97f635229..8f48e218f2 100644 --- a/1.9.0/legacy-core-components.html +++ b/1.9.0/legacy-core-components.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/llm-selector.html b/1.9.0/llm-selector.html index a410ff5700..c7cd9846dd 100644 --- a/1.9.0/llm-selector.html +++ b/1.9.0/llm-selector.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/logging.html b/1.9.0/logging.html index 9d7ac33555..e2ab4c54b1 100644 --- a/1.9.0/logging.html +++ b/1.9.0/logging.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/loop.html b/1.9.0/loop.html index d649685f2c..f286d210a5 100644 --- a/1.9.0/loop.html +++ b/1.9.0/loop.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/luna-for-langflow.html b/1.9.0/luna-for-langflow.html index 0c039b3939..1f70a4f25c 100644 --- a/1.9.0/luna-for-langflow.html +++ b/1.9.0/luna-for-langflow.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/mcp-client.html b/1.9.0/mcp-client.html index 6f4d07b858..766401ea33 100644 --- a/1.9.0/mcp-client.html +++ b/1.9.0/mcp-client.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/mcp-component-astra.html b/1.9.0/mcp-component-astra.html index 0fb35e3dc1..7b93fa615c 100644 --- a/1.9.0/mcp-component-astra.html +++ b/1.9.0/mcp-component-astra.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/mcp-server.html b/1.9.0/mcp-server.html index d71f510654..e6a6c2c8e7 100644 --- a/1.9.0/mcp-server.html +++ b/1.9.0/mcp-server.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/mcp-tools.html b/1.9.0/mcp-tools.html index d5990558ba..ca61e81664 100644 --- a/1.9.0/mcp-tools.html +++ b/1.9.0/mcp-tools.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/mcp-tutorial.html b/1.9.0/mcp-tutorial.html index 06f38a6415..66911aa218 100644 --- a/1.9.0/mcp-tutorial.html +++ b/1.9.0/mcp-tutorial.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/memory.html b/1.9.0/memory.html index b0360a2a12..f65d903037 100644 --- a/1.9.0/memory.html +++ b/1.9.0/memory.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/message-history.html b/1.9.0/message-history.html index 2c89a3b081..64c9dbfa3e 100644 --- a/1.9.0/message-history.html +++ b/1.9.0/message-history.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/mock-data.html b/1.9.0/mock-data.html index 04e4876aeb..3ae8db6e08 100644 --- a/1.9.0/mock-data.html +++ b/1.9.0/mock-data.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/notify-and-listen.html b/1.9.0/notify-and-listen.html index 8efba11069..ecd5b043a3 100644 --- a/1.9.0/notify-and-listen.html +++ b/1.9.0/notify-and-listen.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/parser.html b/1.9.0/parser.html index 66cb32290a..d57d09aa09 100644 --- a/1.9.0/parser.html +++ b/1.9.0/parser.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/policies.html b/1.9.0/policies.html index ee90120ed7..86f8e9efc0 100644 --- a/1.9.0/policies.html +++ b/1.9.0/policies.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/python-interpreter.html b/1.9.0/python-interpreter.html index c59067dcbd..0c134fdd70 100644 --- a/1.9.0/python-interpreter.html +++ b/1.9.0/python-interpreter.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/read-file.html b/1.9.0/read-file.html index 64712de334..7c017eaaae 100644 --- a/1.9.0/read-file.html +++ b/1.9.0/read-file.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/release-notes.html b/1.9.0/release-notes.html index c67d546e9e..523c82a50f 100644 --- a/1.9.0/release-notes.html +++ b/1.9.0/release-notes.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/run-flow.html b/1.9.0/run-flow.html index e00f968e85..1be13b3a8e 100644 --- a/1.9.0/run-flow.html +++ b/1.9.0/run-flow.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/security.html b/1.9.0/security.html index 0a6296dc50..c11a69c8b2 100644 --- a/1.9.0/security.html +++ b/1.9.0/security.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/session-id.html b/1.9.0/session-id.html index b710d78b4e..418b3c560a 100644 --- a/1.9.0/session-id.html +++ b/1.9.0/session-id.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/smart-router.html b/1.9.0/smart-router.html index 5f009df65b..a6ad332a6d 100644 --- a/1.9.0/smart-router.html +++ b/1.9.0/smart-router.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/smart-transform.html b/1.9.0/smart-transform.html index 8c0de89633..f87f1461ac 100644 --- a/1.9.0/smart-transform.html +++ b/1.9.0/smart-transform.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/split-text.html b/1.9.0/split-text.html index c3d24e876d..965c95b841 100644 --- a/1.9.0/split-text.html +++ b/1.9.0/split-text.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/sql-database.html b/1.9.0/sql-database.html index 9be3697063..3018cfc266 100644 --- a/1.9.0/sql-database.html +++ b/1.9.0/sql-database.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/structured-output.html b/1.9.0/structured-output.html index fd06f70d34..6b671ab504 100644 --- a/1.9.0/structured-output.html +++ b/1.9.0/structured-output.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/text-input-and-output.html b/1.9.0/text-input-and-output.html index 01d77d73b9..0cf6faec5a 100644 --- a/1.9.0/text-input-and-output.html +++ b/1.9.0/text-input-and-output.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/text-operations.html b/1.9.0/text-operations.html index cea980eac8..42f3e451ae 100644 --- a/1.9.0/text-operations.html +++ b/1.9.0/text-operations.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/traces.html b/1.9.0/traces.html index 82f7b53749..efc99e9cca 100644 --- a/1.9.0/traces.html +++ b/1.9.0/traces.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/troubleshoot.html b/1.9.0/troubleshoot.html index 8c16b018ec..a944e06d9e 100644 --- a/1.9.0/troubleshoot.html +++ b/1.9.0/troubleshoot.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/type-convert.html b/1.9.0/type-convert.html index 59b20a76ab..4419197f23 100644 --- a/1.9.0/type-convert.html +++ b/1.9.0/type-convert.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/typescript-client.html b/1.9.0/typescript-client.html index 2e6f3b0a35..baf39b703d 100644 --- a/1.9.0/typescript-client.html +++ b/1.9.0/typescript-client.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/url.html b/1.9.0/url.html index 9a6552da43..e0782f9686 100644 --- a/1.9.0/url.html +++ b/1.9.0/url.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/web-search.html b/1.9.0/web-search.html index 897d266c1f..0e66ce4b55 100644 --- a/1.9.0/web-search.html +++ b/1.9.0/web-search.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/webhook.html b/1.9.0/webhook.html index 6cbebc6064..7dac28d439 100644 --- a/1.9.0/webhook.html +++ b/1.9.0/webhook.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/workflow-api.html b/1.9.0/workflow-api.html index 582b3d9b09..610aa0197e 100644 --- a/1.9.0/workflow-api.html +++ b/1.9.0/workflow-api.html @@ -25,7 +25,7 @@ - + diff --git a/1.9.0/write-file.html b/1.9.0/write-file.html index 5ecf2003f2..f9c58924e3 100644 --- a/1.9.0/write-file.html +++ b/1.9.0/write-file.html @@ -25,7 +25,7 @@ - + diff --git a/404.html b/404.html index 83f9f46981..eb581305b6 100644 --- a/404.html +++ b/404.html @@ -25,7 +25,7 @@ - + diff --git a/API-Reference.html b/API-Reference.html index 6f28cc35c4..f1e0535749 100644 --- a/API-Reference.html +++ b/API-Reference.html @@ -25,7 +25,7 @@ - + diff --git a/agent-tutorial.html b/agent-tutorial.html index 9b33d8ef2c..92f4ea715e 100644 --- a/agent-tutorial.html +++ b/agent-tutorial.html @@ -25,7 +25,7 @@ - + diff --git a/agents-tools.html b/agents-tools.html index 8a4edd5bbc..c979cf7355 100644 --- a/agents-tools.html +++ b/agents-tools.html @@ -25,7 +25,7 @@ - + diff --git a/agents.html b/agents.html index 30e194501f..ce8be2234a 100644 --- a/agents.html +++ b/agents.html @@ -25,7 +25,7 @@ - + diff --git a/api-build.html b/api-build.html index 5ef8bca83a..0e9956d62e 100644 --- a/api-build.html +++ b/api-build.html @@ -25,7 +25,7 @@ - + diff --git a/api-files.html b/api-files.html index 9f31ff9c19..c84445ad6e 100644 --- a/api-files.html +++ b/api-files.html @@ -25,7 +25,7 @@ - + diff --git a/api-flows-run.html b/api-flows-run.html index 5d2f37ce2a..edd61f4293 100644 --- a/api-flows-run.html +++ b/api-flows-run.html @@ -25,7 +25,7 @@ - + diff --git a/api-flows.html b/api-flows.html index 5b5cd55bd4..af4276ee66 100644 --- a/api-flows.html +++ b/api-flows.html @@ -25,7 +25,7 @@ - + diff --git a/api-keys-and-authentication.html b/api-keys-and-authentication.html index 3e2ab73e51..a95c6348c6 100644 --- a/api-keys-and-authentication.html +++ b/api-keys-and-authentication.html @@ -25,7 +25,7 @@ - + diff --git a/api-logs.html b/api-logs.html index b5726c9f32..e0e08063dc 100644 --- a/api-logs.html +++ b/api-logs.html @@ -25,7 +25,7 @@ - + diff --git a/api-monitor.html b/api-monitor.html index dd2e34ef0d..8da08a85a2 100644 --- a/api-monitor.html +++ b/api-monitor.html @@ -25,7 +25,7 @@ - + diff --git a/api-openai-responses.html b/api-openai-responses.html index 7890394567..13cb643eed 100644 --- a/api-openai-responses.html +++ b/api-openai-responses.html @@ -25,7 +25,7 @@ - + diff --git a/api-projects.html b/api-projects.html index 8284858d6e..29eae20f9d 100644 --- a/api-projects.html +++ b/api-projects.html @@ -25,7 +25,7 @@ - + diff --git a/api-reference-api-examples.html b/api-reference-api-examples.html index d73601dd18..4d664c3580 100644 --- a/api-reference-api-examples.html +++ b/api-reference-api-examples.html @@ -25,7 +25,7 @@ - + diff --git a/api-request.html b/api-request.html index 59ff9914af..8bb15993fb 100644 --- a/api-request.html +++ b/api-request.html @@ -25,7 +25,7 @@ - + diff --git a/api-users.html b/api-users.html index 006eda4a33..0a3c1ab57c 100644 --- a/api-users.html +++ b/api-users.html @@ -25,7 +25,7 @@ - + diff --git a/api.html b/api.html index 8e4741f58e..df7e24b4f9 100644 --- a/api.html +++ b/api.html @@ -25,7 +25,7 @@ - + diff --git a/api/openapi.json.html b/api/openapi.json.html index 827337a143..17e1cd7df7 100644 --- a/api/openapi.json.html +++ b/api/openapi.json.html @@ -25,7 +25,7 @@ - + diff --git a/api/workflow.html b/api/workflow.html index 498757cb03..1f5268b74d 100644 --- a/api/workflow.html +++ b/api/workflow.html @@ -25,7 +25,7 @@ - + diff --git a/assets/js/07577e52.afdfb5c9.js b/assets/js/07577e52.afdfb5c9.js new file mode 100644 index 0000000000..127f9f945f --- /dev/null +++ b/assets/js/07577e52.afdfb5c9.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunklangflow_docs=globalThis.webpackChunklangflow_docs||[]).push([[68725],{34469:(e,n,o)=>{o.r(n),o.d(n,{CH:()=>l,assets:()=>c,chCodeConfig:()=>h,contentTitle:()=>a,default:()=>p,frontMatter:()=>d,metadata:()=>t,toc:()=>u});const t=JSON.parse('{"id":"Develop/extensions-overview","title":"Langflow Extensions overview","description":"Langflow ships component bundles that are maintained and released separately from the core Langflow server as Extensions.","source":"@site/docs/Develop/extensions-overview.mdx","sourceDirName":"Develop","slug":"/extensions-overview","permalink":"/next/extensions-overview","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Langflow Extensions overview","slug":"/extensions-overview"},"sidebar":"docs","previous":{"title":"Use the Langflow CLI","permalink":"/next/configuration-cli"},"next":{"title":"Langflow Extension quickstart","permalink":"/next/extensions-quickstart"}}');var i=o(74848),s=o(28453),r=o(24754);o(52307);const d={title:"Langflow Extensions overview",slug:"/extensions-overview"},a=void 0,c={},l={annotations:r.hk,Code:r.Cy},h={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},u=[{value:"Current Extension bundles",id:"current-extension-bundles",level:2},{value:"If a component is missing after an upgrade",id:"if-a-component-is-missing-after-an-upgrade",level:2},{value:"Install a bundle extension",id:"install-a-bundle-extension",level:2},{value:"Build your own extension",id:"build-your-own-extension",level:2},{value:"See also",id:"see-also",level:2}];function x(e){const n={a:"a",code:"code",h2:"h2",li:"li",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return l||f("CH",!1),l.Code||f("CH.Code",!0),(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }'}}),"\n","\n",(0,i.jsxs)(n.p,{children:["Langflow ships component bundles that are maintained and released separately from the core Langflow server as Extensions.\nInstead of every integration being built into ",(0,i.jsx)(n.code,{children:"langflow"}),", each bundle is its own pip-installable package, such as ",(0,i.jsx)(n.code,{children:"lfx-duckduckgo"})," or ",(0,i.jsx)(n.code,{children:"lfx-arxiv"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["When you run ",(0,i.jsx)(n.code,{children:"uv pip install langflow"}),", you install:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"All Langflow core components"}),"\n",(0,i.jsxs)(n.li,{children:["All bundles that ship as dependencies of the ",(0,i.jsx)(n.code,{children:"langflow"})," metapackage"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Some bundles that were previously included in ",(0,i.jsx)(n.code,{children:"langflow"})," are moved into standalone packages.\nThe ",(0,i.jsx)(n.code,{children:"langflow"})," metapackage adds them as regular pip dependencies, so ",(0,i.jsx)(n.code,{children:"pip install langflow"})," continues to include them."]}),"\n",(0,i.jsx)(n.h2,{id:"current-extension-bundles",children:"Current Extension bundles"}),"\n",(0,i.jsxs)(n.p,{children:["The following Extension bundles are included with ",(0,i.jsx)(n.code,{children:"uv pip install langflow"}),":"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Package"}),(0,i.jsx)(n.th,{children:"Bundle"}),(0,i.jsx)(n.th,{children:"Components"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"lfx-arxiv"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.a,{href:"/bundles-arxiv",children:"arXiv"})}),(0,i.jsx)(n.td,{children:"arXiv search"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"lfx-docling"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.a,{href:"/bundles-docling",children:"Docling"})}),(0,i.jsx)(n.td,{children:"Document parsing and chunking"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"lfx-duckduckgo"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.a,{href:"/bundles-duckduckgo",children:"DuckDuckGo"})}),(0,i.jsx)(n.td,{children:"Web search"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"lfx-ibm"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.a,{href:"/bundles-ibm",children:"IBM"})}),(0,i.jsx)(n.td,{children:"IBM watsonx.ai LLM and embeddings, IBM Db2 Vector Store"})]})]})]}),"\n",(0,i.jsxs)(n.p,{children:["The internal identifier for each component changes.\nFor example, a DuckDuckGo component previously referenced as a ",(0,i.jsx)(n.code,{children:"DuckDuckGoSearchComponent"})," class is now ",(0,i.jsx)(n.code,{children:"ext:duckduckgo:DuckDuckGoSearchComponent@official"}),".\nLangflow rewrites these references automatically when you open a saved flow, so in most cases the migration is invisible."]}),"\n",(0,i.jsx)(n.h2,{id:"if-a-component-is-missing-after-an-upgrade",children:"If a component is missing after an upgrade"}),"\n",(0,i.jsxs)(n.p,{children:["If you open a flow and a node shows an error like ",(0,i.jsx)(n.code,{children:"component-not-found"}),", it means the automatic migration couldn't resolve the component reference.\nThis can happen when:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"The bundle the component came from was not installed in the upgraded environment."}),"\n",(0,i.jsxs)(n.li,{children:["The component was referenced by a name that appears in more than one bundle (",(0,i.jsx)(n.code,{children:"component-name-ambiguous"}),")."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"In both cases the error message includes a hint that names the expected canonical ID. For example:"}),"\n",(0,i.jsx)(l.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"component-not-found-with-hint: DuckDuckGoSearchComponent not found.",props:{}}]},{tokens:[{content:"Hint: try ext:duckduckgo:DuckDuckGoSearchComponent@official",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,i.jsxs)(n.p,{children:["Use the bundle name from the hint, such as ",(0,i.jsx)(n.code,{children:"duckduckgo"})," in this example, to find and install the correct extension package, and then reload the flow."]}),"\n",(0,i.jsx)(n.h2,{id:"install-a-bundle-extension",children:"Install a bundle extension"}),"\n",(0,i.jsx)(n.p,{children:"If a bundle you need is not included in your Langflow environment, install it with pip:"}),"\n",(0,i.jsx)(l.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"uv ",props:{style:{color:"#FFA657"}}},{content:"pip install lfx-duckduckgo",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"uv ",props:{style:{color:"#FFA657"}}},{content:"run langflow run",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,i.jsx)(n.p,{children:"Langflow discovers the package at server startup and loads the components into the palette automatically.\nNo additional configuration is required."}),"\n",(0,i.jsx)(n.p,{children:"To see what extensions are currently loaded, run:"}),"\n",(0,i.jsx)(l.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"lfx ",props:{style:{color:"#FFA657"}}},{content:"extension list",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,i.jsx)(n.h2,{id:"build-your-own-extension",children:"Build your own extension"}),"\n",(0,i.jsx)(n.p,{children:"If you have custom components that you want to distribute and version independently of your Langflow install, you can package them as an extension."}),"\n",(0,i.jsxs)(n.p,{children:["For more information, see ",(0,i.jsx)(n.a,{href:"/next/extensions-quickstart",children:"Build your first Langflow Extension"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"see-also",children:"See also"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"./extensions-quickstart",children:"Build your first extension"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"./extensions-manifest",children:"Manifest reference"})}),"\n"]})]})}function p(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(x,{...e})}):x(e)}function f(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}}}]); \ No newline at end of file diff --git a/assets/js/07577e52.ff519825.js b/assets/js/07577e52.ff519825.js deleted file mode 100644 index 36131428bd..0000000000 --- a/assets/js/07577e52.ff519825.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunklangflow_docs=globalThis.webpackChunklangflow_docs||[]).push([[68725],{34469:(e,n,o)=>{o.r(n),o.d(n,{CH:()=>l,assets:()=>a,chCodeConfig:()=>h,contentTitle:()=>c,default:()=>p,frontMatter:()=>d,metadata:()=>t,toc:()=>u});const t=JSON.parse('{"id":"Develop/extensions-overview","title":"Langflow Extensions overview","description":"Langflow ships component bundles that are maintained and released separately from the core Langflow server as Extensions.","source":"@site/docs/Develop/extensions-overview.mdx","sourceDirName":"Develop","slug":"/extensions-overview","permalink":"/next/extensions-overview","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Langflow Extensions overview","slug":"/extensions-overview"},"sidebar":"docs","previous":{"title":"Use the Langflow CLI","permalink":"/next/configuration-cli"},"next":{"title":"Langflow Extension quickstart","permalink":"/next/extensions-quickstart"}}');var i=o(74848),s=o(28453),r=o(24754);o(52307);const d={title:"Langflow Extensions overview",slug:"/extensions-overview"},c=void 0,a={},l={annotations:r.hk,Code:r.Cy},h={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},u=[{value:"Current Extension bundles",id:"current-extension-bundles",level:2},{value:"If a component is missing after an upgrade",id:"if-a-component-is-missing-after-an-upgrade",level:2},{value:"Install a bundle extension",id:"install-a-bundle-extension",level:2},{value:"Build your own extension",id:"build-your-own-extension",level:2}];function x(e){const n={a:"a",code:"code",h2:"h2",li:"li",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return l||g("CH",!1),l.Code||g("CH.Code",!0),(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }'}}),"\n","\n",(0,i.jsxs)(n.p,{children:["Langflow ships component bundles that are maintained and released separately from the core Langflow server as Extensions.\nInstead of every integration being built into ",(0,i.jsx)(n.code,{children:"langflow"}),", each bundle is its own pip-installable package, such as ",(0,i.jsx)(n.code,{children:"lfx-duckduckgo"})," or ",(0,i.jsx)(n.code,{children:"lfx-arxiv"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["When you run ",(0,i.jsx)(n.code,{children:"uv pip install langflow"}),", you install:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"All Langflow core components"}),"\n",(0,i.jsxs)(n.li,{children:["All bundles that ship as dependencies of the ",(0,i.jsx)(n.code,{children:"langflow"})," metapackage"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Some bundles that were previously included in ",(0,i.jsx)(n.code,{children:"langflow"})," are moved into standalone packages.\nThe ",(0,i.jsx)(n.code,{children:"langflow"})," metapackage adds them as regular pip dependencies, so ",(0,i.jsx)(n.code,{children:"pip install langflow"})," continues to include them."]}),"\n",(0,i.jsx)(n.h2,{id:"current-extension-bundles",children:"Current Extension bundles"}),"\n",(0,i.jsxs)(n.p,{children:["The following Extension bundles are included with ",(0,i.jsx)(n.code,{children:"uv pip install langflow"}),":"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Package"}),(0,i.jsx)(n.th,{children:"Bundle"}),(0,i.jsx)(n.th,{children:"Components"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"lfx-arxiv"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.a,{href:"/bundles-arxiv",children:"arXiv"})}),(0,i.jsx)(n.td,{children:"arXiv search"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"lfx-docling"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.a,{href:"/bundles-docling",children:"Docling"})}),(0,i.jsx)(n.td,{children:"Document parsing and chunking"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"lfx-duckduckgo"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.a,{href:"/bundles-duckduckgo",children:"DuckDuckGo"})}),(0,i.jsx)(n.td,{children:"Web search"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"lfx-ibm"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.a,{href:"/bundles-ibm",children:"IBM"})}),(0,i.jsx)(n.td,{children:"IBM watsonx.ai LLM and embeddings, IBM Db2 Vector Store"})]})]})]}),"\n",(0,i.jsxs)(n.p,{children:["The internal identifier for each component changes.\nFor example, a DuckDuckGo component previously referenced as a ",(0,i.jsx)(n.code,{children:"DuckDuckGoSearchComponent"})," class is now ",(0,i.jsx)(n.code,{children:"ext:duckduckgo:DuckDuckGoSearchComponent@official"}),".\nLangflow rewrites these references automatically when you open a saved flow, so in most cases the migration is invisible."]}),"\n",(0,i.jsx)(n.h2,{id:"if-a-component-is-missing-after-an-upgrade",children:"If a component is missing after an upgrade"}),"\n",(0,i.jsxs)(n.p,{children:["If you open a flow and a node shows an error like ",(0,i.jsx)(n.code,{children:"component-not-found"}),", it means the automatic migration couldn't resolve the component reference.\nThis can happen when:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"The bundle the component came from was not installed in the upgraded environment."}),"\n",(0,i.jsxs)(n.li,{children:["The component was referenced by a name that appears in more than one bundle (",(0,i.jsx)(n.code,{children:"component-name-ambiguous"}),")."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"In both cases the error message includes a hint that names the expected canonical ID. For example:"}),"\n",(0,i.jsx)(l.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"component-not-found-with-hint: DuckDuckGoSearchComponent not found.",props:{}}]},{tokens:[{content:"Hint: try ext:duckduckgo:DuckDuckGoSearchComponent@official",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,i.jsxs)(n.p,{children:["Use the bundle name from the hint, such as ",(0,i.jsx)(n.code,{children:"duckduckgo"})," in this example, to find and install the correct extension package, and then reload the flow."]}),"\n",(0,i.jsx)(n.h2,{id:"install-a-bundle-extension",children:"Install a bundle extension"}),"\n",(0,i.jsx)(n.p,{children:"If a bundle you need is not included in your Langflow environment, install it with pip:"}),"\n",(0,i.jsx)(l.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"uv ",props:{style:{color:"#FFA657"}}},{content:"pip install lfx-duckduckgo",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"uv ",props:{style:{color:"#FFA657"}}},{content:"run langflow run",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,i.jsx)(n.p,{children:"Langflow discovers the package at server startup and loads the components into the palette automatically.\nNo additional configuration is required."}),"\n",(0,i.jsx)(n.p,{children:"To see what extensions are currently loaded, run:"}),"\n",(0,i.jsx)(l.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"lfx ",props:{style:{color:"#FFA657"}}},{content:"extension list",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,i.jsx)(n.h2,{id:"build-your-own-extension",children:"Build your own extension"}),"\n",(0,i.jsx)(n.p,{children:"If you have custom components that you want to distribute and version independently of your Langflow install, you can package them as an extension."}),"\n",(0,i.jsxs)(n.p,{children:["For more information, see ",(0,i.jsx)(n.a,{href:"/next/extensions-quickstart",children:"Build your first Langflow Extension"}),"."]})]})}function p(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(x,{...e})}):x(e)}function g(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}}}]); \ No newline at end of file diff --git a/assets/js/2eb731bc.5f59bcbf.js b/assets/js/2eb731bc.5f59bcbf.js new file mode 100644 index 0000000000..db2b26cb42 --- /dev/null +++ b/assets/js/2eb731bc.5f59bcbf.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunklangflow_docs=globalThis.webpackChunklangflow_docs||[]).push([[73536],{85202:(e,o,t)=>{t.r(o),t.d(o,{CH:()=>d,assets:()=>i,chCodeConfig:()=>p,contentTitle:()=>a,default:()=>u,frontMatter:()=>c,metadata:()=>n,toc:()=>h});const n=JSON.parse('{"id":"Develop/configuration-custom-database","title":"Configure an external PostgreSQL database","description":"Langflow\'s default database is SQLite, but you can configure Langflow to use PostgreSQL instead.","source":"@site/docs/Develop/configuration-custom-database.mdx","sourceDirName":"Develop","slug":"/configuration-custom-database","permalink":"/next/configuration-custom-database","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Configure an external PostgreSQL database","slug":"/configuration-custom-database"},"sidebar":"docs","previous":{"title":"Use Session IDs","permalink":"/next/session-id"},"next":{"title":"Database guide for enterprise administrators","permalink":"/next/enterprise-database-guide"}}');var s=t(74848),r=t(28453),l=t(24754);const c={title:"Configure an external PostgreSQL database",slug:"/configuration-custom-database"},a=void 0,i={},d={annotations:l.hk,Code:l.Cy},p={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},h=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Connect Langflow to a local PostgreSQL database",id:"connect-langflow-to-a-local-postgresql-database",level:2},{value:"Deploy Langflow and PostgreSQL containers with docker-compose.yml",id:"deploy-langflow-and-postgresql-containers-with-docker-composeyml",level:2},{value:"Deploy multiple Langflow instances with a shared PostgreSQL database",id:"deploy-multiple-langflow-instances-with-a-shared-postgresql-database",level:2},{value:"See also",id:"see-also",level:2}];function g(e){const o={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return d||f("CH",!1),d.Code||f("CH.Code",!0),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }'}}),"\n",(0,s.jsxs)(o.p,{children:["Langflow's default database is ",(0,s.jsx)(o.a,{href:"https://www.sqlite.org/docs.html",children:"SQLite"}),", but you can configure Langflow to use PostgreSQL instead."]}),"\n",(0,s.jsxs)(o.p,{children:["This guide walks you through setting up an external database for Langflow by replacing the default SQLite connection string ",(0,s.jsx)(o.code,{children:"sqlite:///./langflow.db"})," with PostgreSQL, both in local and containerized environments."]}),"\n",(0,s.jsxs)(o.admonition,{title:"SQLite paths should be absolute",type:"note",children:[(0,s.jsxs)(o.p,{children:["If you set ",(0,s.jsx)(o.code,{children:"LANGFLOW_DATABASE_URL"})," to a SQLite connection string, use an ",(0,s.jsx)(o.strong,{children:"absolute"})," path, such as ",(0,s.jsx)(o.code,{children:"sqlite:////absolute/path/to/langflow.db"})," (note the four leading slashes) or, on Windows, ",(0,s.jsx)(o.code,{children:"sqlite:///C:/path/to/langflow.db"}),"."]}),(0,s.jsxs)(o.p,{children:["A relative path such as ",(0,s.jsx)(o.code,{children:"sqlite:///./langflow.db"}),' is resolved against the directory you start Langflow from, so launching from different directories points at different database files (your flows can appear to "disappear"), and a relative path that includes a subdirectory which doesn\'t yet exist fails at startup because SQLite does not create intermediate directories.']})]}),"\n",(0,s.jsx)(o.p,{children:"In this configuration, all structured application data from Langflow, including flows, message history, and logs, is instead managed by PostgreSQL.\nPostgreSQL is better suited for production environments due to its robust support for concurrent users, advanced data integrity features, and scalability.\nLangflow can more efficiently handle multiple users and larger workloads by using PostgreSQL as the database."}),"\n",(0,s.jsx)(o.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:["A ",(0,s.jsx)(o.a,{href:"https://www.pgadmin.org/download/",children:"PostgreSQL"})," database version 15 or later"]}),"\n"]}),"\n",(0,s.jsx)(o.h2,{id:"connect-langflow-to-a-local-postgresql-database",children:"Connect Langflow to a local PostgreSQL database"}),"\n",(0,s.jsxs)(o.ol,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["If Langflow is running, stop Langflow with ",(0,s.jsx)("kbd",{children:"Ctrl+C"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Find your PostgreSQL database's connection string in the format ",(0,s.jsx)(o.code,{children:"postgresql://user:password@host:port/dbname"}),"."]}),"\n",(0,s.jsx)(o.p,{children:"The hostname in your connection string depends on how you're running PostgreSQL:"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:["If you're running PostgreSQL directly on your machine, use ",(0,s.jsx)(o.code,{children:"localhost"}),"."]}),"\n",(0,s.jsxs)(o.li,{children:["If you're running PostgreSQL in Docker Compose, use the service name, such as ",(0,s.jsx)(o.code,{children:"postgres"}),"."]}),"\n",(0,s.jsxs)(o.li,{children:["If you're running PostgreSQL in a separate Docker container with ",(0,s.jsx)(o.code,{children:"docker run"}),", use the container's IP address or network alias."]}),"\n",(0,s.jsx)(o.li,{children:"If you're running a cloud-hosted PostgreSQL, your provider will share your connection string, which includes a username and password."}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Edit or create a Langflow ",(0,s.jsx)(o.code,{children:".env"})," file:"]}),"\n",(0,s.jsx)(d.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"touch .env",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["You can use the ",(0,s.jsx)(o.a,{href:"https://github.com/langflow-ai/langflow/blob/main/.env.example",children:(0,s.jsx)(o.code,{children:".env.example"})})," file in the Langflow repository as a template for your own ",(0,s.jsx)(o.code,{children:".env"})," file."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["In your ",(0,s.jsx)(o.code,{children:".env"})," file, set ",(0,s.jsx)(o.code,{children:"LANGFLOW_DATABASE_URL"})," to your PostgreSQL connection string:"]}),"\n",(0,s.jsx)(d.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:'LANGFLOW_DATABASE_URL="postgresql://user:password@localhost:5432/dbname"',props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["Langflow uses ",(0,s.jsx)(o.a,{href:"https://www.sqlalchemy.org/",children:"SQLAlchemy"})," with the ",(0,s.jsx)(o.a,{href:"https://www.psycopg.org/",children:"psycopg"})," driver to pass SSL parameters directly to the PostgreSQL connection."]}),"\n",(0,s.jsx)(o.admonition,{title:"PostgreSQL driver compatibility",type:"warning",children:(0,s.jsxs)(o.p,{children:["Langflow requires ",(0,s.jsx)(o.code,{children:"psycopg2-binary"})," or ",(0,s.jsx)(o.code,{children:"psycopg[binary]"})," as the PostgreSQL driver. The ",(0,s.jsx)(o.code,{children:"asyncpg"})," driver is not compatible with Langflow's current database schema due to stricter timezone handling requirements."]})}),"\n",(0,s.jsx)(o.p,{children:"The following SSL modes are supported:"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:[(0,s.jsx)(o.strong,{children:(0,s.jsx)(o.code,{children:"sslmode=require"})}),": Requires SSL connection but doesn't verify server certificate. This option is the least secure, but acceptable for most use cases."]}),"\n",(0,s.jsx)(d.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"LANGFLOW_DATABASE_URL",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"postgresql://user:password@localhost:5432/dbname?sslmode=require"',props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:[(0,s.jsx)(o.strong,{children:(0,s.jsx)(o.code,{children:"sslmode=verify-ca"})}),": Requires SSL and verifies the server certificate against the Certificate Authority (CA). Add the certificate paths to your connection string:"]}),"\n",(0,s.jsx)(d.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"LANGFLOW_DATABASE_URL",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"postgresql://user@localhost:5432/dbname?sslmode=verify-ca&sslcert=/path/to/client.crt&sslkey=/path/to/client.key&sslrootcert=/path/to/ca.crt"',props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:[(0,s.jsx)(o.strong,{children:(0,s.jsx)(o.code,{children:"sslmode=verify-full"})}),": Requires SSL, verifies the server certificate, and checks the request hostname against the certificate hostname. The ",(0,s.jsx)(o.code,{children:"db.example.com"})," hostname in this example must match the server certificate's CN. This option is the most secure."]}),"\n",(0,s.jsx)(d.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"LANGFLOW_DATABASE_URL",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"postgresql://user@db.example.com:5432/dbname?sslmode=verify-full&sslcert=/path/to/client.crt&sslkey=/path/to/client.key&sslrootcert=/path/to/ca.crt"',props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["Do not use the Langflow environment variables ",(0,s.jsx)(o.a,{href:"/environment-variables#server",children:(0,s.jsx)(o.code,{children:"LANGFLOW_SSL_CERT_FILE"})})," and ",(0,s.jsx)(o.a,{href:"/environment-variables#server",children:(0,s.jsx)(o.code,{children:"LANGFLOW_SSL_KEY_FILE"})})," for your PostgreSQL certificates: these variables are for enabling HTTPS on the Langflow server, not for PostgreSQL database connections."]}),"\n",(0,s.jsxs)(o.p,{children:["For more on managing SSL certificates in PostgreSQL, see the ",(0,s.jsx)(o.a,{href:"https://www.postgresql.org/docs/9.1/ssl-tcp.html",children:"PostgreSQL documentation"}),"."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Save your changes, and then start Langflow with your ",(0,s.jsx)(o.code,{children:".env"})," file:"]}),"\n",(0,s.jsx)(d.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"uv ",props:{style:{color:"#FFA657"}}},{content:"run langflow run ",props:{style:{color:"#A5D6FF"}}},{content:"--env-file ",props:{style:{color:"#79C0FF"}}},{content:".env",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["For optional connection pooling and timeout settings, see ",(0,s.jsx)(o.a,{href:"/memory#configure-external-memory",children:"Configure external memory"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"In Langflow, run any flow to create traffic."}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"Inspect your PostgreSQL database's tables and activity to verify that new tables and traffic were created after you ran a flow."}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(o.h2,{id:"deploy-langflow-and-postgresql-containers-with-docker-composeyml",children:"Deploy Langflow and PostgreSQL containers with docker-compose.yml"}),"\n",(0,s.jsxs)(o.p,{children:["Launching Langflow and PostgreSQL containers in the same Docker network ensures proper connectivity between services.\nFor an example, see the ",(0,s.jsx)(o.a,{href:"https://github.com/langflow-ai/langflow/blob/main/docker_example/docker-compose.yml",children:(0,s.jsx)(o.code,{children:"docker-compose.yml"})})," file in the Langflow repository."]}),"\n",(0,s.jsxs)(o.p,{children:["The configuration in the example ",(0,s.jsx)(o.code,{children:"docker-compose.yml"})," also sets up persistent volumes for both Langflow and PostgreSQL data.\nPersistent volumes map directories inside of containers to storage on the host machine, so data persists through container restarts."]}),"\n",(0,s.jsxs)(o.p,{children:["Docker Compose creates an isolated network for all services defined in ",(0,s.jsx)(o.code,{children:"docker-compose.yml"}),". This ensures that the services can communicate with each other using their service names as hostnames, such as ",(0,s.jsx)(o.code,{children:"postgres"})," in the database URL.\nIn contrast, if you run PostgreSQL separately with ",(0,s.jsx)(o.code,{children:"docker run"}),", it launches in a different network than the Langflow container, and this prevents Langflow from connecting to PostgreSQL using the service name."]}),"\n",(0,s.jsxs)(o.p,{children:["To start the Langflow and PostgreSQL services with the example Docker Compose file, navigate to the ",(0,s.jsx)(o.code,{children:"langflow/docker_example"})," directory, and then run ",(0,s.jsx)(o.code,{children:"docker-compose up"}),".\nIf you're using a different ",(0,s.jsx)(o.code,{children:"docker-compose.yml"})," file, run the ",(0,s.jsx)(o.code,{children:"docker-compose up"})," command from the same directory as your ",(0,s.jsx)(o.code,{children:"docker-compose.yml"})," file."]}),"\n",(0,s.jsx)(o.h2,{id:"deploy-multiple-langflow-instances-with-a-shared-postgresql-database",children:"Deploy multiple Langflow instances with a shared PostgreSQL database"}),"\n",(0,s.jsxs)(o.p,{children:["To configure multiple Langflow instances that share the same PostgreSQL database, modify your ",(0,s.jsx)(o.code,{children:"docker-compose.yml"})," file to include multiple Langflow services."]}),"\n",(0,s.jsxs)(o.p,{children:["This example populates the values in ",(0,s.jsx)(o.code,{children:"docker-compose.yml"})," with values from your Langflow ",(0,s.jsx)(o.code,{children:".env"})," file.\nThis approach means you only have to manage deployment variables in one file, instead of copying values across multiple files."]}),"\n",(0,s.jsxs)(o.ol,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Update your ",(0,s.jsx)(o.code,{children:".env"})," file with values for your PostgreSQL database:"]}),"\n",(0,s.jsx)(d.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"POSTGRES_USER=langflow",props:{}}]},{tokens:[{content:"POSTGRES_PASSWORD=your_secure_password",props:{}}]},{tokens:[{content:"POSTGRES_DB=langflow",props:{}}]},{tokens:[{content:"POSTGRES_HOST=postgres",props:{}}]},{tokens:[{content:"POSTGRES_PORT=5432",props:{}}]},{tokens:[{content:"LANGFLOW_CONFIG_DIR=app/langflow",props:{}}]},{tokens:[{content:"LANGFLOW_PORT_1=7860",props:{}}]},{tokens:[{content:"LANGFLOW_PORT_2=7861",props:{}}]},{tokens:[{content:"LANGFLOW_HOST=0.0.0.0",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["For optional connection pooling and timeout settings, see ",(0,s.jsx)(o.a,{href:"/memory#configure-external-memory",children:"Configure external memory"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Reference these variables in your ",(0,s.jsx)(o.code,{children:"docker-compose.yml"}),".\nFor example:"]}),"\n",(0,s.jsx)(d.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"services",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" postgres",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" # Pinned to a specific Debian base (trixie) so the postgres:16 tag does",props:{style:{color:"#8B949E"}}}]},{tokens:[{content:" # not silently roll its OS, which triggers a glibc collation mismatch",props:{style:{color:"#8B949E"}}}]},{tokens:[{content:" # warning on existing volumes. See https://github.com/langflow-ai/langflow/issues/9608",props:{style:{color:"#8B949E"}}}]},{tokens:[{content:" image",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"postgres:16-trixie",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" environment",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"POSTGRES_USER=${POSTGRES_USER}",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"POSTGRES_PASSWORD=${POSTGRES_PASSWORD}",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"POSTGRES_DB=${POSTGRES_DB}",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" ports",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:'"${POSTGRES_PORT}:5432"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" volumes",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"langflow-postgres:/var/lib/postgresql/data",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" langflow-1",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" image",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"langflowai/langflow:latest",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" pull_policy",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"always",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" ports",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:'"${LANGFLOW_PORT_1}:7860"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" depends_on",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"postgres",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" environment",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"LANGFLOW_DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"LANGFLOW_CONFIG_DIR=${LANGFLOW_CONFIG_DIR}",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"LANGFLOW_HOST=${LANGFLOW_HOST}",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"PORT=7860",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" volumes",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"langflow-data-1:/app/langflow",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" langflow-2",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" image",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"langflowai/langflow:latest",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" pull_policy",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"always",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" ports",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:'"${LANGFLOW_PORT_2}:7860"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" depends_on",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"postgres",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" environment",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"LANGFLOW_DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"LANGFLOW_CONFIG_DIR=${LANGFLOW_CONFIG_DIR}",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"LANGFLOW_HOST=${LANGFLOW_HOST}",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"PORT=7860",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" volumes",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"langflow-data-2:/app/langflow",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"volumes",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" langflow-postgres",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" langflow-data-1",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" langflow-data-2",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]}],lang:"yaml"},annotations:[]}]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Deploy the file with ",(0,s.jsx)(o.code,{children:"docker-compose up"}),".\nYou can access the first Langflow instance at ",(0,s.jsx)(o.code,{children:"http://localhost:7860"}),", and the second Langflow instance at ",(0,s.jsx)(o.code,{children:"http://localhost:7861"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["To confirm both instances are using the same database, run the ",(0,s.jsx)(o.code,{children:"docker exec"})," command to start ",(0,s.jsx)(o.code,{children:"psql"})," in your PostgreSQL container.\nYour container name may vary."]}),"\n",(0,s.jsx)(d.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"docker ",props:{style:{color:"#FFA657"}}},{content:"exec ",props:{style:{color:"#A5D6FF"}}},{content:"-it ",props:{style:{color:"#79C0FF"}}},{content:"docker-test-postgres-1 psql ",props:{style:{color:"#A5D6FF"}}},{content:"-U ",props:{style:{color:"#79C0FF"}}},{content:"langflow ",props:{style:{color:"#A5D6FF"}}},{content:"-d ",props:{style:{color:"#79C0FF"}}},{content:"langflow",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"Query the database for active connections:"}),"\n",(0,s.jsx)(d.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"langflow",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"# ",props:{style:{color:"#C9D1D9"}}},{content:"SELECT * FROM",props:{style:{color:"#FF7B72"}}},{content:" pg_stat_activity ",props:{style:{color:"#C9D1D9"}}},{content:"WHERE",props:{style:{color:"#FF7B72"}}},{content:" datname ",props:{style:{color:"#C9D1D9"}}},{content:"= ",props:{style:{color:"#FF7B72"}}},{content:"'langflow'",props:{style:{color:"#A5D6FF"}}},{content:";",props:{style:{color:"#C9D1D9"}}}]}],lang:"sql"},annotations:[]}]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Examine the query results for multiple connections with different ",(0,s.jsx)(o.code,{children:"client_addr"})," values, for example ",(0,s.jsx)(o.code,{children:"172.21.0.3"})," and ",(0,s.jsx)(o.code,{children:"172.21.0.4"}),".\nSince each Langflow instance runs in its own container on the Docker network, using different incoming IP addresses confirms that both instances are actively connected to the PostgreSQL database."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["To quit ",(0,s.jsx)(o.code,{children:"psql"}),", type ",(0,s.jsx)(o.code,{children:"quit"}),"."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(o.h2,{id:"see-also",children:"See also"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsx)(o.li,{children:(0,s.jsx)(o.a,{href:"/enterprise-database-guide",children:"Langflow database guide for enterprise DBAs"})}),"\n",(0,s.jsx)(o.li,{children:(0,s.jsx)(o.a,{href:"/memory",children:"Memory management options"})}),"\n",(0,s.jsx)(o.li,{children:(0,s.jsx)(o.a,{href:"/logging",children:"Logs"})}),"\n"]})]})}function u(e={}){const{wrapper:o}={...(0,r.R)(),...e.components};return o?(0,s.jsx)(o,{...e,children:(0,s.jsx)(g,{...e})}):g(e)}function f(e,o){throw new Error("Expected "+(o?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}}}]); \ No newline at end of file diff --git a/assets/js/2eb731bc.d7f7ed62.js b/assets/js/2eb731bc.d7f7ed62.js deleted file mode 100644 index babd953e6d..0000000000 --- a/assets/js/2eb731bc.d7f7ed62.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunklangflow_docs=globalThis.webpackChunklangflow_docs||[]).push([[73536],{85202:(e,o,n)=>{n.r(o),n.d(o,{CH:()=>d,assets:()=>i,chCodeConfig:()=>p,contentTitle:()=>a,default:()=>u,frontMatter:()=>c,metadata:()=>t,toc:()=>h});const t=JSON.parse('{"id":"Develop/configuration-custom-database","title":"Configure an external PostgreSQL database","description":"Langflow\'s default database is SQLite, but you can configure Langflow to use PostgreSQL instead.","source":"@site/docs/Develop/configuration-custom-database.mdx","sourceDirName":"Develop","slug":"/configuration-custom-database","permalink":"/next/configuration-custom-database","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Configure an external PostgreSQL database","slug":"/configuration-custom-database"},"sidebar":"docs","previous":{"title":"Use Session IDs","permalink":"/next/session-id"},"next":{"title":"Database guide for enterprise administrators","permalink":"/next/enterprise-database-guide"}}');var s=n(74848),r=n(28453),l=n(24754);const c={title:"Configure an external PostgreSQL database",slug:"/configuration-custom-database"},a=void 0,i={},d={annotations:l.hk,Code:l.Cy},p={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},h=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Connect Langflow to a local PostgreSQL database",id:"connect-langflow-to-a-local-postgresql-database",level:2},{value:"Deploy Langflow and PostgreSQL containers with docker-compose.yml",id:"deploy-langflow-and-postgresql-containers-with-docker-composeyml",level:2},{value:"Deploy multiple Langflow instances with a shared PostgreSQL database",id:"deploy-multiple-langflow-instances-with-a-shared-postgresql-database",level:2},{value:"See also",id:"see-also",level:2}];function g(e){const o={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return d||f("CH",!1),d.Code||f("CH.Code",!0),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }'}}),"\n",(0,s.jsxs)(o.p,{children:["Langflow's default database is ",(0,s.jsx)(o.a,{href:"https://www.sqlite.org/docs.html",children:"SQLite"}),", but you can configure Langflow to use PostgreSQL instead."]}),"\n",(0,s.jsxs)(o.p,{children:["This guide walks you through setting up an external database for Langflow by replacing the default SQLite connection string ",(0,s.jsx)(o.code,{children:"sqlite:///./langflow.db"})," with PostgreSQL, both in local and containerized environments."]}),"\n",(0,s.jsx)(o.p,{children:"In this configuration, all structured application data from Langflow, including flows, message history, and logs, is instead managed by PostgreSQL.\nPostgreSQL is better suited for production environments due to its robust support for concurrent users, advanced data integrity features, and scalability.\nLangflow can more efficiently handle multiple users and larger workloads by using PostgreSQL as the database."}),"\n",(0,s.jsx)(o.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:["A ",(0,s.jsx)(o.a,{href:"https://www.pgadmin.org/download/",children:"PostgreSQL"})," database version 15 or later"]}),"\n"]}),"\n",(0,s.jsx)(o.h2,{id:"connect-langflow-to-a-local-postgresql-database",children:"Connect Langflow to a local PostgreSQL database"}),"\n",(0,s.jsxs)(o.ol,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["If Langflow is running, stop Langflow with ",(0,s.jsx)("kbd",{children:"Ctrl+C"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Find your PostgreSQL database's connection string in the format ",(0,s.jsx)(o.code,{children:"postgresql://user:password@host:port/dbname"}),"."]}),"\n",(0,s.jsx)(o.p,{children:"The hostname in your connection string depends on how you're running PostgreSQL:"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:["If you're running PostgreSQL directly on your machine, use ",(0,s.jsx)(o.code,{children:"localhost"}),"."]}),"\n",(0,s.jsxs)(o.li,{children:["If you're running PostgreSQL in Docker Compose, use the service name, such as ",(0,s.jsx)(o.code,{children:"postgres"}),"."]}),"\n",(0,s.jsxs)(o.li,{children:["If you're running PostgreSQL in a separate Docker container with ",(0,s.jsx)(o.code,{children:"docker run"}),", use the container's IP address or network alias."]}),"\n",(0,s.jsx)(o.li,{children:"If you're running a cloud-hosted PostgreSQL, your provider will share your connection string, which includes a username and password."}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Edit or create a Langflow ",(0,s.jsx)(o.code,{children:".env"})," file:"]}),"\n",(0,s.jsx)(d.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"touch .env",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["You can use the ",(0,s.jsx)(o.a,{href:"https://github.com/langflow-ai/langflow/blob/main/.env.example",children:(0,s.jsx)(o.code,{children:".env.example"})})," file in the Langflow repository as a template for your own ",(0,s.jsx)(o.code,{children:".env"})," file."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["In your ",(0,s.jsx)(o.code,{children:".env"})," file, set ",(0,s.jsx)(o.code,{children:"LANGFLOW_DATABASE_URL"})," to your PostgreSQL connection string:"]}),"\n",(0,s.jsx)(d.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:'LANGFLOW_DATABASE_URL="postgresql://user:password@localhost:5432/dbname"',props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["Langflow uses ",(0,s.jsx)(o.a,{href:"https://www.sqlalchemy.org/",children:"SQLAlchemy"})," with the ",(0,s.jsx)(o.a,{href:"https://www.psycopg.org/",children:"psycopg"})," driver to pass SSL parameters directly to the PostgreSQL connection."]}),"\n",(0,s.jsx)(o.admonition,{title:"PostgreSQL driver compatibility",type:"warning",children:(0,s.jsxs)(o.p,{children:["Langflow requires ",(0,s.jsx)(o.code,{children:"psycopg2-binary"})," or ",(0,s.jsx)(o.code,{children:"psycopg[binary]"})," as the PostgreSQL driver. The ",(0,s.jsx)(o.code,{children:"asyncpg"})," driver is not compatible with Langflow's current database schema due to stricter timezone handling requirements."]})}),"\n",(0,s.jsx)(o.p,{children:"The following SSL modes are supported:"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:[(0,s.jsx)(o.strong,{children:(0,s.jsx)(o.code,{children:"sslmode=require"})}),": Requires SSL connection but doesn't verify server certificate. This option is the least secure, but acceptable for most use cases."]}),"\n",(0,s.jsx)(d.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"LANGFLOW_DATABASE_URL",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"postgresql://user:password@localhost:5432/dbname?sslmode=require"',props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:[(0,s.jsx)(o.strong,{children:(0,s.jsx)(o.code,{children:"sslmode=verify-ca"})}),": Requires SSL and verifies the server certificate against the Certificate Authority (CA). Add the certificate paths to your connection string:"]}),"\n",(0,s.jsx)(d.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"LANGFLOW_DATABASE_URL",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"postgresql://user@localhost:5432/dbname?sslmode=verify-ca&sslcert=/path/to/client.crt&sslkey=/path/to/client.key&sslrootcert=/path/to/ca.crt"',props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:[(0,s.jsx)(o.strong,{children:(0,s.jsx)(o.code,{children:"sslmode=verify-full"})}),": Requires SSL, verifies the server certificate, and checks the request hostname against the certificate hostname. The ",(0,s.jsx)(o.code,{children:"db.example.com"})," hostname in this example must match the server certificate's CN. This option is the most secure."]}),"\n",(0,s.jsx)(d.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"LANGFLOW_DATABASE_URL",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"postgresql://user@db.example.com:5432/dbname?sslmode=verify-full&sslcert=/path/to/client.crt&sslkey=/path/to/client.key&sslrootcert=/path/to/ca.crt"',props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["Do not use the Langflow environment variables ",(0,s.jsx)(o.a,{href:"/environment-variables#server",children:(0,s.jsx)(o.code,{children:"LANGFLOW_SSL_CERT_FILE"})})," and ",(0,s.jsx)(o.a,{href:"/environment-variables#server",children:(0,s.jsx)(o.code,{children:"LANGFLOW_SSL_KEY_FILE"})})," for your PostgreSQL certificates: these variables are for enabling HTTPS on the Langflow server, not for PostgreSQL database connections."]}),"\n",(0,s.jsxs)(o.p,{children:["For more on managing SSL certificates in PostgreSQL, see the ",(0,s.jsx)(o.a,{href:"https://www.postgresql.org/docs/9.1/ssl-tcp.html",children:"PostgreSQL documentation"}),"."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Save your changes, and then start Langflow with your ",(0,s.jsx)(o.code,{children:".env"})," file:"]}),"\n",(0,s.jsx)(d.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"uv ",props:{style:{color:"#FFA657"}}},{content:"run langflow run ",props:{style:{color:"#A5D6FF"}}},{content:"--env-file ",props:{style:{color:"#79C0FF"}}},{content:".env",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["For optional connection pooling and timeout settings, see ",(0,s.jsx)(o.a,{href:"/memory#configure-external-memory",children:"Configure external memory"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"In Langflow, run any flow to create traffic."}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"Inspect your PostgreSQL database's tables and activity to verify that new tables and traffic were created after you ran a flow."}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(o.h2,{id:"deploy-langflow-and-postgresql-containers-with-docker-composeyml",children:"Deploy Langflow and PostgreSQL containers with docker-compose.yml"}),"\n",(0,s.jsxs)(o.p,{children:["Launching Langflow and PostgreSQL containers in the same Docker network ensures proper connectivity between services.\nFor an example, see the ",(0,s.jsx)(o.a,{href:"https://github.com/langflow-ai/langflow/blob/main/docker_example/docker-compose.yml",children:(0,s.jsx)(o.code,{children:"docker-compose.yml"})})," file in the Langflow repository."]}),"\n",(0,s.jsxs)(o.p,{children:["The configuration in the example ",(0,s.jsx)(o.code,{children:"docker-compose.yml"})," also sets up persistent volumes for both Langflow and PostgreSQL data.\nPersistent volumes map directories inside of containers to storage on the host machine, so data persists through container restarts."]}),"\n",(0,s.jsxs)(o.p,{children:["Docker Compose creates an isolated network for all services defined in ",(0,s.jsx)(o.code,{children:"docker-compose.yml"}),". This ensures that the services can communicate with each other using their service names as hostnames, such as ",(0,s.jsx)(o.code,{children:"postgres"})," in the database URL.\nIn contrast, if you run PostgreSQL separately with ",(0,s.jsx)(o.code,{children:"docker run"}),", it launches in a different network than the Langflow container, and this prevents Langflow from connecting to PostgreSQL using the service name."]}),"\n",(0,s.jsxs)(o.p,{children:["To start the Langflow and PostgreSQL services with the example Docker Compose file, navigate to the ",(0,s.jsx)(o.code,{children:"langflow/docker_example"})," directory, and then run ",(0,s.jsx)(o.code,{children:"docker-compose up"}),".\nIf you're using a different ",(0,s.jsx)(o.code,{children:"docker-compose.yml"})," file, run the ",(0,s.jsx)(o.code,{children:"docker-compose up"})," command from the same directory as your ",(0,s.jsx)(o.code,{children:"docker-compose.yml"})," file."]}),"\n",(0,s.jsx)(o.h2,{id:"deploy-multiple-langflow-instances-with-a-shared-postgresql-database",children:"Deploy multiple Langflow instances with a shared PostgreSQL database"}),"\n",(0,s.jsxs)(o.p,{children:["To configure multiple Langflow instances that share the same PostgreSQL database, modify your ",(0,s.jsx)(o.code,{children:"docker-compose.yml"})," file to include multiple Langflow services."]}),"\n",(0,s.jsxs)(o.p,{children:["This example populates the values in ",(0,s.jsx)(o.code,{children:"docker-compose.yml"})," with values from your Langflow ",(0,s.jsx)(o.code,{children:".env"})," file.\nThis approach means you only have to manage deployment variables in one file, instead of copying values across multiple files."]}),"\n",(0,s.jsxs)(o.ol,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Update your ",(0,s.jsx)(o.code,{children:".env"})," file with values for your PostgreSQL database:"]}),"\n",(0,s.jsx)(d.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"POSTGRES_USER=langflow",props:{}}]},{tokens:[{content:"POSTGRES_PASSWORD=your_secure_password",props:{}}]},{tokens:[{content:"POSTGRES_DB=langflow",props:{}}]},{tokens:[{content:"POSTGRES_HOST=postgres",props:{}}]},{tokens:[{content:"POSTGRES_PORT=5432",props:{}}]},{tokens:[{content:"LANGFLOW_CONFIG_DIR=app/langflow",props:{}}]},{tokens:[{content:"LANGFLOW_PORT_1=7860",props:{}}]},{tokens:[{content:"LANGFLOW_PORT_2=7861",props:{}}]},{tokens:[{content:"LANGFLOW_HOST=0.0.0.0",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["For optional connection pooling and timeout settings, see ",(0,s.jsx)(o.a,{href:"/memory#configure-external-memory",children:"Configure external memory"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Reference these variables in your ",(0,s.jsx)(o.code,{children:"docker-compose.yml"}),".\nFor example:"]}),"\n",(0,s.jsx)(d.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"services",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" postgres",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" # Pinned to a specific Debian base (trixie) so the postgres:16 tag does",props:{style:{color:"#8B949E"}}}]},{tokens:[{content:" # not silently roll its OS, which triggers a glibc collation mismatch",props:{style:{color:"#8B949E"}}}]},{tokens:[{content:" # warning on existing volumes. See https://github.com/langflow-ai/langflow/issues/9608",props:{style:{color:"#8B949E"}}}]},{tokens:[{content:" image",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"postgres:16-trixie",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" environment",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"POSTGRES_USER=${POSTGRES_USER}",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"POSTGRES_PASSWORD=${POSTGRES_PASSWORD}",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"POSTGRES_DB=${POSTGRES_DB}",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" ports",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:'"${POSTGRES_PORT}:5432"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" volumes",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"langflow-postgres:/var/lib/postgresql/data",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" langflow-1",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" image",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"langflowai/langflow:latest",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" pull_policy",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"always",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" ports",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:'"${LANGFLOW_PORT_1}:7860"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" depends_on",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"postgres",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" environment",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"LANGFLOW_DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"LANGFLOW_CONFIG_DIR=${LANGFLOW_CONFIG_DIR}",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"LANGFLOW_HOST=${LANGFLOW_HOST}",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"PORT=7860",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" volumes",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"langflow-data-1:/app/langflow",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" langflow-2",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" image",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"langflowai/langflow:latest",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" pull_policy",props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:"always",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" ports",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:'"${LANGFLOW_PORT_2}:7860"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" depends_on",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"postgres",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" environment",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"LANGFLOW_DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"LANGFLOW_CONFIG_DIR=${LANGFLOW_CONFIG_DIR}",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"LANGFLOW_HOST=${LANGFLOW_HOST}",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"PORT=7860",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" volumes",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" - ",props:{style:{color:"#C9D1D9"}}},{content:"langflow-data-2:/app/langflow",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"volumes",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" langflow-postgres",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" langflow-data-1",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" langflow-data-2",props:{style:{color:"#7EE787"}}},{content:":",props:{style:{color:"#C9D1D9"}}}]}],lang:"yaml"},annotations:[]}]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Deploy the file with ",(0,s.jsx)(o.code,{children:"docker-compose up"}),".\nYou can access the first Langflow instance at ",(0,s.jsx)(o.code,{children:"http://localhost:7860"}),", and the second Langflow instance at ",(0,s.jsx)(o.code,{children:"http://localhost:7861"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["To confirm both instances are using the same database, run the ",(0,s.jsx)(o.code,{children:"docker exec"})," command to start ",(0,s.jsx)(o.code,{children:"psql"})," in your PostgreSQL container.\nYour container name may vary."]}),"\n",(0,s.jsx)(d.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"docker ",props:{style:{color:"#FFA657"}}},{content:"exec ",props:{style:{color:"#A5D6FF"}}},{content:"-it ",props:{style:{color:"#79C0FF"}}},{content:"docker-test-postgres-1 psql ",props:{style:{color:"#A5D6FF"}}},{content:"-U ",props:{style:{color:"#79C0FF"}}},{content:"langflow ",props:{style:{color:"#A5D6FF"}}},{content:"-d ",props:{style:{color:"#79C0FF"}}},{content:"langflow",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"Query the database for active connections:"}),"\n",(0,s.jsx)(d.Code,{codeConfig:p,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"langflow",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"# ",props:{style:{color:"#C9D1D9"}}},{content:"SELECT * FROM",props:{style:{color:"#FF7B72"}}},{content:" pg_stat_activity ",props:{style:{color:"#C9D1D9"}}},{content:"WHERE",props:{style:{color:"#FF7B72"}}},{content:" datname ",props:{style:{color:"#C9D1D9"}}},{content:"= ",props:{style:{color:"#FF7B72"}}},{content:"'langflow'",props:{style:{color:"#A5D6FF"}}},{content:";",props:{style:{color:"#C9D1D9"}}}]}],lang:"sql"},annotations:[]}]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Examine the query results for multiple connections with different ",(0,s.jsx)(o.code,{children:"client_addr"})," values, for example ",(0,s.jsx)(o.code,{children:"172.21.0.3"})," and ",(0,s.jsx)(o.code,{children:"172.21.0.4"}),".\nSince each Langflow instance runs in its own container on the Docker network, using different incoming IP addresses confirms that both instances are actively connected to the PostgreSQL database."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["To quit ",(0,s.jsx)(o.code,{children:"psql"}),", type ",(0,s.jsx)(o.code,{children:"quit"}),"."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(o.h2,{id:"see-also",children:"See also"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsx)(o.li,{children:(0,s.jsx)(o.a,{href:"/enterprise-database-guide",children:"Langflow database guide for enterprise DBAs"})}),"\n",(0,s.jsx)(o.li,{children:(0,s.jsx)(o.a,{href:"/memory",children:"Memory management options"})}),"\n",(0,s.jsx)(o.li,{children:(0,s.jsx)(o.a,{href:"/logging",children:"Logs"})}),"\n"]})]})}function u(e={}){const{wrapper:o}={...(0,r.R)(),...e.components};return o?(0,s.jsx)(o,{...e,children:(0,s.jsx)(g,{...e})}):g(e)}function f(e,o){throw new Error("Expected "+(o?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}}}]); \ No newline at end of file diff --git a/assets/js/695c8cb8.6044b200.js b/assets/js/695c8cb8.6044b200.js deleted file mode 100644 index d65fe1bc96..0000000000 --- a/assets/js/695c8cb8.6044b200.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunklangflow_docs=globalThis.webpackChunklangflow_docs||[]).push([[91285],{20543:(e,t,n)=>{n.r(t),n.d(t,{CH:()=>h,assets:()=>d,chCodeConfig:()=>a,contentTitle:()=>i,default:()=>j,frontMatter:()=>c,metadata:()=>s,toc:()=>p});const s=JSON.parse('{"id":"Develop/extensions-manifest","title":"Manifest reference","description":"This page is the reference for the extension.json manifest the Langflow Extension loader consumes.","source":"@site/docs/Develop/extensions-manifest.mdx","sourceDirName":"Develop","slug":"/extensions-manifest","permalink":"/next/extensions-manifest","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Manifest reference","slug":"/extensions-manifest"},"sidebar":"docs","previous":{"title":"Langflow Extension quickstart","permalink":"/next/extensions-quickstart"},"next":{"title":"Langflow deployment overview","permalink":"/next/deployment-overview"}}');var o=n(74848),r=n(28453),l=n(24754);const c={title:"Manifest reference",slug:"/extensions-manifest"},i=void 0,d={},h={annotations:l.hk,Code:l.Cy},a={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},p=[{value:"Top-level fields",id:"top-level-fields",level:2},{value:"lfx: compatibility declaration",id:"lfx-compatibility-declaration",level:2},{value:"bundles",id:"bundles",level:2},{value:"capabilities",id:"capabilities",level:2},{value:"Deferred fields",id:"deferred-fields",level:2},{value:"Pyproject alternative",id:"pyproject-alternative",level:2},{value:"Error codes raised against this manifest",id:"error-codes-raised-against-this-manifest",level:2},{value:"See also",id:"see-also",level:2}];function x(e){const t={a:"a",code:"code",h2:"h2",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,r.R)(),...e.components};return h||f("CH",!1),h.Code||f("CH.Code",!0),(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }'}}),"\n",(0,o.jsxs)(t.p,{children:["This page is the reference for the ",(0,o.jsx)(t.code,{children:"extension.json"})," manifest the Langflow Extension loader consumes."]}),"\n",(0,o.jsxs)(t.p,{children:["The canonical JSON Schema lives at ",(0,o.jsx)(t.a,{href:"https://schemas.langflow.org/extension/v1.json",children:(0,o.jsx)(t.code,{children:"https://schemas.langflow.org/extension/v1.json"})})," and is generated from the Pydantic model at ",(0,o.jsx)(t.a,{href:"https://github.com/langflow-ai/langflow/blob/main/src/lfx/src/lfx/extension/manifest.py",children:(0,o.jsx)(t.code,{children:"lfx.extension.manifest.ExtensionManifest"})}),"."]}),"\n",(0,o.jsx)(t.p,{children:"To export the live schema, run:"}),"\n",(0,o.jsx)(h.Code,{codeConfig:a,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"lfx ",props:{style:{color:"#FFA657"}}},{content:"extension schema ",props:{style:{color:"#A5D6FF"}}},{content:"--output ",props:{style:{color:"#79C0FF"}}},{content:"extension.schema.json",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,o.jsxs)(t.p,{children:["Use the ",(0,o.jsx)(t.code,{children:"$schema"})," reference in your manifest so editors can autocomplete and validate inline:"]}),"\n",(0,o.jsx)(h.Code,{codeConfig:a,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"{",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "$schema"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"https://schemas.langflow.org/extension/v1.json"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "id"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"lfx-my-extension"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "version"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"0.1.0"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "name"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"My extension"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "lfx"',props:{style:{color:"#7EE787"}}},{content:": { ",props:{style:{color:"#C9D1D9"}}},{content:'"compat"',props:{style:{color:"#7EE787"}}},{content:": [",props:{style:{color:"#C9D1D9"}}},{content:'"1"',props:{style:{color:"#A5D6FF"}}},{content:"] },",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "bundles"',props:{style:{color:"#7EE787"}}},{content:": [{ ",props:{style:{color:"#C9D1D9"}}},{content:'"name"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"my_bundle"',props:{style:{color:"#A5D6FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:'"path"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"components/my_bundle"',props:{style:{color:"#A5D6FF"}}},{content:" }]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"}",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]}),"\n",(0,o.jsx)(t.h2,{id:"top-level-fields",children:"Top-level fields"}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Field"}),(0,o.jsx)(t.th,{children:"Type"}),(0,o.jsx)(t.th,{children:"Required"}),(0,o.jsx)(t.th,{children:"Description"})]})}),(0,o.jsxs)(t.tbody,{children:[(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"id"})}),(0,o.jsx)(t.td,{children:"string"}),(0,o.jsx)(t.td,{children:"yes"}),(0,o.jsxs)(t.td,{children:["Globally-unique extension ID. Lowercase, hyphenated, starts with a letter, 2-64 chars. Convention: ",(0,o.jsx)(t.code,{children:"lfx-"}),"."]})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"version"})}),(0,o.jsx)(t.td,{children:"string"}),(0,o.jsx)(t.td,{children:"yes"}),(0,o.jsx)(t.td,{children:"SemVer 2.0.0 version string for this extension release."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"name"})}),(0,o.jsx)(t.td,{children:"string"}),(0,o.jsx)(t.td,{children:"yes"}),(0,o.jsx)(t.td,{children:"Human-readable display name shown in the Langflow palette. 1-200 chars."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"description"})}),(0,o.jsx)(t.td,{children:"string | null"}),(0,o.jsx)(t.td,{children:"no"}),(0,o.jsx)(t.td,{children:"Optional one-paragraph summary, max 2000 chars."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"lfx"})}),(0,o.jsx)(t.td,{children:"object"}),(0,o.jsx)(t.td,{children:"yes"}),(0,o.jsxs)(t.td,{children:[(0,o.jsx)(t.a,{href:"#lfx-compatibility-declaration",children:"Compatibility declaration"})," against the BUNDLE_API contract."]})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"bundles"})}),(0,o.jsx)(t.td,{children:"array"}),(0,o.jsx)(t.td,{children:"yes"}),(0,o.jsxs)(t.td,{children:[(0,o.jsx)(t.a,{href:"#bundles",children:"Bundle list"}),". v0 accepts ",(0,o.jsx)(t.strong,{children:"exactly one"})," bundle."]})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"capabilities"})}),(0,o.jsx)(t.td,{children:"object"}),(0,o.jsx)(t.td,{children:"no"}),(0,o.jsxs)(t.td,{children:[(0,o.jsx)(t.a,{href:"#capabilities",children:"Optional capability flags"}),". Defaults to all-false."]})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"$schema"})}),(0,o.jsx)(t.td,{children:"string"}),(0,o.jsx)(t.td,{children:"no"}),(0,o.jsx)(t.td,{children:"Optional pointer to this JSON Schema; editors use it for autocomplete."})]})]})]}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.code,{children:"additionalProperties: false"})," \u2014 any field not listed here is rejected with a typed error. Reserved names (",(0,o.jsx)(t.code,{children:"services"}),", ",(0,o.jsx)(t.code,{children:"routes"}),", ",(0,o.jsx)(t.code,{children:"hooks"}),", ",(0,o.jsx)(t.code,{children:"starterProjects"}),", ",(0,o.jsx)(t.code,{children:"userConfig"}),") are documented under ",(0,o.jsx)(t.a,{href:"#deferred-fields",children:"Deferred fields"})," and surface a more specific error code."]}),"\n",(0,o.jsxs)(t.h2,{id:"lfx-compatibility-declaration",children:[(0,o.jsx)(t.code,{children:"lfx"}),": compatibility declaration"]}),"\n",(0,o.jsx)(h.Code,{codeConfig:a,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:'"lfx"',props:{style:{color:"#A5D6FF"}}},{content:": { ",props:{style:{color:"#C9D1D9"}}},{content:'"compat"',props:{style:{color:"#7EE787"}}},{content:": [",props:{style:{color:"#C9D1D9"}}},{content:'"1"',props:{style:{color:"#A5D6FF"}}},{content:"] }",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Field"}),(0,o.jsx)(t.th,{children:"Type"}),(0,o.jsx)(t.th,{children:"Description"})]})}),(0,o.jsx)(t.tbody,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"compat"})}),(0,o.jsx)(t.td,{children:"array of strings"}),(0,o.jsxs)(t.td,{children:["Non-empty list of ",(0,o.jsx)(t.code,{children:"BUNDLE_\u200bAPI.md"})," contract versions this extension supports. Each entry is a positive-integer string."]})]})})]}),"\n",(0,o.jsxs)(t.p,{children:["The runtime compares ",(0,o.jsx)(t.code,{children:"str(BUNDLE_API_VERSION)"})," against this list. A mismatch fails install with ",(0,o.jsx)(t.code,{children:"version-constraint-unsatisfied"}),". v0 accepts only ",(0,o.jsx)(t.code,{children:'"1"'}),"; lists like ",(0,o.jsx)(t.code,{children:'["1", "2"]'})," become meaningful when a future BUNDLE_API revision ships."]}),"\n",(0,o.jsx)(t.h2,{id:"bundles",children:(0,o.jsx)(t.code,{children:"bundles"})}),"\n",(0,o.jsx)(h.Code,{codeConfig:a,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:'"bundles"',props:{style:{color:"#A5D6FF"}}},{content:": [",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" { ",props:{style:{color:"#C9D1D9"}}},{content:'"name"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"my_bundle"',props:{style:{color:"#A5D6FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:'"path"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"components/my_bundle"',props:{style:{color:"#A5D6FF"}}},{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"]",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Field"}),(0,o.jsx)(t.th,{children:"Type"}),(0,o.jsx)(t.th,{children:"Description"})]})}),(0,o.jsxs)(t.tbody,{children:[(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"name"})}),(0,o.jsx)(t.td,{children:"string"}),(0,o.jsxs)(t.td,{children:["Bundle name; addressable as ",(0,o.jsx)(t.code,{children:"ext::@"}),". Lowercase snake_case, starts with a letter, 2-64 chars."]})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"path"})}),(0,o.jsx)(t.td,{children:"string"}),(0,o.jsxs)(t.td,{children:["Path to the bundle directory, relative to the manifest. Must not start with ",(0,o.jsx)(t.code,{children:"/"})," or contain ",(0,o.jsx)(t.code,{children:".."}),"."]})]})]})]}),"\n",(0,o.jsxs)(t.p,{children:["v0 enforces ",(0,o.jsx)(t.code,{children:"minItems: 1, maxItems: 1"}),"; multi-bundle extensions are rejected with ",(0,o.jsx)(t.code,{children:"multi-bundle-deferred-in-this-milestone"})," and ship in a later epic."]}),"\n",(0,o.jsx)(t.h2,{id:"capabilities",children:(0,o.jsx)(t.code,{children:"capabilities"})}),"\n",(0,o.jsxs)(t.p,{children:["Optional. Defaults to ",(0,o.jsx)(t.code,{children:'{ "requiresCredentials": false }'}),"."]}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Field"}),(0,o.jsx)(t.th,{children:"Type"}),(0,o.jsx)(t.th,{children:"Description"})]})}),(0,o.jsx)(t.tbody,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"requiresCredentials"})}),(0,o.jsx)(t.td,{children:"bool"}),(0,o.jsx)(t.td,{children:"If true, the loader records that components in this bundle expect credential variables to be configured before use."})]})})]}),"\n",(0,o.jsxs)(t.p,{children:["Additional capability keys are rejected with ",(0,o.jsx)(t.code,{children:'extra="forbid"'})," so a misspelled key surfaces immediately rather than silently turning a feature off."]}),"\n",(0,o.jsx)(t.h2,{id:"deferred-fields",children:"Deferred fields"}),"\n",(0,o.jsxs)(t.p,{children:["The schema strips these names from the published ",(0,o.jsx)(t.code,{children:"properties"})," map but reserves them via ",(0,o.jsx)(t.a,{href:"https://schemas.langflow.org/extension/v1.json",children:(0,o.jsx)(t.code,{children:"x-deferred-fields"})}),', so a manifest that sets one gets a specific error code instead of the generic "additional property" message.']}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Reserved key"}),(0,o.jsx)(t.th,{children:"Replacement error code"}),(0,o.jsx)(t.th,{children:"Future epic"})]})}),(0,o.jsxs)(t.tbody,{children:[(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"services"})}),(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"field-deferred-in-this-milestone"})}),(0,o.jsx)(t.td,{children:"B2 \u2014 non-component primitives"})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"routes"})}),(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"field-deferred-in-this-milestone"})}),(0,o.jsx)(t.td,{children:"B2 \u2014 non-component primitives"})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"hooks"})}),(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"field-deferred-in-this-milestone"})}),(0,o.jsx)(t.td,{children:"B2 \u2014 non-component primitives"})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"starterProjects"})}),(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"field-deferred-in-this-milestone"})}),(0,o.jsx)(t.td,{children:"later milestone"})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"userConfig"})}),(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"field-deferred-in-this-milestone"})}),(0,o.jsx)(t.td,{children:"later milestone"})]})]})]}),"\n",(0,o.jsxs)(t.p,{children:["A manifest that sets any of these to a non-null value is rejected at validate / load time. Setting them to ",(0,o.jsx)(t.code,{children:"null"})," is allowed (the loader treats null and absent identically)."]}),"\n",(0,o.jsx)(t.h2,{id:"pyproject-alternative",children:"Pyproject alternative"}),"\n",(0,o.jsxs)(t.p,{children:["If you'd rather not ship a separate ",(0,o.jsx)(t.code,{children:"extension.json"})," next to ",(0,o.jsx)(t.code,{children:"pyproject.toml"}),", declare the same fields under ",(0,o.jsx)(t.code,{children:"[tool.langflow.extension]"}),":"]}),"\n",(0,o.jsx)(h.Code,{codeConfig:a,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"[",props:{style:{color:"#C9D1D9"}}},{content:"tool",props:{style:{color:"#FFA657"}}},{content:".",props:{style:{color:"#C9D1D9"}}},{content:"langflow",props:{style:{color:"#FFA657"}}},{content:".",props:{style:{color:"#C9D1D9"}}},{content:"extension",props:{style:{color:"#FFA657"}}},{content:"]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"id = ",props:{style:{color:"#C9D1D9"}}},{content:'"lfx-my-extension"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"version = ",props:{style:{color:"#C9D1D9"}}},{content:'"0.1.0"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"name = ",props:{style:{color:"#C9D1D9"}}},{content:'"My extension"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"[",props:{style:{color:"#C9D1D9"}}},{content:"tool",props:{style:{color:"#FFA657"}}},{content:".",props:{style:{color:"#C9D1D9"}}},{content:"langflow",props:{style:{color:"#FFA657"}}},{content:".",props:{style:{color:"#C9D1D9"}}},{content:"extension",props:{style:{color:"#FFA657"}}},{content:".",props:{style:{color:"#C9D1D9"}}},{content:"lfx",props:{style:{color:"#FFA657"}}},{content:"]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"compat = [",props:{style:{color:"#C9D1D9"}}},{content:'"1"',props:{style:{color:"#A5D6FF"}}},{content:"]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"[[",props:{style:{color:"#C9D1D9"}}},{content:"tool",props:{style:{color:"#FFA657"}}},{content:".",props:{style:{color:"#C9D1D9"}}},{content:"langflow",props:{style:{color:"#FFA657"}}},{content:".",props:{style:{color:"#C9D1D9"}}},{content:"extension",props:{style:{color:"#FFA657"}}},{content:".",props:{style:{color:"#C9D1D9"}}},{content:"bundles",props:{style:{color:"#FFA657"}}},{content:"]]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"name = ",props:{style:{color:"#C9D1D9"}}},{content:'"my_bundle"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"path = ",props:{style:{color:"#C9D1D9"}}},{content:'"components/my_bundle"',props:{style:{color:"#A5D6FF"}}}]}],lang:"toml"},annotations:[]}]}),"\n",(0,o.jsxs)(t.p,{children:["The loader prefers an ",(0,o.jsx)(t.code,{children:"extension.json"})," when both exist. The Pydantic validator is the same so error codes and field semantics are identical."]}),"\n",(0,o.jsx)(t.h2,{id:"error-codes-raised-against-this-manifest",children:"Error codes raised against this manifest"}),"\n",(0,o.jsxs)(t.p,{children:["The loader and validator both emit typed errors keyed by the manifest field that triggered them. The full code list is at ",(0,o.jsx)(t.a,{href:"https://github.com/langflow-ai/langflow/blob/main/src/lfx/src/lfx/extension/errors.py",children:(0,o.jsx)(t.code,{children:"lfx.extension.errors.ERROR_CODES"})}),"; the codes most relevant when authoring a manifest are:"]}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Code"}),(0,o.jsx)(t.th,{children:"Cause"})]})}),(0,o.jsxs)(t.tbody,{children:[(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"manifest-invalid"})}),(0,o.jsx)(t.td,{children:"Schema validation failed; the message names the field."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"manifest-not-found"})}),(0,o.jsxs)(t.td,{children:["No ",(0,o.jsx)(t.code,{children:"extension.json"})," and no ",(0,o.jsx)(t.code,{children:"[tool.langflow.extension]"})," section at the extension root."]})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"version-constraint-unsatisfied"})}),(0,o.jsxs)(t.td,{children:[(0,o.jsx)(t.code,{children:"lfx.compat"})," does not include this Langflow's ",(0,o.jsx)(t.code,{children:"BUNDLE_\u200bAPI_\u200bVERSION"}),"."]})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"field-deferred-in-this-milestone"})}),(0,o.jsx)(t.td,{children:"A reserved field was set to a non-null value."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"multi-bundle-deferred-in-this-milestone"})}),(0,o.jsxs)(t.td,{children:[(0,o.jsx)(t.code,{children:"bundles"})," has more than one entry."]})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"path-escape"})}),(0,o.jsxs)(t.td,{children:["A ",(0,o.jsx)(t.code,{children:"bundles[].path"})," resolves outside the manifest root (typically a symlink)."]})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"bundle-path-not-found"})}),(0,o.jsxs)(t.td,{children:[(0,o.jsx)(t.code,{children:"bundles[].path"})," does not exist or is not a directory."]})]})]})]}),"\n",(0,o.jsxs)(t.p,{children:["Run ",(0,o.jsx)(t.code,{children:"lfx extension validate "})," to see every error as a structured object with ",(0,o.jsx)(t.code,{children:"code"}),", ",(0,o.jsx)(t.code,{children:"message"}),", ",(0,o.jsx)(t.code,{children:"location"}),", ",(0,o.jsx)(t.code,{children:"hint"}),", and ",(0,o.jsx)(t.code,{children:"ref_url"}),"."]}),"\n",(0,o.jsx)(t.h2,{id:"see-also",children:"See also"})]})}function j(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(x,{...e})}):x(e)}function f(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}}}]); \ No newline at end of file diff --git a/assets/js/695c8cb8.c81472f2.js b/assets/js/695c8cb8.c81472f2.js new file mode 100644 index 0000000000..db3d1d0271 --- /dev/null +++ b/assets/js/695c8cb8.c81472f2.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunklangflow_docs=globalThis.webpackChunklangflow_docs||[]).push([[91285],{20543:(e,t,n)=>{n.r(t),n.d(t,{CH:()=>h,assets:()=>d,chCodeConfig:()=>a,contentTitle:()=>i,default:()=>j,frontMatter:()=>c,metadata:()=>s,toc:()=>p});const s=JSON.parse('{"id":"Develop/extensions-manifest","title":"Manifest reference","description":"This page is the reference for the extension.json manifest the Langflow Extension loader consumes.","source":"@site/docs/Develop/extensions-manifest.mdx","sourceDirName":"Develop","slug":"/extensions-manifest","permalink":"/next/extensions-manifest","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Manifest reference","slug":"/extensions-manifest"},"sidebar":"docs","previous":{"title":"Langflow Extension quickstart","permalink":"/next/extensions-quickstart"},"next":{"title":"Langflow deployment overview","permalink":"/next/deployment-overview"}}');var o=n(74848),r=n(28453),l=n(24754);const c={title:"Manifest reference",slug:"/extensions-manifest"},i=void 0,d={},h={annotations:l.hk,Code:l.Cy},a={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},p=[{value:"Top-level fields",id:"top-level-fields",level:2},{value:"lfx: compatibility declaration",id:"lfx-compatibility-declaration",level:2},{value:"bundles",id:"bundles",level:2},{value:"capabilities",id:"capabilities",level:2},{value:"Deferred fields",id:"deferred-fields",level:2},{value:"Pyproject alternative",id:"pyproject-alternative",level:2},{value:"Error codes raised against this manifest",id:"error-codes-raised-against-this-manifest",level:2},{value:"See also",id:"see-also",level:2}];function x(e){const t={a:"a",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return h||f("CH",!1),h.Code||f("CH.Code",!0),(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }'}}),"\n",(0,o.jsxs)(t.p,{children:["This page is the reference for the ",(0,o.jsx)(t.code,{children:"extension.json"})," manifest the Langflow Extension loader consumes."]}),"\n",(0,o.jsxs)(t.p,{children:["The canonical JSON Schema lives at ",(0,o.jsx)(t.a,{href:"https://schemas.langflow.org/extension/v1.json",children:(0,o.jsx)(t.code,{children:"https://schemas.langflow.org/extension/v1.json"})})," and is generated from the Pydantic model at ",(0,o.jsx)(t.a,{href:"https://github.com/langflow-ai/langflow/blob/main/src/lfx/src/lfx/extension/manifest.py",children:(0,o.jsx)(t.code,{children:"lfx.extension.manifest.ExtensionManifest"})}),"."]}),"\n",(0,o.jsx)(t.p,{children:"To export the live schema, run:"}),"\n",(0,o.jsx)(h.Code,{codeConfig:a,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"lfx ",props:{style:{color:"#FFA657"}}},{content:"extension schema ",props:{style:{color:"#A5D6FF"}}},{content:"--output ",props:{style:{color:"#79C0FF"}}},{content:"extension.schema.json",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,o.jsxs)(t.p,{children:["Use the ",(0,o.jsx)(t.code,{children:"$schema"})," reference in your manifest so editors can autocomplete and validate inline:"]}),"\n",(0,o.jsx)(h.Code,{codeConfig:a,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"{",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "$schema"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"https://schemas.langflow.org/extension/v1.json"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "id"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"lfx-my-extension"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "version"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"0.1.0"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "name"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"My extension"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "lfx"',props:{style:{color:"#7EE787"}}},{content:": { ",props:{style:{color:"#C9D1D9"}}},{content:'"compat"',props:{style:{color:"#7EE787"}}},{content:": [",props:{style:{color:"#C9D1D9"}}},{content:'"1"',props:{style:{color:"#A5D6FF"}}},{content:"] },",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "bundles"',props:{style:{color:"#7EE787"}}},{content:": [{ ",props:{style:{color:"#C9D1D9"}}},{content:'"name"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"my_bundle"',props:{style:{color:"#A5D6FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:'"path"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"components/my_bundle"',props:{style:{color:"#A5D6FF"}}},{content:" }]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"}",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]}),"\n",(0,o.jsx)(t.h2,{id:"top-level-fields",children:"Top-level fields"}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Field"}),(0,o.jsx)(t.th,{children:"Type"}),(0,o.jsx)(t.th,{children:"Required"}),(0,o.jsx)(t.th,{children:"Description"})]})}),(0,o.jsxs)(t.tbody,{children:[(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"id"})}),(0,o.jsx)(t.td,{children:"string"}),(0,o.jsx)(t.td,{children:"yes"}),(0,o.jsxs)(t.td,{children:["Globally-unique extension ID. Lowercase, hyphenated, starts with a letter, 2-64 chars. Convention: ",(0,o.jsx)(t.code,{children:"lfx-"}),"."]})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"version"})}),(0,o.jsx)(t.td,{children:"string"}),(0,o.jsx)(t.td,{children:"yes"}),(0,o.jsx)(t.td,{children:"SemVer 2.0.0 version string for this extension release."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"name"})}),(0,o.jsx)(t.td,{children:"string"}),(0,o.jsx)(t.td,{children:"yes"}),(0,o.jsx)(t.td,{children:"Human-readable display name shown in the Langflow palette. 1-200 chars."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"description"})}),(0,o.jsx)(t.td,{children:"string | null"}),(0,o.jsx)(t.td,{children:"no"}),(0,o.jsx)(t.td,{children:"Optional one-paragraph summary, max 2000 chars."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"lfx"})}),(0,o.jsx)(t.td,{children:"object"}),(0,o.jsx)(t.td,{children:"yes"}),(0,o.jsxs)(t.td,{children:[(0,o.jsx)(t.a,{href:"#lfx-compatibility-declaration",children:"Compatibility declaration"})," against the BUNDLE_API contract."]})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"bundles"})}),(0,o.jsx)(t.td,{children:"array"}),(0,o.jsx)(t.td,{children:"yes"}),(0,o.jsxs)(t.td,{children:[(0,o.jsx)(t.a,{href:"#bundles",children:"Bundle list"}),". v0 accepts ",(0,o.jsx)(t.strong,{children:"exactly one"})," bundle."]})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"capabilities"})}),(0,o.jsx)(t.td,{children:"object"}),(0,o.jsx)(t.td,{children:"no"}),(0,o.jsxs)(t.td,{children:[(0,o.jsx)(t.a,{href:"#capabilities",children:"Optional capability flags"}),". Defaults to all-false."]})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"$schema"})}),(0,o.jsx)(t.td,{children:"string"}),(0,o.jsx)(t.td,{children:"no"}),(0,o.jsx)(t.td,{children:"Optional pointer to this JSON Schema; editors use it for autocomplete."})]})]})]}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.code,{children:"additionalProperties: false"})," \u2014 any field not listed here is rejected with a typed error. Reserved names (",(0,o.jsx)(t.code,{children:"services"}),", ",(0,o.jsx)(t.code,{children:"routes"}),", ",(0,o.jsx)(t.code,{children:"hooks"}),", ",(0,o.jsx)(t.code,{children:"starterProjects"}),", ",(0,o.jsx)(t.code,{children:"userConfig"}),") are documented under ",(0,o.jsx)(t.a,{href:"#deferred-fields",children:"Deferred fields"})," and surface a more specific error code."]}),"\n",(0,o.jsxs)(t.h2,{id:"lfx-compatibility-declaration",children:[(0,o.jsx)(t.code,{children:"lfx"}),": compatibility declaration"]}),"\n",(0,o.jsx)(h.Code,{codeConfig:a,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:'"lfx"',props:{style:{color:"#A5D6FF"}}},{content:": { ",props:{style:{color:"#C9D1D9"}}},{content:'"compat"',props:{style:{color:"#7EE787"}}},{content:": [",props:{style:{color:"#C9D1D9"}}},{content:'"1"',props:{style:{color:"#A5D6FF"}}},{content:"] }",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Field"}),(0,o.jsx)(t.th,{children:"Type"}),(0,o.jsx)(t.th,{children:"Description"})]})}),(0,o.jsx)(t.tbody,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"compat"})}),(0,o.jsx)(t.td,{children:"array of strings"}),(0,o.jsxs)(t.td,{children:["Non-empty list of ",(0,o.jsx)(t.code,{children:"BUNDLE_\u200bAPI.md"})," contract versions this extension supports. Each entry is a positive-integer string."]})]})})]}),"\n",(0,o.jsxs)(t.p,{children:["The runtime compares ",(0,o.jsx)(t.code,{children:"str(BUNDLE_API_VERSION)"})," against this list. A mismatch fails install with ",(0,o.jsx)(t.code,{children:"version-constraint-unsatisfied"}),". v0 accepts only ",(0,o.jsx)(t.code,{children:'"1"'}),"; lists like ",(0,o.jsx)(t.code,{children:'["1", "2"]'})," become meaningful when a future BUNDLE_API revision ships."]}),"\n",(0,o.jsx)(t.h2,{id:"bundles",children:(0,o.jsx)(t.code,{children:"bundles"})}),"\n",(0,o.jsx)(h.Code,{codeConfig:a,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:'"bundles"',props:{style:{color:"#A5D6FF"}}},{content:": [",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" { ",props:{style:{color:"#C9D1D9"}}},{content:'"name"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"my_bundle"',props:{style:{color:"#A5D6FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:'"path"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"components/my_bundle"',props:{style:{color:"#A5D6FF"}}},{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"]",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Field"}),(0,o.jsx)(t.th,{children:"Type"}),(0,o.jsx)(t.th,{children:"Description"})]})}),(0,o.jsxs)(t.tbody,{children:[(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"name"})}),(0,o.jsx)(t.td,{children:"string"}),(0,o.jsxs)(t.td,{children:["Bundle name; addressable as ",(0,o.jsx)(t.code,{children:"ext::@"}),". Lowercase snake_case, starts with a letter, 2-64 chars."]})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"path"})}),(0,o.jsx)(t.td,{children:"string"}),(0,o.jsxs)(t.td,{children:["Path to the bundle directory, relative to the manifest. Must not start with ",(0,o.jsx)(t.code,{children:"/"})," or contain ",(0,o.jsx)(t.code,{children:".."}),"."]})]})]})]}),"\n",(0,o.jsxs)(t.p,{children:["v0 enforces ",(0,o.jsx)(t.code,{children:"minItems: 1, maxItems: 1"}),"; multi-bundle extensions are rejected with ",(0,o.jsx)(t.code,{children:"multi-bundle-deferred-in-this-milestone"})," and ship in a later epic."]}),"\n",(0,o.jsx)(t.h2,{id:"capabilities",children:(0,o.jsx)(t.code,{children:"capabilities"})}),"\n",(0,o.jsxs)(t.p,{children:["Optional. Defaults to ",(0,o.jsx)(t.code,{children:'{ "requiresCredentials": false }'}),"."]}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Field"}),(0,o.jsx)(t.th,{children:"Type"}),(0,o.jsx)(t.th,{children:"Description"})]})}),(0,o.jsx)(t.tbody,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"requiresCredentials"})}),(0,o.jsx)(t.td,{children:"bool"}),(0,o.jsx)(t.td,{children:"If true, the loader records that components in this bundle expect credential variables to be configured before use."})]})})]}),"\n",(0,o.jsxs)(t.p,{children:["Additional capability keys are rejected with ",(0,o.jsx)(t.code,{children:'extra="forbid"'})," so a misspelled key surfaces immediately rather than silently turning a feature off."]}),"\n",(0,o.jsx)(t.h2,{id:"deferred-fields",children:"Deferred fields"}),"\n",(0,o.jsxs)(t.p,{children:["The schema strips these names from the published ",(0,o.jsx)(t.code,{children:"properties"})," map but reserves them via ",(0,o.jsx)(t.a,{href:"https://schemas.langflow.org/extension/v1.json",children:(0,o.jsx)(t.code,{children:"x-deferred-fields"})}),', so a manifest that sets one gets a specific error code instead of the generic "additional property" message.']}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Reserved key"}),(0,o.jsx)(t.th,{children:"Replacement error code"}),(0,o.jsx)(t.th,{children:"Future epic"})]})}),(0,o.jsxs)(t.tbody,{children:[(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"services"})}),(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"field-deferred-in-this-milestone"})}),(0,o.jsx)(t.td,{children:"B2 \u2014 non-component primitives"})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"routes"})}),(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"field-deferred-in-this-milestone"})}),(0,o.jsx)(t.td,{children:"B2 \u2014 non-component primitives"})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"hooks"})}),(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"field-deferred-in-this-milestone"})}),(0,o.jsx)(t.td,{children:"B2 \u2014 non-component primitives"})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"starterProjects"})}),(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"field-deferred-in-this-milestone"})}),(0,o.jsx)(t.td,{children:"later milestone"})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"userConfig"})}),(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"field-deferred-in-this-milestone"})}),(0,o.jsx)(t.td,{children:"later milestone"})]})]})]}),"\n",(0,o.jsxs)(t.p,{children:["A manifest that sets any of these to a non-null value is rejected at validate / load time. Setting them to ",(0,o.jsx)(t.code,{children:"null"})," is allowed (the loader treats null and absent identically)."]}),"\n",(0,o.jsx)(t.h2,{id:"pyproject-alternative",children:"Pyproject alternative"}),"\n",(0,o.jsxs)(t.p,{children:["If you'd rather not ship a separate ",(0,o.jsx)(t.code,{children:"extension.json"})," next to ",(0,o.jsx)(t.code,{children:"pyproject.toml"}),", declare the same fields under ",(0,o.jsx)(t.code,{children:"[tool.langflow.extension]"}),":"]}),"\n",(0,o.jsx)(h.Code,{codeConfig:a,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"[",props:{style:{color:"#C9D1D9"}}},{content:"tool",props:{style:{color:"#FFA657"}}},{content:".",props:{style:{color:"#C9D1D9"}}},{content:"langflow",props:{style:{color:"#FFA657"}}},{content:".",props:{style:{color:"#C9D1D9"}}},{content:"extension",props:{style:{color:"#FFA657"}}},{content:"]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"id = ",props:{style:{color:"#C9D1D9"}}},{content:'"lfx-my-extension"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"version = ",props:{style:{color:"#C9D1D9"}}},{content:'"0.1.0"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"name = ",props:{style:{color:"#C9D1D9"}}},{content:'"My extension"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"[",props:{style:{color:"#C9D1D9"}}},{content:"tool",props:{style:{color:"#FFA657"}}},{content:".",props:{style:{color:"#C9D1D9"}}},{content:"langflow",props:{style:{color:"#FFA657"}}},{content:".",props:{style:{color:"#C9D1D9"}}},{content:"extension",props:{style:{color:"#FFA657"}}},{content:".",props:{style:{color:"#C9D1D9"}}},{content:"lfx",props:{style:{color:"#FFA657"}}},{content:"]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"compat = [",props:{style:{color:"#C9D1D9"}}},{content:'"1"',props:{style:{color:"#A5D6FF"}}},{content:"]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"[[",props:{style:{color:"#C9D1D9"}}},{content:"tool",props:{style:{color:"#FFA657"}}},{content:".",props:{style:{color:"#C9D1D9"}}},{content:"langflow",props:{style:{color:"#FFA657"}}},{content:".",props:{style:{color:"#C9D1D9"}}},{content:"extension",props:{style:{color:"#FFA657"}}},{content:".",props:{style:{color:"#C9D1D9"}}},{content:"bundles",props:{style:{color:"#FFA657"}}},{content:"]]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"name = ",props:{style:{color:"#C9D1D9"}}},{content:'"my_bundle"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"path = ",props:{style:{color:"#C9D1D9"}}},{content:'"components/my_bundle"',props:{style:{color:"#A5D6FF"}}}]}],lang:"toml"},annotations:[]}]}),"\n",(0,o.jsxs)(t.p,{children:["The loader prefers an ",(0,o.jsx)(t.code,{children:"extension.json"})," when both exist. The Pydantic validator is the same so error codes and field semantics are identical."]}),"\n",(0,o.jsx)(t.h2,{id:"error-codes-raised-against-this-manifest",children:"Error codes raised against this manifest"}),"\n",(0,o.jsxs)(t.p,{children:["The loader and validator both emit typed errors keyed by the manifest field that triggered them. The full code list is at ",(0,o.jsx)(t.a,{href:"https://github.com/langflow-ai/langflow/blob/main/src/lfx/src/lfx/extension/errors.py",children:(0,o.jsx)(t.code,{children:"lfx.extension.errors.ERROR_CODES"})}),"; the codes most relevant when authoring a manifest are:"]}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Code"}),(0,o.jsx)(t.th,{children:"Cause"})]})}),(0,o.jsxs)(t.tbody,{children:[(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"manifest-invalid"})}),(0,o.jsx)(t.td,{children:"Schema validation failed; the message names the field."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"manifest-not-found"})}),(0,o.jsxs)(t.td,{children:["No ",(0,o.jsx)(t.code,{children:"extension.json"})," and no ",(0,o.jsx)(t.code,{children:"[tool.langflow.extension]"})," section at the extension root."]})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"version-constraint-unsatisfied"})}),(0,o.jsxs)(t.td,{children:[(0,o.jsx)(t.code,{children:"lfx.compat"})," does not include this Langflow's ",(0,o.jsx)(t.code,{children:"BUNDLE_\u200bAPI_\u200bVERSION"}),"."]})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"field-deferred-in-this-milestone"})}),(0,o.jsx)(t.td,{children:"A reserved field was set to a non-null value."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"multi-bundle-deferred-in-this-milestone"})}),(0,o.jsxs)(t.td,{children:[(0,o.jsx)(t.code,{children:"bundles"})," has more than one entry."]})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"path-escape"})}),(0,o.jsxs)(t.td,{children:["A ",(0,o.jsx)(t.code,{children:"bundles[].path"})," resolves outside the manifest root (typically a symlink)."]})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"bundle-path-not-found"})}),(0,o.jsxs)(t.td,{children:[(0,o.jsx)(t.code,{children:"bundles[].path"})," does not exist or is not a directory."]})]})]})]}),"\n",(0,o.jsxs)(t.p,{children:["Run ",(0,o.jsx)(t.code,{children:"lfx extension validate "})," to see every error as a structured object with ",(0,o.jsx)(t.code,{children:"code"}),", ",(0,o.jsx)(t.code,{children:"message"}),", ",(0,o.jsx)(t.code,{children:"location"}),", ",(0,o.jsx)(t.code,{children:"hint"}),", and ",(0,o.jsx)(t.code,{children:"ref_url"}),"."]}),"\n",(0,o.jsx)(t.h2,{id:"see-also",children:"See also"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"./extensions-overview",children:"Bundle extensions overview"})}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"./extensions-quickstart",children:"Build your first extension"})}),"\n"]})]})}function j(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(x,{...e})}):x(e)}function f(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}}}]); \ No newline at end of file diff --git a/assets/js/85d722c9.0c7f35d2.js b/assets/js/85d722c9.0c7f35d2.js new file mode 100644 index 0000000000..9a98ee464f --- /dev/null +++ b/assets/js/85d722c9.0c7f35d2.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunklangflow_docs=globalThis.webpackChunklangflow_docs||[]).push([[12513],{16206:(e,t,n)=>{n.r(t),n.d(t,{CH:()=>h,assets:()=>d,chCodeConfig:()=>a,contentTitle:()=>i,default:()=>j,frontMatter:()=>c,metadata:()=>s,toc:()=>p});const s=JSON.parse('{"id":"Develop/extensions-manifest","title":"Manifest reference","description":"This page is the reference for the extension.json manifest the Langflow Extension loader consumes.","source":"@site/versioned_docs/version-1.10.0/Develop/extensions-manifest.mdx","sourceDirName":"Develop","slug":"/extensions-manifest","permalink":"/extensions-manifest","draft":false,"unlisted":false,"tags":[],"version":"1.10.0","frontMatter":{"title":"Manifest reference","slug":"/extensions-manifest"},"sidebar":"docs","previous":{"title":"Langflow Extension quickstart","permalink":"/extensions-quickstart"},"next":{"title":"Langflow deployment overview","permalink":"/deployment-overview"}}');var o=n(74848),r=n(28453),l=n(24754);const c={title:"Manifest reference",slug:"/extensions-manifest"},i=void 0,d={},h={annotations:l.hk,Code:l.Cy},a={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},p=[{value:"Top-level fields",id:"top-level-fields",level:2},{value:"lfx: compatibility declaration",id:"lfx-compatibility-declaration",level:2},{value:"bundles",id:"bundles",level:2},{value:"capabilities",id:"capabilities",level:2},{value:"Deferred fields",id:"deferred-fields",level:2},{value:"Pyproject alternative",id:"pyproject-alternative",level:2},{value:"Error codes raised against this manifest",id:"error-codes-raised-against-this-manifest",level:2},{value:"See also",id:"see-also",level:2}];function x(e){const t={a:"a",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return h||f("CH",!1),h.Code||f("CH.Code",!0),(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }'}}),"\n",(0,o.jsxs)(t.p,{children:["This page is the reference for the ",(0,o.jsx)(t.code,{children:"extension.json"})," manifest the Langflow Extension loader consumes."]}),"\n",(0,o.jsxs)(t.p,{children:["The canonical JSON Schema lives at ",(0,o.jsx)(t.a,{href:"https://schemas.langflow.org/extension/v1.json",children:(0,o.jsx)(t.code,{children:"https://schemas.langflow.org/extension/v1.json"})})," and is generated from the Pydantic model at ",(0,o.jsx)(t.a,{href:"https://github.com/langflow-ai/langflow/blob/main/src/lfx/src/lfx/extension/manifest.py",children:(0,o.jsx)(t.code,{children:"lfx.extension.manifest.ExtensionManifest"})}),"."]}),"\n",(0,o.jsx)(t.p,{children:"To export the live schema, run:"}),"\n",(0,o.jsx)(h.Code,{codeConfig:a,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"lfx ",props:{style:{color:"#FFA657"}}},{content:"extension schema ",props:{style:{color:"#A5D6FF"}}},{content:"--output ",props:{style:{color:"#79C0FF"}}},{content:"extension.schema.json",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,o.jsxs)(t.p,{children:["Use the ",(0,o.jsx)(t.code,{children:"$schema"})," reference in your manifest so editors can autocomplete and validate inline:"]}),"\n",(0,o.jsx)(h.Code,{codeConfig:a,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"{",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "$schema"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"https://schemas.langflow.org/extension/v1.json"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "id"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"lfx-my-extension"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "version"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"0.1.0"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "name"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"My extension"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "lfx"',props:{style:{color:"#7EE787"}}},{content:": { ",props:{style:{color:"#C9D1D9"}}},{content:'"compat"',props:{style:{color:"#7EE787"}}},{content:": [",props:{style:{color:"#C9D1D9"}}},{content:'"1"',props:{style:{color:"#A5D6FF"}}},{content:"] },",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "bundles"',props:{style:{color:"#7EE787"}}},{content:": [{ ",props:{style:{color:"#C9D1D9"}}},{content:'"name"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"my_bundle"',props:{style:{color:"#A5D6FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:'"path"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"components/my_bundle"',props:{style:{color:"#A5D6FF"}}},{content:" }]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"}",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]}),"\n",(0,o.jsx)(t.h2,{id:"top-level-fields",children:"Top-level fields"}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Field"}),(0,o.jsx)(t.th,{children:"Type"}),(0,o.jsx)(t.th,{children:"Required"}),(0,o.jsx)(t.th,{children:"Description"})]})}),(0,o.jsxs)(t.tbody,{children:[(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"id"})}),(0,o.jsx)(t.td,{children:"string"}),(0,o.jsx)(t.td,{children:"yes"}),(0,o.jsxs)(t.td,{children:["Globally-unique extension ID. Lowercase, hyphenated, starts with a letter, 2-64 chars. Convention: ",(0,o.jsx)(t.code,{children:"lfx-"}),"."]})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"version"})}),(0,o.jsx)(t.td,{children:"string"}),(0,o.jsx)(t.td,{children:"yes"}),(0,o.jsx)(t.td,{children:"SemVer 2.0.0 version string for this extension release."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"name"})}),(0,o.jsx)(t.td,{children:"string"}),(0,o.jsx)(t.td,{children:"yes"}),(0,o.jsx)(t.td,{children:"Human-readable display name shown in the Langflow palette. 1-200 chars."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"description"})}),(0,o.jsx)(t.td,{children:"string | null"}),(0,o.jsx)(t.td,{children:"no"}),(0,o.jsx)(t.td,{children:"Optional one-paragraph summary, max 2000 chars."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"lfx"})}),(0,o.jsx)(t.td,{children:"object"}),(0,o.jsx)(t.td,{children:"yes"}),(0,o.jsxs)(t.td,{children:[(0,o.jsx)(t.a,{href:"#lfx-compatibility-declaration",children:"Compatibility declaration"})," against the BUNDLE_API contract."]})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"bundles"})}),(0,o.jsx)(t.td,{children:"array"}),(0,o.jsx)(t.td,{children:"yes"}),(0,o.jsxs)(t.td,{children:[(0,o.jsx)(t.a,{href:"#bundles",children:"Bundle list"}),". v0 accepts ",(0,o.jsx)(t.strong,{children:"exactly one"})," bundle."]})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"capabilities"})}),(0,o.jsx)(t.td,{children:"object"}),(0,o.jsx)(t.td,{children:"no"}),(0,o.jsxs)(t.td,{children:[(0,o.jsx)(t.a,{href:"#capabilities",children:"Optional capability flags"}),". Defaults to all-false."]})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"$schema"})}),(0,o.jsx)(t.td,{children:"string"}),(0,o.jsx)(t.td,{children:"no"}),(0,o.jsx)(t.td,{children:"Optional pointer to this JSON Schema; editors use it for autocomplete."})]})]})]}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.code,{children:"additionalProperties: false"})," \u2014 any field not listed here is rejected with a typed error. Reserved names (",(0,o.jsx)(t.code,{children:"services"}),", ",(0,o.jsx)(t.code,{children:"routes"}),", ",(0,o.jsx)(t.code,{children:"hooks"}),", ",(0,o.jsx)(t.code,{children:"starterProjects"}),", ",(0,o.jsx)(t.code,{children:"userConfig"}),") are documented under ",(0,o.jsx)(t.a,{href:"#deferred-fields",children:"Deferred fields"})," and surface a more specific error code."]}),"\n",(0,o.jsxs)(t.h2,{id:"lfx-compatibility-declaration",children:[(0,o.jsx)(t.code,{children:"lfx"}),": compatibility declaration"]}),"\n",(0,o.jsx)(h.Code,{codeConfig:a,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:'"lfx"',props:{style:{color:"#A5D6FF"}}},{content:": { ",props:{style:{color:"#C9D1D9"}}},{content:'"compat"',props:{style:{color:"#7EE787"}}},{content:": [",props:{style:{color:"#C9D1D9"}}},{content:'"1"',props:{style:{color:"#A5D6FF"}}},{content:"] }",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Field"}),(0,o.jsx)(t.th,{children:"Type"}),(0,o.jsx)(t.th,{children:"Description"})]})}),(0,o.jsx)(t.tbody,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"compat"})}),(0,o.jsx)(t.td,{children:"array of strings"}),(0,o.jsxs)(t.td,{children:["Non-empty list of ",(0,o.jsx)(t.code,{children:"BUNDLE_\u200bAPI.md"})," contract versions this extension supports. Each entry is a positive-integer string."]})]})})]}),"\n",(0,o.jsxs)(t.p,{children:["The runtime compares ",(0,o.jsx)(t.code,{children:"str(BUNDLE_API_VERSION)"})," against this list. A mismatch fails install with ",(0,o.jsx)(t.code,{children:"version-constraint-unsatisfied"}),". v0 accepts only ",(0,o.jsx)(t.code,{children:'"1"'}),"; lists like ",(0,o.jsx)(t.code,{children:'["1", "2"]'})," become meaningful when a future BUNDLE_API revision ships."]}),"\n",(0,o.jsx)(t.h2,{id:"bundles",children:(0,o.jsx)(t.code,{children:"bundles"})}),"\n",(0,o.jsx)(h.Code,{codeConfig:a,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:'"bundles"',props:{style:{color:"#A5D6FF"}}},{content:": [",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" { ",props:{style:{color:"#C9D1D9"}}},{content:'"name"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"my_bundle"',props:{style:{color:"#A5D6FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:'"path"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"components/my_bundle"',props:{style:{color:"#A5D6FF"}}},{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"]",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Field"}),(0,o.jsx)(t.th,{children:"Type"}),(0,o.jsx)(t.th,{children:"Description"})]})}),(0,o.jsxs)(t.tbody,{children:[(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"name"})}),(0,o.jsx)(t.td,{children:"string"}),(0,o.jsxs)(t.td,{children:["Bundle name; addressable as ",(0,o.jsx)(t.code,{children:"ext::@"}),". Lowercase snake_case, starts with a letter, 2-64 chars."]})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"path"})}),(0,o.jsx)(t.td,{children:"string"}),(0,o.jsxs)(t.td,{children:["Path to the bundle directory, relative to the manifest. Must not start with ",(0,o.jsx)(t.code,{children:"/"})," or contain ",(0,o.jsx)(t.code,{children:".."}),"."]})]})]})]}),"\n",(0,o.jsxs)(t.p,{children:["v0 enforces ",(0,o.jsx)(t.code,{children:"minItems: 1, maxItems: 1"}),"; multi-bundle extensions are rejected with ",(0,o.jsx)(t.code,{children:"multi-bundle-deferred-in-this-milestone"})," and ship in a later epic."]}),"\n",(0,o.jsx)(t.h2,{id:"capabilities",children:(0,o.jsx)(t.code,{children:"capabilities"})}),"\n",(0,o.jsxs)(t.p,{children:["Optional. Defaults to ",(0,o.jsx)(t.code,{children:'{ "requiresCredentials": false }'}),"."]}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Field"}),(0,o.jsx)(t.th,{children:"Type"}),(0,o.jsx)(t.th,{children:"Description"})]})}),(0,o.jsx)(t.tbody,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"requiresCredentials"})}),(0,o.jsx)(t.td,{children:"bool"}),(0,o.jsx)(t.td,{children:"If true, the loader records that components in this bundle expect credential variables to be configured before use."})]})})]}),"\n",(0,o.jsxs)(t.p,{children:["Additional capability keys are rejected with ",(0,o.jsx)(t.code,{children:'extra="forbid"'})," so a misspelled key surfaces immediately rather than silently turning a feature off."]}),"\n",(0,o.jsx)(t.h2,{id:"deferred-fields",children:"Deferred fields"}),"\n",(0,o.jsxs)(t.p,{children:["The schema strips these names from the published ",(0,o.jsx)(t.code,{children:"properties"})," map but reserves them via ",(0,o.jsx)(t.a,{href:"https://schemas.langflow.org/extension/v1.json",children:(0,o.jsx)(t.code,{children:"x-deferred-fields"})}),', so a manifest that sets one gets a specific error code instead of the generic "additional property" message.']}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Reserved key"}),(0,o.jsx)(t.th,{children:"Replacement error code"}),(0,o.jsx)(t.th,{children:"Future epic"})]})}),(0,o.jsxs)(t.tbody,{children:[(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"services"})}),(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"field-deferred-in-this-milestone"})}),(0,o.jsx)(t.td,{children:"B2 \u2014 non-component primitives"})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"routes"})}),(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"field-deferred-in-this-milestone"})}),(0,o.jsx)(t.td,{children:"B2 \u2014 non-component primitives"})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"hooks"})}),(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"field-deferred-in-this-milestone"})}),(0,o.jsx)(t.td,{children:"B2 \u2014 non-component primitives"})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"starterProjects"})}),(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"field-deferred-in-this-milestone"})}),(0,o.jsx)(t.td,{children:"later milestone"})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"userConfig"})}),(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"field-deferred-in-this-milestone"})}),(0,o.jsx)(t.td,{children:"later milestone"})]})]})]}),"\n",(0,o.jsxs)(t.p,{children:["A manifest that sets any of these to a non-null value is rejected at validate / load time. Setting them to ",(0,o.jsx)(t.code,{children:"null"})," is allowed (the loader treats null and absent identically)."]}),"\n",(0,o.jsx)(t.h2,{id:"pyproject-alternative",children:"Pyproject alternative"}),"\n",(0,o.jsxs)(t.p,{children:["If you'd rather not ship a separate ",(0,o.jsx)(t.code,{children:"extension.json"})," next to ",(0,o.jsx)(t.code,{children:"pyproject.toml"}),", declare the same fields under ",(0,o.jsx)(t.code,{children:"[tool.langflow.extension]"}),":"]}),"\n",(0,o.jsx)(h.Code,{codeConfig:a,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"[",props:{style:{color:"#C9D1D9"}}},{content:"tool",props:{style:{color:"#FFA657"}}},{content:".",props:{style:{color:"#C9D1D9"}}},{content:"langflow",props:{style:{color:"#FFA657"}}},{content:".",props:{style:{color:"#C9D1D9"}}},{content:"extension",props:{style:{color:"#FFA657"}}},{content:"]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"id = ",props:{style:{color:"#C9D1D9"}}},{content:'"lfx-my-extension"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"version = ",props:{style:{color:"#C9D1D9"}}},{content:'"0.1.0"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"name = ",props:{style:{color:"#C9D1D9"}}},{content:'"My extension"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"[",props:{style:{color:"#C9D1D9"}}},{content:"tool",props:{style:{color:"#FFA657"}}},{content:".",props:{style:{color:"#C9D1D9"}}},{content:"langflow",props:{style:{color:"#FFA657"}}},{content:".",props:{style:{color:"#C9D1D9"}}},{content:"extension",props:{style:{color:"#FFA657"}}},{content:".",props:{style:{color:"#C9D1D9"}}},{content:"lfx",props:{style:{color:"#FFA657"}}},{content:"]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"compat = [",props:{style:{color:"#C9D1D9"}}},{content:'"1"',props:{style:{color:"#A5D6FF"}}},{content:"]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"[[",props:{style:{color:"#C9D1D9"}}},{content:"tool",props:{style:{color:"#FFA657"}}},{content:".",props:{style:{color:"#C9D1D9"}}},{content:"langflow",props:{style:{color:"#FFA657"}}},{content:".",props:{style:{color:"#C9D1D9"}}},{content:"extension",props:{style:{color:"#FFA657"}}},{content:".",props:{style:{color:"#C9D1D9"}}},{content:"bundles",props:{style:{color:"#FFA657"}}},{content:"]]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"name = ",props:{style:{color:"#C9D1D9"}}},{content:'"my_bundle"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"path = ",props:{style:{color:"#C9D1D9"}}},{content:'"components/my_bundle"',props:{style:{color:"#A5D6FF"}}}]}],lang:"toml"},annotations:[]}]}),"\n",(0,o.jsxs)(t.p,{children:["The loader prefers an ",(0,o.jsx)(t.code,{children:"extension.json"})," when both exist. The Pydantic validator is the same so error codes and field semantics are identical."]}),"\n",(0,o.jsx)(t.h2,{id:"error-codes-raised-against-this-manifest",children:"Error codes raised against this manifest"}),"\n",(0,o.jsxs)(t.p,{children:["The loader and validator both emit typed errors keyed by the manifest field that triggered them. The full code list is at ",(0,o.jsx)(t.a,{href:"https://github.com/langflow-ai/langflow/blob/main/src/lfx/src/lfx/extension/errors.py",children:(0,o.jsx)(t.code,{children:"lfx.extension.errors.ERROR_CODES"})}),"; the codes most relevant when authoring a manifest are:"]}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Code"}),(0,o.jsx)(t.th,{children:"Cause"})]})}),(0,o.jsxs)(t.tbody,{children:[(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"manifest-invalid"})}),(0,o.jsx)(t.td,{children:"Schema validation failed; the message names the field."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"manifest-not-found"})}),(0,o.jsxs)(t.td,{children:["No ",(0,o.jsx)(t.code,{children:"extension.json"})," and no ",(0,o.jsx)(t.code,{children:"[tool.langflow.extension]"})," section at the extension root."]})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"version-constraint-unsatisfied"})}),(0,o.jsxs)(t.td,{children:[(0,o.jsx)(t.code,{children:"lfx.compat"})," does not include this Langflow's ",(0,o.jsx)(t.code,{children:"BUNDLE_\u200bAPI_\u200bVERSION"}),"."]})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"field-deferred-in-this-milestone"})}),(0,o.jsx)(t.td,{children:"A reserved field was set to a non-null value."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"multi-bundle-deferred-in-this-milestone"})}),(0,o.jsxs)(t.td,{children:[(0,o.jsx)(t.code,{children:"bundles"})," has more than one entry."]})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"path-escape"})}),(0,o.jsxs)(t.td,{children:["A ",(0,o.jsx)(t.code,{children:"bundles[].path"})," resolves outside the manifest root (typically a symlink)."]})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"bundle-path-not-found"})}),(0,o.jsxs)(t.td,{children:[(0,o.jsx)(t.code,{children:"bundles[].path"})," does not exist or is not a directory."]})]})]})]}),"\n",(0,o.jsxs)(t.p,{children:["Run ",(0,o.jsx)(t.code,{children:"lfx extension validate "})," to see every error as a structured object with ",(0,o.jsx)(t.code,{children:"code"}),", ",(0,o.jsx)(t.code,{children:"message"}),", ",(0,o.jsx)(t.code,{children:"location"}),", ",(0,o.jsx)(t.code,{children:"hint"}),", and ",(0,o.jsx)(t.code,{children:"ref_url"}),"."]}),"\n",(0,o.jsx)(t.h2,{id:"see-also",children:"See also"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"./extensions-overview",children:"Bundle extensions overview"})}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"./extensions-quickstart",children:"Build your first extension"})}),"\n"]})]})}function j(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(x,{...e})}):x(e)}function f(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}}}]); \ No newline at end of file diff --git a/assets/js/85d722c9.6dd5a77c.js b/assets/js/85d722c9.6dd5a77c.js deleted file mode 100644 index e10aca468f..0000000000 --- a/assets/js/85d722c9.6dd5a77c.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunklangflow_docs=globalThis.webpackChunklangflow_docs||[]).push([[12513],{16206:(e,t,n)=>{n.r(t),n.d(t,{CH:()=>h,assets:()=>d,chCodeConfig:()=>a,contentTitle:()=>i,default:()=>j,frontMatter:()=>c,metadata:()=>s,toc:()=>p});const s=JSON.parse('{"id":"Develop/extensions-manifest","title":"Manifest reference","description":"This page is the reference for the extension.json manifest the Langflow Extension loader consumes.","source":"@site/versioned_docs/version-1.10.0/Develop/extensions-manifest.mdx","sourceDirName":"Develop","slug":"/extensions-manifest","permalink":"/extensions-manifest","draft":false,"unlisted":false,"tags":[],"version":"1.10.0","frontMatter":{"title":"Manifest reference","slug":"/extensions-manifest"},"sidebar":"docs","previous":{"title":"Langflow Extension quickstart","permalink":"/extensions-quickstart"},"next":{"title":"Langflow deployment overview","permalink":"/deployment-overview"}}');var o=n(74848),r=n(28453),l=n(24754);const c={title:"Manifest reference",slug:"/extensions-manifest"},i=void 0,d={},h={annotations:l.hk,Code:l.Cy},a={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},p=[{value:"Top-level fields",id:"top-level-fields",level:2},{value:"lfx: compatibility declaration",id:"lfx-compatibility-declaration",level:2},{value:"bundles",id:"bundles",level:2},{value:"capabilities",id:"capabilities",level:2},{value:"Deferred fields",id:"deferred-fields",level:2},{value:"Pyproject alternative",id:"pyproject-alternative",level:2},{value:"Error codes raised against this manifest",id:"error-codes-raised-against-this-manifest",level:2},{value:"See also",id:"see-also",level:2}];function x(e){const t={a:"a",code:"code",h2:"h2",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,r.R)(),...e.components};return h||f("CH",!1),h.Code||f("CH.Code",!0),(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }'}}),"\n",(0,o.jsxs)(t.p,{children:["This page is the reference for the ",(0,o.jsx)(t.code,{children:"extension.json"})," manifest the Langflow Extension loader consumes."]}),"\n",(0,o.jsxs)(t.p,{children:["The canonical JSON Schema lives at ",(0,o.jsx)(t.a,{href:"https://schemas.langflow.org/extension/v1.json",children:(0,o.jsx)(t.code,{children:"https://schemas.langflow.org/extension/v1.json"})})," and is generated from the Pydantic model at ",(0,o.jsx)(t.a,{href:"https://github.com/langflow-ai/langflow/blob/main/src/lfx/src/lfx/extension/manifest.py",children:(0,o.jsx)(t.code,{children:"lfx.extension.manifest.ExtensionManifest"})}),"."]}),"\n",(0,o.jsx)(t.p,{children:"To export the live schema, run:"}),"\n",(0,o.jsx)(h.Code,{codeConfig:a,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"lfx ",props:{style:{color:"#FFA657"}}},{content:"extension schema ",props:{style:{color:"#A5D6FF"}}},{content:"--output ",props:{style:{color:"#79C0FF"}}},{content:"extension.schema.json",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,o.jsxs)(t.p,{children:["Use the ",(0,o.jsx)(t.code,{children:"$schema"})," reference in your manifest so editors can autocomplete and validate inline:"]}),"\n",(0,o.jsx)(h.Code,{codeConfig:a,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"{",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "$schema"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"https://schemas.langflow.org/extension/v1.json"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "id"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"lfx-my-extension"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "version"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"0.1.0"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "name"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"My extension"',props:{style:{color:"#A5D6FF"}}},{content:",",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "lfx"',props:{style:{color:"#7EE787"}}},{content:": { ",props:{style:{color:"#C9D1D9"}}},{content:'"compat"',props:{style:{color:"#7EE787"}}},{content:": [",props:{style:{color:"#C9D1D9"}}},{content:'"1"',props:{style:{color:"#A5D6FF"}}},{content:"] },",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:' "bundles"',props:{style:{color:"#7EE787"}}},{content:": [{ ",props:{style:{color:"#C9D1D9"}}},{content:'"name"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"my_bundle"',props:{style:{color:"#A5D6FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:'"path"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"components/my_bundle"',props:{style:{color:"#A5D6FF"}}},{content:" }]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"}",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]}),"\n",(0,o.jsx)(t.h2,{id:"top-level-fields",children:"Top-level fields"}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Field"}),(0,o.jsx)(t.th,{children:"Type"}),(0,o.jsx)(t.th,{children:"Required"}),(0,o.jsx)(t.th,{children:"Description"})]})}),(0,o.jsxs)(t.tbody,{children:[(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"id"})}),(0,o.jsx)(t.td,{children:"string"}),(0,o.jsx)(t.td,{children:"yes"}),(0,o.jsxs)(t.td,{children:["Globally-unique extension ID. Lowercase, hyphenated, starts with a letter, 2-64 chars. Convention: ",(0,o.jsx)(t.code,{children:"lfx-"}),"."]})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"version"})}),(0,o.jsx)(t.td,{children:"string"}),(0,o.jsx)(t.td,{children:"yes"}),(0,o.jsx)(t.td,{children:"SemVer 2.0.0 version string for this extension release."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"name"})}),(0,o.jsx)(t.td,{children:"string"}),(0,o.jsx)(t.td,{children:"yes"}),(0,o.jsx)(t.td,{children:"Human-readable display name shown in the Langflow palette. 1-200 chars."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"description"})}),(0,o.jsx)(t.td,{children:"string | null"}),(0,o.jsx)(t.td,{children:"no"}),(0,o.jsx)(t.td,{children:"Optional one-paragraph summary, max 2000 chars."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"lfx"})}),(0,o.jsx)(t.td,{children:"object"}),(0,o.jsx)(t.td,{children:"yes"}),(0,o.jsxs)(t.td,{children:[(0,o.jsx)(t.a,{href:"#lfx-compatibility-declaration",children:"Compatibility declaration"})," against the BUNDLE_API contract."]})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"bundles"})}),(0,o.jsx)(t.td,{children:"array"}),(0,o.jsx)(t.td,{children:"yes"}),(0,o.jsxs)(t.td,{children:[(0,o.jsx)(t.a,{href:"#bundles",children:"Bundle list"}),". v0 accepts ",(0,o.jsx)(t.strong,{children:"exactly one"})," bundle."]})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"capabilities"})}),(0,o.jsx)(t.td,{children:"object"}),(0,o.jsx)(t.td,{children:"no"}),(0,o.jsxs)(t.td,{children:[(0,o.jsx)(t.a,{href:"#capabilities",children:"Optional capability flags"}),". Defaults to all-false."]})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"$schema"})}),(0,o.jsx)(t.td,{children:"string"}),(0,o.jsx)(t.td,{children:"no"}),(0,o.jsx)(t.td,{children:"Optional pointer to this JSON Schema; editors use it for autocomplete."})]})]})]}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.code,{children:"additionalProperties: false"})," \u2014 any field not listed here is rejected with a typed error. Reserved names (",(0,o.jsx)(t.code,{children:"services"}),", ",(0,o.jsx)(t.code,{children:"routes"}),", ",(0,o.jsx)(t.code,{children:"hooks"}),", ",(0,o.jsx)(t.code,{children:"starterProjects"}),", ",(0,o.jsx)(t.code,{children:"userConfig"}),") are documented under ",(0,o.jsx)(t.a,{href:"#deferred-fields",children:"Deferred fields"})," and surface a more specific error code."]}),"\n",(0,o.jsxs)(t.h2,{id:"lfx-compatibility-declaration",children:[(0,o.jsx)(t.code,{children:"lfx"}),": compatibility declaration"]}),"\n",(0,o.jsx)(h.Code,{codeConfig:a,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:'"lfx"',props:{style:{color:"#A5D6FF"}}},{content:": { ",props:{style:{color:"#C9D1D9"}}},{content:'"compat"',props:{style:{color:"#7EE787"}}},{content:": [",props:{style:{color:"#C9D1D9"}}},{content:'"1"',props:{style:{color:"#A5D6FF"}}},{content:"] }",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Field"}),(0,o.jsx)(t.th,{children:"Type"}),(0,o.jsx)(t.th,{children:"Description"})]})}),(0,o.jsx)(t.tbody,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"compat"})}),(0,o.jsx)(t.td,{children:"array of strings"}),(0,o.jsxs)(t.td,{children:["Non-empty list of ",(0,o.jsx)(t.code,{children:"BUNDLE_\u200bAPI.md"})," contract versions this extension supports. Each entry is a positive-integer string."]})]})})]}),"\n",(0,o.jsxs)(t.p,{children:["The runtime compares ",(0,o.jsx)(t.code,{children:"str(BUNDLE_API_VERSION)"})," against this list. A mismatch fails install with ",(0,o.jsx)(t.code,{children:"version-constraint-unsatisfied"}),". v0 accepts only ",(0,o.jsx)(t.code,{children:'"1"'}),"; lists like ",(0,o.jsx)(t.code,{children:'["1", "2"]'})," become meaningful when a future BUNDLE_API revision ships."]}),"\n",(0,o.jsx)(t.h2,{id:"bundles",children:(0,o.jsx)(t.code,{children:"bundles"})}),"\n",(0,o.jsx)(h.Code,{codeConfig:a,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:'"bundles"',props:{style:{color:"#A5D6FF"}}},{content:": [",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" { ",props:{style:{color:"#C9D1D9"}}},{content:'"name"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"my_bundle"',props:{style:{color:"#A5D6FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:'"path"',props:{style:{color:"#7EE787"}}},{content:": ",props:{style:{color:"#C9D1D9"}}},{content:'"components/my_bundle"',props:{style:{color:"#A5D6FF"}}},{content:" }",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"]",props:{style:{color:"#C9D1D9"}}}]}],lang:"json"},annotations:[]}]}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Field"}),(0,o.jsx)(t.th,{children:"Type"}),(0,o.jsx)(t.th,{children:"Description"})]})}),(0,o.jsxs)(t.tbody,{children:[(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"name"})}),(0,o.jsx)(t.td,{children:"string"}),(0,o.jsxs)(t.td,{children:["Bundle name; addressable as ",(0,o.jsx)(t.code,{children:"ext::@"}),". Lowercase snake_case, starts with a letter, 2-64 chars."]})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"path"})}),(0,o.jsx)(t.td,{children:"string"}),(0,o.jsxs)(t.td,{children:["Path to the bundle directory, relative to the manifest. Must not start with ",(0,o.jsx)(t.code,{children:"/"})," or contain ",(0,o.jsx)(t.code,{children:".."}),"."]})]})]})]}),"\n",(0,o.jsxs)(t.p,{children:["v0 enforces ",(0,o.jsx)(t.code,{children:"minItems: 1, maxItems: 1"}),"; multi-bundle extensions are rejected with ",(0,o.jsx)(t.code,{children:"multi-bundle-deferred-in-this-milestone"})," and ship in a later epic."]}),"\n",(0,o.jsx)(t.h2,{id:"capabilities",children:(0,o.jsx)(t.code,{children:"capabilities"})}),"\n",(0,o.jsxs)(t.p,{children:["Optional. Defaults to ",(0,o.jsx)(t.code,{children:'{ "requiresCredentials": false }'}),"."]}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Field"}),(0,o.jsx)(t.th,{children:"Type"}),(0,o.jsx)(t.th,{children:"Description"})]})}),(0,o.jsx)(t.tbody,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"requiresCredentials"})}),(0,o.jsx)(t.td,{children:"bool"}),(0,o.jsx)(t.td,{children:"If true, the loader records that components in this bundle expect credential variables to be configured before use."})]})})]}),"\n",(0,o.jsxs)(t.p,{children:["Additional capability keys are rejected with ",(0,o.jsx)(t.code,{children:'extra="forbid"'})," so a misspelled key surfaces immediately rather than silently turning a feature off."]}),"\n",(0,o.jsx)(t.h2,{id:"deferred-fields",children:"Deferred fields"}),"\n",(0,o.jsxs)(t.p,{children:["The schema strips these names from the published ",(0,o.jsx)(t.code,{children:"properties"})," map but reserves them via ",(0,o.jsx)(t.a,{href:"https://schemas.langflow.org/extension/v1.json",children:(0,o.jsx)(t.code,{children:"x-deferred-fields"})}),', so a manifest that sets one gets a specific error code instead of the generic "additional property" message.']}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Reserved key"}),(0,o.jsx)(t.th,{children:"Replacement error code"}),(0,o.jsx)(t.th,{children:"Future epic"})]})}),(0,o.jsxs)(t.tbody,{children:[(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"services"})}),(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"field-deferred-in-this-milestone"})}),(0,o.jsx)(t.td,{children:"B2 \u2014 non-component primitives"})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"routes"})}),(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"field-deferred-in-this-milestone"})}),(0,o.jsx)(t.td,{children:"B2 \u2014 non-component primitives"})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"hooks"})}),(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"field-deferred-in-this-milestone"})}),(0,o.jsx)(t.td,{children:"B2 \u2014 non-component primitives"})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"starterProjects"})}),(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"field-deferred-in-this-milestone"})}),(0,o.jsx)(t.td,{children:"later milestone"})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"userConfig"})}),(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"field-deferred-in-this-milestone"})}),(0,o.jsx)(t.td,{children:"later milestone"})]})]})]}),"\n",(0,o.jsxs)(t.p,{children:["A manifest that sets any of these to a non-null value is rejected at validate / load time. Setting them to ",(0,o.jsx)(t.code,{children:"null"})," is allowed (the loader treats null and absent identically)."]}),"\n",(0,o.jsx)(t.h2,{id:"pyproject-alternative",children:"Pyproject alternative"}),"\n",(0,o.jsxs)(t.p,{children:["If you'd rather not ship a separate ",(0,o.jsx)(t.code,{children:"extension.json"})," next to ",(0,o.jsx)(t.code,{children:"pyproject.toml"}),", declare the same fields under ",(0,o.jsx)(t.code,{children:"[tool.langflow.extension]"}),":"]}),"\n",(0,o.jsx)(h.Code,{codeConfig:a,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"[",props:{style:{color:"#C9D1D9"}}},{content:"tool",props:{style:{color:"#FFA657"}}},{content:".",props:{style:{color:"#C9D1D9"}}},{content:"langflow",props:{style:{color:"#FFA657"}}},{content:".",props:{style:{color:"#C9D1D9"}}},{content:"extension",props:{style:{color:"#FFA657"}}},{content:"]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"id = ",props:{style:{color:"#C9D1D9"}}},{content:'"lfx-my-extension"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"version = ",props:{style:{color:"#C9D1D9"}}},{content:'"0.1.0"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"name = ",props:{style:{color:"#C9D1D9"}}},{content:'"My extension"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"[",props:{style:{color:"#C9D1D9"}}},{content:"tool",props:{style:{color:"#FFA657"}}},{content:".",props:{style:{color:"#C9D1D9"}}},{content:"langflow",props:{style:{color:"#FFA657"}}},{content:".",props:{style:{color:"#C9D1D9"}}},{content:"extension",props:{style:{color:"#FFA657"}}},{content:".",props:{style:{color:"#C9D1D9"}}},{content:"lfx",props:{style:{color:"#FFA657"}}},{content:"]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"compat = [",props:{style:{color:"#C9D1D9"}}},{content:'"1"',props:{style:{color:"#A5D6FF"}}},{content:"]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"[[",props:{style:{color:"#C9D1D9"}}},{content:"tool",props:{style:{color:"#FFA657"}}},{content:".",props:{style:{color:"#C9D1D9"}}},{content:"langflow",props:{style:{color:"#FFA657"}}},{content:".",props:{style:{color:"#C9D1D9"}}},{content:"extension",props:{style:{color:"#FFA657"}}},{content:".",props:{style:{color:"#C9D1D9"}}},{content:"bundles",props:{style:{color:"#FFA657"}}},{content:"]]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"name = ",props:{style:{color:"#C9D1D9"}}},{content:'"my_bundle"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"path = ",props:{style:{color:"#C9D1D9"}}},{content:'"components/my_bundle"',props:{style:{color:"#A5D6FF"}}}]}],lang:"toml"},annotations:[]}]}),"\n",(0,o.jsxs)(t.p,{children:["The loader prefers an ",(0,o.jsx)(t.code,{children:"extension.json"})," when both exist. The Pydantic validator is the same so error codes and field semantics are identical."]}),"\n",(0,o.jsx)(t.h2,{id:"error-codes-raised-against-this-manifest",children:"Error codes raised against this manifest"}),"\n",(0,o.jsxs)(t.p,{children:["The loader and validator both emit typed errors keyed by the manifest field that triggered them. The full code list is at ",(0,o.jsx)(t.a,{href:"https://github.com/langflow-ai/langflow/blob/main/src/lfx/src/lfx/extension/errors.py",children:(0,o.jsx)(t.code,{children:"lfx.extension.errors.ERROR_CODES"})}),"; the codes most relevant when authoring a manifest are:"]}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Code"}),(0,o.jsx)(t.th,{children:"Cause"})]})}),(0,o.jsxs)(t.tbody,{children:[(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"manifest-invalid"})}),(0,o.jsx)(t.td,{children:"Schema validation failed; the message names the field."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"manifest-not-found"})}),(0,o.jsxs)(t.td,{children:["No ",(0,o.jsx)(t.code,{children:"extension.json"})," and no ",(0,o.jsx)(t.code,{children:"[tool.langflow.extension]"})," section at the extension root."]})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"version-constraint-unsatisfied"})}),(0,o.jsxs)(t.td,{children:[(0,o.jsx)(t.code,{children:"lfx.compat"})," does not include this Langflow's ",(0,o.jsx)(t.code,{children:"BUNDLE_\u200bAPI_\u200bVERSION"}),"."]})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"field-deferred-in-this-milestone"})}),(0,o.jsx)(t.td,{children:"A reserved field was set to a non-null value."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"multi-bundle-deferred-in-this-milestone"})}),(0,o.jsxs)(t.td,{children:[(0,o.jsx)(t.code,{children:"bundles"})," has more than one entry."]})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"path-escape"})}),(0,o.jsxs)(t.td,{children:["A ",(0,o.jsx)(t.code,{children:"bundles[].path"})," resolves outside the manifest root (typically a symlink)."]})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"bundle-path-not-found"})}),(0,o.jsxs)(t.td,{children:[(0,o.jsx)(t.code,{children:"bundles[].path"})," does not exist or is not a directory."]})]})]})]}),"\n",(0,o.jsxs)(t.p,{children:["Run ",(0,o.jsx)(t.code,{children:"lfx extension validate "})," to see every error as a structured object with ",(0,o.jsx)(t.code,{children:"code"}),", ",(0,o.jsx)(t.code,{children:"message"}),", ",(0,o.jsx)(t.code,{children:"location"}),", ",(0,o.jsx)(t.code,{children:"hint"}),", and ",(0,o.jsx)(t.code,{children:"ref_url"}),"."]}),"\n",(0,o.jsx)(t.h2,{id:"see-also",children:"See also"})]})}function j(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(x,{...e})}):x(e)}function f(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}}}]); \ No newline at end of file diff --git a/assets/js/c9fb925b.6989b271.js b/assets/js/c9fb925b.5df97371.js similarity index 92% rename from assets/js/c9fb925b.6989b271.js rename to assets/js/c9fb925b.5df97371.js index 2a55e4df4e..566c978cb4 100644 --- a/assets/js/c9fb925b.6989b271.js +++ b/assets/js/c9fb925b.5df97371.js @@ -1 +1 @@ -"use strict";(globalThis.webpackChunklangflow_docs=globalThis.webpackChunklangflow_docs||[]).push([[75679],{51846:(e,o,t)=>{t.r(o),t.d(o,{CH:()=>a,assets:()=>p,chCodeConfig:()=>d,contentTitle:()=>i,default:()=>y,frontMatter:()=>c,metadata:()=>n,toc:()=>h});const n=JSON.parse('{"id":"Develop/extensions-quickstart","title":"Langflow Extension quickstart","description":"Build, validate, and run a Langflow Extension bundle to create a single-component extension you can pip-install or load using lfx extension dev.","source":"@site/versioned_docs/version-1.10.0/Develop/extensions-quickstart.mdx","sourceDirName":"Develop","slug":"/extensions-quickstart","permalink":"/extensions-quickstart","draft":false,"unlisted":false,"tags":[],"version":"1.10.0","frontMatter":{"title":"Langflow Extension quickstart","slug":"/extensions-quickstart"},"sidebar":"docs","previous":{"title":"Langflow Extensions overview","permalink":"/extensions-overview"},"next":{"title":"Manifest reference","permalink":"/extensions-manifest"}}');var s=t(74848),l=t(28453),r=t(24754);const c={title:"Langflow Extension quickstart",slug:"/extensions-quickstart"},i=void 0,p={},a={annotations:r.hk,Code:r.Cy},d={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},h=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Create an extension",id:"create-an-extension",level:2},{value:"See also",id:"see-also",level:2}];function u(e){const o={a:"a",code:"code",h2:"h2",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,l.R)(),...e.components};return a||F("CH",!1),a.Code||F("CH.Code",!0),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }'}}),"\n",(0,s.jsxs)(o.p,{children:["Build, validate, and run a Langflow Extension bundle to create a single-component extension you can ",(0,s.jsx)(o.code,{children:"pip-install"})," or load using ",(0,s.jsx)(o.code,{children:"lfx extension dev"}),"."]}),"\n",(0,s.jsx)(o.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsx)(o.li,{children:"Python 3.11 or greater"}),"\n",(0,s.jsxs)(o.li,{children:[(0,s.jsx)(o.code,{children:"langflow"})," installed with ",(0,s.jsx)(o.code,{children:"uv pip install langflow"}),". The ",(0,s.jsx)(o.code,{children:"lfx"})," CLI provides every command in this guide. For more information, see ",(0,s.jsx)(o.a,{href:"/get-started-installation#install-and-run-the-langflow-oss-python-package",children:"Install the Langflow OSS package"}),"."]}),"\n"]}),"\n",(0,s.jsx)(o.h2,{id:"create-an-extension",children:"Create an extension"}),"\n",(0,s.jsxs)(o.ol,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"Scaffold a new extension:"}),"\n",(0,s.jsx)(a.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"lfx ",props:{style:{color:"#FFA657"}}},{content:"extension init my-extension",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"cd ",props:{style:{color:"#79C0FF"}}},{content:"my-extension",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,s.jsx)(o.p,{children:"This creates the canonical layout the loader expects:"}),"\n",(0,s.jsx)(a.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"my-extension/",props:{}}]},{tokens:[{content:"\u251c\u2500\u2500 extension.json # the v0 manifest",props:{}}]},{tokens:[{content:"\u251c\u2500\u2500 pyproject.toml # so the bundle is pip-installable",props:{}}]},{tokens:[{content:"\u2514\u2500\u2500 src/",props:{}}]},{tokens:[{content:" \u2514\u2500\u2500 lfx_my_extension/",props:{}}]},{tokens:[{content:" \u251c\u2500\u2500 __init__.py",props:{}}]},{tokens:[{content:" \u251c\u2500\u2500 extension.json # symlink/copy used by importlib at runtime",props:{}}]},{tokens:[{content:" \u2514\u2500\u2500 components/",props:{}}]},{tokens:[{content:" \u2514\u2500\u2500 my_bundle/",props:{}}]},{tokens:[{content:" \u251c\u2500\u2500 __init__.py",props:{}}]},{tokens:[{content:" \u2514\u2500\u2500 my_component.py",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["For more information, see ",(0,s.jsx)(o.a,{href:"/extensions-manifest",children:"Manifest reference"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["To edit the component, open ",(0,s.jsx)(o.code,{children:"src/lfx_my_extension/components/my_bundle/my_component.py"}),".\nThe scaffold ships a working ",(0,s.jsx)(o.code,{children:"Component"})," subclass that prints ",(0,s.jsx)(o.code,{children:'"Hello, {name}!"'})]}),"\n",(0,s.jsx)(a.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"from",props:{style:{color:"#FF7B72"}}},{content:" lfx.custom.custom_component.component ",props:{style:{color:"#C9D1D9"}}},{content:"import",props:{style:{color:"#FF7B72"}}},{content:" Component",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"from",props:{style:{color:"#FF7B72"}}},{content:" lfx.io ",props:{style:{color:"#C9D1D9"}}},{content:"import",props:{style:{color:"#FF7B72"}}},{content:" MessageTextInput, Output",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"from",props:{style:{color:"#FF7B72"}}},{content:" lfx.schema.message ",props:{style:{color:"#C9D1D9"}}},{content:"import",props:{style:{color:"#FF7B72"}}},{content:" Message",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"class ",props:{style:{color:"#FF7B72"}}},{content:"HelloComponent",props:{style:{color:"#FFA657"}}},{content:"(",props:{style:{color:"#C9D1D9"}}},{content:"Component",props:{style:{color:"#79C0FF"}}},{content:"):",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" display_name ",props:{style:{color:"#C9D1D9"}}},{content:"= ",props:{style:{color:"#FF7B72"}}},{content:'"Hello"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" description ",props:{style:{color:"#C9D1D9"}}},{content:"= ",props:{style:{color:"#FF7B72"}}},{content:'"Greets the caller."',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" inputs ",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:" [MessageTextInput(",props:{style:{color:"#C9D1D9"}}},{content:"name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"who"',props:{style:{color:"#A5D6FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:"display_name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"Who?"',props:{style:{color:"#A5D6FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:"value",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"world"',props:{style:{color:"#A5D6FF"}}},{content:")]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" outputs ",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:" [Output(",props:{style:{color:"#C9D1D9"}}},{content:"display_name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"Greeting"',props:{style:{color:"#A5D6FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:"name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"greeting"',props:{style:{color:"#A5D6FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:"method",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"build_message"',props:{style:{color:"#A5D6FF"}}},{content:")]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" def ",props:{style:{color:"#FF7B72"}}},{content:"build_message",props:{style:{color:"#D2A8FF"}}},{content:"(self) -> Message:",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" return",props:{style:{color:"#FF7B72"}}},{content:" Message(",props:{style:{color:"#C9D1D9"}}},{content:"text",props:{style:{color:"#FFA657"}}},{content:"=f",props:{style:{color:"#FF7B72"}}},{content:'"Hello, ',props:{style:{color:"#A5D6FF"}}},{content:"{self",props:{style:{color:"#79C0FF"}}},{content:".who",props:{style:{color:"#C9D1D9"}}},{content:"}",props:{style:{color:"#79C0FF"}}},{content:'!"',props:{style:{color:"#A5D6FF"}}},{content:")",props:{style:{color:"#C9D1D9"}}}]}],lang:"python"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["The full surface available to bundle code is enumerated in ",(0,s.jsx)(o.a,{href:"https://github.com/langflow-ai/langflow/blob/main/BUNDLE_API.md",children:(0,s.jsx)(o.code,{children:"BUNDLE_API.md"})}),".\nAnything outside of ",(0,s.jsx)(o.a,{href:"https://github.com/langflow-ai/langflow/blob/main/BUNDLE_API.md",children:(0,s.jsx)(o.code,{children:"BUNDLE_API.md"})})," is not part of the API contract, and may move or break between releases."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"Before launching Langflow, run the static extension checker."}),"\n",(0,s.jsx)(a.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"lfx ",props:{style:{color:"#FFA657"}}},{content:"extension validate .",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["The validator parses the manifest and reports typed errors.\nIt does not execute imports by default, so it is safe to run against an extension you just downloaded. Use ",(0,s.jsx)(o.code,{children:"--execute-imports"})," only when you trust the source \u2014 it runs the import probe in a subprocess."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"Run Langflow with the extension loaded."}),"\n",(0,s.jsx)(a.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"lfx ",props:{style:{color:"#FFA657"}}},{content:"extension dev .",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["This launches a Langflow dev server with ",(0,s.jsx)(o.code,{children:"my-extension"})," registered at the ",(0,s.jsx)(o.code,{children:"@official"})," slot. The Hello component appears in the Langflow UI component list under the bundle name in ",(0,s.jsx)(o.code,{children:"extension.json"}),"."]}),"\n",(0,s.jsx)(o.p,{children:"To see what the loader picked up:"}),"\n",(0,s.jsx)(a.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"lfx ",props:{style:{color:"#FFA657"}}},{content:"extension list ",props:{style:{color:"#A5D6FF"}}},{content:"--format ",props:{style:{color:"#79C0FF"}}},{content:"json",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Iterate with reload.\nEdit the component, save, then click the ",(0,s.jsx)(o.strong,{children:"Reload"})," action in the palette's bundle header (or run ",(0,s.jsx)(o.code,{children:"lfx extension reload --bundle my_bundle"}),"). The atomic-swap reload pipeline replaces the component in place; in-flight flows keep the pre-swap class so a running execution is never interrupted."]}),"\n",(0,s.jsx)(o.p,{children:"Reload only works in Mode A (local dev). Production deployments rebuild the Docker image."}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"Ship the extension."}),"\n",(0,s.jsx)(o.p,{children:"Once the extension works locally, publish the package to PyPI:"}),"\n",(0,s.jsx)(a.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"python ",props:{style:{color:"#FFA657"}}},{content:"-m ",props:{style:{color:"#79C0FF"}}},{content:"build ",props:{style:{color:"#A5D6FF"}}},{content:"# builds the wheel + sdist",props:{style:{color:"#8B949E"}}}]},{tokens:[{content:"twine ",props:{style:{color:"#FFA657"}}},{content:"upload dist/",props:{style:{color:"#A5D6FF"}}},{content:"* ",props:{style:{color:"#79C0FF"}}},{content:"# publish to PyPI",props:{style:{color:"#8B949E"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["To install the extension into a Langflow environment with a regular ",(0,s.jsx)(o.code,{children:"pip install"}),":"]}),"\n",(0,s.jsx)(a.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"pip ",props:{style:{color:"#FFA657"}}},{content:"install lfx-my-extension",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"langflow ",props:{style:{color:"#FFA657"}}},{content:"run",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,s.jsx)(o.p,{children:"Discovery happens at server startup.\nThe bundle appears in the palette without further configuration."}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(o.h2,{id:"see-also",children:"See also"})]})}function y(e={}){const{wrapper:o}={...(0,l.R)(),...e.components};return o?(0,s.jsx)(o,{...e,children:(0,s.jsx)(u,{...e})}):u(e)}function F(e,o){throw new Error("Expected "+(o?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}}}]); \ No newline at end of file +"use strict";(globalThis.webpackChunklangflow_docs=globalThis.webpackChunklangflow_docs||[]).push([[75679],{51846:(e,o,n)=>{n.r(o),n.d(o,{CH:()=>a,assets:()=>p,chCodeConfig:()=>d,contentTitle:()=>i,default:()=>y,frontMatter:()=>c,metadata:()=>t,toc:()=>h});const t=JSON.parse('{"id":"Develop/extensions-quickstart","title":"Langflow Extension quickstart","description":"Build, validate, and run a Langflow Extension bundle to create a single-component extension you can pip-install or load using lfx extension dev.","source":"@site/versioned_docs/version-1.10.0/Develop/extensions-quickstart.mdx","sourceDirName":"Develop","slug":"/extensions-quickstart","permalink":"/extensions-quickstart","draft":false,"unlisted":false,"tags":[],"version":"1.10.0","frontMatter":{"title":"Langflow Extension quickstart","slug":"/extensions-quickstart"},"sidebar":"docs","previous":{"title":"Langflow Extensions overview","permalink":"/extensions-overview"},"next":{"title":"Manifest reference","permalink":"/extensions-manifest"}}');var s=n(74848),r=n(28453),l=n(24754);const c={title:"Langflow Extension quickstart",slug:"/extensions-quickstart"},i=void 0,p={},a={annotations:l.hk,Code:l.Cy},d={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},h=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Create an extension",id:"create-an-extension",level:2},{value:"See also",id:"see-also",level:2}];function u(e){const o={a:"a",code:"code",h2:"h2",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return a||x("CH",!1),a.Code||x("CH.Code",!0),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }'}}),"\n",(0,s.jsxs)(o.p,{children:["Build, validate, and run a Langflow Extension bundle to create a single-component extension you can ",(0,s.jsx)(o.code,{children:"pip-install"})," or load using ",(0,s.jsx)(o.code,{children:"lfx extension dev"}),"."]}),"\n",(0,s.jsx)(o.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsx)(o.li,{children:"Python 3.11 or greater"}),"\n",(0,s.jsxs)(o.li,{children:[(0,s.jsx)(o.code,{children:"langflow"})," installed with ",(0,s.jsx)(o.code,{children:"uv pip install langflow"}),". The ",(0,s.jsx)(o.code,{children:"lfx"})," CLI provides every command in this guide. For more information, see ",(0,s.jsx)(o.a,{href:"/get-started-installation#install-and-run-the-langflow-oss-python-package",children:"Install the Langflow OSS package"}),"."]}),"\n"]}),"\n",(0,s.jsx)(o.h2,{id:"create-an-extension",children:"Create an extension"}),"\n",(0,s.jsxs)(o.ol,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"Scaffold a new extension:"}),"\n",(0,s.jsx)(a.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"lfx ",props:{style:{color:"#FFA657"}}},{content:"extension init my-extension",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"cd ",props:{style:{color:"#79C0FF"}}},{content:"my-extension",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,s.jsx)(o.p,{children:"This creates the canonical layout the loader expects:"}),"\n",(0,s.jsx)(a.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"my-extension/",props:{}}]},{tokens:[{content:"\u251c\u2500\u2500 extension.json # the v0 manifest",props:{}}]},{tokens:[{content:"\u251c\u2500\u2500 pyproject.toml # so the bundle is pip-installable",props:{}}]},{tokens:[{content:"\u2514\u2500\u2500 src/",props:{}}]},{tokens:[{content:" \u2514\u2500\u2500 lfx_my_extension/",props:{}}]},{tokens:[{content:" \u251c\u2500\u2500 __init__.py",props:{}}]},{tokens:[{content:" \u251c\u2500\u2500 extension.json # symlink/copy used by importlib at runtime",props:{}}]},{tokens:[{content:" \u2514\u2500\u2500 components/",props:{}}]},{tokens:[{content:" \u2514\u2500\u2500 my_bundle/",props:{}}]},{tokens:[{content:" \u251c\u2500\u2500 __init__.py",props:{}}]},{tokens:[{content:" \u2514\u2500\u2500 my_component.py",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["For more information, see ",(0,s.jsx)(o.a,{href:"/extensions-manifest",children:"Manifest reference"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["To edit the component, open ",(0,s.jsx)(o.code,{children:"src/lfx_my_extension/components/my_bundle/my_component.py"}),".\nThe scaffold ships a working ",(0,s.jsx)(o.code,{children:"Component"})," subclass that prints ",(0,s.jsx)(o.code,{children:'"Hello, {name}!"'})]}),"\n",(0,s.jsx)(a.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"from",props:{style:{color:"#FF7B72"}}},{content:" lfx.custom.custom_component.component ",props:{style:{color:"#C9D1D9"}}},{content:"import",props:{style:{color:"#FF7B72"}}},{content:" Component",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"from",props:{style:{color:"#FF7B72"}}},{content:" lfx.io ",props:{style:{color:"#C9D1D9"}}},{content:"import",props:{style:{color:"#FF7B72"}}},{content:" MessageTextInput, Output",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"from",props:{style:{color:"#FF7B72"}}},{content:" lfx.schema.message ",props:{style:{color:"#C9D1D9"}}},{content:"import",props:{style:{color:"#FF7B72"}}},{content:" Message",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"class ",props:{style:{color:"#FF7B72"}}},{content:"HelloComponent",props:{style:{color:"#FFA657"}}},{content:"(",props:{style:{color:"#C9D1D9"}}},{content:"Component",props:{style:{color:"#79C0FF"}}},{content:"):",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" display_name ",props:{style:{color:"#C9D1D9"}}},{content:"= ",props:{style:{color:"#FF7B72"}}},{content:'"Hello"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" description ",props:{style:{color:"#C9D1D9"}}},{content:"= ",props:{style:{color:"#FF7B72"}}},{content:'"Greets the caller."',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" inputs ",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:" [MessageTextInput(",props:{style:{color:"#C9D1D9"}}},{content:"name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"who"',props:{style:{color:"#A5D6FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:"display_name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"Who?"',props:{style:{color:"#A5D6FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:"value",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"world"',props:{style:{color:"#A5D6FF"}}},{content:")]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" outputs ",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:" [Output(",props:{style:{color:"#C9D1D9"}}},{content:"display_name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"Greeting"',props:{style:{color:"#A5D6FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:"name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"greeting"',props:{style:{color:"#A5D6FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:"method",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"build_message"',props:{style:{color:"#A5D6FF"}}},{content:")]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" def ",props:{style:{color:"#FF7B72"}}},{content:"build_message",props:{style:{color:"#D2A8FF"}}},{content:"(self) -> Message:",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" return",props:{style:{color:"#FF7B72"}}},{content:" Message(",props:{style:{color:"#C9D1D9"}}},{content:"text",props:{style:{color:"#FFA657"}}},{content:"=f",props:{style:{color:"#FF7B72"}}},{content:'"Hello, ',props:{style:{color:"#A5D6FF"}}},{content:"{self",props:{style:{color:"#79C0FF"}}},{content:".who",props:{style:{color:"#C9D1D9"}}},{content:"}",props:{style:{color:"#79C0FF"}}},{content:'!"',props:{style:{color:"#A5D6FF"}}},{content:")",props:{style:{color:"#C9D1D9"}}}]}],lang:"python"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["The full surface available to bundle code is enumerated in ",(0,s.jsx)(o.a,{href:"https://github.com/langflow-ai/langflow/blob/main/BUNDLE_API.md",children:(0,s.jsx)(o.code,{children:"BUNDLE_API.md"})}),".\nAnything outside of ",(0,s.jsx)(o.a,{href:"https://github.com/langflow-ai/langflow/blob/main/BUNDLE_API.md",children:(0,s.jsx)(o.code,{children:"BUNDLE_API.md"})})," is not part of the API contract, and may move or break between releases."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"Before launching Langflow, run the static extension checker."}),"\n",(0,s.jsx)(a.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"lfx ",props:{style:{color:"#FFA657"}}},{content:"extension validate .",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["The validator parses the manifest and reports typed errors.\nIt does not execute imports by default, so it is safe to run against an extension you just downloaded. Use ",(0,s.jsx)(o.code,{children:"--execute-imports"})," only when you trust the source \u2014 it runs the import probe in a subprocess."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"Run Langflow with the extension loaded."}),"\n",(0,s.jsx)(a.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"lfx ",props:{style:{color:"#FFA657"}}},{content:"extension dev .",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["This launches a Langflow dev server with ",(0,s.jsx)(o.code,{children:"my-extension"})," registered at the ",(0,s.jsx)(o.code,{children:"@official"})," slot. The Hello component appears in the Langflow UI component list under the bundle name in ",(0,s.jsx)(o.code,{children:"extension.json"}),"."]}),"\n",(0,s.jsx)(o.p,{children:"To see what the loader picked up:"}),"\n",(0,s.jsx)(a.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"lfx ",props:{style:{color:"#FFA657"}}},{content:"extension list ",props:{style:{color:"#A5D6FF"}}},{content:"--format ",props:{style:{color:"#79C0FF"}}},{content:"json",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Iterate with reload.\nEdit the component, save, then click the ",(0,s.jsx)(o.strong,{children:"Reload"})," action in the palette's bundle header (or run ",(0,s.jsx)(o.code,{children:"lfx extension reload --bundle my_bundle"}),"). The atomic-swap reload pipeline replaces the component in place; in-flight flows keep the pre-swap class so a running execution is never interrupted."]}),"\n",(0,s.jsx)(o.p,{children:"Reload only works in Mode A (local dev). Production deployments rebuild the Docker image."}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"Ship the extension."}),"\n",(0,s.jsx)(o.p,{children:"Once the extension works locally, publish the package to PyPI:"}),"\n",(0,s.jsx)(a.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"python ",props:{style:{color:"#FFA657"}}},{content:"-m ",props:{style:{color:"#79C0FF"}}},{content:"build ",props:{style:{color:"#A5D6FF"}}},{content:"# builds the wheel + sdist",props:{style:{color:"#8B949E"}}}]},{tokens:[{content:"twine ",props:{style:{color:"#FFA657"}}},{content:"upload dist/",props:{style:{color:"#A5D6FF"}}},{content:"* ",props:{style:{color:"#79C0FF"}}},{content:"# publish to PyPI",props:{style:{color:"#8B949E"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["To install the extension into a Langflow environment with a regular ",(0,s.jsx)(o.code,{children:"pip install"}),":"]}),"\n",(0,s.jsx)(a.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"pip ",props:{style:{color:"#FFA657"}}},{content:"install lfx-my-extension",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"langflow ",props:{style:{color:"#FFA657"}}},{content:"run",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,s.jsx)(o.p,{children:"Discovery happens at server startup.\nThe bundle appears in the palette without further configuration."}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(o.h2,{id:"see-also",children:"See also"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsx)(o.li,{children:(0,s.jsx)(o.a,{href:"./extensions-overview",children:"Bundle extensions overview"})}),"\n",(0,s.jsx)(o.li,{children:(0,s.jsx)(o.a,{href:"./extensions-manifest",children:"Manifest reference"})}),"\n"]})]})}function y(e={}){const{wrapper:o}={...(0,r.R)(),...e.components};return o?(0,s.jsx)(o,{...e,children:(0,s.jsx)(u,{...e})}):u(e)}function x(e,o){throw new Error("Expected "+(o?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}}}]); \ No newline at end of file diff --git a/assets/js/e54ce709.7f85612c.js b/assets/js/e54ce709.7f85612c.js new file mode 100644 index 0000000000..28abe7b786 --- /dev/null +++ b/assets/js/e54ce709.7f85612c.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunklangflow_docs=globalThis.webpackChunklangflow_docs||[]).push([[93311],{13180:(e,n,o)=>{o.r(n),o.d(n,{CH:()=>c,assets:()=>l,chCodeConfig:()=>h,contentTitle:()=>a,default:()=>p,frontMatter:()=>d,metadata:()=>t,toc:()=>u});const t=JSON.parse('{"id":"Develop/extensions-overview","title":"Langflow Extensions overview","description":"Langflow ships component bundles that are maintained and released separately from the core Langflow server as Extensions.","source":"@site/versioned_docs/version-1.10.0/Develop/extensions-overview.mdx","sourceDirName":"Develop","slug":"/extensions-overview","permalink":"/extensions-overview","draft":false,"unlisted":false,"tags":[],"version":"1.10.0","frontMatter":{"title":"Langflow Extensions overview","slug":"/extensions-overview"},"sidebar":"docs","previous":{"title":"Use the Langflow CLI","permalink":"/configuration-cli"},"next":{"title":"Langflow Extension quickstart","permalink":"/extensions-quickstart"}}');var i=o(74848),s=o(28453),r=o(24754);o(52307);const d={title:"Langflow Extensions overview",slug:"/extensions-overview"},a=void 0,l={},c={annotations:r.hk,Code:r.Cy},h={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},u=[{value:"Current Extension bundles",id:"current-extension-bundles",level:2},{value:"If a component is missing after an upgrade",id:"if-a-component-is-missing-after-an-upgrade",level:2},{value:"Install a bundle extension",id:"install-a-bundle-extension",level:2},{value:"Build your own extension",id:"build-your-own-extension",level:2},{value:"See also",id:"see-also",level:2}];function x(e){const n={a:"a",code:"code",h2:"h2",li:"li",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return c||f("CH",!1),c.Code||f("CH.Code",!0),(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }'}}),"\n","\n",(0,i.jsxs)(n.p,{children:["Langflow ships component bundles that are maintained and released separately from the core Langflow server as Extensions.\nInstead of every integration being built into ",(0,i.jsx)(n.code,{children:"langflow"}),", each bundle is its own pip-installable package, such as ",(0,i.jsx)(n.code,{children:"lfx-duckduckgo"})," or ",(0,i.jsx)(n.code,{children:"lfx-arxiv"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["When you run ",(0,i.jsx)(n.code,{children:"uv pip install langflow"}),", you install:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"All Langflow core components"}),"\n",(0,i.jsxs)(n.li,{children:["All bundles that ship as dependencies of the ",(0,i.jsx)(n.code,{children:"langflow"})," metapackage"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Some bundles that were previously included in ",(0,i.jsx)(n.code,{children:"langflow"})," are moved into standalone packages.\nThe ",(0,i.jsx)(n.code,{children:"langflow"})," metapackage adds them as regular pip dependencies, so ",(0,i.jsx)(n.code,{children:"pip install langflow"})," continues to include them."]}),"\n",(0,i.jsx)(n.h2,{id:"current-extension-bundles",children:"Current Extension bundles"}),"\n",(0,i.jsxs)(n.p,{children:["The following Extension bundles are included with ",(0,i.jsx)(n.code,{children:"uv pip install langflow"}),":"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Package"}),(0,i.jsx)(n.th,{children:"Bundle"}),(0,i.jsx)(n.th,{children:"Components"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"lfx-arxiv"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.a,{href:"/bundles-arxiv",children:"arXiv"})}),(0,i.jsx)(n.td,{children:"arXiv search"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"lfx-docling"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.a,{href:"/bundles-docling",children:"Docling"})}),(0,i.jsx)(n.td,{children:"Document parsing and chunking"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"lfx-duckduckgo"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.a,{href:"/bundles-duckduckgo",children:"DuckDuckGo"})}),(0,i.jsx)(n.td,{children:"Web search"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"lfx-ibm"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.a,{href:"/bundles-ibm",children:"IBM"})}),(0,i.jsx)(n.td,{children:"IBM watsonx.ai LLM and embeddings, IBM Db2 Vector Store"})]})]})]}),"\n",(0,i.jsxs)(n.p,{children:["The internal identifier for each component changes.\nFor example, a DuckDuckGo component previously referenced as a ",(0,i.jsx)(n.code,{children:"DuckDuckGoSearchComponent"})," class is now ",(0,i.jsx)(n.code,{children:"ext:duckduckgo:DuckDuckGoSearchComponent@official"}),".\nLangflow rewrites these references automatically when you open a saved flow, so in most cases the migration is invisible."]}),"\n",(0,i.jsx)(n.h2,{id:"if-a-component-is-missing-after-an-upgrade",children:"If a component is missing after an upgrade"}),"\n",(0,i.jsxs)(n.p,{children:["If you open a flow and a node shows an error like ",(0,i.jsx)(n.code,{children:"component-not-found"}),", it means the automatic migration couldn't resolve the component reference.\nThis can happen when:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"The bundle the component came from was not installed in the upgraded environment."}),"\n",(0,i.jsxs)(n.li,{children:["The component was referenced by a name that appears in more than one bundle (",(0,i.jsx)(n.code,{children:"component-name-ambiguous"}),")."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"In both cases the error message includes a hint that names the expected canonical ID. For example:"}),"\n",(0,i.jsx)(c.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"component-not-found-with-hint: DuckDuckGoSearchComponent not found.",props:{}}]},{tokens:[{content:"Hint: try ext:duckduckgo:DuckDuckGoSearchComponent@official",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,i.jsxs)(n.p,{children:["Use the bundle name from the hint, such as ",(0,i.jsx)(n.code,{children:"duckduckgo"})," in this example, to find and install the correct extension package, and then reload the flow."]}),"\n",(0,i.jsx)(n.h2,{id:"install-a-bundle-extension",children:"Install a bundle extension"}),"\n",(0,i.jsx)(n.p,{children:"If a bundle you need is not included in your Langflow environment, install it with pip:"}),"\n",(0,i.jsx)(c.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"uv ",props:{style:{color:"#FFA657"}}},{content:"pip install lfx-duckduckgo",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"uv ",props:{style:{color:"#FFA657"}}},{content:"run langflow run",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,i.jsx)(n.p,{children:"Langflow discovers the package at server startup and loads the components into the palette automatically.\nNo additional configuration is required."}),"\n",(0,i.jsx)(n.p,{children:"To see what extensions are currently loaded, run:"}),"\n",(0,i.jsx)(c.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"lfx ",props:{style:{color:"#FFA657"}}},{content:"extension list",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,i.jsx)(n.h2,{id:"build-your-own-extension",children:"Build your own extension"}),"\n",(0,i.jsx)(n.p,{children:"If you have custom components that you want to distribute and version independently of your Langflow install, you can package them as an extension."}),"\n",(0,i.jsxs)(n.p,{children:["For more information, see ",(0,i.jsx)(n.a,{href:"/extensions-quickstart",children:"Build your first Langflow Extension"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"see-also",children:"See also"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"./extensions-quickstart",children:"Build your first extension"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"./extensions-manifest",children:"Manifest reference"})}),"\n"]})]})}function p(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(x,{...e})}):x(e)}function f(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}}}]); \ No newline at end of file diff --git a/assets/js/e54ce709.f9400a9f.js b/assets/js/e54ce709.f9400a9f.js deleted file mode 100644 index c63d558dc6..0000000000 --- a/assets/js/e54ce709.f9400a9f.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunklangflow_docs=globalThis.webpackChunklangflow_docs||[]).push([[93311],{13180:(e,n,o)=>{o.r(n),o.d(n,{CH:()=>l,assets:()=>a,chCodeConfig:()=>h,contentTitle:()=>c,default:()=>p,frontMatter:()=>d,metadata:()=>t,toc:()=>u});const t=JSON.parse('{"id":"Develop/extensions-overview","title":"Langflow Extensions overview","description":"Langflow ships component bundles that are maintained and released separately from the core Langflow server as Extensions.","source":"@site/versioned_docs/version-1.10.0/Develop/extensions-overview.mdx","sourceDirName":"Develop","slug":"/extensions-overview","permalink":"/extensions-overview","draft":false,"unlisted":false,"tags":[],"version":"1.10.0","frontMatter":{"title":"Langflow Extensions overview","slug":"/extensions-overview"},"sidebar":"docs","previous":{"title":"Use the Langflow CLI","permalink":"/configuration-cli"},"next":{"title":"Langflow Extension quickstart","permalink":"/extensions-quickstart"}}');var i=o(74848),s=o(28453),r=o(24754);o(52307);const d={title:"Langflow Extensions overview",slug:"/extensions-overview"},c=void 0,a={},l={annotations:r.hk,Code:r.Cy},h={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},u=[{value:"Current Extension bundles",id:"current-extension-bundles",level:2},{value:"If a component is missing after an upgrade",id:"if-a-component-is-missing-after-an-upgrade",level:2},{value:"Install a bundle extension",id:"install-a-bundle-extension",level:2},{value:"Build your own extension",id:"build-your-own-extension",level:2}];function x(e){const n={a:"a",code:"code",h2:"h2",li:"li",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return l||g("CH",!1),l.Code||g("CH.Code",!0),(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }'}}),"\n","\n",(0,i.jsxs)(n.p,{children:["Langflow ships component bundles that are maintained and released separately from the core Langflow server as Extensions.\nInstead of every integration being built into ",(0,i.jsx)(n.code,{children:"langflow"}),", each bundle is its own pip-installable package, such as ",(0,i.jsx)(n.code,{children:"lfx-duckduckgo"})," or ",(0,i.jsx)(n.code,{children:"lfx-arxiv"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["When you run ",(0,i.jsx)(n.code,{children:"uv pip install langflow"}),", you install:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"All Langflow core components"}),"\n",(0,i.jsxs)(n.li,{children:["All bundles that ship as dependencies of the ",(0,i.jsx)(n.code,{children:"langflow"})," metapackage"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Some bundles that were previously included in ",(0,i.jsx)(n.code,{children:"langflow"})," are moved into standalone packages.\nThe ",(0,i.jsx)(n.code,{children:"langflow"})," metapackage adds them as regular pip dependencies, so ",(0,i.jsx)(n.code,{children:"pip install langflow"})," continues to include them."]}),"\n",(0,i.jsx)(n.h2,{id:"current-extension-bundles",children:"Current Extension bundles"}),"\n",(0,i.jsxs)(n.p,{children:["The following Extension bundles are included with ",(0,i.jsx)(n.code,{children:"uv pip install langflow"}),":"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Package"}),(0,i.jsx)(n.th,{children:"Bundle"}),(0,i.jsx)(n.th,{children:"Components"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"lfx-arxiv"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.a,{href:"/bundles-arxiv",children:"arXiv"})}),(0,i.jsx)(n.td,{children:"arXiv search"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"lfx-docling"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.a,{href:"/bundles-docling",children:"Docling"})}),(0,i.jsx)(n.td,{children:"Document parsing and chunking"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"lfx-duckduckgo"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.a,{href:"/bundles-duckduckgo",children:"DuckDuckGo"})}),(0,i.jsx)(n.td,{children:"Web search"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"lfx-ibm"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.a,{href:"/bundles-ibm",children:"IBM"})}),(0,i.jsx)(n.td,{children:"IBM watsonx.ai LLM and embeddings, IBM Db2 Vector Store"})]})]})]}),"\n",(0,i.jsxs)(n.p,{children:["The internal identifier for each component changes.\nFor example, a DuckDuckGo component previously referenced as a ",(0,i.jsx)(n.code,{children:"DuckDuckGoSearchComponent"})," class is now ",(0,i.jsx)(n.code,{children:"ext:duckduckgo:DuckDuckGoSearchComponent@official"}),".\nLangflow rewrites these references automatically when you open a saved flow, so in most cases the migration is invisible."]}),"\n",(0,i.jsx)(n.h2,{id:"if-a-component-is-missing-after-an-upgrade",children:"If a component is missing after an upgrade"}),"\n",(0,i.jsxs)(n.p,{children:["If you open a flow and a node shows an error like ",(0,i.jsx)(n.code,{children:"component-not-found"}),", it means the automatic migration couldn't resolve the component reference.\nThis can happen when:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"The bundle the component came from was not installed in the upgraded environment."}),"\n",(0,i.jsxs)(n.li,{children:["The component was referenced by a name that appears in more than one bundle (",(0,i.jsx)(n.code,{children:"component-name-ambiguous"}),")."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"In both cases the error message includes a hint that names the expected canonical ID. For example:"}),"\n",(0,i.jsx)(l.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"component-not-found-with-hint: DuckDuckGoSearchComponent not found.",props:{}}]},{tokens:[{content:"Hint: try ext:duckduckgo:DuckDuckGoSearchComponent@official",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,i.jsxs)(n.p,{children:["Use the bundle name from the hint, such as ",(0,i.jsx)(n.code,{children:"duckduckgo"})," in this example, to find and install the correct extension package, and then reload the flow."]}),"\n",(0,i.jsx)(n.h2,{id:"install-a-bundle-extension",children:"Install a bundle extension"}),"\n",(0,i.jsx)(n.p,{children:"If a bundle you need is not included in your Langflow environment, install it with pip:"}),"\n",(0,i.jsx)(l.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"uv ",props:{style:{color:"#FFA657"}}},{content:"pip install lfx-duckduckgo",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"uv ",props:{style:{color:"#FFA657"}}},{content:"run langflow run",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,i.jsx)(n.p,{children:"Langflow discovers the package at server startup and loads the components into the palette automatically.\nNo additional configuration is required."}),"\n",(0,i.jsx)(n.p,{children:"To see what extensions are currently loaded, run:"}),"\n",(0,i.jsx)(l.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"lfx ",props:{style:{color:"#FFA657"}}},{content:"extension list",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,i.jsx)(n.h2,{id:"build-your-own-extension",children:"Build your own extension"}),"\n",(0,i.jsx)(n.p,{children:"If you have custom components that you want to distribute and version independently of your Langflow install, you can package them as an extension."}),"\n",(0,i.jsxs)(n.p,{children:["For more information, see ",(0,i.jsx)(n.a,{href:"/extensions-quickstart",children:"Build your first Langflow Extension"}),"."]})]})}function p(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(x,{...e})}):x(e)}function g(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}}}]); \ No newline at end of file diff --git a/assets/js/ee278e4e.2077ca90.js b/assets/js/ee278e4e.32eea2ad.js similarity index 92% rename from assets/js/ee278e4e.2077ca90.js rename to assets/js/ee278e4e.32eea2ad.js index 354601afea..a587dc7034 100644 --- a/assets/js/ee278e4e.2077ca90.js +++ b/assets/js/ee278e4e.32eea2ad.js @@ -1 +1 @@ -"use strict";(globalThis.webpackChunklangflow_docs=globalThis.webpackChunklangflow_docs||[]).push([[12044],{9774:(e,o,t)=>{t.r(o),t.d(o,{CH:()=>a,assets:()=>p,chCodeConfig:()=>d,contentTitle:()=>i,default:()=>y,frontMatter:()=>c,metadata:()=>n,toc:()=>h});const n=JSON.parse('{"id":"Develop/extensions-quickstart","title":"Langflow Extension quickstart","description":"Build, validate, and run a Langflow Extension bundle to create a single-component extension you can pip-install or load using lfx extension dev.","source":"@site/docs/Develop/extensions-quickstart.mdx","sourceDirName":"Develop","slug":"/extensions-quickstart","permalink":"/next/extensions-quickstart","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Langflow Extension quickstart","slug":"/extensions-quickstart"},"sidebar":"docs","previous":{"title":"Langflow Extensions overview","permalink":"/next/extensions-overview"},"next":{"title":"Manifest reference","permalink":"/next/extensions-manifest"}}');var s=t(74848),l=t(28453),r=t(24754);const c={title:"Langflow Extension quickstart",slug:"/extensions-quickstart"},i=void 0,p={},a={annotations:r.hk,Code:r.Cy},d={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},h=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Create an extension",id:"create-an-extension",level:2},{value:"See also",id:"see-also",level:2}];function u(e){const o={a:"a",code:"code",h2:"h2",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,l.R)(),...e.components};return a||x("CH",!1),a.Code||x("CH.Code",!0),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }'}}),"\n",(0,s.jsxs)(o.p,{children:["Build, validate, and run a Langflow Extension bundle to create a single-component extension you can ",(0,s.jsx)(o.code,{children:"pip-install"})," or load using ",(0,s.jsx)(o.code,{children:"lfx extension dev"}),"."]}),"\n",(0,s.jsx)(o.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsx)(o.li,{children:"Python 3.11 or greater"}),"\n",(0,s.jsxs)(o.li,{children:[(0,s.jsx)(o.code,{children:"langflow"})," installed with ",(0,s.jsx)(o.code,{children:"uv pip install langflow"}),". The ",(0,s.jsx)(o.code,{children:"lfx"})," CLI provides every command in this guide. For more information, see ",(0,s.jsx)(o.a,{href:"/get-started-installation#install-and-run-the-langflow-oss-python-package",children:"Install the Langflow OSS package"}),"."]}),"\n"]}),"\n",(0,s.jsx)(o.h2,{id:"create-an-extension",children:"Create an extension"}),"\n",(0,s.jsxs)(o.ol,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"Scaffold a new extension:"}),"\n",(0,s.jsx)(a.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"lfx ",props:{style:{color:"#FFA657"}}},{content:"extension init my-extension",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"cd ",props:{style:{color:"#79C0FF"}}},{content:"my-extension",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,s.jsx)(o.p,{children:"This creates the canonical layout the loader expects:"}),"\n",(0,s.jsx)(a.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"my-extension/",props:{}}]},{tokens:[{content:"\u251c\u2500\u2500 extension.json # the v0 manifest",props:{}}]},{tokens:[{content:"\u251c\u2500\u2500 pyproject.toml # so the bundle is pip-installable",props:{}}]},{tokens:[{content:"\u2514\u2500\u2500 src/",props:{}}]},{tokens:[{content:" \u2514\u2500\u2500 lfx_my_extension/",props:{}}]},{tokens:[{content:" \u251c\u2500\u2500 __init__.py",props:{}}]},{tokens:[{content:" \u251c\u2500\u2500 extension.json # symlink/copy used by importlib at runtime",props:{}}]},{tokens:[{content:" \u2514\u2500\u2500 components/",props:{}}]},{tokens:[{content:" \u2514\u2500\u2500 my_bundle/",props:{}}]},{tokens:[{content:" \u251c\u2500\u2500 __init__.py",props:{}}]},{tokens:[{content:" \u2514\u2500\u2500 my_component.py",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["For more information, see ",(0,s.jsx)(o.a,{href:"/next/extensions-manifest",children:"Manifest reference"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["To edit the component, open ",(0,s.jsx)(o.code,{children:"src/lfx_my_extension/components/my_bundle/my_component.py"}),".\nThe scaffold ships a working ",(0,s.jsx)(o.code,{children:"Component"})," subclass that prints ",(0,s.jsx)(o.code,{children:'"Hello, {name}!"'})]}),"\n",(0,s.jsx)(a.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"from",props:{style:{color:"#FF7B72"}}},{content:" lfx.custom.custom_component.component ",props:{style:{color:"#C9D1D9"}}},{content:"import",props:{style:{color:"#FF7B72"}}},{content:" Component",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"from",props:{style:{color:"#FF7B72"}}},{content:" lfx.io ",props:{style:{color:"#C9D1D9"}}},{content:"import",props:{style:{color:"#FF7B72"}}},{content:" MessageTextInput, Output",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"from",props:{style:{color:"#FF7B72"}}},{content:" lfx.schema.message ",props:{style:{color:"#C9D1D9"}}},{content:"import",props:{style:{color:"#FF7B72"}}},{content:" Message",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"class ",props:{style:{color:"#FF7B72"}}},{content:"HelloComponent",props:{style:{color:"#FFA657"}}},{content:"(",props:{style:{color:"#C9D1D9"}}},{content:"Component",props:{style:{color:"#79C0FF"}}},{content:"):",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" display_name ",props:{style:{color:"#C9D1D9"}}},{content:"= ",props:{style:{color:"#FF7B72"}}},{content:'"Hello"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" description ",props:{style:{color:"#C9D1D9"}}},{content:"= ",props:{style:{color:"#FF7B72"}}},{content:'"Greets the caller."',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" inputs ",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:" [MessageTextInput(",props:{style:{color:"#C9D1D9"}}},{content:"name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"who"',props:{style:{color:"#A5D6FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:"display_name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"Who?"',props:{style:{color:"#A5D6FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:"value",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"world"',props:{style:{color:"#A5D6FF"}}},{content:")]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" outputs ",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:" [Output(",props:{style:{color:"#C9D1D9"}}},{content:"display_name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"Greeting"',props:{style:{color:"#A5D6FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:"name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"greeting"',props:{style:{color:"#A5D6FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:"method",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"build_message"',props:{style:{color:"#A5D6FF"}}},{content:")]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" def ",props:{style:{color:"#FF7B72"}}},{content:"build_message",props:{style:{color:"#D2A8FF"}}},{content:"(self) -> Message:",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" return",props:{style:{color:"#FF7B72"}}},{content:" Message(",props:{style:{color:"#C9D1D9"}}},{content:"text",props:{style:{color:"#FFA657"}}},{content:"=f",props:{style:{color:"#FF7B72"}}},{content:'"Hello, ',props:{style:{color:"#A5D6FF"}}},{content:"{self",props:{style:{color:"#79C0FF"}}},{content:".who",props:{style:{color:"#C9D1D9"}}},{content:"}",props:{style:{color:"#79C0FF"}}},{content:'!"',props:{style:{color:"#A5D6FF"}}},{content:")",props:{style:{color:"#C9D1D9"}}}]}],lang:"python"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["The full surface available to bundle code is enumerated in ",(0,s.jsx)(o.a,{href:"https://github.com/langflow-ai/langflow/blob/main/BUNDLE_API.md",children:(0,s.jsx)(o.code,{children:"BUNDLE_API.md"})}),".\nAnything outside of ",(0,s.jsx)(o.a,{href:"https://github.com/langflow-ai/langflow/blob/main/BUNDLE_API.md",children:(0,s.jsx)(o.code,{children:"BUNDLE_API.md"})})," is not part of the API contract, and may move or break between releases."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"Before launching Langflow, run the static extension checker."}),"\n",(0,s.jsx)(a.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"lfx ",props:{style:{color:"#FFA657"}}},{content:"extension validate .",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["The validator parses the manifest and reports typed errors.\nIt does not execute imports by default, so it is safe to run against an extension you just downloaded. Use ",(0,s.jsx)(o.code,{children:"--execute-imports"})," only when you trust the source \u2014 it runs the import probe in a subprocess."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"Run Langflow with the extension loaded."}),"\n",(0,s.jsx)(a.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"lfx ",props:{style:{color:"#FFA657"}}},{content:"extension dev .",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["This launches a Langflow dev server with ",(0,s.jsx)(o.code,{children:"my-extension"})," registered at the ",(0,s.jsx)(o.code,{children:"@official"})," slot. The Hello component appears in the Langflow UI component list under the bundle name in ",(0,s.jsx)(o.code,{children:"extension.json"}),"."]}),"\n",(0,s.jsx)(o.p,{children:"To see what the loader picked up:"}),"\n",(0,s.jsx)(a.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"lfx ",props:{style:{color:"#FFA657"}}},{content:"extension list ",props:{style:{color:"#A5D6FF"}}},{content:"--format ",props:{style:{color:"#79C0FF"}}},{content:"json",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Iterate with reload.\nEdit the component, save, then click the ",(0,s.jsx)(o.strong,{children:"Reload"})," action in the palette's bundle header (or run ",(0,s.jsx)(o.code,{children:"lfx extension reload --bundle my_bundle"}),"). The atomic-swap reload pipeline replaces the component in place; in-flight flows keep the pre-swap class so a running execution is never interrupted."]}),"\n",(0,s.jsx)(o.p,{children:"Reload only works in Mode A (local dev). Production deployments rebuild the Docker image."}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"Ship the extension."}),"\n",(0,s.jsx)(o.p,{children:"Once the extension works locally, publish the package to PyPI:"}),"\n",(0,s.jsx)(a.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"python ",props:{style:{color:"#FFA657"}}},{content:"-m ",props:{style:{color:"#79C0FF"}}},{content:"build ",props:{style:{color:"#A5D6FF"}}},{content:"# builds the wheel + sdist",props:{style:{color:"#8B949E"}}}]},{tokens:[{content:"twine ",props:{style:{color:"#FFA657"}}},{content:"upload dist/",props:{style:{color:"#A5D6FF"}}},{content:"* ",props:{style:{color:"#79C0FF"}}},{content:"# publish to PyPI",props:{style:{color:"#8B949E"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["To install the extension into a Langflow environment with a regular ",(0,s.jsx)(o.code,{children:"pip install"}),":"]}),"\n",(0,s.jsx)(a.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"pip ",props:{style:{color:"#FFA657"}}},{content:"install lfx-my-extension",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"langflow ",props:{style:{color:"#FFA657"}}},{content:"run",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,s.jsx)(o.p,{children:"Discovery happens at server startup.\nThe bundle appears in the palette without further configuration."}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(o.h2,{id:"see-also",children:"See also"})]})}function y(e={}){const{wrapper:o}={...(0,l.R)(),...e.components};return o?(0,s.jsx)(o,{...e,children:(0,s.jsx)(u,{...e})}):u(e)}function x(e,o){throw new Error("Expected "+(o?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}}}]); \ No newline at end of file +"use strict";(globalThis.webpackChunklangflow_docs=globalThis.webpackChunklangflow_docs||[]).push([[12044],{9774:(e,o,n)=>{n.r(o),n.d(o,{CH:()=>a,assets:()=>p,chCodeConfig:()=>d,contentTitle:()=>i,default:()=>x,frontMatter:()=>c,metadata:()=>t,toc:()=>h});const t=JSON.parse('{"id":"Develop/extensions-quickstart","title":"Langflow Extension quickstart","description":"Build, validate, and run a Langflow Extension bundle to create a single-component extension you can pip-install or load using lfx extension dev.","source":"@site/docs/Develop/extensions-quickstart.mdx","sourceDirName":"Develop","slug":"/extensions-quickstart","permalink":"/next/extensions-quickstart","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Langflow Extension quickstart","slug":"/extensions-quickstart"},"sidebar":"docs","previous":{"title":"Langflow Extensions overview","permalink":"/next/extensions-overview"},"next":{"title":"Manifest reference","permalink":"/next/extensions-manifest"}}');var s=n(74848),r=n(28453),l=n(24754);const c={title:"Langflow Extension quickstart",slug:"/extensions-quickstart"},i=void 0,p={},a={annotations:l.hk,Code:l.Cy},d={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},h=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Create an extension",id:"create-an-extension",level:2},{value:"See also",id:"see-also",level:2}];function u(e){const o={a:"a",code:"code",h2:"h2",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return a||y("CH",!1),a.Code||y("CH.Code",!0),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }'}}),"\n",(0,s.jsxs)(o.p,{children:["Build, validate, and run a Langflow Extension bundle to create a single-component extension you can ",(0,s.jsx)(o.code,{children:"pip-install"})," or load using ",(0,s.jsx)(o.code,{children:"lfx extension dev"}),"."]}),"\n",(0,s.jsx)(o.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsx)(o.li,{children:"Python 3.11 or greater"}),"\n",(0,s.jsxs)(o.li,{children:[(0,s.jsx)(o.code,{children:"langflow"})," installed with ",(0,s.jsx)(o.code,{children:"uv pip install langflow"}),". The ",(0,s.jsx)(o.code,{children:"lfx"})," CLI provides every command in this guide. For more information, see ",(0,s.jsx)(o.a,{href:"/get-started-installation#install-and-run-the-langflow-oss-python-package",children:"Install the Langflow OSS package"}),"."]}),"\n"]}),"\n",(0,s.jsx)(o.h2,{id:"create-an-extension",children:"Create an extension"}),"\n",(0,s.jsxs)(o.ol,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"Scaffold a new extension:"}),"\n",(0,s.jsx)(a.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"lfx ",props:{style:{color:"#FFA657"}}},{content:"extension init my-extension",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"cd ",props:{style:{color:"#79C0FF"}}},{content:"my-extension",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,s.jsx)(o.p,{children:"This creates the canonical layout the loader expects:"}),"\n",(0,s.jsx)(a.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"my-extension/",props:{}}]},{tokens:[{content:"\u251c\u2500\u2500 extension.json # the v0 manifest",props:{}}]},{tokens:[{content:"\u251c\u2500\u2500 pyproject.toml # so the bundle is pip-installable",props:{}}]},{tokens:[{content:"\u2514\u2500\u2500 src/",props:{}}]},{tokens:[{content:" \u2514\u2500\u2500 lfx_my_extension/",props:{}}]},{tokens:[{content:" \u251c\u2500\u2500 __init__.py",props:{}}]},{tokens:[{content:" \u251c\u2500\u2500 extension.json # symlink/copy used by importlib at runtime",props:{}}]},{tokens:[{content:" \u2514\u2500\u2500 components/",props:{}}]},{tokens:[{content:" \u2514\u2500\u2500 my_bundle/",props:{}}]},{tokens:[{content:" \u251c\u2500\u2500 __init__.py",props:{}}]},{tokens:[{content:" \u2514\u2500\u2500 my_component.py",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["For more information, see ",(0,s.jsx)(o.a,{href:"/next/extensions-manifest",children:"Manifest reference"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["To edit the component, open ",(0,s.jsx)(o.code,{children:"src/lfx_my_extension/components/my_bundle/my_component.py"}),".\nThe scaffold ships a working ",(0,s.jsx)(o.code,{children:"Component"})," subclass that prints ",(0,s.jsx)(o.code,{children:'"Hello, {name}!"'})]}),"\n",(0,s.jsx)(a.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"from",props:{style:{color:"#FF7B72"}}},{content:" lfx.custom.custom_component.component ",props:{style:{color:"#C9D1D9"}}},{content:"import",props:{style:{color:"#FF7B72"}}},{content:" Component",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"from",props:{style:{color:"#FF7B72"}}},{content:" lfx.io ",props:{style:{color:"#C9D1D9"}}},{content:"import",props:{style:{color:"#FF7B72"}}},{content:" MessageTextInput, Output",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"from",props:{style:{color:"#FF7B72"}}},{content:" lfx.schema.message ",props:{style:{color:"#C9D1D9"}}},{content:"import",props:{style:{color:"#FF7B72"}}},{content:" Message",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"class ",props:{style:{color:"#FF7B72"}}},{content:"HelloComponent",props:{style:{color:"#FFA657"}}},{content:"(",props:{style:{color:"#C9D1D9"}}},{content:"Component",props:{style:{color:"#79C0FF"}}},{content:"):",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" display_name ",props:{style:{color:"#C9D1D9"}}},{content:"= ",props:{style:{color:"#FF7B72"}}},{content:'"Hello"',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:" description ",props:{style:{color:"#C9D1D9"}}},{content:"= ",props:{style:{color:"#FF7B72"}}},{content:'"Greets the caller."',props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" inputs ",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:" [MessageTextInput(",props:{style:{color:"#C9D1D9"}}},{content:"name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"who"',props:{style:{color:"#A5D6FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:"display_name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"Who?"',props:{style:{color:"#A5D6FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:"value",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"world"',props:{style:{color:"#A5D6FF"}}},{content:")]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" outputs ",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:" [Output(",props:{style:{color:"#C9D1D9"}}},{content:"display_name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"Greeting"',props:{style:{color:"#A5D6FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:"name",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"greeting"',props:{style:{color:"#A5D6FF"}}},{content:", ",props:{style:{color:"#C9D1D9"}}},{content:"method",props:{style:{color:"#FFA657"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:'"build_message"',props:{style:{color:"#A5D6FF"}}},{content:")]",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" def ",props:{style:{color:"#FF7B72"}}},{content:"build_message",props:{style:{color:"#D2A8FF"}}},{content:"(self) -> Message:",props:{style:{color:"#C9D1D9"}}}]},{tokens:[{content:" return",props:{style:{color:"#FF7B72"}}},{content:" Message(",props:{style:{color:"#C9D1D9"}}},{content:"text",props:{style:{color:"#FFA657"}}},{content:"=f",props:{style:{color:"#FF7B72"}}},{content:'"Hello, ',props:{style:{color:"#A5D6FF"}}},{content:"{self",props:{style:{color:"#79C0FF"}}},{content:".who",props:{style:{color:"#C9D1D9"}}},{content:"}",props:{style:{color:"#79C0FF"}}},{content:'!"',props:{style:{color:"#A5D6FF"}}},{content:")",props:{style:{color:"#C9D1D9"}}}]}],lang:"python"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["The full surface available to bundle code is enumerated in ",(0,s.jsx)(o.a,{href:"https://github.com/langflow-ai/langflow/blob/main/BUNDLE_API.md",children:(0,s.jsx)(o.code,{children:"BUNDLE_API.md"})}),".\nAnything outside of ",(0,s.jsx)(o.a,{href:"https://github.com/langflow-ai/langflow/blob/main/BUNDLE_API.md",children:(0,s.jsx)(o.code,{children:"BUNDLE_API.md"})})," is not part of the API contract, and may move or break between releases."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"Before launching Langflow, run the static extension checker."}),"\n",(0,s.jsx)(a.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"lfx ",props:{style:{color:"#FFA657"}}},{content:"extension validate .",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["The validator parses the manifest and reports typed errors.\nIt does not execute imports by default, so it is safe to run against an extension you just downloaded. Use ",(0,s.jsx)(o.code,{children:"--execute-imports"})," only when you trust the source \u2014 it runs the import probe in a subprocess."]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"Run Langflow with the extension loaded."}),"\n",(0,s.jsx)(a.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"lfx ",props:{style:{color:"#FFA657"}}},{content:"extension dev .",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["This launches a Langflow dev server with ",(0,s.jsx)(o.code,{children:"my-extension"})," registered at the ",(0,s.jsx)(o.code,{children:"@official"})," slot. The Hello component appears in the Langflow UI component list under the bundle name in ",(0,s.jsx)(o.code,{children:"extension.json"}),"."]}),"\n",(0,s.jsx)(o.p,{children:"To see what the loader picked up:"}),"\n",(0,s.jsx)(a.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"lfx ",props:{style:{color:"#FFA657"}}},{content:"extension list ",props:{style:{color:"#A5D6FF"}}},{content:"--format ",props:{style:{color:"#79C0FF"}}},{content:"json",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:["Iterate with reload.\nEdit the component, save, then click the ",(0,s.jsx)(o.strong,{children:"Reload"})," action in the palette's bundle header (or run ",(0,s.jsx)(o.code,{children:"lfx extension reload --bundle my_bundle"}),"). The atomic-swap reload pipeline replaces the component in place; in-flight flows keep the pre-swap class so a running execution is never interrupted."]}),"\n",(0,s.jsx)(o.p,{children:"Reload only works in Mode A (local dev). Production deployments rebuild the Docker image."}),"\n"]}),"\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsx)(o.p,{children:"Ship the extension."}),"\n",(0,s.jsx)(o.p,{children:"Once the extension works locally, publish the package to PyPI:"}),"\n",(0,s.jsx)(a.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"python ",props:{style:{color:"#FFA657"}}},{content:"-m ",props:{style:{color:"#79C0FF"}}},{content:"build ",props:{style:{color:"#A5D6FF"}}},{content:"# builds the wheel + sdist",props:{style:{color:"#8B949E"}}}]},{tokens:[{content:"twine ",props:{style:{color:"#FFA657"}}},{content:"upload dist/",props:{style:{color:"#A5D6FF"}}},{content:"* ",props:{style:{color:"#79C0FF"}}},{content:"# publish to PyPI",props:{style:{color:"#8B949E"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,s.jsxs)(o.p,{children:["To install the extension into a Langflow environment with a regular ",(0,s.jsx)(o.code,{children:"pip install"}),":"]}),"\n",(0,s.jsx)(a.Code,{codeConfig:d,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"pip ",props:{style:{color:"#FFA657"}}},{content:"install lfx-my-extension",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"langflow ",props:{style:{color:"#FFA657"}}},{content:"run",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,s.jsx)(o.p,{children:"Discovery happens at server startup.\nThe bundle appears in the palette without further configuration."}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(o.h2,{id:"see-also",children:"See also"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsx)(o.li,{children:(0,s.jsx)(o.a,{href:"./extensions-overview",children:"Bundle extensions overview"})}),"\n",(0,s.jsx)(o.li,{children:(0,s.jsx)(o.a,{href:"./extensions-manifest",children:"Manifest reference"})}),"\n"]})]})}function x(e={}){const{wrapper:o}={...(0,r.R)(),...e.components};return o?(0,s.jsx)(o,{...e,children:(0,s.jsx)(u,{...e})}):u(e)}function y(e,o){throw new Error("Expected "+(o?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.9e340623.js b/assets/js/runtime~main.c313665b.js similarity index 99% rename from assets/js/runtime~main.9e340623.js rename to assets/js/runtime~main.c313665b.js index f10fdce3f0..4bc3ad0e5b 100644 --- a/assets/js/runtime~main.9e340623.js +++ b/assets/js/runtime~main.c313665b.js @@ -1 +1 @@ -(()=>{"use strict";var e,c,a,b,d,f={},t={};function r(e){var c=t[e];if(void 0!==c)return c.exports;var a=t[e]={id:e,loaded:!1,exports:{}};return f[e].call(a.exports,a,a.exports,r),a.loaded=!0,a.exports}r.m=f,r.c=t,e=[],r.O=(c,a,b,d)=>{if(!a){var f=1/0;for(i=0;i=d)&&Object.keys(r.O).every(e=>r.O[e](a[o]))?a.splice(o--,1):(t=!1,d0&&e[i-1][2]>d;i--)e[i]=e[i-1];e[i]=[a,b,d]},r.n=e=>{var c=e&&e.__esModule?()=>e.default:()=>e;return r.d(c,{a:c}),c},a=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,b){if(1&b&&(e=this(e)),8&b)return e;if("object"==typeof e&&e){if(4&b&&e.__esModule)return e;if(16&b&&"function"==typeof e.then)return e}var d=Object.create(null);r.r(d);var f={};c=c||[null,a({}),a([]),a(a)];for(var t=2&b&&e;"object"==typeof t&&!~c.indexOf(t);t=a(t))Object.getOwnPropertyNames(t).forEach(c=>f[c]=()=>e[c]);return f.default=()=>e,r.d(d,f),d},r.d=(e,c)=>{for(var a in c)r.o(c,a)&&!r.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:c[a]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((c,a)=>(r.f[a](e,c),c),[])),r.u=e=>"assets/js/"+({15:"d803fa53",298:"e4ebea9b",348:"54835a34",360:"e4dcfb14",681:"ffa0f8b1",889:"08b309e9",1072:"db819a37",1162:"f7e6b9d6",1171:"b685e31b",1304:"c42ebc22",1841:"9c41e875",1966:"b1582da4",2064:"7e7969d8",2272:"ca5faf5d",2318:"8f587777",2536:"2ff50c47",2975:"6c97c549",3138:"d9370077",3152:"c0de4bb7",3276:"38227151",3409:"9bd8678f",3525:"c29fce3e",3578:"59b4092b",3658:"0cf8fbd8",3775:"75a537ca",3804:"1ee9a475",3976:"10b71b62",4048:"6a9646c2",4085:"cb17b4e0",4120:"8adc8900",4243:"816dd483",4261:"e0e01b61",4289:"985618c6",4593:"58dbbaf6",4691:"9727a3a6",4692:"17fe7e04",4746:"a3a327ec",4810:"6c9a6dfb",4919:"ce43de4b",5009:"f55f73d6",5120:"0ab43b76",5200:"ff7f32ba",5270:"99931d31",5801:"0f72e758",5834:"4916c69a",6029:"6e1d72b3",6459:"290c78e6",6538:"719cba95",6547:"bab3e2be",6621:"de7300f3",6637:"2b2e9d64",6809:"8f7e7f58",6837:"683d3a1b",7022:"84d1f727",7243:"5d9d4350",7323:"92c23da4",7521:"d9570b85",7677:"7030d598",7760:"9a4cbb64",7859:"e91b64eb",7863:"b49f632d",7879:"9b2487b6",7918:"9d47bdcb",8336:"e7fd9095",8581:"0d551289",8607:"681e5335",8750:"8a484c94",8775:"9cc816e3",8800:"59755345",8839:"5853a7b9",8895:"b13f6e6e",9037:"62d465bc",9145:"b96ee1bf",9160:"57c436d9",9515:"9ee95d32",9574:"0e5d0999",9625:"5b73b0a8",9647:"5e95c892",10078:"b768a3a5",10645:"692c1124",10750:"33b5ee95",10801:"3d1d37ee",10883:"1dfb8d43",11185:"86f51cb1",11502:"c38e511c",11523:"131fd31a",11567:"22dd74f7",11574:"60ebe5d0",11597:"b0603568",11703:"ff8bad6c",11712:"889b5aff",11783:"6e911c05",12044:"ee278e4e",12102:"755d162a",12460:"954b19af",12464:"00af0ed3",12473:"ed13863f",12513:"85d722c9",12567:"2141bac8",12635:"cb95a86d",12788:"820172e8",12895:"083628f7",13035:"87b7bbd6",13038:"6df123cd",13147:"c83c70df",13164:"67f2dc6c",13341:"8e51f10f",13398:"2613df18",13412:"3782bb5d",13564:"95983061",13618:"c4ac99db",13638:"418a5217",13642:"4bf693fa",13656:"db31f7b6",13663:"934b1c33",13696:"69a0b706",13774:"510a19e7",13988:"d29c4a40",14102:"ef8630dc",14190:"e43bb559",14351:"13786dcf",14356:"7b864b08",14387:"60cde673",14435:"4e55999f",14574:"313670b1",14614:"e55b8e98",14876:"44691977",15458:"a0019f95",15512:"a64546e2",15648:"68ce6e99",15660:"1b208f60",15679:"a304954f",16035:"568ebfec",16224:"ef9aa223",16426:"9ebc9441",16497:"72f6697c",16513:"f13693f0",16619:"976be08c",16629:"a49b697b",16839:"80866714",16913:"2aae4c48",16916:"b1c2f621",17080:"c11ffc61",17229:"f046f3ac",17756:"323a2e94",17800:"1cf73564",17846:"f37945da",17938:"02b166f2",17976:"7191b20e",18060:"eb22fa0a",18094:"5f3efb00",18157:"5b43ec5c",18212:"04d40a0f",18401:"17896441",18436:"d80374ab",18553:"ecd5d0b1",18565:"88482ee6",18593:"56350599",18605:"3795ce9a",18611:"0c23d011",18725:"1605cba6",18732:"8d03d619",18822:"555ae514",18968:"5dbb78ab",19280:"06d4c56c",19363:"f3312674",19421:"9369b6bc",19556:"c2b2f507",19638:"db42831a",19724:"7a5c3569",19788:"e53e6cac",20038:"a99a45c9",20059:"349eb80a",20123:"67f5d62b",20253:"bb45d4f9",20351:"b9acb8d9",20357:"886ee107",20449:"0591c3e4",20596:"c2e0ed62",20717:"e4dee050",20879:"8bee5443",20929:"c62d7ccd",20953:"bd7e5f4a",21193:"8b191302",21359:"93f4a427",21446:"c78349fc",21490:"0f761898",21513:"2ff2412e",21590:"b916da46",21641:"f94c04df",21789:"e3d2cc9a",21826:"c3ae1367",21928:"4ed54818",22214:"1c1c22e6",22327:"46190d9c",22440:"69a67e92",22457:"46abd5bb",22469:"cd086441",22565:"622fd833",22614:"71a62fc9",22992:"9d7c1d70",23189:"83f43d77",23299:"f39513cb",23331:"7ccc086b",23387:"3d67876e",23468:"c76bd485",23689:"7a7f449b",23703:"9534baec",23723:"d29727e0",23822:"e1925c9e",23890:"f57aa203",23930:"884246de",24230:"cf0944b9",24314:"f6a246db",24369:"6b6b826b",24384:"622bdc6f",24477:"3420c5de",24672:"59a1fafb",24889:"e704e05b",24898:"627938a3",24930:"59eb0fd8",25412:"a6d50436",25510:"a632f6f5",25543:"e3038eb8",25657:"fc9e0258",25663:"b1379b2b",25707:"8593bab8",25757:"ad42ff54",25838:"bbb8ec1d",25903:"69d616f2",25943:"4c50bc3d",26083:"b143525f",26108:"2fed9fb3",26237:"8b896872",26311:"cce672fb",26371:"083445a7",26399:"13f35c9b",26655:"bf9522df",26691:"3e9e9e4d",26767:"23499d25",26873:"b06c1bff",26895:"6620f372",27118:"7996108c",27151:"b2f95c90",27176:"ae846847",27554:"66c0ced4",27637:"72881381",27807:"1a8a0a64",27826:"ecd87361",27964:"ff35961a",28043:"32636b55",28058:"c116cd5b",28110:"714c86d4",28158:"78f20457",28171:"cc554d5c",28240:"0102a83b",28301:"0f1fe5fe",28489:"dc52b92a",28686:"fd6bdeea",28702:"42962acd",28963:"56c23a02",29033:"563ddf9c",29279:"7d437779",29342:"dd544600",29528:"95e439d6",29612:"46a77053",29644:"83955a40",29781:"b796be74",29986:"d1f3cfe5",30126:"ae70dfbf",30488:"3d4d4fec",30534:"76e36fb0",30676:"7631f8d2",30684:"44121474",30885:"c7c5779e",30956:"03735ec1",31111:"83231553",31174:"05f35932",31224:"f8655c95",31345:"fe6d5b4f",31353:"e3ac9b36",31455:"cebd9a13",31714:"888321de",31731:"7f371604",31905:"b30506d0",32579:"dea11b82",32580:"19a17d95",32629:"3728a63b",32684:"12c97058",32696:"e76a67c4",32720:"a72a3fb5",32741:"43ad9ba4",32868:"5c10a708",32972:"00c9b276",33110:"33dc892c",33126:"a2e78534",33190:"35b7ab8a",33284:"6398c398",33345:"040305fb",33441:"57ca4a6e",33500:"c3c63498",34132:"4bec023b",34448:"af54cce0",34547:"b1d3effc",34572:"3348f35c",34600:"5f7173ff",34838:"519fcc13",34999:"6c4352b5",35045:"f2ec4536",35109:"81045c65",35110:"e9fe1d10",35145:"b9639850",35281:"eeeaec82",35300:"c6217ba7",35310:"3bc04d54",35532:"3ba5e8b3",35560:"a0b1cb48",35679:"d2fb5df7",35742:"aba21aa0",36177:"9e0af19a",36294:"06438862",36381:"1fc761b4",36690:"4d73c64d",36816:"e3193c90",37096:"16c09ef7",37217:"8433a9df",37258:"b0066887",37383:"c43bb4ff",37512:"4c09a7b3",37705:"2b91b6ca",37824:"2b56b65e",37829:"7c27dc91",37859:"593d9d00",37899:"a34828f4",38101:"dbc51d47",38269:"c7f91cbe",38351:"ef9b7b43",38513:"86e152f5",38622:"3421ab55",38649:"7de42fc9",38652:"f3ac2f9e",38701:"4fb38478",38855:"859c5ce2",39018:"0325e068",39049:"f182f6a8",39296:"0664e19b",39482:"a9c1003f",39504:"577c79e2",39610:"558d344b",39654:"d336c0e7",39673:"25e1f852",39762:"af7e9586",39921:"bf5514cf",40008:"4c98f287",40044:"e3f369d5",40323:"07cbc62e",40375:"3d81f1cf",40446:"a4232cf8",40547:"3325f616",40794:"62403cba",40825:"3056730d",40877:"0f15664b",41262:"736c10b7",41303:"41d45d82",41392:"524ac532",41586:"bb458927",41876:"5c3b537a",41891:"0e5f6b08",42192:"9d8bd6d4",42207:"4d90a6f8",42360:"017d425f",42557:"e52a8b92",42632:"568a9220",42657:"31611a54",42969:"f0ad3fbb",43505:"fa4f51ab",43534:"6334f102",43704:"7cddad42",43788:"5df8c6e2",43804:"e2bad863",43821:"597eac2b",44036:"fbcfc90d",44167:"4c9a9d60",44335:"f0f46288",44341:"e1a0f423",44544:"79093f63",44770:"68b33cec",44956:"7dd51668",45397:"eba86ea4",45485:"087959bf",45797:"a95869c9",45851:"2be9dc85",45854:"66e08c6c",45993:"64281dc0",46092:"53bec5b2",46113:"4dfec8bf",46195:"44254a19",46256:"6888b60e",46686:"17e0c1bd",46737:"dfae685c",46933:"2c0889df",46964:"0cb92a3e",46995:"9de16efd",47094:"73434c8c",47401:"d0d611e1",47472:"918796f5",47656:"b752a707",47855:"9439c1e0",48044:"26e0f666",48161:"c0975f59",48268:"a4b6c971",48386:"8431c66d",48529:"71225d3d",48625:"3a9e0e6c",48786:"614cb771",48975:"0fca4648",49091:"db80839f",49186:"7e09847e",49331:"ffcd190c",49640:"3b25a2ae",49712:"d8c8efb9",49763:"aece522a",49801:"907b1917",49895:"a2cf3cbb",49901:"74765de4",50021:"b75540e2",50062:"49dd0916",50093:"a3702f61",50142:"4fb29655",50262:"e3375295",50391:"bf09fd32",50448:"50ebac30",50601:"efc28ab7",50635:"ddc3f343",50789:"6120404c",50992:"6e07b85b",51150:"b9f408a3",51295:"4683b708",51308:"ec030ab7",51640:"34c961bc",52242:"780df666",52293:"bbeffb50",52410:"3c2009e3",52415:"b7f0fa5c",52475:"1ab69cbd",52598:"a3edac8b",52651:"8cd0650d",53104:"81ade132",53113:"052febf4",53251:"00ff87cb",53360:"2c0d05be",53361:"8f633f11",53368:"efa0f9ee",53483:"af3eee87",53628:"8db61ca8",53769:"2c3d9ffa",53963:"b7d6a934",54090:"a8ca941b",54098:"2d7c992e",54147:"2b710dbb",54160:"c81b2489",54239:"93d1f2ab",54245:"f04703a3",54474:"3db73d6f",54561:"45365f27",54767:"d5923456",54895:"567e79da",55112:"68f30bb0",55343:"1b10d5ba",55562:"0c843eb8",55820:"be1fd610",56534:"30291f60",56540:"e983a71a",56770:"2c96c8bf",56801:"acefda8b",56844:"ff75e5d1",56970:"da8ee26b",56980:"ded56be8",57034:"c699cab6",57046:"4bd60bfa",57150:"dee456a9",57156:"165dcd0d",57395:"1be2c3df",57502:"1a547ad8",57713:"bbd9acba",57720:"3bfbe7c9",58090:"6e85978c",58381:"147f5874",58545:"5a94716a",58997:"0f16c390",59262:"4e5c7eac",59289:"32141993",59376:"8d322213",59448:"f2e40bf0",59776:"28a2dd93",59837:"1167f920",59873:"7a5dcced",59885:"4821e150",59887:"508dc4aa",59931:"35953519",60107:"7e3143ed",60267:"e77fd094",60369:"5d7abaf0",60870:"c8c2e8e3",61141:"067fc716",61171:"db681b30",61334:"68845080",61427:"a07a3961",61483:"87a280ae",61507:"cfacdcbb",61702:"ac660c9a",61963:"97dc9ff4",62138:"1a4e3797",62278:"c4280da9",62382:"6f37ac18",62620:"f3ad3ad1",62663:"f8717faf",62718:"41998ae8",62719:"faf2e68f",62888:"32270e71",62937:"7fdc52f9",63055:"be290879",63206:"6306afff",63635:"1c7b2ed8",64129:"f183fa16",64187:"3c761b39",64249:"fc515ceb",64270:"e6c71d49",64452:"0ae0f1aa",64609:"09db28ba",64676:"56bf45ed",64721:"5a97a887",64785:"3760d024",64790:"e4a3fe7d",64865:"454071be",64875:"a26cf3cd",65048:"3c440e04",65069:"3d29008d",65138:"47094f16",65217:"fb0a7a3f",65410:"adea32c2",65412:"cd6761a3",65527:"4e5156cc",65708:"59a5ce7f",65739:"69079906",65966:"cc866a0f",66329:"a7b545c5",66546:"2e4bb914",66559:"7431813e",66611:"c6498d99",66662:"2d481cb5",66723:"bc868195",67066:"65dee3f9",67076:"308702e4",67098:"a7bd4aaa",67283:"48a1f7a0",67354:"c0d9f82a",67378:"7f3541b1",67403:"93bd0903",67484:"ad01e028",67831:"aab929a1",68035:"aacd5a8e",68206:"6425c856",68311:"3df9cb09",68392:"20177945",68419:"78d85954",68725:"07577e52",68765:"1a2eaade",68960:"c72ac64a",68990:"5f1a63c6",69033:"9f55b2fc",69264:"c7f32161",69501:"ef6abeb1",69568:"975a9c4e",69578:"1956b4f2",69601:"d202f5de",69674:"feac1fba",69798:"67eea6ad",69835:"76f768b2",69849:"503850d7",69924:"a87e3b03",69955:"36748e69",70004:"9daf1020",70019:"b74a56d9",70129:"dfa3dc90",71333:"c990d48e",71382:"8ba603f7",71731:"7f2f21f2",71861:"8ad67c3b",72076:"common",72147:"9dfc101b",72343:"e4268fbc",72350:"aca88518",72423:"19bcb67f",72466:"f4a50841",72544:"6631fea3",72593:"0fa3ec71",72706:"97839d16",73297:"d3cb7fcd",73352:"c39faaf0",73353:"2b4d41d7",73454:"0c48e067",73480:"72ef3185",73536:"2eb731bc",73623:"2517ec2a",73694:"72eeaf12",73706:"09d9ec5b",73763:"221619dc",73876:"3fdc0814",74209:"be104550",74612:"6a9eca1a",74644:"d3e886ab",74645:"3512f6ed",74836:"310c401c",74995:"62266e9d",75144:"944c5f91",75264:"e6597272",75312:"9f8d430a",75333:"70909872",75560:"481fac59",75644:"47733641",75679:"c9fb925b",75734:"cef46d81",75741:"af5bd3c8",75780:"d5583dec",76014:"939f801c",76172:"f22b074d",76375:"faa4a519",76605:"b64518a7",76925:"057068ec",76999:"d5ec984b",77027:"db33ae8f",77153:"68090d23",77202:"c4ce7d01",77356:"2ea623f2",77567:"4545d55b",77667:"f300f72f",77839:"85e8edc4",77901:"2ef5093f",78169:"12151514",78213:"e4db1f51",78215:"721c3877",78270:"80c19293",78343:"4b64ecc5",78508:"10dd1586",78571:"da1ad91e",78633:"9120c1b0",78873:"c441d042",78901:"bf15d2f8",79006:"e2cf5453",79048:"a94703ab",79260:"0413db52",79289:"314515b7",79303:"5017ec07",79315:"16faf8bf",79327:"4e911fe9",79492:"43c43981",79627:"e0c501ee",79976:"230d5fdc",80030:"db8c087e",80190:"b5b00d31",80292:"d35a0895",80320:"c8932bdf",80598:"db4f3bbd",80957:"c141421f",81006:"47e58a89",81168:"f59fd575",81254:"86d16fc7",81493:"78befb93",81628:"c6e3d68f",81690:"9fbf837f",81740:"7781e1f8",81895:"d375ca1d",82096:"c8d33703",82206:"aa56551c",82338:"f32b825a",82439:"400ecdbb",82752:"e14655eb",83019:"ced78c62",83683:"5a0b74d9",83992:"18dc6e4d",84051:"a3a08fde",84064:"29a3e49d",84170:"b4bc1be8",84263:"9a5e6f6b",84592:"df85e4a0",84666:"59ad984c",84670:"7f8f0b02",84842:"af836517",84900:"4907faf4",85106:"dc7c1a8b",85168:"f83cb548",85416:"816072e4",85497:"a9d8f5ad",85536:"52238869",85835:"d0e298f4",85962:"400d3dc1",86049:"1f4ffe33",86104:"459e8eb3",86154:"b5725d20",86165:"819151f9",86585:"23da8cfc",86738:"2e821519",87136:"e765ceb6",87284:"aa4c8ca2",87294:"fcc3e8af",87902:"619c7267",87909:"6c1a3ce8",87968:"9b0af131",88122:"f641c1d8",88138:"2be18267",88267:"02f8077b",88291:"9767dab6",88294:"f2bedfce",88296:"7faa66fd",88776:"afbb88b8",88909:"045613ad",88999:"3a9fbbe6",89132:"293f8708",89151:"50b9949d",89178:"aaa36fb1",89213:"62d1268c",89227:"7e40e6b3",89299:"bb2b4e8e",89459:"97254d1d",89610:"453ae64a",89640:"39d45b55",89792:"f2545f30",89830:"ce671f56",89897:"f0eeb72e",90496:"168c922b",90600:"ee87c775",90860:"e47a8da3",90872:"b4eb1ea1",90880:"35bd09bf",90951:"23480489",90972:"e66b1de2",91193:"444a6da6",91209:"f6dd9f9d",91227:"fa88888c",91285:"695c8cb8",91408:"2fc7e024",91587:"71394c29",91691:"ce1a1cdf",91735:"45c87940",92116:"0f1bef30",92244:"0108e1a3",92348:"f2da9399",92394:"c2ea283c",92444:"904b8c49",92909:"144a43f5",92990:"1d50b418",92992:"dac6642a",93140:"1a29c454",93240:"b079b393",93247:"f0b67137",93263:"730da84e",93311:"e54ce709",93359:"6d032186",93457:"f16848a8",93479:"8764ac05",93542:"c37cc938",93576:"ecfe7a7a",93591:"49aa9822",93789:"ddec769b",94156:"1a08aa58",94173:"d51059db",94382:"752a25f3",94396:"5e3fd8b4",94508:"351b3050",94568:"d1a61039",94573:"baacc2a1",94728:"def84d04",94907:"86116998",95057:"99abe279",95165:"bd565561",95180:"8ee2c8d6",95200:"af95bc92",95234:"a9898daa",95523:"9bacfd07",95627:"e27c2ac1",95638:"eed50738",95893:"de09cc26",96585:"67da1391",96601:"81bb6a5c",96888:"46d914cb",97078:"f531aa2f",97202:"58f0e94f",97221:"9c504d23",97382:"00f42144",97498:"e4400415",97742:"318a76ad",97984:"eaea3b35",98096:"11f65c63",98265:"50cf4e76",98284:"b2eaded0",98327:"96d9d578",98417:"aceb0cb2",98531:"71726720",98780:"75c9b719",98862:"e87b52ac",99082:"d47919d3",99498:"479e265c",99522:"85dc2a2b",99648:"8c7ba981",99758:"439d880a"}[e]||e)+"."+{15:"4bc36aab",298:"44dff97f",348:"b78d6bb1",360:"723ac405",681:"26c49a71",889:"63d1b6f5",1072:"3e3b6b07",1162:"c8c3ce21",1171:"14057f52",1304:"43e7fbc9",1841:"71033951",1966:"154afdce",2064:"c4c9ceca",2272:"7908586d",2318:"60c438f9",2536:"e5508fae",2975:"31bf811d",3138:"77f6d4a2",3152:"62300a03",3276:"a23e447d",3409:"a0c5c02b",3525:"cc814c33",3578:"f324a27e",3658:"6fd573af",3775:"e1228737",3804:"90a6f752",3976:"ca844059",4048:"e81f215f",4085:"8810a337",4120:"6bd30035",4243:"7ad43182",4261:"33c02edb",4289:"bea57783",4593:"93b64130",4691:"24c43d4d",4692:"838b8dff",4746:"f234c9c3",4810:"17d80b40",4919:"85c50ac1",5009:"cd4e928a",5120:"daa84702",5200:"e80ae01b",5270:"cc59bede",5480:"c523c75e",5801:"0c134a12",5834:"4194fa25",6029:"27d54e04",6459:"2463c0f5",6538:"3d80e9fb",6547:"b5e72c89",6621:"d9efd12b",6637:"0331d10c",6809:"c64ab4cc",6837:"d7a57322",7022:"c43e78e9",7243:"af9f0e46",7323:"c99f5340",7521:"fbea3816",7677:"52b60ef5",7760:"dd07a16a",7859:"2a552852",7863:"83840213",7879:"c0eef33b",7918:"9aebd826",8336:"5a908ba3",8581:"99c4ae64",8607:"35fbd426",8750:"c79946fb",8775:"c2617459",8800:"68b3e82c",8839:"aac6ecd4",8895:"5a53e688",9037:"15c8e66b",9145:"b46b9340",9160:"56cc37af",9515:"684f16e5",9574:"29841f45",9625:"82f7363f",9647:"c23c9301",10078:"bcb6c741",10645:"793ac2a8",10750:"a2a00d8f",10801:"b75af2f7",10883:"3527f197",11083:"8f40709a",11185:"26866c1b",11502:"ed20ebd4",11523:"e95cd60a",11567:"be0bbd14",11574:"99a63c75",11597:"187ed0a6",11703:"ea70de26",11712:"4b67842a",11783:"3d8d671d",12044:"2077ca90",12102:"ea452a79",12460:"9826e2f9",12464:"6bc2ce27",12473:"8aa8bc30",12513:"6dd5a77c",12567:"081f88db",12635:"44a518bc",12788:"e6ff4e9d",12895:"6e75fbfc",13035:"dca1fdb8",13038:"4810d98b",13147:"03e914b0",13164:"5dea8808",13341:"e9e47c85",13398:"567e0aaf",13412:"6e53959c",13564:"468bc112",13618:"f79e997c",13638:"613bd52e",13642:"1e08c037",13656:"4c11e5d1",13663:"8c20653f",13696:"5310975c",13774:"711039f7",13988:"fd9e3a71",14102:"4f231102",14190:"f90e7fd6",14351:"851b7342",14356:"ae303325",14387:"53247ec5",14435:"f665f0de",14574:"755f1050",14614:"ee299bb8",14876:"c6ed949f",15458:"18726da8",15512:"93a18dfd",15648:"34fa4eb8",15660:"3ed2fa64",15679:"3cfba2b3",16035:"29386876",16224:"e11e86d6",16426:"c1bf54de",16497:"6b37cf02",16513:"87ed9775",16619:"76f5a5ba",16629:"7ec2545f",16839:"b901f5dd",16913:"642b47cd",16916:"5e1f9bf3",17080:"cd0d48bd",17229:"81f761a3",17756:"85ee986f",17800:"364d9dd7",17846:"a680658a",17938:"21b489bd",17976:"509d8a7a",18060:"47be55da",18094:"40eec956",18157:"12e1fbfa",18212:"9211609e",18401:"1a60d6d0",18436:"e94cad69",18553:"7bd33131",18565:"eeed52ba",18593:"ba2a9c76",18605:"c9ea0147",18611:"c1a27e4a",18725:"67805df5",18732:"e07b3b2c",18822:"8bb0f2a6",18968:"76c259f5",19280:"42bafd08",19363:"e03467b9",19421:"06274e19",19556:"fb32f335",19638:"90a6eab4",19724:"e6010b67",19788:"79160c86",20038:"e6c18b78",20059:"54b78d53",20123:"a5caf2c1",20253:"635a9d5f",20351:"dd491c08",20357:"0b8529d7",20449:"62c51be3",20596:"b128b2f8",20717:"7cad3e05",20879:"df1bfb2d",20929:"68f9db6c",20953:"5359302a",21193:"373806b9",21359:"6d87bab4",21446:"0f6f61bb",21490:"1f71748e",21513:"93bfe49f",21590:"28f2d347",21641:"8c270c2b",21789:"4a3325bb",21826:"183033b5",21928:"3862cb3c",22214:"eb0cfed2",22327:"e061555f",22440:"599b499b",22457:"8cfbb28b",22469:"237e9abd",22565:"0c1ed44d",22614:"6f2f3de9",22992:"d93bfdf8",23189:"50c0adc0",23299:"3b423e1e",23331:"35eee4e7",23387:"f37d5c60",23468:"5e040828",23689:"a6922e67",23703:"3bb8a42a",23723:"7ed31ec0",23822:"ae01165d",23890:"be34832d",23930:"36399a7f",24230:"f045eb15",24314:"cec28147",24369:"b846f64f",24384:"136a578d",24477:"4edb1d30",24672:"f0749b03",24889:"cd6be391",24898:"2b3df3f8",24930:"1da5194a",25412:"9621daa9",25510:"b455374e",25543:"e5eccd14",25657:"ff645da6",25663:"8e60b0a0",25707:"172bbca0",25757:"c7ddfc6c",25838:"fdf1baca",25903:"d7592810",25943:"bc7bd403",26083:"64414fde",26108:"5ce3b274",26237:"77b6ad54",26311:"e7438899",26371:"2d0ebd26",26399:"d87731f7",26655:"b6b0873b",26691:"ca08fd03",26767:"7c51c60b",26873:"f6b845b1",26895:"87003dc2",27118:"8b0b7761",27151:"7f43210e",27176:"84cbc243",27554:"4cd7c1c8",27637:"e27326d0",27807:"4af5241c",27826:"d8251920",27964:"50deb695",28043:"380abc57",28058:"7dedae97",28110:"642bb860",28158:"23429c19",28171:"c838cc62",28240:"60ea0de3",28301:"545153a1",28489:"cbdd0edc",28686:"51a940c5",28702:"cd8164b9",28963:"1d975761",29033:"b4a8c723",29279:"af9124b5",29342:"206784d1",29528:"0791ec77",29612:"649e8174",29644:"bf0a3a69",29781:"598b770c",29986:"7751ed96",30126:"5cd771fb",30488:"79680e9c",30534:"6c79d801",30676:"e5c26923",30684:"b6825efa",30885:"1ddffb62",30956:"6164e152",31111:"a01319aa",31174:"1ec3d732",31224:"f376e7dc",31345:"97f1f97c",31353:"098748f9",31455:"8e2a334d",31714:"7801b2eb",31731:"2137d07c",31905:"8214e71b",32579:"d68133e8",32580:"8e68c8db",32629:"19d5cc34",32684:"0768db6d",32696:"c5dec334",32720:"bce0ade9",32741:"d8bc77ae",32868:"790995bb",32972:"5abaacc2",33110:"58e71da4",33126:"654d7b9f",33190:"b660faa0",33284:"ffa40397",33345:"7dd0cb40",33441:"a2b4073c",33500:"8ba5f851",34132:"c1be6a93",34448:"f6776f2b",34547:"666ee7be",34572:"469e5ac8",34600:"f100fce8",34838:"b76970ce",34999:"4af78575",35045:"7ee97db8",35109:"a9505d79",35110:"527f43e3",35145:"24ae9a90",35281:"51d855ed",35300:"b0f3dba9",35310:"3eba2602",35532:"9fa30f84",35560:"a9c2ef2a",35679:"219a1177",35742:"923e0bb4",36177:"814073c0",36294:"07d540ef",36381:"7de8a367",36690:"1597b896",36816:"f46b47c5",37096:"f97f828f",37217:"7a4ef066",37258:"2d9b47f6",37383:"cc6b7ebe",37512:"41bb278f",37705:"a96e7b4b",37824:"1111924d",37829:"c4090496",37859:"c29ee813",37899:"2d4e5992",38101:"af9e5894",38269:"f0521135",38351:"a0a9023e",38513:"c6f1f736",38622:"1eb17e77",38649:"e576cd1e",38652:"e57eed17",38701:"0d8ce803",38855:"f0e6f01f",39018:"93abc84e",39049:"32707eda",39296:"8f78413b",39482:"4fde3187",39504:"77db0bfe",39610:"fa234508",39654:"4db4c3fc",39673:"cbcb5bb8",39762:"f67e8b39",39921:"37d56ff8",40008:"82885f02",40044:"29aed03a",40323:"6d4b7c78",40375:"293bb51b",40446:"463f26bc",40547:"b0c224b7",40794:"4556ba55",40825:"e6301251",40877:"64317589",41262:"45beafb1",41303:"742edf8b",41392:"71a38241",41586:"7f7a2662",41876:"826ab507",41891:"cf8135df",42192:"f70996a5",42207:"25bba291",42360:"75ddf9be",42557:"4a0e5a95",42632:"fda59463",42657:"b7fd1bd8",42969:"a50aac96",43505:"d69c13c4",43534:"8b79edc7",43704:"3bcd3352",43788:"ccc0ed14",43804:"6b0a7f85",43821:"d2c6b415",44036:"98874fa9",44167:"058f139c",44335:"342b7094",44341:"cba3956c",44544:"f948e9c1",44770:"22020439",44956:"7707ccd2",45397:"517e2896",45485:"2296c95c",45797:"5ab33131",45851:"dc135ae3",45854:"b489e5a5",45993:"10933b35",46092:"223d9cea",46113:"270df022",46195:"107d32b5",46256:"8464ed70",46686:"659a7f77",46737:"9a73e848",46933:"79ed0979",46964:"d5e99c7c",46995:"a2e86fa9",47094:"40295101",47401:"1ef6fc9a",47472:"065a6c1f",47656:"d1c2b2a5",47855:"a1305ef9",48044:"e4ae06d6",48161:"82dc08e5",48268:"7172fecd",48287:"992866e0",48386:"d11e5d2c",48529:"0fdaa885",48625:"3d05a703",48786:"210c0593",48975:"10b8e85d",49091:"8d9de280",49186:"db6e1a33",49331:"9934dfbf",49640:"7f344ff6",49712:"f906fd11",49763:"6d3ea318",49801:"17625821",49895:"be49135a",49901:"7617084c",50021:"7964ffa9",50062:"85e8f103",50093:"929db93e",50142:"ef6d7e19",50262:"7e5274fd",50391:"37fed417",50448:"fbc8b626",50601:"7b3be885",50635:"565ee78e",50789:"95ab4550",50992:"7aaa7657",51150:"aa8b20ca",51295:"4b3d8af9",51308:"b7ac26d5",51640:"9a59b452",51925:"26a11119",52242:"56b336d0",52293:"b9e3a678",52410:"6837a5d5",52415:"e0c6366d",52475:"d6ac21c2",52598:"524d95c7",52651:"4cadb00e",53104:"76dd176c",53113:"872fb67c",53251:"f110894a",53360:"4b4f5569",53361:"d1d9c866",53368:"15914d0e",53483:"132ffd8d",53628:"999878bb",53769:"182f1e37",53963:"686f9f59",54090:"bf6c7192",54098:"81b131d7",54147:"228470c6",54160:"259f623b",54239:"76fc4690",54245:"6d6a8ecc",54474:"901b9787",54561:"f1549f5f",54767:"063119ff",54895:"f988ffe9",55112:"29fbaa20",55343:"b415eb2a",55562:"d7365956",55820:"86abf9a0",56534:"45ac6ade",56540:"b487100b",56770:"a21df832",56801:"822541e4",56844:"e9bd8c0e",56970:"d7ce839b",56980:"60ea0ee7",56990:"60356de0",57034:"923d8637",57046:"99320596",57150:"61f0c871",57156:"a199f002",57395:"50b3d0b9",57502:"ab23db6a",57713:"a8afb594",57720:"f8beb583",58090:"0db32e61",58381:"d07d4950",58545:"6889ecec",58913:"504dfdef",58997:"4fd0d890",59262:"5a08e83e",59289:"bced12b1",59376:"52018bdd",59448:"66613dec",59776:"bc14337d",59837:"5db96621",59873:"6330a70f",59885:"8eb69889",59887:"ad710240",59931:"a7d9606d",60107:"190fe3cf",60267:"b4042c41",60369:"2dc38707",60870:"70338ba4",61141:"bb908bf6",61171:"b0aabb13",61334:"064c4a9a",61427:"bb3a6ec8",61483:"30560642",61507:"1a15d401",61702:"d515e0bf",61963:"2526868a",62138:"8c1f8d7b",62278:"9c561aab",62382:"8d4bff8d",62620:"320e764b",62663:"d1fe9554",62718:"c7386de8",62719:"7d85ae0a",62888:"2b886d1d",62937:"ce46f85b",63055:"bfdd22b2",63206:"f493eac3",63324:"11382e69",63635:"4237cd41",63760:"d715fe9b",64129:"0276d5d2",64187:"0b430470",64249:"752fb006",64270:"9d49c0b4",64452:"712d1f3d",64609:"fc42becc",64676:"bdef8e95",64721:"99e11d57",64785:"3e71e5f0",64790:"8836c920",64865:"ea8a1ec7",64875:"badbec4c",65048:"4ccce4bf",65069:"29efbae5",65138:"92d879d9",65217:"a9465447",65410:"a10e77bd",65412:"34d816d3",65527:"5dd40743",65708:"46623f4c",65739:"dbd95a84",65966:"c6778bda",66329:"839f419e",66546:"92e58ea1",66559:"a00bf155",66611:"e4c839d0",66662:"440fc737",66723:"7ca16897",67066:"506bfab9",67076:"dd5fd35b",67098:"1f707bd1",67283:"2d9b7cb2",67354:"87bbd614",67378:"371bef8f",67403:"b8da2e78",67484:"2f5867bd",67831:"2c709b57",68035:"0feb9a5c",68206:"8c3a7480",68311:"1274d116",68392:"01770702",68419:"118b253a",68725:"ff519825",68765:"3558c7bc",68960:"e04d6c42",68990:"fe0f56c2",69033:"18c70cc2",69264:"b0cf1b2b",69501:"392ff924",69568:"54e57637",69578:"a680a6dc",69601:"50828cf5",69674:"f939d631",69798:"27644ea8",69835:"c75dbfb5",69849:"2874f6ac",69924:"74214c1b",69955:"47b203a8",70004:"2d5caa4c",70019:"fd4fbe01",70129:"b6691fbb",71333:"cc40ef44",71382:"c0a13728",71731:"6b3fc71c",71861:"40571f27",72076:"0904942f",72147:"64d57c58",72343:"ff2212f7",72350:"8fdb9113",72423:"04aaef34",72466:"60b66785",72544:"a5a6f671",72593:"6b7e5a57",72706:"a7ed40ea",73297:"74d47fa5",73352:"e466f163",73353:"5265c1ef",73454:"d11fa23b",73480:"75dd3d21",73536:"d7f7ed62",73623:"34c41f44",73694:"d42eb535",73706:"7e8340a0",73763:"6015cf04",73876:"756ed7a5",74209:"ef2380cf",74612:"0e51c25a",74644:"b72d176a",74645:"6206a3b7",74836:"4353944a",74995:"a684a028",75144:"9f105302",75264:"d2cb7d59",75312:"c5a76fdc",75333:"ff378399",75560:"fc4629b4",75644:"2e8b9d7c",75679:"6989b271",75734:"4195fdc1",75741:"65c30c94",75780:"fc3fc3a6",76014:"a2096eb3",76172:"fd036537",76375:"1b06fb86",76605:"9f17e4ca",76925:"ec536258",76999:"d4c5bf41",77027:"46d98212",77153:"57cad231",77202:"e4cf2c86",77356:"dba44b93",77567:"318f0a89",77667:"66235574",77839:"dcbb9d9e",77901:"b33df9db",78169:"77131f2d",78213:"e00664f3",78215:"7ba918de",78270:"e2a3cddb",78343:"3e44ac5c",78508:"35049b30",78571:"79899a0f",78633:"ccfafba8",78873:"0abfd346",78901:"aa6186de",79006:"431408d5",79048:"140c9501",79260:"80586130",79289:"9dd99a1d",79303:"d967528d",79315:"ad10bdfd",79327:"67cb169d",79492:"7e7a41c9",79627:"a1fc44dc",79976:"01126d84",80030:"dfb95771",80190:"ec037c45",80292:"5c15d5f9",80320:"4e627c09",80598:"efe1a66f",80957:"0374bea0",81006:"05d93097",81168:"a2debc22",81254:"568e7ca5",81493:"82d29b0e",81628:"4effcbfb",81690:"753391ac",81740:"b33f3bc3",81895:"cf915c1a",82096:"80762977",82206:"b32e6a1a",82237:"dd615fba",82338:"92518f22",82439:"3279f9e1",82752:"db53e0f4",83019:"e315d3e0",83683:"a4933c9e",83992:"5a4f240f",84051:"b62fb1eb",84064:"f43d917a",84170:"ec3e9d73",84263:"d5ce4cff",84592:"e0bbdffc",84666:"8d377180",84670:"2a952a1c",84842:"6c64e529",84900:"f9e04dcf",85106:"5a4d2f09",85168:"099173f5",85416:"b25a8b2b",85497:"a2d3bcc5",85536:"cac8aec2",85835:"9d9e4984",85962:"9e6d37ff",86049:"e66e2ea6",86104:"346bc1c6",86154:"a5b3413b",86165:"e3f048ec",86585:"fad7da85",86738:"09aef0ca",87136:"f73646db",87284:"9db8a422",87294:"442b8920",87902:"fc525f67",87909:"d141aa91",87968:"2192ce2b",88122:"f50d0b7c",88138:"252e15e2",88267:"cc76d66e",88291:"0b49eb77",88294:"36662e4d",88296:"3e071b42",88776:"cfde878c",88909:"c3d67da5",88999:"c2b003b9",89132:"3f585fc8",89151:"e49a8f72",89178:"dbf11d63",89213:"f2a0ac4b",89227:"8c16f99a",89299:"fbd5cfa8",89459:"ead6a011",89610:"ec30274f",89640:"6f1e0f22",89792:"e0fa33b3",89830:"9a4c1773",89897:"bfd5b5b1",90496:"35d86ab8",90600:"b799d22c",90860:"e168c7fb",90872:"25bad842",90880:"b2f41745",90951:"d98ce668",90972:"6786bbd0",91193:"7ae03ac2",91209:"dc8f6f51",91227:"6a864d95",91285:"6044b200",91408:"0b247f4b",91587:"292e5239",91691:"eb55a9cd",91735:"77eff6b5",92116:"af70f534",92244:"0e3cdaa0",92348:"267ab3be",92394:"2c29c6c0",92444:"db93d9f9",92693:"742a8a9b",92909:"9a4f4b2d",92990:"39fd1e14",92992:"2e4abe9c",93140:"cdba2df3",93240:"6be26c03",93247:"8009a68d",93263:"22d971a5",93311:"f9400a9f",93359:"ee2fa955",93457:"32d8e53d",93479:"7fedfebb",93542:"e0bfce8e",93576:"c661a530",93591:"35094a44",93789:"30ff171e",94156:"6aae74fc",94173:"df15d197",94382:"2afce015",94396:"da237f67",94508:"27d97567",94568:"122ff013",94573:"5d6d2c86",94728:"c76ded80",94907:"15474a01",95057:"5807135d",95165:"ce5ad587",95180:"396727f9",95200:"3410b5d2",95234:"829d8ca7",95523:"da210ac9",95627:"79c05cb7",95638:"d23eb0db",95893:"940f92ef",96585:"8e48c643",96601:"aefc9007",96888:"a39713d5",97078:"988547f4",97202:"d01b59a1",97221:"76d9505a",97382:"5dcea48f",97498:"f95c1dad",97742:"f5de1356",97984:"64493c30",98096:"29d15ec7",98265:"0ff7d50a",98284:"58766206",98327:"1b9cfd60",98417:"87dcc7bd",98531:"b4b60cb8",98780:"7d74ec67",98862:"f511c02e",99082:"23677b2f",99498:"e8bb8cd4",99522:"77669bfb",99648:"3a759b71",99758:"76495ae2"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,c)=>Object.prototype.hasOwnProperty.call(e,c),b={},d="langflow-docs:",r.l=(e,c,a,f)=>{if(b[e])b[e].push(c);else{var t,o;if(void 0!==a)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var d=b[e];if(delete b[e],t.parentNode&&t.parentNode.removeChild(t),d&&d.forEach(e=>e(a)),c)return c(a)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=u.bind(null,t.onerror),t.onload=u.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.p="/",r.gca=function(e){return e={12151514:"78169",17896441:"18401",20177945:"68392",23480489:"90951",32141993:"59289",35953519:"59931",38227151:"3276",44121474:"30684",44691977:"14876",47733641:"75644",52238869:"85536",56350599:"18593",59755345:"8800",68845080:"61334",69079906:"65739",70909872:"75333",71726720:"98531",72881381:"27637",80866714:"16839",83231553:"31111",86116998:"94907",95983061:"13564",d803fa53:"15",e4ebea9b:"298","54835a34":"348",e4dcfb14:"360",ffa0f8b1:"681","08b309e9":"889",db819a37:"1072",f7e6b9d6:"1162",b685e31b:"1171",c42ebc22:"1304","9c41e875":"1841",b1582da4:"1966","7e7969d8":"2064",ca5faf5d:"2272","8f587777":"2318","2ff50c47":"2536","6c97c549":"2975",d9370077:"3138",c0de4bb7:"3152","9bd8678f":"3409",c29fce3e:"3525","59b4092b":"3578","0cf8fbd8":"3658","75a537ca":"3775","1ee9a475":"3804","10b71b62":"3976","6a9646c2":"4048",cb17b4e0:"4085","8adc8900":"4120","816dd483":"4243",e0e01b61:"4261","985618c6":"4289","58dbbaf6":"4593","9727a3a6":"4691","17fe7e04":"4692",a3a327ec:"4746","6c9a6dfb":"4810",ce43de4b:"4919",f55f73d6:"5009","0ab43b76":"5120",ff7f32ba:"5200","99931d31":"5270","0f72e758":"5801","4916c69a":"5834","6e1d72b3":"6029","290c78e6":"6459","719cba95":"6538",bab3e2be:"6547",de7300f3:"6621","2b2e9d64":"6637","8f7e7f58":"6809","683d3a1b":"6837","84d1f727":"7022","5d9d4350":"7243","92c23da4":"7323",d9570b85:"7521","7030d598":"7677","9a4cbb64":"7760",e91b64eb:"7859",b49f632d:"7863","9b2487b6":"7879","9d47bdcb":"7918",e7fd9095:"8336","0d551289":"8581","681e5335":"8607","8a484c94":"8750","9cc816e3":"8775","5853a7b9":"8839",b13f6e6e:"8895","62d465bc":"9037",b96ee1bf:"9145","57c436d9":"9160","9ee95d32":"9515","0e5d0999":"9574","5b73b0a8":"9625","5e95c892":"9647",b768a3a5:"10078","692c1124":"10645","33b5ee95":"10750","3d1d37ee":"10801","1dfb8d43":"10883","86f51cb1":"11185",c38e511c:"11502","131fd31a":"11523","22dd74f7":"11567","60ebe5d0":"11574",b0603568:"11597",ff8bad6c:"11703","889b5aff":"11712","6e911c05":"11783",ee278e4e:"12044","755d162a":"12102","954b19af":"12460","00af0ed3":"12464",ed13863f:"12473","85d722c9":"12513","2141bac8":"12567",cb95a86d:"12635","820172e8":"12788","083628f7":"12895","87b7bbd6":"13035","6df123cd":"13038",c83c70df:"13147","67f2dc6c":"13164","8e51f10f":"13341","2613df18":"13398","3782bb5d":"13412",c4ac99db:"13618","418a5217":"13638","4bf693fa":"13642",db31f7b6:"13656","934b1c33":"13663","69a0b706":"13696","510a19e7":"13774",d29c4a40:"13988",ef8630dc:"14102",e43bb559:"14190","13786dcf":"14351","7b864b08":"14356","60cde673":"14387","4e55999f":"14435","313670b1":"14574",e55b8e98:"14614",a0019f95:"15458",a64546e2:"15512","68ce6e99":"15648","1b208f60":"15660",a304954f:"15679","568ebfec":"16035",ef9aa223:"16224","9ebc9441":"16426","72f6697c":"16497",f13693f0:"16513","976be08c":"16619",a49b697b:"16629","2aae4c48":"16913",b1c2f621:"16916",c11ffc61:"17080",f046f3ac:"17229","323a2e94":"17756","1cf73564":"17800",f37945da:"17846","02b166f2":"17938","7191b20e":"17976",eb22fa0a:"18060","5f3efb00":"18094","5b43ec5c":"18157","04d40a0f":"18212",d80374ab:"18436",ecd5d0b1:"18553","88482ee6":"18565","3795ce9a":"18605","0c23d011":"18611","1605cba6":"18725","8d03d619":"18732","555ae514":"18822","5dbb78ab":"18968","06d4c56c":"19280",f3312674:"19363","9369b6bc":"19421",c2b2f507:"19556",db42831a:"19638","7a5c3569":"19724",e53e6cac:"19788",a99a45c9:"20038","349eb80a":"20059","67f5d62b":"20123",bb45d4f9:"20253",b9acb8d9:"20351","886ee107":"20357","0591c3e4":"20449",c2e0ed62:"20596",e4dee050:"20717","8bee5443":"20879",c62d7ccd:"20929",bd7e5f4a:"20953","8b191302":"21193","93f4a427":"21359",c78349fc:"21446","0f761898":"21490","2ff2412e":"21513",b916da46:"21590",f94c04df:"21641",e3d2cc9a:"21789",c3ae1367:"21826","4ed54818":"21928","1c1c22e6":"22214","46190d9c":"22327","69a67e92":"22440","46abd5bb":"22457",cd086441:"22469","622fd833":"22565","71a62fc9":"22614","9d7c1d70":"22992","83f43d77":"23189",f39513cb:"23299","7ccc086b":"23331","3d67876e":"23387",c76bd485:"23468","7a7f449b":"23689","9534baec":"23703",d29727e0:"23723",e1925c9e:"23822",f57aa203:"23890","884246de":"23930",cf0944b9:"24230",f6a246db:"24314","6b6b826b":"24369","622bdc6f":"24384","3420c5de":"24477","59a1fafb":"24672",e704e05b:"24889","627938a3":"24898","59eb0fd8":"24930",a6d50436:"25412",a632f6f5:"25510",e3038eb8:"25543",fc9e0258:"25657",b1379b2b:"25663","8593bab8":"25707",ad42ff54:"25757",bbb8ec1d:"25838","69d616f2":"25903","4c50bc3d":"25943",b143525f:"26083","2fed9fb3":"26108","8b896872":"26237",cce672fb:"26311","083445a7":"26371","13f35c9b":"26399",bf9522df:"26655","3e9e9e4d":"26691","23499d25":"26767",b06c1bff:"26873","6620f372":"26895","7996108c":"27118",b2f95c90:"27151",ae846847:"27176","66c0ced4":"27554","1a8a0a64":"27807",ecd87361:"27826",ff35961a:"27964","32636b55":"28043",c116cd5b:"28058","714c86d4":"28110","78f20457":"28158",cc554d5c:"28171","0102a83b":"28240","0f1fe5fe":"28301",dc52b92a:"28489",fd6bdeea:"28686","42962acd":"28702","56c23a02":"28963","563ddf9c":"29033","7d437779":"29279",dd544600:"29342","95e439d6":"29528","46a77053":"29612","83955a40":"29644",b796be74:"29781",d1f3cfe5:"29986",ae70dfbf:"30126","3d4d4fec":"30488","76e36fb0":"30534","7631f8d2":"30676",c7c5779e:"30885","03735ec1":"30956","05f35932":"31174",f8655c95:"31224",fe6d5b4f:"31345",e3ac9b36:"31353",cebd9a13:"31455","888321de":"31714","7f371604":"31731",b30506d0:"31905",dea11b82:"32579","19a17d95":"32580","3728a63b":"32629","12c97058":"32684",e76a67c4:"32696",a72a3fb5:"32720","43ad9ba4":"32741","5c10a708":"32868","00c9b276":"32972","33dc892c":"33110",a2e78534:"33126","35b7ab8a":"33190","6398c398":"33284","040305fb":"33345","57ca4a6e":"33441",c3c63498:"33500","4bec023b":"34132",af54cce0:"34448",b1d3effc:"34547","3348f35c":"34572","5f7173ff":"34600","519fcc13":"34838","6c4352b5":"34999",f2ec4536:"35045","81045c65":"35109",e9fe1d10:"35110",b9639850:"35145",eeeaec82:"35281",c6217ba7:"35300","3bc04d54":"35310","3ba5e8b3":"35532",a0b1cb48:"35560",d2fb5df7:"35679",aba21aa0:"35742","9e0af19a":"36177","06438862":"36294","1fc761b4":"36381","4d73c64d":"36690",e3193c90:"36816","16c09ef7":"37096","8433a9df":"37217",b0066887:"37258",c43bb4ff:"37383","4c09a7b3":"37512","2b91b6ca":"37705","2b56b65e":"37824","7c27dc91":"37829","593d9d00":"37859",a34828f4:"37899",dbc51d47:"38101",c7f91cbe:"38269",ef9b7b43:"38351","86e152f5":"38513","3421ab55":"38622","7de42fc9":"38649",f3ac2f9e:"38652","4fb38478":"38701","859c5ce2":"38855","0325e068":"39018",f182f6a8:"39049","0664e19b":"39296",a9c1003f:"39482","577c79e2":"39504","558d344b":"39610",d336c0e7:"39654","25e1f852":"39673",af7e9586:"39762",bf5514cf:"39921","4c98f287":"40008",e3f369d5:"40044","07cbc62e":"40323","3d81f1cf":"40375",a4232cf8:"40446","3325f616":"40547","62403cba":"40794","3056730d":"40825","0f15664b":"40877","736c10b7":"41262","41d45d82":"41303","524ac532":"41392",bb458927:"41586","5c3b537a":"41876","0e5f6b08":"41891","9d8bd6d4":"42192","4d90a6f8":"42207","017d425f":"42360",e52a8b92:"42557","568a9220":"42632","31611a54":"42657",f0ad3fbb:"42969",fa4f51ab:"43505","6334f102":"43534","7cddad42":"43704","5df8c6e2":"43788",e2bad863:"43804","597eac2b":"43821",fbcfc90d:"44036","4c9a9d60":"44167",f0f46288:"44335",e1a0f423:"44341","79093f63":"44544","68b33cec":"44770","7dd51668":"44956",eba86ea4:"45397","087959bf":"45485",a95869c9:"45797","2be9dc85":"45851","66e08c6c":"45854","64281dc0":"45993","53bec5b2":"46092","4dfec8bf":"46113","44254a19":"46195","6888b60e":"46256","17e0c1bd":"46686",dfae685c:"46737","2c0889df":"46933","0cb92a3e":"46964","9de16efd":"46995","73434c8c":"47094",d0d611e1:"47401","918796f5":"47472",b752a707:"47656","9439c1e0":"47855","26e0f666":"48044",c0975f59:"48161",a4b6c971:"48268","8431c66d":"48386","71225d3d":"48529","3a9e0e6c":"48625","614cb771":"48786","0fca4648":"48975",db80839f:"49091","7e09847e":"49186",ffcd190c:"49331","3b25a2ae":"49640",d8c8efb9:"49712",aece522a:"49763","907b1917":"49801",a2cf3cbb:"49895","74765de4":"49901",b75540e2:"50021","49dd0916":"50062",a3702f61:"50093","4fb29655":"50142",e3375295:"50262",bf09fd32:"50391","50ebac30":"50448",efc28ab7:"50601",ddc3f343:"50635","6120404c":"50789","6e07b85b":"50992",b9f408a3:"51150","4683b708":"51295",ec030ab7:"51308","34c961bc":"51640","780df666":"52242",bbeffb50:"52293","3c2009e3":"52410",b7f0fa5c:"52415","1ab69cbd":"52475",a3edac8b:"52598","8cd0650d":"52651","81ade132":"53104","052febf4":"53113","00ff87cb":"53251","2c0d05be":"53360","8f633f11":"53361",efa0f9ee:"53368",af3eee87:"53483","8db61ca8":"53628","2c3d9ffa":"53769",b7d6a934:"53963",a8ca941b:"54090","2d7c992e":"54098","2b710dbb":"54147",c81b2489:"54160","93d1f2ab":"54239",f04703a3:"54245","3db73d6f":"54474","45365f27":"54561",d5923456:"54767","567e79da":"54895","68f30bb0":"55112","1b10d5ba":"55343","0c843eb8":"55562",be1fd610:"55820","30291f60":"56534",e983a71a:"56540","2c96c8bf":"56770",acefda8b:"56801",ff75e5d1:"56844",da8ee26b:"56970",ded56be8:"56980",c699cab6:"57034","4bd60bfa":"57046",dee456a9:"57150","165dcd0d":"57156","1be2c3df":"57395","1a547ad8":"57502",bbd9acba:"57713","3bfbe7c9":"57720","6e85978c":"58090","147f5874":"58381","5a94716a":"58545","0f16c390":"58997","4e5c7eac":"59262","8d322213":"59376",f2e40bf0:"59448","28a2dd93":"59776","1167f920":"59837","7a5dcced":"59873","4821e150":"59885","508dc4aa":"59887","7e3143ed":"60107",e77fd094:"60267","5d7abaf0":"60369",c8c2e8e3:"60870","067fc716":"61141",db681b30:"61171",a07a3961:"61427","87a280ae":"61483",cfacdcbb:"61507",ac660c9a:"61702","97dc9ff4":"61963","1a4e3797":"62138",c4280da9:"62278","6f37ac18":"62382",f3ad3ad1:"62620",f8717faf:"62663","41998ae8":"62718",faf2e68f:"62719","32270e71":"62888","7fdc52f9":"62937",be290879:"63055","6306afff":"63206","1c7b2ed8":"63635",f183fa16:"64129","3c761b39":"64187",fc515ceb:"64249",e6c71d49:"64270","0ae0f1aa":"64452","09db28ba":"64609","56bf45ed":"64676","5a97a887":"64721","3760d024":"64785",e4a3fe7d:"64790","454071be":"64865",a26cf3cd:"64875","3c440e04":"65048","3d29008d":"65069","47094f16":"65138",fb0a7a3f:"65217",adea32c2:"65410",cd6761a3:"65412","4e5156cc":"65527","59a5ce7f":"65708",cc866a0f:"65966",a7b545c5:"66329","2e4bb914":"66546","7431813e":"66559",c6498d99:"66611","2d481cb5":"66662",bc868195:"66723","65dee3f9":"67066","308702e4":"67076",a7bd4aaa:"67098","48a1f7a0":"67283",c0d9f82a:"67354","7f3541b1":"67378","93bd0903":"67403",ad01e028:"67484",aab929a1:"67831",aacd5a8e:"68035","6425c856":"68206","3df9cb09":"68311","78d85954":"68419","07577e52":"68725","1a2eaade":"68765",c72ac64a:"68960","5f1a63c6":"68990","9f55b2fc":"69033",c7f32161:"69264",ef6abeb1:"69501","975a9c4e":"69568","1956b4f2":"69578",d202f5de:"69601",feac1fba:"69674","67eea6ad":"69798","76f768b2":"69835","503850d7":"69849",a87e3b03:"69924","36748e69":"69955","9daf1020":"70004",b74a56d9:"70019",dfa3dc90:"70129",c990d48e:"71333","8ba603f7":"71382","7f2f21f2":"71731","8ad67c3b":"71861",common:"72076","9dfc101b":"72147",e4268fbc:"72343",aca88518:"72350","19bcb67f":"72423",f4a50841:"72466","6631fea3":"72544","0fa3ec71":"72593","97839d16":"72706",d3cb7fcd:"73297",c39faaf0:"73352","2b4d41d7":"73353","0c48e067":"73454","72ef3185":"73480","2eb731bc":"73536","2517ec2a":"73623","72eeaf12":"73694","09d9ec5b":"73706","221619dc":"73763","3fdc0814":"73876",be104550:"74209","6a9eca1a":"74612",d3e886ab:"74644","3512f6ed":"74645","310c401c":"74836","62266e9d":"74995","944c5f91":"75144",e6597272:"75264","9f8d430a":"75312","481fac59":"75560",c9fb925b:"75679",cef46d81:"75734",af5bd3c8:"75741",d5583dec:"75780","939f801c":"76014",f22b074d:"76172",faa4a519:"76375",b64518a7:"76605","057068ec":"76925",d5ec984b:"76999",db33ae8f:"77027","68090d23":"77153",c4ce7d01:"77202","2ea623f2":"77356","4545d55b":"77567",f300f72f:"77667","85e8edc4":"77839","2ef5093f":"77901",e4db1f51:"78213","721c3877":"78215","80c19293":"78270","4b64ecc5":"78343","10dd1586":"78508",da1ad91e:"78571","9120c1b0":"78633",c441d042:"78873",bf15d2f8:"78901",e2cf5453:"79006",a94703ab:"79048","0413db52":"79260","314515b7":"79289","5017ec07":"79303","16faf8bf":"79315","4e911fe9":"79327","43c43981":"79492",e0c501ee:"79627","230d5fdc":"79976",db8c087e:"80030",b5b00d31:"80190",d35a0895:"80292",c8932bdf:"80320",db4f3bbd:"80598",c141421f:"80957","47e58a89":"81006",f59fd575:"81168","86d16fc7":"81254","78befb93":"81493",c6e3d68f:"81628","9fbf837f":"81690","7781e1f8":"81740",d375ca1d:"81895",c8d33703:"82096",aa56551c:"82206",f32b825a:"82338","400ecdbb":"82439",e14655eb:"82752",ced78c62:"83019","5a0b74d9":"83683","18dc6e4d":"83992",a3a08fde:"84051","29a3e49d":"84064",b4bc1be8:"84170","9a5e6f6b":"84263",df85e4a0:"84592","59ad984c":"84666","7f8f0b02":"84670",af836517:"84842","4907faf4":"84900",dc7c1a8b:"85106",f83cb548:"85168","816072e4":"85416",a9d8f5ad:"85497",d0e298f4:"85835","400d3dc1":"85962","1f4ffe33":"86049","459e8eb3":"86104",b5725d20:"86154","819151f9":"86165","23da8cfc":"86585","2e821519":"86738",e765ceb6:"87136",aa4c8ca2:"87284",fcc3e8af:"87294","619c7267":"87902","6c1a3ce8":"87909","9b0af131":"87968",f641c1d8:"88122","2be18267":"88138","02f8077b":"88267","9767dab6":"88291",f2bedfce:"88294","7faa66fd":"88296",afbb88b8:"88776","045613ad":"88909","3a9fbbe6":"88999","293f8708":"89132","50b9949d":"89151",aaa36fb1:"89178","62d1268c":"89213","7e40e6b3":"89227",bb2b4e8e:"89299","97254d1d":"89459","453ae64a":"89610","39d45b55":"89640",f2545f30:"89792",ce671f56:"89830",f0eeb72e:"89897","168c922b":"90496",ee87c775:"90600",e47a8da3:"90860",b4eb1ea1:"90872","35bd09bf":"90880",e66b1de2:"90972","444a6da6":"91193",f6dd9f9d:"91209",fa88888c:"91227","695c8cb8":"91285","2fc7e024":"91408","71394c29":"91587",ce1a1cdf:"91691","45c87940":"91735","0f1bef30":"92116","0108e1a3":"92244",f2da9399:"92348",c2ea283c:"92394","904b8c49":"92444","144a43f5":"92909","1d50b418":"92990",dac6642a:"92992","1a29c454":"93140",b079b393:"93240",f0b67137:"93247","730da84e":"93263",e54ce709:"93311","6d032186":"93359",f16848a8:"93457","8764ac05":"93479",c37cc938:"93542",ecfe7a7a:"93576","49aa9822":"93591",ddec769b:"93789","1a08aa58":"94156",d51059db:"94173","752a25f3":"94382","5e3fd8b4":"94396","351b3050":"94508",d1a61039:"94568",baacc2a1:"94573",def84d04:"94728","99abe279":"95057",bd565561:"95165","8ee2c8d6":"95180",af95bc92:"95200",a9898daa:"95234","9bacfd07":"95523",e27c2ac1:"95627",eed50738:"95638",de09cc26:"95893","67da1391":"96585","81bb6a5c":"96601","46d914cb":"96888",f531aa2f:"97078","58f0e94f":"97202","9c504d23":"97221","00f42144":"97382",e4400415:"97498","318a76ad":"97742",eaea3b35:"97984","11f65c63":"98096","50cf4e76":"98265",b2eaded0:"98284","96d9d578":"98327",aceb0cb2:"98417","75c9b719":"98780",e87b52ac:"98862",d47919d3:"99082","479e265c":"99498","85dc2a2b":"99522","8c7ba981":"99648","439d880a":"99758"}[e]||e,r.p+r.u(e)},(()=>{var e={45354:0,71869:0};r.f.j=(c,a)=>{var b=r.o(e,c)?e[c]:void 0;if(0!==b)if(b)a.push(b[2]);else if(/^(45354|71869)$/.test(c))e[c]=0;else{var d=new Promise((a,d)=>b=e[c]=[a,d]);a.push(b[2]=d);var f=r.p+r.u(c),t=new Error;r.l(f,a=>{if(r.o(e,c)&&(0!==(b=e[c])&&(e[c]=void 0),b)){var d=a&&("load"===a.type?"missing":a.type),f=a&&a.target&&a.target.src;t.message="Loading chunk "+c+" failed.\n("+d+": "+f+")",t.name="ChunkLoadError",t.type=d,t.request=f,b[1](t)}},"chunk-"+c,c)}},r.O.j=c=>0===e[c];var c=(c,a)=>{var b,d,[f,t,o]=a,n=0;if(f.some(c=>0!==e[c])){for(b in t)r.o(t,b)&&(r.m[b]=t[b]);if(o)var i=o(r)}for(c&&c(a);n{"use strict";var e,c,a,b,d,f={},t={};function r(e){var c=t[e];if(void 0!==c)return c.exports;var a=t[e]={id:e,loaded:!1,exports:{}};return f[e].call(a.exports,a,a.exports,r),a.loaded=!0,a.exports}r.m=f,r.c=t,e=[],r.O=(c,a,b,d)=>{if(!a){var f=1/0;for(i=0;i=d)&&Object.keys(r.O).every(e=>r.O[e](a[o]))?a.splice(o--,1):(t=!1,d0&&e[i-1][2]>d;i--)e[i]=e[i-1];e[i]=[a,b,d]},r.n=e=>{var c=e&&e.__esModule?()=>e.default:()=>e;return r.d(c,{a:c}),c},a=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,b){if(1&b&&(e=this(e)),8&b)return e;if("object"==typeof e&&e){if(4&b&&e.__esModule)return e;if(16&b&&"function"==typeof e.then)return e}var d=Object.create(null);r.r(d);var f={};c=c||[null,a({}),a([]),a(a)];for(var t=2&b&&e;"object"==typeof t&&!~c.indexOf(t);t=a(t))Object.getOwnPropertyNames(t).forEach(c=>f[c]=()=>e[c]);return f.default=()=>e,r.d(d,f),d},r.d=(e,c)=>{for(var a in c)r.o(c,a)&&!r.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:c[a]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((c,a)=>(r.f[a](e,c),c),[])),r.u=e=>"assets/js/"+({15:"d803fa53",298:"e4ebea9b",348:"54835a34",360:"e4dcfb14",681:"ffa0f8b1",889:"08b309e9",1072:"db819a37",1162:"f7e6b9d6",1171:"b685e31b",1304:"c42ebc22",1841:"9c41e875",1966:"b1582da4",2064:"7e7969d8",2272:"ca5faf5d",2318:"8f587777",2536:"2ff50c47",2975:"6c97c549",3138:"d9370077",3152:"c0de4bb7",3276:"38227151",3409:"9bd8678f",3525:"c29fce3e",3578:"59b4092b",3658:"0cf8fbd8",3775:"75a537ca",3804:"1ee9a475",3976:"10b71b62",4048:"6a9646c2",4085:"cb17b4e0",4120:"8adc8900",4243:"816dd483",4261:"e0e01b61",4289:"985618c6",4593:"58dbbaf6",4691:"9727a3a6",4692:"17fe7e04",4746:"a3a327ec",4810:"6c9a6dfb",4919:"ce43de4b",5009:"f55f73d6",5120:"0ab43b76",5200:"ff7f32ba",5270:"99931d31",5801:"0f72e758",5834:"4916c69a",6029:"6e1d72b3",6459:"290c78e6",6538:"719cba95",6547:"bab3e2be",6621:"de7300f3",6637:"2b2e9d64",6809:"8f7e7f58",6837:"683d3a1b",7022:"84d1f727",7243:"5d9d4350",7323:"92c23da4",7521:"d9570b85",7677:"7030d598",7760:"9a4cbb64",7859:"e91b64eb",7863:"b49f632d",7879:"9b2487b6",7918:"9d47bdcb",8336:"e7fd9095",8581:"0d551289",8607:"681e5335",8750:"8a484c94",8775:"9cc816e3",8800:"59755345",8839:"5853a7b9",8895:"b13f6e6e",9037:"62d465bc",9145:"b96ee1bf",9160:"57c436d9",9515:"9ee95d32",9574:"0e5d0999",9625:"5b73b0a8",9647:"5e95c892",10078:"b768a3a5",10645:"692c1124",10750:"33b5ee95",10801:"3d1d37ee",10883:"1dfb8d43",11185:"86f51cb1",11502:"c38e511c",11523:"131fd31a",11567:"22dd74f7",11574:"60ebe5d0",11597:"b0603568",11703:"ff8bad6c",11712:"889b5aff",11783:"6e911c05",12044:"ee278e4e",12102:"755d162a",12460:"954b19af",12464:"00af0ed3",12473:"ed13863f",12513:"85d722c9",12567:"2141bac8",12635:"cb95a86d",12788:"820172e8",12895:"083628f7",13035:"87b7bbd6",13038:"6df123cd",13147:"c83c70df",13164:"67f2dc6c",13341:"8e51f10f",13398:"2613df18",13412:"3782bb5d",13564:"95983061",13618:"c4ac99db",13638:"418a5217",13642:"4bf693fa",13656:"db31f7b6",13663:"934b1c33",13696:"69a0b706",13774:"510a19e7",13988:"d29c4a40",14102:"ef8630dc",14190:"e43bb559",14351:"13786dcf",14356:"7b864b08",14387:"60cde673",14435:"4e55999f",14574:"313670b1",14614:"e55b8e98",14876:"44691977",15458:"a0019f95",15512:"a64546e2",15648:"68ce6e99",15660:"1b208f60",15679:"a304954f",16035:"568ebfec",16224:"ef9aa223",16426:"9ebc9441",16497:"72f6697c",16513:"f13693f0",16619:"976be08c",16629:"a49b697b",16839:"80866714",16913:"2aae4c48",16916:"b1c2f621",17080:"c11ffc61",17229:"f046f3ac",17756:"323a2e94",17800:"1cf73564",17846:"f37945da",17938:"02b166f2",17976:"7191b20e",18060:"eb22fa0a",18094:"5f3efb00",18157:"5b43ec5c",18212:"04d40a0f",18401:"17896441",18436:"d80374ab",18553:"ecd5d0b1",18565:"88482ee6",18593:"56350599",18605:"3795ce9a",18611:"0c23d011",18725:"1605cba6",18732:"8d03d619",18822:"555ae514",18968:"5dbb78ab",19280:"06d4c56c",19363:"f3312674",19421:"9369b6bc",19556:"c2b2f507",19638:"db42831a",19724:"7a5c3569",19788:"e53e6cac",20038:"a99a45c9",20059:"349eb80a",20123:"67f5d62b",20253:"bb45d4f9",20351:"b9acb8d9",20357:"886ee107",20449:"0591c3e4",20596:"c2e0ed62",20717:"e4dee050",20879:"8bee5443",20929:"c62d7ccd",20953:"bd7e5f4a",21193:"8b191302",21359:"93f4a427",21446:"c78349fc",21490:"0f761898",21513:"2ff2412e",21590:"b916da46",21641:"f94c04df",21789:"e3d2cc9a",21826:"c3ae1367",21928:"4ed54818",22214:"1c1c22e6",22327:"46190d9c",22440:"69a67e92",22457:"46abd5bb",22469:"cd086441",22565:"622fd833",22614:"71a62fc9",22992:"9d7c1d70",23189:"83f43d77",23299:"f39513cb",23331:"7ccc086b",23387:"3d67876e",23468:"c76bd485",23689:"7a7f449b",23703:"9534baec",23723:"d29727e0",23822:"e1925c9e",23890:"f57aa203",23930:"884246de",24230:"cf0944b9",24314:"f6a246db",24369:"6b6b826b",24384:"622bdc6f",24477:"3420c5de",24672:"59a1fafb",24889:"e704e05b",24898:"627938a3",24930:"59eb0fd8",25412:"a6d50436",25510:"a632f6f5",25543:"e3038eb8",25657:"fc9e0258",25663:"b1379b2b",25707:"8593bab8",25757:"ad42ff54",25838:"bbb8ec1d",25903:"69d616f2",25943:"4c50bc3d",26083:"b143525f",26108:"2fed9fb3",26237:"8b896872",26311:"cce672fb",26371:"083445a7",26399:"13f35c9b",26655:"bf9522df",26691:"3e9e9e4d",26767:"23499d25",26873:"b06c1bff",26895:"6620f372",27118:"7996108c",27151:"b2f95c90",27176:"ae846847",27554:"66c0ced4",27637:"72881381",27807:"1a8a0a64",27826:"ecd87361",27964:"ff35961a",28043:"32636b55",28058:"c116cd5b",28110:"714c86d4",28158:"78f20457",28171:"cc554d5c",28240:"0102a83b",28301:"0f1fe5fe",28489:"dc52b92a",28686:"fd6bdeea",28702:"42962acd",28963:"56c23a02",29033:"563ddf9c",29279:"7d437779",29342:"dd544600",29528:"95e439d6",29612:"46a77053",29644:"83955a40",29781:"b796be74",29986:"d1f3cfe5",30126:"ae70dfbf",30488:"3d4d4fec",30534:"76e36fb0",30676:"7631f8d2",30684:"44121474",30885:"c7c5779e",30956:"03735ec1",31111:"83231553",31174:"05f35932",31224:"f8655c95",31345:"fe6d5b4f",31353:"e3ac9b36",31455:"cebd9a13",31714:"888321de",31731:"7f371604",31905:"b30506d0",32579:"dea11b82",32580:"19a17d95",32629:"3728a63b",32684:"12c97058",32696:"e76a67c4",32720:"a72a3fb5",32741:"43ad9ba4",32868:"5c10a708",32972:"00c9b276",33110:"33dc892c",33126:"a2e78534",33190:"35b7ab8a",33284:"6398c398",33345:"040305fb",33441:"57ca4a6e",33500:"c3c63498",34132:"4bec023b",34448:"af54cce0",34547:"b1d3effc",34572:"3348f35c",34600:"5f7173ff",34838:"519fcc13",34999:"6c4352b5",35045:"f2ec4536",35109:"81045c65",35110:"e9fe1d10",35145:"b9639850",35281:"eeeaec82",35300:"c6217ba7",35310:"3bc04d54",35532:"3ba5e8b3",35560:"a0b1cb48",35679:"d2fb5df7",35742:"aba21aa0",36177:"9e0af19a",36294:"06438862",36381:"1fc761b4",36690:"4d73c64d",36816:"e3193c90",37096:"16c09ef7",37217:"8433a9df",37258:"b0066887",37383:"c43bb4ff",37512:"4c09a7b3",37705:"2b91b6ca",37824:"2b56b65e",37829:"7c27dc91",37859:"593d9d00",37899:"a34828f4",38101:"dbc51d47",38269:"c7f91cbe",38351:"ef9b7b43",38513:"86e152f5",38622:"3421ab55",38649:"7de42fc9",38652:"f3ac2f9e",38701:"4fb38478",38855:"859c5ce2",39018:"0325e068",39049:"f182f6a8",39296:"0664e19b",39482:"a9c1003f",39504:"577c79e2",39610:"558d344b",39654:"d336c0e7",39673:"25e1f852",39762:"af7e9586",39921:"bf5514cf",40008:"4c98f287",40044:"e3f369d5",40323:"07cbc62e",40375:"3d81f1cf",40446:"a4232cf8",40547:"3325f616",40794:"62403cba",40825:"3056730d",40877:"0f15664b",41262:"736c10b7",41303:"41d45d82",41392:"524ac532",41586:"bb458927",41876:"5c3b537a",41891:"0e5f6b08",42192:"9d8bd6d4",42207:"4d90a6f8",42360:"017d425f",42557:"e52a8b92",42632:"568a9220",42657:"31611a54",42969:"f0ad3fbb",43505:"fa4f51ab",43534:"6334f102",43704:"7cddad42",43788:"5df8c6e2",43804:"e2bad863",43821:"597eac2b",44036:"fbcfc90d",44167:"4c9a9d60",44335:"f0f46288",44341:"e1a0f423",44544:"79093f63",44770:"68b33cec",44956:"7dd51668",45397:"eba86ea4",45485:"087959bf",45797:"a95869c9",45851:"2be9dc85",45854:"66e08c6c",45993:"64281dc0",46092:"53bec5b2",46113:"4dfec8bf",46195:"44254a19",46256:"6888b60e",46686:"17e0c1bd",46737:"dfae685c",46933:"2c0889df",46964:"0cb92a3e",46995:"9de16efd",47094:"73434c8c",47401:"d0d611e1",47472:"918796f5",47656:"b752a707",47855:"9439c1e0",48044:"26e0f666",48161:"c0975f59",48268:"a4b6c971",48386:"8431c66d",48529:"71225d3d",48625:"3a9e0e6c",48786:"614cb771",48975:"0fca4648",49091:"db80839f",49186:"7e09847e",49331:"ffcd190c",49640:"3b25a2ae",49712:"d8c8efb9",49763:"aece522a",49801:"907b1917",49895:"a2cf3cbb",49901:"74765de4",50021:"b75540e2",50062:"49dd0916",50093:"a3702f61",50142:"4fb29655",50262:"e3375295",50391:"bf09fd32",50448:"50ebac30",50601:"efc28ab7",50635:"ddc3f343",50789:"6120404c",50992:"6e07b85b",51150:"b9f408a3",51295:"4683b708",51308:"ec030ab7",51640:"34c961bc",52242:"780df666",52293:"bbeffb50",52410:"3c2009e3",52415:"b7f0fa5c",52475:"1ab69cbd",52598:"a3edac8b",52651:"8cd0650d",53104:"81ade132",53113:"052febf4",53251:"00ff87cb",53360:"2c0d05be",53361:"8f633f11",53368:"efa0f9ee",53483:"af3eee87",53628:"8db61ca8",53769:"2c3d9ffa",53963:"b7d6a934",54090:"a8ca941b",54098:"2d7c992e",54147:"2b710dbb",54160:"c81b2489",54239:"93d1f2ab",54245:"f04703a3",54474:"3db73d6f",54561:"45365f27",54767:"d5923456",54895:"567e79da",55112:"68f30bb0",55343:"1b10d5ba",55562:"0c843eb8",55820:"be1fd610",56534:"30291f60",56540:"e983a71a",56770:"2c96c8bf",56801:"acefda8b",56844:"ff75e5d1",56970:"da8ee26b",56980:"ded56be8",57034:"c699cab6",57046:"4bd60bfa",57150:"dee456a9",57156:"165dcd0d",57395:"1be2c3df",57502:"1a547ad8",57713:"bbd9acba",57720:"3bfbe7c9",58090:"6e85978c",58381:"147f5874",58545:"5a94716a",58997:"0f16c390",59262:"4e5c7eac",59289:"32141993",59376:"8d322213",59448:"f2e40bf0",59776:"28a2dd93",59837:"1167f920",59873:"7a5dcced",59885:"4821e150",59887:"508dc4aa",59931:"35953519",60107:"7e3143ed",60267:"e77fd094",60369:"5d7abaf0",60870:"c8c2e8e3",61141:"067fc716",61171:"db681b30",61334:"68845080",61427:"a07a3961",61483:"87a280ae",61507:"cfacdcbb",61702:"ac660c9a",61963:"97dc9ff4",62138:"1a4e3797",62278:"c4280da9",62382:"6f37ac18",62620:"f3ad3ad1",62663:"f8717faf",62718:"41998ae8",62719:"faf2e68f",62888:"32270e71",62937:"7fdc52f9",63055:"be290879",63206:"6306afff",63635:"1c7b2ed8",64129:"f183fa16",64187:"3c761b39",64249:"fc515ceb",64270:"e6c71d49",64452:"0ae0f1aa",64609:"09db28ba",64676:"56bf45ed",64721:"5a97a887",64785:"3760d024",64790:"e4a3fe7d",64865:"454071be",64875:"a26cf3cd",65048:"3c440e04",65069:"3d29008d",65138:"47094f16",65217:"fb0a7a3f",65410:"adea32c2",65412:"cd6761a3",65527:"4e5156cc",65708:"59a5ce7f",65739:"69079906",65966:"cc866a0f",66329:"a7b545c5",66546:"2e4bb914",66559:"7431813e",66611:"c6498d99",66662:"2d481cb5",66723:"bc868195",67066:"65dee3f9",67076:"308702e4",67098:"a7bd4aaa",67283:"48a1f7a0",67354:"c0d9f82a",67378:"7f3541b1",67403:"93bd0903",67484:"ad01e028",67831:"aab929a1",68035:"aacd5a8e",68206:"6425c856",68311:"3df9cb09",68392:"20177945",68419:"78d85954",68725:"07577e52",68765:"1a2eaade",68960:"c72ac64a",68990:"5f1a63c6",69033:"9f55b2fc",69264:"c7f32161",69501:"ef6abeb1",69568:"975a9c4e",69578:"1956b4f2",69601:"d202f5de",69674:"feac1fba",69798:"67eea6ad",69835:"76f768b2",69849:"503850d7",69924:"a87e3b03",69955:"36748e69",70004:"9daf1020",70019:"b74a56d9",70129:"dfa3dc90",71333:"c990d48e",71382:"8ba603f7",71731:"7f2f21f2",71861:"8ad67c3b",72076:"common",72147:"9dfc101b",72343:"e4268fbc",72350:"aca88518",72423:"19bcb67f",72466:"f4a50841",72544:"6631fea3",72593:"0fa3ec71",72706:"97839d16",73297:"d3cb7fcd",73352:"c39faaf0",73353:"2b4d41d7",73454:"0c48e067",73480:"72ef3185",73536:"2eb731bc",73623:"2517ec2a",73694:"72eeaf12",73706:"09d9ec5b",73763:"221619dc",73876:"3fdc0814",74209:"be104550",74612:"6a9eca1a",74644:"d3e886ab",74645:"3512f6ed",74836:"310c401c",74995:"62266e9d",75144:"944c5f91",75264:"e6597272",75312:"9f8d430a",75333:"70909872",75560:"481fac59",75644:"47733641",75679:"c9fb925b",75734:"cef46d81",75741:"af5bd3c8",75780:"d5583dec",76014:"939f801c",76172:"f22b074d",76375:"faa4a519",76605:"b64518a7",76925:"057068ec",76999:"d5ec984b",77027:"db33ae8f",77153:"68090d23",77202:"c4ce7d01",77356:"2ea623f2",77567:"4545d55b",77667:"f300f72f",77839:"85e8edc4",77901:"2ef5093f",78169:"12151514",78213:"e4db1f51",78215:"721c3877",78270:"80c19293",78343:"4b64ecc5",78508:"10dd1586",78571:"da1ad91e",78633:"9120c1b0",78873:"c441d042",78901:"bf15d2f8",79006:"e2cf5453",79048:"a94703ab",79260:"0413db52",79289:"314515b7",79303:"5017ec07",79315:"16faf8bf",79327:"4e911fe9",79492:"43c43981",79627:"e0c501ee",79976:"230d5fdc",80030:"db8c087e",80190:"b5b00d31",80292:"d35a0895",80320:"c8932bdf",80598:"db4f3bbd",80957:"c141421f",81006:"47e58a89",81168:"f59fd575",81254:"86d16fc7",81493:"78befb93",81628:"c6e3d68f",81690:"9fbf837f",81740:"7781e1f8",81895:"d375ca1d",82096:"c8d33703",82206:"aa56551c",82338:"f32b825a",82439:"400ecdbb",82752:"e14655eb",83019:"ced78c62",83683:"5a0b74d9",83992:"18dc6e4d",84051:"a3a08fde",84064:"29a3e49d",84170:"b4bc1be8",84263:"9a5e6f6b",84592:"df85e4a0",84666:"59ad984c",84670:"7f8f0b02",84842:"af836517",84900:"4907faf4",85106:"dc7c1a8b",85168:"f83cb548",85416:"816072e4",85497:"a9d8f5ad",85536:"52238869",85835:"d0e298f4",85962:"400d3dc1",86049:"1f4ffe33",86104:"459e8eb3",86154:"b5725d20",86165:"819151f9",86585:"23da8cfc",86738:"2e821519",87136:"e765ceb6",87284:"aa4c8ca2",87294:"fcc3e8af",87902:"619c7267",87909:"6c1a3ce8",87968:"9b0af131",88122:"f641c1d8",88138:"2be18267",88267:"02f8077b",88291:"9767dab6",88294:"f2bedfce",88296:"7faa66fd",88776:"afbb88b8",88909:"045613ad",88999:"3a9fbbe6",89132:"293f8708",89151:"50b9949d",89178:"aaa36fb1",89213:"62d1268c",89227:"7e40e6b3",89299:"bb2b4e8e",89459:"97254d1d",89610:"453ae64a",89640:"39d45b55",89792:"f2545f30",89830:"ce671f56",89897:"f0eeb72e",90496:"168c922b",90600:"ee87c775",90860:"e47a8da3",90872:"b4eb1ea1",90880:"35bd09bf",90951:"23480489",90972:"e66b1de2",91193:"444a6da6",91209:"f6dd9f9d",91227:"fa88888c",91285:"695c8cb8",91408:"2fc7e024",91587:"71394c29",91691:"ce1a1cdf",91735:"45c87940",92116:"0f1bef30",92244:"0108e1a3",92348:"f2da9399",92394:"c2ea283c",92444:"904b8c49",92909:"144a43f5",92990:"1d50b418",92992:"dac6642a",93140:"1a29c454",93240:"b079b393",93247:"f0b67137",93263:"730da84e",93311:"e54ce709",93359:"6d032186",93457:"f16848a8",93479:"8764ac05",93542:"c37cc938",93576:"ecfe7a7a",93591:"49aa9822",93789:"ddec769b",94156:"1a08aa58",94173:"d51059db",94382:"752a25f3",94396:"5e3fd8b4",94508:"351b3050",94568:"d1a61039",94573:"baacc2a1",94728:"def84d04",94907:"86116998",95057:"99abe279",95165:"bd565561",95180:"8ee2c8d6",95200:"af95bc92",95234:"a9898daa",95523:"9bacfd07",95627:"e27c2ac1",95638:"eed50738",95893:"de09cc26",96585:"67da1391",96601:"81bb6a5c",96888:"46d914cb",97078:"f531aa2f",97202:"58f0e94f",97221:"9c504d23",97382:"00f42144",97498:"e4400415",97742:"318a76ad",97984:"eaea3b35",98096:"11f65c63",98265:"50cf4e76",98284:"b2eaded0",98327:"96d9d578",98417:"aceb0cb2",98531:"71726720",98780:"75c9b719",98862:"e87b52ac",99082:"d47919d3",99498:"479e265c",99522:"85dc2a2b",99648:"8c7ba981",99758:"439d880a"}[e]||e)+"."+{15:"4bc36aab",298:"44dff97f",348:"b78d6bb1",360:"723ac405",681:"26c49a71",889:"63d1b6f5",1072:"3e3b6b07",1162:"c8c3ce21",1171:"14057f52",1304:"43e7fbc9",1841:"71033951",1966:"154afdce",2064:"c4c9ceca",2272:"7908586d",2318:"60c438f9",2536:"e5508fae",2975:"31bf811d",3138:"77f6d4a2",3152:"62300a03",3276:"a23e447d",3409:"a0c5c02b",3525:"cc814c33",3578:"f324a27e",3658:"6fd573af",3775:"e1228737",3804:"90a6f752",3976:"ca844059",4048:"e81f215f",4085:"8810a337",4120:"6bd30035",4243:"7ad43182",4261:"33c02edb",4289:"bea57783",4593:"93b64130",4691:"24c43d4d",4692:"838b8dff",4746:"f234c9c3",4810:"17d80b40",4919:"85c50ac1",5009:"cd4e928a",5120:"daa84702",5200:"e80ae01b",5270:"cc59bede",5480:"c523c75e",5801:"0c134a12",5834:"4194fa25",6029:"27d54e04",6459:"2463c0f5",6538:"3d80e9fb",6547:"b5e72c89",6621:"d9efd12b",6637:"0331d10c",6809:"c64ab4cc",6837:"d7a57322",7022:"c43e78e9",7243:"af9f0e46",7323:"c99f5340",7521:"fbea3816",7677:"52b60ef5",7760:"dd07a16a",7859:"2a552852",7863:"83840213",7879:"c0eef33b",7918:"9aebd826",8336:"5a908ba3",8581:"99c4ae64",8607:"35fbd426",8750:"c79946fb",8775:"c2617459",8800:"68b3e82c",8839:"aac6ecd4",8895:"5a53e688",9037:"15c8e66b",9145:"b46b9340",9160:"56cc37af",9515:"684f16e5",9574:"29841f45",9625:"82f7363f",9647:"c23c9301",10078:"bcb6c741",10645:"793ac2a8",10750:"a2a00d8f",10801:"b75af2f7",10883:"3527f197",11083:"8f40709a",11185:"26866c1b",11502:"ed20ebd4",11523:"e95cd60a",11567:"be0bbd14",11574:"99a63c75",11597:"187ed0a6",11703:"ea70de26",11712:"4b67842a",11783:"3d8d671d",12044:"32eea2ad",12102:"ea452a79",12460:"9826e2f9",12464:"6bc2ce27",12473:"8aa8bc30",12513:"0c7f35d2",12567:"081f88db",12635:"44a518bc",12788:"e6ff4e9d",12895:"6e75fbfc",13035:"dca1fdb8",13038:"4810d98b",13147:"03e914b0",13164:"5dea8808",13341:"e9e47c85",13398:"567e0aaf",13412:"6e53959c",13564:"468bc112",13618:"f79e997c",13638:"613bd52e",13642:"1e08c037",13656:"4c11e5d1",13663:"8c20653f",13696:"5310975c",13774:"711039f7",13988:"fd9e3a71",14102:"4f231102",14190:"f90e7fd6",14351:"851b7342",14356:"ae303325",14387:"53247ec5",14435:"f665f0de",14574:"755f1050",14614:"ee299bb8",14876:"c6ed949f",15458:"18726da8",15512:"93a18dfd",15648:"34fa4eb8",15660:"3ed2fa64",15679:"3cfba2b3",16035:"29386876",16224:"e11e86d6",16426:"c1bf54de",16497:"6b37cf02",16513:"87ed9775",16619:"76f5a5ba",16629:"7ec2545f",16839:"b901f5dd",16913:"642b47cd",16916:"5e1f9bf3",17080:"cd0d48bd",17229:"81f761a3",17756:"85ee986f",17800:"364d9dd7",17846:"a680658a",17938:"21b489bd",17976:"509d8a7a",18060:"47be55da",18094:"40eec956",18157:"12e1fbfa",18212:"9211609e",18401:"1a60d6d0",18436:"e94cad69",18553:"7bd33131",18565:"eeed52ba",18593:"ba2a9c76",18605:"c9ea0147",18611:"c1a27e4a",18725:"67805df5",18732:"e07b3b2c",18822:"8bb0f2a6",18968:"76c259f5",19280:"42bafd08",19363:"e03467b9",19421:"06274e19",19556:"fb32f335",19638:"90a6eab4",19724:"e6010b67",19788:"79160c86",20038:"e6c18b78",20059:"54b78d53",20123:"a5caf2c1",20253:"635a9d5f",20351:"dd491c08",20357:"0b8529d7",20449:"62c51be3",20596:"b128b2f8",20717:"7cad3e05",20879:"df1bfb2d",20929:"68f9db6c",20953:"5359302a",21193:"373806b9",21359:"6d87bab4",21446:"0f6f61bb",21490:"1f71748e",21513:"93bfe49f",21590:"28f2d347",21641:"8c270c2b",21789:"4a3325bb",21826:"183033b5",21928:"3862cb3c",22214:"eb0cfed2",22327:"e061555f",22440:"599b499b",22457:"8cfbb28b",22469:"237e9abd",22565:"0c1ed44d",22614:"6f2f3de9",22992:"d93bfdf8",23189:"50c0adc0",23299:"3b423e1e",23331:"35eee4e7",23387:"f37d5c60",23468:"5e040828",23689:"a6922e67",23703:"3bb8a42a",23723:"7ed31ec0",23822:"ae01165d",23890:"be34832d",23930:"36399a7f",24230:"f045eb15",24314:"cec28147",24369:"b846f64f",24384:"136a578d",24477:"4edb1d30",24672:"f0749b03",24889:"cd6be391",24898:"2b3df3f8",24930:"1da5194a",25412:"9621daa9",25510:"b455374e",25543:"e5eccd14",25657:"ff645da6",25663:"8e60b0a0",25707:"172bbca0",25757:"c7ddfc6c",25838:"fdf1baca",25903:"d7592810",25943:"bc7bd403",26083:"64414fde",26108:"5ce3b274",26237:"77b6ad54",26311:"e7438899",26371:"2d0ebd26",26399:"d87731f7",26655:"b6b0873b",26691:"ca08fd03",26767:"7c51c60b",26873:"f6b845b1",26895:"87003dc2",27118:"8b0b7761",27151:"7f43210e",27176:"84cbc243",27554:"4cd7c1c8",27637:"e27326d0",27807:"4af5241c",27826:"d8251920",27964:"50deb695",28043:"380abc57",28058:"7dedae97",28110:"642bb860",28158:"23429c19",28171:"c838cc62",28240:"60ea0de3",28301:"545153a1",28489:"cbdd0edc",28686:"51a940c5",28702:"cd8164b9",28963:"1d975761",29033:"b4a8c723",29279:"af9124b5",29342:"206784d1",29528:"0791ec77",29612:"649e8174",29644:"bf0a3a69",29781:"598b770c",29986:"7751ed96",30126:"5cd771fb",30488:"79680e9c",30534:"6c79d801",30676:"e5c26923",30684:"b6825efa",30885:"1ddffb62",30956:"6164e152",31111:"a01319aa",31174:"1ec3d732",31224:"f376e7dc",31345:"97f1f97c",31353:"098748f9",31455:"8e2a334d",31714:"7801b2eb",31731:"2137d07c",31905:"8214e71b",32579:"d68133e8",32580:"8e68c8db",32629:"19d5cc34",32684:"0768db6d",32696:"c5dec334",32720:"bce0ade9",32741:"d8bc77ae",32868:"790995bb",32972:"5abaacc2",33110:"58e71da4",33126:"654d7b9f",33190:"b660faa0",33284:"ffa40397",33345:"7dd0cb40",33441:"a2b4073c",33500:"8ba5f851",34132:"c1be6a93",34448:"f6776f2b",34547:"666ee7be",34572:"469e5ac8",34600:"f100fce8",34838:"b76970ce",34999:"4af78575",35045:"7ee97db8",35109:"a9505d79",35110:"527f43e3",35145:"24ae9a90",35281:"51d855ed",35300:"b0f3dba9",35310:"3eba2602",35532:"9fa30f84",35560:"a9c2ef2a",35679:"219a1177",35742:"923e0bb4",36177:"814073c0",36294:"07d540ef",36381:"7de8a367",36690:"1597b896",36816:"f46b47c5",37096:"f97f828f",37217:"7a4ef066",37258:"2d9b47f6",37383:"cc6b7ebe",37512:"41bb278f",37705:"a96e7b4b",37824:"1111924d",37829:"c4090496",37859:"c29ee813",37899:"2d4e5992",38101:"af9e5894",38269:"f0521135",38351:"a0a9023e",38513:"c6f1f736",38622:"1eb17e77",38649:"e576cd1e",38652:"e57eed17",38701:"0d8ce803",38855:"f0e6f01f",39018:"93abc84e",39049:"32707eda",39296:"8f78413b",39482:"4fde3187",39504:"77db0bfe",39610:"fa234508",39654:"4db4c3fc",39673:"cbcb5bb8",39762:"f67e8b39",39921:"37d56ff8",40008:"82885f02",40044:"29aed03a",40323:"6d4b7c78",40375:"293bb51b",40446:"463f26bc",40547:"b0c224b7",40794:"4556ba55",40825:"e6301251",40877:"64317589",41262:"45beafb1",41303:"742edf8b",41392:"71a38241",41586:"7f7a2662",41876:"826ab507",41891:"cf8135df",42192:"f70996a5",42207:"25bba291",42360:"75ddf9be",42557:"4a0e5a95",42632:"fda59463",42657:"b7fd1bd8",42969:"a50aac96",43505:"d69c13c4",43534:"8b79edc7",43704:"3bcd3352",43788:"ccc0ed14",43804:"6b0a7f85",43821:"d2c6b415",44036:"98874fa9",44167:"058f139c",44335:"342b7094",44341:"cba3956c",44544:"f948e9c1",44770:"22020439",44956:"7707ccd2",45397:"517e2896",45485:"2296c95c",45797:"5ab33131",45851:"dc135ae3",45854:"b489e5a5",45993:"10933b35",46092:"223d9cea",46113:"270df022",46195:"107d32b5",46256:"8464ed70",46686:"659a7f77",46737:"9a73e848",46933:"79ed0979",46964:"d5e99c7c",46995:"a2e86fa9",47094:"40295101",47401:"1ef6fc9a",47472:"065a6c1f",47656:"d1c2b2a5",47855:"a1305ef9",48044:"e4ae06d6",48161:"82dc08e5",48268:"7172fecd",48287:"992866e0",48386:"d11e5d2c",48529:"0fdaa885",48625:"3d05a703",48786:"210c0593",48975:"10b8e85d",49091:"8d9de280",49186:"db6e1a33",49331:"9934dfbf",49640:"7f344ff6",49712:"f906fd11",49763:"6d3ea318",49801:"17625821",49895:"be49135a",49901:"7617084c",50021:"7964ffa9",50062:"85e8f103",50093:"929db93e",50142:"ef6d7e19",50262:"7e5274fd",50391:"37fed417",50448:"fbc8b626",50601:"7b3be885",50635:"565ee78e",50789:"95ab4550",50992:"7aaa7657",51150:"aa8b20ca",51295:"4b3d8af9",51308:"b7ac26d5",51640:"9a59b452",51925:"26a11119",52242:"56b336d0",52293:"b9e3a678",52410:"6837a5d5",52415:"e0c6366d",52475:"d6ac21c2",52598:"524d95c7",52651:"4cadb00e",53104:"76dd176c",53113:"872fb67c",53251:"f110894a",53360:"4b4f5569",53361:"d1d9c866",53368:"15914d0e",53483:"132ffd8d",53628:"999878bb",53769:"182f1e37",53963:"686f9f59",54090:"bf6c7192",54098:"81b131d7",54147:"228470c6",54160:"259f623b",54239:"76fc4690",54245:"6d6a8ecc",54474:"901b9787",54561:"f1549f5f",54767:"063119ff",54895:"f988ffe9",55112:"29fbaa20",55343:"b415eb2a",55562:"d7365956",55820:"86abf9a0",56534:"45ac6ade",56540:"b487100b",56770:"a21df832",56801:"822541e4",56844:"e9bd8c0e",56970:"d7ce839b",56980:"60ea0ee7",56990:"60356de0",57034:"923d8637",57046:"99320596",57150:"61f0c871",57156:"a199f002",57395:"50b3d0b9",57502:"ab23db6a",57713:"a8afb594",57720:"f8beb583",58090:"0db32e61",58381:"d07d4950",58545:"6889ecec",58913:"504dfdef",58997:"4fd0d890",59262:"5a08e83e",59289:"bced12b1",59376:"52018bdd",59448:"66613dec",59776:"bc14337d",59837:"5db96621",59873:"6330a70f",59885:"8eb69889",59887:"ad710240",59931:"a7d9606d",60107:"190fe3cf",60267:"b4042c41",60369:"2dc38707",60870:"70338ba4",61141:"bb908bf6",61171:"b0aabb13",61334:"064c4a9a",61427:"bb3a6ec8",61483:"30560642",61507:"1a15d401",61702:"d515e0bf",61963:"2526868a",62138:"8c1f8d7b",62278:"9c561aab",62382:"8d4bff8d",62620:"320e764b",62663:"d1fe9554",62718:"c7386de8",62719:"7d85ae0a",62888:"2b886d1d",62937:"ce46f85b",63055:"bfdd22b2",63206:"f493eac3",63324:"11382e69",63635:"4237cd41",63760:"d715fe9b",64129:"0276d5d2",64187:"0b430470",64249:"752fb006",64270:"9d49c0b4",64452:"712d1f3d",64609:"fc42becc",64676:"bdef8e95",64721:"99e11d57",64785:"3e71e5f0",64790:"8836c920",64865:"ea8a1ec7",64875:"badbec4c",65048:"4ccce4bf",65069:"29efbae5",65138:"92d879d9",65217:"a9465447",65410:"a10e77bd",65412:"34d816d3",65527:"5dd40743",65708:"46623f4c",65739:"dbd95a84",65966:"c6778bda",66329:"839f419e",66546:"92e58ea1",66559:"a00bf155",66611:"e4c839d0",66662:"440fc737",66723:"7ca16897",67066:"506bfab9",67076:"dd5fd35b",67098:"1f707bd1",67283:"2d9b7cb2",67354:"87bbd614",67378:"371bef8f",67403:"b8da2e78",67484:"2f5867bd",67831:"2c709b57",68035:"0feb9a5c",68206:"8c3a7480",68311:"1274d116",68392:"01770702",68419:"118b253a",68725:"afdfb5c9",68765:"3558c7bc",68960:"e04d6c42",68990:"fe0f56c2",69033:"18c70cc2",69264:"b0cf1b2b",69501:"392ff924",69568:"54e57637",69578:"a680a6dc",69601:"50828cf5",69674:"f939d631",69798:"27644ea8",69835:"c75dbfb5",69849:"2874f6ac",69924:"74214c1b",69955:"47b203a8",70004:"2d5caa4c",70019:"fd4fbe01",70129:"b6691fbb",71333:"cc40ef44",71382:"c0a13728",71731:"6b3fc71c",71861:"40571f27",72076:"0904942f",72147:"64d57c58",72343:"ff2212f7",72350:"8fdb9113",72423:"04aaef34",72466:"60b66785",72544:"a5a6f671",72593:"6b7e5a57",72706:"a7ed40ea",73297:"74d47fa5",73352:"e466f163",73353:"5265c1ef",73454:"d11fa23b",73480:"75dd3d21",73536:"5f59bcbf",73623:"34c41f44",73694:"d42eb535",73706:"7e8340a0",73763:"6015cf04",73876:"756ed7a5",74209:"ef2380cf",74612:"0e51c25a",74644:"b72d176a",74645:"6206a3b7",74836:"4353944a",74995:"a684a028",75144:"9f105302",75264:"d2cb7d59",75312:"c5a76fdc",75333:"ff378399",75560:"fc4629b4",75644:"2e8b9d7c",75679:"5df97371",75734:"4195fdc1",75741:"65c30c94",75780:"fc3fc3a6",76014:"a2096eb3",76172:"fd036537",76375:"1b06fb86",76605:"9f17e4ca",76925:"ec536258",76999:"d4c5bf41",77027:"46d98212",77153:"57cad231",77202:"e4cf2c86",77356:"dba44b93",77567:"318f0a89",77667:"66235574",77839:"dcbb9d9e",77901:"b33df9db",78169:"77131f2d",78213:"e00664f3",78215:"7ba918de",78270:"e2a3cddb",78343:"3e44ac5c",78508:"35049b30",78571:"79899a0f",78633:"ccfafba8",78873:"0abfd346",78901:"aa6186de",79006:"431408d5",79048:"140c9501",79260:"80586130",79289:"9dd99a1d",79303:"d967528d",79315:"ad10bdfd",79327:"67cb169d",79492:"7e7a41c9",79627:"a1fc44dc",79976:"01126d84",80030:"dfb95771",80190:"ec037c45",80292:"5c15d5f9",80320:"4e627c09",80598:"efe1a66f",80957:"0374bea0",81006:"05d93097",81168:"a2debc22",81254:"568e7ca5",81493:"82d29b0e",81628:"4effcbfb",81690:"753391ac",81740:"b33f3bc3",81895:"cf915c1a",82096:"80762977",82206:"b32e6a1a",82237:"dd615fba",82338:"92518f22",82439:"3279f9e1",82752:"db53e0f4",83019:"e315d3e0",83683:"a4933c9e",83992:"5a4f240f",84051:"b62fb1eb",84064:"f43d917a",84170:"ec3e9d73",84263:"d5ce4cff",84592:"e0bbdffc",84666:"8d377180",84670:"2a952a1c",84842:"6c64e529",84900:"f9e04dcf",85106:"5a4d2f09",85168:"099173f5",85416:"b25a8b2b",85497:"a2d3bcc5",85536:"cac8aec2",85835:"9d9e4984",85962:"9e6d37ff",86049:"e66e2ea6",86104:"346bc1c6",86154:"a5b3413b",86165:"e3f048ec",86585:"fad7da85",86738:"09aef0ca",87136:"f73646db",87284:"9db8a422",87294:"442b8920",87902:"fc525f67",87909:"d141aa91",87968:"2192ce2b",88122:"f50d0b7c",88138:"252e15e2",88267:"cc76d66e",88291:"0b49eb77",88294:"36662e4d",88296:"3e071b42",88776:"cfde878c",88909:"c3d67da5",88999:"c2b003b9",89132:"3f585fc8",89151:"e49a8f72",89178:"dbf11d63",89213:"f2a0ac4b",89227:"8c16f99a",89299:"fbd5cfa8",89459:"ead6a011",89610:"ec30274f",89640:"6f1e0f22",89792:"e0fa33b3",89830:"9a4c1773",89897:"bfd5b5b1",90496:"35d86ab8",90600:"b799d22c",90860:"e168c7fb",90872:"25bad842",90880:"b2f41745",90951:"d98ce668",90972:"6786bbd0",91193:"7ae03ac2",91209:"dc8f6f51",91227:"6a864d95",91285:"c81472f2",91408:"0b247f4b",91587:"292e5239",91691:"eb55a9cd",91735:"77eff6b5",92116:"af70f534",92244:"0e3cdaa0",92348:"267ab3be",92394:"2c29c6c0",92444:"db93d9f9",92693:"742a8a9b",92909:"9a4f4b2d",92990:"39fd1e14",92992:"2e4abe9c",93140:"cdba2df3",93240:"6be26c03",93247:"8009a68d",93263:"22d971a5",93311:"7f85612c",93359:"ee2fa955",93457:"32d8e53d",93479:"7fedfebb",93542:"e0bfce8e",93576:"c661a530",93591:"35094a44",93789:"30ff171e",94156:"6aae74fc",94173:"df15d197",94382:"2afce015",94396:"da237f67",94508:"27d97567",94568:"122ff013",94573:"5d6d2c86",94728:"c76ded80",94907:"15474a01",95057:"5807135d",95165:"ce5ad587",95180:"396727f9",95200:"3410b5d2",95234:"829d8ca7",95523:"da210ac9",95627:"79c05cb7",95638:"d23eb0db",95893:"940f92ef",96585:"8e48c643",96601:"aefc9007",96888:"a39713d5",97078:"988547f4",97202:"d01b59a1",97221:"76d9505a",97382:"5dcea48f",97498:"f95c1dad",97742:"f5de1356",97984:"64493c30",98096:"29d15ec7",98265:"0ff7d50a",98284:"58766206",98327:"1b9cfd60",98417:"87dcc7bd",98531:"b4b60cb8",98780:"7d74ec67",98862:"f511c02e",99082:"23677b2f",99498:"e8bb8cd4",99522:"77669bfb",99648:"3a759b71",99758:"76495ae2"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,c)=>Object.prototype.hasOwnProperty.call(e,c),b={},d="langflow-docs:",r.l=(e,c,a,f)=>{if(b[e])b[e].push(c);else{var t,o;if(void 0!==a)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var d=b[e];if(delete b[e],t.parentNode&&t.parentNode.removeChild(t),d&&d.forEach(e=>e(a)),c)return c(a)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=u.bind(null,t.onerror),t.onload=u.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.p="/",r.gca=function(e){return e={12151514:"78169",17896441:"18401",20177945:"68392",23480489:"90951",32141993:"59289",35953519:"59931",38227151:"3276",44121474:"30684",44691977:"14876",47733641:"75644",52238869:"85536",56350599:"18593",59755345:"8800",68845080:"61334",69079906:"65739",70909872:"75333",71726720:"98531",72881381:"27637",80866714:"16839",83231553:"31111",86116998:"94907",95983061:"13564",d803fa53:"15",e4ebea9b:"298","54835a34":"348",e4dcfb14:"360",ffa0f8b1:"681","08b309e9":"889",db819a37:"1072",f7e6b9d6:"1162",b685e31b:"1171",c42ebc22:"1304","9c41e875":"1841",b1582da4:"1966","7e7969d8":"2064",ca5faf5d:"2272","8f587777":"2318","2ff50c47":"2536","6c97c549":"2975",d9370077:"3138",c0de4bb7:"3152","9bd8678f":"3409",c29fce3e:"3525","59b4092b":"3578","0cf8fbd8":"3658","75a537ca":"3775","1ee9a475":"3804","10b71b62":"3976","6a9646c2":"4048",cb17b4e0:"4085","8adc8900":"4120","816dd483":"4243",e0e01b61:"4261","985618c6":"4289","58dbbaf6":"4593","9727a3a6":"4691","17fe7e04":"4692",a3a327ec:"4746","6c9a6dfb":"4810",ce43de4b:"4919",f55f73d6:"5009","0ab43b76":"5120",ff7f32ba:"5200","99931d31":"5270","0f72e758":"5801","4916c69a":"5834","6e1d72b3":"6029","290c78e6":"6459","719cba95":"6538",bab3e2be:"6547",de7300f3:"6621","2b2e9d64":"6637","8f7e7f58":"6809","683d3a1b":"6837","84d1f727":"7022","5d9d4350":"7243","92c23da4":"7323",d9570b85:"7521","7030d598":"7677","9a4cbb64":"7760",e91b64eb:"7859",b49f632d:"7863","9b2487b6":"7879","9d47bdcb":"7918",e7fd9095:"8336","0d551289":"8581","681e5335":"8607","8a484c94":"8750","9cc816e3":"8775","5853a7b9":"8839",b13f6e6e:"8895","62d465bc":"9037",b96ee1bf:"9145","57c436d9":"9160","9ee95d32":"9515","0e5d0999":"9574","5b73b0a8":"9625","5e95c892":"9647",b768a3a5:"10078","692c1124":"10645","33b5ee95":"10750","3d1d37ee":"10801","1dfb8d43":"10883","86f51cb1":"11185",c38e511c:"11502","131fd31a":"11523","22dd74f7":"11567","60ebe5d0":"11574",b0603568:"11597",ff8bad6c:"11703","889b5aff":"11712","6e911c05":"11783",ee278e4e:"12044","755d162a":"12102","954b19af":"12460","00af0ed3":"12464",ed13863f:"12473","85d722c9":"12513","2141bac8":"12567",cb95a86d:"12635","820172e8":"12788","083628f7":"12895","87b7bbd6":"13035","6df123cd":"13038",c83c70df:"13147","67f2dc6c":"13164","8e51f10f":"13341","2613df18":"13398","3782bb5d":"13412",c4ac99db:"13618","418a5217":"13638","4bf693fa":"13642",db31f7b6:"13656","934b1c33":"13663","69a0b706":"13696","510a19e7":"13774",d29c4a40:"13988",ef8630dc:"14102",e43bb559:"14190","13786dcf":"14351","7b864b08":"14356","60cde673":"14387","4e55999f":"14435","313670b1":"14574",e55b8e98:"14614",a0019f95:"15458",a64546e2:"15512","68ce6e99":"15648","1b208f60":"15660",a304954f:"15679","568ebfec":"16035",ef9aa223:"16224","9ebc9441":"16426","72f6697c":"16497",f13693f0:"16513","976be08c":"16619",a49b697b:"16629","2aae4c48":"16913",b1c2f621:"16916",c11ffc61:"17080",f046f3ac:"17229","323a2e94":"17756","1cf73564":"17800",f37945da:"17846","02b166f2":"17938","7191b20e":"17976",eb22fa0a:"18060","5f3efb00":"18094","5b43ec5c":"18157","04d40a0f":"18212",d80374ab:"18436",ecd5d0b1:"18553","88482ee6":"18565","3795ce9a":"18605","0c23d011":"18611","1605cba6":"18725","8d03d619":"18732","555ae514":"18822","5dbb78ab":"18968","06d4c56c":"19280",f3312674:"19363","9369b6bc":"19421",c2b2f507:"19556",db42831a:"19638","7a5c3569":"19724",e53e6cac:"19788",a99a45c9:"20038","349eb80a":"20059","67f5d62b":"20123",bb45d4f9:"20253",b9acb8d9:"20351","886ee107":"20357","0591c3e4":"20449",c2e0ed62:"20596",e4dee050:"20717","8bee5443":"20879",c62d7ccd:"20929",bd7e5f4a:"20953","8b191302":"21193","93f4a427":"21359",c78349fc:"21446","0f761898":"21490","2ff2412e":"21513",b916da46:"21590",f94c04df:"21641",e3d2cc9a:"21789",c3ae1367:"21826","4ed54818":"21928","1c1c22e6":"22214","46190d9c":"22327","69a67e92":"22440","46abd5bb":"22457",cd086441:"22469","622fd833":"22565","71a62fc9":"22614","9d7c1d70":"22992","83f43d77":"23189",f39513cb:"23299","7ccc086b":"23331","3d67876e":"23387",c76bd485:"23468","7a7f449b":"23689","9534baec":"23703",d29727e0:"23723",e1925c9e:"23822",f57aa203:"23890","884246de":"23930",cf0944b9:"24230",f6a246db:"24314","6b6b826b":"24369","622bdc6f":"24384","3420c5de":"24477","59a1fafb":"24672",e704e05b:"24889","627938a3":"24898","59eb0fd8":"24930",a6d50436:"25412",a632f6f5:"25510",e3038eb8:"25543",fc9e0258:"25657",b1379b2b:"25663","8593bab8":"25707",ad42ff54:"25757",bbb8ec1d:"25838","69d616f2":"25903","4c50bc3d":"25943",b143525f:"26083","2fed9fb3":"26108","8b896872":"26237",cce672fb:"26311","083445a7":"26371","13f35c9b":"26399",bf9522df:"26655","3e9e9e4d":"26691","23499d25":"26767",b06c1bff:"26873","6620f372":"26895","7996108c":"27118",b2f95c90:"27151",ae846847:"27176","66c0ced4":"27554","1a8a0a64":"27807",ecd87361:"27826",ff35961a:"27964","32636b55":"28043",c116cd5b:"28058","714c86d4":"28110","78f20457":"28158",cc554d5c:"28171","0102a83b":"28240","0f1fe5fe":"28301",dc52b92a:"28489",fd6bdeea:"28686","42962acd":"28702","56c23a02":"28963","563ddf9c":"29033","7d437779":"29279",dd544600:"29342","95e439d6":"29528","46a77053":"29612","83955a40":"29644",b796be74:"29781",d1f3cfe5:"29986",ae70dfbf:"30126","3d4d4fec":"30488","76e36fb0":"30534","7631f8d2":"30676",c7c5779e:"30885","03735ec1":"30956","05f35932":"31174",f8655c95:"31224",fe6d5b4f:"31345",e3ac9b36:"31353",cebd9a13:"31455","888321de":"31714","7f371604":"31731",b30506d0:"31905",dea11b82:"32579","19a17d95":"32580","3728a63b":"32629","12c97058":"32684",e76a67c4:"32696",a72a3fb5:"32720","43ad9ba4":"32741","5c10a708":"32868","00c9b276":"32972","33dc892c":"33110",a2e78534:"33126","35b7ab8a":"33190","6398c398":"33284","040305fb":"33345","57ca4a6e":"33441",c3c63498:"33500","4bec023b":"34132",af54cce0:"34448",b1d3effc:"34547","3348f35c":"34572","5f7173ff":"34600","519fcc13":"34838","6c4352b5":"34999",f2ec4536:"35045","81045c65":"35109",e9fe1d10:"35110",b9639850:"35145",eeeaec82:"35281",c6217ba7:"35300","3bc04d54":"35310","3ba5e8b3":"35532",a0b1cb48:"35560",d2fb5df7:"35679",aba21aa0:"35742","9e0af19a":"36177","06438862":"36294","1fc761b4":"36381","4d73c64d":"36690",e3193c90:"36816","16c09ef7":"37096","8433a9df":"37217",b0066887:"37258",c43bb4ff:"37383","4c09a7b3":"37512","2b91b6ca":"37705","2b56b65e":"37824","7c27dc91":"37829","593d9d00":"37859",a34828f4:"37899",dbc51d47:"38101",c7f91cbe:"38269",ef9b7b43:"38351","86e152f5":"38513","3421ab55":"38622","7de42fc9":"38649",f3ac2f9e:"38652","4fb38478":"38701","859c5ce2":"38855","0325e068":"39018",f182f6a8:"39049","0664e19b":"39296",a9c1003f:"39482","577c79e2":"39504","558d344b":"39610",d336c0e7:"39654","25e1f852":"39673",af7e9586:"39762",bf5514cf:"39921","4c98f287":"40008",e3f369d5:"40044","07cbc62e":"40323","3d81f1cf":"40375",a4232cf8:"40446","3325f616":"40547","62403cba":"40794","3056730d":"40825","0f15664b":"40877","736c10b7":"41262","41d45d82":"41303","524ac532":"41392",bb458927:"41586","5c3b537a":"41876","0e5f6b08":"41891","9d8bd6d4":"42192","4d90a6f8":"42207","017d425f":"42360",e52a8b92:"42557","568a9220":"42632","31611a54":"42657",f0ad3fbb:"42969",fa4f51ab:"43505","6334f102":"43534","7cddad42":"43704","5df8c6e2":"43788",e2bad863:"43804","597eac2b":"43821",fbcfc90d:"44036","4c9a9d60":"44167",f0f46288:"44335",e1a0f423:"44341","79093f63":"44544","68b33cec":"44770","7dd51668":"44956",eba86ea4:"45397","087959bf":"45485",a95869c9:"45797","2be9dc85":"45851","66e08c6c":"45854","64281dc0":"45993","53bec5b2":"46092","4dfec8bf":"46113","44254a19":"46195","6888b60e":"46256","17e0c1bd":"46686",dfae685c:"46737","2c0889df":"46933","0cb92a3e":"46964","9de16efd":"46995","73434c8c":"47094",d0d611e1:"47401","918796f5":"47472",b752a707:"47656","9439c1e0":"47855","26e0f666":"48044",c0975f59:"48161",a4b6c971:"48268","8431c66d":"48386","71225d3d":"48529","3a9e0e6c":"48625","614cb771":"48786","0fca4648":"48975",db80839f:"49091","7e09847e":"49186",ffcd190c:"49331","3b25a2ae":"49640",d8c8efb9:"49712",aece522a:"49763","907b1917":"49801",a2cf3cbb:"49895","74765de4":"49901",b75540e2:"50021","49dd0916":"50062",a3702f61:"50093","4fb29655":"50142",e3375295:"50262",bf09fd32:"50391","50ebac30":"50448",efc28ab7:"50601",ddc3f343:"50635","6120404c":"50789","6e07b85b":"50992",b9f408a3:"51150","4683b708":"51295",ec030ab7:"51308","34c961bc":"51640","780df666":"52242",bbeffb50:"52293","3c2009e3":"52410",b7f0fa5c:"52415","1ab69cbd":"52475",a3edac8b:"52598","8cd0650d":"52651","81ade132":"53104","052febf4":"53113","00ff87cb":"53251","2c0d05be":"53360","8f633f11":"53361",efa0f9ee:"53368",af3eee87:"53483","8db61ca8":"53628","2c3d9ffa":"53769",b7d6a934:"53963",a8ca941b:"54090","2d7c992e":"54098","2b710dbb":"54147",c81b2489:"54160","93d1f2ab":"54239",f04703a3:"54245","3db73d6f":"54474","45365f27":"54561",d5923456:"54767","567e79da":"54895","68f30bb0":"55112","1b10d5ba":"55343","0c843eb8":"55562",be1fd610:"55820","30291f60":"56534",e983a71a:"56540","2c96c8bf":"56770",acefda8b:"56801",ff75e5d1:"56844",da8ee26b:"56970",ded56be8:"56980",c699cab6:"57034","4bd60bfa":"57046",dee456a9:"57150","165dcd0d":"57156","1be2c3df":"57395","1a547ad8":"57502",bbd9acba:"57713","3bfbe7c9":"57720","6e85978c":"58090","147f5874":"58381","5a94716a":"58545","0f16c390":"58997","4e5c7eac":"59262","8d322213":"59376",f2e40bf0:"59448","28a2dd93":"59776","1167f920":"59837","7a5dcced":"59873","4821e150":"59885","508dc4aa":"59887","7e3143ed":"60107",e77fd094:"60267","5d7abaf0":"60369",c8c2e8e3:"60870","067fc716":"61141",db681b30:"61171",a07a3961:"61427","87a280ae":"61483",cfacdcbb:"61507",ac660c9a:"61702","97dc9ff4":"61963","1a4e3797":"62138",c4280da9:"62278","6f37ac18":"62382",f3ad3ad1:"62620",f8717faf:"62663","41998ae8":"62718",faf2e68f:"62719","32270e71":"62888","7fdc52f9":"62937",be290879:"63055","6306afff":"63206","1c7b2ed8":"63635",f183fa16:"64129","3c761b39":"64187",fc515ceb:"64249",e6c71d49:"64270","0ae0f1aa":"64452","09db28ba":"64609","56bf45ed":"64676","5a97a887":"64721","3760d024":"64785",e4a3fe7d:"64790","454071be":"64865",a26cf3cd:"64875","3c440e04":"65048","3d29008d":"65069","47094f16":"65138",fb0a7a3f:"65217",adea32c2:"65410",cd6761a3:"65412","4e5156cc":"65527","59a5ce7f":"65708",cc866a0f:"65966",a7b545c5:"66329","2e4bb914":"66546","7431813e":"66559",c6498d99:"66611","2d481cb5":"66662",bc868195:"66723","65dee3f9":"67066","308702e4":"67076",a7bd4aaa:"67098","48a1f7a0":"67283",c0d9f82a:"67354","7f3541b1":"67378","93bd0903":"67403",ad01e028:"67484",aab929a1:"67831",aacd5a8e:"68035","6425c856":"68206","3df9cb09":"68311","78d85954":"68419","07577e52":"68725","1a2eaade":"68765",c72ac64a:"68960","5f1a63c6":"68990","9f55b2fc":"69033",c7f32161:"69264",ef6abeb1:"69501","975a9c4e":"69568","1956b4f2":"69578",d202f5de:"69601",feac1fba:"69674","67eea6ad":"69798","76f768b2":"69835","503850d7":"69849",a87e3b03:"69924","36748e69":"69955","9daf1020":"70004",b74a56d9:"70019",dfa3dc90:"70129",c990d48e:"71333","8ba603f7":"71382","7f2f21f2":"71731","8ad67c3b":"71861",common:"72076","9dfc101b":"72147",e4268fbc:"72343",aca88518:"72350","19bcb67f":"72423",f4a50841:"72466","6631fea3":"72544","0fa3ec71":"72593","97839d16":"72706",d3cb7fcd:"73297",c39faaf0:"73352","2b4d41d7":"73353","0c48e067":"73454","72ef3185":"73480","2eb731bc":"73536","2517ec2a":"73623","72eeaf12":"73694","09d9ec5b":"73706","221619dc":"73763","3fdc0814":"73876",be104550:"74209","6a9eca1a":"74612",d3e886ab:"74644","3512f6ed":"74645","310c401c":"74836","62266e9d":"74995","944c5f91":"75144",e6597272:"75264","9f8d430a":"75312","481fac59":"75560",c9fb925b:"75679",cef46d81:"75734",af5bd3c8:"75741",d5583dec:"75780","939f801c":"76014",f22b074d:"76172",faa4a519:"76375",b64518a7:"76605","057068ec":"76925",d5ec984b:"76999",db33ae8f:"77027","68090d23":"77153",c4ce7d01:"77202","2ea623f2":"77356","4545d55b":"77567",f300f72f:"77667","85e8edc4":"77839","2ef5093f":"77901",e4db1f51:"78213","721c3877":"78215","80c19293":"78270","4b64ecc5":"78343","10dd1586":"78508",da1ad91e:"78571","9120c1b0":"78633",c441d042:"78873",bf15d2f8:"78901",e2cf5453:"79006",a94703ab:"79048","0413db52":"79260","314515b7":"79289","5017ec07":"79303","16faf8bf":"79315","4e911fe9":"79327","43c43981":"79492",e0c501ee:"79627","230d5fdc":"79976",db8c087e:"80030",b5b00d31:"80190",d35a0895:"80292",c8932bdf:"80320",db4f3bbd:"80598",c141421f:"80957","47e58a89":"81006",f59fd575:"81168","86d16fc7":"81254","78befb93":"81493",c6e3d68f:"81628","9fbf837f":"81690","7781e1f8":"81740",d375ca1d:"81895",c8d33703:"82096",aa56551c:"82206",f32b825a:"82338","400ecdbb":"82439",e14655eb:"82752",ced78c62:"83019","5a0b74d9":"83683","18dc6e4d":"83992",a3a08fde:"84051","29a3e49d":"84064",b4bc1be8:"84170","9a5e6f6b":"84263",df85e4a0:"84592","59ad984c":"84666","7f8f0b02":"84670",af836517:"84842","4907faf4":"84900",dc7c1a8b:"85106",f83cb548:"85168","816072e4":"85416",a9d8f5ad:"85497",d0e298f4:"85835","400d3dc1":"85962","1f4ffe33":"86049","459e8eb3":"86104",b5725d20:"86154","819151f9":"86165","23da8cfc":"86585","2e821519":"86738",e765ceb6:"87136",aa4c8ca2:"87284",fcc3e8af:"87294","619c7267":"87902","6c1a3ce8":"87909","9b0af131":"87968",f641c1d8:"88122","2be18267":"88138","02f8077b":"88267","9767dab6":"88291",f2bedfce:"88294","7faa66fd":"88296",afbb88b8:"88776","045613ad":"88909","3a9fbbe6":"88999","293f8708":"89132","50b9949d":"89151",aaa36fb1:"89178","62d1268c":"89213","7e40e6b3":"89227",bb2b4e8e:"89299","97254d1d":"89459","453ae64a":"89610","39d45b55":"89640",f2545f30:"89792",ce671f56:"89830",f0eeb72e:"89897","168c922b":"90496",ee87c775:"90600",e47a8da3:"90860",b4eb1ea1:"90872","35bd09bf":"90880",e66b1de2:"90972","444a6da6":"91193",f6dd9f9d:"91209",fa88888c:"91227","695c8cb8":"91285","2fc7e024":"91408","71394c29":"91587",ce1a1cdf:"91691","45c87940":"91735","0f1bef30":"92116","0108e1a3":"92244",f2da9399:"92348",c2ea283c:"92394","904b8c49":"92444","144a43f5":"92909","1d50b418":"92990",dac6642a:"92992","1a29c454":"93140",b079b393:"93240",f0b67137:"93247","730da84e":"93263",e54ce709:"93311","6d032186":"93359",f16848a8:"93457","8764ac05":"93479",c37cc938:"93542",ecfe7a7a:"93576","49aa9822":"93591",ddec769b:"93789","1a08aa58":"94156",d51059db:"94173","752a25f3":"94382","5e3fd8b4":"94396","351b3050":"94508",d1a61039:"94568",baacc2a1:"94573",def84d04:"94728","99abe279":"95057",bd565561:"95165","8ee2c8d6":"95180",af95bc92:"95200",a9898daa:"95234","9bacfd07":"95523",e27c2ac1:"95627",eed50738:"95638",de09cc26:"95893","67da1391":"96585","81bb6a5c":"96601","46d914cb":"96888",f531aa2f:"97078","58f0e94f":"97202","9c504d23":"97221","00f42144":"97382",e4400415:"97498","318a76ad":"97742",eaea3b35:"97984","11f65c63":"98096","50cf4e76":"98265",b2eaded0:"98284","96d9d578":"98327",aceb0cb2:"98417","75c9b719":"98780",e87b52ac:"98862",d47919d3:"99082","479e265c":"99498","85dc2a2b":"99522","8c7ba981":"99648","439d880a":"99758"}[e]||e,r.p+r.u(e)},(()=>{var e={45354:0,71869:0};r.f.j=(c,a)=>{var b=r.o(e,c)?e[c]:void 0;if(0!==b)if(b)a.push(b[2]);else if(/^(45354|71869)$/.test(c))e[c]=0;else{var d=new Promise((a,d)=>b=e[c]=[a,d]);a.push(b[2]=d);var f=r.p+r.u(c),t=new Error;r.l(f,a=>{if(r.o(e,c)&&(0!==(b=e[c])&&(e[c]=void 0),b)){var d=a&&("load"===a.type?"missing":a.type),f=a&&a.target&&a.target.src;t.message="Loading chunk "+c+" failed.\n("+d+": "+f+")",t.name="ChunkLoadError",t.type=d,t.request=f,b[1](t)}},"chunk-"+c,c)}},r.O.j=c=>0===e[c];var c=(c,a)=>{var b,d,[f,t,o]=a,n=0;if(f.some(c=>0!==e[c])){for(b in t)r.o(t,b)&&(r.m[b]=t[b]);if(o)var i=o(r)}for(c&&c(a);n - + diff --git a/bundles-agentics.html b/bundles-agentics.html index 8aab7cfb67..16f5194706 100644 --- a/bundles-agentics.html +++ b/bundles-agentics.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-aiml.html b/bundles-aiml.html index 9badc7aaa0..9d5de05a8b 100644 --- a/bundles-aiml.html +++ b/bundles-aiml.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-altk.html b/bundles-altk.html index 4d2a4446b1..0e23ab0183 100644 --- a/bundles-altk.html +++ b/bundles-altk.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-amazon.html b/bundles-amazon.html index ee7d43b1d6..a4845ffc67 100644 --- a/bundles-amazon.html +++ b/bundles-amazon.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-anthropic.html b/bundles-anthropic.html index 1f98330b5c..2b6dc8d4b0 100644 --- a/bundles-anthropic.html +++ b/bundles-anthropic.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-apify.html b/bundles-apify.html index d85d0a776e..a6fa4608de 100644 --- a/bundles-apify.html +++ b/bundles-apify.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-arxiv.html b/bundles-arxiv.html index 406cfe64ab..fb3b68561e 100644 --- a/bundles-arxiv.html +++ b/bundles-arxiv.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-assemblyai.html b/bundles-assemblyai.html index 3be53af0f7..0bab0c82b6 100644 --- a/bundles-assemblyai.html +++ b/bundles-assemblyai.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-azure.html b/bundles-azure.html index f529eee879..5fdfb01c7c 100644 --- a/bundles-azure.html +++ b/bundles-azure.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-baidu.html b/bundles-baidu.html index 2682f5a762..b72e2c4ef2 100644 --- a/bundles-baidu.html +++ b/bundles-baidu.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-bing.html b/bundles-bing.html index ffc3ca913d..66351121f8 100644 --- a/bundles-bing.html +++ b/bundles-bing.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-cassandra.html b/bundles-cassandra.html index 957683d779..0ab0859a27 100644 --- a/bundles-cassandra.html +++ b/bundles-cassandra.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-chroma.html b/bundles-chroma.html index 5cc8ca3a69..6cb34032b8 100644 --- a/bundles-chroma.html +++ b/bundles-chroma.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-cleanlab.html b/bundles-cleanlab.html index 22732b25dc..115e86a0c9 100644 --- a/bundles-cleanlab.html +++ b/bundles-cleanlab.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-clickhouse.html b/bundles-clickhouse.html index 12bd127873..419b95ca5a 100644 --- a/bundles-clickhouse.html +++ b/bundles-clickhouse.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-cloudflare.html b/bundles-cloudflare.html index d249e3ec19..7f1a6da12e 100644 --- a/bundles-cloudflare.html +++ b/bundles-cloudflare.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-codeagents.html b/bundles-codeagents.html index 3816b18b8a..cd351e8109 100644 --- a/bundles-codeagents.html +++ b/bundles-codeagents.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-cohere.html b/bundles-cohere.html index 2825501ac3..e9e08c0703 100644 --- a/bundles-cohere.html +++ b/bundles-cohere.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-cometapi.html b/bundles-cometapi.html index bbe3dd0873..08d6829cd2 100644 --- a/bundles-cometapi.html +++ b/bundles-cometapi.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-composio.html b/bundles-composio.html index 4d55062f70..8fd407e88e 100644 --- a/bundles-composio.html +++ b/bundles-composio.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-couchbase.html b/bundles-couchbase.html index 8cdb5070a9..283d27158a 100644 --- a/bundles-couchbase.html +++ b/bundles-couchbase.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-cuga.html b/bundles-cuga.html index 340172c3ed..adbcc0249e 100644 --- a/bundles-cuga.html +++ b/bundles-cuga.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-datastax.html b/bundles-datastax.html index 2b64519876..dc25fb0aa1 100644 --- a/bundles-datastax.html +++ b/bundles-datastax.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-deepseek.html b/bundles-deepseek.html index 46f3def530..63be66647f 100644 --- a/bundles-deepseek.html +++ b/bundles-deepseek.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-docling.html b/bundles-docling.html index 7891aa3cb1..b4effa659b 100644 --- a/bundles-docling.html +++ b/bundles-docling.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-duckduckgo.html b/bundles-duckduckgo.html index 7d2f3f8643..adccbfd68b 100644 --- a/bundles-duckduckgo.html +++ b/bundles-duckduckgo.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-elastic.html b/bundles-elastic.html index aafb0fd566..96288fccf7 100644 --- a/bundles-elastic.html +++ b/bundles-elastic.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-exa.html b/bundles-exa.html index bf0d5ab842..8c6a973482 100644 --- a/bundles-exa.html +++ b/bundles-exa.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-faiss.html b/bundles-faiss.html index e7af486759..0e54534860 100644 --- a/bundles-faiss.html +++ b/bundles-faiss.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-files-ingestion.html b/bundles-files-ingestion.html index a4f84e8733..1b6b902e54 100644 --- a/bundles-files-ingestion.html +++ b/bundles-files-ingestion.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-firecrawl.html b/bundles-firecrawl.html index aa3120fd8b..f0579b9005 100644 --- a/bundles-firecrawl.html +++ b/bundles-firecrawl.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-glean.html b/bundles-glean.html index 11595249c7..0053bc98af 100644 --- a/bundles-glean.html +++ b/bundles-glean.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-google.html b/bundles-google.html index 8cb1b8da77..b6b3425831 100644 --- a/bundles-google.html +++ b/bundles-google.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-groq.html b/bundles-groq.html index b34d64b34d..134fd8b504 100644 --- a/bundles-groq.html +++ b/bundles-groq.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-huggingface.html b/bundles-huggingface.html index 671c153afa..5c6b8ed286 100644 --- a/bundles-huggingface.html +++ b/bundles-huggingface.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-ibm.html b/bundles-ibm.html index fdf8a0bcee..010a28ba48 100644 --- a/bundles-ibm.html +++ b/bundles-ibm.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-icosacomputing.html b/bundles-icosacomputing.html index 9d7253bcbd..bdee4d3835 100644 --- a/bundles-icosacomputing.html +++ b/bundles-icosacomputing.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-langchain.html b/bundles-langchain.html index 1498cfb6d6..ae1ee3dfa0 100644 --- a/bundles-langchain.html +++ b/bundles-langchain.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-lite-llm.html b/bundles-lite-llm.html index 36b6c00483..7e4a5d0ba6 100644 --- a/bundles-lite-llm.html +++ b/bundles-lite-llm.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-lmstudio.html b/bundles-lmstudio.html index ba891bf28b..94afce5a06 100644 --- a/bundles-lmstudio.html +++ b/bundles-lmstudio.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-maritalk.html b/bundles-maritalk.html index 3750d18aef..47dea4fcd5 100644 --- a/bundles-maritalk.html +++ b/bundles-maritalk.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-mem0.html b/bundles-mem0.html index ddb46f5dfe..7d79c0fe2a 100644 --- a/bundles-mem0.html +++ b/bundles-mem0.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-milvus.html b/bundles-milvus.html index dcce0d2c1c..e4c828c56a 100644 --- a/bundles-milvus.html +++ b/bundles-milvus.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-mistralai.html b/bundles-mistralai.html index f1bc7bc134..dc50597bb2 100644 --- a/bundles-mistralai.html +++ b/bundles-mistralai.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-mongodb.html b/bundles-mongodb.html index 73750230ae..805fbb1479 100644 --- a/bundles-mongodb.html +++ b/bundles-mongodb.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-notion.html b/bundles-notion.html index a2dff316b0..bc059b3f1e 100644 --- a/bundles-notion.html +++ b/bundles-notion.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-novita.html b/bundles-novita.html index 59148adaac..22bab5c07e 100644 --- a/bundles-novita.html +++ b/bundles-novita.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-nvidia.html b/bundles-nvidia.html index 0b4b821aae..3eeff4b4e1 100644 --- a/bundles-nvidia.html +++ b/bundles-nvidia.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-ollama.html b/bundles-ollama.html index 3b597e84ae..cc51fd10fd 100644 --- a/bundles-ollama.html +++ b/bundles-ollama.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-openai.html b/bundles-openai.html index 9aa61038ed..92dba9eee6 100644 --- a/bundles-openai.html +++ b/bundles-openai.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-openrouter.html b/bundles-openrouter.html index 6773e349db..159a8dfa98 100644 --- a/bundles-openrouter.html +++ b/bundles-openrouter.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-perplexity.html b/bundles-perplexity.html index 8551589e87..a353fab3a6 100644 --- a/bundles-perplexity.html +++ b/bundles-perplexity.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-pgvector.html b/bundles-pgvector.html index b05a6269f5..68bad69abe 100644 --- a/bundles-pgvector.html +++ b/bundles-pgvector.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-pinecone.html b/bundles-pinecone.html index 85ef98b335..179e431107 100644 --- a/bundles-pinecone.html +++ b/bundles-pinecone.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-qdrant.html b/bundles-qdrant.html index 975ff5a43a..366ce0816e 100644 --- a/bundles-qdrant.html +++ b/bundles-qdrant.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-redis.html b/bundles-redis.html index a9bf718a13..37a0923b94 100644 --- a/bundles-redis.html +++ b/bundles-redis.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-sambanova.html b/bundles-sambanova.html index ad4a51d7e5..ee8a7eecac 100644 --- a/bundles-sambanova.html +++ b/bundles-sambanova.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-searchapi.html b/bundles-searchapi.html index f0018a051d..e758db414c 100644 --- a/bundles-searchapi.html +++ b/bundles-searchapi.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-serper.html b/bundles-serper.html index f1daf1991f..943d8d0493 100644 --- a/bundles-serper.html +++ b/bundles-serper.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-supabase.html b/bundles-supabase.html index 648e80195a..591625db6c 100644 --- a/bundles-supabase.html +++ b/bundles-supabase.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-upstash.html b/bundles-upstash.html index 76bb7c533a..278749b3d2 100644 --- a/bundles-upstash.html +++ b/bundles-upstash.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-vectara.html b/bundles-vectara.html index 2cdda398b7..04c3988ec8 100644 --- a/bundles-vectara.html +++ b/bundles-vectara.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-vertexai.html b/bundles-vertexai.html index bca8afbb4c..04e0e9191d 100644 --- a/bundles-vertexai.html +++ b/bundles-vertexai.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-vllm.html b/bundles-vllm.html index c388653af4..164dec8b12 100644 --- a/bundles-vllm.html +++ b/bundles-vllm.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-weaviate.html b/bundles-weaviate.html index 5fb43c7461..d3f1623e48 100644 --- a/bundles-weaviate.html +++ b/bundles-weaviate.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-wikipedia.html b/bundles-wikipedia.html index 0800bcd225..2b81349db1 100644 --- a/bundles-wikipedia.html +++ b/bundles-wikipedia.html @@ -25,7 +25,7 @@ - + diff --git a/bundles-xai.html b/bundles-xai.html index 8e9938555c..0de60a3226 100644 --- a/bundles-xai.html +++ b/bundles-xai.html @@ -25,7 +25,7 @@ - + diff --git a/calculator.html b/calculator.html index f88c7a6a3e..b1bcbfbe88 100644 --- a/calculator.html +++ b/calculator.html @@ -25,7 +25,7 @@ - + diff --git a/chat-input-and-output.html b/chat-input-and-output.html index c87bd51ebb..b6e909df24 100644 --- a/chat-input-and-output.html +++ b/chat-input-and-output.html @@ -25,7 +25,7 @@ - + diff --git a/chat-with-files.html b/chat-with-files.html index e5ec85e189..25b0c6ac34 100644 --- a/chat-with-files.html +++ b/chat-with-files.html @@ -25,7 +25,7 @@ - + diff --git a/chat-with-rag.html b/chat-with-rag.html index 34f20644b3..8d5d0538a1 100644 --- a/chat-with-rag.html +++ b/chat-with-rag.html @@ -25,7 +25,7 @@ - + diff --git a/component-webhook.html b/component-webhook.html index 82d7cda132..295fadab3f 100644 --- a/component-webhook.html +++ b/component-webhook.html @@ -25,7 +25,7 @@ - + diff --git a/components-agents.html b/components-agents.html index e8641404c5..4f11f95e27 100644 --- a/components-agents.html +++ b/components-agents.html @@ -25,7 +25,7 @@ - + diff --git a/components-bundle-components.html b/components-bundle-components.html index ca6c1dfdd3..c8a31429f2 100644 --- a/components-bundle-components.html +++ b/components-bundle-components.html @@ -25,7 +25,7 @@ - + diff --git a/components-custom-components.html b/components-custom-components.html index e2a40d6b73..f02452c9bb 100644 --- a/components-custom-components.html +++ b/components-custom-components.html @@ -25,7 +25,7 @@ - + diff --git a/components-embedding-models.html b/components-embedding-models.html index 61e8545366..f8671447dd 100644 --- a/components-embedding-models.html +++ b/components-embedding-models.html @@ -25,7 +25,7 @@ - + diff --git a/components-models.html b/components-models.html index ea0eb5f2d7..965c968e31 100644 --- a/components-models.html +++ b/components-models.html @@ -25,7 +25,7 @@ - + diff --git a/components-prompts.html b/components-prompts.html index 34670fc75e..6533ef9dea 100644 --- a/components-prompts.html +++ b/components-prompts.html @@ -25,7 +25,7 @@ - + diff --git a/concepts-components.html b/concepts-components.html index fa36571bde..7de97ca323 100644 --- a/concepts-components.html +++ b/concepts-components.html @@ -25,7 +25,7 @@ - + diff --git a/concepts-file-management.html b/concepts-file-management.html index 99d849e50e..d085bf6ab4 100644 --- a/concepts-file-management.html +++ b/concepts-file-management.html @@ -25,7 +25,7 @@ - + diff --git a/concepts-flows-import.html b/concepts-flows-import.html index bc70a98e88..f0f29b727c 100644 --- a/concepts-flows-import.html +++ b/concepts-flows-import.html @@ -25,7 +25,7 @@ - + diff --git a/concepts-flows.html b/concepts-flows.html index 0178d9dea7..055becaffc 100644 --- a/concepts-flows.html +++ b/concepts-flows.html @@ -25,7 +25,7 @@ - + diff --git a/concepts-overview.html b/concepts-overview.html index 1c0f46a404..947fd19681 100644 --- a/concepts-overview.html +++ b/concepts-overview.html @@ -25,7 +25,7 @@ - + diff --git a/concepts-playground.html b/concepts-playground.html index 145b26457b..acf58c1cc8 100644 --- a/concepts-playground.html +++ b/concepts-playground.html @@ -25,7 +25,7 @@ - + diff --git a/concepts-publish.html b/concepts-publish.html index 070be8aadb..d1d0b2391c 100644 --- a/concepts-publish.html +++ b/concepts-publish.html @@ -25,7 +25,7 @@ - + diff --git a/concepts-voice-mode.html b/concepts-voice-mode.html index 8e85bf4c10..64a4ec543c 100644 --- a/concepts-voice-mode.html +++ b/concepts-voice-mode.html @@ -25,7 +25,7 @@ - + diff --git a/configuration-cli.html b/configuration-cli.html index 7e3b62ff0c..d500ca0f46 100644 --- a/configuration-cli.html +++ b/configuration-cli.html @@ -25,7 +25,7 @@ - + diff --git a/configuration-custom-database.html b/configuration-custom-database.html index 964b29d42b..ad349dbcaf 100644 --- a/configuration-custom-database.html +++ b/configuration-custom-database.html @@ -25,7 +25,7 @@ - + diff --git a/configuration-global-variables.html b/configuration-global-variables.html index 3634d092ac..e23772e63a 100644 --- a/configuration-global-variables.html +++ b/configuration-global-variables.html @@ -25,7 +25,7 @@ - + diff --git a/contributing-bundles.html b/contributing-bundles.html index bc04312545..b8088fcf5e 100644 --- a/contributing-bundles.html +++ b/contributing-bundles.html @@ -25,7 +25,7 @@ - + diff --git a/contributing-community.html b/contributing-community.html index 87663635aa..576a26d15f 100644 --- a/contributing-community.html +++ b/contributing-community.html @@ -25,7 +25,7 @@ - + diff --git a/contributing-component-tests.html b/contributing-component-tests.html index c423ce47f6..db56112a30 100644 --- a/contributing-component-tests.html +++ b/contributing-component-tests.html @@ -25,7 +25,7 @@ - + diff --git a/contributing-components.html b/contributing-components.html index 7de85e8618..86a0a63481 100644 --- a/contributing-components.html +++ b/contributing-components.html @@ -25,7 +25,7 @@ - + diff --git a/contributing-github-issues.html b/contributing-github-issues.html index 017f433606..bb4cd2e836 100644 --- a/contributing-github-issues.html +++ b/contributing-github-issues.html @@ -25,7 +25,7 @@ - + diff --git a/contributing-how-to-contribute.html b/contributing-how-to-contribute.html index 77354f2c77..e57c8308e2 100644 --- a/contributing-how-to-contribute.html +++ b/contributing-how-to-contribute.html @@ -25,7 +25,7 @@ - + diff --git a/contributing-telemetry.html b/contributing-telemetry.html index 54a966f03d..50ef655fce 100644 --- a/contributing-telemetry.html +++ b/contributing-telemetry.html @@ -25,7 +25,7 @@ - + diff --git a/contributing-templates.html b/contributing-templates.html index 481b54572d..89aec948eb 100644 --- a/contributing-templates.html +++ b/contributing-templates.html @@ -25,7 +25,7 @@ - + diff --git a/current-date.html b/current-date.html index 8a8ad70477..c9b849a014 100644 --- a/current-date.html +++ b/current-date.html @@ -25,7 +25,7 @@ - + diff --git a/data-operations.html b/data-operations.html index 555f956d80..b794735e6b 100644 --- a/data-operations.html +++ b/data-operations.html @@ -25,7 +25,7 @@ - + diff --git a/data-types.html b/data-types.html index 6d9f525075..2a9b477a9e 100644 --- a/data-types.html +++ b/data-types.html @@ -25,7 +25,7 @@ - + diff --git a/dataframe-operations.html b/dataframe-operations.html index 03b928c3af..1da5540e79 100644 --- a/dataframe-operations.html +++ b/dataframe-operations.html @@ -25,7 +25,7 @@ - + diff --git a/deployment-architecture.html b/deployment-architecture.html index 7654adfc02..7de84e5bfc 100644 --- a/deployment-architecture.html +++ b/deployment-architecture.html @@ -25,7 +25,7 @@ - + diff --git a/deployment-block-custom-components.html b/deployment-block-custom-components.html index 6d6f753c01..ccd5c1cd6c 100644 --- a/deployment-block-custom-components.html +++ b/deployment-block-custom-components.html @@ -25,7 +25,7 @@ - + diff --git a/deployment-caddyfile.html b/deployment-caddyfile.html index c7ad3defc0..0170a684e1 100644 --- a/deployment-caddyfile.html +++ b/deployment-caddyfile.html @@ -25,7 +25,7 @@ - + diff --git a/deployment-docker.html b/deployment-docker.html index 72f6da4f83..aaca94f17d 100644 --- a/deployment-docker.html +++ b/deployment-docker.html @@ -25,7 +25,7 @@ - + diff --git a/deployment-gcp.html b/deployment-gcp.html index 7fd073a01e..0fc9059b1f 100644 --- a/deployment-gcp.html +++ b/deployment-gcp.html @@ -25,7 +25,7 @@ - + diff --git a/deployment-hugging-face-spaces.html b/deployment-hugging-face-spaces.html index 51f0014110..1256a3910c 100644 --- a/deployment-hugging-face-spaces.html +++ b/deployment-hugging-face-spaces.html @@ -25,7 +25,7 @@ - + diff --git a/deployment-kubernetes-dev.html b/deployment-kubernetes-dev.html index 35e08ed89f..08e6bbacb5 100644 --- a/deployment-kubernetes-dev.html +++ b/deployment-kubernetes-dev.html @@ -25,7 +25,7 @@ - + diff --git a/deployment-kubernetes-prod.html b/deployment-kubernetes-prod.html index b97ca62b09..abf2b24050 100644 --- a/deployment-kubernetes-prod.html +++ b/deployment-kubernetes-prod.html @@ -25,7 +25,7 @@ - + diff --git a/deployment-macos-support.html b/deployment-macos-support.html index 601b535976..fe07c3723d 100644 --- a/deployment-macos-support.html +++ b/deployment-macos-support.html @@ -25,7 +25,7 @@ - + diff --git a/deployment-multi-worker.html b/deployment-multi-worker.html index 387277f0a8..1354c2c080 100644 --- a/deployment-multi-worker.html +++ b/deployment-multi-worker.html @@ -25,7 +25,7 @@ - + diff --git a/deployment-nginx-ssl.html b/deployment-nginx-ssl.html index f006fee286..85e672145c 100644 --- a/deployment-nginx-ssl.html +++ b/deployment-nginx-ssl.html @@ -25,7 +25,7 @@ - + diff --git a/deployment-overview.html b/deployment-overview.html index 611ce0526d..aa8d4557f5 100644 --- a/deployment-overview.html +++ b/deployment-overview.html @@ -25,7 +25,7 @@ - + diff --git a/deployment-prod-best-practices.html b/deployment-prod-best-practices.html index 8ce72ed15c..72f76ca808 100644 --- a/deployment-prod-best-practices.html +++ b/deployment-prod-best-practices.html @@ -25,7 +25,7 @@ - + diff --git a/deployment-public-server.html b/deployment-public-server.html index dcaa0d0e7e..bc9fa0dabe 100644 --- a/deployment-public-server.html +++ b/deployment-public-server.html @@ -25,7 +25,7 @@ - + diff --git a/deployment-railway.html b/deployment-railway.html index 770bbb5ba0..727f06b74a 100644 --- a/deployment-railway.html +++ b/deployment-railway.html @@ -25,7 +25,7 @@ - + diff --git a/deployment-render.html b/deployment-render.html index 91b55546c4..1e0a2fe35d 100644 --- a/deployment-render.html +++ b/deployment-render.html @@ -25,7 +25,7 @@ - + diff --git a/deployment-wxo.html b/deployment-wxo.html index 2ceb60f10a..5a45110e5c 100644 --- a/deployment-wxo.html +++ b/deployment-wxo.html @@ -25,7 +25,7 @@ - + diff --git a/develop-application.html b/develop-application.html index a11de47248..ca38f1399f 100644 --- a/develop-application.html +++ b/develop-application.html @@ -25,7 +25,7 @@ - + diff --git a/dynamic-create-data.html b/dynamic-create-data.html index e08bbd0f3b..09fab7ab8f 100644 --- a/dynamic-create-data.html +++ b/dynamic-create-data.html @@ -25,7 +25,7 @@ - + diff --git a/enterprise-database-guide.html b/enterprise-database-guide.html index 3f533cfbf8..c31b6f6440 100644 --- a/enterprise-database-guide.html +++ b/enterprise-database-guide.html @@ -25,7 +25,7 @@ - + diff --git a/environment-variables.html b/environment-variables.html index e1ada3712a..be609f9a0b 100644 --- a/environment-variables.html +++ b/environment-variables.html @@ -25,7 +25,7 @@ - + diff --git a/extensions-manifest.html b/extensions-manifest.html index 511a8a511b..8be5c6c3cb 100644 --- a/extensions-manifest.html +++ b/extensions-manifest.html @@ -25,7 +25,7 @@ - + @@ -83,7 +83,11 @@

The loader and validator both emit typed errors keyed by the manifest field that triggered them. The full code list is at lfx.extension.errors.ERROR_CODES; the codes most relevant when authoring a manifest are:

CodeCause
manifest-invalidSchema validation failed; the message names the field.
manifest-not-foundNo extension.json and no [tool.langflow.extension] section at the extension root.
version-constraint-unsatisfiedlfx.compat does not include this Langflow's BUNDLE_​API_​VERSION.
field-deferred-in-this-milestoneA reserved field was set to a non-null value.
multi-bundle-deferred-in-this-milestonebundles has more than one entry.
path-escapeA bundles[].path resolves outside the manifest root (typically a symlink).
bundle-path-not-foundbundles[].path does not exist or is not a directory.

Run lfx extension validate <path> to see every error as a structured object with code, message, location, hint, and ref_url.

-

See also​