From ce59115b05840489a49c47f6b90562b281601f0d Mon Sep 17 00:00:00 2001 From: Santiago Gonzalez Date: Fri, 29 Nov 2024 16:02:15 -0500 Subject: [PATCH] Publish Docs Updates --- .vocs/search-index-36c68110.json | 2 +- apis/agora-api/index.html | 2 +- apis/boardroom-api/index.html | 2 +- apis/index.html | 2 +- apis/other-api-sources/index.html | 2 +- architecture/code-review/index.html | 2 +- architecture/index.html | 2 +- architecture/overview/index.html | 2 +- architecture/tech-stack/index.html | 2 +- assets/{agora-api-O7ygYgER.js => agora-api-D-QUJU2A.js} | 5 +++-- assets/{apis-QDwbfawa.js => apis-BdD40rOr.js} | 2 +- .../{architecture-CMLs3JHa.js => architecture-D2gP2OxN.js} | 2 +- .../{boardroom-api-D6RMY5FE.js => boardroom-api-DR_ey-kj.js} | 5 +---- assets/{cli-25jLkomP.js => cli-DnaBwwVZ.js} | 2 +- assets/{code-review-CcKvfVK9.js => code-review-5cWe1Nbr.js} | 2 +- ...tting-started-DOjqpcWh.js => getting-started-BxYi9NBE.js} | 2 +- assets/{index-_V-18SrM.js => index-D0ythbgN.js} | 2 +- assets/{index-DXqXtHau.js => index-VSbBw26D.js} | 2 +- ...efinition-BaamKtey.js => manifest-definition-DAZ1JnHf.js} | 2 +- ...de-deployment-Bs-gA8GX.js => node-deployment-CAmmDiDf.js} | 2 +- ...api-sources--zDi0222.js => other-api-sources-DaEQwlTX.js} | 2 +- ...providers-B8WmTDqK.js => other-llm-providers-BdtMvBoO.js} | 2 +- assets/{overview-DXI0Yf7z.js => overview-BWB8nuSk.js} | 2 +- assets/{overview-DW02L2el.js => overview-BtUem5Wu.js} | 2 +- assets/{reference-DVNLRTb2.js => reference-BDSmr8b3.js} | 2 +- ...le-manifests-BHPO8PSC.js => sample-manifests-D3T56Jyd.js} | 2 +- assets/{settings-DXgRaJT-.js => settings-CStiPj1M.js} | 2 +- assets/{setup-EvAnAtPX.js => setup-gfql-aPS.js} | 2 +- assets/{tech-stack-CUAjgFft.js => tech-stack-CTVSLlLa.js} | 2 +- cli/index.html | 2 +- cli/node-deployment/index.html | 2 +- cli/other-llm-providers/index.html | 2 +- cli/reference/index.html | 2 +- cli/settings/index.html | 2 +- cli/setup/index.html | 2 +- getting-started/index.html | 2 +- index.html | 2 +- manifest-definition/index.html | 2 +- manifest-definition/overview/index.html | 2 +- manifest-definition/sample-manifests/index.html | 2 +- 40 files changed, 42 insertions(+), 44 deletions(-) rename assets/{agora-api-O7ygYgER.js => agora-api-D-QUJU2A.js} (98%) rename assets/{apis-QDwbfawa.js => apis-BdD40rOr.js} (98%) rename assets/{architecture-CMLs3JHa.js => architecture-D2gP2OxN.js} (92%) rename assets/{boardroom-api-D6RMY5FE.js => boardroom-api-DR_ey-kj.js} (98%) rename assets/{cli-25jLkomP.js => cli-DnaBwwVZ.js} (94%) rename assets/{code-review-CcKvfVK9.js => code-review-5cWe1Nbr.js} (99%) rename assets/{getting-started-DOjqpcWh.js => getting-started-BxYi9NBE.js} (99%) rename assets/{index-_V-18SrM.js => index-D0ythbgN.js} (99%) rename assets/{index-DXqXtHau.js => index-VSbBw26D.js} (98%) rename assets/{manifest-definition-BaamKtey.js => manifest-definition-DAZ1JnHf.js} (92%) rename assets/{node-deployment-Bs-gA8GX.js => node-deployment-CAmmDiDf.js} (99%) rename assets/{other-api-sources--zDi0222.js => other-api-sources-DaEQwlTX.js} (98%) rename assets/{other-llm-providers-B8WmTDqK.js => other-llm-providers-BdtMvBoO.js} (99%) rename assets/{overview-DXI0Yf7z.js => overview-BWB8nuSk.js} (99%) rename assets/{overview-DW02L2el.js => overview-BtUem5Wu.js} (97%) rename assets/{reference-DVNLRTb2.js => reference-BDSmr8b3.js} (99%) rename assets/{sample-manifests-BHPO8PSC.js => sample-manifests-D3T56Jyd.js} (99%) rename assets/{settings-DXgRaJT-.js => settings-CStiPj1M.js} (99%) rename assets/{setup-EvAnAtPX.js => setup-gfql-aPS.js} (99%) rename assets/{tech-stack-CUAjgFft.js => tech-stack-CTVSLlLa.js} (99%) diff --git a/.vocs/search-index-36c68110.json b/.vocs/search-index-36c68110.json index 179b8c6..82b00e2 100644 --- a/.vocs/search-index-36c68110.json +++ b/.vocs/search-index-36c68110.json @@ -1 +1 @@ -{"documentCount":123,"nextId":123,"documentIds":{"0":"docs/pages/apis.mdx#api-examples","1":"docs/pages/apis.mdx#boardroom-governance-api","2":"docs/pages/apis.mdx#optimism-agora-api","3":"docs/pages/apis.mdx#working-with-other-apis","4":"docs/pages/architecture.mdx#rag-api-pipeline-architecture","5":"docs/pages/cli.mdx#rag-api-pipeline","6":"docs/pages/getting-started.mdx#gaia-rag-api-pipeline","7":"docs/pages/getting-started.mdx#system-requirements","8":"docs/pages/getting-started.mdx#setup-instructions","9":"docs/pages/getting-started.mdx#clone-this-repository","10":"docs/pages/getting-started.mdx#install-the-pipeline-cli","11":"docs/pages/getting-started.mdx#setup-the-pipeline-configuration","12":"docs/pages/getting-started.mdx#run-a-demo-rag-api-pipeline","13":"docs/pages/getting-started.mdx#define-your-own-api-pipeline-manifest","14":"docs/pages/getting-started.mdx#using-the-pipeline-cli","15":"docs/pages/getting-started.mdx#available-sub-commands","16":"docs/pages/manifest-definition.mdx#defining-the-api-pipeline-manifest","17":"docs/pages/apis/agora-api.mdx#optimism-agora-api","18":"docs/pages/apis/agora-api.mdx#pre-requisites","19":"docs/pages/apis/agora-api.mdx#getting-the-agora-api-openapi-spec","20":"docs/pages/apis/agora-api.mdx#defining-the-rag-api-pipeline-manifest","21":"docs/pages/apis/agora-api.mdx#basic-configuration","22":"docs/pages/apis/agora-api.mdx#connector-specification","23":"docs/pages/apis/agora-api.mdx#api-request-configuration","24":"docs/pages/apis/agora-api.mdx#record-selection-and-pagination","25":"docs/pages/apis/agora-api.mdx#endpoint-configuration","26":"docs/pages/apis/agora-api.mdx#using-the-rag-pipeline-to-generate-a-knowledge-base-for-the-op-collective","27":"docs/pages/apis/agora-api.mdx#rag-pipeline-cli","28":"docs/pages/apis/agora-api.mdx#import-the-kb-snapshot-into-a-gaia-node","29":"docs/pages/apis/boardroom-api.mdx#boardroom-governance-api","30":"docs/pages/apis/boardroom-api.mdx#pre-requisites","31":"docs/pages/apis/boardroom-api.mdx#getting-the-boardroom-api-openapi-spec","32":"docs/pages/apis/boardroom-api.mdx#defining-the-rag-api-pipeline-manifest","33":"docs/pages/apis/boardroom-api.mdx#basic-configuration","34":"docs/pages/apis/boardroom-api.mdx#connector-specification","35":"docs/pages/apis/boardroom-api.mdx#api-request-configuration","36":"docs/pages/apis/boardroom-api.mdx#record-selection-and-pagination","37":"docs/pages/apis/boardroom-api.mdx#endpoint-configuration","38":"docs/pages/apis/boardroom-api.mdx#schema-definitions","39":"docs/pages/apis/boardroom-api.mdx#chunking-parameters","40":"docs/pages/apis/boardroom-api.mdx#using-the-rag-pipeline-to-generate-a-knowledge-base-for-aave","41":"docs/pages/apis/boardroom-api.mdx#rag-pipeline-cli","42":"docs/pages/apis/boardroom-api.mdx#import-the-kb-snapshot-into-a-gaia-node","43":"docs/pages/apis/boardroom-api.mdx#example-user-prompts","44":"docs/pages/apis/boardroom-api.mdx#customizing-for-other-daos","45":"docs/pages/apis/other-api-sources.mdx#working-with-other-api-sources-","46":"docs/pages/apis/other-api-sources.mdx#where-to-find-great-apis","47":"docs/pages/apis/other-api-sources.mdx#public-api-collections","48":"docs/pages/apis/other-api-sources.mdx#integration-guide-its-easy","49":"docs/pages/apis/other-api-sources.mdx#1-gather-documentation","50":"docs/pages/apis/other-api-sources.mdx#2-schema-setup","51":"docs/pages/apis/other-api-sources.mdx#3-define-the-rag-api-pipeline-manifest","52":"docs/pages/apis/other-api-sources.mdx#4-test-and-deploy","53":"docs/pages/architecture/code-review.mdx#in-depth-source-code-review","54":"docs/pages/architecture/code-review.mdx#data-flow-overview","55":"docs/pages/architecture/code-review.mdx#pipeline-components","56":"docs/pages/architecture/code-review.mdx#cli-entrypoint-source","57":"docs/pages/architecture/code-review.mdx#api-loader-source","58":"docs/pages/architecture/code-review.mdx#input-module-source","59":"docs/pages/architecture/code-review.mdx#rag-pipeline-source","60":"docs/pages/architecture/code-review.mdx#output-module-source","61":"docs/pages/architecture/overview.mdx#architecture-overview","62":"docs/pages/architecture/tech-stack.mdx#tech-stack","63":"docs/pages/architecture/tech-stack.mdx#tools--frameworks","64":"docs/pages/architecture/tech-stack.mdx#1-rag-pipeline-over-data-stream-pathway-docs","65":"docs/pages/architecture/tech-stack.mdx#getting-started","66":"docs/pages/architecture/tech-stack.mdx#DuckDBCache","67":"docs/pages/architecture/tech-stack.mdx#4-data-partitioning-and-chunking-unstructured-open-source-docs","68":"docs/pages/architecture/tech-stack.mdx#5-feature-embedding-generation","69":"docs/pages/architecture/tech-stack.mdx#6-vector-embeddings-database-snapshot-qdrantdb-docs","70":"docs/pages/cli/node-deployment.mdx#rag-api-pipeline-x-gaia-node","71":"docs/pages/cli/node-deployment.mdx#quick-start-guide","72":"docs/pages/cli/node-deployment.mdx#deploying-your-gaia-node-in-embeddings-running-mode-️recommended","73":"docs/pages/cli/node-deployment.mdx#selecting-a-knowledge-base-and-custom-prompts-for-your-gaia-node","74":"docs/pages/cli/node-deployment.mdx#recommended-gaia-node-configuration","75":"docs/pages/cli/other-llm-providers.mdx#supported-llm-providers","76":"docs/pages/cli/other-llm-providers.mdx#openai","77":"docs/pages/cli/other-llm-providers.mdx#ollama","78":"docs/pages/cli/other-llm-providers.mdx#getting-ollama","79":"docs/pages/cli/other-llm-providers.mdx#importing-an-embeddings-model-in-ollama","80":"docs/pages/cli/other-llm-providers.mdx#using-the-cli-setup-wizard","81":"docs/pages/cli/other-llm-providers.mdx#manually-importing-a-model","82":"docs/pages/cli/reference.mdx#rag-api-pipeline-cli-reference-documentation","83":"docs/pages/cli/reference.mdx#overview","84":"docs/pages/cli/reference.mdx#installation","85":"docs/pages/cli/reference.mdx#usage","86":"docs/pages/cli/reference.mdx#setup","87":"docs/pages/cli/reference.mdx#options","88":"docs/pages/cli/reference.mdx#run","89":"docs/pages/cli/reference.mdx#global-options","90":"docs/pages/cli/reference.mdx#pipeline-commands","91":"docs/pages/cli/reference.mdx#run-all","92":"docs/pages/cli/reference.mdx#arguments","93":"docs/pages/cli/reference.mdx#options-1","94":"docs/pages/cli/reference.mdx#run-from-normalized","95":"docs/pages/cli/reference.mdx#arguments-1","96":"docs/pages/cli/reference.mdx#options-2","97":"docs/pages/cli/reference.mdx#run-from-chunked","98":"docs/pages/cli/reference.mdx#arguments-2","99":"docs/pages/cli/reference.mdx#options-3","100":"docs/pages/cli/reference.mdx#examples","101":"docs/pages/cli/reference.mdx#cli-outputs","102":"docs/pages/cli/settings.mdx#customizing-the-pipeline-config-settings","103":"docs/pages/cli/settings.mdx#environment-variables","104":"docs/pages/cli/setup.mdx#rag-api-pipeline---setup","105":"docs/pages/manifest-definition/overview.mdx#api-pipeline-manifest---overview","106":"docs/pages/manifest-definition/overview.mdx#rag-api-pipeline-manifest---schema-definition","107":"docs/pages/manifest-definition/overview.mdx#api_name","108":"docs/pages/manifest-definition/overview.mdx#api_parameters","109":"docs/pages/manifest-definition/overview.mdx#api_config","110":"docs/pages/manifest-definition/overview.mdx#chunking_params","111":"docs/pages/manifest-definition/overview.mdx#airbyte-connector-definitions","112":"docs/pages/manifest-definition/overview.mdx#spec","113":"docs/pages/manifest-definition/overview.mdx#selector","114":"docs/pages/manifest-definition/overview.mdx#requester_base","115":"docs/pages/manifest-definition/overview.mdx#paginator","116":"docs/pages/manifest-definition/overview.mdx#retriever_base","117":"docs/pages/manifest-definition/overview.mdx#api-endpoints-definitions","118":"docs/pages/manifest-definition/overview.mdx#schemas","119":"docs/pages/manifest-definition/overview.mdx#textschemas","120":"docs/pages/manifest-definition/sample-manifests.mdx#sample-api-pipeline-manifests","121":"docs/pages/manifest-definition/sample-manifests.mdx#boardroom-governance-api","122":"docs/pages/manifest-definition/sample-manifests.mdx#optimism-agora-api"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[2,1,57],"1":[3,2,52],"2":[3,2,52],"3":[4,2,19],"4":[4,1,30],"5":[3,1,42],"6":[4,1,85],"7":[2,4,48],"8":[2,4,1],"9":[3,6,20],"10":[4,6,33],"11":[4,6,35],"12":[6,4,81],"13":[6,4,51],"14":[4,4,53],"15":[3,7,41],"16":[5,1,26],"17":[3,1,26],"18":[2,3,49],"19":[6,3,2],"20":[6,3,26],"21":[2,8,27],"22":[2,8,60],"23":[3,8,47],"24":[4,8,54],"25":[2,8,22],"26":[12,3,1],"27":[3,15,39],"28":[8,15,40],"29":[3,1,29],"30":[2,3,49],"31":[6,3,2],"32":[6,3,30],"33":[2,8,50],"34":[2,8,78],"35":[3,8,49],"36":[4,8,52],"37":[2,8,35],"38":[2,8,96],"39":[2,8,41],"40":[11,3,1],"41":[3,14,47],"42":[8,14,84],"43":[3,14,26],"44":[4,14,26],"45":[6,1,23],"46":[5,6,1],"47":[3,11,16],"48":[7,6,1],"49":[3,13,15],"50":[3,13,33],"51":[7,13,23],"52":[4,13,91],"53":[5,1,62],"54":[3,5,114],"55":[2,5,1],"56":[3,7,24],"57":[3,7,70],"58":[3,7,31],"59":[3,7,75],"60":[3,7,35],"61":[2,1,135],"62":[2,1,17],"63":[3,2,1],"64":[8,5,42],"65":[9,5,31],"66":[5,5,48],"67":[9,5,42],"68":[5,5,61],"69":[7,5,40],"70":[6,1,1],"71":[3,6,25],"72":[10,6,95],"73":[11,6,38],"74":[4,6,202],"75":[3,1,51],"76":[1,3,77],"77":[1,3,51],"78":[2,4,9],"79":[6,4,1],"80":[5,4,108],"81":[4,4,45],"82":[6,1,1],"83":[1,6,30],"84":[1,6,56],"85":[1,6,37],"86":[1,7,34],"87":[1,7,27],"88":[1,7,36],"89":[2,7,10],"90":[2,6,55],"91":[2,7,71],"92":[1,9,21],"93":[1,9,49],"94":[3,7,46],"95":[1,10,12],"96":[1,10,10],"97":[3,7,46],"98":[1,10,16],"99":[1,10,10],"100":[1,6,32],"101":[2,6,104],"102":[5,1,31],"103":[2,5,200],"104":[4,1,299],"105":[4,1,76],"106":[6,4,18],"107":[2,7,8],"108":[2,7,31],"109":[2,7,40],"110":[2,7,53],"111":[3,7,10],"112":[1,10,25],"113":[1,10,39],"114":[2,10,40],"115":[1,10,31],"116":[2,10,41],"117":[3,7,95],"118":[1,7,50],"119":[1,7,46],"120":[4,1,37],"121":[3,4,265],"122":[3,4,609]},"averageFieldLength":[3.528455284552845,6.008130081300813,51.18699186991871],"storedFields":{"0":{"href":"/apis#api-examples","html":"\n

The repository already includes a few API pipeline manifest definitions that showcase how to use the rag-api-pipeline for generating knowledge bases from REST APIs.\nEach example demonstrates how to define a YAML manifest for extracting data from target API endpoints using different Authentication/Pagination strategies.\nFor a more in-depth review of how to build a manifest for creating a RAG pipeline for your own API, remember to visit Defining the API Pipeline Manifest section.

\n","isPage":true,"text":"\nThe repository already includes a few API pipeline manifest definitions that showcase how to use the rag-api-pipeline for generating knowledge bases from REST APIs.\nEach example demonstrates how to define a YAML manifest for extracting data from target API endpoints using different Authentication/Pagination strategies.\nFor a more in-depth review of how to build a manifest for creating a RAG pipeline for your own API, remember to visit Defining the API Pipeline Manifest section.\n","title":"API Examples","titles":[]},"1":{"href":"/apis#boardroom-governance-api","html":"\n

Boardroom offers its Boardrooms Governance API to provide comprehensive data on 350+ DAOs across chains. It offers endpoints that fetch information about proposals, delegates, discussions, and much more. You can find the complete API documentation at this link.

\n

Check the Boardroom API section for details on how to extract data from the API and generate a knowledge base from the DAO of your interest.

\n","isPage":false,"text":"\nBoardroom offers its Boardrooms Governance API to provide comprehensive data on 350+ DAOs across chains. It offers endpoints that fetch information about proposals, delegates, discussions, and much more. You can find the complete API documentation at this link.\nCheck the Boardroom API section for details on how to extract data from the API and generate a knowledge base from the DAO of your interest.\n","title":"Boardroom Governance API","titles":["API Examples"]},"2":{"href":"/apis#optimism-agora-api","html":"\n

The Agora OP API provides various endpoints to interact with the OP Collective platform, focusing on RetroPGF (Retroactive Public Goods Funding) for Optimism. A comprehensive guide to the API endpoints, categorized by functionality, can be found at this link.

\n

Check the Agora API section for details on how to extract data from the API and generate a knowledge base related to RetroPGF projects and proposals within the OP collective.

\n","isPage":false,"text":"\nThe Agora OP API provides various endpoints to interact with the OP Collective platform, focusing on RetroPGF (Retroactive Public Goods Funding) for Optimism. A comprehensive guide to the API endpoints, categorized by functionality, can be found at this link.\nCheck the Agora API section for details on how to extract data from the API and generate a knowledge base related to RetroPGF projects and proposals within the OP collective.\n","title":"Optimism Agora API","titles":["API Examples"]},"3":{"href":"/apis#working-with-other-apis","html":"\n

If you are interested in working with any other API, visit the Other API Sources section to get started.

","isPage":false,"text":"\nIf you are interested in working with any other API, visit the Other API Sources section to get started.","title":"Working with Other APIs","titles":["API Examples"]},"4":{"href":"/architecture#rag-api-pipeline-architecture","html":"\n

The next sections are more developer-focused with the aim to be a helpful resource to quickly understand the pipeline architecture, the tech stack being used\nand how it works under the hood.

","isPage":true,"text":"\nThe next sections are more developer-focused with the aim to be a helpful resource to quickly understand the pipeline architecture, the tech stack being used\nand how it works under the hood.","title":"RAG API Pipeline Architecture","titles":[]},"5":{"href":"/cli#rag-api-pipeline","html":"\n

The following sections cover all things related to the RAG API Pipeline Command-line interface (CLI) tool:

\n","isPage":true,"text":"\nThe following sections cover all things related to the RAG API Pipeline Command-line interface (CLI) tool:\n\nPipeline initialization and the Setup Wizard.\nCLI Reference documentation.\nRAG API Pipeline Advanced settings.\nA User Guide on how to spin up and connect to a Gaia node.\nSupport for other LLM providers.\n","title":"RAG API Pipeline","titles":[]},"6":{"href":"/getting-started#gaia-rag-api-pipeline","html":"\n

rag-api-pipeline is a Python-based data pipeline tool that allows you to easily generate a vector knowledge base from any REST API data source. The\nresulting database snapshot can then be plugged into a Gaia node's LLM model with a prompt and provide contextual responses to user queries using RAG\n(Retrieval Augmented Generation).

\n

The following sections help you quickly set up and execute the pipeline on your REST API. If you're looking for more in-depth information about how to use\nthis tool, the tech stack and/or how it works under the hood, check the content menu on the left.

\n","isPage":true,"text":"\nrag-api-pipeline is a Python-based data pipeline tool that allows you to easily generate a vector knowledge base from any REST API data source. The\nresulting database snapshot can then be plugged into a Gaia node's LLM model with a prompt and provide contextual responses to user queries using RAG\n(Retrieval Augmented Generation).\nThe following sections help you quickly set up and execute the pipeline on your REST API. If you're looking for more in-depth information about how to use\nthis tool, the tech stack and/or how it works under the hood, check the content menu on the left.\n","title":"Gaia RAG API Pipeline","titles":[]},"7":{"href":"/getting-started#system-requirements","html":"\n\n","isPage":false,"text":"\n\nPython 3.11.x\nPoetry (Docs)\n\n(Optional): a Python virtual environment manager of your preference (e.g. conda, venv)\n\n\nQdrant vector database (Docs)\n\n(Optional): Docker to spin up a local container\n\n\nLLM model provider (e.g. spin up your own Gaia node or pick one from the Gaia public network)\n\nAn Embeddings model (e.g. Nomic-embed-text-v1.5)\n\n\n\n","title":"System Requirements","titles":["Gaia RAG API Pipeline"]},"8":{"href":"/getting-started#setup-instructions","html":"\n
","isPage":false,"text":"\n","title":"Setup Instructions","titles":["Gaia RAG API Pipeline"]},"9":{"href":"/getting-started#clone-this-repository","html":"

Git clone or download this repository to your local machine.

git clone https://github.com/raid-guild/gaianet-rag-api-pipeline.git
","isPage":false,"text":"Git clone or download this repository to your local machine.git clone https://github.com/raid-guild/gaianet-rag-api-pipeline.git","title":"Clone this repository","titles":["Gaia RAG API Pipeline","Setup Instructions"]},"10":{"href":"/getting-started#install-the-pipeline-cli","html":"

It is recommended to activate your own virtual environment.\nThen, navigate to the directory where this repository was cloned/download and execute the following command to install the rag-api-pipeline CLI:

cd gaianet-rag-api-pipeline\npip install -e .
","isPage":false,"text":"It is recommended to activate your own virtual environment.\nThen, navigate to the directory where this repository was cloned/download and execute the following command to install the rag-api-pipeline CLI:cd gaianet-rag-api-pipeline\npip install -e .","title":"Install the Pipeline CLI","titles":["Gaia RAG API Pipeline","Setup Instructions"]},"11":{"href":"/getting-started#setup-the-pipeline-configuration","html":"

Run the following command to start the pipeline setup wizard. You can use the default configuration settings or customize it for your specific needs.\nCheck the CLI Reference page for more details:

rag-api-pipeline setup
\n

Visit the Setup Wizard page for more information.

\n","isPage":false,"text":"Run the following command to start the pipeline setup wizard. You can use the default configuration settings or customize it for your specific needs.\nCheck the CLI Reference page for more details:rag-api-pipeline setup\nVisit the Setup Wizard page for more information.\n","title":"Setup the Pipeline Configuration","titles":["Gaia RAG API Pipeline","Setup Instructions"]},"12":{"href":"/getting-started#run-a-demo-rag-api-pipeline","html":"\n

A quick demo that extracts data from the Boardroom API can be executed by running the following command:

\n
rag-api-pipeline run all config/boardroom_api_pipeline.yaml config/boardroom_openapi.yaml
\n

You are required two specify two main arguments to the pipeline:

\n\n

Once the pipeline execution is completed, you'll find the vector database snapshot and extracted/processed datasets under the output/molochdao_boardroom_api folder.

\n","isPage":false,"text":"\nA quick demo that extracts data from the Boardroom API can be executed by running the following command:\nrag-api-pipeline run all config/boardroom_api_pipeline.yaml config/boardroom_openapi.yaml\nYou are required two specify two main arguments to the pipeline:\n\nThe path to the OpenAPI specification file (e.g. config/boardroom_openapi.yaml): the OpenAPI spec for the REST API data source\nyou're looking to extract data from.\nThe path to the API pipeline manifest file (e.g. config/boardroom_api_pipeline.yaml): a YAML file that defines API endpoints you're\nlooking to extract data from, among other parameters (more details in the next section).\n\nOnce the pipeline execution is completed, you'll find the vector database snapshot and extracted/processed datasets under the output/molochdao_boardroom_api folder.\n","title":"Run a demo RAG API pipeline","titles":["Gaia RAG API Pipeline"]},"13":{"href":"/getting-started#define-your-own-api-pipeline-manifest","html":"\n

Now it's time to define the pipeline manifest for the REST API you're looking to extract data from. Make sure you get the OpenAPI specification\nfor the API you're targeting. Check the\nDefining an API Pipeline Manifest page for details on how to get the OpenAPI spec and define an API pipeline manifest,\nor take a look at the in-depth review of the sample manifests available in the API Examples section.

\n","isPage":false,"text":"\nNow it's time to define the pipeline manifest for the REST API you're looking to extract data from. Make sure you get the OpenAPI specification\nfor the API you're targeting. Check the\nDefining an API Pipeline Manifest page for details on how to get the OpenAPI spec and define an API pipeline manifest,\nor take a look at the in-depth review of the sample manifests available in the API Examples section.\n","title":"Define your own API Pipeline manifest","titles":["Gaia RAG API Pipeline"]},"14":{"href":"/getting-started#using-the-pipeline-cli","html":"\n

Once you have both the API pipeline manifest and OpenAPI spec files, you're ready to start using the rag-api-pipeline run command to execute different tasks of the RAG pipeline,\nfrom extracting data from an API source to generating vector embeddings and a database snapshot. If you need more details about the parameters available\non each task you can execute:

\n
rag-api-pipeline run <command> --help
\n","isPage":false,"text":"\nOnce you have both the API pipeline manifest and OpenAPI spec files, you're ready to start using the rag-api-pipeline run command to execute different tasks of the RAG pipeline,\nfrom extracting data from an API source to generating vector embeddings and a database snapshot. If you need more details about the parameters available\non each task you can execute:\nrag-api-pipeline run <command> --help\n","title":"Using the Pipeline CLI","titles":["Gaia RAG API Pipeline"]},"15":{"href":"/getting-started#available-sub-commands","html":"\n

Below is the list of available commands. Check the CLI Reference documentation for more details:

\n
# run the entire pipeline\nrag-api-pipeline run all <API_MANIFEST_FILE> <OPENAPI_SPEC_FILE> [--full-refresh]\n# or run using an already normalized dataset\nrag-api-pipeline run from-normalized <API_MANIFEST_FILE> --normalized-data-file <jsonl-file>\n# or run using an already chunked dataset\nrag-api-pipeline run from-chunked <API_MANIFEST_FILE> --chunked-data-file <jsonl-file>
","isPage":false,"text":"\nBelow is the list of available commands. Check the CLI Reference documentation for more details:\n# run the entire pipeline\nrag-api-pipeline run all <API_MANIFEST_FILE> <OPENAPI_SPEC_FILE> [--full-refresh]\n# or run using an already normalized dataset\nrag-api-pipeline run from-normalized <API_MANIFEST_FILE> --normalized-data-file <jsonl-file>\n# or run using an already chunked dataset\nrag-api-pipeline run from-chunked <API_MANIFEST_FILE> --chunked-data-file <jsonl-file>","title":"Available sub-commands","titles":["Gaia RAG API Pipeline","Using the Pipeline CLI"]},"16":{"href":"/manifest-definition#defining-the-api-pipeline-manifest","html":"\n

In the following sections you'll learn how to define your own API pipeline manifest for any REST API you're targeting for extracting a knowledge base.

","isPage":true,"text":"\nIn the following sections you'll learn how to define your own API pipeline manifest for any REST API you're targeting for extracting a knowledge base.","title":"Defining the API Pipeline Manifest","titles":[]},"17":{"href":"/apis/agora-api#optimism-agora-api","html":"\n

This repository contains the OpenAPI specification and API pipeline manifest needed to create a RAG pipeline.\nThis pipeline generates a knowledge base from RetroPGF projects and proposals within the OP collective.

\n","isPage":true,"text":"\nThis repository contains the OpenAPI specification and API pipeline manifest needed to create a RAG pipeline.\nThis pipeline generates a knowledge base from RetroPGF projects and proposals within the OP collective.\n","title":"Optimism Agora API","titles":[]},"18":{"href":"/apis/agora-api#pre-requisites","html":"\n

To access this API, you'll need an API key. You can request one through the Agora's Discord server. You can run the rag-api-pipeline setup command to set the REST API Key,\nor your can directly store the key in the config/secrets/api-key file. A less secure option is to provide it using the --api-key CLI argument.

\n","isPage":false,"text":"\nTo access this API, you'll need an API key. You can request one through the Agora's Discord server. You can run the rag-api-pipeline setup command to set the REST API Key,\nor your can directly store the key in the config/secrets/api-key file. A less secure option is to provide it using the --api-key CLI argument.\n","title":"Pre-requisites","titles":["Optimism Agora API"]},"19":{"href":"/apis/agora-api#getting-the-agora-api-openapi-spec","html":"\n

TODO:

\n","isPage":false,"text":"\nTODO:\n","title":"Getting the Agora API OpenAPI Spec","titles":["Optimism Agora API"]},"20":{"href":"/apis/agora-api#defining-the-rag-api-pipeline-manifest","html":"\n

This pipeline will extract data related to DAO proposals (/proposals) and RetroPGF projects (/projects).\nNext, you can find an overview of the main sections in the API pipeline manifest.

\n","isPage":false,"text":"\nThis pipeline will extract data related to DAO proposals (/proposals) and RetroPGF projects (/projects).\nNext, you can find an overview of the main sections in the API pipeline manifest.\n","title":"Defining the RAG API Pipeline Manifest","titles":["Optimism Agora API"]},"21":{"href":"/apis/agora-api#basic-configuration","html":"\n

Since no api_parameters are required, this section remains empty.

\n
api_name: "optimism_agora_api"\n \napi_parameters:\n \napi_config:\n  request_method: "get"\n  content_type: "application/json"\n  response_entrypoint_field: "data"
\n","isPage":false,"text":"\nSince no api_parameters are required, this section remains empty.\napi_name: "optimism_agora_api"\n \napi_parameters:\n \napi_config:\n request_method: "get"\n content_type: "application/json"\n response_entrypoint_field: "data"\n","title":"Basic Configuration","titles":["Optimism Agora API","Defining the RAG API Pipeline Manifest"]},"22":{"href":"/apis/agora-api#connector-specification","html":"\n

The manifest then defines some metadata and the request parameters needed for making calls to the API. In this case, it only needs an api_key\nparameter for authentication:

\n
spec:\n  connection_specification:\n    $schema: http://json-schema.org/draft-07/schema#\n    additionalProperties: true\n    properties:\n      api_key:\n        airbyte-secret: true\n        description: Agora API Key.\n        type: string\n    required:\n    - api_key\n    title: Agora API Spec\n    type: object\n  documentation_url: https://docs.airbyte.com/integrations/sources/agora\n  type: Spec
\n","isPage":false,"text":"\nThe manifest then defines some metadata and the request parameters needed for making calls to the API. In this case, it only needs an api_key\nparameter for authentication:\nspec:\n connection_specification:\n $schema: http://json-schema.org/draft-07/schema#\n additionalProperties: true\n properties:\n api_key:\n airbyte-secret: true\n description: Agora API Key.\n type: string\n required:\n - api_key\n title: Agora API Spec\n type: object\n documentation_url: https://docs.airbyte.com/integrations/sources/agora\n type: Spec\n","title":"Connector Specification","titles":["Optimism Agora API","Defining the RAG API Pipeline Manifest"]},"23":{"href":"/apis/agora-api#api-request-configuration","html":"\n

Below is the requester_base definition. The API implements a BearerAuthenticator schema and retrieves the api_token from the config object:

\n
definition:\n  requester_base:\n    type: HttpRequester\n    url_base: "https://vote.optimism.io/api/v1"\n    http_method: "GET"\n    authenticator: # Details at https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/authentication\n      type: BearerAuthenticator\n      api_token: "{{ config['api_key'] }}"
\n","isPage":false,"text":"\nBelow is the requester_base definition. The API implements a BearerAuthenticator schema and retrieves the api_token from the config object:\ndefinition:\n requester_base:\n type: HttpRequester\n url_base: "https://vote.optimism.io/api/v1"\n http_method: "GET"\n authenticator: # Details at https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/authentication\n type: BearerAuthenticator\n api_token: "{{ config['api_key'] }}"\n","title":"API Request Configuration","titles":["Optimism Agora API","Defining the RAG API Pipeline Manifest"]},"24":{"href":"/apis/agora-api#record-selection-and-pagination","html":"\n

The API uses an Offset-based pagination strategy. The page_size is set to 50, while offset and limit parameters are dynamically inserted into the URL as request parameters:

\n
definition:\n  paginator: # Details at https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/pagination\n    type: DefaultPaginator\n    pagination_strategy: # Details at https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/pagination#offset-increment\n      type: "OffsetIncrement"\n      page_size: 50\n    page_token_option:\n      type: "RequestOption"\n      field_name: "offset"\n      inject_into: "request_parameter"\n    page_size_option:\n      type: "RequestOption"\n      inject_into: "request_parameter"\n      field_name: "limit"
\n","isPage":false,"text":"\nThe API uses an Offset-based pagination strategy. The page_size is set to 50, while offset and limit parameters are dynamically inserted into the URL as request parameters:\ndefinition:\n paginator: # Details at https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/pagination\n type: DefaultPaginator\n pagination_strategy: # Details at https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/pagination#offset-increment\n type: "OffsetIncrement"\n page_size: 50\n page_token_option:\n type: "RequestOption"\n field_name: "offset"\n inject_into: "request_parameter"\n page_size_option:\n type: "RequestOption"\n inject_into: "request_parameter"\n field_name: "limit"\n","title":"Record Selection and Pagination","titles":["Optimism Agora API","Defining the RAG API Pipeline Manifest"]},"25":{"href":"/apis/agora-api#endpoint-configuration","html":"\n

Below are the target endpoints with their respective schemas:

\n
endpoints:\n  /proposals:\n    id: "proposals"\n    primary_key: "id"\n    responseSchema: "#/schemas/Proposal"\n    textSchema:\n      $ref: "#/textSchemas/Proposal"\n  /projects:\n    id: "projects"\n    primary_key: "id"\n    responseSchema: "#/schemas/Project"\n    textSchema:\n      $ref: "#/textSchemas/Project"
\n","isPage":false,"text":"\nBelow are the target endpoints with their respective schemas:\nendpoints:\n /proposals:\n id: "proposals"\n primary_key: "id"\n responseSchema: "#/schemas/Proposal"\n textSchema:\n $ref: "#/textSchemas/Proposal"\n /projects:\n id: "projects"\n primary_key: "id"\n responseSchema: "#/schemas/Project"\n textSchema:\n $ref: "#/textSchemas/Project"\n","title":"Endpoint Configuration","titles":["Optimism Agora API","Defining the RAG API Pipeline Manifest"]},"26":{"href":"/apis/agora-api#using-the-rag-pipeline-to-generate-a-knowledge-base-for-the-op-collective","html":"\n","isPage":false,"text":"\n","title":"Using the RAG Pipeline to generate a Knowledge Base for the OP Collective","titles":["Optimism Agora API"]},"27":{"href":"/apis/agora-api#rag-pipeline-cli","html":"\n
    \n
  1. Make sure to setup the pipeline initial settings by running the rag-api-pipeline setup command.
  2. \n
  3. Execute the following command:
  4. \n
\n
rag-api-pipeline run all config/agora_api_pipeline.yaml config/agora_openapi.yaml
\n

After execution, you'll find the processed data and compressed knowledge base snapshot in the output/optimism_agora_api folder.

\n","isPage":false,"text":"\n\nMake sure to setup the pipeline initial settings by running the rag-api-pipeline setup command.\nExecute the following command:\n\nrag-api-pipeline run all config/agora_api_pipeline.yaml config/agora_openapi.yaml\nAfter execution, you'll find the processed data and compressed knowledge base snapshot in the output/optimism_agora_api folder.\n","title":"RAG Pipeline CLI","titles":["Optimism Agora API","Using the RAG Pipeline to generate a Knowledge Base for the OP Collective"]},"28":{"href":"/apis/agora-api#import-the-kb-snapshot-into-a-gaia-node","html":"\n
    \n
  1. Locate the generated snapshot in output/optimism_agora_api/ (named optimism_agora_api_collection-xxxxxxxxxxxxxxxx-yyyy-mm-dd-hh-mm-ss.snapshot.tar.gz) or download it from the HuggingFace link above.
  2. \n
  3. Follow the official knowledge base selection guide
  4. \n
  5. Configure your node using the recommended settings from the node deployment guide
  6. \n
","isPage":false,"text":"\n\nLocate the generated snapshot in output/optimism_agora_api/ (named optimism_agora_api_collection-xxxxxxxxxxxxxxxx-yyyy-mm-dd-hh-mm-ss.snapshot.tar.gz) or download it from the HuggingFace link above.\nFollow the official knowledge base selection guide\nConfigure your node using the recommended settings from the node deployment guide\n","title":"Import the KB Snapshot into a Gaia Node","titles":["Optimism Agora API","Using the RAG Pipeline to generate a Knowledge Base for the OP Collective"]},"29":{"href":"/apis/boardroom-api#boardroom-governance-api","html":"\n

The repository already contains the OpenAPI specification and the API pipeline manifest needed to create a RAG API pipeline.\nThis pipeline generates a knowledge base from any DAO/Protocol hosted by the Boardroom Governance API.

\n","isPage":true,"text":"\nThe repository already contains the OpenAPI specification and the API pipeline manifest needed to create a RAG API pipeline.\nThis pipeline generates a knowledge base from any DAO/Protocol hosted by the Boardroom Governance API.\n","title":"Boardroom Governance API","titles":[]},"30":{"href":"/apis/boardroom-api#pre-requisites","html":"\n

To use this API, you'll need an API key. Request one from Boardroom's developer portal. You can run the rag-api-pipeline setup command to set the REST API Key,\nor your can directly store the key in the config/secrets/api-key file. A less secure option is to provide it using the --api-key CLI argument.

\n","isPage":false,"text":"\nTo use this API, you'll need an API key. Request one from Boardroom's developer portal. You can run the rag-api-pipeline setup command to set the REST API Key,\nor your can directly store the key in the config/secrets/api-key file. A less secure option is to provide it using the --api-key CLI argument.\n","title":"Pre-requisites","titles":["Boardroom Governance API"]},"31":{"href":"/apis/boardroom-api#getting-the-boardroom-api-openapi-spec","html":"\n

TODO:

\n","isPage":false,"text":"\nTODO:\n","title":"Getting the Boardroom API OpenAPI Spec","titles":["Boardroom Governance API"]},"32":{"href":"/apis/boardroom-api#defining-the-rag-api-pipeline-manifest","html":"\n

This pipeline will extract data related to protocol metadata (/protocols/aave), DAO proposals (/protocols/aave/proposals) and discussion posts from the Discourse forum site (discourseTopics, discourseCategories and discourseTopicPosts) if there's any.

\n","isPage":false,"text":"\nThis pipeline will extract data related to protocol metadata (/protocols/aave), DAO proposals (/protocols/aave/proposals) and discussion posts from the Discourse forum site (discourseTopics, discourseCategories and discourseTopicPosts) if there's any.\n","title":"Defining the RAG API Pipeline Manifest","titles":["Boardroom Governance API"]},"33":{"href":"/apis/boardroom-api#basic-configuration","html":"\n

The manifest starts by defining the API name, parameters and requests settings. You can visit this link to get the list of all DAO protocols in Boardroom. This example focuses on the Aave Governance DAO:

\n
api_name: "aave_boardroom_api"\n \napi_parameters:\n  cname: "aave"\n  protocol: "aave"\n \napi_config:\n  request_method: "get"\n  content_type: "application/json"\n  response_entrypoint_field: "data"
\n","isPage":false,"text":"\nThe manifest starts by defining the API name, parameters and requests settings. You can visit this link to get the list of all DAO protocols in Boardroom. This example focuses on the Aave Governance DAO:\napi_name: "aave_boardroom_api"\n \napi_parameters:\n cname: "aave"\n protocol: "aave"\n \napi_config:\n request_method: "get"\n content_type: "application/json"\n response_entrypoint_field: "data"\n","title":"Basic Configuration","titles":["Boardroom Governance API","Defining the RAG API Pipeline Manifest"]},"34":{"href":"/apis/boardroom-api#connector-specification","html":"\n

The manifest then defines some metadata and the request parameters needed for making calls to the API:

\n
spec:\n  type: Spec\n  documentation_url: https://docs.airbyte.com/integrations/sources/boardroom\n  connection_specification:\n    $schema: http://json-schema.org/draft-07/schema#\n    title: Boardroom API Spec\n    type: object\n    required:\n      - api_key\n      - cname\n      - protocol\n    additionalProperties: true\n    properties:\n      api_key:\n        type: string\n        description: "Boardroom API Key. See <a href='https://docs.boardroom.io/docs/api/05c1fb6d88a07-governance-api'>here</a> for details."\n        airbyte-secret: true\n      cname:\n        type: string\n        description: "Protocol ID a.k.a cname"\n        examples:\n          - aave\n          - hopprotocol\n      protocol:\n        type: string\n        description: "Alias for cname. Required for endpoints using 'protocol' as parameter ID"\n        examples:\n          - aave\n          - metacartel
\n","isPage":false,"text":"\nThe manifest then defines some metadata and the request parameters needed for making calls to the API:\nspec:\n type: Spec\n documentation_url: https://docs.airbyte.com/integrations/sources/boardroom\n connection_specification:\n $schema: http://json-schema.org/draft-07/schema#\n title: Boardroom API Spec\n type: object\n required:\n - api_key\n - cname\n - protocol\n additionalProperties: true\n properties:\n api_key:\n type: string\n description: "Boardroom API Key. See <a href='https://docs.boardroom.io/docs/api/05c1fb6d88a07-governance-api'>here</a> for details."\n airbyte-secret: true\n cname:\n type: string\n description: "Protocol ID a.k.a cname"\n examples:\n - aave\n - hopprotocol\n protocol:\n type: string\n description: "Alias for cname. Required for endpoints using 'protocol' as parameter ID"\n examples:\n - aave\n - metacartel\n","title":"Connector Specification","titles":["Boardroom Governance API","Defining the RAG API Pipeline Manifest"]},"35":{"href":"/apis/boardroom-api#api-request-configuration","html":"\n

Then, the requester_base defines the how connector should make requests to the API. Here, an ApiKeyAuthenticator schema is required and gets the api_token value from the config object:

\n
definitions:\n  requester_base:\n    type: HttpRequester\n    url_base: "https://api.boardroom.info/v1"\n    http_method: "GET"\n    authenticator:\n      type: ApiKeyAuthenticator\n      api_token: "{{ config['api_key'] }}"\n      inject_into:\n        type: RequestOption\n        field_name: "key"\n        inject_into: request_parameter
\n","isPage":false,"text":"\nThen, the requester_base defines the how connector should make requests to the API. Here, an ApiKeyAuthenticator schema is required and gets the api_token value from the config object:\ndefinitions:\n requester_base:\n type: HttpRequester\n url_base: "https://api.boardroom.info/v1"\n http_method: "GET"\n authenticator:\n type: ApiKeyAuthenticator\n api_token: "{{ config['api_key'] }}"\n inject_into:\n type: RequestOption\n field_name: "key"\n inject_into: request_parameter\n","title":"API Request Configuration","titles":["Boardroom Governance API","Defining the RAG API Pipeline Manifest"]},"36":{"href":"/apis/boardroom-api#record-selection-and-pagination","html":"\n

Data records returned by the API are always wrapped in the data field, while pagination is handled using a Cursor-based approach:

\n
definitions:\n  selector:\n    type: RecordSelector\n    extractor:\n      type: DpathExtractor\n      field_path: ["data"]\n \n  paginator:\n    type: DefaultPaginator\n    pagination_strategy:\n      type: CursorPagination\n      cursor_value: "{{ response.get('nextCursor', '') }}"\n      stop_condition: "{{ 'nextCursor' not in response }}"\n    page_token_option:\n      type: RequestOption\n      field_name: "cursor"\n      inject_into: "request_parameter"
\n","isPage":false,"text":"\nData records returned by the API are always wrapped in the data field, while pagination is handled using a Cursor-based approach:\ndefinitions:\n selector:\n type: RecordSelector\n extractor:\n type: DpathExtractor\n field_path: ["data"]\n \n paginator:\n type: DefaultPaginator\n pagination_strategy:\n type: CursorPagination\n cursor_value: "{{ response.get('nextCursor', '') }}"\n stop_condition: "{{ 'nextCursor' not in response }}"\n page_token_option:\n type: RequestOption\n field_name: "cursor"\n inject_into: "request_parameter"\n","title":"Record Selection and Pagination","titles":["Boardroom Governance API","Defining the RAG API Pipeline Manifest"]},"37":{"href":"/apis/boardroom-api#endpoint-configuration","html":"\n

Now it's time to define the target endpoints with their respective schemas. Below is an example for the proposals endpoint:

\n
endpoints:\n  "/protocols/{cname}/proposals":\n    id: "proposals"\n    primary_key: "refId"\n    responseSchema: "#/schemas/Proposals"\n    textSchema:\n      $ref: "#/textSchemas/Proposal"
\n","isPage":false,"text":"\nNow it's time to define the target endpoints with their respective schemas. Below is an example for the proposals endpoint:\nendpoints:\n "/protocols/{cname}/proposals":\n id: "proposals"\n primary_key: "refId"\n responseSchema: "#/schemas/Proposals"\n textSchema:\n $ref: "#/textSchemas/Proposal"\n","title":"Endpoint Configuration","titles":["Boardroom Governance API","Defining the RAG API Pipeline Manifest"]},"38":{"href":"/apis/boardroom-api#schema-definitions","html":"\n

The responseSchema reference from above defines the complete unwrappd data schema that is returned by the API endpoint:

\n
schemas:\n  Proposals:\n    type: object\n    $schema: http://json-schema.org/draft-07/schema#\n    properties:\n      refId:\n        type: string\n      id:\n        type: string\n      title:\n        type: string\n      content:\n        type: string\n      protocol:\n        type: string\n      adapter:\n        type: string\n      proposer:\n        type: string\n      totalVotes:\n        type: integer\n      blockNumber:\n        type: integer\n      externalUrl:\n        type: string\n      startTime:\n        type: object\n        properties:\n          timestamp:\n            type: integer\n      endTime:\n        type: object\n        properties:\n          timestamp:\n            type: integer\n      startTimestamp:\n        type: string\n      endTimestamp:\n        type: string\n      currentState:\n        type: string\n      choices:\n        type: array\n        items:\n          type: string\n      results:\n        type: array\n        items:\n          type: object\n          properties:\n            total:\n              type: number\n            choice:\n              type: integer\n      events:\n        type: array\n        items:\n          type: object\n          properties: {}\n      type:\n        type: string\n      indexedResult:\n        type: array\n        items:\n          type: object\n          properties:\n            total:\n              type: string\n            choice:\n              type: string\n      summary:\n        type: string\n      privacy:\n        type: string\n      indexedAt:\n        type: integer\n      txHash:\n        type: string\n      quorum:\n        type: integer
\n

On the other hand, the endpoint's textSchema reference specifies the list of fields for text parsing. Note that all properties are also listed in the responseSchema.\nIn this case, title, content, and summary will be parsed as texts, while other fields will be included as metadata properties in a JSON object:

\n
textSchemas:\n  Proposal:\n    type: object\n    properties:\n      title:\n        type: string\n      content:\n        type: string\n      summary:\n        type: string
\n","isPage":false,"text":"\nThe responseSchema reference from above defines the complete unwrappd data schema that is returned by the API endpoint:\nschemas:\n Proposals:\n type: object\n $schema: http://json-schema.org/draft-07/schema#\n properties:\n refId:\n type: string\n id:\n type: string\n title:\n type: string\n content:\n type: string\n protocol:\n type: string\n adapter:\n type: string\n proposer:\n type: string\n totalVotes:\n type: integer\n blockNumber:\n type: integer\n externalUrl:\n type: string\n startTime:\n type: object\n properties:\n timestamp:\n type: integer\n endTime:\n type: object\n properties:\n timestamp:\n type: integer\n startTimestamp:\n type: string\n endTimestamp:\n type: string\n currentState:\n type: string\n choices:\n type: array\n items:\n type: string\n results:\n type: array\n items:\n type: object\n properties:\n total:\n type: number\n choice:\n type: integer\n events:\n type: array\n items:\n type: object\n properties: {}\n type:\n type: string\n indexedResult:\n type: array\n items:\n type: object\n properties:\n total:\n type: string\n choice:\n type: string\n summary:\n type: string\n privacy:\n type: string\n indexedAt:\n type: integer\n txHash:\n type: string\n quorum:\n type: integer\nOn the other hand, the endpoint's textSchema reference specifies the list of fields for text parsing. Note that all properties are also listed in the responseSchema.\nIn this case, title, content, and summary will be parsed as texts, while other fields will be included as metadata properties in a JSON object:\ntextSchemas:\n Proposal:\n type: object\n properties:\n title:\n type: string\n content:\n type: string\n summary:\n type: string\n","title":"Schema Definitions","titles":["Boardroom Governance API","Defining the RAG API Pipeline Manifest"]},"39":{"href":"/apis/boardroom-api#chunking-parameters","html":"\n

This section set the settings to be used when applying text chunking to the extracted content:

\n
chunking_params:\n  mode: "elements"\n  chunking_strategy: "by_title"\n  include_orig_elements: true\n  max_characters: 1500\n  new_after_n_chars: 1024\n  overlap: 0\n  overlap_all: false\n  combine_text_under_n_chars: 0\n  multipage_sections: true
\n","isPage":false,"text":"\nThis section set the settings to be used when applying text chunking to the extracted content:\nchunking_params:\n mode: "elements"\n chunking_strategy: "by_title"\n include_orig_elements: true\n max_characters: 1500\n new_after_n_chars: 1024\n overlap: 0\n overlap_all: false\n combine_text_under_n_chars: 0\n multipage_sections: true\n","title":"Chunking Parameters","titles":["Boardroom Governance API","Defining the RAG API Pipeline Manifest"]},"40":{"href":"/apis/boardroom-api#using-the-rag-pipeline-to-generate-a-knowledge-base-for-aave","html":"\n","isPage":false,"text":"\n","title":"Using the RAG Pipeline to generate a Knowledge Base for Aave","titles":["Boardroom Governance API"]},"41":{"href":"/apis/boardroom-api#rag-pipeline-cli","html":"\n
    \n
  1. Make sure to setup the pipeline initial settings by running the rag-api-pipeline setup command.
  2. \n
  3. Execute the following command:
  4. \n
\n
rag-api-pipeline run all config/boardroom_api_pipeline.yaml config/boardroom_openapi.yaml
\n

The processed data and knowledge base snapshot for Aave will be available in the output/aave_boardroom_api folder. You can also find a public knowledge base snapshot on Hugging Face.

\n","isPage":false,"text":"\n\nMake sure to setup the pipeline initial settings by running the rag-api-pipeline setup command.\nExecute the following command:\n\nrag-api-pipeline run all config/boardroom_api_pipeline.yaml config/boardroom_openapi.yaml\nThe processed data and knowledge base snapshot for Aave will be available in the output/aave_boardroom_api folder. You can also find a public knowledge base snapshot on Hugging Face.\n","title":"RAG Pipeline CLI","titles":["Boardroom Governance API","Using the RAG Pipeline to generate a Knowledge Base for Aave"]},"42":{"href":"/apis/boardroom-api#import-the-kb-snapshot-into-a-gaia-node","html":"\n
    \n
  1. Locate the generated snapshot in output/aave_boardroom_api/ (named aave_boardroom_api_collection-xxxxxxxxxxxxxxxx-yyyy-mm-dd-hh-mm-ss.snapshot.tar.gz) or download it from the HuggingFace link above.
  2. \n
  3. Follow the official knowledge base selection guide
  4. \n
  5. Configure your node using the recommended settings from the node deployment guide.\nDo not forget to update the custom prompts to mention aave as the target DAO protocol.
  6. \n
\n

Once the command above finishes, you'll find a compressed knowledge base snapshot in\n{OUTPUT_FOLDER}/aave_boardroom_api/ with name aave_boardroom_api_collection-xxxxxxxxxxxxxxxx-yyyy-mm-dd-hh-mm-ss.snapshot.tar.gz`. Now it's time to import it\ninto your gaia node. You can find the instructions on how to select a knowledge base here.\nThe recommended prompts and node config settings can be found here.

\n","isPage":false,"text":"\n\nLocate the generated snapshot in output/aave_boardroom_api/ (named aave_boardroom_api_collection-xxxxxxxxxxxxxxxx-yyyy-mm-dd-hh-mm-ss.snapshot.tar.gz) or download it from the HuggingFace link above.\nFollow the official knowledge base selection guide\nConfigure your node using the recommended settings from the node deployment guide.\nDo not forget to update the custom prompts to mention aave as the target DAO protocol.\n\nOnce the command above finishes, you'll find a compressed knowledge base snapshot in\n{OUTPUT_FOLDER}/aave_boardroom_api/ with name aave_boardroom_api_collection-xxxxxxxxxxxxxxxx-yyyy-mm-dd-hh-mm-ss.snapshot.tar.gz`. Now it's time to import it\ninto your gaia node. You can find the instructions on how to select a knowledge base here.\nThe recommended prompts and node config settings can be found here.\n","title":"Import the KB Snapshot into a Gaia Node","titles":["Boardroom Governance API","Using the RAG Pipeline to generate a Knowledge Base for Aave"]},"43":{"href":"/apis/boardroom-api#example-user-prompts","html":"\n\n

\"intro_prompt\"/

\n\n

\"proposal1_prompt\"/

\n\n

\"proposal1_prompt\"/

\n","isPage":false,"text":"\n\nAsking what information the RAG bot is able to provide\n\n\n\nAsking for information about the proposal Enable Metis as Collateral on the Metis Chain\n\n\n\nAsking for information about Onboarding USDS and sUSDS to Aave v3\n\n\n","title":"Example user prompts","titles":["Boardroom Governance API","Using the RAG Pipeline to generate a Knowledge Base for Aave"]},"44":{"href":"/apis/boardroom-api#customizing-for-other-daos","html":"\n

To generate a knowledge base for a different DAO, you just need to modify the api_name and api_parameters values in the boardroom_api_pipeline.yaml manifest file.

","isPage":false,"text":"\nTo generate a knowledge base for a different DAO, you just need to modify the api_name and api_parameters values in the boardroom_api_pipeline.yaml manifest file.","title":"Customizing for Other DAOs","titles":["Boardroom Governance API","Using the RAG Pipeline to generate a Knowledge Base for Aave"]},"45":{"href":"/apis/other-api-sources#working-with-other-api-sources-","html":"\n

Want to supercharge your RAG pipeline with different APIs? We've got you covered! Here's a simple guide to get started.

\n","isPage":true,"text":"\nWant to supercharge your RAG pipeline with different APIs? We've got you covered! Here's a simple guide to get started.\n","title":"Working with Other API Sources 🔌","titles":[]},"46":{"href":"/apis/other-api-sources#where-to-find-great-apis","html":"\n","isPage":false,"text":"\n","title":"Where to Find Great APIs","titles":["Working with Other API Sources 🔌"]},"47":{"href":"/apis/other-api-sources#public-api-collections","html":"\n\n","isPage":false,"text":"\n\nPublic APIs GitHub Repository - A goldmine of free APIs!\nRapidAPI Hub - Browse through thousands of free and paid APIs\n\n","title":"Public API Collections","titles":["Working with Other API Sources 🔌","Where to Find Great APIs"]},"48":{"href":"/apis/other-api-sources#integration-guide-its-easy","html":"\n","isPage":false,"text":"\n","title":"Integration Guide (It's Easy!)","titles":["Working with Other API Sources 🔌"]},"49":{"href":"/apis/other-api-sources#1-gather-documentation","html":"\n\n","isPage":false,"text":"\n\nCollect endpoint details\nNote down request/response formats\nLook for existing OpenAPI/Swagger specifications\n\n","title":"1. Gather Documentation","titles":["Working with Other API Sources 🔌","Integration Guide (It's Easy!)"]},"50":{"href":"/apis/other-api-sources#2-schema-setup","html":"\n\n","isPage":false,"text":"\n\nDo checkout this guide on OpenAPI\nLook for an official OpenAPI spec file from the API provider.\nUse some help from LLMs to create OpenAPI schemas\nValidate your schema:\n\nNew schemas: Swagger Editor\nExisting specs: Swagger Validator\n\n\n\n","title":"2. Schema Setup","titles":["Working with Other API Sources 🔌","Integration Guide (It's Easy!)"]},"51":{"href":"/apis/other-api-sources#3-define-the-rag-api-pipeline-manifest","html":"\n\n","isPage":false,"text":"\n\nDefine the target endpoints and required request parameters\nGet an API Key if needed.\nCheck out our guide or API examples for inspiration.\n\n","title":"3. Define the RAG API Pipeline manifest","titles":["Working with Other API Sources 🔌","Integration Guide (It's Easy!)"]},"52":{"href":"/apis/other-api-sources#4-test-and-deploy","html":"\n\n

Still need help? Feel free reach out or open an issue on this repository!

","isPage":false,"text":"\n\nSetup the pipeline initial configuration by running the rag-api-pipeline setup command.\nTest each endpoint thoroughly:\n\nRun rag-api-pipeline run all <API_MANIFEST_FILE> <OPENAPI_SPEC_FILE> and check for any errors.\nComment other endpoints in the API manifest.\nUse the --normalized-only CLI option and check results in the output folder.\n\n\nAdjust data chunking parameter settings:\n\nUse the --chunked-only CLI option and analyze results (e.g. using a Jupyter notebook)\n\n\nIf you want to include recent endpoint data, use the --full-refresh CLI option to cleanup the cache.\nUse AI assistance to fix validation issues.\nConnect everything to your RAG pipeline.\n\nStill need help? Feel free reach out or open an issue on this repository!","title":"4. Test and Deploy","titles":["Working with Other API Sources 🔌","Integration Guide (It's Easy!)"]},"53":{"href":"/architecture/code-review#in-depth-source-code-review","html":"\n

This document walks through the different modules that comprise the RAG (Retrieval-Augmented Generation) API Pipeline architecture. The system is designed to extract, preprocess, parse, and store data streams from an API source, then create a vector embeddings knowledge base that can be queried using natural language processing and/or hybrid search techniques. Data from each pipeline stage is serialized using a JSON Lines format for easy caching and reuse.

\n","isPage":true,"text":"\nThis document walks through the different modules that comprise the RAG (Retrieval-Augmented Generation) API Pipeline architecture. The system is designed to extract, preprocess, parse, and store data streams from an API source, then create a vector embeddings knowledge base that can be queried using natural language processing and/or hybrid search techniques. Data from each pipeline stage is serialized using a JSON Lines format for easy caching and reuse.\n","title":"In-depth Source Code Review","titles":[]},"54":{"href":"/architecture/code-review#data-flow-overview","html":"\n\n
    \n
  1. API Loader: Generates an Airbyte declarative stream manifest using the input API pipeline manifest and the API OpenAPI spec.
  2. \n
  3. Data Extraction: PyAirbyte uses the source manifest to create individual data streams for each specified API endpoint. Raw data is then cached using Airbyte DuckDB for efficient API data retrieval.
  4. \n
  5. Processing & Transformation: Pathway handles real-time preprocessing of data streams, transforming raw data into a usable format. Endpoint text fields specified in the API pipeline manifest are joined together into a content field, while the remaining fields are stored in a JSON metadata object.
  6. \n
  7. Data Normalization: Preprocessed data streams are joined together into a single normalized stream.
  8. \n
  9. Data Partitioning & Chunking: Normalized data records are then partitioned and chunked.
  10. \n
  11. Vector Embeddings Generation: The pipeline connects to an LLM provider to use a hosted embedding model for generating vector embeddings from chunked data records.
  12. \n
  13. Loading Knowledge Base Snapshot: The resulting QdrantDB collection snapshot can be imported into a Gaia node, allowing the LLM model to use the domain knowledge for providing RAG-based answers to end users.
  14. \n
\n","isPage":false,"text":"\n\n\nAPI Loader: Generates an Airbyte declarative stream manifest using the input API pipeline manifest and the API OpenAPI spec.\nData Extraction: PyAirbyte uses the source manifest to create individual data streams for each specified API endpoint. Raw data is then cached using Airbyte DuckDB for efficient API data retrieval.\nProcessing & Transformation: Pathway handles real-time preprocessing of data streams, transforming raw data into a usable format. Endpoint text fields specified in the API pipeline manifest are joined together into a content field, while the remaining fields are stored in a JSON metadata object.\nData Normalization: Preprocessed data streams are joined together into a single normalized stream.\nData Partitioning & Chunking: Normalized data records are then partitioned and chunked.\nVector Embeddings Generation: The pipeline connects to an LLM provider to use a hosted embedding model for generating vector embeddings from chunked data records.\nLoading Knowledge Base Snapshot: The resulting QdrantDB collection snapshot can be imported into a Gaia node, allowing the LLM model to use the domain knowledge for providing RAG-based answers to end users.\n\n","title":"Data Flow Overview","titles":["In-depth Source Code Review"]},"55":{"href":"/architecture/code-review#pipeline-components","html":"\n","isPage":false,"text":"\n","title":"Pipeline Components","titles":["In-depth Source Code Review"]},"56":{"href":"/architecture/code-review#cli-entrypoint-source","html":"\n

The entrypoint module uses Click to define CLI commands that execute specific pipeline stages. Check the CLI reference for details on available commands and arguments.

\n","isPage":false,"text":"\nThe entrypoint module uses Click to define CLI commands that execute specific pipeline stages. Check the CLI reference for details on available commands and arguments.\n","title":"CLI Entrypoint (","titles":["In-depth Source Code Review","Pipeline Components"]},"57":{"href":"/architecture/code-review#api-loader-source","html":"\n

Uses the input API pipeline manifest and API OpenAPI spec to generate/load an Airbyte declarative stream manifest for initiating the input data streams.

\n

Input Parameters:

\n\n

Output:

\n\n","isPage":false,"text":"\nUses the input API pipeline manifest and API OpenAPI spec to generate/load an Airbyte declarative stream manifest for initiating the input data streams.\nInput Parameters:\n\nAPI Pipeline Manifest: A YAML file defining configuration settings and API endpoints for extraction. The Defining the API Pipeline Manifest reference provides details on creating a new manifest for your target API.\nOpenAPI Spec: YAML file containing the OpenAPI specification for the API source.\n\nOutput:\n\napi_name: API Pipeline ID\napi_parameters: Input parameter values for injection into the Airbyte API connector\nsource_manifest: Generated source manifest (dict serialized)\nendpoint_text_fields: Text fields per API endpoint\nchunking_params: Chunking parameters for the data chunking stage\n\n","title":"API Loader (","titles":["In-depth Source Code Review","Pipeline Components"]},"58":{"href":"/architecture/code-review#input-module-source","html":"\n

Uses Pathway and PyAirbyte to implement the AirbyteAPIConnector (Source). The input module uses this custom connector with api_parameters to create data stream tables for each API endpoint in source_manifest.

\n","isPage":false,"text":"\nUses Pathway and PyAirbyte to implement the AirbyteAPIConnector (Source). The input module uses this custom connector with api_parameters to create data stream tables for each API endpoint in source_manifest.\n","title":"Input Module (","titles":["In-depth Source Code Review","Pipeline Components"]},"59":{"href":"/architecture/code-review#rag-pipeline-source","html":"\n

Receives input data streams and executes the following processing steps:

\n
    \n
  1. \n

    Preprocessing (Source): Transforms raw data streams into a unified data schema using specified endpoint_text_fields.

    \n
  2. \n
  3. \n

    Normalization: Joins preprocessed data into a single normalized stream table.

    \n
  4. \n
  5. \n

    Data Partitioning and Chunking (Source): Receives the normalized data stream and chunking_params to apply data partition and chunking using the CustomParseUnstructured (Source) UDF (Pathway User-defined Function).

    \n
  6. \n
  7. \n

    Feature Embeddings (Source): The CustomLiteLLMEmbedder (Source) integrates litellm and ollama libraries to connect to the selected LLM provider for generating vector embeddings.

    \n
  8. \n
\n\n","isPage":false,"text":"\nReceives input data streams and executes the following processing steps:\n\n\nPreprocessing (Source): Transforms raw data streams into a unified data schema using specified endpoint_text_fields.\n\n\nNormalization: Joins preprocessed data into a single normalized stream table.\n\n\nData Partitioning and Chunking (Source): Receives the normalized data stream and chunking_params to apply data partition and chunking using the CustomParseUnstructured (Source) UDF (Pathway User-defined Function).\n\n\nFeature Embeddings (Source): The CustomLiteLLMEmbedder (Source) integrates litellm and ollama libraries to connect to the selected LLM provider for generating vector embeddings.\n\n\nNOTICE:\nFor pipeline execution on consumer hardware, we recommend using Ollama as a more lightweight LLM provider for vector embeddings generation.\n","title":"RAG Pipeline (","titles":["In-depth Source Code Review","Pipeline Components"]},"60":{"href":"/architecture/code-review#output-module-source","html":"\n

Uses the qdrant_client library to implement the QdrantDBVectorStore (Source). It connects to a Pathway output connector to read records from the embeddings stream, store vector embeddings and attached metadata in a Qdrant DB collection, and generate and download a knowledge base snapshot.

","isPage":false,"text":"\nUses the qdrant_client library to implement the QdrantDBVectorStore (Source). It connects to a Pathway output connector to read records from the embeddings stream, store vector embeddings and attached metadata in a Qdrant DB collection, and generate and download a knowledge base snapshot.","title":"Output Module (","titles":["In-depth Source Code Review","Pipeline Components"]},"61":{"href":"/architecture/overview#architecture-overview","html":"\n

\"architecture\"/

\n

The diagram above illustrates the system architecture. When executing the rag-api-pipeline CLI, the tool performs the following steps:

\n
    \n
  1. The API Loader module reads both the API pipeline manifest and the OpenAPI specification.
  2. \n
  3. The Loader module generates an Airbyte declarative stream manifest and forwards it to the Pipeline module.
  4. \n
  5. The Pipeline module initiates the Pathway engine.
  6. \n
  7. The engine uses an Airbyte UDF connector module to extract data from each API endpoint as independent streams.
  8. \n
  9. Extracted data flows through the RAG pipeline stages: stream preprocessing, data normalization, data partitioning and chunking, and feature embeddings generation.\n
      \n
    • (5.4) The Feature Embeddings generation module can be configured to use an OpenAI-compatible API provider, such as a Gaia node, to generate vector embeddings with your preferred LLM embeddings model. Visit the Other LLM Providers page for details on other supported LLM providers.
    • \n
    • (5.5) Generated vector embeddings are stored in a Qdrant DB instance using the qdrant output module.
    • \n
    \n
  10. \n
  11. The qdrant module automatically generates and compresses a DB vector snapshot for the current vector embeddings collection.
  12. \n
  13. The resulting knowledge base snapshot can be imported into a Gaia node either through local upload or by uploading to an AI dataset/model provider such as HuggingFace.
  14. \n
  15. The node joins the Gaia network to provide an LLM model with custom domain knowledge that can be used to deliver various RAG applications to end users.
  16. \n
","isPage":true,"text":"\n\nThe diagram above illustrates the system architecture. When executing the rag-api-pipeline CLI, the tool performs the following steps:\n\nThe API Loader module reads both the API pipeline manifest and the OpenAPI specification.\nThe Loader module generates an Airbyte declarative stream manifest and forwards it to the Pipeline module.\nThe Pipeline module initiates the Pathway engine.\nThe engine uses an Airbyte UDF connector module to extract data from each API endpoint as independent streams.\nExtracted data flows through the RAG pipeline stages: stream preprocessing, data normalization, data partitioning and chunking, and feature embeddings generation.\n\n(5.4) The Feature Embeddings generation module can be configured to use an OpenAI-compatible API provider, such as a Gaia node, to generate vector embeddings with your preferred LLM embeddings model. Visit the Other LLM Providers page for details on other supported LLM providers.\n(5.5) Generated vector embeddings are stored in a Qdrant DB instance using the qdrant output module.\n\n\nThe qdrant module automatically generates and compresses a DB vector snapshot for the current vector embeddings collection.\nThe resulting knowledge base snapshot can be imported into a Gaia node either through local upload or by uploading to an AI dataset/model provider such as HuggingFace.\nThe node joins the Gaia network to provide an LLM model with custom domain knowledge that can be used to deliver various RAG applications to end users.\n","title":"Architecture Overview","titles":[]},"62":{"href":"/architecture/tech-stack#tech-stack","html":"\n

This page outlines the technologies and tools integrated into the rag-api-pipeline across different execution stages.

\n","isPage":true,"text":"\nThis page outlines the technologies and tools integrated into the rag-api-pipeline across different execution stages.\n","title":"Tech Stack","titles":[]},"63":{"href":"/architecture/tech-stack#tools--frameworks","html":"\n","isPage":false,"text":"\n","title":"Tools & Frameworks","titles":["Tech Stack"]},"64":{"href":"/architecture/tech-stack#1-rag-pipeline-over-data-stream-pathway-docs","html":"\n\n","isPage":false,"text":"\n\nDescription: A Python-based data processing framework designed for creating AI-driven pipelines over data streams\nCore Technology:\n\nRust Engine with multithreading and multiprocessing capabilities for high performance\n\n\nUse Case: Efficient data processing, enabling integration with third-party data-related tools and AI models to process large, real-time data streams\n\n","title":"1. RAG Pipeline over Data Stream: Pathway (","titles":["Tech Stack","Tools & Frameworks"]},"65":{"href":"/architecture/tech-stack#getting-started","html":"\n\n","isPage":false,"text":"\n\nDescription: Utilities for interacting with Airbyte declarative stream connectors using Python\nKey Features:\n\nFacilitates integration with Airbyte data sources\nSupports Declarative API Connectors via the Airbyte CDK, enabling low-code development of custom connectors\n\n\n\n","title":"2. Data Extraction from REST API Sources: PyAirbyte (","titles":["Tech Stack","Tools & Frameworks"]},"66":{"href":"/architecture/tech-stack#DuckDBCache","html":"\n\n","isPage":false,"text":"\n\nDescription: Implements caching mechanisms at various pipeline stages to optimize performance and reduce redundant data processing\nTechnologies Used:\n\nAirbyte DuckDB Cache: Used for caching API data extractions, ensuring efficient retrieval of extracted data without re-querying the source\nJSONL Output Connectors: After normalization and chunking, data is cached and stored in JSONL format, streamlining further processing stages\n\n\n\n","title":"3. Data Caching: DuckDB (","titles":["Tech Stack","Tools & Frameworks"]},"67":{"href":"/architecture/tech-stack#4-data-partitioning-and-chunking-unstructured-open-source-docs","html":"\n\n","isPage":false,"text":"\n\nDescription: Simplifies the ingestion and preprocessing of diverse data formats within data workflows, specifically designed for Large Language Models (LLMs)\nFeatures:\n\nFunctions to partition, chunk, clean, and stage raw source documents for further analysis\nOptimized for unstructured data handling, making it easier to prepare data for machine learning tasks\n\n\n\n","title":"4. Data Partitioning and Chunking: Unstructured Open Source (","titles":["Tech Stack","Tools & Frameworks"]},"68":{"href":"/architecture/tech-stack#5-feature-embedding-generation","html":"\n\n","isPage":false,"text":"\n\nDescription: connects to a LLM provider and is responsible for generating feature embeddings, which create dense vector representations of the extracted data.\nTechnologies Used:\n\nGaia Node (Docs): Offers a RAG API Server that provides an OpenAI-like API to interact with hosted LLM models\nOllama (Docs): Easy-to-install LLM engine for running large language models on a local machine\n\n\nPython Libraries:\n\nlitellm Python library for connecting with OpenAI-compatible LLM providers\nollama Python library for interacting with a local Ollama instance\n\n\n\n","title":"5. Feature Embedding Generation:","titles":["Tech Stack","Tools & Frameworks"]},"69":{"href":"/architecture/tech-stack#6-vector-embeddings-database-snapshot-qdrantdb-docs","html":"\n","isPage":false,"text":"\n\nDescription: A vector database and vector similarity search engine\nKey Features:\n\nProvides efficient vector searches based on similarity, crucial for tasks like nearest-neighbor search in large datasets\nActs as a knowledge base snapshot repository, storing vectors generated from processed data and feature embeddings\n\n\n","title":"6. Vector Embeddings Database Snapshot: QdrantDB (","titles":["Tech Stack","Tools & Frameworks"]},"70":{"href":"/cli/node-deployment#rag-api-pipeline-x-gaia-node","html":"\n","isPage":true,"text":"\n","title":"RAG API Pipeline x Gaia node","titles":[]},"71":{"href":"/cli/node-deployment#quick-start-guide","html":"\n

We recommend to follow the Gaia Official quick start guide. Your Gaia node will\nbe setup in the GAIANET_BASE_DIR (default: "$HOME/gaianet") directory.

\n","isPage":false,"text":"\nWe recommend to follow the Gaia Official quick start guide. Your Gaia node will\nbe setup in the GAIANET_BASE_DIR (default: "$HOME/gaianet") directory.\n","title":"Quick start guide","titles":["RAG API Pipeline x Gaia node"]},"72":{"href":"/cli/node-deployment#deploying-your-gaia-node-in-embeddings-running-mode-️recommended","html":"\n

The rag-api-pipeline requires an embeddings model to generate vector embeddings from the API data source. At this stage, we recommend to\nstart your Gaia node in embeddings-only mode (thus consuming less resources than starting the full node) by running the following command:

\n
cd $GAIANET_BASE_DIR\nwasmedge --dir .:./dashboard --env NODE_VERSION=0.4.7 \\\n  --nn-preload embedding:GGML:AUTO:nomic-embed-text-v1.5.f16.gguf llama-api-server.wasm \\\n  --model-name Nomic-embed-text-v1.5 --model-alias embedding --prompt-template embedding \\\n  --ctx-size 8192 --batch-size 768 --web-ui ./ --socket-addr 0.0.0.0:8080
\n\n","isPage":false,"text":"\nThe rag-api-pipeline requires an embeddings model to generate vector embeddings from the API data source. At this stage, we recommend to\nstart your Gaia node in embeddings-only mode (thus consuming less resources than starting the full node) by running the following command:\ncd $GAIANET_BASE_DIR\nwasmedge --dir .:./dashboard --env NODE_VERSION=0.4.7 \\\n --nn-preload embedding:GGML:AUTO:nomic-embed-text-v1.5.f16.gguf llama-api-server.wasm \\\n --model-name Nomic-embed-text-v1.5 --model-alias embedding --prompt-template embedding \\\n --ctx-size 8192 --batch-size 768 --web-ui ./ --socket-addr 0.0.0.0:8080\n\n--nn-preload embedding:GGML:AUTO:<embeddings_model_file.gguf>: <embeddings_model_file.gguf> specifies the location of the embeddings model file\n--model-name <model_name>: specifies the embeddings model name\n--ctx-size and --batch-size should be set according to the selected embeddings model\n\n","title":"Deploying your Gaia node in embeddings running mode (⚠️Recommended)","titles":["RAG API Pipeline x Gaia node"]},"73":{"href":"/cli/node-deployment#selecting-a-knowledge-base-and-custom-prompts-for-your-gaia-node","html":"\n

In order to supplement the LLM model hosted on your Gaia node with a custom knowledge base and prompts follow the instructions outlined in this link.\nRemember to re-initialize and re-start the node after you make any configuration changes.

\n
gaianet init\ngaianet start
\n","isPage":false,"text":"\nIn order to supplement the LLM model hosted on your Gaia node with a custom knowledge base and prompts follow the instructions outlined in this link.\nRemember to re-initialize and re-start the node after you make any configuration changes.\ngaianet init\ngaianet start\n","title":"Selecting a knowledge base and custom prompts for your Gaia node","titles":["RAG API Pipeline x Gaia node"]},"74":{"href":"/cli/node-deployment#recommended-gaia-node-configuration","html":"\n

The example JSON config file from below helps you to quickly setup/deploy a Gaia node and import a knowledge base snapshot:

\n\n
{\n  "address": "your-node-address",\n  "chat": "https://huggingface.co/gaianet/Meta-Llama-3.1-8B-Instruct-GGUF/resolve/main/Meta-Llama-3.1-8B-Instruct-Q5_K_M.gguf",\n  "chat_batch_size": "64",\n  "chat_ctx_size": "8192",\n  "chat_name": "Boardroom-Llama-3-Chat",\n  "description": "Llama-3-chat model. with Boardroom API snapshot",\n  "domain": "us.gaianet.network",\n  "embedding": "https://huggingface.co/gaianet/Nomic-embed-text-v1.5-Embedding-GGUF/resolve/main/nomic-embed-text-v1.5.f16.gguf",\n  "embedding_batch_size": "2048",\n  "embedding_collection_name": "boardroom_api_collection", # this is the name of the collection where the snapshot will be imported\n  "embedding_ctx_size": "2048",\n  "embedding_name": "Nomic-embed-text-v1.5",\n  "llamaedge_port": "8080",\n  "prompt_template": "llama-3-chat",\n  "qdrant_limit": "10",\n  "qdrant_score_threshold": "0.5",\n  "rag_policy": "system-message",\n  "rag_prompt": "Use the following pieces of context to answer the user's question. Respond directly to the user with your answer, do not say 'this is the answer' or 'this is the answer' or similar language. Never mention your knowledge base or say 'according to the context' or 'hypothetical' or other similar language. Use json metadata included in knowledge base whenever possible enrich your answers. The terms `molochdao` and `moloch dao` refer to the DAO protocol where discussions and proposals are posted. If you don't know the answer, don't try to make up an answer. \\n----------------\\n",\n  "reverse_prompt": "",\n  "snapshot": "/your-snapshot-path-or-url", # snapshot tar file\n  "system_prompt": "You are an AI assistant designed to provide clear, concise, and accurate answers to user queries. Your primary functions include retrieving relevant information from the provided RAG (Retrieval-Augmented Generation) data and utilizing your pre-training data when necessary. Use json metadata included in RAG data whenever possible enrich your answers. The term `molochdao` and `moloch dao` refers to the DAO protocol where discussions and proposals are posted. If no relevant information is found, you will inform the user that you are not familiar with the knowledge."\n}
","isPage":false,"text":"\nThe example JSON config file from below helps you to quickly setup/deploy a Gaia node and import a knowledge base snapshot:\n\nTested on Mac Studio 32GB RAM\nCustom prompts for the Boardroom's MolochDAO example\nsnapshot should point to either a local tar file or to a HTTP server where the node can download a Qdrant snapshot\n\n{\n "address": "your-node-address",\n "chat": "https://huggingface.co/gaianet/Meta-Llama-3.1-8B-Instruct-GGUF/resolve/main/Meta-Llama-3.1-8B-Instruct-Q5_K_M.gguf",\n "chat_batch_size": "64",\n "chat_ctx_size": "8192",\n "chat_name": "Boardroom-Llama-3-Chat",\n "description": "Llama-3-chat model. with Boardroom API snapshot",\n "domain": "us.gaianet.network",\n "embedding": "https://huggingface.co/gaianet/Nomic-embed-text-v1.5-Embedding-GGUF/resolve/main/nomic-embed-text-v1.5.f16.gguf",\n "embedding_batch_size": "2048",\n "embedding_collection_name": "boardroom_api_collection", # this is the name of the collection where the snapshot will be imported\n "embedding_ctx_size": "2048",\n "embedding_name": "Nomic-embed-text-v1.5",\n "llamaedge_port": "8080",\n "prompt_template": "llama-3-chat",\n "qdrant_limit": "10",\n "qdrant_score_threshold": "0.5",\n "rag_policy": "system-message",\n "rag_prompt": "Use the following pieces of context to answer the user's question. Respond directly to the user with your answer, do not say 'this is the answer' or 'this is the answer' or similar language. Never mention your knowledge base or say 'according to the context' or 'hypothetical' or other similar language. Use json metadata included in knowledge base whenever possible enrich your answers. The terms `molochdao` and `moloch dao` refer to the DAO protocol where discussions and proposals are posted. If you don't know the answer, don't try to make up an answer. \\n----------------\\n",\n "reverse_prompt": "",\n "snapshot": "/your-snapshot-path-or-url", # snapshot tar file\n "system_prompt": "You are an AI assistant designed to provide clear, concise, and accurate answers to user queries. Your primary functions include retrieving relevant information from the provided RAG (Retrieval-Augmented Generation) data and utilizing your pre-training data when necessary. Use json metadata included in RAG data whenever possible enrich your answers. The term `molochdao` and `moloch dao` refers to the DAO protocol where discussions and proposals are posted. If no relevant information is found, you will inform the user that you are not familiar with the knowledge."\n}","title":"Recommended Gaia Node Configuration","titles":["RAG API Pipeline x Gaia node"]},"75":{"href":"/cli/other-llm-providers#supported-llm-providers","html":"\n

The rag-api-pipeline currently supports two types of LLM providers: openai and ollama. A Gaia node for example, uses a Rust-based RAG API Server\nto offer OpenAI-compatible web APIs for creating RAG applications.

\n

In the following sections, you'll find more details on the supported LLM providers that the pipeline currently supports and how to setup them

\n","isPage":true,"text":"\nThe rag-api-pipeline currently supports two types of LLM providers: openai and ollama. A Gaia node for example, uses a Rust-based RAG API Server\nto offer OpenAI-compatible web APIs for creating RAG applications.\nIn the following sections, you'll find more details on the supported LLM providers that the pipeline currently supports and how to setup them\n","title":"Supported LLM providers","titles":[]},"76":{"href":"/cli/other-llm-providers#openai","html":"\n

By default, the pipeline supports any LLM provider that offers OpenAI-compatible web APIs. If you wanna work with a provider other than Gaia,\nyou can setup the connection using the setup wizard via the rag-api-pipeline setup command:

\n
(venv) user$ rag-api-pipeline setup\nWhich LLM provider you want to use? (gaia, other) [gaia]: other\nInit pipeline...\n(Step 1/3) Setting Pipeline LLM provider settings...\nSelect a custom LLM provider (openai, ollama): openai\nLLM provider API URL [http://127.0.0.1:8080/v1]: https://api.openai.com/v1\nLLM provider API Key:\nLLM Provider API connection OK!\nEmbeddings model Name [Nomic-embed-text-v1.5]: text-embedding-ada-002\nEmbeddings Vector Size [768]: 2048\nPipeline LLM Provider settings OK!
\n","isPage":false,"text":"\nBy default, the pipeline supports any LLM provider that offers OpenAI-compatible web APIs. If you wanna work with a provider other than Gaia,\nyou can setup the connection using the setup wizard via the rag-api-pipeline setup command:\n(venv) user$ rag-api-pipeline setup\nWhich LLM provider you want to use? (gaia, other) [gaia]: other\nInit pipeline...\n(Step 1/3) Setting Pipeline LLM provider settings...\nSelect a custom LLM provider (openai, ollama): openai\nLLM provider API URL [http://127.0.0.1:8080/v1]: https://api.openai.com/v1\nLLM provider API Key:\nLLM Provider API connection OK!\nEmbeddings model Name [Nomic-embed-text-v1.5]: text-embedding-ada-002\nEmbeddings Vector Size [768]: 2048\nPipeline LLM Provider settings OK!\n","title":"OpenAI","titles":["Supported LLM providers"]},"77":{"href":"/cli/other-llm-providers#ollama","html":"\n

If you're planning to use the pipeline on consumer hardware that cannot handle a Gaia node running in the background, you can opt-in to use Ollama\nas LLM provider. Depending on the use case and resources available, some of the advantages of using Ollama for example are that it is more lighweight,\neasier to install and ready to use with Mac GPU devices.

\n","isPage":false,"text":"\nIf you're planning to use the pipeline on consumer hardware that cannot handle a Gaia node running in the background, you can opt-in to use Ollama\nas LLM provider. Depending on the use case and resources available, some of the advantages of using Ollama for example are that it is more lighweight,\neasier to install and ready to use with Mac GPU devices.\n","title":"Ollama","titles":["Supported LLM providers"]},"78":{"href":"/cli/other-llm-providers#getting-ollama","html":"\n

Download and install Ollama from the official website.

\n","isPage":false,"text":"\nDownload and install Ollama from the official website.\n","title":"Getting Ollama","titles":["Supported LLM providers","Ollama"]},"79":{"href":"/cli/other-llm-providers#importing-an-embeddings-model-in-ollama","html":"\n","isPage":false,"text":"\n","title":"Importing an Embeddings Model in Ollama","titles":["Supported LLM providers","Ollama"]},"80":{"href":"/cli/other-llm-providers#using-the-cli-setup-wizard","html":"\n

Using the rag-api-pipeline setup command, you can easily set the connection to Ollama and even load the embeddings model if it's not imported already.

\n
(venv) user$ rag-api-pipeline setup\nWhich LLM provider you want to use? (gaia, other) [gaia]: other\nInit pipeline...\n(Step 1/3) Setting Pipeline LLM provider settings...\nSelect a custom LLM provider (openai, ollama): ollama\nLLM provider API URL [http://127.0.0.1:11434]:\nERROR: LLM Provider API (@ http://127.0.0.1:11434/v1/models) is down. HTTPConnectionPool(host='127.0.0.1', port=11434): Max retries exceeded with url: /v1/models (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x1091c2490>: Failed to establish a new connection: [Errno 61] Connection refused'))\nTry again...\nLLM provider API URL [http://127.0.0.1:11434]:\nLLM Provider API connection OK!\nEmbeddings model Name [Nomic-embed-text-v1.5]:\nEmbeddings Vector Size [768]:\nEnter the Absolute Path to the Embeddings model file: /home/user/rag-api-pipeline/models/nomic-embed-text-v1.5.f16.gguf\nImporting embeddings model into Ollama...\nPipeline LLM Provider settings OK!
\n","isPage":false,"text":"\nUsing the rag-api-pipeline setup command, you can easily set the connection to Ollama and even load the embeddings model if it's not imported already.\n(venv) user$ rag-api-pipeline setup\nWhich LLM provider you want to use? (gaia, other) [gaia]: other\nInit pipeline...\n(Step 1/3) Setting Pipeline LLM provider settings...\nSelect a custom LLM provider (openai, ollama): ollama\nLLM provider API URL [http://127.0.0.1:11434]:\nERROR: LLM Provider API (@ http://127.0.0.1:11434/v1/models) is down. HTTPConnectionPool(host='127.0.0.1', port=11434): Max retries exceeded with url: /v1/models (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x1091c2490>: Failed to establish a new connection: [Errno 61] Connection refused'))\nTry again...\nLLM provider API URL [http://127.0.0.1:11434]:\nLLM Provider API connection OK!\nEmbeddings model Name [Nomic-embed-text-v1.5]:\nEmbeddings Vector Size [768]:\nEnter the Absolute Path to the Embeddings model file: /home/user/rag-api-pipeline/models/nomic-embed-text-v1.5.f16.gguf\nImporting embeddings model into Ollama...\nPipeline LLM Provider settings OK!\n","title":"Using the CLI Setup Wizard","titles":["Supported LLM providers","Ollama"]},"81":{"href":"/cli/other-llm-providers#manually-importing-a-model","html":"\n
    \n
  1. Download the embeddings model of your preference (e.g. from HuggingFace)
  2. \n
  3. Create Modelfile to use the embedding model with Ollama. Learn more about Ollama Modelfile format here
  4. \n
\n
FROM ./nomic-embed-text-v1.5.f16.gguf # this is the path to the embedding model
\n
    \n
  1. Import the model into Ollama using the ollama CLI
  2. \n
\n
ollama create <model-name> -f <Modelfile>
","isPage":false,"text":"\n\nDownload the embeddings model of your preference (e.g. from HuggingFace)\nCreate Modelfile to use the embedding model with Ollama. Learn more about Ollama Modelfile format here\n\nFROM ./nomic-embed-text-v1.5.f16.gguf # this is the path to the embedding model\n\nImport the model into Ollama using the ollama CLI\n\nollama create <model-name> -f <Modelfile>","title":"Manually Importing a Model","titles":["Supported LLM providers","Ollama"]},"82":{"href":"/cli/reference#rag-api-pipeline-cli-reference-documentation","html":"\n","isPage":true,"text":"\n","title":"RAG API Pipeline CLI Reference Documentation","titles":[]},"83":{"href":"/cli/reference#overview","html":"\n

The CLI tool provides functionality for running a RAG (Retrieval-Augmented Generation) API pipeline. It offers various commands to execute different stages of the pipeline, from data extraction to embedding generation.

\n","isPage":false,"text":"\nThe CLI tool provides functionality for running a RAG (Retrieval-Augmented Generation) API pipeline. It offers various commands to execute different stages of the pipeline, from data extraction to embedding generation.\n","title":"Overview","titles":["RAG API Pipeline CLI Reference Documentation"]},"84":{"href":"/cli/reference#installation","html":"\n

This project uses Poetry for dependency management. To install the project and all its dependencies:

\n
    \n
  1. Ensure you have Poetry installed. If not, install it by following the instructions here
  2. \n
  3. Clone the repository:\n
    git clone https://github.com/raid-guild/gaianet-rag-api-pipeline\ncd gaianet-rag-api-pipeline
    \n
  4. \n
  5. Install dependencies:\n
      \n
    • Using pip (production-mode):\n
          pip install -e .
      \n
    • \n
    • Using Poetry (development-mode):\n
      poetry install
      \n
    • \n
    \n
  6. \n
  7. Check the rag-api-pipeline CLI is available:\n
      \n
    • Production mode:\n
          rag-api-pipeline --help
      \n
    • \n
    • Development mode:\n
          poetry run rag-api-pipeline --help
      \n
    • \n
    \n
  8. \n
\n","isPage":false,"text":"\nThis project uses Poetry for dependency management. To install the project and all its dependencies:\n\nEnsure you have Poetry installed. If not, install it by following the instructions here\nClone the repository:\ngit clone https://github.com/raid-guild/gaianet-rag-api-pipeline\ncd gaianet-rag-api-pipeline\n\nInstall dependencies:\n\nUsing pip (production-mode):\n pip install -e .\n\nUsing Poetry (development-mode):\npoetry install\n\n\n\nCheck the rag-api-pipeline CLI is available:\n\nProduction mode:\n rag-api-pipeline --help\n\nDevelopment mode:\n poetry run rag-api-pipeline --help\n\n\n\n\n","title":"Installation","titles":["RAG API Pipeline CLI Reference Documentation"]},"85":{"href":"/cli/reference#usage","html":"\n
(venv) user$ rag-api-pipeline --help\nUsage: rag-api-pipeline [OPTIONS] COMMAND [ARGS]...\n \n  Command-line interface (CLI) for the RAG API pipeline.\n \nOptions:\n  --help  Show this message and exit.\n \nCommands:\n  setup  Setup wizard to config the pipeline settings prior execution\n  run    Execute RAG API pipeline tasks.
\n","isPage":false,"text":"\n(venv) user$ rag-api-pipeline --help\nUsage: rag-api-pipeline [OPTIONS] COMMAND [ARGS]...\n \n Command-line interface (CLI) for the RAG API pipeline.\n \nOptions:\n --help Show this message and exit.\n \nCommands:\n setup Setup wizard to config the pipeline settings prior execution\n run Execute RAG API pipeline tasks.\n","title":"Usage","titles":["RAG API Pipeline CLI Reference Documentation"]},"86":{"href":"/cli/reference#setup","html":"\n
(venv) user$ rag-api-pipeline setup --help\nUsage: rag-api-pipeline setup [OPTIONS]\n \n  Setup wizard to config the pipeline settings prior execution\n \nOptions:\n  --debug                      enable logging debug level\n  --llm-provider [gaia|other]  LLM provider  [default: gaia]\n  --help                       Show this message and exit.
\n","isPage":false,"text":"\n(venv) user$ rag-api-pipeline setup --help\nUsage: rag-api-pipeline setup [OPTIONS]\n \n Setup wizard to config the pipeline settings prior execution\n \nOptions:\n --debug enable logging debug level\n --llm-provider [gaia|other] LLM provider [default: gaia]\n --help Show this message and exit.\n","title":"setup","titles":["RAG API Pipeline CLI Reference Documentation","Usage"]},"87":{"href":"/cli/reference#options","html":"\n\n","isPage":false,"text":"\n\n--debug: Enable logging at debug level. Useful for development purposes\n--llm-provider [gaia|other]: Embedding model provider (default: gaia). Check the Other LLM Providers section\nfor details on supported LLM engines.\n\n","title":"Options","titles":["RAG API Pipeline CLI Reference Documentation","Usage"]},"88":{"href":"/cli/reference#run","html":"\n
(venv) user$ rag-api-pipeline run --help\nUsage: rag-api-pipeline run [OPTIONS] COMMAND [ARGS]...\n \n  Execute RAG API pipeline tasks.\n \nOptions:\n  --debug  enable logging debug level\n  --help   Show this message and exit.\n \nCommands:\n  all              Run the complete RAG API Pipeline.\n  from-chunked     Execute the RAG API pipeline from chunked data.\n  from-normalized  Execute the RAG API pipeline from normalized data.
\n","isPage":false,"text":"\n(venv) user$ rag-api-pipeline run --help\nUsage: rag-api-pipeline run [OPTIONS] COMMAND [ARGS]...\n \n Execute RAG API pipeline tasks.\n \nOptions:\n --debug enable logging debug level\n --help Show this message and exit.\n \nCommands:\n all Run the complete RAG API Pipeline.\n from-chunked Execute the RAG API pipeline from chunked data.\n from-normalized Execute the RAG API pipeline from normalized data.\n","title":"run","titles":["RAG API Pipeline CLI Reference Documentation","Usage"]},"89":{"href":"/cli/reference#global-options","html":"\n\n","isPage":false,"text":"\n\n--debug: Enable logging at debug level. Useful for development purposes\n\n","title":"Global Options","titles":["RAG API Pipeline CLI Reference Documentation","Usage"]},"90":{"href":"/cli/reference#pipeline-commands","html":"\n

Prior executing any of the commands listed below, it validates that the the pipeline is already setup (config/.env file exists) and\nthe required services (LLM Provider + QdrantDB) are up and running. Otherwise, you will receive one of the following error messages:

\n\n","isPage":false,"text":"\nPrior executing any of the commands listed below, it validates that the the pipeline is already setup (config/.env file exists) and\nthe required services (LLM Provider + QdrantDB) are up and running. Otherwise, you will receive one of the following error messages:\n\nERROR: config/.env file not found. rag-api-pipeline setup should be run first.\nERROR: LLM Provider openai (http://localhost:8080/v1/models) is down.\nERROR: QdrantDB (http://localhost:6333) is down.\n\n","title":"Pipeline Commands","titles":["RAG API Pipeline CLI Reference Documentation"]},"91":{"href":"/cli/reference#run-all","html":"\n

Executes the entire RAG pipeline including API endpoint data streams, data normalization, data chunking, vector embeddings and\ndatabase snapshot generation.

\n
(venv) user$ rag-api-pipeline run all --help\nUsage: rag-api-pipeline run all [OPTIONS] API_MANIFEST_FILE OPENAPI_SPEC_FILE\n \n  Run the complete RAG API Pipeline.\n \n  API_MANIFEST_FILE Path to the API manifest YAML file that defines pipeline\n  config settings and API endpoints.\n \n  OPENAPI_SPEC_FILE Path to the OpenAPI YAML specification file.\n \nOptions:\n  --api-key TEXT                  API Auth key\n  --source-manifest-file PATH     Source YAML manifest\n  --full-refresh                  Clean up cache and extract API data from\n                                  scratch\n  --normalized-only               Run pipeline until the normalized data stage\n  --chunked-only                  Run pipeline until the chunked data stage\n  --help                          Show this message and exit.
\n","isPage":false,"text":"\nExecutes the entire RAG pipeline including API endpoint data streams, data normalization, data chunking, vector embeddings and\ndatabase snapshot generation.\n(venv) user$ rag-api-pipeline run all --help\nUsage: rag-api-pipeline run all [OPTIONS] API_MANIFEST_FILE OPENAPI_SPEC_FILE\n \n Run the complete RAG API Pipeline.\n \n API_MANIFEST_FILE Path to the API manifest YAML file that defines pipeline\n config settings and API endpoints.\n \n OPENAPI_SPEC_FILE Path to the OpenAPI YAML specification file.\n \nOptions:\n --api-key TEXT API Auth key\n --source-manifest-file PATH Source YAML manifest\n --full-refresh Clean up cache and extract API data from\n scratch\n --normalized-only Run pipeline until the normalized data stage\n --chunked-only Run pipeline until the chunked data stage\n --help Show this message and exit.\n","title":"run all","titles":["RAG API Pipeline CLI Reference Documentation","Pipeline Commands"]},"92":{"href":"/cli/reference#arguments","html":"\n\n","isPage":false,"text":"\n\nAPI_MANIFEST_FILE: Pipeline YAML manifest that defines the Pipeline config settings and API endpoints to extract.\nOPENAPI_SPEC_FILE: OpenAPI YAML spec file.\n\n","title":"Arguments","titles":["RAG API Pipeline CLI Reference Documentation","Pipeline Commands","run all"]},"93":{"href":"/cli/reference#options-1","html":"\n\n","isPage":false,"text":"\n\n--api-key TEXT: API Auth key. If specified, it overrides the pipeline settings.\n--source-manifest-file FILE: Airbyte's Source Connector YAML manifest. If specified, it skips the connector manifest generation stage\nand will use this file to start the API data extraction.\n--full-refresh: Clean up cache and extract API data from scratch\n--normalized-only: Run the pipeline process until the normalized data stage\n--chunked-only: Run the pipeline process until the chunked data stage\n\n","title":"Options","titles":["RAG API Pipeline CLI Reference Documentation","Pipeline Commands","run all"]},"94":{"href":"/cli/reference#run-from-normalized","html":"\n

Executes the RAG data pipeline using an already normalized JSONL dataset.

\n
(venv) user$ rag-api-pipeline run from-normalized --help\nUsage: rag-api-pipeline run from-normalized [OPTIONS] API_MANIFEST_FILE\n \n  Execute the RAG API pipeline from normalized data.\n \n  API_MANIFEST_FILE Path to the API manifest YAML file that defines pipeline\n  config settings and API endpoints.\n \nOptions:\n  --normalized-data-file PATH  Normalized data in JSONL format  [required]\n  --help                       Show this message and exit.
\n","isPage":false,"text":"\nExecutes the RAG data pipeline using an already normalized JSONL dataset.\n(venv) user$ rag-api-pipeline run from-normalized --help\nUsage: rag-api-pipeline run from-normalized [OPTIONS] API_MANIFEST_FILE\n \n Execute the RAG API pipeline from normalized data.\n \n API_MANIFEST_FILE Path to the API manifest YAML file that defines pipeline\n config settings and API endpoints.\n \nOptions:\n --normalized-data-file PATH Normalized data in JSONL format [required]\n --help Show this message and exit.\n","title":"run from-normalized","titles":["RAG API Pipeline CLI Reference Documentation","Pipeline Commands"]},"95":{"href":"/cli/reference#arguments-1","html":"\n\n","isPage":false,"text":"\n\nAPI_MANIFEST_FILE: Pipeline YAML manifest that defines the Pipeline config settings.\n\n","title":"Arguments","titles":["RAG API Pipeline CLI Reference Documentation","Pipeline Commands","run from-normalized"]},"96":{"href":"/cli/reference#options-2","html":"\n\n","isPage":false,"text":"\n\n--normalized-data-file FILE (required): Normalized data in JSONL format.\n\n","title":"Options","titles":["RAG API Pipeline CLI Reference Documentation","Pipeline Commands","run from-normalized"]},"97":{"href":"/cli/reference#run-from-chunked","html":"\n

Executes the RAG data pipeline using an already chunked dataset in JSONL format.

\n
(venv) user$ rag-api-pipeline run from-chunked --help\nUsage: rag-api-pipeline run from-chunked [OPTIONS] API_MANIFEST_FILE\n \n  Execute the RAG API pipeline from chunked data.\n \n  API_MANIFEST_FILE Path to the API manifest YAML file that defines pipeline\n  config settings and API endpoints.\n \nOptions:\n  --chunked-data-file PATH  Chunked data in JSONL format  [required]\n  --help                    Show this message and exit.
\n","isPage":false,"text":"\nExecutes the RAG data pipeline using an already chunked dataset in JSONL format.\n(venv) user$ rag-api-pipeline run from-chunked --help\nUsage: rag-api-pipeline run from-chunked [OPTIONS] API_MANIFEST_FILE\n \n Execute the RAG API pipeline from chunked data.\n \n API_MANIFEST_FILE Path to the API manifest YAML file that defines pipeline\n config settings and API endpoints.\n \nOptions:\n --chunked-data-file PATH Chunked data in JSONL format [required]\n --help Show this message and exit.\n","title":"run from-chunked","titles":["RAG API Pipeline CLI Reference Documentation","Pipeline Commands"]},"98":{"href":"/cli/reference#arguments-2","html":"\n\n","isPage":false,"text":"\n\nAPI_MANIFEST_FILE: Pipeline YAML manifest that defines the Pipeline config settings and API endpoints to extract.\n\n","title":"Arguments","titles":["RAG API Pipeline CLI Reference Documentation","Pipeline Commands","run from-chunked"]},"99":{"href":"/cli/reference#options-3","html":"\n\n","isPage":false,"text":"\n\n--chunked-data-file FILE (required): Chunked data in JSONL format.\n\n","title":"Options","titles":["RAG API Pipeline CLI Reference Documentation","Pipeline Commands","run from-chunked"]},"100":{"href":"/cli/reference#examples","html":"\n
    \n
  1. Clean up cachen and run the complete pipeline:
  2. \n
\n
rag-api-pipeline run all config/boardroom_api_pipeline.yaml config/boardroom_openapi.yaml --full-refresh
\n
    \n
  1. Run the pipeline and stop executing after data normalization:
  2. \n
\n
rag-api-pipeline run all config/boardroom_api_pipeline.yaml config/boardroom_openapi.yaml --normalized-only
\n
    \n
  1. Run the pipeline from normalized data:
  2. \n
\n
rag-api-pipeline run from-normalized config/boardroom_api_pipeline.yaml --normalized-data-file path/to/normalized_data.jsonl
\n
    \n
  1. Run the pipeline from chunked data:
  2. \n
\n
rag-api-pipeline run from-chunked config/boardroom_api_pipeline.yaml --chunked-data-file path/to/chunked_data.jsonl
\n","isPage":false,"text":"\n\nClean up cachen and run the complete pipeline:\n\nrag-api-pipeline run all config/boardroom_api_pipeline.yaml config/boardroom_openapi.yaml --full-refresh\n\nRun the pipeline and stop executing after data normalization:\n\nrag-api-pipeline run all config/boardroom_api_pipeline.yaml config/boardroom_openapi.yaml --normalized-only\n\nRun the pipeline from normalized data:\n\nrag-api-pipeline run from-normalized config/boardroom_api_pipeline.yaml --normalized-data-file path/to/normalized_data.jsonl\n\nRun the pipeline from chunked data:\n\nrag-api-pipeline run from-chunked config/boardroom_api_pipeline.yaml --chunked-data-file path/to/chunked_data.jsonl\n","title":"Examples","titles":["RAG API Pipeline CLI Reference Documentation"]},"101":{"href":"/cli/reference#cli-outputs","html":"\n

Cached API stream data and results produced from running any of the rag-api-pipeline run commands are stored in the output/<api_name> folder.\nThe following files and folders are created by the tool within this baseDir folder:

\n","isPage":false,"text":"\nCached API stream data and results produced from running any of the rag-api-pipeline run commands are stored in the output/<api_name> folder.\nThe following files and folders are created by the tool within this baseDir folder:\n\n{baseDir}/{api_name}_source_generated.yaml: generated Airbyte Stream connector manifest.\n{baseDir}/cache/{api_name}/*: extracted API data is cached into a local DuckDB. Database files are stored in this directory. If the --full-refresh argument\nis specified on the run all command, the cache will be cleared and API data will be extracted from scratch.\n{baseDir}/{api_name}_stream_{x}_preprocessed.jsonl: data streams from each API endpoint are preprocessed and stored in JSONL format.\n{baseDir}/{api_name}_normalized.jsonl: preprocessed data streams from each API endpoint are joined together and stored in JSONL format.\n{baseDir}/{api_name}_chunked.jsonl: normalized data that goes through the data chunking stage is then stored in JSONL format.\n{baseDir}/{api_name}_collection-xxxxxxxxxxxxxxxx-yyyy-mm-dd-hh-mm-ss.snapshot: vector embeddings snapshot file that was exported from Qdrant DB.\n{baseDir}/{api_name}_collection-xxxxxxxxxxxxxxxx-yyyy-mm-dd-hh-mm-ss.snapshot.tar.gz: compressed knowledge base that contains the vector embeddings snapshot.\n","title":"CLI Outputs","titles":["RAG API Pipeline CLI Reference Documentation"]},"102":{"href":"/cli/settings#customizing-the-pipeline-config-settings","html":"\n

Most of the pipeline configuration settings are set by running the setup wizard via rag-api-pipeline setup command. However, there are\nmore advanced features that can be also set via environment variables in config/.env.

\n","isPage":true,"text":"\nMost of the pipeline configuration settings are set by running the setup wizard via rag-api-pipeline setup command. However, there are\nmore advanced features that can be also set via environment variables in config/.env.\n","title":"Customizing the Pipeline Config Settings","titles":[]},"103":{"href":"/cli/settings#environment-variables","html":"\n

The following environment variables can be adjusted in config/.env based on the use case requirements:

\n","isPage":false,"text":"\nThe following environment variables can be adjusted in config/.env based on the use case requirements:\n\nPipeline config parameters:\n\nAPI_DATA_ENCODING: data encoding used by the REST API\n\nDefault value: utf-8\n\n\nOUTPUT_FOLDER: output folder where cached data streams, intermediary stage results and generated knowledge base snapshot are stored\n\nDefault value: ./output\n\n\n\n\nLLM provider settings:\n\nLLM_API_BASE_URL: LLM provider base URL (defaults to a local openai-based provider such as gaia node)\n\nDefault value: http://localhost:8080/v1\n\n\nLLM_API_KEY: API key for authenticated requests to the LLM provider\n\nDefault value: empty-api-key\n\n\nLLM_EMBEDDINGS_MODEL: name of the embeddings model to be consumed through the LLM provider\n\nDefault value: Nomic-embed-text-v1.5\n\n\nLLM_EMBEDDINGS_VECTOR_SIZE: embeddings vector size\n\nDefault value: 768\n\n\nLLM_PROVIDER: LLM provider backend to use. It can be either openai or ollama (Gaia offers an OpenAI-compatible API)\n\nDefault value: openai\n\n\n\n\nQdrant DB settings:\n\nQDRANTDB_URL: Qdrant DB base URL\n\nDefault value: http://localhost:6333\n\n\nQDRANTDB_TIMEOUT: timeout for requests made to the Qdrant DB\n\nDefault value: 60\n\n\nQDRANTDB_DISTANCE_FN: score function to use during vector similarity search. Available functions: ['COSINE', 'EUCLID', 'DOT', 'MANHATTAN']\n\nDefault value: COSINE\n\n\n\n\nPathway-related variables:\n\nAUTOCOMMIT_DURATION_MS: the maximum time between two commits. Every autocommit_duration_ms milliseconds, the updates received by the connector are\ncommitted automatically and pushed into Pathway's dataflow. More information can be found here\n\nDefault value: 1000\n\n\nFixedDelayRetryStrategy (docs) config parameters:\n\nPATHWAY_RETRY_MAX_ATTEMPTS: max retries to be performed if a UDF async execution fails\n\nDefault value: 10\n\n\nPATHWAY_RETRY_DELAY_MS: delay in milliseconds to wait for the next execution attempt\n\nDefault value: 1000\n\n\n\n\nUDF async execution: set the maximum number of concurrent operations per batch during UDF async execution. Zero means no specific limits. Be careful when setting\nthese parameters for the embeddings stage as it could break the LLM provider with too many concurrent requests\n\nCHUNKING_BATCH_CAPACITY: max number of concurrent operations during data chunking operations\n\nDefault value: 0\n\n\nEMBEDDINGS_BATCH_CAPACITY: max number of concurrent operations during vector embeddings operations\n\nDefault value: 15\n\n\n\n\n\n\n","title":"Environment variables","titles":["Customizing the Pipeline Config Settings"]},"104":{"href":"/cli/setup#rag-api-pipeline---setup","html":"\n

The rag-api-pipeline CLI offers a setup wizard command that allows you to quickly setup the pipeline settings so you can start creating\nRAG API pipelines in a few seconds. Below is an overview of the command options:

\n
(venv) user$ rag-api-pipeline setup --help\nUsage: rag-api-pipeline setup [OPTIONS]\n \n  Setup wizard to config the pipeline settings prior execution\n \nOptions:\n  --debug                      enable logging debug level\n  --llm-provider [gaia|other]  LLM provider  [default: gaia]\n  --help                       Show this message and exit.
\n

The setup wizard is a three stage process that request you to set some configuration parameters required for the pipeline to execute. For\neach parameter, the wizard suggests a default value/configuration that can be automatically used by hitting the enter key.

\n

Example:

\n
(venv) user$ rag-api-pipeline setup\nWhich LLM provider you want to use? (gaia, other) [gaia]:\nInit pipeline...\n(Step 1/3) Setting Pipeline LLM provider settings...\nLLM provider API URL [http://127.0.0.1:8080/v1]: https://0xd0275a4f8ef0d4b2dc0a3baf3d405a63bc647340.us.gaianet.network/v1\nLLM Provider API connection OK!\nEmbeddings model Name [Nomic-embed-text-v1.5]:\nEmbeddings Vector Size [768]:\nPipeline LLM Provider settings OK!\n(Step 2/3) Setting API Source settings...\nREST API Key:\nAPI Key stored in config/secrets/api_key\n(Step 3/3) Setting Vector DB settings...\nDo you have a running QdrantDB instance? [y/N]:\nChecking Docker settings...\nDocker requirements OK!\nStarting a QdrantDB instance using Docker....\n \n Network gaia-rag-api_rag_api_pipeline_network  Creating\n Network gaia-rag-api_rag_api_pipeline_network  Created\n Container gaia-rag-api-qdrant-1  Creating\n Container gaia-rag-api-qdrant-1  Created\n Container gaia-rag-api-qdrant-1  Starting\n Container gaia-rag-api-qdrant-1  Started\n \nPipeline Setup completed!\n \n            You can use the pipeline by running either rag-api-pipeline run --help\n            or docker compose run pipeline --help
\n

You can run the setup command as many times as you want. If the pipeline was already setup, the CLI will prompt you with a confirmation\nmessage to cleanup previous configurations:

\n
Init pipeline...\nA .env file already exists in config/.env\nDo you want to init the pipeline configuration from scratch? [y/N]: y
\n
    \n
  1. Set the LLM Provider
  2. \n
\n

By default, the RAG API pipeline is setup to integrate with a Gaia node to use a loaded embeddings model for\ngenerating vector embeddings from extracted content. We recommend reading the guide on how to spin up your own\nGaia node, or check the documentation on supported LLM Providers.

\n
(venv) user$ rag-api-pipeline setup\nWhich LLM provider you want to use? (gaia, other) [gaia]:\nInit pipeline...
\n

The Next step is to provide the Gaia node Base URI. Under the hood, the CLI validates it can connect to the node API, otherwise it will\nprompt you the error:

\n
(Step 1/3) Setting Pipeline LLM provider settings...\nLLM provider API URL [http://127.0.0.1:8080/v1]:\nERROR: LLM Provider API (@ http://127.0.0.1:8080/v1/models) is down. HTTPConnectionPool(host='127.0.0.1', port=8080): Max retries exceeded with url: /v1/models (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x110893c90>: Failed to establish a new connection: [Errno 61] Connection refused'))\nTry again...\nLLM provider API URL [http://127.0.0.1:8080/v1]:
\n

Finally, you'll need to specify the embeddings model name and embeddings vector size:

\n
LLM provider API URL [http://127.0.0.1:8080/v1]: https://0xd0275a4f8ef0d4b2dc0a3baf3d405a63bc647340.us.gaianet.network/v1\nLLM Provider API connection OK!\nEmbeddings model Name [Nomic-embed-text-v1.5]:\nEmbeddings Vector Size [768]:\nPipeline LLM Provider settings OK!
\n
    \n
  1. Set Source API Settings
  2. \n
\n

In this stage, you are required to specify the API Key that will be used to make authenticated requests to your target REST API. This value\nwill be stored in the secrets folder.

\n
(Step 2/3) Setting API Source settings...\nREST API Key:\nAPI Key stored in config/secrets/api_key
\n
    \n
  1. Set Vector Database Settings
  2. \n
\n

The final stage is in charge of configuring connection to the Vector Database. If you already have a QdrantDB instance running somewhere,\nyou can specify the Server URL. The CLI validates it can connect to the service instance, otherwise it will prompt you the error:

\n
(Step 3/3) Setting Vector DB settings...\nDo you have a running QdrantDB instance? [y/N]: y\nEnter your Qdrant Server URL [http://127.0.0.1:6333]:\nERROR: QdrantDB (@ http://127.0.0.1:6333) is down. HTTPConnectionPool(host='127.0.0.1', port=6333): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x105873910>: Failed to establish a new connection: [Errno 61] Connection refused'))\nTry again...\nEnter your Qdrant Server URL [http://127.0.0.1:6333]:
\n

If you don't have a running QdrantDB instance, the CLI will attempt to spin up one using Docker. During this process, the CLI validates\nthe host computer has the Docker daemon is installed and running, otherwise it will prompt you the error:

\n
(Step 3/3) Setting Vector DB settings...\nDo you have a running QdrantDB instance? [y/N]:\nChecking Docker settings...\nERROR: Docker daemon is not running. Please start Docker before proceeding\nDo you want to try again? [Y/n]:
\n

If docker is available, it will deploy and start a QdrantDB container using docker-compose (or will omit this step is the container is already running).

\n
Do you have a running QdrantDB instance? [y/N]:\nChecking Docker settings...\nDocker requirements OK!\nStarting a QdrantDB instance using Docker....\n \n Network gaia-rag-api_rag_api_pipeline_network  Creating\n Network gaia-rag-api_rag_api_pipeline_network  Created\n Container gaia-rag-api-qdrant-1  Creating\n Container gaia-rag-api-qdrant-1  Created\n Container gaia-rag-api-qdrant-1  Starting\n Container gaia-rag-api-qdrant-1  Started
\n

At the end, you'll see a Pipeline Setup completed! message, confirming that all selected settings will be stored in the config/.env file.

\n

Now, you're ready to start using the RAG API pipeline by running either rag-api-pipeline run or docker compose run pipeline command.\nIn the next section, you can find the complete CLI reference for each subcommand or task available in the pipeline.

","isPage":true,"text":"\nThe rag-api-pipeline CLI offers a setup wizard command that allows you to quickly setup the pipeline settings so you can start creating\nRAG API pipelines in a few seconds. Below is an overview of the command options:\n(venv) user$ rag-api-pipeline setup --help\nUsage: rag-api-pipeline setup [OPTIONS]\n \n Setup wizard to config the pipeline settings prior execution\n \nOptions:\n --debug enable logging debug level\n --llm-provider [gaia|other] LLM provider [default: gaia]\n --help Show this message and exit.\nThe setup wizard is a three stage process that request you to set some configuration parameters required for the pipeline to execute. For\neach parameter, the wizard suggests a default value/configuration that can be automatically used by hitting the enter key.\nExample:\n(venv) user$ rag-api-pipeline setup\nWhich LLM provider you want to use? (gaia, other) [gaia]:\nInit pipeline...\n(Step 1/3) Setting Pipeline LLM provider settings...\nLLM provider API URL [http://127.0.0.1:8080/v1]: https://0xd0275a4f8ef0d4b2dc0a3baf3d405a63bc647340.us.gaianet.network/v1\nLLM Provider API connection OK!\nEmbeddings model Name [Nomic-embed-text-v1.5]:\nEmbeddings Vector Size [768]:\nPipeline LLM Provider settings OK!\n(Step 2/3) Setting API Source settings...\nREST API Key:\nAPI Key stored in config/secrets/api_key\n(Step 3/3) Setting Vector DB settings...\nDo you have a running QdrantDB instance? [y/N]:\nChecking Docker settings...\nDocker requirements OK!\nStarting a QdrantDB instance using Docker....\n \n Network gaia-rag-api_rag_api_pipeline_network Creating\n Network gaia-rag-api_rag_api_pipeline_network Created\n Container gaia-rag-api-qdrant-1 Creating\n Container gaia-rag-api-qdrant-1 Created\n Container gaia-rag-api-qdrant-1 Starting\n Container gaia-rag-api-qdrant-1 Started\n \nPipeline Setup completed!\n \n You can use the pipeline by running either rag-api-pipeline run --help\n or docker compose run pipeline --help\nYou can run the setup command as many times as you want. If the pipeline was already setup, the CLI will prompt you with a confirmation\nmessage to cleanup previous configurations:\nInit pipeline...\nA .env file already exists in config/.env\nDo you want to init the pipeline configuration from scratch? [y/N]: y\n\nSet the LLM Provider\n\nBy default, the RAG API pipeline is setup to integrate with a Gaia node to use a loaded embeddings model for\ngenerating vector embeddings from extracted content. We recommend reading the guide on how to spin up your own\nGaia node, or check the documentation on supported LLM Providers.\n(venv) user$ rag-api-pipeline setup\nWhich LLM provider you want to use? (gaia, other) [gaia]:\nInit pipeline...\nThe Next step is to provide the Gaia node Base URI. Under the hood, the CLI validates it can connect to the node API, otherwise it will\nprompt you the error:\n(Step 1/3) Setting Pipeline LLM provider settings...\nLLM provider API URL [http://127.0.0.1:8080/v1]:\nERROR: LLM Provider API (@ http://127.0.0.1:8080/v1/models) is down. HTTPConnectionPool(host='127.0.0.1', port=8080): Max retries exceeded with url: /v1/models (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x110893c90>: Failed to establish a new connection: [Errno 61] Connection refused'))\nTry again...\nLLM provider API URL [http://127.0.0.1:8080/v1]:\nFinally, you'll need to specify the embeddings model name and embeddings vector size:\nLLM provider API URL [http://127.0.0.1:8080/v1]: https://0xd0275a4f8ef0d4b2dc0a3baf3d405a63bc647340.us.gaianet.network/v1\nLLM Provider API connection OK!\nEmbeddings model Name [Nomic-embed-text-v1.5]:\nEmbeddings Vector Size [768]:\nPipeline LLM Provider settings OK!\n\nSet Source API Settings\n\nIn this stage, you are required to specify the API Key that will be used to make authenticated requests to your target REST API. This value\nwill be stored in the secrets folder.\n(Step 2/3) Setting API Source settings...\nREST API Key:\nAPI Key stored in config/secrets/api_key\n\nSet Vector Database Settings\n\nThe final stage is in charge of configuring connection to the Vector Database. If you already have a QdrantDB instance running somewhere,\nyou can specify the Server URL. The CLI validates it can connect to the service instance, otherwise it will prompt you the error:\n(Step 3/3) Setting Vector DB settings...\nDo you have a running QdrantDB instance? [y/N]: y\nEnter your Qdrant Server URL [http://127.0.0.1:6333]:\nERROR: QdrantDB (@ http://127.0.0.1:6333) is down. HTTPConnectionPool(host='127.0.0.1', port=6333): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x105873910>: Failed to establish a new connection: [Errno 61] Connection refused'))\nTry again...\nEnter your Qdrant Server URL [http://127.0.0.1:6333]:\nIf you don't have a running QdrantDB instance, the CLI will attempt to spin up one using Docker. During this process, the CLI validates\nthe host computer has the Docker daemon is installed and running, otherwise it will prompt you the error:\n(Step 3/3) Setting Vector DB settings...\nDo you have a running QdrantDB instance? [y/N]:\nChecking Docker settings...\nERROR: Docker daemon is not running. Please start Docker before proceeding\nDo you want to try again? [Y/n]:\nIf docker is available, it will deploy and start a QdrantDB container using docker-compose (or will omit this step is the container is already running).\nDo you have a running QdrantDB instance? [y/N]:\nChecking Docker settings...\nDocker requirements OK!\nStarting a QdrantDB instance using Docker....\n \n Network gaia-rag-api_rag_api_pipeline_network Creating\n Network gaia-rag-api_rag_api_pipeline_network Created\n Container gaia-rag-api-qdrant-1 Creating\n Container gaia-rag-api-qdrant-1 Created\n Container gaia-rag-api-qdrant-1 Starting\n Container gaia-rag-api-qdrant-1 Started\nAt the end, you'll see a Pipeline Setup completed! message, confirming that all selected settings will be stored in the config/.env file.\nNow, you're ready to start using the RAG API pipeline by running either rag-api-pipeline run or docker compose run pipeline command.\nIn the next section, you can find the complete CLI reference for each subcommand or task available in the pipeline.","title":"RAG API Pipeline - Setup","titles":[]},"105":{"href":"/manifest-definition/overview#api-pipeline-manifest---overview","html":"\n

The rag-api-pipeline utilizes Airbyte's CDK low-code framework to create source connectors for REST APIs.\nUnder the hood, it generates a declarative stream manifest in YAML format using\ntwo specification files:

\n
    \n
  1. A well-defined OpenAPI specification for the target REST API: most API providers publish their OpenAPI-based schema definitions in their site.\nIn case it is unavailable, various tools are available online to help you generate or convert an API spec schemas into the required format.
  2. \n
  3. A source RAG API pipeline manifest: you'll learn how to define it in the next section.
  4. \n
\n","isPage":true,"text":"\nThe rag-api-pipeline utilizes Airbyte's CDK low-code framework to create source connectors for REST APIs.\nUnder the hood, it generates a declarative stream manifest in YAML format using\ntwo specification files:\n\nA well-defined OpenAPI specification for the target REST API: most API providers publish their OpenAPI-based schema definitions in their site.\nIn case it is unavailable, various tools are available online to help you generate or convert an API spec schemas into the required format.\nA source RAG API pipeline manifest: you'll learn how to define it in the next section.\n\n","title":"API Pipeline Manifest - Overview","titles":[]},"106":{"href":"/manifest-definition/overview#rag-api-pipeline-manifest---schema-definition","html":"\n

A base manifest template is available in the repository. The API pipeline manifest MUST comply with the following schema:

\n","isPage":false,"text":"\nA base manifest template is available in the repository. The API pipeline manifest MUST comply with the following schema:\n","title":"RAG API Pipeline Manifest - Schema Definition","titles":["API Pipeline Manifest - Overview"]},"107":{"href":"/manifest-definition/overview#api_name","html":"\n

An alphanumeric name for the API pipeline.

\n","isPage":false,"text":"\nAn alphanumeric name for the API pipeline.\n","title":"api_name","titles":["API Pipeline Manifest - Overview","RAG API Pipeline Manifest - Schema Definition"]},"108":{"href":"/manifest-definition/overview#api_parameters","html":"\n

Contains a list of parameters required for building API requests. These parameters with their values MUST be defined in the spec section. Parameter values are accessible throughout the manifest by using the config object .

\n","isPage":false,"text":"\nContains a list of parameters required for building API requests. These parameters with their values MUST be defined in the spec section. Parameter values are accessible throughout the manifest by using the config object .\n","title":"api_parameters","titles":["API Pipeline Manifest - Overview","RAG API Pipeline Manifest - Schema Definition"]},"109":{"href":"/manifest-definition/overview#api_config","html":"\n

Defines the following API metadata for building requests:

\n\n","isPage":false,"text":"\nDefines the following API metadata for building requests:\n\nrequest_method: HTTP request method to use (e.g., "get")\ncontent_type: API-supported content type (e.g., "application/json")\nresponse_entrypoint_field: Field that wraps data records (e.g., "data"). Can be set to an empty string if not required\n\n","title":"api_config","titles":["API Pipeline Manifest - Overview","RAG API Pipeline Manifest - Schema Definition"]},"110":{"href":"/manifest-definition/overview#chunking_params","html":"\n

Parameters used to adjust how the pipeline applies chunking to the normalized data. A more detailed information about each parameter is available in the unstructured library documentation. Default parameter values are:

\n\n","isPage":false,"text":"\nParameters used to adjust how the pipeline applies chunking to the normalized data. A more detailed information about each parameter is available in the unstructured library documentation. Default parameter values are:\n\nmode: elements\nchunking_strategy: by_title\ninclude_orig_elements: true\nmax_characters: 1500\nnew_after_n_chars: 1024\noverlap: 0\noverlap_all: false\ncombine_text_under_n_chars: 0\nmultipage_sections: true\n\n","title":"chunking_params","titles":["API Pipeline Manifest - Overview","RAG API Pipeline Manifest - Schema Definition"]},"111":{"href":"/manifest-definition/overview#airbyte-connector-definitions","html":"\n

An Airbyte declarative manifest requires the following schema definitions:

\n","isPage":false,"text":"\nAn Airbyte declarative manifest requires the following schema definitions:\n","title":"Airbyte Connector Definitions","titles":["API Pipeline Manifest - Overview","RAG API Pipeline Manifest - Schema Definition"]},"112":{"href":"/manifest-definition/overview#spec","html":"\n

A source specification comprising connector metadata and configuration options (Docs).\nAll parameters defined in the api_parameters section MUST also be listed under required and properties.

\n","isPage":false,"text":"\nA source specification comprising connector metadata and configuration options (Docs).\nAll parameters defined in the api_parameters section MUST also be listed under required and properties.\n","title":"spec","titles":["API Pipeline Manifest - Overview","RAG API Pipeline Manifest - Schema Definition","Airbyte Connector Definitions"]},"113":{"href":"/manifest-definition/overview#selector","html":"\n

The record selector is in change of translating an HTTP response into a list of Airbyte records (Docs).\nThe API pipeline manifest template includes two base selectors for single/multiple record responses:

\n
selector:\n    type: RecordSelector\n    extractor:\n      type: DpathExtractor\n      field_path: ["data"] # data field wraps multiple record data responses\nselector_single:\n    type: RecordSelector\n    extractor:\n        type: DpathExtractor\n        field_path: []
\n","isPage":false,"text":"\nThe record selector is in change of translating an HTTP response into a list of Airbyte records (Docs).\nThe API pipeline manifest template includes two base selectors for single/multiple record responses:\nselector:\n type: RecordSelector\n extractor:\n type: DpathExtractor\n field_path: ["data"] # data field wraps multiple record data responses\nselector_single:\n type: RecordSelector\n extractor:\n type: DpathExtractor\n field_path: []\n","title":"selector","titles":["API Pipeline Manifest - Overview","RAG API Pipeline Manifest - Schema Definition","Airbyte Connector Definitions"]},"114":{"href":"/manifest-definition/overview#requester_base","html":"\n

The Requester defines how to prepare HTTP requests for the source API (Docs).\nIt specifies the API base_url and authenticator schema. Airbyte supports common authentication methods: ApiKeyAuthenticator, BearerAuthenticator, BasicHttpAuthenticator, and OAuth.\nDetailed configuration instructions for each method are available in this link

\n","isPage":false,"text":"\nThe Requester defines how to prepare HTTP requests for the source API (Docs).\nIt specifies the API base_url and authenticator schema. Airbyte supports common authentication methods: ApiKeyAuthenticator, BearerAuthenticator, BasicHttpAuthenticator, and OAuth.\nDetailed configuration instructions for each method are available in this link\n","title":"requester_base","titles":["API Pipeline Manifest - Overview","RAG API Pipeline Manifest - Schema Definition","Airbyte Connector Definitions"]},"115":{"href":"/manifest-definition/overview#paginator","html":"\n

Defines the pagination strategy for API endpoints returning multiple records (Docs).\nAirbyte supports Page increment, Offset increment, and Cursor based pagination strategies. The "#/definitions/NoPagination" is automatically set for endpoints returning a single record.

\n","isPage":false,"text":"\nDefines the pagination strategy for API endpoints returning multiple records (Docs).\nAirbyte supports Page increment, Offset increment, and Cursor based pagination strategies. The "#/definitions/NoPagination" is automatically set for endpoints returning a single record.\n","title":"paginator","titles":["API Pipeline Manifest - Overview","RAG API Pipeline Manifest - Schema Definition","Airbyte Connector Definitions"]},"116":{"href":"/manifest-definition/overview#retriever_base","html":"\n

The Retriever object defines how to fetch records through synchronous API requests (Docs).\nIt is in charge of orchestrating the requester, record selector, and paginator. The API pipeline manifest template includes a base retriever for each selector:

\n
retriever_base:\n    type: SimpleRetriever\n    record_selector:\n      $ref: "#/definitions/selector"\nretriever_single_base:\n    type: SimpleRetriever\n    record_selector:\n      $ref: "#/definitions/selector_single"
\n","isPage":false,"text":"\nThe Retriever object defines how to fetch records through synchronous API requests (Docs).\nIt is in charge of orchestrating the requester, record selector, and paginator. The API pipeline manifest template includes a base retriever for each selector:\nretriever_base:\n type: SimpleRetriever\n record_selector:\n $ref: "#/definitions/selector"\nretriever_single_base:\n type: SimpleRetriever\n record_selector:\n $ref: "#/definitions/selector_single"\n","title":"retriever_base","titles":["API Pipeline Manifest - Overview","RAG API Pipeline Manifest - Schema Definition","Airbyte Connector Definitions"]},"117":{"href":"/manifest-definition/overview#api-endpoints-definitions","html":"\n

The endpoints section defines a whitelist of API endpoints from the all the paths defined in the OpenAPI spec. The pipeline will only extract data from endpoints defined here.\nEach endpoint should follow the following schema:

\n\n

Example:

\n
"/example/{foo}":\n    id: "example"\n    primary_key: "id"\n    responseSchema: "#/schemas/exampleSchema"\n    textSchema:\n      $ref: "#/textSchemas/Example"\n/about:\n    id: "about"\n    primary_key: "id"\n    responseSchema: "#/schemas/aboutSchema"\n    textSchema:\n      $ref: "#/textSchemas/About"
\n","isPage":false,"text":"\nThe endpoints section defines a whitelist of API endpoints from the all the paths defined in the OpenAPI spec. The pipeline will only extract data from endpoints defined here.\nEach endpoint should follow the following schema:\n\nEndpoint path: can be enclosed in double quotes to inject parameters defined in api_parameters (e.g., "/example/{foo}")\nid: string identifier for the endpoint\nprimary_key (Optional): a field to be used as primary key on each record\nresponseSchema: the schema returned by the API endpoint after applying the selector.\nIt MUST an unwrapped schema when compared to the endpoint response schema defined in the OpenAPI spec file.\ntextSchema: set the list of fields that should be parsed as text inputs during the data chunking stage. Fields included here MUST be in the endpoint's responseSchema.\n\nExample:\n"/example/{foo}":\n id: "example"\n primary_key: "id"\n responseSchema: "#/schemas/exampleSchema"\n textSchema:\n $ref: "#/textSchemas/Example"\n/about:\n id: "about"\n primary_key: "id"\n responseSchema: "#/schemas/aboutSchema"\n textSchema:\n $ref: "#/textSchemas/About"\n","title":"API Endpoints Definitions","titles":["API Pipeline Manifest - Overview","RAG API Pipeline Manifest - Schema Definition"]},"118":{"href":"/manifest-definition/overview#schemas","html":"\n

Endpoint response schemas should be listed here and referenced in the endpoint's responseSchema. Unwrapped schemas must match response schemas defined in the OpenAPI spec.

\n

Example:

\n

Endpoint response:

\n
{\n    data: [\n        {id: "0", title: "foo", createdAt: "2024-11-01T21:08:05.231Z"}, \n        {id: "0", title: "bar", createdAt: "2024-11-06T21:08:05.231Z"},\n    ]\n}
\n

Endpoint schema:

\n
schemas:\n    exampleSchema:\n        type: object\n        $schema: http://json-schema.org/draft-07/schema#\n        properties:\n        id:\n            type: string\n        title:\n            type: string\n        createdAt:\n            type: string
\n","isPage":false,"text":"\nEndpoint response schemas should be listed here and referenced in the endpoint's responseSchema. Unwrapped schemas must match response schemas defined in the OpenAPI spec.\nExample:\nEndpoint response:\n{\n data: [\n {id: "0", title: "foo", createdAt: "2024-11-01T21:08:05.231Z"}, \n {id: "0", title: "bar", createdAt: "2024-11-06T21:08:05.231Z"},\n ]\n}\nEndpoint schema:\nschemas:\n exampleSchema:\n type: object\n $schema: http://json-schema.org/draft-07/schema#\n properties:\n id:\n type: string\n title:\n type: string\n createdAt:\n type: string\n","title":"schemas","titles":["API Pipeline Manifest - Overview","RAG API Pipeline Manifest - Schema Definition"]},"119":{"href":"/manifest-definition/overview#textschemas","html":"\n

For each endpoint, you can specify the list of fields that should be be parsed as text inputs during data chunking stage.\nThese can be defined within this section and referenced in the endpoint's textSchema. Fields included here MUST be in the endpoint's responseSchema.

\n

Example:

\n

Endpoint textSchema:

\n
textSchemas:\n    Example:\n        type: object\n        properties:\n        title:\n            type: string
","isPage":false,"text":"\nFor each endpoint, you can specify the list of fields that should be be parsed as text inputs during data chunking stage.\nThese can be defined within this section and referenced in the endpoint's textSchema. Fields included here MUST be in the endpoint's responseSchema.\nExample:\nEndpoint textSchema:\ntextSchemas:\n Example:\n type: object\n properties:\n title:\n type: string","title":"textSchemas","titles":["API Pipeline Manifest - Overview","RAG API Pipeline Manifest - Schema Definition"]},"120":{"href":"/manifest-definition/sample-manifests#sample-api-pipeline-manifests","html":"\n

Below you can find the full source RAG API pipeline manifest files that are used to extract DAO-related data from two different REST APIs.\nIn the next section you can find a more in-depth overview for each API example.

\n","isPage":true,"text":"\nBelow you can find the full source RAG API pipeline manifest files that are used to extract DAO-related data from two different REST APIs.\nIn the next section you can find a more in-depth overview for each API example.\n","title":"Sample API Pipeline Manifests","titles":[]},"121":{"href":"/manifest-definition/sample-manifests#boardroom-governance-api","html":"\n
version: "3.0.0"\n \napi_name: "metacartel_boardroom_api"\n \napi_parameters:\n  cname: "metacartel"\n  protocol: "metacartel"\n \napi_config:\n  request_method: "get"\n  content_type: "application/json"\n  response_entrypoint_field: "data"\n \nchunking_params:\n  mode: "elements"\n  chunking_strategy: "by_title"\n  include_orig_elements: true\n  max_characters: 1500\n  new_after_n_chars: 1024\n  overlap: 0\n  overlap_all: false\n  combine_text_under_n_chars: 0\n  multipage_sections: true\n \nspec:\n  type: Spec\n  documentation_url: https://docs.airbyte.com/integrations/sources/boardroom\n  connection_specification:\n    $schema: http://json-schema.org/draft-07/schema#\n    title: Boardroom API Spec\n    type: object\n    required:\n      - api_key\n      - cname\n      - protocol\n    additionalProperties: true\n    properties:\n      api_key:\n        type: string\n        description: >-\n          Boardroom API Key. See <a href="https://docs.boardroom.io/docs/api/05c1fb6d88a07-governance-api">here</a>\n          for details.\n        airbyte-secret: true\n      cname:\n        type: string\n        description: >-\n          Protocol ID a.k.a cname\n        examples:\n          - aave\n          - hopprotocol\n      protocol:\n        type: string\n        description: >-\n          Alias for cname. Needed as there are a few endpoints that use `protocol` as parameter id\n        examples:\n          - aave\n          - metacartel\n \ndefinitions:\n  selector:\n    type: RecordSelector\n    extractor:\n      type: DpathExtractor\n      field_path: ["data"]\n  selector_single:\n    type: RecordSelector\n    extractor:\n      type: DpathExtractor\n      field_path: ["data"] # NOTICE: in the case of boardroom: a single record is return wrapped in "data"\n  requester_base:\n    type: HttpRequester\n    url_base: "https://api.boardroom.info/v1"\n    http_method: "GET"\n    authenticator:\n      type: ApiKeyAuthenticator\n      api_token: "{{ config['api_key'] }}"\n      inject_into: # More on https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/request-options#request-options-1\n        type: RequestOption\n        field_name: "key"\n        inject_into: request_parameter\n  retriever_base:\n    type: SimpleRetriever\n    record_selector:\n      $ref: "#/definitions/selector"\n  retriever_single_base:\n    type: SimpleRetriever\n    record_selector:\n      $ref: "#/definitions/selector_single"\n  paginator:\n    type: DefaultPaginator\n    pagination_strategy: # More on https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/pagination#cursor\n      type: CursorPagination\n      cursor_value: "{{ response.get('nextCursor', '') }}"\n      stop_condition: "{{ 'nextCursor' not in response }}"\n    page_token_option:\n      type: RequestOption\n      field_name: "cursor"\n      inject_into: "request_parameter"\n \nendpoints:\n  /discourseTopics:\n    id: "discourseTopics"\n    primary_key: "refId"\n    responseSchema: "#/schemas/discourseTopics"\n    textSchema:\n      $ref: "#/textSchemas/DiscourseTopic"\n  /discourseCategories:\n    id: "discourseCategories"\n    primary_key: "refId"\n    responseSchema: "#/schemas/discourseCategories"\n    textSchema:\n      $ref: "#/textSchemas/DiscourseCategory"\n  /discourseTopicPosts:\n    id: "discourseTopicPosts"\n    primary_key: "refId"\n    responseSchema: "#/schemas/discourseTopicPosts"\n    textSchema:\n      $ref: "#/textSchemas/DiscourseTopicPost"\n  "/protocols/{cname}":\n    id: "protocol"\n    primary_key: "cname"\n    responseSchema: "#/schemas/Protocol"\n    textSchema:\n      $ref: "#/textSchemas/Protocol"\n  "/protocols/{cname}/proposals":\n    id: "proposals"\n    primary_key: "refId"\n    responseSchema: "#/schemas/Proposals"\n    textSchema:\n      $ref: "#/textSchemas/Proposal"\n \nschemas:\n  discourseTopics:\n    type: object\n    $schema: http://json-schema.org/draft-07/schema#\n    properties:\n      id:\n        type: string\n      refId:\n        type: string\n      protocol:\n        type: string\n      imageUrl:\n        type: string\n      title:\n        type: string\n      slug:\n        type: string\n      tags:\n        type: string\n      postsCount:\n        type: integer\n      views:\n        type: integer\n      replyCount:\n        type: integer\n      likeCount:\n        type: integer\n      categoryId:\n        type: integer\n      pinned:\n        type: boolean\n      visible:\n        type: boolean\n      closed:\n        type: boolean\n      archived:\n        type: boolean\n      createdAt:\n        type: string\n      bumpedAt:\n        type: string\n  discourseCategories:\n    type: object\n    $schema: http://json-schema.org/draft-07/schema#\n    properties:\n      id:\n        type: string\n      refId:\n        type: string\n      protocol:\n        type: string\n      name:\n        type: string\n      description:\n        type: string\n      descriptionText:\n        type: string\n      descriptionExcerpt:\n        type: string\n      color:\n        type: string\n      textColor:\n        type: string\n      slug:\n        type: string\n      topicCount:\n        type: integer\n      postCount:\n        type: integer\n      position:\n        type: integer\n      topicUrl:\n        type: string\n      numFeaturedTopics:\n        type: integer\n      topicsWeek:\n        type: integer\n      topicsMonth:\n        type: integer\n      topicsYear:\n        type: integer\n      topicsAllTime:\n        type: integer\n  discourseTopicPosts:\n    type: object\n    $schema: http://json-schema.org/draft-07/schema#\n    properties:\n      id:\n        type: string\n      refId:\n        type: string\n      protocol:\n        type: string\n      body:\n        type: string\n      authorName:\n        type: string\n      authorUsername:\n        type: string\n      authorAvatar:\n        type: string\n      topicId:\n        type: integer\n      authorId:\n        type: integer\n      reads:\n        type: integer\n      readersCount:\n        type: integer\n      likeCount:\n        type: integer\n      quoteCount:\n        type: integer\n      replyCount:\n        type: integer\n      replyToPostNumber:\n        type:\n          - integer\n          - 'null'\n      postNumber:\n        type: integer\n      createdAt:\n        type: string\n      updatedAt:\n        type: string\n  Protocol:\n    type: object\n    $schema: http://json-schema.org/draft-07/schema#\n    properties:\n      cname:\n        type: string\n      name:\n        type: string\n      categories:\n        type: array\n        items:\n          type: string\n      isEnabled:\n        type: boolean\n      activeOnWebsite:\n        type: boolean\n      totalProposals:\n        type: integer\n      totalVotes:\n        type: integer\n      uniqueVoters:\n        type: integer\n      icons:\n        type: array\n        items:\n          type: object\n          properties:\n            adapter:\n              type: string\n            size:\n              type: string\n            url:\n              type: string\n      tokens:\n        type: array\n        items:\n          type: object\n          properties:\n            adapter:\n              type: string\n            symbol:\n              type: string\n            network:\n              type: string\n            contractAddress:\n              type: string\n            totalSupply:\n              type: integer\n            circulatingSupply:\n              type: integer\n            maxSupply:\n              type: integer\n            marketPrices:\n              type: array\n              items:\n                type: object\n                properties:\n                  currency:\n                    type: string\n                  price:\n                    type: number\n      type:\n        type: string\n      associatedProtocols:\n        type: array\n        items:\n          type: object\n          properties: {}\n      associatedAddresses:\n        type: array\n        items:\n          type: object\n          properties: {}\n      delegationSupport:\n        type: string\n  Proposals:\n    type: object\n    $schema: http://json-schema.org/draft-07/schema#\n    properties:\n      refId:\n        type: string\n      id:\n        type: string\n      title:\n        type: string\n      content:\n        type: string\n      protocol:\n        type: string\n      adapter:\n        type: string\n      proposer:\n        type: string\n      totalVotes:\n        type: integer\n      blockNumber:\n        type: integer\n      externalUrl:\n        type: string\n      startTime:\n        type: object\n        properties:\n          timestamp:\n            type: integer\n      endTime:\n        type: object\n        properties:\n          timestamp:\n            type: integer\n      startTimestamp:\n        type: string\n      endTimestamp:\n        type: string\n      currentState:\n        type: string\n      choices:\n        type: array\n        items:\n          type: string\n      results:\n        type: array\n        items:\n          type: object\n          properties:\n            total:\n              type: number\n            choice:\n              type: integer\n      events:\n        type: array\n        items:\n          type: object\n          properties: {}\n      type:\n        type: string\n      indexedResult:\n        type: array\n        items:\n          type: object\n          properties:\n            total:\n              type: string\n            choice:\n              type: string\n      summary:\n        type: string\n      privacy:\n        type: string\n      indexedAt:\n        type: integer\n      txHash:\n        type: string\n      quorum:\n        type: integer\n \ntextSchemas:\n  Protocol:\n    type: object\n    properties:\n      cname:\n        type: string\n      name:\n        type: string\n      categories:\n        type: array\n        items:\n          type: string\n  Proposal:\n    type: object\n    properties:\n      title:\n        type: string\n      content:\n        type: string\n      summary:\n        type: string\n  DiscourseTopic:\n    type: object\n    properties:\n      title:\n        type: string\n  DiscourseCategory:\n    type: object\n    properties:\n      name:\n        type: string\n      description:\n        type: string\n  DiscourseTopicPost:\n    type: object\n    properties:\n      body:\n        type: string
\n","isPage":false,"text":"\nversion: "3.0.0"\n \napi_name: "metacartel_boardroom_api"\n \napi_parameters:\n cname: "metacartel"\n protocol: "metacartel"\n \napi_config:\n request_method: "get"\n content_type: "application/json"\n response_entrypoint_field: "data"\n \nchunking_params:\n mode: "elements"\n chunking_strategy: "by_title"\n include_orig_elements: true\n max_characters: 1500\n new_after_n_chars: 1024\n overlap: 0\n overlap_all: false\n combine_text_under_n_chars: 0\n multipage_sections: true\n \nspec:\n type: Spec\n documentation_url: https://docs.airbyte.com/integrations/sources/boardroom\n connection_specification:\n $schema: http://json-schema.org/draft-07/schema#\n title: Boardroom API Spec\n type: object\n required:\n - api_key\n - cname\n - protocol\n additionalProperties: true\n properties:\n api_key:\n type: string\n description: >-\n Boardroom API Key. See <a href="https://docs.boardroom.io/docs/api/05c1fb6d88a07-governance-api">here</a>\n for details.\n airbyte-secret: true\n cname:\n type: string\n description: >-\n Protocol ID a.k.a cname\n examples:\n - aave\n - hopprotocol\n protocol:\n type: string\n description: >-\n Alias for cname. Needed as there are a few endpoints that use `protocol` as parameter id\n examples:\n - aave\n - metacartel\n \ndefinitions:\n selector:\n type: RecordSelector\n extractor:\n type: DpathExtractor\n field_path: ["data"]\n selector_single:\n type: RecordSelector\n extractor:\n type: DpathExtractor\n field_path: ["data"] # NOTICE: in the case of boardroom: a single record is return wrapped in "data"\n requester_base:\n type: HttpRequester\n url_base: "https://api.boardroom.info/v1"\n http_method: "GET"\n authenticator:\n type: ApiKeyAuthenticator\n api_token: "{{ config['api_key'] }}"\n inject_into: # More on https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/request-options#request-options-1\n type: RequestOption\n field_name: "key"\n inject_into: request_parameter\n retriever_base:\n type: SimpleRetriever\n record_selector:\n $ref: "#/definitions/selector"\n retriever_single_base:\n type: SimpleRetriever\n record_selector:\n $ref: "#/definitions/selector_single"\n paginator:\n type: DefaultPaginator\n pagination_strategy: # More on https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/pagination#cursor\n type: CursorPagination\n cursor_value: "{{ response.get('nextCursor', '') }}"\n stop_condition: "{{ 'nextCursor' not in response }}"\n page_token_option:\n type: RequestOption\n field_name: "cursor"\n inject_into: "request_parameter"\n \nendpoints:\n /discourseTopics:\n id: "discourseTopics"\n primary_key: "refId"\n responseSchema: "#/schemas/discourseTopics"\n textSchema:\n $ref: "#/textSchemas/DiscourseTopic"\n /discourseCategories:\n id: "discourseCategories"\n primary_key: "refId"\n responseSchema: "#/schemas/discourseCategories"\n textSchema:\n $ref: "#/textSchemas/DiscourseCategory"\n /discourseTopicPosts:\n id: "discourseTopicPosts"\n primary_key: "refId"\n responseSchema: "#/schemas/discourseTopicPosts"\n textSchema:\n $ref: "#/textSchemas/DiscourseTopicPost"\n "/protocols/{cname}":\n id: "protocol"\n primary_key: "cname"\n responseSchema: "#/schemas/Protocol"\n textSchema:\n $ref: "#/textSchemas/Protocol"\n "/protocols/{cname}/proposals":\n id: "proposals"\n primary_key: "refId"\n responseSchema: "#/schemas/Proposals"\n textSchema:\n $ref: "#/textSchemas/Proposal"\n \nschemas:\n discourseTopics:\n type: object\n $schema: http://json-schema.org/draft-07/schema#\n properties:\n id:\n type: string\n refId:\n type: string\n protocol:\n type: string\n imageUrl:\n type: string\n title:\n type: string\n slug:\n type: string\n tags:\n type: string\n postsCount:\n type: integer\n views:\n type: integer\n replyCount:\n type: integer\n likeCount:\n type: integer\n categoryId:\n type: integer\n pinned:\n type: boolean\n visible:\n type: boolean\n closed:\n type: boolean\n archived:\n type: boolean\n createdAt:\n type: string\n bumpedAt:\n type: string\n discourseCategories:\n type: object\n $schema: http://json-schema.org/draft-07/schema#\n properties:\n id:\n type: string\n refId:\n type: string\n protocol:\n type: string\n name:\n type: string\n description:\n type: string\n descriptionText:\n type: string\n descriptionExcerpt:\n type: string\n color:\n type: string\n textColor:\n type: string\n slug:\n type: string\n topicCount:\n type: integer\n postCount:\n type: integer\n position:\n type: integer\n topicUrl:\n type: string\n numFeaturedTopics:\n type: integer\n topicsWeek:\n type: integer\n topicsMonth:\n type: integer\n topicsYear:\n type: integer\n topicsAllTime:\n type: integer\n discourseTopicPosts:\n type: object\n $schema: http://json-schema.org/draft-07/schema#\n properties:\n id:\n type: string\n refId:\n type: string\n protocol:\n type: string\n body:\n type: string\n authorName:\n type: string\n authorUsername:\n type: string\n authorAvatar:\n type: string\n topicId:\n type: integer\n authorId:\n type: integer\n reads:\n type: integer\n readersCount:\n type: integer\n likeCount:\n type: integer\n quoteCount:\n type: integer\n replyCount:\n type: integer\n replyToPostNumber:\n type:\n - integer\n - 'null'\n postNumber:\n type: integer\n createdAt:\n type: string\n updatedAt:\n type: string\n Protocol:\n type: object\n $schema: http://json-schema.org/draft-07/schema#\n properties:\n cname:\n type: string\n name:\n type: string\n categories:\n type: array\n items:\n type: string\n isEnabled:\n type: boolean\n activeOnWebsite:\n type: boolean\n totalProposals:\n type: integer\n totalVotes:\n type: integer\n uniqueVoters:\n type: integer\n icons:\n type: array\n items:\n type: object\n properties:\n adapter:\n type: string\n size:\n type: string\n url:\n type: string\n tokens:\n type: array\n items:\n type: object\n properties:\n adapter:\n type: string\n symbol:\n type: string\n network:\n type: string\n contractAddress:\n type: string\n totalSupply:\n type: integer\n circulatingSupply:\n type: integer\n maxSupply:\n type: integer\n marketPrices:\n type: array\n items:\n type: object\n properties:\n currency:\n type: string\n price:\n type: number\n type:\n type: string\n associatedProtocols:\n type: array\n items:\n type: object\n properties: {}\n associatedAddresses:\n type: array\n items:\n type: object\n properties: {}\n delegationSupport:\n type: string\n Proposals:\n type: object\n $schema: http://json-schema.org/draft-07/schema#\n properties:\n refId:\n type: string\n id:\n type: string\n title:\n type: string\n content:\n type: string\n protocol:\n type: string\n adapter:\n type: string\n proposer:\n type: string\n totalVotes:\n type: integer\n blockNumber:\n type: integer\n externalUrl:\n type: string\n startTime:\n type: object\n properties:\n timestamp:\n type: integer\n endTime:\n type: object\n properties:\n timestamp:\n type: integer\n startTimestamp:\n type: string\n endTimestamp:\n type: string\n currentState:\n type: string\n choices:\n type: array\n items:\n type: string\n results:\n type: array\n items:\n type: object\n properties:\n total:\n type: number\n choice:\n type: integer\n events:\n type: array\n items:\n type: object\n properties: {}\n type:\n type: string\n indexedResult:\n type: array\n items:\n type: object\n properties:\n total:\n type: string\n choice:\n type: string\n summary:\n type: string\n privacy:\n type: string\n indexedAt:\n type: integer\n txHash:\n type: string\n quorum:\n type: integer\n \ntextSchemas:\n Protocol:\n type: object\n properties:\n cname:\n type: string\n name:\n type: string\n categories:\n type: array\n items:\n type: string\n Proposal:\n type: object\n properties:\n title:\n type: string\n content:\n type: string\n summary:\n type: string\n DiscourseTopic:\n type: object\n properties:\n title:\n type: string\n DiscourseCategory:\n type: object\n properties:\n name:\n type: string\n description:\n type: string\n DiscourseTopicPost:\n type: object\n properties:\n body:\n type: string\n","title":"Boardroom Governance API","titles":["Sample API Pipeline Manifests"]},"122":{"href":"/manifest-definition/sample-manifests#optimism-agora-api","html":"\n
version: "3.0.0"\n \napi_name: "optimism_agora_api"\n \napi_parameters:\n \napi_config:\n  request_method: "get"\n  content_type: "application/json"\n  response_entrypoint_field: "data"\n \nchunking_params:\n  mode: "elements"\n  chunking_strategy: "by_title"\n  include_orig_elements: true\n  max_characters: 1500\n  new_after_n_chars: 1024\n  overlap: 0\n  overlap_all: false\n  combine_text_under_n_chars: 0\n  multipage_sections: true\n \nspec:\n  connection_specification:\n    $schema: http://json-schema.org/draft-07/schema#\n    additionalProperties: true\n    properties:\n      api_key:\n        airbyte-secret: true\n        description: Agora API Key.\n        type: string\n    required:\n    - api_key\n    title: Agora API Spec\n    type: object\n  documentation_url: https://docs.airbyte.com/integrations/sources/agora\n  type: Spec\n \ndefinitions:\n  selector:\n    type: RecordSelector\n    extractor:\n      type: DpathExtractor\n      field_path: ["data"]\n  selector_single:\n    type: RecordSelector\n    extractor:\n      type: DpathExtractor\n      field_path: []\n  requester_base:\n    type: HttpRequester\n    url_base: "https://vote.optimism.io/api/v1"\n    http_method: "GET"\n    authenticator: # More on https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/authentication\n      type: BearerAuthenticator\n      api_token: "{{ config['api_key'] }}"\n  retriever_base:\n    type: SimpleRetriever\n    record_selector:\n      $ref: "#/definitions/selector"\n  retriever_single_base:\n    type: SimpleRetriever\n    record_selector:\n      $ref: "#/definitions/selector_single"\n  paginator: # More on https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/pagination\n    type: DefaultPaginator\n    pagination_strategy: # More on https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/pagination#offset-increment\n      type: "OffsetIncrement"\n      page_size: 50\n    page_token_option:\n      type: "RequestOption"\n      field_name: "offset"\n      inject_into: "request_parameter"\n    page_size_option:\n      type: "RequestOption"\n      inject_into: "request_parameter"\n      field_name: "limit"\n \nendpoints:\n  /proposals:\n    id: "proposals"\n    primary_key: "id"\n    responseSchema: "#/schemas/Proposal"\n    textSchema:\n      $ref: "#/textSchemas/Proposal"\n  /projects:\n    id: "projects"\n    primary_key: "id"\n    responseSchema: "#/schemas/Project"\n    textSchema:\n      $ref: "#/textSchemas/Project"\n \nschemas:\n  PageMetadata:\n    summary: Pagination metadata\n    description: Metadata associated with paginated requests.\n    type: object\n    properties:\n      has_next:\n        summary: Flag indicating if there's more data for retrieval\n        description: A boolean flag indicating if there is additional data past the returned page to retrieve.\n        type: boolean\n      total_returned:\n        summary: Total records returned\n        description: A number indicating the total amount of records returned for the request.\n        type: integer\n        format: int32\n      next_offset:\n        summary: Offset to supply to the next request\n        description: A number indicating the offset at which a subsequent request may retrieve the next set of records.\n        type: integer\n        format: int32\n  Delegation:\n    summary: A delegation of voting power\n    description: A delegation of voting power from one address to another.\n    type: object\n    properties:\n      from:\n        summary: Delegator address\n        description: Address of the delegator.\n        type: string\n        examples:\n          - "0xDa6d1F091B672C0f9e215eB9fa6B5a84bF2c5e11"\n      to:\n        summary: Delegatee address\n        description: Address of the delegatee.\n        type: string\n        examples:\n          - "0xDa6d1F091B672C0f9e215eB9fa6B5a84bF2c5e11"\n      allowance:\n        summary: Voting allowance for delegate in OP tokens (18 decimals)\n        description: Total amount of voting power delegated to or from address.\n        type: string\n        examples:\n          - "100000000000000000000000"\n      timestamp:\n        summary: When delegation occurred\n        description: The datetime on which the delegation of voting power occurred.\n        type: string\n        format: date-time\n        examples:\n          - "2024-01-17T19:37:15.983Z"\n      type:\n        summary: Type of delegation\n        description: The type of delegation; can be advanced or direct. Advanced delegations are made through Alligator. Direct delegations are made through OP token.\n        type: string\n        enum:\n          - DIRECT\n          - ADVANCED\n      amount:\n        summary: Amount delegated\n        description: The amount of voting power delegated; can be full or partial.\n        type: string\n        enum:\n          - FULL\n          - PARTIAL\n      transaction_hash:\n        summary: Transaction hash of delegation\n        description: The transaction hash of the delegation transaction.\n        type: string\n        examples:\n          - "0x8ed595a6f85b2d21e32602094d261034d11706dc100d8f48e11a03c15378cfcf"\n  DelegateChunk:\n    summary: A chunk of delegate data\n    description: Data associated with a voting delegate. Sub-resources under this delegate are not expanded.\n    type: object\n    properties:\n      address:\n        summary: Delegate address\n        description: Address of the delegate.\n        type: string\n        examples:\n          - "0xDa6d1F091B672C0f9e215eB9fa6B5a84bF2c5e11"\n      votingPower:\n        summary: Delegate's available voting power\n        description: An object providing a breakdown of a delegate's overall voting power between direct, advanced, and total.\n        type: object\n        properties:\n          advanced:\n            description: Advanced voting power.\n            type: string\n            examples:\n              - "10000"\n          direct:\n            description: Direct voting power.\n            type: string\n            examples:\n              - "20000"\n          total:\n            description: Total voting power.\n            type: string\n            examples:\n              - "30000"\n      isCitizen:\n        description: A boolean flag indicating whether or not this delegate is an Agora citizen.\n        type: boolean\n      statement:\n        $ref: "#/schemas/DelegateStatement"\n  Delegate:\n    summary: A voting delegate\n    description: Data associated with a voting delegate. Sub-resources under this delegate are not expanded.\n    type: object\n    properties:\n      address:\n        summary: Delegate address\n        description: Address of the delegate.\n        type: string\n        examples:\n          - "0xDa6d1F091B672C0f9e215eB9fa6B5a84bF2c5e11"\n      votingPower:\n        summary: Delegate's available voting power\n        description: An object providing a breakdown of a delegate's overall voting power between direct, advanced, and total.\n        type: object\n        properties:\n          advanced:\n            description: Advanced voting power.\n            type: string\n            examples:\n              - "10000"\n          direct:\n            description: Direct voting power.\n            type: string\n            examples:\n              - "20000"\n          total:\n            description: Total voting power.\n            type: string\n            examples:\n              - "30000"\n      isCitizen:\n        description: A boolean flag indicating whether or not this delegate is an Agora citizen.\n        type: boolean\n      statement:\n        $ref: "#/schemas/DelegateStatement"\n      votingPowerRelativeToVotableSupply:\n        summary: Delegate's voting power relative to votable supply\n        description: The delegate's voting power relative to the votable supply.\n        type: number\n      votingPowerRelativeToQuorum:\n        summary: Delegate's voting power relative to quorum\n        description: The delegate's voting power relative to the quorum.\n        type: number\n      proposalsCreated:\n        summary: Number of proposals created\n        description: The number of proposals created by the delegate.\n        type: number\n      proposalsVotedOn:\n        summary: Number of proposals voted on\n        description: The number of proposals voted on by the delegate.\n        type: number\n      votedFor:\n        summary: Number of proposals voted for\n        description: The number of proposals voted for by the delegate.\n        type: string\n      votedAgainst:\n        summary: Number of proposals voted against\n        description: The number of proposals voted against by the delegate.\n        type: string\n      votedAbstain:\n        summary: Number of proposals abstained from\n        description: The number of proposals abstained from by the delegate.\n        type: string\n      votingParticipation:\n        summary: Voting participation\n        description: The delegate's voting participation.\n        type: string\n      lastTenProps:\n        summary: Number of proposals voted on out of the last ten\n        description: The number of proposals voted on out of the last ten.\n        type: string\n      numOfDelegators:\n        summary: Number of delegators\n        description: The number of delegators.\n        type: string\n  DelegateStatement:\n    summary: A delegate's statement\n    description: A delegate's statement, including the social links and topIssues.\n    type: object\n    properties:\n      statement:\n        summary: Delegate's statement\n        description: A statement from the delegate describing their voting positions.\n        type: string\n      twitter:\n        summary: Twitter handle\n        description: Twitter handle for the delegate.\n        type: string\n      discord:\n        summary: Discord handle\n        description: Discord handle for the delegate.\n        type: string\n      warpcast:\n        summary: Warpcast handle\n        description: Warpcast handle for the delegate.\n        type: string\n      topIssues:\n        summary: Top issues for a delegate\n        description: The most important issues for a given delegate.\n        type: array\n        items:\n          $ref: "#/schemas/Issue"\n  Issue:\n    summary: Description of a governance issue\n    description: An object describing a particular view on a particular governance issue.\n    type: object\n    properties:\n      type:\n        type: string\n        examples:\n          - "Funding"\n      value:\n        type: string\n        examples:\n          - "Grant funding should be directed to projects with a great track record"\n  SnapshotProposalResults:\n    summary: Results of a snapshot proposal\n    description: An object describing the results of a snapshot proposal, including status and scores.\n    type: object\n    properties:\n      scores:\n        summary: Scores for the proposal\n        type: array\n        items:\n          type: string\n      status:\n        summary: Status of the proposal\n        type: string\n        enum:\n          - pending\n          - active\n          - closed\n  StandardProposalResults:\n    summary: Results of a standard proposal\n    description: An object describing the results of a standard proposal.\n    type: object\n    properties:\n      for:\n        summary: Number of votes for\n        type: string\n      against:\n        summary: Number of votes against\n        type: string\n      abstain:\n        summary: Number of abstentions\n        type: string\n  ApprovalProposalResults:\n    summary: Results of an approval proposal\n    description: An object describing the results of an approval proposal.\n    type: object\n    properties:\n      for:\n        summary: Number of votes for\n        type: string\n      against:\n        summary: Number of votes against\n        type: string\n      abstain:\n        summary: Number of abstentions\n        type: string\n      options:\n        type: array\n        items:\n          type: object\n          properties:\n            option:\n              type: string\n            votes:\n              type: string\n      criteria:\n        type: string\n        enum:\n          - THRESHOLD\n          - TOP_CHOICES\n      criteriaValue:\n        summary: Threshold required to pass or number of top choices that is passed\n        type: string\n  OptimisticProposalResults:\n    summary: Results of an optimistic proposal\n    description: An object describing the results of an optimistic proposal.\n    type: object\n    properties:\n      for:\n        summary: Number of votes for\n        type: string\n      against:\n        summary: Number of votes against\n        type: string\n      abstain:\n        summary: Number of abstentions\n        type: string\n  SnapshotProposalData:\n    summary: Data associated with a snapshot proposal\n    description: >\n      Metadata and data associated with a snapshot proposal, including start/end/created times, scores, and votes.\n    type: object\n    properties:\n      votingStrategy:\n        $ref: "#/schemas/VotingStrategy"\n      title:\n        summary: Title of the proposal\n        type: string\n      startTimestamp:\n        summary: Start time of the proposal\n        type: string\n        format: date-time\n      endTimestamp:\n        summary: End time of the proposal\n        type: string\n        format: date-time\n      createdTimestamp:\n        summary: Creation time of the proposal\n        type: string\n        format: date-time\n      link:\n        summary: Link to the proposal\n        type: string\n      scores:\n        summary: Scores for the proposal\n        type: array\n        items:\n          type: string\n      votes:\n        summary: Votes for the proposal\n        type: string\n      state:\n        summary: State of the proposal\n        type: string\n        enum:\n          - ACTIVE\n          - CLOSED\n          - PENDING\n  StandardProposalData:\n    summary: Data associated with standard proposal\n    description: >\n      Metadata and data associated with a standard proposal, including onchain execution data.\n    type: object\n    properties:\n      votingStrategy:\n        $ref: "#/schemas/VotingStrategy"\n      options:\n        type: array\n        items:\n          type: object\n          properties:\n            executionData:\n              $ref: "#/schemas/ExecutionData"\n  ApprovalProposalData:\n    summary: Data associated with an approval proposal\n    description: >\n      Metadata and data associated with an approval proposal, including onchain execution data.\n    type: object\n    properties:\n      votingStrategy:\n        $ref: "#/schemas/VotingStrategy"\n      options:\n        type: array\n        items:\n          type: object\n          properties:\n            executionData:\n              $ref: "#/schemas/ExecutionData"\n            budgetTokensSpent:\n              summary: Budget tokens spent\n              type: string\n            description:\n              summary: Description of the proposal\n              type: string\n      proposalSettings:\n        type: object\n        properties:\n          maxApprovals:\n            summary: Maximum approvals for the proposal\n            type: string\n          criteria:\n            summary: Criteria for the proposal\n            type: string\n            enum:\n              - THRESHOLD\n              - TOP_CHOICES\n          budgetToken:\n            summary: Budget token for the proposal\n            type: string\n          criteriaValue:\n            summary: Criteria value for the proposal\n            type: string\n          budgetAmount:\n            summary: Budget amount for the proposal\n            type: string\n  OptimisticProposalData:\n    summary: Data associated with an optimistic proposal\n    description: >\n      Metadata and data associated with an optimistic proposal, including onchain execution data.\n    type: object\n    properties:\n      votingStrategy:\n        $ref: "#/schemas/VotingStrategy"\n      executionData:\n        $ref: "#/schemas/ExecutionData"\n      description:\n        summary: Description of the proposal\n        type: string\n  ExecutionData:\n    summary: Structured execution data for proposal\n    description: >\n      Provides the values, targets, calldata, and functions for proposal execution.\n    type: object\n    properties:\n      values:\n        summary: Values for execution\n        type: array\n        items:\n          type: string\n      targets:\n        summary: Targets for execution\n        type: array\n        items:\n          type: string\n      signatures:\n        summary: Function signatures\n        type: array\n        items:\n          type: string\n      calldata:\n        summary: Calldata for execution\n        type: array\n        items:\n          type: string\n      description:\n        summary: Description of the option\n        type: string\n      functionArgsName:\n        summary: Functions for execution\n        type: array\n        items:\n          type: object\n          properties:\n            functionName:\n              summary: Function name\n              type: string\n            functionArgs:\n              summary: Data for function\n              type: array\n              items:\n                type: string\n      budgetTokensSpent:\n        summary: Total tokens spent in the option transactions\n        type: string\n  Proposal:\n    summary: A specific governance proposal for voting\n    description: >\n      An object describing the specifics and metadata associated with a particular governance proposal,\n      including the specific measure, proposer, data, etc.\n    type: object\n    properties:\n      id:\n        type: string\n      proposer:\n        summary: Proposer's address\n        description: The address which submitted the proposal for voting.\n        type: string\n      snapshotBlockNumber:\n        summary: Block number of the voting power snapshot\n        description: Block number of the proposal at which the voting power was calculated\n        type: number\n      createdTime:\n        summary: Proposal creation time\n        description: Timestamp on which this proposal was created.\n        type: string\n      startTime:\n        summary: Start time of the proposal\n        description: Timestamp at which this proposal is open for voting.\n        type: string\n      endTime:\n        summary: End time of the proposal\n        description: Timestamp at which the proposal has closed for voting.\n        type: string\n      cancelledTime:\n        summary: Cancelled time of the proposal\n        description: Timestamp at which this proposal has been canceled. Zero if not canceled.\n        type: string\n      executedTime:\n        summary: Execution time of the proposal\n        description: Timestamp at which this proposal has been executed. Zero if not executed.\n        type: string\n      markdowntitle:\n        summary: Title of the proposal\n        description: Title of the proposal\n        type: string\n      description:\n        summary: Description of the proposal\n        description: Extended information and context around the proposal.\n        type: string\n      quorum:\n        summary: Minimum participation for passage\n        description: >\n          The minimum number of voting power needed to be involved in a given proposal as a prerequisite for passage\n        type: string\n      approvalThreshold:\n        summary: Minimum amount needed for option to pass\n        description: The amount of voting power needed to pass an option in the given approval voting proposal.\n        type: string\n      proposalData:\n        oneOf:\n          - $ref: "#/schemas/SnapshotProposalData"\n          - $ref: "#/schemas/StandardProposalData"\n          - $ref: "#/schemas/ApprovalProposalData"\n          - $ref: "#/schemas/OptimisticProposalData"\n        discriminator:\n          propertyName: votingStrategy\n      unformattedProposalData:\n        summary: Unformatted proposal data\n        description: >\n          The raw, unformatted data associated with the proposal.\n        type: string\n      proposalResults:\n        oneOf:\n          - $ref: "#/schemas/SnapshotProposalResults"\n          - $ref: "#/schemas/StandardProposalResults"\n          - $ref: "#/schemas/ApprovalProposalResults"\n          - $ref: "#/schemas/OptimisticProposalResults"\n      proposalType:\n        summary: Type of proposal\n        description: The type of proposal; can be standard, approval, optimistic, or snapshot.\n        type: string\n        enum:\n          - STANDARD\n          - APPROVAL\n          - OPTIMISTIC\n          - SNAPSHOT\n      status:\n        summary: Status of the proposal\n        description: The current status of the proposal; can be active, closed, or pending.\n        type: string\n        enum:\n          - "CANCELLED"\n          - "SUCCEEDED"\n          - "DEFEATED"\n          - "ACTIVE"\n          - "PENDING"\n          - "QUEUED"\n          - "EXECUTED"\n          - "CLOSED"\n      createdTransactionHash:\n        summary: Transaction hash of proposal creation\n        description: The transaction hash of the transaction which created the proposal.\n        type: string\n      cancelledTransactionHash:\n        summary: Transaction hash of proposal cancellation\n        description: The transaction hash of the transaction which canceled the proposal.\n        type: string\n      executedTransactionHash:\n        summary: Transaction hash of proposal execution\n        description: The transaction hash of the transaction which executed the proposal.\n        type: string\n      proposalTemplate:\n        $ref: "#/schemas/ProposalTemplate"\n  ProposalTemplate:\n    summary: Metadata about the proposal\n    description: >\n      An object describing the particular voting parameters of a proposal.\n    type: object\n    properties:\n      name:\n        summary: Name of proposal template\n        description: Name of proposal template\n        type: string\n      proposalTemplateId:\n        summary: Numeric id of the proposal template\n        description: Numeric id of the proposal template\n        type: integer\n      votingStrategy:\n        $ref: "#/schemas/VotingStrategy"\n      quorum:\n        summary: Minimum participation for passage\n        description: >\n          The minimum number of voting power needed to be involved in a given proposal as a prerequisite for passage\n        type: string\n      approvalThreshold:\n        summary: Amount needed for measure to pass\n        description: The amount of voting power needed to pass the given proposal.\n        type: string\n      contractAddress:\n        summary: Governor contract address\n        description: Governor contract address to which this proposal was submitted.\n        type: string\n      createBlock:\n        summary: Proposal creation block number\n        description: Block number on which this proposal template was created.\n        type: string\n  VotingStrategy:\n    summary: The voting strategy for a proposal\n    description: Enum description of the proposal's voting strategy.\n    type: string\n    enum:\n      - STANDARD\n      - ADVANCED\n      - OPTIMISTIC\n      - SNAPSHOT\n  VoteSupport:\n    summary: Disposition of the vote\n    description: Describes which way the vote was cast (i.e. for/against/abstention)\n    type: string\n    enum:\n      - FOR\n      - AGAINST\n      - ABSTAIN\n  Vote:\n    summary: Information about a given vote\n    description: Information and metadata about a specific vote on a governance proposal.\n    type: object\n    properties:\n      transactionHash:\n        summary: Transaction hash of the vote\n        description: The transaction hash of the transaction in which the vote was cast.\n        type: string\n      proposalId:\n        summary: Proposal ID for the vote\n        description: The unique ID of the proposal on which the vote was cast.\n        type: string\n      address:\n        summary: Address casting the vote\n        description: On-chain address of the EOA or contract which cast the vote.\n        type: string\n      support:\n        $ref: "#/schemas/VoteSupport"\n      reason:\n        summary: Reason for the vote\n        description: A voter-supplied reason for voting the particular way they did.\n        type: string\n      weight:\n        summary: Voting power behind the vote\n        description: Numeric description of the weight and voting power behind the vote.\n        type: string\n      params:\n        summary: Array of votes that have been chosen by the voter\n        description: An array of items to submit for approval for multiple choice votes.\n        type: array\n        items:\n          type: string\n      proposalValue:\n        summary: Value of the proposal\n        description: The total value that the proposal will be executed with.\n        type: string\n      proposalTitle:\n        summary: Title of the proposal\n        description: The title of the proposal.\n        type: string\n      proposalType:\n        summary: Type of the proposal\n        description: The type of the proposal.\n        type: string\n        enum:\n          - STANDARD\n          - APPROVAL\n          - OPTIMISTIC\n          - SNAPSHOT\n      timestamp:\n        summary: Timestamp of the vote\n        description: The timestamp at which the vote was cast.\n        type: string\n        format: date-time\n  VotingToken:\n    allOf:\n      - $ref: "#/schemas/Contract"\n      - type: object\n        properties:\n          totalSupply:\n            summary: Total supply of the voting token\n            description: The total supply of the voting token.\n            type: string\n          votableSupply:\n            summary: Votable supply of the voting token\n            description: The votable supply of the voting token.\n            type: string\n  Contract:\n    summary: Information about a deployed contract\n    description: Metadata about a specific smart contract deployed on chain.\n    type: object\n    properties:\n      address:\n        summary: Contract address\n        description: The address of the contract on chain.\n        type: string\n      chainId:\n        summary: Chain ID of the contract\n        description: The chain ID on which the contract is deployed.\n        type: string\n  Comment:\n    summary: A comment\n    description: >\n      A discussion comment, including the author, timestamp, and content.\n    type: object\n    properties:\n      comment_id:\n        summary: Comment ID\n        description: The unique ID of the comment.\n        type: string\n      created_at:\n        summary: Timestamp of the comment\n        description: The timestamp at which the comment was created.\n        type: string\n        format: date-time\n      updated_at:\n        summary: Timestamp of the comment edit\n        description: The timestamp at which the comment was last edited.\n        type: string\n        format: date-time\n      comment:\n        summary: Content of the comment\n        description: The text content of the comment.\n        type: string\n      address:\n        summary: Author of the comment\n        description: The delegate address of the author of the comment.\n        type: string\n      votes_count:\n        summary: Count of votes on the comment\n        description: The number of votes on the comment.\n        type: integer\n      votes:\n        type: array\n        items:\n          $ref: "#/schemas/CommentVote"\n  CommentVote:\n    summary: A vote on a comment\n    description: >\n      A vote on a comment, including the voter, timestamp, and vote (-1, 0, 1).\n    type: object\n    properties:\n      comment_id:\n        summary: Comment ID\n        description: The unique ID of the comment.\n        type: string\n      voter:\n        summary: Voter address\n        description: The address of the voter.\n        type: string\n      vote:\n        summary: Vote value\n        description: The value of the vote (-1, 0, 1).\n        type: integer\n      created_at:\n        summary: Timestamp of the vote\n        description: The timestamp at which the vote was created.\n        type: string\n        format: date-time\n      updated_at:\n        summary: Timestamp of the vote update\n        description: The timestamp at which the comment was last edited.\n        type: string\n        format: date-time\n  SocialLinks:\n    summary: Social media links for a project\n    description: >\n      Social media links for a project, including links to Twitter, Discord, and other platforms.\n    type: object\n    properties:\n      twitter:\n        type: string\n      farcaster:\n        type: string\n      mirror:\n        type: string\n      website:\n        type: string\n  Organization:\n    summary: Organization information for a project\n    description: >\n      Information about the organization behind a project, including name and avatar.\n    type: object\n    properties:\n      name:\n        type: string\n      profileAvatarUrl:\n        type: string\n  Project:\n    summary: A project submitted for RetroFunding\n    description: >\n      Information about a project submitted for Retroactive Public Goods Funding on Agora.\n    type: object\n    properties:\n      id:\n        type: string\n      name:\n        type: string\n      category:\n        type: string\n      description:\n        type: string\n      profileAvatarUrl:\n        type: string\n      projectCoverImageUrl:\n        type: string\n      socialLinks:\n        $ref: "#/schemas/SocialLinks"\n      team:\n        type: array\n        items:\n          type: string\n      github:\n        type: array\n        items:\n          oneOf:\n            - type: string\n            - type: object\n              properties:\n                repo_rank:\n                  type: number\n                star_count:\n                  type: number\n                starred_events:\n                  type: number\n                starred_by_top_devs:\n                  type: number\n                fork_count:\n                  type: number\n                forked_events:\n                  type: number\n                forked_by_top_devs:\n                  type: number\n                fulltime_developer_average_6_months:\n                  type: number\n                new_contributor_count_6_months:\n                  type: number\n                age_of_project_years:\n                  type: number\n      packages:\n        type: array\n        items:\n          type: string\n      links:\n        type: array\n        items:\n          type: string\n      organization:\n        $ref: "#/schemas/Organization"\n      contracts:\n        summary: Deployed contracts for the project\n        description: >\n          Information about the contracts deployed by the project, including the contract address, chain ID, deployer, and creation block.\n        type: array\n        items:\n          allOf:\n            - $ref: "#/schemas/Contract"\n            - type: object\n              properties:\n                address:\n                  summary: Address of the deployed contract\n                  description: The address of the deployed contract.\n                  type: string\n                deploymentTxHash:\n                  summary: Transaction hash of the deployment\n                  description: The transaction hash of the deployment transaction.\n                  type: string\n                deployerAddress:\n                  summary: Address of the deployer\n                  description: The address of the entity which deployed the contract.\n                  type: string\n                chainId:\n                  summary: Chain ID of the contract\n                  description: The chain ID on which the contract was deployed.\n                  type: string\n      grantsAndFunding:\n        type: object\n        properties:\n          ventureFunding:\n            type: array\n            items:\n              type: object\n              properties:\n                amount:\n                  type: string\n                year:\n                  type: string\n                details:\n                  type: string\n          grants:\n            type: array\n            items:\n              type: object\n              properties:\n                grant:\n                  type: string\n                link:\n                  type: string\n                amount:\n                  type: string\n                date:\n                  type: string\n                details:\n                  type: string\n          revenue:\n            type: array\n            items:\n              type: object\n              properties:\n                amount:\n                  type: string\n                details:\n                  type: string\n \ntextSchemas:\n  Proposal:\n    type: object\n    properties:\n      markdowntitle:\n        type: string\n      description:\n        type: string\n  Project:\n    type: object\n    properties:\n      name:\n        type: string\n      category:\n        type: string\n      description:\n        type: string
","isPage":false,"text":"\nversion: "3.0.0"\n \napi_name: "optimism_agora_api"\n \napi_parameters:\n \napi_config:\n request_method: "get"\n content_type: "application/json"\n response_entrypoint_field: "data"\n \nchunking_params:\n mode: "elements"\n chunking_strategy: "by_title"\n include_orig_elements: true\n max_characters: 1500\n new_after_n_chars: 1024\n overlap: 0\n overlap_all: false\n combine_text_under_n_chars: 0\n multipage_sections: true\n \nspec:\n connection_specification:\n $schema: http://json-schema.org/draft-07/schema#\n additionalProperties: true\n properties:\n api_key:\n airbyte-secret: true\n description: Agora API Key.\n type: string\n required:\n - api_key\n title: Agora API Spec\n type: object\n documentation_url: https://docs.airbyte.com/integrations/sources/agora\n type: Spec\n \ndefinitions:\n selector:\n type: RecordSelector\n extractor:\n type: DpathExtractor\n field_path: ["data"]\n selector_single:\n type: RecordSelector\n extractor:\n type: DpathExtractor\n field_path: []\n requester_base:\n type: HttpRequester\n url_base: "https://vote.optimism.io/api/v1"\n http_method: "GET"\n authenticator: # More on https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/authentication\n type: BearerAuthenticator\n api_token: "{{ config['api_key'] }}"\n retriever_base:\n type: SimpleRetriever\n record_selector:\n $ref: "#/definitions/selector"\n retriever_single_base:\n type: SimpleRetriever\n record_selector:\n $ref: "#/definitions/selector_single"\n paginator: # More on https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/pagination\n type: DefaultPaginator\n pagination_strategy: # More on https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/pagination#offset-increment\n type: "OffsetIncrement"\n page_size: 50\n page_token_option:\n type: "RequestOption"\n field_name: "offset"\n inject_into: "request_parameter"\n page_size_option:\n type: "RequestOption"\n inject_into: "request_parameter"\n field_name: "limit"\n \nendpoints:\n /proposals:\n id: "proposals"\n primary_key: "id"\n responseSchema: "#/schemas/Proposal"\n textSchema:\n $ref: "#/textSchemas/Proposal"\n /projects:\n id: "projects"\n primary_key: "id"\n responseSchema: "#/schemas/Project"\n textSchema:\n $ref: "#/textSchemas/Project"\n \nschemas:\n PageMetadata:\n summary: Pagination metadata\n description: Metadata associated with paginated requests.\n type: object\n properties:\n has_next:\n summary: Flag indicating if there's more data for retrieval\n description: A boolean flag indicating if there is additional data past the returned page to retrieve.\n type: boolean\n total_returned:\n summary: Total records returned\n description: A number indicating the total amount of records returned for the request.\n type: integer\n format: int32\n next_offset:\n summary: Offset to supply to the next request\n description: A number indicating the offset at which a subsequent request may retrieve the next set of records.\n type: integer\n format: int32\n Delegation:\n summary: A delegation of voting power\n description: A delegation of voting power from one address to another.\n type: object\n properties:\n from:\n summary: Delegator address\n description: Address of the delegator.\n type: string\n examples:\n - "0xDa6d1F091B672C0f9e215eB9fa6B5a84bF2c5e11"\n to:\n summary: Delegatee address\n description: Address of the delegatee.\n type: string\n examples:\n - "0xDa6d1F091B672C0f9e215eB9fa6B5a84bF2c5e11"\n allowance:\n summary: Voting allowance for delegate in OP tokens (18 decimals)\n description: Total amount of voting power delegated to or from address.\n type: string\n examples:\n - "100000000000000000000000"\n timestamp:\n summary: When delegation occurred\n description: The datetime on which the delegation of voting power occurred.\n type: string\n format: date-time\n examples:\n - "2024-01-17T19:37:15.983Z"\n type:\n summary: Type of delegation\n description: The type of delegation; can be advanced or direct. Advanced delegations are made through Alligator. Direct delegations are made through OP token.\n type: string\n enum:\n - DIRECT\n - ADVANCED\n amount:\n summary: Amount delegated\n description: The amount of voting power delegated; can be full or partial.\n type: string\n enum:\n - FULL\n - PARTIAL\n transaction_hash:\n summary: Transaction hash of delegation\n description: The transaction hash of the delegation transaction.\n type: string\n examples:\n - "0x8ed595a6f85b2d21e32602094d261034d11706dc100d8f48e11a03c15378cfcf"\n DelegateChunk:\n summary: A chunk of delegate data\n description: Data associated with a voting delegate. Sub-resources under this delegate are not expanded.\n type: object\n properties:\n address:\n summary: Delegate address\n description: Address of the delegate.\n type: string\n examples:\n - "0xDa6d1F091B672C0f9e215eB9fa6B5a84bF2c5e11"\n votingPower:\n summary: Delegate's available voting power\n description: An object providing a breakdown of a delegate's overall voting power between direct, advanced, and total.\n type: object\n properties:\n advanced:\n description: Advanced voting power.\n type: string\n examples:\n - "10000"\n direct:\n description: Direct voting power.\n type: string\n examples:\n - "20000"\n total:\n description: Total voting power.\n type: string\n examples:\n - "30000"\n isCitizen:\n description: A boolean flag indicating whether or not this delegate is an Agora citizen.\n type: boolean\n statement:\n $ref: "#/schemas/DelegateStatement"\n Delegate:\n summary: A voting delegate\n description: Data associated with a voting delegate. Sub-resources under this delegate are not expanded.\n type: object\n properties:\n address:\n summary: Delegate address\n description: Address of the delegate.\n type: string\n examples:\n - "0xDa6d1F091B672C0f9e215eB9fa6B5a84bF2c5e11"\n votingPower:\n summary: Delegate's available voting power\n description: An object providing a breakdown of a delegate's overall voting power between direct, advanced, and total.\n type: object\n properties:\n advanced:\n description: Advanced voting power.\n type: string\n examples:\n - "10000"\n direct:\n description: Direct voting power.\n type: string\n examples:\n - "20000"\n total:\n description: Total voting power.\n type: string\n examples:\n - "30000"\n isCitizen:\n description: A boolean flag indicating whether or not this delegate is an Agora citizen.\n type: boolean\n statement:\n $ref: "#/schemas/DelegateStatement"\n votingPowerRelativeToVotableSupply:\n summary: Delegate's voting power relative to votable supply\n description: The delegate's voting power relative to the votable supply.\n type: number\n votingPowerRelativeToQuorum:\n summary: Delegate's voting power relative to quorum\n description: The delegate's voting power relative to the quorum.\n type: number\n proposalsCreated:\n summary: Number of proposals created\n description: The number of proposals created by the delegate.\n type: number\n proposalsVotedOn:\n summary: Number of proposals voted on\n description: The number of proposals voted on by the delegate.\n type: number\n votedFor:\n summary: Number of proposals voted for\n description: The number of proposals voted for by the delegate.\n type: string\n votedAgainst:\n summary: Number of proposals voted against\n description: The number of proposals voted against by the delegate.\n type: string\n votedAbstain:\n summary: Number of proposals abstained from\n description: The number of proposals abstained from by the delegate.\n type: string\n votingParticipation:\n summary: Voting participation\n description: The delegate's voting participation.\n type: string\n lastTenProps:\n summary: Number of proposals voted on out of the last ten\n description: The number of proposals voted on out of the last ten.\n type: string\n numOfDelegators:\n summary: Number of delegators\n description: The number of delegators.\n type: string\n DelegateStatement:\n summary: A delegate's statement\n description: A delegate's statement, including the social links and topIssues.\n type: object\n properties:\n statement:\n summary: Delegate's statement\n description: A statement from the delegate describing their voting positions.\n type: string\n twitter:\n summary: Twitter handle\n description: Twitter handle for the delegate.\n type: string\n discord:\n summary: Discord handle\n description: Discord handle for the delegate.\n type: string\n warpcast:\n summary: Warpcast handle\n description: Warpcast handle for the delegate.\n type: string\n topIssues:\n summary: Top issues for a delegate\n description: The most important issues for a given delegate.\n type: array\n items:\n $ref: "#/schemas/Issue"\n Issue:\n summary: Description of a governance issue\n description: An object describing a particular view on a particular governance issue.\n type: object\n properties:\n type:\n type: string\n examples:\n - "Funding"\n value:\n type: string\n examples:\n - "Grant funding should be directed to projects with a great track record"\n SnapshotProposalResults:\n summary: Results of a snapshot proposal\n description: An object describing the results of a snapshot proposal, including status and scores.\n type: object\n properties:\n scores:\n summary: Scores for the proposal\n type: array\n items:\n type: string\n status:\n summary: Status of the proposal\n type: string\n enum:\n - pending\n - active\n - closed\n StandardProposalResults:\n summary: Results of a standard proposal\n description: An object describing the results of a standard proposal.\n type: object\n properties:\n for:\n summary: Number of votes for\n type: string\n against:\n summary: Number of votes against\n type: string\n abstain:\n summary: Number of abstentions\n type: string\n ApprovalProposalResults:\n summary: Results of an approval proposal\n description: An object describing the results of an approval proposal.\n type: object\n properties:\n for:\n summary: Number of votes for\n type: string\n against:\n summary: Number of votes against\n type: string\n abstain:\n summary: Number of abstentions\n type: string\n options:\n type: array\n items:\n type: object\n properties:\n option:\n type: string\n votes:\n type: string\n criteria:\n type: string\n enum:\n - THRESHOLD\n - TOP_CHOICES\n criteriaValue:\n summary: Threshold required to pass or number of top choices that is passed\n type: string\n OptimisticProposalResults:\n summary: Results of an optimistic proposal\n description: An object describing the results of an optimistic proposal.\n type: object\n properties:\n for:\n summary: Number of votes for\n type: string\n against:\n summary: Number of votes against\n type: string\n abstain:\n summary: Number of abstentions\n type: string\n SnapshotProposalData:\n summary: Data associated with a snapshot proposal\n description: >\n Metadata and data associated with a snapshot proposal, including start/end/created times, scores, and votes.\n type: object\n properties:\n votingStrategy:\n $ref: "#/schemas/VotingStrategy"\n title:\n summary: Title of the proposal\n type: string\n startTimestamp:\n summary: Start time of the proposal\n type: string\n format: date-time\n endTimestamp:\n summary: End time of the proposal\n type: string\n format: date-time\n createdTimestamp:\n summary: Creation time of the proposal\n type: string\n format: date-time\n link:\n summary: Link to the proposal\n type: string\n scores:\n summary: Scores for the proposal\n type: array\n items:\n type: string\n votes:\n summary: Votes for the proposal\n type: string\n state:\n summary: State of the proposal\n type: string\n enum:\n - ACTIVE\n - CLOSED\n - PENDING\n StandardProposalData:\n summary: Data associated with standard proposal\n description: >\n Metadata and data associated with a standard proposal, including onchain execution data.\n type: object\n properties:\n votingStrategy:\n $ref: "#/schemas/VotingStrategy"\n options:\n type: array\n items:\n type: object\n properties:\n executionData:\n $ref: "#/schemas/ExecutionData"\n ApprovalProposalData:\n summary: Data associated with an approval proposal\n description: >\n Metadata and data associated with an approval proposal, including onchain execution data.\n type: object\n properties:\n votingStrategy:\n $ref: "#/schemas/VotingStrategy"\n options:\n type: array\n items:\n type: object\n properties:\n executionData:\n $ref: "#/schemas/ExecutionData"\n budgetTokensSpent:\n summary: Budget tokens spent\n type: string\n description:\n summary: Description of the proposal\n type: string\n proposalSettings:\n type: object\n properties:\n maxApprovals:\n summary: Maximum approvals for the proposal\n type: string\n criteria:\n summary: Criteria for the proposal\n type: string\n enum:\n - THRESHOLD\n - TOP_CHOICES\n budgetToken:\n summary: Budget token for the proposal\n type: string\n criteriaValue:\n summary: Criteria value for the proposal\n type: string\n budgetAmount:\n summary: Budget amount for the proposal\n type: string\n OptimisticProposalData:\n summary: Data associated with an optimistic proposal\n description: >\n Metadata and data associated with an optimistic proposal, including onchain execution data.\n type: object\n properties:\n votingStrategy:\n $ref: "#/schemas/VotingStrategy"\n executionData:\n $ref: "#/schemas/ExecutionData"\n description:\n summary: Description of the proposal\n type: string\n ExecutionData:\n summary: Structured execution data for proposal\n description: >\n Provides the values, targets, calldata, and functions for proposal execution.\n type: object\n properties:\n values:\n summary: Values for execution\n type: array\n items:\n type: string\n targets:\n summary: Targets for execution\n type: array\n items:\n type: string\n signatures:\n summary: Function signatures\n type: array\n items:\n type: string\n calldata:\n summary: Calldata for execution\n type: array\n items:\n type: string\n description:\n summary: Description of the option\n type: string\n functionArgsName:\n summary: Functions for execution\n type: array\n items:\n type: object\n properties:\n functionName:\n summary: Function name\n type: string\n functionArgs:\n summary: Data for function\n type: array\n items:\n type: string\n budgetTokensSpent:\n summary: Total tokens spent in the option transactions\n type: string\n Proposal:\n summary: A specific governance proposal for voting\n description: >\n An object describing the specifics and metadata associated with a particular governance proposal,\n including the specific measure, proposer, data, etc.\n type: object\n properties:\n id:\n type: string\n proposer:\n summary: Proposer's address\n description: The address which submitted the proposal for voting.\n type: string\n snapshotBlockNumber:\n summary: Block number of the voting power snapshot\n description: Block number of the proposal at which the voting power was calculated\n type: number\n createdTime:\n summary: Proposal creation time\n description: Timestamp on which this proposal was created.\n type: string\n startTime:\n summary: Start time of the proposal\n description: Timestamp at which this proposal is open for voting.\n type: string\n endTime:\n summary: End time of the proposal\n description: Timestamp at which the proposal has closed for voting.\n type: string\n cancelledTime:\n summary: Cancelled time of the proposal\n description: Timestamp at which this proposal has been canceled. Zero if not canceled.\n type: string\n executedTime:\n summary: Execution time of the proposal\n description: Timestamp at which this proposal has been executed. Zero if not executed.\n type: string\n markdowntitle:\n summary: Title of the proposal\n description: Title of the proposal\n type: string\n description:\n summary: Description of the proposal\n description: Extended information and context around the proposal.\n type: string\n quorum:\n summary: Minimum participation for passage\n description: >\n The minimum number of voting power needed to be involved in a given proposal as a prerequisite for passage\n type: string\n approvalThreshold:\n summary: Minimum amount needed for option to pass\n description: The amount of voting power needed to pass an option in the given approval voting proposal.\n type: string\n proposalData:\n oneOf:\n - $ref: "#/schemas/SnapshotProposalData"\n - $ref: "#/schemas/StandardProposalData"\n - $ref: "#/schemas/ApprovalProposalData"\n - $ref: "#/schemas/OptimisticProposalData"\n discriminator:\n propertyName: votingStrategy\n unformattedProposalData:\n summary: Unformatted proposal data\n description: >\n The raw, unformatted data associated with the proposal.\n type: string\n proposalResults:\n oneOf:\n - $ref: "#/schemas/SnapshotProposalResults"\n - $ref: "#/schemas/StandardProposalResults"\n - $ref: "#/schemas/ApprovalProposalResults"\n - $ref: "#/schemas/OptimisticProposalResults"\n proposalType:\n summary: Type of proposal\n description: The type of proposal; can be standard, approval, optimistic, or snapshot.\n type: string\n enum:\n - STANDARD\n - APPROVAL\n - OPTIMISTIC\n - SNAPSHOT\n status:\n summary: Status of the proposal\n description: The current status of the proposal; can be active, closed, or pending.\n type: string\n enum:\n - "CANCELLED"\n - "SUCCEEDED"\n - "DEFEATED"\n - "ACTIVE"\n - "PENDING"\n - "QUEUED"\n - "EXECUTED"\n - "CLOSED"\n createdTransactionHash:\n summary: Transaction hash of proposal creation\n description: The transaction hash of the transaction which created the proposal.\n type: string\n cancelledTransactionHash:\n summary: Transaction hash of proposal cancellation\n description: The transaction hash of the transaction which canceled the proposal.\n type: string\n executedTransactionHash:\n summary: Transaction hash of proposal execution\n description: The transaction hash of the transaction which executed the proposal.\n type: string\n proposalTemplate:\n $ref: "#/schemas/ProposalTemplate"\n ProposalTemplate:\n summary: Metadata about the proposal\n description: >\n An object describing the particular voting parameters of a proposal.\n type: object\n properties:\n name:\n summary: Name of proposal template\n description: Name of proposal template\n type: string\n proposalTemplateId:\n summary: Numeric id of the proposal template\n description: Numeric id of the proposal template\n type: integer\n votingStrategy:\n $ref: "#/schemas/VotingStrategy"\n quorum:\n summary: Minimum participation for passage\n description: >\n The minimum number of voting power needed to be involved in a given proposal as a prerequisite for passage\n type: string\n approvalThreshold:\n summary: Amount needed for measure to pass\n description: The amount of voting power needed to pass the given proposal.\n type: string\n contractAddress:\n summary: Governor contract address\n description: Governor contract address to which this proposal was submitted.\n type: string\n createBlock:\n summary: Proposal creation block number\n description: Block number on which this proposal template was created.\n type: string\n VotingStrategy:\n summary: The voting strategy for a proposal\n description: Enum description of the proposal's voting strategy.\n type: string\n enum:\n - STANDARD\n - ADVANCED\n - OPTIMISTIC\n - SNAPSHOT\n VoteSupport:\n summary: Disposition of the vote\n description: Describes which way the vote was cast (i.e. for/against/abstention)\n type: string\n enum:\n - FOR\n - AGAINST\n - ABSTAIN\n Vote:\n summary: Information about a given vote\n description: Information and metadata about a specific vote on a governance proposal.\n type: object\n properties:\n transactionHash:\n summary: Transaction hash of the vote\n description: The transaction hash of the transaction in which the vote was cast.\n type: string\n proposalId:\n summary: Proposal ID for the vote\n description: The unique ID of the proposal on which the vote was cast.\n type: string\n address:\n summary: Address casting the vote\n description: On-chain address of the EOA or contract which cast the vote.\n type: string\n support:\n $ref: "#/schemas/VoteSupport"\n reason:\n summary: Reason for the vote\n description: A voter-supplied reason for voting the particular way they did.\n type: string\n weight:\n summary: Voting power behind the vote\n description: Numeric description of the weight and voting power behind the vote.\n type: string\n params:\n summary: Array of votes that have been chosen by the voter\n description: An array of items to submit for approval for multiple choice votes.\n type: array\n items:\n type: string\n proposalValue:\n summary: Value of the proposal\n description: The total value that the proposal will be executed with.\n type: string\n proposalTitle:\n summary: Title of the proposal\n description: The title of the proposal.\n type: string\n proposalType:\n summary: Type of the proposal\n description: The type of the proposal.\n type: string\n enum:\n - STANDARD\n - APPROVAL\n - OPTIMISTIC\n - SNAPSHOT\n timestamp:\n summary: Timestamp of the vote\n description: The timestamp at which the vote was cast.\n type: string\n format: date-time\n VotingToken:\n allOf:\n - $ref: "#/schemas/Contract"\n - type: object\n properties:\n totalSupply:\n summary: Total supply of the voting token\n description: The total supply of the voting token.\n type: string\n votableSupply:\n summary: Votable supply of the voting token\n description: The votable supply of the voting token.\n type: string\n Contract:\n summary: Information about a deployed contract\n description: Metadata about a specific smart contract deployed on chain.\n type: object\n properties:\n address:\n summary: Contract address\n description: The address of the contract on chain.\n type: string\n chainId:\n summary: Chain ID of the contract\n description: The chain ID on which the contract is deployed.\n type: string\n Comment:\n summary: A comment\n description: >\n A discussion comment, including the author, timestamp, and content.\n type: object\n properties:\n comment_id:\n summary: Comment ID\n description: The unique ID of the comment.\n type: string\n created_at:\n summary: Timestamp of the comment\n description: The timestamp at which the comment was created.\n type: string\n format: date-time\n updated_at:\n summary: Timestamp of the comment edit\n description: The timestamp at which the comment was last edited.\n type: string\n format: date-time\n comment:\n summary: Content of the comment\n description: The text content of the comment.\n type: string\n address:\n summary: Author of the comment\n description: The delegate address of the author of the comment.\n type: string\n votes_count:\n summary: Count of votes on the comment\n description: The number of votes on the comment.\n type: integer\n votes:\n type: array\n items:\n $ref: "#/schemas/CommentVote"\n CommentVote:\n summary: A vote on a comment\n description: >\n A vote on a comment, including the voter, timestamp, and vote (-1, 0, 1).\n type: object\n properties:\n comment_id:\n summary: Comment ID\n description: The unique ID of the comment.\n type: string\n voter:\n summary: Voter address\n description: The address of the voter.\n type: string\n vote:\n summary: Vote value\n description: The value of the vote (-1, 0, 1).\n type: integer\n created_at:\n summary: Timestamp of the vote\n description: The timestamp at which the vote was created.\n type: string\n format: date-time\n updated_at:\n summary: Timestamp of the vote update\n description: The timestamp at which the comment was last edited.\n type: string\n format: date-time\n SocialLinks:\n summary: Social media links for a project\n description: >\n Social media links for a project, including links to Twitter, Discord, and other platforms.\n type: object\n properties:\n twitter:\n type: string\n farcaster:\n type: string\n mirror:\n type: string\n website:\n type: string\n Organization:\n summary: Organization information for a project\n description: >\n Information about the organization behind a project, including name and avatar.\n type: object\n properties:\n name:\n type: string\n profileAvatarUrl:\n type: string\n Project:\n summary: A project submitted for RetroFunding\n description: >\n Information about a project submitted for Retroactive Public Goods Funding on Agora.\n type: object\n properties:\n id:\n type: string\n name:\n type: string\n category:\n type: string\n description:\n type: string\n profileAvatarUrl:\n type: string\n projectCoverImageUrl:\n type: string\n socialLinks:\n $ref: "#/schemas/SocialLinks"\n team:\n type: array\n items:\n type: string\n github:\n type: array\n items:\n oneOf:\n - type: string\n - type: object\n properties:\n repo_rank:\n type: number\n star_count:\n type: number\n starred_events:\n type: number\n starred_by_top_devs:\n type: number\n fork_count:\n type: number\n forked_events:\n type: number\n forked_by_top_devs:\n type: number\n fulltime_developer_average_6_months:\n type: number\n new_contributor_count_6_months:\n type: number\n age_of_project_years:\n type: number\n packages:\n type: array\n items:\n type: string\n links:\n type: array\n items:\n type: string\n organization:\n $ref: "#/schemas/Organization"\n contracts:\n summary: Deployed contracts for the project\n description: >\n Information about the contracts deployed by the project, including the contract address, chain ID, deployer, and creation block.\n type: array\n items:\n allOf:\n - $ref: "#/schemas/Contract"\n - type: object\n properties:\n address:\n summary: Address of the deployed contract\n description: The address of the deployed contract.\n type: string\n deploymentTxHash:\n summary: Transaction hash of the deployment\n description: The transaction hash of the deployment transaction.\n type: string\n deployerAddress:\n summary: Address of the deployer\n description: The address of the entity which deployed the contract.\n type: string\n chainId:\n summary: Chain ID of the contract\n description: The chain ID on which the contract was deployed.\n type: string\n grantsAndFunding:\n type: object\n properties:\n ventureFunding:\n type: array\n items:\n type: object\n properties:\n amount:\n type: string\n year:\n type: string\n details:\n type: string\n grants:\n type: array\n items:\n type: object\n properties:\n grant:\n type: string\n link:\n type: string\n amount:\n type: string\n date:\n type: string\n details:\n type: string\n revenue:\n type: array\n items:\n type: object\n properties:\n amount:\n type: string\n details:\n type: string\n \ntextSchemas:\n Proposal:\n type: object\n properties:\n markdowntitle:\n type: string\n description:\n type: string\n Project:\n type: object\n properties:\n name:\n type: string\n category:\n type: string\n description:\n type: string","title":"Optimism Agora API","titles":["Sample API Pipeline Manifests"]}},"dirtCount":0,"index":[["983z",{"2":{"122":1}}],["`protocol`",{"2":{"121":1}}],["`moloch",{"2":{"74":2}}],["`molochdao`",{"2":{"74":2}}],["zero",{"2":{"103":1,"122":2}}],["+",{"2":{"90":1}}],["8",{"2":{"103":1}}],["8b",{"2":{"74":2}}],["8080",{"2":{"72":1,"74":1,"76":1,"90":1,"103":1,"104":5}}],["8192",{"2":{"72":1,"74":1}}],["768",{"2":{"72":1,"76":1,"80":1,"103":1,"104":2}}],["7",{"2":{"72":1}}],["⚠️recommended",{"0":{"72":1}}],["60",{"2":{"103":1}}],["6333",{"2":{"90":1,"103":1,"104":3}}],["61",{"2":{"80":1,"104":2}}],["64",{"2":{"74":1}}],["6",{"0":{"69":1},"2":{"122":2}}],["4",{"0":{"52":1,"67":1},"2":{"61":1,"72":1}}],["231z",{"2":{"118":2}}],["20000",{"2":{"122":2}}],["2024",{"2":{"118":2,"122":1}}],["2048",{"2":{"74":2,"76":1}}],["2",{"0":{"50":1,"65":1},"2":{"104":2}}],["🔌",{"0":{"45":1},"1":{"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1}}],["joins",{"2":{"59":1,"61":1}}],["joined",{"2":{"54":2,"101":1}}],["jupyter",{"2":{"52":1}}],["just",{"2":{"44":1}}],["json",{"2":{"21":1,"22":1,"33":1,"34":1,"38":2,"53":1,"54":1,"74":3,"109":1,"118":1,"121":7,"122":2}}],["jsonl",{"2":{"15":2,"66":2,"94":2,"96":1,"97":2,"99":1,"100":2,"101":6}}],["17t19",{"2":{"122":1}}],["18",{"2":{"122":1}}],["15",{"2":{"103":1,"122":1}}],["1500",{"2":{"39":1,"110":1,"121":1,"122":1}}],["127",{"2":{"76":1,"80":4,"104":10}}],["10000",{"2":{"122":2}}],["100000000000000000000000",{"2":{"122":1}}],["1000",{"2":{"103":2}}],["10",{"2":{"74":1,"103":1}}],["1024",{"2":{"39":1,"110":1,"121":1,"122":1}}],["1",{"0":{"49":1,"64":1},"2":{"74":2,"76":2,"80":5,"104":20,"121":1,"122":4}}],["11434",{"2":{"80":3}}],["11",{"2":{"7":1,"118":2}}],["01",{"2":{"122":1}}],["01t21",{"2":{"118":1}}],["06t21",{"2":{"118":1}}],["05",{"2":{"118":2}}],["05c1fb6d88a07",{"2":{"34":1,"121":1}}],["08",{"2":{"118":2}}],["0x8ed595a6f85b2d21e32602094d261034d11706dc100d8f48e11a03c15378cfcf",{"2":{"122":1}}],["0xda6d1f091b672c0f9e215eb9fa6b5a84bf2c5e11",{"2":{"122":4}}],["0xd0275a4f8ef0d4b2dc0a3baf3d405a63bc647340",{"2":{"104":2}}],["0x105873910",{"2":{"104":1}}],["0x1091c2490",{"2":{"80":1}}],["0x110893c90",{"2":{"104":1}}],["002",{"2":{"76":1}}],["0",{"2":{"39":2,"72":4,"74":1,"76":2,"80":8,"103":1,"104":20,"110":2,"118":2,"121":4,"122":6}}],["07",{"2":{"22":1,"34":1,"38":1,"118":1,"121":6,"122":1}}],["$gaianet",{"2":{"72":1}}],["$home",{"2":{"71":1}}],["$ref",{"2":{"25":2,"37":1,"116":2,"117":2,"121":7,"122":30}}],["$schema",{"2":{"22":1,"34":1,"38":1,"118":1,"121":6,"122":1}}],["know",{"2":{"74":1}}],["knowledge",{"0":{"26":1,"40":1,"73":1},"1":{"27":1,"28":1,"41":1,"42":1,"43":1,"44":1},"2":{"0":1,"1":1,"2":1,"6":1,"16":1,"17":1,"27":1,"28":1,"29":1,"41":2,"42":3,"44":1,"53":1,"54":2,"60":1,"61":2,"69":1,"73":1,"74":4,"101":1,"103":1}}],["k",{"2":{"34":1,"74":1,"121":1}}],["kb",{"0":{"28":1,"42":1}}],["key",{"2":{"18":5,"22":4,"23":1,"25":2,"30":5,"34":3,"35":2,"37":1,"51":1,"65":1,"69":1,"76":1,"91":2,"93":2,"103":3,"104":8,"117":4,"121":10,"122":6}}],["50",{"2":{"24":2,"122":1}}],["5",{"0":{"68":1},"2":{"7":1,"61":3,"72":2,"74":4,"76":1,"80":2,"81":1,"103":1,"104":2}}],["q5",{"2":{"74":1}}],["qdrantdbvectorstore",{"2":{"60":1}}],["qdrantdb",{"0":{"69":1},"2":{"54":1,"90":2,"103":3,"104":10}}],["qdrant",{"2":{"7":1,"60":2,"61":3,"74":3,"101":1,"103":3,"104":10}}],["queued",{"2":{"122":1}}],["question",{"2":{"74":1}}],["querying",{"2":{"66":1}}],["queried",{"2":{"53":1}}],["queries",{"2":{"6":1,"74":1}}],["quorum",{"2":{"38":1,"121":1,"122":4}}],["quotecount",{"2":{"121":1}}],["quotes",{"2":{"117":1}}],["quot",{"2":{"21":8,"23":6,"24":14,"25":16,"33":12,"34":6,"35":8,"36":10,"37":10,"39":4,"71":2,"74":84,"109":6,"113":2,"115":2,"116":4,"117":20,"118":12,"121":90,"122":154}}],["quick",{"0":{"71":1},"2":{"12":1,"71":1}}],["quickly",{"2":{"4":1,"6":1,"74":1,"104":1}}],["xxxxxxxxxxxxxxxx",{"2":{"28":1,"42":2,"101":2}}],["x",{"0":{"70":1},"1":{"71":1,"72":1,"73":1,"74":1},"2":{"7":1,"101":1}}],["x27",{"0":{"48":1},"1":{"49":1,"50":1,"51":1,"52":1},"2":{"6":2,"12":3,"13":3,"14":1,"16":2,"18":2,"23":2,"27":1,"30":2,"32":1,"34":4,"35":2,"36":6,"37":1,"38":1,"42":2,"45":2,"74":12,"75":1,"77":1,"80":5,"93":1,"103":9,"104":12,"105":2,"117":1,"118":1,"119":2,"121":10,"122":17}}],["30000",{"2":{"122":2}}],["37",{"2":{"122":1}}],["32gb",{"2":{"74":1}}],["3",{"0":{"51":1,"66":1},"2":{"7":1,"74":5,"76":1,"80":1,"104":10,"121":1,"122":1}}],["350+",{"2":{"1":1}}],["last",{"2":{"122":4}}],["lasttenprops",{"2":{"122":1}}],["large",{"2":{"64":1,"67":1,"68":1,"69":1}}],["language",{"2":{"53":1,"67":1,"68":1,"74":2}}],["level",{"2":{"86":1,"87":1,"88":1,"89":1,"104":1}}],["less",{"2":{"18":1,"30":1,"72":1}}],["learning",{"2":{"67":1}}],["learn",{"2":{"16":1,"81":1,"105":1}}],["left",{"2":{"6":1}}],["lighweight",{"2":{"77":1}}],["lightweight",{"2":{"59":1}}],["likecount",{"2":{"121":2}}],["like",{"2":{"68":1,"69":1}}],["library",{"2":{"60":1,"68":2,"110":1}}],["libraries",{"2":{"59":1,"68":1}}],["litellm",{"2":{"59":1,"68":1}}],["limits",{"2":{"103":1}}],["limit",{"2":{"24":2,"74":1,"122":1}}],["listed",{"2":{"38":1,"90":1,"112":1,"118":1}}],["list",{"2":{"15":1,"33":1,"38":1,"108":1,"113":1,"117":1,"119":1}}],["lines",{"2":{"53":1}}],["line",{"2":{"5":1,"85":1}}],["links",{"2":{"122":5}}],["link",{"2":{"1":1,"2":1,"28":1,"33":1,"42":1,"73":1,"114":1,"122":3}}],["lt",{"2":{"14":1,"15":6,"34":2,"52":2,"72":3,"80":1,"81":2,"101":1,"104":2,"121":2}}],["llamaedge",{"2":{"74":1}}],["llama",{"2":{"72":1,"74":5}}],["ll",{"2":{"12":1,"16":1,"18":1,"27":1,"30":1,"42":1,"75":1,"104":2,"105":1}}],["llms",{"2":{"50":1,"67":1}}],["llm",{"0":{"75":1},"1":{"76":1,"77":1,"78":1,"79":1,"80":1,"81":1},"2":{"5":1,"6":1,"7":1,"54":2,"59":2,"61":4,"68":4,"73":1,"75":2,"76":8,"77":1,"80":8,"86":2,"87":3,"90":2,"103":11,"104":17}}],["logging",{"2":{"86":1,"87":1,"88":1,"89":1,"104":1}}],["low",{"2":{"65":1,"105":1}}],["loaded",{"2":{"104":1}}],["loader",{"0":{"57":1},"2":{"54":1,"61":2}}],["load",{"2":{"57":1,"80":1}}],["loading",{"2":{"54":1}}],["location",{"2":{"72":1}}],["locate",{"2":{"28":1,"42":1}}],["localhost",{"2":{"90":2,"103":2}}],["local",{"2":{"7":1,"9":1,"61":1,"68":2,"74":1,"101":1,"103":1}}],["look",{"2":{"13":1,"49":1,"50":1}}],["looking",{"2":{"6":1,"12":2,"13":1}}],["null",{"2":{"121":1}}],["numeric",{"2":{"122":3}}],["numofdelegators",{"2":{"122":1}}],["numfeaturedtopics",{"2":{"121":1}}],["number",{"2":{"38":1,"103":3,"121":2,"122":48}}],["nn",{"2":{"72":2}}],["n",{"2":{"39":2,"74":2,"104":6,"110":2,"121":2,"122":2}}],["natural",{"2":{"53":1}}],["named",{"2":{"28":1,"42":1}}],["name",{"0":{"107":1},"2":{"21":1,"24":2,"33":2,"35":1,"36":1,"42":1,"44":1,"57":1,"72":4,"74":4,"76":1,"80":1,"81":1,"101":8,"103":1,"104":3,"107":1,"121":7,"122":11}}],["navigate",{"2":{"10":1}}],["nopagination",{"2":{"115":1}}],["normalization",{"2":{"54":1,"59":1,"61":1,"66":1,"91":1,"100":1}}],["normalized",{"0":{"94":1},"1":{"95":1,"96":1},"2":{"15":3,"52":1,"54":2,"59":2,"88":2,"91":2,"93":2,"94":6,"96":2,"100":5,"101":2,"110":1}}],["notice",{"2":{"59":1,"121":1}}],["notebook",{"2":{"52":1}}],["note",{"2":{"38":1,"49":1}}],["not",{"2":{"36":1,"42":1,"74":2,"80":1,"84":1,"90":1,"104":1,"109":1,"121":1,"122":6}}],["no",{"2":{"21":1,"74":1,"103":1}}],["now",{"2":{"13":1,"37":1,"42":1,"104":1}}],["nomic",{"2":{"7":1,"72":2,"74":3,"76":1,"80":2,"81":1,"103":1,"104":2}}],["node",{"0":{"28":1,"42":1,"70":1,"72":1,"73":1,"74":1},"1":{"71":1,"72":1,"73":1,"74":1},"2":{"5":1,"6":1,"7":1,"28":2,"42":4,"54":1,"61":3,"68":1,"71":1,"72":3,"73":2,"74":3,"75":1,"77":1,"103":1,"104":4}}],["necessary",{"2":{"74":1}}],["never",{"2":{"74":1}}],["neighbor",{"2":{"69":1}}],["nearest",{"2":{"69":1}}],["newconnectionerror",{"2":{"80":1,"104":2}}],["new",{"2":{"39":1,"50":1,"57":1,"80":1,"104":2,"110":1,"121":1,"122":2}}],["needed",{"2":{"17":1,"22":1,"29":1,"34":1,"51":1,"121":1,"122":6}}],["need",{"2":{"14":1,"18":1,"30":1,"44":1,"52":1,"104":1}}],["needs",{"2":{"11":1,"22":1}}],["network",{"2":{"7":1,"61":1,"74":1,"104":10,"121":1}}],["nextcursor",{"2":{"36":2,"121":2}}],["next",{"2":{"4":1,"12":1,"20":1,"103":1,"104":2,"105":1,"120":1,"122":4}}],["uri",{"2":{"104":1}}],["urllib3",{"2":{"80":1,"104":2}}],["url",{"2":{"22":1,"23":1,"24":1,"34":1,"35":1,"74":1,"76":1,"80":3,"103":4,"104":9,"114":1,"121":3,"122":2}}],["utf",{"2":{"103":1}}],["utilizes",{"2":{"105":1}}],["utilizing",{"2":{"74":1}}],["utilities",{"2":{"65":1}}],["ui",{"2":{"72":1}}],["udf",{"2":{"59":1,"61":1,"103":3}}],["unformatted",{"2":{"122":2}}],["unformattedproposaldata",{"2":{"122":1}}],["unique",{"2":{"122":3}}],["uniquevoters",{"2":{"121":1}}],["unified",{"2":{"59":1}}],["unwrapped",{"2":{"117":1,"118":1}}],["unwrappd",{"2":{"38":1}}],["unavailable",{"2":{"105":1}}],["until",{"2":{"91":2,"93":2}}],["unstructured",{"0":{"67":1},"2":{"67":1,"110":1}}],["under",{"2":{"4":1,"6":1,"12":1,"39":1,"104":1,"105":1,"110":1,"112":1,"121":1,"122":3}}],["understanding",{"2":{"23":1,"24":2,"121":2,"122":3}}],["understand",{"2":{"4":1}}],["uploading",{"2":{"61":1}}],["upload",{"2":{"61":1}}],["updated",{"2":{"122":2}}],["updatedat",{"2":{"121":1}}],["updates",{"2":{"103":1}}],["update",{"2":{"42":1,"122":1}}],["up",{"2":{"5":1,"6":1,"7":2,"74":1,"90":1,"91":1,"93":1,"100":1,"104":2}}],["usage",{"0":{"85":1},"1":{"86":1,"87":1,"88":1,"89":1},"2":{"85":1,"86":1,"88":1,"91":1,"94":1,"97":1,"104":1}}],["usable",{"2":{"54":1}}],["us",{"2":{"74":1,"104":2}}],["usds",{"2":{"43":1}}],["using",{"0":{"14":1,"26":1,"40":1,"80":1},"1":{"15":1,"27":1,"28":1,"41":1,"42":1,"43":1,"44":1},"2":{"0":1,"6":1,"14":1,"15":2,"18":1,"28":1,"30":1,"34":1,"36":1,"42":1,"52":1,"53":2,"54":2,"59":3,"61":1,"65":1,"76":1,"77":1,"80":1,"81":1,"84":2,"94":1,"97":1,"104":5,"105":1,"108":1}}],["useful",{"2":{"87":1,"89":1}}],["uses",{"2":{"24":1,"54":1,"56":1,"57":1,"58":2,"60":1,"61":1,"75":1,"84":1}}],["user$",{"2":{"76":1,"80":1,"85":1,"86":1,"88":1,"91":1,"94":1,"97":1,"104":3}}],["users",{"2":{"54":1,"61":1}}],["user",{"0":{"43":1},"2":{"5":1,"6":1,"59":1,"74":4,"80":1}}],["used",{"2":{"4":1,"39":1,"61":1,"66":2,"68":1,"103":1,"104":2,"110":1,"117":1,"120":1}}],["use",{"2":{"0":1,"6":1,"11":1,"30":1,"50":1,"52":4,"54":2,"61":1,"64":1,"74":3,"76":1,"77":4,"80":1,"81":1,"93":1,"103":3,"104":4,"109":1,"121":1}}],["hitting",{"2":{"104":1}}],["high",{"2":{"64":1}}],["hypothetical",{"2":{"74":1}}],["hybrid",{"2":{"53":1}}],["hub",{"2":{"47":1}}],["hugging",{"2":{"41":1}}],["huggingface",{"2":{"28":1,"42":1,"61":1,"74":2,"81":1}}],["hash",{"2":{"122":13}}],["has",{"2":{"104":1,"122":4}}],["hardware",{"2":{"59":1,"77":1}}],["handling",{"2":{"67":1}}],["handle",{"2":{"77":1,"122":6}}],["handles",{"2":{"54":1}}],["handled",{"2":{"36":1}}],["hand",{"2":{"38":1}}],["have",{"2":{"14":1,"84":1,"104":6,"122":1}}],["here",{"2":{"34":1,"35":1,"42":2,"45":1,"81":1,"84":1,"103":1,"117":2,"118":1,"119":1,"121":1}}],["helps",{"2":{"74":1}}],["help",{"2":{"6":1,"14":1,"50":1,"52":1,"84":2,"85":2,"86":2,"88":2,"91":2,"94":2,"97":2,"104":4,"105":1}}],["helpful",{"2":{"4":1}}],["href=",{"2":{"34":1,"121":1}}],["hh",{"2":{"28":1,"42":2,"101":2}}],["httpconnection",{"2":{"80":1,"104":2}}],["httpconnectionpool",{"2":{"80":1,"104":2}}],["httprequester",{"2":{"23":1,"35":1,"121":1,"122":1}}],["http",{"2":{"22":1,"23":1,"34":1,"35":1,"38":1,"74":1,"76":1,"80":3,"90":2,"103":2,"104":8,"109":1,"113":1,"114":1,"118":1,"121":7,"122":2}}],["https",{"2":{"9":1,"22":1,"23":2,"24":2,"34":2,"35":1,"74":2,"76":1,"84":1,"104":2,"121":5,"122":5}}],["home",{"2":{"80":1}}],["host",{"2":{"104":1}}],["host=",{"2":{"80":1,"104":2}}],["hosted",{"2":{"29":1,"54":1,"68":1,"73":1}}],["hopprotocol",{"2":{"34":1,"121":1}}],["hood",{"2":{"4":1,"6":1,"104":1,"105":1}}],["however",{"2":{"102":1}}],["how",{"2":{"0":3,"1":1,"2":1,"4":1,"5":1,"6":2,"13":1,"16":1,"35":1,"42":1,"75":1,"104":1,"105":1,"110":1,"114":1,"116":1}}],["wraps",{"2":{"109":1,"113":1}}],["wrapped",{"2":{"36":1,"121":1}}],["weight",{"2":{"122":2}}],["well",{"2":{"105":1}}],["website",{"2":{"78":1,"122":1}}],["web",{"2":{"72":1,"75":1,"76":1}}],["we",{"2":{"45":1,"59":1,"71":1,"72":1,"104":1}}],["way",{"2":{"122":2}}],["warpcast",{"2":{"122":3}}],["wait",{"2":{"103":1}}],["wanna",{"2":{"76":1}}],["want",{"2":{"45":1,"52":1,"76":1,"80":1,"104":5}}],["walks",{"2":{"53":1}}],["wasm",{"2":{"72":1}}],["wasmedge",{"2":{"72":1}}],["was",{"2":{"10":1,"101":1,"104":1,"122":13}}],["whitelist",{"2":{"117":1}}],["which",{"2":{"68":1,"76":1,"80":1,"104":2,"122":26}}],["while",{"2":{"24":1,"36":1,"38":1,"54":1}}],["what",{"2":{"43":1}}],["whether",{"2":{"122":2}}],["whenever",{"2":{"74":2}}],["when",{"2":{"39":1,"61":1,"74":1,"103":1,"117":1,"122":1}}],["where",{"0":{"46":1},"1":{"47":1},"2":{"10":1,"74":4,"103":1}}],["will",{"2":{"20":1,"32":1,"38":2,"41":1,"71":1,"74":2,"90":1,"93":1,"101":2,"104":10,"117":1,"122":1}}],["wizard",{"0":{"80":1},"2":{"5":1,"11":2,"76":1,"85":1,"86":1,"102":1,"104":4}}],["without",{"2":{"66":1}}],["within",{"2":{"2":1,"17":1,"67":1,"101":1,"119":1}}],["with",{"0":{"3":1,"45":1},"1":{"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1},"2":{"2":1,"3":1,"4":1,"6":1,"25":1,"37":1,"42":1,"45":1,"58":1,"61":2,"64":2,"65":2,"68":3,"73":1,"74":3,"76":1,"77":1,"80":1,"81":1,"103":1,"104":4,"106":1,"108":1,"122":15}}],["work",{"2":{"76":1}}],["workflows",{"2":{"67":1}}],["works",{"2":{"4":1,"6":1}}],["working",{"0":{"3":1,"45":1},"1":{"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1},"2":{"3":1}}],["votablesupply",{"2":{"122":1}}],["votable",{"2":{"122":4}}],["votingtoken",{"2":{"122":1}}],["votingstrategy",{"2":{"122":12}}],["votingparticipation",{"2":{"122":1}}],["votingpowerrelativetoquorum",{"2":{"122":1}}],["votingpowerrelativetovotablesupply",{"2":{"122":1}}],["votingpower",{"2":{"122":2}}],["voting",{"2":{"122":47}}],["voter",{"2":{"122":6}}],["votesupport",{"2":{"122":2}}],["votes",{"2":{"122":16}}],["votedabstain",{"2":{"122":1}}],["votedagainst",{"2":{"122":1}}],["votedfor",{"2":{"122":1}}],["voted",{"2":{"122":8}}],["vote",{"2":{"23":1,"122":26}}],["v3",{"2":{"43":1}}],["variables",{"0":{"103":1},"2":{"102":1,"103":2}}],["various",{"2":{"2":1,"61":1,"66":1,"83":1,"105":1}}],["validation",{"2":{"52":1}}],["validator",{"2":{"50":1}}],["validates",{"2":{"90":1,"104":3}}],["validate",{"2":{"50":1}}],["values",{"2":{"44":1,"57":1,"108":2,"110":1,"122":3}}],["value",{"2":{"35":1,"36":1,"103":15,"104":2,"121":1,"122":6}}],["v1",{"2":{"7":1,"23":1,"35":1,"72":2,"74":3,"76":3,"80":4,"81":1,"90":1,"103":2,"104":10,"121":1,"122":1}}],["venturefunding",{"2":{"122":1}}],["venv",{"2":{"7":1,"76":1,"80":1,"85":1,"86":1,"88":1,"91":1,"94":1,"97":1,"104":3}}],["version",{"2":{"121":1,"122":1}}],["version=0",{"2":{"72":1}}],["ve",{"2":{"45":1}}],["vectors",{"2":{"69":1}}],["vector",{"0":{"69":1},"2":{"6":1,"7":1,"12":1,"14":1,"53":1,"54":2,"59":2,"60":1,"61":4,"68":1,"69":3,"72":1,"76":1,"80":1,"91":1,"101":2,"103":4,"104":9}}],["view",{"2":{"122":1}}],["views",{"2":{"121":1}}],["visible",{"2":{"121":1}}],["visit",{"2":{"0":1,"3":1,"11":1,"33":1,"61":1}}],["via",{"2":{"65":1,"76":1,"102":2}}],["virtual",{"2":{"7":1,"10":1}}],["citizen",{"2":{"122":2}}],["circulatingsupply",{"2":{"121":1}}],["ctx",{"2":{"72":2,"74":2}}],["criteriavalue",{"2":{"122":2}}],["criteria",{"2":{"122":4}}],["crucial",{"2":{"69":1}}],["creation",{"2":{"122":5}}],["creating",{"2":{"0":1,"57":1,"64":1,"75":1,"104":5}}],["createblock",{"2":{"122":1}}],["createdtransactionhash",{"2":{"122":1}}],["createdtime",{"2":{"122":1}}],["createdtimestamp",{"2":{"122":1}}],["createdat",{"2":{"118":3,"121":2}}],["created",{"2":{"101":1,"104":4,"122":10}}],["create",{"2":{"17":1,"29":1,"50":1,"53":1,"54":1,"58":1,"68":1,"81":2,"105":1}}],["customlitellmembedder",{"2":{"59":1}}],["customparseunstructured",{"2":{"59":1}}],["customizing",{"0":{"44":1,"102":1},"1":{"103":1}}],["customize",{"2":{"11":1}}],["custom",{"0":{"73":1},"2":{"42":1,"58":1,"61":1,"65":1,"73":1,"74":1,"76":1,"80":1}}],["currency",{"2":{"121":1}}],["currently",{"2":{"75":2}}],["current",{"2":{"61":1,"122":1}}],["currentstate",{"2":{"38":1,"121":1}}],["cursorpagination",{"2":{"36":1,"121":1}}],["cursor",{"2":{"36":3,"115":1,"121":3}}],["cname",{"2":{"33":1,"34":4,"37":1,"121":10}}],["cdk",{"2":{"65":1,"105":1}}],["cd",{"2":{"10":1,"72":1,"84":1}}],["closed",{"2":{"121":1,"122":5}}],["cloned",{"2":{"10":1}}],["clone",{"0":{"9":1},"2":{"9":2,"84":2}}],["cleared",{"2":{"101":1}}],["clear",{"2":{"74":1}}],["clean",{"2":{"67":1,"91":1,"93":1,"100":1}}],["cleanup",{"2":{"52":1,"104":1}}],["client",{"2":{"60":1}}],["click",{"2":{"56":1}}],["cli",{"0":{"10":1,"14":1,"27":1,"41":1,"56":1,"80":1,"82":1,"101":1},"1":{"15":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1},"2":{"5":2,"10":1,"11":1,"15":1,"18":1,"30":1,"52":3,"56":2,"61":1,"81":1,"83":1,"84":1,"85":1,"104":7}}],["casting",{"2":{"122":1}}],["cast",{"2":{"122":5}}],["case",{"2":{"22":1,"38":1,"64":1,"77":1,"103":1,"105":1,"121":1}}],["calculated",{"2":{"122":1}}],["calldata",{"2":{"122":3}}],["calls",{"2":{"22":1,"34":1}}],["category",{"2":{"122":2}}],["categoryid",{"2":{"121":1}}],["categories",{"2":{"121":2}}],["categorized",{"2":{"2":1}}],["capacity",{"2":{"103":2}}],["capabilities",{"2":{"64":1}}],["careful",{"2":{"103":1}}],["caused",{"2":{"80":1,"104":2}}],["caching",{"0":{"66":1},"2":{"53":1,"66":2}}],["cachen",{"2":{"100":1}}],["cached",{"2":{"54":1,"66":1,"101":2,"103":1}}],["cache",{"2":{"52":1,"66":1,"91":1,"93":1,"101":2}}],["cancellation",{"2":{"122":1}}],["cancelledtransactionhash",{"2":{"122":1}}],["cancelledtime",{"2":{"122":1}}],["cancelled",{"2":{"122":2}}],["canceled",{"2":{"122":3}}],["cannot",{"2":{"77":1}}],["can",{"2":{"1":1,"2":1,"6":1,"11":1,"12":1,"14":1,"18":3,"20":1,"30":2,"33":1,"41":1,"42":2,"53":1,"54":1,"61":3,"74":1,"76":1,"77":1,"80":1,"102":1,"103":3,"104":8,"109":1,"117":1,"119":2,"120":2,"122":4}}],["count",{"2":{"122":5}}],["could",{"2":{"103":1}}],["color",{"2":{"121":1}}],["collect",{"2":{"49":1}}],["collections",{"0":{"47":1}}],["collection",{"2":{"28":1,"42":2,"54":1,"60":1,"61":1,"74":3,"101":2}}],["collective",{"0":{"26":1},"1":{"27":1,"28":1},"2":{"2":2,"17":1}}],["collateral",{"2":{"43":1}}],["cosine",{"2":{"103":2}}],["co",{"2":{"74":2}}],["core",{"2":{"64":1}}],["code",{"0":{"53":1},"1":{"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1},"2":{"65":1,"105":1}}],["convert",{"2":{"105":1}}],["confirming",{"2":{"104":1}}],["confirmation",{"2":{"104":1}}],["configuring",{"2":{"104":1}}],["configured",{"2":{"61":1}}],["configure",{"2":{"28":1,"42":1}}],["configurations",{"2":{"104":1}}],["configuration",{"0":{"11":1,"21":1,"23":1,"25":1,"33":1,"35":1,"37":1,"74":1},"2":{"11":1,"52":1,"57":1,"73":1,"102":1,"104":3,"112":1,"114":1}}],["config",{"0":{"102":1,"109":1},"1":{"103":1},"2":{"12":4,"18":1,"21":1,"23":3,"24":2,"27":2,"30":1,"33":1,"35":2,"41":2,"42":1,"74":1,"85":1,"86":1,"90":2,"91":1,"92":1,"94":1,"95":1,"97":1,"98":1,"100":6,"102":1,"103":3,"104":5,"108":1,"121":4,"122":5}}],["concurrent",{"2":{"103":4}}],["concise",{"2":{"74":1}}],["consumed",{"2":{"103":1}}],["consumer",{"2":{"59":1,"77":1}}],["consuming",{"2":{"72":1}}],["condition",{"2":{"36":1,"121":1}}],["conda",{"2":{"7":1}}],["contributor",{"2":{"122":1}}],["contracts",{"2":{"122":3}}],["contract",{"2":{"122":18}}],["contractaddress",{"2":{"121":1,"122":1}}],["containing",{"2":{"57":1}}],["contains",{"2":{"17":1,"29":1,"101":1,"108":1}}],["container",{"2":{"7":1,"104":10}}],["context",{"2":{"74":2,"122":1}}],["contextual",{"2":{"6":1}}],["content",{"2":{"6":1,"21":1,"33":1,"38":3,"39":1,"54":1,"104":1,"109":2,"121":3,"122":4}}],["connecting",{"2":{"68":1}}],["connection",{"2":{"22":1,"34":1,"76":2,"80":5,"104":9,"121":1,"122":1}}],["connects",{"2":{"54":1,"60":1,"68":1}}],["connectors",{"2":{"65":3,"66":1,"105":1}}],["connector",{"0":{"22":1,"34":1,"111":1},"1":{"112":1,"113":1,"114":1,"115":1,"116":1},"2":{"23":1,"24":2,"35":1,"57":1,"58":1,"60":1,"61":1,"93":2,"101":1,"103":1,"112":1,"121":2,"122":3}}],["connect",{"2":{"5":1,"52":1,"59":1,"104":2}}],["common",{"2":{"114":1}}],["committed",{"2":{"103":1}}],["commits",{"2":{"103":1}}],["commentvote",{"2":{"122":2}}],["comment",{"2":{"52":1,"122":23}}],["commands",{"0":{"15":1,"90":1},"1":{"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1},"2":{"15":1,"56":2,"83":1,"85":1,"88":1,"90":1,"101":1}}],["command",{"2":{"5":1,"10":1,"11":1,"12":1,"14":2,"18":1,"27":2,"30":1,"41":2,"42":1,"52":1,"72":1,"76":1,"80":1,"85":2,"88":1,"101":1,"102":1,"104":4}}],["combine",{"2":{"39":1,"110":1,"121":1,"122":1}}],["com",{"2":{"9":1,"22":1,"23":1,"24":2,"34":1,"76":1,"84":1,"121":3,"122":4}}],["compared",{"2":{"117":1}}],["compatible",{"2":{"61":1,"68":1,"75":1,"76":1,"103":1}}],["comply",{"2":{"106":1}}],["completed",{"2":{"12":1,"104":2}}],["complete",{"2":{"1":1,"38":1,"88":1,"91":1,"100":1,"104":1}}],["computer",{"2":{"104":1}}],["compose",{"2":{"104":3}}],["components",{"0":{"55":1},"1":{"56":1,"57":1,"58":1,"59":1,"60":1}}],["comprising",{"2":{"112":1}}],["comprise",{"2":{"53":1}}],["compresses",{"2":{"61":1}}],["compressed",{"2":{"27":1,"42":1,"101":1}}],["comprehensive",{"2":{"1":1,"2":1}}],["covered",{"2":{"45":1}}],["cover",{"2":{"5":1}}],["chosen",{"2":{"122":1}}],["choice",{"2":{"38":2,"121":2,"122":1}}],["choices",{"2":{"38":1,"121":1,"122":3}}],["change",{"2":{"113":1}}],["changes",{"2":{"73":1}}],["chat",{"2":{"74":7}}],["chainid",{"2":{"122":2}}],["chain",{"2":{"43":1,"122":8}}],["chains",{"2":{"1":1}}],["charge",{"2":{"104":1,"116":1}}],["chars",{"2":{"39":2,"110":2,"121":2,"122":2}}],["characters",{"2":{"39":1,"110":1,"121":1,"122":1}}],["chunk",{"2":{"67":1,"122":1}}],["chunking",{"0":{"39":1,"67":1,"110":1},"2":{"39":3,"52":1,"54":1,"57":3,"59":3,"61":1,"66":1,"91":1,"101":1,"103":2,"110":2,"117":1,"119":1,"121":2,"122":2}}],["chunked",{"0":{"97":1},"1":{"98":1,"99":1},"2":{"15":3,"52":1,"54":2,"88":2,"91":2,"93":2,"97":6,"99":2,"100":4,"101":1}}],["checking",{"2":{"104":3}}],["checkout",{"2":{"50":1}}],["check",{"2":{"1":1,"2":1,"6":1,"11":1,"13":1,"15":1,"51":1,"52":2,"56":1,"84":1,"87":1,"104":1}}],["i",{"2":{"122":1}}],["icons",{"2":{"121":1}}],["imageurl",{"2":{"121":1}}],["implement",{"2":{"58":1,"60":1}}],["implements",{"2":{"23":1,"66":1}}],["important",{"2":{"122":1}}],["importing",{"0":{"79":1,"81":1},"2":{"80":1}}],["imported",{"2":{"54":1,"61":1,"74":1,"80":1}}],["import",{"0":{"28":1,"42":1},"2":{"42":1,"74":1,"81":1}}],["illustrates",{"2":{"61":1}}],["identifier",{"2":{"117":1}}],["id",{"2":{"25":4,"34":2,"37":1,"38":1,"57":1,"117":5,"118":3,"121":11,"122":21}}],["io",{"2":{"23":1,"34":1,"121":1,"122":1}}],["iscitizen",{"2":{"122":2}}],["isenabled",{"2":{"121":1}}],["issue",{"2":{"52":1,"122":4}}],["issues",{"2":{"52":1,"122":2}}],["is",{"2":{"6":1,"10":1,"12":1,"15":1,"18":1,"23":1,"24":1,"30":1,"35":1,"36":1,"37":1,"38":1,"43":1,"53":2,"54":1,"66":1,"68":1,"74":4,"77":1,"80":1,"81":1,"84":1,"90":3,"101":3,"104":12,"105":1,"106":1,"110":1,"113":1,"115":1,"116":1,"121":1,"122":6}}],["if",{"2":{"3":1,"6":1,"14":1,"32":1,"51":1,"52":1,"74":2,"76":1,"77":1,"80":1,"84":1,"93":2,"101":1,"103":1,"104":4,"109":1,"122":4}}],["items",{"2":{"38":4,"121":11,"122":23}}],["it",{"0":{"48":1},"1":{"49":1,"50":1,"51":1,"52":1},"2":{"1":1,"4":1,"6":1,"10":1,"11":1,"13":1,"18":1,"22":1,"28":1,"30":1,"37":1,"42":3,"60":1,"61":1,"67":1,"77":1,"80":1,"83":1,"84":1,"90":1,"93":2,"103":2,"104":6,"105":3,"114":1,"116":1,"117":1}}],["its",{"2":{"1":1,"84":1}}],["involved",{"2":{"122":2}}],["init",{"2":{"73":1,"76":1,"80":1,"104":4}}],["initiates",{"2":{"61":1}}],["initiating",{"2":{"57":1}}],["initialize",{"2":{"73":1}}],["initialization",{"2":{"5":1}}],["initial",{"2":{"27":1,"41":1,"52":1}}],["ingestion",{"2":{"67":1}}],["indicating",{"2":{"122":6}}],["individual",{"2":{"54":1}}],["independent",{"2":{"61":1}}],["indexedat",{"2":{"38":1,"121":1}}],["indexedresult",{"2":{"38":1,"121":1}}],["inputs",{"2":{"117":1,"119":1}}],["input",{"0":{"58":1},"2":{"54":1,"57":4,"58":1,"59":1}}],["inform",{"2":{"74":1}}],["information",{"2":{"1":1,"6":1,"11":1,"43":3,"74":2,"103":1,"110":1,"122":8}}],["info",{"2":{"35":1,"121":1}}],["injection",{"2":{"57":1}}],["inject",{"2":{"24":2,"35":2,"36":1,"117":1,"121":3,"122":2}}],["including",{"2":{"91":1,"122":12}}],["include",{"2":{"39":1,"52":1,"74":1,"110":1,"121":1,"122":1}}],["included",{"2":{"38":1,"74":2,"117":1,"119":1}}],["includes",{"2":{"0":1,"113":1,"116":1}}],["increment",{"2":{"24":1,"115":2,"122":1}}],["inspiration",{"2":{"51":1}}],["inserted",{"2":{"24":1}}],["instruct",{"2":{"74":2}}],["instructions",{"0":{"8":1},"1":{"9":1,"10":1,"11":1},"2":{"42":1,"73":1,"84":1,"114":1}}],["instance",{"2":{"61":1,"68":1,"104":9}}],["installed",{"2":{"84":1,"104":1}}],["installation",{"0":{"84":1}}],["install",{"0":{"10":1},"2":{"10":2,"68":1,"77":1,"78":1,"84":5}}],["int32",{"2":{"122":2}}],["integrate",{"2":{"104":1}}],["integrated",{"2":{"62":1}}],["integrates",{"2":{"59":1}}],["integration",{"0":{"48":1},"1":{"49":1,"50":1,"51":1,"52":1},"2":{"64":1,"65":1}}],["integrations",{"2":{"22":1,"34":1,"121":1,"122":1}}],["integer",{"2":{"38":7,"121":35,"122":5}}],["intermediary",{"2":{"103":1}}],["interface",{"2":{"5":1,"85":1}}],["interacting",{"2":{"65":1,"68":1}}],["interact",{"2":{"2":1,"68":1}}],["interested",{"2":{"3":1}}],["interest",{"2":{"1":1}}],["into",{"0":{"28":1,"42":1},"2":{"6":1,"24":3,"35":2,"36":1,"42":1,"54":4,"57":1,"59":2,"61":1,"62":1,"80":1,"81":1,"101":1,"103":1,"105":1,"113":1,"121":3,"122":2}}],["in",{"0":{"53":1,"72":1,"79":1},"1":{"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1},"2":{"0":1,"3":1,"6":1,"12":1,"13":2,"16":1,"18":1,"20":1,"22":1,"27":1,"28":1,"30":1,"33":1,"36":2,"38":3,"41":1,"42":2,"44":1,"52":2,"54":2,"58":1,"60":1,"61":1,"66":1,"69":1,"71":1,"72":1,"73":2,"74":2,"75":1,"77":2,"94":1,"96":1,"97":2,"99":1,"101":5,"102":1,"103":2,"104":10,"105":4,"106":1,"108":1,"110":1,"112":1,"113":1,"114":1,"116":1,"117":5,"118":2,"119":2,"120":2,"121":3,"122":6}}],["grants",{"2":{"122":1}}],["grantsandfunding",{"2":{"122":1}}],["grant",{"2":{"122":2}}],["great",{"0":{"46":1},"1":{"47":1},"2":{"122":1}}],["given",{"2":{"122":6}}],["github",{"2":{"9":1,"47":1,"84":1,"122":1}}],["git",{"2":{"9":3,"84":1}}],["global",{"0":{"89":1}}],["gpu",{"2":{"77":1}}],["gguf",{"2":{"72":3,"74":4,"80":1,"81":1}}],["ggml",{"2":{"72":2}}],["gather",{"0":{"49":1}}],["gaia|other",{"2":{"86":1,"87":1,"104":1}}],["gaianet",{"2":{"9":1,"10":1,"71":2,"73":2,"74":3,"84":2,"104":2}}],["gaia",{"0":{"6":1,"28":1,"42":1,"70":1,"72":1,"73":1,"74":1},"1":{"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"71":1,"72":1,"73":1,"74":1},"2":{"5":1,"6":1,"7":2,"42":1,"54":1,"61":3,"68":1,"71":2,"72":1,"73":1,"74":1,"75":1,"76":3,"77":1,"80":2,"86":1,"87":1,"103":2,"104":20}}],["gz`",{"2":{"42":1}}],["gz",{"2":{"28":1,"42":1,"101":1}}],["gt",{"2":{"14":1,"15":6,"34":2,"52":2,"72":3,"80":1,"81":2,"101":1,"104":2,"121":5,"122":16}}],["guild",{"2":{"9":1,"84":1}}],["guide",{"0":{"48":1,"71":1},"1":{"49":1,"50":1,"51":1,"52":1},"2":{"2":1,"5":1,"28":2,"42":2,"45":1,"50":1,"51":1,"71":1,"104":1}}],["g",{"2":{"7":3,"12":2,"52":1,"81":1,"109":3,"117":1}}],["gets",{"2":{"35":1}}],["getting",{"0":{"19":1,"31":1,"78":1}}],["get",{"2":{"3":1,"13":2,"21":1,"23":1,"33":2,"35":1,"36":1,"45":1,"51":1,"109":1,"121":3,"122":2}}],["generation",{"0":{"68":1},"2":{"6":1,"53":1,"54":1,"59":1,"61":2,"74":1,"83":2,"91":1,"93":1}}],["generating",{"2":{"0":1,"14":1,"54":1,"59":1,"68":1,"104":1}}],["generated",{"2":{"28":1,"42":1,"57":1,"61":1,"69":1,"101":2,"103":1}}],["generates",{"2":{"17":1,"29":1,"54":1,"61":2,"105":1}}],["generate",{"0":{"26":1,"40":1},"1":{"27":1,"28":1,"41":1,"42":1,"43":1,"44":1},"2":{"1":1,"2":1,"6":1,"44":1,"57":1,"60":1,"61":1,"72":1,"105":1}}],["governor",{"2":{"122":2}}],["governance",{"0":{"1":1,"29":1,"121":1},"1":{"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1},"2":{"1":1,"29":1,"33":1,"34":1,"121":1,"122":5}}],["goes",{"2":{"101":1}}],["goldmine",{"2":{"47":1}}],["got",{"2":{"45":1}}],["goods",{"2":{"2":1,"122":1}}],["occurred",{"2":{"122":2}}],["oauth",{"2":{"114":1}}],["omit",{"2":{"104":1}}],["ok",{"2":{"76":2,"80":2,"104":6}}],["ollama",{"0":{"77":1,"78":1,"79":1},"1":{"78":1,"79":1,"80":1,"81":1},"2":{"59":2,"68":3,"75":1,"76":1,"77":2,"78":1,"80":4,"81":5,"103":1}}],["our",{"2":{"51":1}}],["outlined",{"2":{"73":1}}],["outlines",{"2":{"62":1}}],["out",{"2":{"51":1,"52":1,"122":2}}],["outputs",{"0":{"101":1}}],["output",{"0":{"60":1},"2":{"12":1,"27":1,"28":1,"41":1,"42":2,"52":1,"57":1,"60":1,"61":1,"66":1,"101":1,"103":3}}],["overall",{"2":{"122":2}}],["overrides",{"2":{"93":1}}],["over",{"0":{"64":1},"2":{"64":1}}],["overlap",{"2":{"39":2,"110":2,"121":2,"122":2}}],["overview",{"0":{"54":1,"61":1,"83":1,"105":1},"1":{"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1},"2":{"20":1,"104":1,"120":1}}],["object",{"2":{"22":1,"23":1,"34":1,"35":1,"38":8,"54":1,"80":1,"104":2,"108":1,"116":1,"118":1,"119":1,"121":21,"122":50}}],["orchestrating",{"2":{"116":1}}],["order",{"2":{"73":1}}],["orig",{"2":{"39":1,"110":1,"121":1,"122":1}}],["organization",{"2":{"122":5}}],["org",{"2":{"22":1,"34":1,"38":1,"118":1,"121":6,"122":1}}],["or",{"2":{"6":1,"7":1,"9":1,"11":1,"13":1,"15":2,"18":1,"28":1,"30":1,"42":1,"51":1,"52":1,"53":1,"61":1,"74":7,"103":1,"104":5,"105":1,"122":9}}],["otherwise",{"2":{"90":1,"104":3}}],["other",{"0":{"3":1,"44":1,"45":1},"1":{"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1},"2":{"3":2,"5":1,"12":1,"38":2,"52":1,"61":2,"74":1,"76":3,"80":2,"87":1,"104":2,"122":1}}],["operations",{"2":{"103":5}}],["openai",{"0":{"76":1},"2":{"61":1,"68":2,"75":2,"76":4,"80":1,"90":1,"103":4}}],["openapi",{"0":{"19":1,"31":1},"2":{"12":4,"13":2,"14":1,"15":1,"17":1,"27":1,"29":1,"41":1,"49":1,"50":3,"52":1,"54":1,"57":3,"61":1,"91":3,"92":2,"100":2,"105":2,"117":2,"118":1}}],["open",{"0":{"67":1},"2":{"52":1,"122":1}}],["opt",{"2":{"77":1}}],["optimisticproposaldata",{"2":{"122":2}}],["optimisticproposalresults",{"2":{"122":2}}],["optimistic",{"2":{"122":8}}],["optimism",{"0":{"2":1,"17":1,"122":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1},"2":{"2":1,"21":1,"23":1,"27":1,"28":2,"122":2}}],["optimized",{"2":{"67":1}}],["optimize",{"2":{"66":1}}],["options",{"0":{"87":1,"89":1,"93":1,"96":1,"99":1},"2":{"85":2,"86":2,"88":2,"91":2,"94":2,"97":2,"104":3,"112":1,"121":2,"122":3}}],["option",{"2":{"18":1,"24":2,"30":1,"36":1,"52":3,"121":1,"122":7}}],["optional",{"2":{"7":2,"117":1}}],["op",{"0":{"26":1},"1":{"27":1,"28":1},"2":{"2":3,"17":1,"122":2}}],["onchain",{"2":{"122":3}}],["once",{"2":{"12":1,"14":1,"42":1}}],["online",{"2":{"105":1}}],["only",{"2":{"22":1,"52":2,"72":1,"91":2,"93":2,"100":1,"117":1}}],["onboarding",{"2":{"43":1}}],["oneof",{"2":{"122":3}}],["one",{"2":{"7":1,"18":1,"30":1,"90":1,"104":1,"122":1}}],["on",{"2":{"1":2,"2":2,"5":1,"6":2,"13":1,"14":1,"33":1,"38":1,"41":1,"42":1,"43":1,"50":1,"52":1,"56":1,"57":1,"59":1,"61":1,"68":1,"69":1,"73":1,"74":1,"75":1,"77":2,"87":1,"101":1,"103":1,"104":2,"117":1,"121":2,"122":23}}],["own",{"0":{"13":1},"2":{"0":1,"7":1,"10":1,"16":1,"104":1}}],["offer",{"2":{"75":1}}],["offers",{"2":{"1":2,"68":1,"76":1,"83":1,"103":1,"104":1}}],["official",{"2":{"28":1,"42":1,"50":1,"71":1,"78":1}}],["offsetincrement",{"2":{"24":1,"122":1}}],["offset",{"2":{"24":4,"115":1,"122":5}}],["of",{"2":{"0":1,"1":1,"7":1,"13":1,"14":1,"15":1,"20":1,"33":1,"38":1,"47":2,"54":1,"65":1,"66":1,"67":1,"68":1,"72":1,"74":2,"75":1,"77":2,"81":1,"83":1,"90":2,"101":1,"102":1,"103":4,"104":2,"108":1,"113":2,"116":1,"117":2,"119":1,"121":1,"122":134}}],["year",{"2":{"122":1}}],["years",{"2":{"122":1}}],["y",{"2":{"104":8}}],["yyyy",{"2":{"28":1,"42":2,"101":2}}],["you",{"2":{"1":1,"3":1,"6":3,"11":1,"12":4,"13":3,"14":4,"16":2,"18":3,"20":1,"27":1,"30":2,"33":1,"41":1,"42":2,"44":1,"45":1,"52":1,"73":1,"74":5,"75":1,"76":3,"77":2,"80":2,"84":1,"90":1,"104":26,"105":2,"119":1,"120":2}}],["your",{"0":{"13":1,"72":1,"73":1},"2":{"0":1,"1":1,"6":1,"7":2,"9":1,"10":1,"11":1,"16":1,"18":1,"28":1,"30":1,"42":2,"45":1,"50":1,"52":1,"57":1,"61":1,"71":1,"72":1,"73":1,"74":8,"81":1,"104":4}}],["yaml",{"2":{"0":1,"12":5,"23":1,"24":2,"27":2,"41":2,"44":1,"57":2,"91":3,"92":2,"93":1,"94":1,"95":1,"97":1,"98":1,"100":6,"101":1,"105":1,"121":2,"122":3}}],["block",{"2":{"122":5}}],["blocknumber",{"2":{"38":1,"121":1}}],["budgetamount",{"2":{"122":1}}],["budgettoken",{"2":{"122":1}}],["budgettokensspent",{"2":{"122":2}}],["budget",{"2":{"122":3}}],["bumpedat",{"2":{"121":1}}],["building",{"2":{"108":1,"109":1}}],["build",{"2":{"0":1}}],["breakdown",{"2":{"122":2}}],["break",{"2":{"103":1}}],["browse",{"2":{"47":1}}],["bar",{"2":{"118":1}}],["backend",{"2":{"103":1}}],["background",{"2":{"77":1}}],["batch",{"2":{"72":2,"74":2,"103":3}}],["basichttpauthenticator",{"2":{"114":1}}],["basic",{"0":{"21":1,"33":1}}],["basedir",{"2":{"101":8}}],["based",{"2":{"6":1,"23":1,"24":3,"36":1,"54":1,"64":1,"69":1,"75":1,"103":2,"105":1,"115":1,"121":2,"122":3}}],["base",{"0":{"26":1,"40":1,"73":1,"114":1,"116":1},"1":{"27":1,"28":1,"41":1,"42":1,"43":1,"44":1},"2":{"1":1,"2":1,"6":1,"16":1,"17":1,"23":3,"27":1,"28":1,"29":1,"35":3,"41":2,"42":3,"44":1,"53":1,"54":1,"60":1,"61":1,"69":1,"71":1,"72":1,"73":1,"74":3,"101":1,"103":4,"104":1,"106":1,"113":1,"114":1,"116":3,"121":4,"122":4}}],["bases",{"2":{"0":1}}],["body",{"2":{"121":2}}],["boolean",{"2":{"121":6,"122":6}}],["bot",{"2":{"43":1}}],["both",{"2":{"14":1,"61":1}}],["boardrooms",{"2":{"1":1}}],["boardroom",{"0":{"1":1,"29":1,"31":1,"121":1},"1":{"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1},"2":{"1":2,"12":6,"29":1,"30":1,"33":2,"34":4,"35":1,"41":3,"42":4,"44":1,"74":4,"100":6,"121":7}}],["behind",{"2":{"122":3}}],["been",{"2":{"122":3}}],["before",{"2":{"104":1}}],["between",{"2":{"103":1,"122":2}}],["bearerauthenticator",{"2":{"23":2,"114":1,"122":1}}],["below",{"2":{"15":1,"23":1,"25":1,"37":1,"74":1,"90":1,"104":1,"120":1}}],["being",{"2":{"4":1}}],["be",{"2":{"2":1,"4":1,"6":1,"12":1,"38":2,"39":1,"41":1,"42":1,"53":1,"54":1,"61":3,"71":1,"72":1,"74":1,"90":1,"101":2,"102":1,"103":6,"104":4,"108":1,"109":1,"112":1,"117":4,"118":1,"119":4,"122":8}}],["by",{"2":{"2":1,"12":1,"27":1,"29":1,"33":1,"36":1,"38":1,"39":1,"41":1,"52":1,"61":1,"72":1,"76":1,"80":1,"84":1,"101":1,"102":1,"103":2,"104":6,"108":1,"110":1,"117":1,"121":1,"122":10}}],["mirror",{"2":{"122":1}}],["minimum",{"2":{"122":5}}],["milliseconds",{"2":{"103":2}}],["ms",{"2":{"103":3}}],["m",{"2":{"74":1}}],["must",{"2":{"106":1,"108":1,"112":1,"117":2,"118":1,"119":1}}],["multiple",{"2":{"113":2,"115":1,"122":1}}],["multiprocessing",{"2":{"64":1}}],["multipage",{"2":{"39":1,"110":1,"121":1,"122":1}}],["multithreading",{"2":{"64":1}}],["much",{"2":{"1":1}}],["mm",{"2":{"28":2,"42":4,"101":4}}],["media",{"2":{"122":2}}],["measure",{"2":{"122":2}}],["means",{"2":{"103":1}}],["messages",{"2":{"90":1}}],["message",{"2":{"74":1,"85":1,"86":1,"88":1,"91":1,"94":1,"97":1,"104":3}}],["mechanisms",{"2":{"66":1}}],["mention",{"2":{"42":1,"74":1}}],["menu",{"2":{"6":1}}],["metis",{"2":{"43":2}}],["meta",{"2":{"74":2}}],["metacartel",{"2":{"34":1,"121":4}}],["metadata",{"2":{"22":1,"32":1,"34":1,"38":1,"54":1,"60":1,"74":2,"109":1,"112":1,"122":10}}],["methods",{"2":{"114":1}}],["method",{"2":{"21":1,"23":1,"33":1,"35":1,"109":2,"114":1,"121":2,"122":2}}],["markdowntitle",{"2":{"122":2}}],["marketprices",{"2":{"121":1}}],["may",{"2":{"122":1}}],["match",{"2":{"118":1}}],["made",{"2":{"103":1,"122":2}}],["mac",{"2":{"74":1,"77":1}}],["machine",{"2":{"9":1,"67":1,"68":1}}],["maxapprovals",{"2":{"122":1}}],["maxsupply",{"2":{"121":1}}],["maximum",{"2":{"103":2,"122":1}}],["max",{"2":{"39":1,"80":1,"103":4,"104":2,"110":1,"121":1,"122":1}}],["making",{"2":{"22":1,"34":1,"67":1}}],["make",{"2":{"13":1,"27":1,"35":1,"41":1,"73":1,"74":1,"104":1}}],["main",{"2":{"12":1,"20":1,"74":2}}],["many",{"2":{"103":1,"104":1}}],["manhattan",{"2":{"103":1}}],["management",{"2":{"84":1}}],["manager",{"2":{"7":1}}],["manually",{"0":{"81":1}}],["manifests",{"0":{"120":1},"1":{"121":1,"122":1},"2":{"13":1}}],["manifest",{"0":{"13":1,"16":1,"20":1,"32":1,"51":1,"105":1,"106":1},"1":{"21":1,"22":1,"23":1,"24":1,"25":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"106":1,"107":2,"108":2,"109":2,"110":2,"111":2,"112":2,"113":2,"114":2,"115":2,"116":2,"117":2,"118":2,"119":2},"2":{"0":4,"12":1,"13":3,"14":1,"15":3,"16":1,"17":1,"20":1,"22":1,"29":1,"33":1,"34":1,"44":1,"52":2,"54":4,"57":7,"58":1,"61":2,"91":5,"92":2,"93":3,"94":3,"95":2,"97":3,"98":2,"101":1,"105":2,"106":2,"108":1,"111":1,"113":1,"116":1,"120":1}}],["months",{"2":{"122":2}}],["most",{"2":{"102":1,"105":1,"122":1}}],["module",{"0":{"58":1,"60":1},"2":{"56":1,"58":1,"61":8}}],["modules",{"2":{"53":1}}],["modify",{"2":{"44":1}}],["mode",{"0":{"72":1},"2":{"39":1,"72":1,"84":4,"110":1,"121":1,"122":1}}],["modelfile",{"2":{"81":3}}],["models",{"2":{"64":1,"67":1,"68":2,"80":3,"90":1,"104":2}}],["model",{"0":{"79":1,"81":1},"2":{"6":1,"7":2,"54":2,"61":3,"72":10,"73":1,"74":1,"76":1,"80":4,"81":5,"87":1,"103":2,"104":4}}],["molochdao",{"2":{"12":1,"74":1}}],["more",{"2":{"0":1,"1":1,"4":1,"6":1,"11":2,"12":1,"14":1,"15":1,"59":1,"75":1,"77":1,"81":1,"102":1,"103":1,"110":1,"120":1,"121":2,"122":4}}],["smart",{"2":{"122":1}}],["slug",{"2":{"121":2}}],["symbol",{"2":{"121":1}}],["synchronous",{"2":{"116":1}}],["system",{"0":{"7":1},"2":{"53":1,"61":1,"74":2}}],["skips",{"2":{"93":1}}],["say",{"2":{"74":2}}],["sample",{"0":{"120":1},"1":{"121":1,"122":1},"2":{"13":1}}],["scratch",{"2":{"91":1,"93":1,"101":1,"104":1}}],["scores",{"2":{"122":6}}],["score",{"2":{"74":1,"103":1}}],["schemas",{"0":{"118":1},"2":{"25":3,"37":2,"38":1,"50":2,"105":1,"117":2,"118":4,"121":6,"122":29}}],["schema",{"0":{"38":1,"50":1,"106":1},"1":{"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1},"2":{"22":2,"23":1,"34":2,"35":1,"38":3,"50":1,"59":1,"105":1,"106":1,"111":1,"114":1,"117":4,"118":3,"121":12,"122":2}}],["swagger",{"2":{"49":1,"50":2}}],["show",{"2":{"85":1,"86":1,"88":1,"91":1,"94":1,"97":1,"104":1}}],["showcase",{"2":{"0":1}}],["should",{"2":{"35":1,"72":1,"74":1,"90":1,"117":2,"118":1,"119":1,"122":1}}],["ss",{"2":{"28":1,"42":2,"101":2}}],["signatures",{"2":{"122":2}}],["similar",{"2":{"74":2}}],["similarity",{"2":{"69":2,"103":1}}],["simplifies",{"2":{"67":1}}],["simpleretriever",{"2":{"116":2,"121":2,"122":2}}],["simple",{"2":{"45":1}}],["single",{"2":{"54":1,"59":1,"113":2,"115":1,"116":2,"121":4,"122":3}}],["since",{"2":{"21":1}}],["site",{"2":{"32":1,"105":1}}],["size",{"2":{"24":3,"72":4,"74":4,"76":1,"80":1,"103":2,"104":3,"121":1,"122":2}}],["sociallinks",{"2":{"122":3}}],["social",{"2":{"122":3}}],["socket",{"2":{"72":1}}],["so",{"2":{"104":1}}],["somewhere",{"2":{"104":1}}],["some",{"2":{"22":1,"34":1,"50":1,"77":1,"104":1}}],["source",{"0":{"53":1,"67":1},"1":{"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1},"2":{"6":1,"12":1,"14":1,"53":1,"54":1,"57":3,"58":2,"59":5,"60":1,"66":1,"67":1,"72":1,"91":2,"93":2,"101":1,"104":3,"105":2,"112":1,"114":1,"120":1}}],["sources",{"0":{"45":1,"65":1},"1":{"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1},"2":{"3":1,"22":1,"34":1,"65":1,"121":1,"122":1}}],["succeeded",{"2":{"122":1}}],["such",{"2":{"61":2,"103":1}}],["suggests",{"2":{"104":1}}],["supplied",{"2":{"122":1}}],["supply",{"2":{"122":7}}],["supplement",{"2":{"73":1}}],["supports",{"2":{"65":1,"75":2,"76":1,"114":1,"115":1}}],["supported",{"0":{"75":1},"1":{"76":1,"77":1,"78":1,"79":1,"80":1,"81":1},"2":{"61":1,"75":1,"87":1,"104":1,"109":1}}],["support",{"2":{"5":1,"122":1}}],["supercharge",{"2":{"45":1}}],["susds",{"2":{"43":1}}],["summary",{"2":{"38":3,"121":2,"122":145}}],["submit",{"2":{"122":1}}],["submitted",{"2":{"122":4}}],["subsequent",{"2":{"122":1}}],["subcommand",{"2":{"104":1}}],["sub",{"0":{"15":1},"2":{"122":2}}],["sure",{"2":{"13":1,"27":1,"41":1}}],["spent",{"2":{"122":2}}],["specs",{"2":{"50":1}}],["spec",{"0":{"19":1,"31":1,"112":1},"2":{"12":1,"13":1,"14":1,"15":1,"22":3,"34":3,"50":1,"52":1,"54":1,"57":2,"91":2,"92":2,"105":1,"108":1,"117":2,"118":1,"121":3,"122":3}}],["specified",{"2":{"54":2,"59":1,"93":2,"101":1}}],["specifies",{"2":{"38":1,"72":2,"114":1}}],["specifics",{"2":{"122":1}}],["specifically",{"2":{"67":1}}],["specifications",{"2":{"49":1}}],["specification",{"0":{"22":1,"34":1},"2":{"12":1,"13":1,"17":1,"22":1,"29":1,"34":1,"57":1,"61":1,"91":1,"105":2,"112":1,"121":1,"122":1}}],["specific",{"2":{"11":1,"56":1,"103":1,"122":4}}],["specify",{"2":{"12":1,"104":3,"119":1}}],["spin",{"2":{"5":1,"7":2,"104":2}}],["s",{"0":{"48":1},"1":{"49":1,"50":1,"51":1,"52":1},"2":{"6":1,"13":1,"18":1,"30":1,"32":1,"37":1,"38":1,"42":1,"45":1,"74":2,"80":1,"93":1,"103":1,"105":1,"117":1,"118":1,"119":2,"122":15}}],["snapshotblocknumber",{"2":{"122":1}}],["snapshotproposaldata",{"2":{"122":2}}],["snapshotproposalresults",{"2":{"122":2}}],["snapshot",{"0":{"28":1,"42":1,"69":1},"2":{"6":1,"12":1,"14":1,"27":1,"28":2,"41":2,"42":4,"54":2,"60":1,"61":2,"69":1,"74":8,"91":1,"101":4,"103":1,"122":9}}],["service",{"2":{"104":1}}],["services",{"2":{"90":1}}],["server",{"2":{"18":1,"68":1,"72":1,"74":1,"75":1,"104":3}}],["serialized",{"2":{"53":1,"57":1}}],["searches",{"2":{"69":1}}],["search",{"2":{"53":1,"69":2,"103":1}}],["selecting",{"0":{"73":1}}],["selection",{"0":{"24":1,"36":1},"2":{"28":1,"42":1}}],["selected",{"2":{"59":1,"72":1,"104":1}}],["select",{"2":{"42":1,"76":1,"80":1}}],["selectors",{"2":{"113":1}}],["selector",{"0":{"113":1},"2":{"36":1,"113":3,"116":6,"117":1,"121":6,"122":6}}],["see",{"2":{"34":1,"104":1,"121":1}}],["seconds",{"2":{"104":1}}],["secret",{"2":{"22":1,"34":1,"121":1,"122":1}}],["secrets",{"2":{"18":1,"30":1,"104":3}}],["secure",{"2":{"18":1,"30":1}}],["sections",{"2":{"4":1,"5":1,"6":1,"16":1,"20":1,"39":1,"75":1,"110":1,"121":1,"122":1}}],["section",{"2":{"0":1,"1":1,"2":1,"3":1,"12":1,"13":1,"21":1,"39":1,"87":1,"104":1,"105":1,"108":1,"112":1,"117":1,"119":1,"120":1}}],["setting",{"2":{"76":1,"80":1,"103":1,"104":7}}],["settings",{"0":{"102":1},"1":{"103":1},"2":{"5":1,"11":1,"27":1,"28":1,"33":1,"39":1,"41":1,"42":2,"52":1,"57":1,"76":2,"80":2,"85":1,"86":1,"91":1,"92":1,"93":1,"94":1,"95":1,"97":1,"98":1,"102":1,"103":2,"104":17}}],["set",{"2":{"6":1,"18":1,"24":1,"30":1,"39":1,"72":1,"80":1,"102":2,"103":1,"104":4,"109":1,"115":1,"117":1,"122":1}}],["setup",{"0":{"8":1,"11":1,"50":1,"80":1,"86":1,"104":1},"1":{"9":1,"10":1,"11":1},"2":{"5":1,"11":3,"18":1,"27":2,"30":1,"41":2,"52":2,"71":1,"74":1,"75":1,"76":4,"80":2,"85":2,"86":3,"90":2,"102":2,"104":13}}],["step",{"2":{"76":1,"80":1,"104":9}}],["steps",{"2":{"59":1,"61":1}}],["studio",{"2":{"74":1}}],["still",{"2":{"52":1}}],["storing",{"2":{"69":1}}],["stored",{"2":{"54":1,"61":1,"66":1,"101":5,"103":1,"104":4}}],["store",{"2":{"18":1,"30":1,"53":1,"60":1}}],["stop",{"2":{"36":1,"100":1,"121":1}}],["structured",{"2":{"122":1}}],["streamlining",{"2":{"66":1}}],["stream",{"0":{"64":1},"2":{"54":2,"57":1,"58":1,"59":2,"60":1,"61":2,"65":1,"101":3,"105":1}}],["streams",{"2":{"53":1,"54":3,"57":1,"59":2,"61":1,"64":2,"91":1,"101":2,"103":1}}],["strategy",{"2":{"24":2,"36":1,"39":1,"110":1,"115":1,"121":2,"122":4}}],["strategies",{"2":{"0":1,"115":1}}],["string",{"2":{"22":1,"34":3,"38":21,"109":1,"117":1,"118":3,"119":1,"121":73,"122":149}}],["starred",{"2":{"122":2}}],["star",{"2":{"122":1}}],["starting",{"2":{"72":1,"104":4}}],["starttimestamp",{"2":{"38":1,"121":1,"122":1}}],["starttime",{"2":{"38":1,"121":1,"122":1}}],["starts",{"2":{"33":1}}],["start",{"0":{"71":1},"2":{"11":1,"14":1,"71":1,"72":1,"73":2,"93":1,"104":4,"122":3}}],["started",{"2":{"3":1,"45":1,"104":2}}],["standardproposaldata",{"2":{"122":2}}],["standardproposalresults",{"2":{"122":2}}],["standard",{"2":{"122":8}}],["state",{"2":{"122":2}}],["statement",{"2":{"122":7}}],["status",{"2":{"122":6}}],["stages",{"2":{"56":1,"61":1,"62":1,"66":2,"83":1}}],["stage",{"2":{"53":1,"57":1,"67":1,"72":1,"91":2,"93":3,"101":1,"103":2,"104":3,"117":1,"119":1}}],["stack",{"0":{"62":1},"1":{"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1},"2":{"4":1,"6":1}}],["pending",{"2":{"122":4}}],["performed",{"2":{"103":1}}],["performance",{"2":{"64":1,"66":1}}],["performs",{"2":{"61":1}}],["per",{"2":{"57":1,"103":1}}],["publish",{"2":{"105":1}}],["public",{"0":{"47":1},"2":{"2":1,"7":1,"41":1,"47":1,"122":1}}],["pushed",{"2":{"103":1}}],["purposes",{"2":{"87":1,"89":1}}],["pyairbyte",{"0":{"65":1},"2":{"54":1,"58":1}}],["python",{"2":{"6":1,"7":2,"64":1,"65":1,"68":3}}],["power",{"2":{"122":27}}],["positions",{"2":{"122":1}}],["position",{"2":{"121":1}}],["postnumber",{"2":{"121":1}}],["postcount",{"2":{"121":1}}],["posted",{"2":{"74":2}}],["postscount",{"2":{"121":1}}],["posts",{"2":{"32":1}}],["possible",{"2":{"74":2}}],["policy",{"2":{"74":1}}],["port=6333",{"2":{"104":1}}],["port=8080",{"2":{"104":1}}],["port=11434",{"2":{"80":1}}],["port",{"2":{"74":1}}],["portal",{"2":{"30":1}}],["point",{"2":{"74":1}}],["poetry",{"2":{"7":1,"84":5}}],["packages",{"2":{"122":1}}],["passage",{"2":{"122":4}}],["passed",{"2":{"122":1}}],["pass",{"2":{"122":5}}],["past",{"2":{"122":1}}],["paid",{"2":{"47":1}}],["particular",{"2":{"122":5}}],["participation",{"2":{"122":4}}],["partial",{"2":{"122":2}}],["partition",{"2":{"59":1,"67":1}}],["partitioned",{"2":{"54":1}}],["partitioning",{"0":{"67":1},"2":{"54":1,"59":1,"61":1}}],["party",{"2":{"64":1}}],["params",{"0":{"110":1},"2":{"39":1,"57":1,"59":1,"121":1,"122":2}}],["parameter",{"2":{"22":1,"24":2,"34":1,"35":1,"36":1,"52":1,"57":1,"104":1,"108":1,"110":2,"121":3,"122":2}}],["parameters",{"0":{"39":1,"108":1},"2":{"12":1,"14":1,"21":2,"22":1,"24":2,"33":2,"34":1,"44":1,"51":1,"57":3,"58":1,"103":3,"104":1,"108":2,"110":1,"112":2,"117":2,"121":1,"122":2}}],["parse",{"2":{"53":1}}],["parsed",{"2":{"38":1,"117":1,"119":1}}],["parsing",{"2":{"38":1}}],["paths",{"2":{"117":1}}],["pathway",{"0":{"64":1},"2":{"54":1,"58":1,"59":1,"60":1,"61":1,"103":4}}],["path",{"2":{"12":2,"36":1,"74":1,"80":1,"81":1,"91":3,"94":2,"97":2,"100":2,"113":2,"117":1,"121":2,"122":2}}],["paginated",{"2":{"122":1}}],["paginator",{"0":{"115":1},"2":{"24":1,"36":1,"116":1,"121":1,"122":1}}],["pagination",{"0":{"24":1,"36":1},"2":{"0":1,"24":4,"36":2,"115":2,"121":2,"122":4}}],["pagemetadata",{"2":{"122":1}}],["page",{"2":{"11":2,"13":1,"24":4,"36":1,"61":1,"62":1,"115":1,"121":1,"122":4}}],["pinned",{"2":{"121":1}}],["pieces",{"2":{"74":1}}],["pip",{"2":{"10":1,"84":2}}],["pipelines",{"2":{"64":1,"104":1}}],["pipeline",{"0":{"4":1,"5":1,"6":1,"10":1,"11":1,"12":1,"13":1,"14":1,"16":1,"20":1,"26":1,"27":1,"32":1,"40":1,"41":1,"51":1,"55":1,"59":1,"64":1,"70":1,"82":1,"90":1,"102":1,"104":1,"105":1,"106":1,"120":1},"1":{"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":2,"21":1,"22":1,"23":1,"24":1,"25":1,"27":1,"28":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"41":1,"42":1,"43":1,"44":1,"56":1,"57":1,"58":1,"59":1,"60":1,"71":1,"72":1,"73":1,"74":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":2,"92":2,"93":2,"94":2,"95":2,"96":2,"97":2,"98":2,"99":2,"100":1,"101":1,"103":1,"106":1,"107":2,"108":2,"109":2,"110":2,"111":2,"112":2,"113":2,"114":2,"115":2,"116":2,"117":2,"118":2,"119":2,"121":1,"122":1},"2":{"0":4,"4":1,"5":3,"6":3,"9":1,"10":2,"11":2,"12":6,"13":3,"14":4,"15":4,"16":1,"17":3,"18":1,"20":2,"27":4,"29":3,"30":1,"32":1,"41":4,"44":1,"45":1,"52":4,"53":2,"54":3,"56":1,"57":4,"59":1,"61":5,"62":1,"66":1,"72":1,"75":2,"76":6,"77":1,"80":6,"83":2,"84":5,"85":5,"86":3,"88":6,"90":2,"91":7,"92":2,"93":3,"94":5,"95":2,"97":5,"98":2,"100":12,"101":1,"102":2,"103":1,"104":31,"105":2,"106":1,"107":1,"110":1,"113":1,"116":1,"117":1,"120":1}}],["pick",{"2":{"7":1}}],["price",{"2":{"121":1}}],["prior",{"2":{"85":1,"86":1,"90":1,"104":1}}],["privacy",{"2":{"38":1,"121":1}}],["primary",{"2":{"25":2,"37":1,"74":1,"117":4,"121":5,"122":2}}],["prerequisite",{"2":{"122":2}}],["previous",{"2":{"104":1}}],["preload",{"2":{"72":2}}],["prepare",{"2":{"67":1,"114":1}}],["preprocessed",{"2":{"54":1,"59":1,"101":3}}],["preprocessing",{"2":{"54":1,"59":1,"61":1,"67":1}}],["preprocess",{"2":{"53":1}}],["preferred",{"2":{"61":1}}],["preference",{"2":{"7":1,"81":1}}],["pre",{"0":{"18":1,"30":1},"2":{"74":1}}],["profileavatarurl",{"2":{"122":2}}],["proceeding",{"2":{"104":1}}],["process",{"2":{"64":1,"93":2,"104":2}}],["processing",{"2":{"53":1,"54":1,"59":1,"64":2,"66":2}}],["processed",{"2":{"12":1,"27":1,"41":1,"69":1}}],["produced",{"2":{"101":1}}],["production",{"2":{"84":2}}],["providing",{"2":{"54":1,"122":2}}],["provided",{"2":{"74":1}}],["provider",{"2":{"7":1,"50":1,"54":1,"59":2,"61":2,"68":1,"76":9,"77":1,"80":8,"86":2,"87":2,"90":2,"103":8,"104":16}}],["providers",{"0":{"75":1},"1":{"76":1,"77":1,"78":1,"79":1,"80":1,"81":1},"2":{"5":1,"61":2,"68":1,"75":2,"87":1,"104":1,"105":1}}],["provides",{"2":{"2":1,"57":1,"68":1,"69":1,"83":1,"122":1}}],["provide",{"2":{"1":1,"6":1,"18":1,"30":1,"43":1,"61":1,"74":1,"104":1}}],["protocols",{"2":{"32":2,"33":1,"37":1,"121":2}}],["protocol",{"2":{"29":1,"32":1,"33":1,"34":4,"38":1,"42":1,"74":2,"121":13}}],["projectcoverimageurl",{"2":{"122":1}}],["project",{"2":{"25":2,"84":2,"122":13}}],["projects",{"2":{"2":1,"17":1,"20":2,"25":2,"122":3}}],["propertyname",{"2":{"122":1}}],["properties",{"2":{"22":1,"34":1,"38":9,"112":1,"118":1,"119":1,"121":21,"122":41}}],["proposer",{"2":{"38":1,"121":1,"122":3}}],["proposalvalue",{"2":{"122":1}}],["proposalid",{"2":{"122":1}}],["proposaltitle",{"2":{"122":1}}],["proposaltemplateid",{"2":{"122":1}}],["proposaltemplate",{"2":{"122":3}}],["proposaltype",{"2":{"122":2}}],["proposalresults",{"2":{"122":1}}],["proposaldata",{"2":{"122":1}}],["proposal",{"2":{"25":2,"37":1,"38":1,"43":1,"121":2,"122":93}}],["proposalsettings",{"2":{"122":1}}],["proposalsvotedon",{"2":{"122":1}}],["proposalscreated",{"2":{"122":1}}],["proposals",{"2":{"1":1,"2":1,"17":1,"20":2,"25":2,"32":2,"37":4,"38":1,"74":2,"121":4,"122":14}}],["prompts",{"0":{"43":1,"73":1},"2":{"42":2,"73":1,"74":1}}],["prompt",{"2":{"6":1,"72":1,"74":4,"104":4}}],["please",{"2":{"104":1}}],["planning",{"2":{"77":1}}],["platforms",{"2":{"122":1}}],["platform",{"2":{"2":1}}],["plugged",{"2":{"6":1}}],["duration",{"2":{"103":2}}],["during",{"2":{"103":4,"104":1,"117":1,"119":1}}],["duckdb",{"0":{"66":1},"2":{"54":1,"66":1,"101":1}}],["driven",{"2":{"64":1}}],["draft",{"2":{"22":1,"34":1,"38":1,"118":1,"121":6,"122":1}}],["db",{"2":{"60":1,"61":2,"101":1,"103":3,"104":3}}],["dpathextractor",{"2":{"36":1,"113":2,"121":2,"122":2}}],["dd",{"2":{"28":1,"42":2,"101":2}}],["dynamically",{"2":{"24":1}}],["double",{"2":{"117":1}}],["dot",{"2":{"103":1}}],["don",{"2":{"74":2,"104":1}}],["domain",{"2":{"54":1,"61":1,"74":1}}],["down",{"2":{"49":1,"80":1,"90":2,"104":2}}],["download",{"2":{"9":1,"10":1,"28":1,"42":1,"60":1,"74":1,"78":1,"81":1}}],["do",{"2":{"42":1,"50":1,"74":1,"104":6}}],["documents",{"2":{"67":1}}],["document",{"2":{"53":1}}],["documentation",{"0":{"49":1,"82":1},"1":{"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1},"2":{"1":1,"5":1,"15":1,"22":1,"34":1,"104":1,"110":1,"121":1,"122":1}}],["docker",{"2":{"7":1,"104":15}}],["docs",{"2":{"7":2,"22":1,"23":1,"24":2,"34":3,"68":2,"103":1,"112":1,"113":1,"114":1,"115":1,"116":1,"121":5,"122":4}}],["did",{"2":{"122":1}}],["disposition",{"2":{"122":1}}],["distance",{"2":{"103":1}}],["discriminator",{"2":{"122":1}}],["discoursecategory",{"2":{"121":2}}],["discoursecategories",{"2":{"32":1,"121":4}}],["discoursetopicpost",{"2":{"121":2}}],["discoursetopicposts",{"2":{"32":1,"121":4}}],["discoursetopic",{"2":{"121":2}}],["discoursetopics",{"2":{"32":1,"121":4}}],["discourse",{"2":{"32":1}}],["discord",{"2":{"18":1,"122":4}}],["discussion",{"2":{"32":1,"122":1}}],["discussions",{"2":{"1":1,"74":2}}],["dir",{"2":{"71":1,"72":2}}],["directed",{"2":{"122":1}}],["direct",{"2":{"122":9}}],["directly",{"2":{"18":1,"30":1,"74":1}}],["directory",{"2":{"10":1,"71":1,"101":1}}],["diverse",{"2":{"67":1}}],["diagram",{"2":{"61":1}}],["dict",{"2":{"57":1}}],["different",{"2":{"0":1,"14":1,"44":1,"45":1,"53":1,"62":1,"83":1,"120":1}}],["date",{"2":{"122":10}}],["datetime",{"2":{"122":1}}],["dataflow",{"2":{"103":1}}],["dataset",{"2":{"15":2,"61":1,"94":1,"97":1}}],["datasets",{"2":{"12":1,"69":1}}],["database",{"0":{"69":1},"2":{"6":1,"7":1,"12":1,"14":1,"69":1,"91":1,"101":1,"104":2}}],["data",{"0":{"54":1,"64":1,"65":1,"66":1,"67":1},"2":{"0":1,"1":2,"2":1,"6":2,"12":4,"13":1,"14":1,"15":2,"20":1,"21":1,"27":1,"32":1,"33":1,"36":3,"38":1,"41":1,"52":2,"53":2,"54":11,"57":2,"58":1,"59":7,"61":4,"64":5,"65":1,"66":4,"67":4,"68":1,"69":1,"72":1,"74":3,"83":1,"88":2,"91":6,"93":4,"94":4,"96":2,"97":4,"99":2,"100":7,"101":7,"103":4,"109":2,"110":1,"113":3,"117":2,"118":1,"119":1,"120":1,"121":4,"122":23}}],["daemon",{"2":{"104":2}}],["dashboard",{"2":{"72":1}}],["dao`",{"2":{"74":2}}],["dao",{"2":{"1":1,"20":1,"29":1,"32":1,"33":2,"42":1,"44":1,"74":2,"120":1}}],["daos",{"0":{"44":1},"2":{"1":1}}],["decimals",{"2":{"122":1}}],["declarative",{"2":{"54":1,"57":1,"61":1,"65":2,"105":1,"111":1}}],["detailed",{"2":{"110":1,"114":1}}],["details",{"2":{"1":1,"2":1,"11":1,"12":1,"13":1,"14":1,"15":1,"23":1,"24":2,"34":1,"49":1,"56":1,"57":1,"61":1,"75":1,"87":1,"121":1,"122":3}}],["debug",{"2":{"86":2,"87":2,"88":2,"89":2,"104":2}}],["devs",{"2":{"122":2}}],["devices",{"2":{"77":1}}],["development",{"2":{"23":1,"24":2,"65":1,"84":2,"87":1,"89":1,"121":2,"122":3}}],["developer",{"2":{"4":1,"30":1,"122":1}}],["dense",{"2":{"68":1}}],["delegatechunk",{"2":{"122":1}}],["delegated",{"2":{"122":3}}],["delegate",{"2":{"122":38}}],["delegatee",{"2":{"122":2}}],["delegatestatement",{"2":{"122":3}}],["delegates",{"2":{"1":1}}],["delegators",{"2":{"122":2}}],["delegator",{"2":{"122":2}}],["delegations",{"2":{"122":2}}],["delegationsupport",{"2":{"121":1}}],["delegation",{"2":{"122":9}}],["delay",{"2":{"103":2}}],["deliver",{"2":{"61":1}}],["describes",{"2":{"122":1}}],["describing",{"2":{"122":8}}],["descriptionexcerpt",{"2":{"121":1}}],["descriptiontext",{"2":{"121":1}}],["description",{"2":{"22":1,"34":3,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"74":1,"121":5,"122":131}}],["designed",{"2":{"53":1,"64":1,"67":1,"74":1}}],["dependencies",{"2":{"84":2}}],["dependency",{"2":{"84":1}}],["depending",{"2":{"77":1}}],["deployeraddress",{"2":{"122":1}}],["deployer",{"2":{"122":2}}],["deployed",{"2":{"122":9}}],["deploying",{"0":{"72":1}}],["deploy",{"0":{"52":1},"2":{"74":1,"104":1}}],["deploymenttxhash",{"2":{"122":1}}],["deployment",{"2":{"28":1,"42":1,"122":2}}],["depth",{"0":{"53":1},"1":{"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1},"2":{"0":1,"6":1,"13":1,"120":1}}],["demo",{"0":{"12":1},"2":{"12":1}}],["demonstrates",{"2":{"0":1}}],["defeated",{"2":{"122":1}}],["defaults",{"2":{"103":1}}],["defaultpaginator",{"2":{"24":1,"36":1,"121":1,"122":1}}],["default",{"2":{"11":1,"71":1,"76":1,"86":1,"87":1,"103":15,"104":3,"110":1}}],["definition",{"0":{"106":1},"1":{"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1},"2":{"23":2,"24":1}}],["definitions",{"0":{"38":1,"111":1,"117":1},"1":{"112":1,"113":1,"114":1,"115":1,"116":1},"2":{"0":1,"35":1,"36":1,"105":1,"111":1,"115":1,"116":2,"121":3,"122":3}}],["defining",{"0":{"16":1,"20":1,"32":1},"1":{"21":1,"22":1,"23":1,"24":1,"25":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1},"2":{"0":1,"13":1,"33":1,"57":2}}],["defined",{"2":{"59":1,"105":1,"108":1,"112":1,"117":4,"118":1,"119":1}}],["defines",{"2":{"12":1,"22":1,"34":1,"35":1,"38":1,"91":1,"92":1,"94":1,"95":1,"97":1,"98":1,"109":1,"114":1,"115":1,"116":1,"117":1}}],["define",{"0":{"13":1,"51":1},"2":{"0":1,"13":2,"16":1,"37":1,"51":1,"56":1,"105":1}}],["edited",{"2":{"122":2}}],["edit",{"2":{"122":1}}],["editor",{"2":{"50":1}}],["eoa",{"2":{"122":1}}],["etc",{"2":{"122":1}}],["euclid",{"2":{"103":1}}],["errno",{"2":{"80":1,"104":2}}],["error",{"2":{"80":1,"90":4,"104":6}}],["errors",{"2":{"52":1}}],["establish",{"2":{"80":1,"104":2}}],["either",{"2":{"61":1,"74":1,"103":1,"104":2}}],["efficient",{"2":{"54":1,"64":1,"66":1,"69":1}}],["every",{"2":{"103":1}}],["everything",{"2":{"52":1}}],["even",{"2":{"80":1}}],["events",{"2":{"38":1,"121":1,"122":2}}],["elements",{"2":{"39":2,"110":2,"121":2,"122":2}}],["empty",{"2":{"21":1,"103":1,"109":1}}],["embedding",{"0":{"68":1},"2":{"54":1,"72":4,"74":6,"76":1,"81":2,"83":1,"87":1}}],["embeddings",{"0":{"69":1,"72":1,"79":1},"2":{"7":1,"14":1,"53":1,"54":2,"59":3,"60":2,"61":6,"68":1,"69":1,"72":8,"76":2,"80":5,"81":1,"91":1,"101":2,"103":7,"104":8}}],["embed",{"2":{"7":1,"72":2,"74":3,"76":1,"80":2,"81":1,"103":1,"104":2}}],["e",{"2":{"7":3,"10":1,"12":2,"52":1,"81":1,"84":1,"109":3,"117":1,"122":1}}],["enum",{"2":{"122":12}}],["enclosed",{"2":{"117":1}}],["encoding",{"2":{"103":2}}],["ensure",{"2":{"84":1}}],["ensuring",{"2":{"66":1}}],["enrich",{"2":{"74":2}}],["env",{"2":{"72":1,"90":2,"102":1,"103":1,"104":3}}],["environment",{"0":{"103":1},"2":{"7":1,"10":1,"102":1,"103":1}}],["enabling",{"2":{"64":1,"65":1}}],["enable",{"2":{"43":1,"86":1,"87":1,"88":1,"89":1,"104":1}}],["engines",{"2":{"87":1}}],["engine",{"2":{"61":2,"64":1,"68":1,"69":1}}],["end",{"2":{"54":1,"61":1,"104":1,"122":3}}],["endtimestamp",{"2":{"38":1,"121":1,"122":1}}],["endtime",{"2":{"38":1,"121":1,"122":1}}],["endpoint",{"0":{"25":1,"37":1},"2":{"37":1,"38":2,"49":1,"52":2,"54":2,"57":2,"58":1,"59":1,"61":1,"91":1,"101":2,"117":6,"118":4,"119":4}}],["endpoints",{"0":{"117":1},"2":{"0":1,"1":1,"2":2,"12":1,"25":2,"34":1,"37":2,"51":1,"52":1,"57":1,"91":1,"92":1,"94":1,"97":1,"98":1,"115":2,"117":3,"121":2,"122":1}}],["entity",{"2":{"122":1}}],["entire",{"2":{"15":1,"91":1}}],["enter",{"2":{"80":1,"104":3}}],["entrypoint",{"0":{"56":1},"2":{"21":1,"33":1,"56":1,"109":1,"121":1,"122":1}}],["easier",{"2":{"67":1,"77":1}}],["easily",{"2":{"6":1,"80":1}}],["easy",{"0":{"48":1},"1":{"49":1,"50":1,"51":1,"52":1},"2":{"53":1,"68":1}}],["each",{"2":{"0":1,"14":1,"52":1,"53":1,"54":1,"58":1,"61":1,"101":2,"104":2,"110":1,"114":1,"116":1,"117":2,"119":1,"120":1}}],["expanded",{"2":{"122":2}}],["exported",{"2":{"101":1}}],["exists",{"2":{"90":1,"104":1}}],["existing",{"2":{"49":1,"50":1}}],["exit",{"2":{"85":1,"86":1,"88":1,"91":1,"94":1,"97":1,"104":1}}],["exceeded",{"2":{"80":1,"104":2}}],["extended",{"2":{"122":1}}],["externalurl",{"2":{"38":1,"121":1}}],["extractions",{"2":{"66":1}}],["extraction",{"0":{"65":1},"2":{"54":1,"57":1,"83":1,"93":1}}],["extracting",{"2":{"0":1,"14":1,"16":1}}],["extractor",{"2":{"36":1,"113":2,"121":2,"122":2}}],["extracted",{"2":{"12":1,"39":1,"61":1,"66":1,"68":1,"101":2,"104":1}}],["extracts",{"2":{"12":1}}],["extract",{"2":{"1":1,"2":1,"12":2,"13":1,"20":1,"32":1,"53":1,"61":1,"91":1,"92":1,"93":1,"98":1,"117":1,"120":1}}],["executing",{"2":{"61":1,"90":1,"100":1}}],["executiondata",{"2":{"122":7}}],["execution",{"2":{"12":1,"27":1,"59":1,"62":1,"85":1,"86":1,"103":4,"104":1,"122":11}}],["executes",{"2":{"59":1,"91":1,"94":1,"97":1}}],["executedtransactionhash",{"2":{"122":1}}],["executedtime",{"2":{"122":1}}],["executed",{"2":{"12":1,"122":5}}],["execute",{"2":{"6":1,"10":1,"14":2,"27":1,"41":1,"56":1,"83":1,"85":1,"88":3,"94":1,"97":1,"104":1}}],["example",{"0":{"43":1},"2":{"0":1,"33":1,"37":1,"74":2,"75":1,"77":1,"104":1,"117":5,"118":1,"119":2,"120":1}}],["exampleschema",{"2":{"117":1,"118":1}}],["examples",{"0":{"0":1,"100":1},"1":{"1":1,"2":1,"3":1},"2":{"13":1,"34":2,"51":1,"121":2,"122":15}}],["flag",{"2":{"122":4}}],["flows",{"2":{"61":1}}],["flow",{"0":{"54":1}}],["fn",{"2":{"103":1}}],["f",{"2":{"81":1}}],["f16",{"2":{"72":1,"74":1,"80":1,"81":1}}],["framework",{"2":{"64":1,"105":1}}],["frameworks",{"0":{"63":1},"1":{"64":1,"65":1,"66":1,"67":1,"68":1,"69":1}}],["free",{"2":{"47":2,"52":1}}],["from",{"0":{"65":1,"94":1,"97":1},"1":{"95":1,"96":1,"98":1,"99":1},"2":{"0":2,"1":2,"2":1,"6":1,"7":1,"12":3,"13":1,"14":2,"15":2,"17":1,"23":1,"28":2,"29":1,"30":1,"32":1,"35":1,"38":1,"42":2,"50":2,"53":2,"54":1,"60":1,"61":1,"69":1,"72":1,"74":2,"78":1,"81":2,"83":1,"88":4,"91":1,"93":1,"94":3,"97":3,"100":4,"101":5,"104":2,"117":2,"120":1,"122":6}}],["farcaster",{"2":{"122":1}}],["fails",{"2":{"103":1}}],["failed",{"2":{"80":1,"104":2}}],["familiar",{"2":{"74":1}}],["facilitates",{"2":{"65":1}}],["face",{"2":{"41":1}}],["false",{"2":{"39":1,"110":1,"121":1,"122":1}}],["further",{"2":{"66":1,"67":1}}],["fulltime",{"2":{"122":1}}],["full",{"2":{"15":1,"52":1,"72":1,"91":1,"93":1,"100":1,"101":1,"120":1,"122":2}}],["functionname",{"2":{"122":1}}],["functionargs",{"2":{"122":1}}],["functionargsname",{"2":{"122":1}}],["functionality",{"2":{"2":1,"83":1}}],["functions",{"2":{"67":1,"74":1,"103":1,"122":2}}],["function",{"2":{"59":1,"103":1,"122":3}}],["funding",{"2":{"2":1,"122":3}}],["first",{"2":{"90":1}}],["fixeddelayretrystrategy",{"2":{"103":1}}],["fix",{"2":{"52":1}}],["final",{"2":{"104":1}}],["finally",{"2":{"104":1}}],["finishes",{"2":{"42":1}}],["find",{"0":{"46":1},"1":{"47":1},"2":{"1":1,"12":1,"20":1,"27":1,"41":1,"42":2,"75":1,"104":1,"120":2}}],["fields",{"2":{"38":2,"54":2,"57":2,"59":1,"117":2,"119":2}}],["field",{"2":{"21":1,"24":2,"33":1,"35":1,"36":3,"54":1,"109":2,"113":3,"117":1,"121":5,"122":5}}],["files",{"2":{"14":1,"101":2,"105":1,"120":1}}],["file",{"2":{"12":3,"15":8,"18":1,"23":1,"24":2,"30":1,"44":1,"50":1,"52":2,"57":2,"72":3,"74":3,"80":1,"90":2,"91":7,"92":3,"93":3,"94":4,"95":1,"96":2,"97":4,"98":1,"99":2,"100":2,"101":1,"104":2,"117":1,"121":2,"122":3}}],["foo",{"2":{"117":2,"118":1}}],["follow",{"2":{"28":1,"42":1,"71":1,"73":1,"117":1}}],["following",{"2":{"5":1,"6":1,"10":1,"11":1,"12":1,"16":1,"27":1,"41":1,"59":1,"61":1,"72":1,"74":1,"75":1,"84":1,"90":1,"101":1,"103":1,"106":1,"109":1,"111":1,"117":1}}],["folders",{"2":{"101":1}}],["folder",{"2":{"12":1,"27":1,"41":1,"42":1,"52":1,"101":2,"103":2,"104":1}}],["focuses",{"2":{"33":1}}],["focused",{"2":{"4":1}}],["focusing",{"2":{"2":1}}],["found",{"2":{"2":1,"42":1,"74":1,"90":1,"103":1}}],["forked",{"2":{"122":2}}],["fork",{"2":{"122":1}}],["forwards",{"2":{"61":1}}],["format",{"2":{"53":1,"54":1,"66":1,"81":1,"94":1,"96":1,"97":2,"99":1,"101":3,"105":2,"122":11}}],["formats",{"2":{"49":1,"67":1}}],["forget",{"2":{"42":1}}],["forum",{"2":{"32":1}}],["for",{"0":{"26":1,"40":1,"44":1,"73":1},"1":{"27":1,"28":1,"41":1,"42":1,"43":1,"44":1},"2":{"0":5,"1":1,"2":2,"5":1,"6":1,"11":3,"12":1,"13":3,"15":1,"16":2,"22":2,"34":4,"37":1,"38":1,"41":1,"43":2,"44":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":4,"56":1,"57":6,"58":1,"59":3,"61":2,"64":2,"65":1,"66":1,"67":4,"68":4,"69":1,"74":1,"75":2,"77":1,"83":1,"84":1,"85":1,"87":2,"89":1,"103":4,"104":4,"105":2,"107":1,"108":1,"109":1,"113":1,"114":2,"115":2,"116":1,"117":1,"119":1,"120":1,"121":2,"122":55}}],["features",{"2":{"65":1,"67":1,"69":1,"102":1}}],["feature",{"0":{"68":1},"2":{"59":1,"61":2,"68":1,"69":1}}],["feel",{"2":{"52":1}}],["fetch",{"2":{"1":1,"116":1}}],["few",{"2":{"0":1,"104":1,"121":1}}],["rust",{"2":{"64":1,"75":1}}],["running",{"0":{"72":1},"2":{"12":1,"27":1,"41":1,"52":1,"68":1,"72":1,"77":1,"83":1,"90":1,"101":1,"102":1,"104":11}}],["run",{"0":{"12":1,"88":1,"91":1,"94":1,"97":1},"1":{"92":1,"93":1,"95":1,"96":1,"98":1,"99":1},"2":{"11":1,"12":1,"14":2,"15":6,"18":1,"27":1,"30":1,"41":1,"52":2,"84":1,"85":1,"88":3,"90":1,"91":5,"93":2,"94":2,"97":2,"100":8,"101":2,"104":5}}],["rank",{"2":{"122":1}}],["ram",{"2":{"74":1}}],["raw",{"2":{"54":2,"59":1,"67":1,"122":1}}],["rapidapi",{"2":{"47":1}}],["raid",{"2":{"9":1,"84":1}}],["rag",{"0":{"4":1,"5":1,"6":1,"12":1,"20":1,"26":1,"27":1,"32":1,"40":1,"41":1,"51":1,"59":1,"64":1,"70":1,"82":1,"104":1,"106":1},"1":{"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"21":1,"22":1,"23":1,"24":1,"25":1,"27":1,"28":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"41":1,"42":1,"43":1,"44":1,"71":1,"72":1,"73":1,"74":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1},"2":{"0":2,"5":2,"6":2,"9":1,"10":2,"11":1,"12":1,"14":3,"15":3,"17":1,"18":1,"27":2,"29":1,"30":1,"41":2,"43":1,"45":1,"52":3,"53":1,"54":1,"61":3,"62":1,"68":1,"72":1,"74":4,"75":3,"76":2,"80":3,"83":1,"84":5,"85":4,"86":2,"88":6,"90":1,"91":4,"94":4,"97":4,"100":4,"101":1,"102":1,"104":26,"105":2,"120":1}}],["relative",{"2":{"122":4}}],["related",{"2":{"2":1,"5":1,"20":1,"32":1,"64":1,"103":1,"120":1}}],["relevant",{"2":{"74":2}}],["revenue",{"2":{"122":1}}],["reverse",{"2":{"74":1}}],["review",{"0":{"53":1},"1":{"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1},"2":{"0":1,"13":1}}],["repo",{"2":{"122":1}}],["repository",{"0":{"9":1},"2":{"0":1,"9":1,"10":1,"17":1,"29":1,"47":1,"52":1,"69":1,"84":1,"106":1}}],["replytopostnumber",{"2":{"121":1}}],["replycount",{"2":{"121":2}}],["representations",{"2":{"68":1}}],["redundant",{"2":{"66":1}}],["reduce",{"2":{"66":1}}],["reuse",{"2":{"53":1}}],["reason",{"2":{"122":3}}],["readerscount",{"2":{"121":1}}],["reading",{"2":{"104":1}}],["reads",{"2":{"61":1,"121":1}}],["read",{"2":{"60":1}}],["ready",{"2":{"14":1,"77":1,"104":1}}],["real",{"2":{"54":1,"64":1}}],["reach",{"2":{"52":1}}],["received",{"2":{"103":1}}],["receive",{"2":{"90":1}}],["receives",{"2":{"59":2}}],["recent",{"2":{"52":1}}],["recommend",{"2":{"59":1,"71":1,"72":1,"104":1}}],["recommended",{"0":{"74":1},"2":{"10":1,"28":1,"42":2}}],["recordselector",{"2":{"36":1,"113":2,"121":2,"122":2}}],["records",{"2":{"36":1,"54":2,"60":1,"109":1,"113":1,"115":1,"116":1,"122":3}}],["record",{"0":{"24":1,"36":1},"2":{"113":3,"115":1,"116":3,"117":1,"121":3,"122":3}}],["return",{"2":{"121":1}}],["returning",{"2":{"115":2}}],["returned",{"2":{"36":1,"38":1,"117":1,"122":4}}],["retry",{"2":{"103":2}}],["retries",{"2":{"80":1,"103":1,"104":2}}],["retrieve",{"2":{"122":2}}],["retriever",{"0":{"116":1},"2":{"116":4,"121":2,"122":2}}],["retrieves",{"2":{"23":1}}],["retrieving",{"2":{"74":1}}],["retrieval",{"2":{"6":1,"53":1,"54":1,"66":1,"74":1,"83":1,"122":1}}],["retrofunding",{"2":{"122":1}}],["retroactive",{"2":{"2":1,"122":1}}],["retropgf",{"2":{"2":2,"17":1,"20":1}}],["remaining",{"2":{"54":1}}],["remains",{"2":{"21":1}}],["remember",{"2":{"0":1,"73":1}}],["requests",{"2":{"33":1,"35":1,"103":3,"104":1,"108":1,"109":1,"114":1,"116":1,"122":1}}],["requestoption",{"2":{"24":2,"35":1,"36":1,"121":2,"122":2}}],["requester",{"0":{"114":1},"2":{"23":2,"35":2,"114":1,"116":1,"121":1,"122":1}}],["request",{"0":{"23":1,"35":1},"2":{"18":1,"21":1,"22":1,"24":3,"30":1,"33":1,"34":1,"35":1,"36":1,"49":1,"51":1,"104":1,"109":2,"121":5,"122":6}}],["requisites",{"0":{"18":1,"30":1}}],["requires",{"2":{"72":1,"111":1}}],["required",{"2":{"12":1,"21":1,"22":1,"34":2,"35":1,"51":1,"90":1,"94":1,"96":1,"97":1,"99":1,"104":2,"105":1,"108":1,"109":1,"112":1,"121":1,"122":2}}],["requirements",{"0":{"7":1},"2":{"103":1,"104":2}}],["refused",{"2":{"80":1,"104":2}}],["refers",{"2":{"74":1}}],["refer",{"2":{"74":1}}],["referenced",{"2":{"118":1,"119":1}}],["reference",{"0":{"82":1},"1":{"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1},"2":{"5":1,"11":1,"15":1,"38":2,"56":1,"57":1,"104":1}}],["refid",{"2":{"37":1,"38":1,"121":8}}],["refresh",{"2":{"15":1,"52":1,"91":1,"93":1,"100":1,"101":1}}],["re",{"2":{"6":1,"12":2,"13":2,"14":1,"16":1,"66":1,"73":2,"77":1,"104":1}}],["resolve",{"2":{"74":2}}],["resources",{"2":{"72":1,"77":1,"122":2}}],["resource",{"2":{"4":1}}],["results",{"2":{"38":1,"52":2,"101":1,"103":1,"121":1,"122":8}}],["resulting",{"2":{"6":1,"54":1,"61":1}}],["respond",{"2":{"74":1}}],["responsible",{"2":{"68":1}}],["response",{"2":{"21":1,"33":1,"36":2,"49":1,"109":1,"113":1,"117":1,"118":3,"121":3,"122":1}}],["responseschema",{"2":{"25":2,"37":1,"38":2,"117":4,"118":1,"119":1,"121":5,"122":2}}],["responses",{"2":{"6":1,"113":2}}],["respective",{"2":{"25":1,"37":1}}],["rest",{"0":{"65":1},"2":{"0":1,"6":2,"12":1,"13":1,"16":1,"18":1,"30":1,"103":1,"104":3,"105":2,"120":1}}],["twitter",{"2":{"122":5}}],["two",{"2":{"12":2,"75":1,"103":1,"105":1,"113":1,"120":1}}],["t",{"2":{"74":2,"104":1}}],["track",{"2":{"122":1}}],["transactionhash",{"2":{"122":1}}],["transactions",{"2":{"122":1}}],["transaction",{"2":{"122":19}}],["translating",{"2":{"113":1}}],["transforms",{"2":{"59":1}}],["transforming",{"2":{"54":1}}],["transformation",{"2":{"54":1}}],["training",{"2":{"74":1}}],["try",{"2":{"74":1,"80":1,"104":3}}],["true",{"2":{"22":2,"34":2,"39":2,"110":2,"121":4,"122":4}}],["txhash",{"2":{"38":1,"121":1}}],["title",{"2":{"22":1,"34":1,"38":3,"39":1,"110":1,"118":3,"119":1,"121":6,"122":8}}],["times",{"2":{"104":1,"122":1}}],["timestamp",{"2":{"38":2,"121":2,"122":19}}],["timeout",{"2":{"103":2}}],["time",{"2":{"13":1,"37":1,"42":1,"54":1,"64":1,"103":1,"122":17}}],["types",{"2":{"75":1}}],["type",{"2":{"21":1,"22":3,"23":2,"24":4,"33":1,"34":5,"35":3,"36":5,"38":41,"109":2,"113":4,"116":2,"118":4,"119":2,"121":164,"122":257}}],["tags",{"2":{"121":1}}],["table",{"2":{"59":1}}],["tables",{"2":{"58":1}}],["tar",{"2":{"28":1,"42":2,"74":2,"101":1}}],["targets",{"2":{"122":3}}],["targeting",{"2":{"13":1,"16":1}}],["target",{"2":{"0":1,"25":1,"37":1,"42":1,"51":1,"57":1,"104":1,"105":1}}],["task",{"2":{"14":1,"104":1}}],["tasks",{"2":{"14":1,"67":1,"69":1,"85":1,"88":1}}],["take",{"2":{"13":1}}],["team",{"2":{"122":1}}],["ten",{"2":{"122":2}}],["term",{"2":{"74":1}}],["terms",{"2":{"74":1}}],["template",{"2":{"72":1,"74":1,"106":1,"113":1,"116":1,"122":5}}],["tested",{"2":{"74":1}}],["test",{"0":{"52":1},"2":{"52":1}}],["textcolor",{"2":{"121":1}}],["texts",{"2":{"38":1}}],["textschemas",{"0":{"119":1},"2":{"25":2,"37":1,"38":1,"117":2,"119":1,"121":6,"122":3}}],["textschema",{"2":{"25":2,"37":1,"38":1,"117":3,"119":2,"121":5,"122":2}}],["text",{"2":{"7":1,"38":1,"39":2,"54":1,"57":2,"59":1,"72":2,"74":3,"76":2,"80":2,"81":1,"91":1,"93":1,"103":1,"104":2,"110":1,"117":1,"119":1,"121":1,"122":2}}],["technology",{"2":{"64":1}}],["technologies",{"2":{"62":1,"66":1,"68":1}}],["techniques",{"2":{"53":1}}],["tech",{"0":{"62":1},"1":{"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1},"2":{"4":1,"6":1}}],["top",{"2":{"122":6}}],["topissues",{"2":{"122":2}}],["topicid",{"2":{"121":1}}],["topicsalltime",{"2":{"121":1}}],["topicsyear",{"2":{"121":1}}],["topicsmonth",{"2":{"121":1}}],["topicsweek",{"2":{"121":1}}],["topicurl",{"2":{"121":1}}],["topiccount",{"2":{"121":1}}],["too",{"2":{"103":1}}],["tools",{"0":{"63":1},"1":{"64":1,"65":1,"66":1,"67":1,"68":1,"69":1},"2":{"62":1,"64":1,"105":1}}],["tool",{"2":{"5":1,"6":2,"61":1,"83":1,"101":1}}],["together",{"2":{"54":2,"101":1}}],["totalsupply",{"2":{"121":1,"122":1}}],["totalproposals",{"2":{"121":1}}],["total",{"2":{"38":2,"121":2,"122":14}}],["totalvotes",{"2":{"38":1,"121":2}}],["tokens",{"2":{"121":1,"122":3}}],["token",{"2":{"23":2,"24":1,"35":2,"36":1,"121":2,"122":8}}],["todo",{"2":{"19":1,"31":1}}],["to",{"0":{"26":1,"40":1,"46":1},"1":{"27":1,"28":1,"41":1,"42":1,"43":1,"44":1,"47":1},"2":{"0":4,"1":2,"2":4,"3":1,"4":2,"5":3,"6":3,"7":1,"9":1,"10":3,"11":1,"12":5,"13":3,"14":3,"16":1,"17":1,"18":3,"20":1,"22":1,"24":1,"27":1,"29":1,"30":3,"32":1,"33":1,"34":1,"35":1,"37":1,"39":2,"41":1,"42":4,"43":2,"44":2,"45":2,"50":1,"52":4,"53":1,"54":5,"56":1,"57":1,"58":2,"59":3,"60":3,"61":8,"64":1,"66":1,"67":2,"68":3,"71":1,"72":3,"73":2,"74":11,"75":2,"76":1,"77":4,"80":4,"81":2,"83":2,"84":1,"85":1,"86":1,"91":2,"92":1,"93":1,"94":1,"97":1,"98":1,"100":2,"103":8,"104":24,"105":3,"109":2,"110":2,"114":1,"116":1,"117":3,"120":1,"122":22}}],["three",{"2":{"104":1}}],["threshold",{"2":{"74":1,"122":3}}],["throughout",{"2":{"108":1}}],["through",{"2":{"18":1,"47":1,"53":1,"61":2,"101":1,"103":1,"116":1,"122":2}}],["than",{"2":{"72":1,"76":1}}],["that",{"2":{"0":1,"1":1,"6":1,"12":2,"38":2,"53":2,"56":1,"61":1,"68":1,"74":1,"75":1,"76":1,"77":2,"90":1,"91":1,"92":1,"94":1,"95":1,"97":1,"98":1,"101":3,"102":1,"104":5,"109":1,"117":1,"119":1,"120":1,"121":1,"122":3}}],["thus",{"2":{"72":1}}],["thoroughly",{"2":{"52":1}}],["thousands",{"2":{"47":1}}],["third",{"2":{"64":1}}],["things",{"2":{"5":1}}],["this",{"0":{"9":1},"2":{"1":1,"2":1,"6":1,"9":1,"10":1,"17":2,"18":1,"20":1,"21":1,"22":1,"29":1,"30":1,"32":1,"33":2,"38":1,"39":1,"50":1,"52":1,"53":1,"58":1,"62":1,"72":1,"73":1,"74":3,"81":1,"84":1,"85":1,"86":1,"88":1,"91":1,"93":1,"94":1,"97":1,"101":2,"104":5,"114":1,"119":1,"122":10}}],["they",{"2":{"122":1}}],["these",{"2":{"103":1,"108":1,"119":1}}],["them",{"2":{"75":1}}],["there",{"2":{"32":1,"102":1,"121":1,"122":2}}],["their",{"2":{"25":1,"37":1,"105":2,"108":1,"122":1}}],["then",{"2":{"6":1,"10":1,"22":1,"34":1,"35":1,"53":1,"54":2,"101":1}}],["the",{"0":{"10":1,"11":1,"14":1,"16":1,"19":1,"20":1,"26":2,"28":1,"31":1,"32":1,"40":1,"42":1,"51":1,"80":1,"102":1},"1":{"15":1,"21":1,"22":1,"23":1,"24":1,"25":1,"27":2,"28":2,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"41":1,"42":1,"43":1,"44":1,"103":1},"2":{"0":3,"1":4,"2":6,"3":1,"4":5,"5":3,"6":7,"7":1,"10":3,"11":5,"12":13,"13":9,"14":4,"15":3,"16":1,"17":2,"18":6,"20":2,"22":3,"23":5,"24":5,"25":1,"27":5,"28":5,"29":4,"30":5,"32":1,"33":4,"34":3,"35":5,"36":2,"37":2,"38":7,"39":2,"41":5,"42":10,"43":3,"44":2,"50":1,"51":1,"52":8,"53":3,"54":9,"56":2,"57":8,"58":2,"59":5,"60":3,"61":22,"62":2,"65":1,"66":1,"67":1,"68":1,"71":2,"72":8,"73":3,"74":20,"75":4,"76":4,"77":4,"78":1,"80":5,"81":6,"83":2,"84":4,"85":2,"86":1,"87":1,"88":3,"90":5,"91":6,"92":1,"93":7,"94":3,"95":1,"97":3,"98":1,"100":4,"101":9,"102":2,"103":14,"104":44,"105":5,"106":3,"107":1,"108":3,"109":1,"110":3,"111":1,"112":1,"113":2,"114":3,"115":2,"116":3,"117":15,"118":2,"119":3,"120":2,"121":3,"122":203}}],["average",{"2":{"122":1}}],["avatar",{"2":{"122":1}}],["available",{"0":{"15":1},"2":{"13":1,"14":1,"15":1,"41":1,"56":1,"77":1,"84":1,"103":1,"104":2,"105":1,"106":1,"110":1,"114":1,"122":2}}],["age",{"2":{"122":1}}],["against",{"2":{"122":10}}],["again",{"2":{"80":1,"104":3}}],["agora",{"0":{"2":1,"17":1,"19":1,"122":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1},"2":{"2":2,"18":1,"21":1,"22":3,"27":3,"28":2,"122":7}}],["amount",{"2":{"122":13}}],["among",{"2":{"12":1}}],["amp",{"0":{"63":1},"1":{"64":1,"65":1,"66":1,"67":1,"68":1,"69":1},"2":{"54":2}}],["abstention",{"2":{"122":1}}],["abstentions",{"2":{"122":3}}],["abstain",{"2":{"122":4}}],["abstained",{"2":{"122":2}}],["absolute",{"2":{"80":1}}],["able",{"2":{"43":1}}],["above",{"2":{"28":1,"38":1,"42":2,"61":1}}],["aboutschema",{"2":{"117":1}}],["about",{"2":{"1":1,"6":1,"14":1,"43":2,"81":1,"110":1,"117":3,"122":8}}],["aave",{"0":{"40":1},"1":{"41":1,"42":1,"43":1,"44":1},"2":{"32":2,"33":4,"34":2,"41":2,"42":5,"43":1,"121":2}}],["after",{"2":{"27":1,"39":1,"66":1,"73":1,"100":1,"110":1,"117":1,"121":1,"122":1}}],["associated",{"2":{"122":13}}],["associatedaddresses",{"2":{"121":1}}],["associatedprotocols",{"2":{"121":1}}],["assistant",{"2":{"74":1}}],["assistance",{"2":{"52":1}}],["async",{"2":{"103":3}}],["asking",{"2":{"43":3}}],["as",{"2":{"24":1,"34":1,"38":2,"42":1,"43":1,"59":1,"61":3,"69":1,"77":1,"103":2,"104":2,"117":2,"119":1,"121":2,"122":2}}],["ai",{"2":{"52":1,"61":1,"64":2,"74":1}}],["airbyteapiconnector",{"2":{"58":1}}],["airbyte",{"0":{"111":1},"1":{"112":1,"113":1,"114":1,"115":1,"116":1},"2":{"22":2,"23":1,"24":2,"34":2,"54":2,"57":2,"61":2,"65":3,"66":1,"93":1,"101":1,"105":1,"111":1,"113":1,"114":1,"115":1,"121":4,"122":5}}],["aim",{"2":{"4":1}}],["advantages",{"2":{"77":1}}],["advanced",{"2":{"5":1,"102":1,"122":10}}],["ada",{"2":{"76":1}}],["adapter",{"2":{"38":1,"121":3}}],["additional",{"2":{"122":1}}],["additionalproperties",{"2":{"22":1,"34":1,"121":1,"122":1}}],["address",{"2":{"74":2,"122":32}}],["addr",{"2":{"72":1}}],["adjusted",{"2":{"103":1}}],["adjust",{"2":{"52":1,"110":1}}],["approvalthreshold",{"2":{"122":2}}],["approvals",{"2":{"122":1}}],["approvalproposaldata",{"2":{"122":2}}],["approvalproposalresults",{"2":{"122":2}}],["approval",{"2":{"122":9}}],["approach",{"2":{"36":1}}],["applies",{"2":{"110":1}}],["applications",{"2":{"61":1,"75":1}}],["application",{"2":{"21":1,"33":1,"109":1,"121":1,"122":1}}],["apply",{"2":{"59":1}}],["applying",{"2":{"39":1,"117":1}}],["apikeyauthenticator",{"2":{"35":2,"114":1,"121":1}}],["apis",{"0":{"3":1,"46":1},"1":{"47":1},"2":{"0":1,"45":1,"47":3,"75":1,"76":1,"105":1,"120":1}}],["api",{"0":{"0":1,"1":1,"2":1,"4":1,"5":1,"6":1,"12":1,"13":1,"16":1,"17":1,"19":1,"20":1,"23":1,"29":1,"31":1,"32":1,"35":1,"45":1,"47":1,"51":1,"57":1,"65":1,"70":1,"82":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"117":1,"120":1,"121":1,"122":1},"1":{"1":1,"2":1,"3":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"18":1,"19":1,"20":1,"21":2,"22":2,"23":2,"24":2,"25":2,"26":1,"27":1,"28":1,"30":1,"31":1,"32":1,"33":2,"34":2,"35":2,"36":2,"37":2,"38":2,"39":2,"40":1,"41":1,"42":1,"43":1,"44":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"71":1,"72":1,"73":1,"74":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"106":1,"107":2,"108":2,"109":2,"110":2,"111":2,"112":2,"113":2,"114":2,"115":2,"116":2,"117":2,"118":2,"119":2,"121":1,"122":1},"2":{"0":5,"1":4,"2":4,"3":2,"5":2,"6":3,"9":1,"10":2,"11":1,"12":8,"13":5,"14":4,"15":6,"16":2,"17":1,"18":6,"20":1,"21":5,"22":6,"23":5,"24":1,"27":4,"28":2,"29":3,"30":6,"33":5,"34":7,"35":5,"36":1,"38":1,"41":4,"42":4,"44":3,"50":1,"51":2,"52":4,"53":2,"54":6,"57":12,"58":2,"61":5,"62":1,"65":1,"66":1,"68":2,"72":3,"74":2,"75":2,"76":6,"80":7,"83":1,"84":5,"85":4,"86":2,"88":6,"90":1,"91":11,"92":2,"93":4,"94":7,"95":1,"97":7,"98":2,"100":8,"101":14,"102":1,"103":7,"104":45,"105":5,"106":1,"107":1,"108":1,"109":2,"112":1,"113":1,"114":2,"115":1,"116":2,"117":3,"120":2,"121":13,"122":11}}],["accurate",{"2":{"74":1}}],["according",{"2":{"72":1,"74":1}}],["accessible",{"2":{"108":1}}],["access",{"2":{"18":1}}],["active",{"2":{"122":4}}],["activeonwebsite",{"2":{"121":1}}],["activate",{"2":{"10":1}}],["acts",{"2":{"69":1}}],["across",{"2":{"1":1,"62":1}}],["author",{"2":{"122":3}}],["authorid",{"2":{"121":1}}],["authoravatar",{"2":{"121":1}}],["authorusername",{"2":{"121":1}}],["authorname",{"2":{"121":1}}],["auth",{"2":{"91":1,"93":1}}],["authenticated",{"2":{"103":1,"104":1}}],["authenticator",{"2":{"23":1,"35":1,"114":1,"121":1,"122":1}}],["authentication",{"2":{"0":1,"22":1,"23":1,"114":1,"122":1}}],["autocommit",{"2":{"103":2}}],["auto",{"2":{"72":2}}],["automatically",{"2":{"61":1,"103":1,"104":1,"115":1}}],["augmented",{"2":{"6":1,"53":1,"74":1,"83":1}}],["alphanumeric",{"2":{"107":1}}],["also",{"2":{"38":1,"41":1,"102":1,"112":1}}],["always",{"2":{"36":1}}],["alias",{"2":{"34":1,"72":1,"121":1}}],["allof",{"2":{"122":2}}],["allowance",{"2":{"122":2}}],["allowing",{"2":{"54":1}}],["allows",{"2":{"6":1,"104":1}}],["alligator",{"2":{"122":1}}],["all",{"0":{"91":1},"1":{"92":1,"93":1},"2":{"5":1,"12":1,"15":1,"27":1,"33":1,"38":1,"39":1,"41":1,"52":1,"84":1,"88":1,"91":2,"100":2,"101":1,"104":1,"110":1,"112":1,"117":1,"121":1,"122":1}}],["already",{"2":{"0":1,"15":2,"29":1,"80":1,"90":1,"94":1,"97":1,"104":4}}],["around",{"2":{"122":1}}],["archived",{"2":{"121":1}}],["architecture",{"0":{"4":1,"61":1},"2":{"4":1,"53":1,"61":1}}],["args",{"2":{"85":1,"88":1}}],["argument",{"2":{"18":1,"30":1,"101":1}}],["arguments",{"0":{"92":1,"95":1,"98":1},"2":{"12":1,"56":1}}],["array",{"2":{"38":4,"121":11,"122":24}}],["are",{"2":{"3":1,"4":1,"12":1,"21":1,"24":1,"25":1,"36":1,"38":1,"54":4,"61":1,"74":4,"77":1,"90":1,"101":5,"102":2,"103":2,"104":1,"105":1,"108":1,"110":1,"114":1,"120":1,"121":1,"122":4}}],["another",{"2":{"122":1}}],["answer",{"2":{"74":6}}],["answers",{"2":{"54":1,"74":3}}],["analysis",{"2":{"67":1}}],["analyze",{"2":{"52":1}}],["an",{"0":{"79":1},"2":{"7":1,"13":2,"14":1,"15":2,"18":1,"20":1,"22":1,"24":1,"30":1,"35":1,"37":1,"50":1,"51":1,"52":1,"53":1,"54":2,"57":1,"61":5,"68":1,"72":1,"74":2,"94":1,"97":1,"103":1,"104":1,"105":1,"107":1,"109":1,"111":1,"113":1,"117":1,"122":21}}],["any",{"2":{"3":1,"6":1,"16":1,"29":1,"32":1,"52":1,"73":1,"76":1,"90":1,"101":1}}],["and",{"0":{"24":1,"36":1,"52":1,"67":1,"73":1},"2":{"1":2,"2":2,"4":1,"5":2,"6":3,"10":1,"12":1,"13":1,"14":2,"17":2,"20":1,"22":1,"23":1,"24":1,"27":1,"29":1,"32":2,"33":1,"34":1,"35":1,"38":1,"41":1,"42":1,"43":1,"44":1,"47":1,"51":1,"52":3,"53":3,"54":2,"56":1,"57":2,"58":1,"59":5,"60":3,"61":5,"62":1,"64":2,"66":3,"67":2,"68":1,"69":2,"72":1,"73":2,"74":7,"75":2,"77":2,"78":1,"80":1,"84":1,"85":1,"86":1,"88":1,"90":2,"91":4,"92":1,"93":2,"94":2,"97":2,"98":1,"100":2,"101":5,"103":2,"104":4,"112":2,"114":2,"115":1,"116":1,"118":1,"119":1,"122":19}}],["attempt",{"2":{"103":1,"104":1}}],["attempts",{"2":{"103":1}}],["attached",{"2":{"60":1}}],["at",{"2":{"1":1,"2":1,"13":1,"23":1,"24":2,"66":1,"72":1,"80":1,"87":1,"89":1,"104":3,"122":15}}],["a",{"0":{"12":1,"26":1,"28":1,"40":1,"42":1,"73":1,"81":1},"1":{"27":1,"28":1,"41":1,"42":1,"43":1,"44":1},"2":{"0":5,"1":1,"2":2,"4":1,"5":2,"6":4,"7":2,"12":2,"13":1,"14":1,"16":1,"17":2,"18":1,"23":1,"29":2,"30":1,"34":4,"36":1,"38":1,"41":1,"42":2,"44":2,"45":1,"47":1,"52":1,"53":2,"54":6,"57":2,"59":3,"60":3,"61":4,"64":1,"68":4,"69":2,"73":1,"74":5,"75":2,"76":2,"77":1,"80":2,"83":1,"101":1,"103":2,"104":20,"105":3,"106":1,"108":1,"110":1,"112":1,"113":1,"115":1,"116":1,"117":2,"120":1,"121":6,"122":58}}]],"serializationVersion":2} +{"documentCount":123,"nextId":123,"documentIds":{"0":"docs/pages/apis.mdx#api-examples","1":"docs/pages/apis.mdx#boardroom-governance-api","2":"docs/pages/apis.mdx#optimism-agora-api","3":"docs/pages/apis.mdx#working-with-other-apis","4":"docs/pages/architecture.mdx#rag-api-pipeline-architecture","5":"docs/pages/cli.mdx#rag-api-pipeline","6":"docs/pages/getting-started.mdx#gaia-rag-api-pipeline","7":"docs/pages/getting-started.mdx#system-requirements","8":"docs/pages/getting-started.mdx#setup-instructions","9":"docs/pages/getting-started.mdx#clone-this-repository","10":"docs/pages/getting-started.mdx#install-the-pipeline-cli","11":"docs/pages/getting-started.mdx#setup-the-pipeline-configuration","12":"docs/pages/getting-started.mdx#run-a-demo-rag-api-pipeline","13":"docs/pages/getting-started.mdx#define-your-own-api-pipeline-manifest","14":"docs/pages/getting-started.mdx#using-the-pipeline-cli","15":"docs/pages/getting-started.mdx#available-sub-commands","16":"docs/pages/manifest-definition.mdx#defining-the-api-pipeline-manifest","17":"docs/pages/apis/agora-api.mdx#optimism-agora-api","18":"docs/pages/apis/agora-api.mdx#pre-requisites","19":"docs/pages/apis/agora-api.mdx#getting-the-agora-api-openapi-spec","20":"docs/pages/apis/agora-api.mdx#defining-the-rag-api-pipeline-manifest","21":"docs/pages/apis/agora-api.mdx#basic-configuration","22":"docs/pages/apis/agora-api.mdx#connector-specification","23":"docs/pages/apis/agora-api.mdx#api-request-configuration","24":"docs/pages/apis/agora-api.mdx#record-selection-and-pagination","25":"docs/pages/apis/agora-api.mdx#endpoint-configuration","26":"docs/pages/apis/agora-api.mdx#using-the-rag-pipeline-to-generate-a-knowledge-base-for-the-op-collective","27":"docs/pages/apis/agora-api.mdx#rag-pipeline-cli","28":"docs/pages/apis/agora-api.mdx#import-the-kb-snapshot-into-a-gaia-node","29":"docs/pages/apis/boardroom-api.mdx#boardroom-governance-api","30":"docs/pages/apis/boardroom-api.mdx#pre-requisites","31":"docs/pages/apis/boardroom-api.mdx#getting-the-boardroom-api-openapi-spec","32":"docs/pages/apis/boardroom-api.mdx#defining-the-rag-api-pipeline-manifest","33":"docs/pages/apis/boardroom-api.mdx#basic-configuration","34":"docs/pages/apis/boardroom-api.mdx#connector-specification","35":"docs/pages/apis/boardroom-api.mdx#api-request-configuration","36":"docs/pages/apis/boardroom-api.mdx#record-selection-and-pagination","37":"docs/pages/apis/boardroom-api.mdx#endpoint-configuration","38":"docs/pages/apis/boardroom-api.mdx#schema-definitions","39":"docs/pages/apis/boardroom-api.mdx#chunking-parameters","40":"docs/pages/apis/boardroom-api.mdx#using-the-rag-pipeline-to-generate-a-knowledge-base-for-aave","41":"docs/pages/apis/boardroom-api.mdx#rag-pipeline-cli","42":"docs/pages/apis/boardroom-api.mdx#import-the-kb-snapshot-into-a-gaia-node","43":"docs/pages/apis/boardroom-api.mdx#example-user-prompts","44":"docs/pages/apis/boardroom-api.mdx#customizing-for-other-daos","45":"docs/pages/apis/other-api-sources.mdx#working-with-other-api-sources-","46":"docs/pages/apis/other-api-sources.mdx#where-to-find-great-apis","47":"docs/pages/apis/other-api-sources.mdx#public-api-collections","48":"docs/pages/apis/other-api-sources.mdx#integration-guide-its-easy","49":"docs/pages/apis/other-api-sources.mdx#1-gather-documentation","50":"docs/pages/apis/other-api-sources.mdx#2-schema-setup","51":"docs/pages/apis/other-api-sources.mdx#3-define-the-rag-api-pipeline-manifest","52":"docs/pages/apis/other-api-sources.mdx#4-test-and-deploy","53":"docs/pages/architecture/code-review.mdx#in-depth-source-code-review","54":"docs/pages/architecture/code-review.mdx#data-flow-overview","55":"docs/pages/architecture/code-review.mdx#pipeline-components","56":"docs/pages/architecture/code-review.mdx#cli-entrypoint-source","57":"docs/pages/architecture/code-review.mdx#api-loader-source","58":"docs/pages/architecture/code-review.mdx#input-module-source","59":"docs/pages/architecture/code-review.mdx#rag-pipeline-source","60":"docs/pages/architecture/code-review.mdx#output-module-source","61":"docs/pages/architecture/overview.mdx#architecture-overview","62":"docs/pages/architecture/tech-stack.mdx#tech-stack","63":"docs/pages/architecture/tech-stack.mdx#tools--frameworks","64":"docs/pages/architecture/tech-stack.mdx#1-rag-pipeline-over-data-stream-pathway-docs","65":"docs/pages/architecture/tech-stack.mdx#getting-started","66":"docs/pages/architecture/tech-stack.mdx#DuckDBCache","67":"docs/pages/architecture/tech-stack.mdx#4-data-partitioning-and-chunking-unstructured-open-source-docs","68":"docs/pages/architecture/tech-stack.mdx#5-feature-embedding-generation","69":"docs/pages/architecture/tech-stack.mdx#6-vector-embeddings-database-snapshot-qdrantdb-docs","70":"docs/pages/cli/node-deployment.mdx#rag-api-pipeline-x-gaia-node","71":"docs/pages/cli/node-deployment.mdx#quick-start-guide","72":"docs/pages/cli/node-deployment.mdx#deploying-your-gaia-node-in-embeddings-running-mode-️recommended","73":"docs/pages/cli/node-deployment.mdx#selecting-a-knowledge-base-and-custom-prompts-for-your-gaia-node","74":"docs/pages/cli/node-deployment.mdx#recommended-gaia-node-configuration","75":"docs/pages/cli/other-llm-providers.mdx#supported-llm-providers","76":"docs/pages/cli/other-llm-providers.mdx#openai","77":"docs/pages/cli/other-llm-providers.mdx#ollama","78":"docs/pages/cli/other-llm-providers.mdx#getting-ollama","79":"docs/pages/cli/other-llm-providers.mdx#importing-an-embeddings-model-in-ollama","80":"docs/pages/cli/other-llm-providers.mdx#using-the-cli-setup-wizard","81":"docs/pages/cli/other-llm-providers.mdx#manually-importing-a-model","82":"docs/pages/cli/reference.mdx#rag-api-pipeline-cli-reference-documentation","83":"docs/pages/cli/reference.mdx#overview","84":"docs/pages/cli/reference.mdx#installation","85":"docs/pages/cli/reference.mdx#usage","86":"docs/pages/cli/reference.mdx#setup","87":"docs/pages/cli/reference.mdx#options","88":"docs/pages/cli/reference.mdx#run","89":"docs/pages/cli/reference.mdx#global-options","90":"docs/pages/cli/reference.mdx#pipeline-commands","91":"docs/pages/cli/reference.mdx#run-all","92":"docs/pages/cli/reference.mdx#arguments","93":"docs/pages/cli/reference.mdx#options-1","94":"docs/pages/cli/reference.mdx#run-from-normalized","95":"docs/pages/cli/reference.mdx#arguments-1","96":"docs/pages/cli/reference.mdx#options-2","97":"docs/pages/cli/reference.mdx#run-from-chunked","98":"docs/pages/cli/reference.mdx#arguments-2","99":"docs/pages/cli/reference.mdx#options-3","100":"docs/pages/cli/reference.mdx#examples","101":"docs/pages/cli/reference.mdx#cli-outputs","102":"docs/pages/cli/settings.mdx#customizing-the-pipeline-config-settings","103":"docs/pages/cli/settings.mdx#environment-variables","104":"docs/pages/cli/setup.mdx#rag-api-pipeline---setup","105":"docs/pages/manifest-definition/overview.mdx#api-pipeline-manifest---overview","106":"docs/pages/manifest-definition/overview.mdx#rag-api-pipeline-manifest---schema-definition","107":"docs/pages/manifest-definition/overview.mdx#api_name","108":"docs/pages/manifest-definition/overview.mdx#api_parameters","109":"docs/pages/manifest-definition/overview.mdx#api_config","110":"docs/pages/manifest-definition/overview.mdx#chunking_params","111":"docs/pages/manifest-definition/overview.mdx#airbyte-connector-definitions","112":"docs/pages/manifest-definition/overview.mdx#spec","113":"docs/pages/manifest-definition/overview.mdx#selector","114":"docs/pages/manifest-definition/overview.mdx#requester_base","115":"docs/pages/manifest-definition/overview.mdx#paginator","116":"docs/pages/manifest-definition/overview.mdx#retriever_base","117":"docs/pages/manifest-definition/overview.mdx#api-endpoints-definitions","118":"docs/pages/manifest-definition/overview.mdx#schemas","119":"docs/pages/manifest-definition/overview.mdx#textschemas","120":"docs/pages/manifest-definition/sample-manifests.mdx#sample-api-pipeline-manifests","121":"docs/pages/manifest-definition/sample-manifests.mdx#boardroom-governance-api","122":"docs/pages/manifest-definition/sample-manifests.mdx#optimism-agora-api"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[2,1,57],"1":[3,2,52],"2":[3,2,52],"3":[4,2,19],"4":[4,1,30],"5":[3,1,42],"6":[4,1,85],"7":[2,4,48],"8":[2,4,1],"9":[3,6,20],"10":[4,6,33],"11":[4,6,35],"12":[6,4,81],"13":[6,4,51],"14":[4,4,53],"15":[3,7,41],"16":[5,1,26],"17":[3,1,26],"18":[2,3,49],"19":[6,3,2],"20":[6,3,26],"21":[2,8,27],"22":[2,8,60],"23":[3,8,47],"24":[4,8,54],"25":[2,8,22],"26":[12,3,1],"27":[3,15,39],"28":[8,15,52],"29":[3,1,29],"30":[2,3,49],"31":[6,3,2],"32":[6,3,30],"33":[2,8,50],"34":[2,8,78],"35":[3,8,49],"36":[4,8,52],"37":[2,8,35],"38":[2,8,96],"39":[2,8,41],"40":[11,3,1],"41":[3,14,47],"42":[8,14,52],"43":[3,14,26],"44":[4,14,26],"45":[6,1,23],"46":[5,6,1],"47":[3,11,16],"48":[7,6,1],"49":[3,13,15],"50":[3,13,33],"51":[7,13,23],"52":[4,13,91],"53":[5,1,62],"54":[3,5,114],"55":[2,5,1],"56":[3,7,24],"57":[3,7,70],"58":[3,7,31],"59":[3,7,75],"60":[3,7,35],"61":[2,1,135],"62":[2,1,17],"63":[3,2,1],"64":[8,5,42],"65":[9,5,31],"66":[5,5,48],"67":[9,5,42],"68":[5,5,61],"69":[7,5,40],"70":[6,1,1],"71":[3,6,25],"72":[10,6,95],"73":[11,6,38],"74":[4,6,202],"75":[3,1,51],"76":[1,3,77],"77":[1,3,51],"78":[2,4,9],"79":[6,4,1],"80":[5,4,108],"81":[4,4,45],"82":[6,1,1],"83":[1,6,30],"84":[1,6,56],"85":[1,6,37],"86":[1,7,34],"87":[1,7,27],"88":[1,7,36],"89":[2,7,10],"90":[2,6,55],"91":[2,7,71],"92":[1,9,21],"93":[1,9,49],"94":[3,7,46],"95":[1,10,12],"96":[1,10,10],"97":[3,7,46],"98":[1,10,16],"99":[1,10,10],"100":[1,6,32],"101":[2,6,104],"102":[5,1,31],"103":[2,5,200],"104":[4,1,299],"105":[4,1,76],"106":[6,4,18],"107":[2,7,8],"108":[2,7,31],"109":[2,7,40],"110":[2,7,53],"111":[3,7,10],"112":[1,10,25],"113":[1,10,39],"114":[2,10,40],"115":[1,10,31],"116":[2,10,41],"117":[3,7,95],"118":[1,7,50],"119":[1,7,46],"120":[4,1,37],"121":[3,4,265],"122":[3,4,609]},"averageFieldLength":[3.528455284552845,6.008130081300813,51.024390243902424],"storedFields":{"0":{"href":"/apis#api-examples","html":"\n

The repository already includes a few API pipeline manifest definitions that showcase how to use the rag-api-pipeline for generating knowledge bases from REST APIs.\nEach example demonstrates how to define a YAML manifest for extracting data from target API endpoints using different Authentication/Pagination strategies.\nFor a more in-depth review of how to build a manifest for creating a RAG pipeline for your own API, remember to visit Defining the API Pipeline Manifest section.

\n","isPage":true,"text":"\nThe repository already includes a few API pipeline manifest definitions that showcase how to use the rag-api-pipeline for generating knowledge bases from REST APIs.\nEach example demonstrates how to define a YAML manifest for extracting data from target API endpoints using different Authentication/Pagination strategies.\nFor a more in-depth review of how to build a manifest for creating a RAG pipeline for your own API, remember to visit Defining the API Pipeline Manifest section.\n","title":"API Examples","titles":[]},"1":{"href":"/apis#boardroom-governance-api","html":"\n

Boardroom offers its Boardrooms Governance API to provide comprehensive data on 350+ DAOs across chains. It offers endpoints that fetch information about proposals, delegates, discussions, and much more. You can find the complete API documentation at this link.

\n

Check the Boardroom API section for details on how to extract data from the API and generate a knowledge base from the DAO of your interest.

\n","isPage":false,"text":"\nBoardroom offers its Boardrooms Governance API to provide comprehensive data on 350+ DAOs across chains. It offers endpoints that fetch information about proposals, delegates, discussions, and much more. You can find the complete API documentation at this link.\nCheck the Boardroom API section for details on how to extract data from the API and generate a knowledge base from the DAO of your interest.\n","title":"Boardroom Governance API","titles":["API Examples"]},"2":{"href":"/apis#optimism-agora-api","html":"\n

The Agora OP API provides various endpoints to interact with the OP Collective platform, focusing on RetroPGF (Retroactive Public Goods Funding) for Optimism. A comprehensive guide to the API endpoints, categorized by functionality, can be found at this link.

\n

Check the Agora API section for details on how to extract data from the API and generate a knowledge base related to RetroPGF projects and proposals within the OP collective.

\n","isPage":false,"text":"\nThe Agora OP API provides various endpoints to interact with the OP Collective platform, focusing on RetroPGF (Retroactive Public Goods Funding) for Optimism. A comprehensive guide to the API endpoints, categorized by functionality, can be found at this link.\nCheck the Agora API section for details on how to extract data from the API and generate a knowledge base related to RetroPGF projects and proposals within the OP collective.\n","title":"Optimism Agora API","titles":["API Examples"]},"3":{"href":"/apis#working-with-other-apis","html":"\n

If you are interested in working with any other API, visit the Other API Sources section to get started.

","isPage":false,"text":"\nIf you are interested in working with any other API, visit the Other API Sources section to get started.","title":"Working with Other APIs","titles":["API Examples"]},"4":{"href":"/architecture#rag-api-pipeline-architecture","html":"\n

The next sections are more developer-focused with the aim to be a helpful resource to quickly understand the pipeline architecture, the tech stack being used\nand how it works under the hood.

","isPage":true,"text":"\nThe next sections are more developer-focused with the aim to be a helpful resource to quickly understand the pipeline architecture, the tech stack being used\nand how it works under the hood.","title":"RAG API Pipeline Architecture","titles":[]},"5":{"href":"/cli#rag-api-pipeline","html":"\n

The following sections cover all things related to the RAG API Pipeline Command-line interface (CLI) tool:

\n","isPage":true,"text":"\nThe following sections cover all things related to the RAG API Pipeline Command-line interface (CLI) tool:\n\nPipeline initialization and the Setup Wizard.\nCLI Reference documentation.\nRAG API Pipeline Advanced settings.\nA User Guide on how to spin up and connect to a Gaia node.\nSupport for other LLM providers.\n","title":"RAG API Pipeline","titles":[]},"6":{"href":"/getting-started#gaia-rag-api-pipeline","html":"\n

rag-api-pipeline is a Python-based data pipeline tool that allows you to easily generate a vector knowledge base from any REST API data source. The\nresulting database snapshot can then be plugged into a Gaia node's LLM model with a prompt and provide contextual responses to user queries using RAG\n(Retrieval Augmented Generation).

\n

The following sections help you quickly set up and execute the pipeline on your REST API. If you're looking for more in-depth information about how to use\nthis tool, the tech stack and/or how it works under the hood, check the content menu on the left.

\n","isPage":true,"text":"\nrag-api-pipeline is a Python-based data pipeline tool that allows you to easily generate a vector knowledge base from any REST API data source. The\nresulting database snapshot can then be plugged into a Gaia node's LLM model with a prompt and provide contextual responses to user queries using RAG\n(Retrieval Augmented Generation).\nThe following sections help you quickly set up and execute the pipeline on your REST API. If you're looking for more in-depth information about how to use\nthis tool, the tech stack and/or how it works under the hood, check the content menu on the left.\n","title":"Gaia RAG API Pipeline","titles":[]},"7":{"href":"/getting-started#system-requirements","html":"\n\n","isPage":false,"text":"\n\nPython 3.11.x\nPoetry (Docs)\n\n(Optional): a Python virtual environment manager of your preference (e.g. conda, venv)\n\n\nQdrant vector database (Docs)\n\n(Optional): Docker to spin up a local container\n\n\nLLM model provider (e.g. spin up your own Gaia node or pick one from the Gaia public network)\n\nAn Embeddings model (e.g. Nomic-embed-text-v1.5)\n\n\n\n","title":"System Requirements","titles":["Gaia RAG API Pipeline"]},"8":{"href":"/getting-started#setup-instructions","html":"\n
","isPage":false,"text":"\n","title":"Setup Instructions","titles":["Gaia RAG API Pipeline"]},"9":{"href":"/getting-started#clone-this-repository","html":"

Git clone or download this repository to your local machine.

git clone https://github.com/raid-guild/gaianet-rag-api-pipeline.git
","isPage":false,"text":"Git clone or download this repository to your local machine.git clone https://github.com/raid-guild/gaianet-rag-api-pipeline.git","title":"Clone this repository","titles":["Gaia RAG API Pipeline","Setup Instructions"]},"10":{"href":"/getting-started#install-the-pipeline-cli","html":"

It is recommended to activate your own virtual environment.\nThen, navigate to the directory where this repository was cloned/download and execute the following command to install the rag-api-pipeline CLI:

cd gaianet-rag-api-pipeline\npip install -e .
","isPage":false,"text":"It is recommended to activate your own virtual environment.\nThen, navigate to the directory where this repository was cloned/download and execute the following command to install the rag-api-pipeline CLI:cd gaianet-rag-api-pipeline\npip install -e .","title":"Install the Pipeline CLI","titles":["Gaia RAG API Pipeline","Setup Instructions"]},"11":{"href":"/getting-started#setup-the-pipeline-configuration","html":"

Run the following command to start the pipeline setup wizard. You can use the default configuration settings or customize it for your specific needs.\nCheck the CLI Reference page for more details:

rag-api-pipeline setup
\n

Visit the Setup Wizard page for more information.

\n","isPage":false,"text":"Run the following command to start the pipeline setup wizard. You can use the default configuration settings or customize it for your specific needs.\nCheck the CLI Reference page for more details:rag-api-pipeline setup\nVisit the Setup Wizard page for more information.\n","title":"Setup the Pipeline Configuration","titles":["Gaia RAG API Pipeline","Setup Instructions"]},"12":{"href":"/getting-started#run-a-demo-rag-api-pipeline","html":"\n

A quick demo that extracts data from the Boardroom API can be executed by running the following command:

\n
rag-api-pipeline run all config/boardroom_api_pipeline.yaml config/boardroom_openapi.yaml
\n

You are required two specify two main arguments to the pipeline:

\n\n

Once the pipeline execution is completed, you'll find the vector database snapshot and extracted/processed datasets under the output/molochdao_boardroom_api folder.

\n","isPage":false,"text":"\nA quick demo that extracts data from the Boardroom API can be executed by running the following command:\nrag-api-pipeline run all config/boardroom_api_pipeline.yaml config/boardroom_openapi.yaml\nYou are required two specify two main arguments to the pipeline:\n\nThe path to the OpenAPI specification file (e.g. config/boardroom_openapi.yaml): the OpenAPI spec for the REST API data source\nyou're looking to extract data from.\nThe path to the API pipeline manifest file (e.g. config/boardroom_api_pipeline.yaml): a YAML file that defines API endpoints you're\nlooking to extract data from, among other parameters (more details in the next section).\n\nOnce the pipeline execution is completed, you'll find the vector database snapshot and extracted/processed datasets under the output/molochdao_boardroom_api folder.\n","title":"Run a demo RAG API pipeline","titles":["Gaia RAG API Pipeline"]},"13":{"href":"/getting-started#define-your-own-api-pipeline-manifest","html":"\n

Now it's time to define the pipeline manifest for the REST API you're looking to extract data from. Make sure you get the OpenAPI specification\nfor the API you're targeting. Check the\nDefining an API Pipeline Manifest page for details on how to get the OpenAPI spec and define an API pipeline manifest,\nor take a look at the in-depth review of the sample manifests available in the API Examples section.

\n","isPage":false,"text":"\nNow it's time to define the pipeline manifest for the REST API you're looking to extract data from. Make sure you get the OpenAPI specification\nfor the API you're targeting. Check the\nDefining an API Pipeline Manifest page for details on how to get the OpenAPI spec and define an API pipeline manifest,\nor take a look at the in-depth review of the sample manifests available in the API Examples section.\n","title":"Define your own API Pipeline manifest","titles":["Gaia RAG API Pipeline"]},"14":{"href":"/getting-started#using-the-pipeline-cli","html":"\n

Once you have both the API pipeline manifest and OpenAPI spec files, you're ready to start using the rag-api-pipeline run command to execute different tasks of the RAG pipeline,\nfrom extracting data from an API source to generating vector embeddings and a database snapshot. If you need more details about the parameters available\non each task you can execute:

\n
rag-api-pipeline run <command> --help
\n","isPage":false,"text":"\nOnce you have both the API pipeline manifest and OpenAPI spec files, you're ready to start using the rag-api-pipeline run command to execute different tasks of the RAG pipeline,\nfrom extracting data from an API source to generating vector embeddings and a database snapshot. If you need more details about the parameters available\non each task you can execute:\nrag-api-pipeline run <command> --help\n","title":"Using the Pipeline CLI","titles":["Gaia RAG API Pipeline"]},"15":{"href":"/getting-started#available-sub-commands","html":"\n

Below is the list of available commands. Check the CLI Reference documentation for more details:

\n
# run the entire pipeline\nrag-api-pipeline run all <API_MANIFEST_FILE> <OPENAPI_SPEC_FILE> [--full-refresh]\n# or run using an already normalized dataset\nrag-api-pipeline run from-normalized <API_MANIFEST_FILE> --normalized-data-file <jsonl-file>\n# or run using an already chunked dataset\nrag-api-pipeline run from-chunked <API_MANIFEST_FILE> --chunked-data-file <jsonl-file>
","isPage":false,"text":"\nBelow is the list of available commands. Check the CLI Reference documentation for more details:\n# run the entire pipeline\nrag-api-pipeline run all <API_MANIFEST_FILE> <OPENAPI_SPEC_FILE> [--full-refresh]\n# or run using an already normalized dataset\nrag-api-pipeline run from-normalized <API_MANIFEST_FILE> --normalized-data-file <jsonl-file>\n# or run using an already chunked dataset\nrag-api-pipeline run from-chunked <API_MANIFEST_FILE> --chunked-data-file <jsonl-file>","title":"Available sub-commands","titles":["Gaia RAG API Pipeline","Using the Pipeline CLI"]},"16":{"href":"/manifest-definition#defining-the-api-pipeline-manifest","html":"\n

In the following sections you'll learn how to define your own API pipeline manifest for any REST API you're targeting for extracting a knowledge base.

","isPage":true,"text":"\nIn the following sections you'll learn how to define your own API pipeline manifest for any REST API you're targeting for extracting a knowledge base.","title":"Defining the API Pipeline Manifest","titles":[]},"17":{"href":"/apis/agora-api#optimism-agora-api","html":"\n

This repository contains the OpenAPI specification and API pipeline manifest needed to create a RAG pipeline.\nThis pipeline generates a knowledge base from RetroPGF projects and proposals within the OP collective.

\n","isPage":true,"text":"\nThis repository contains the OpenAPI specification and API pipeline manifest needed to create a RAG pipeline.\nThis pipeline generates a knowledge base from RetroPGF projects and proposals within the OP collective.\n","title":"Optimism Agora API","titles":[]},"18":{"href":"/apis/agora-api#pre-requisites","html":"\n

To access this API, you'll need an API key. You can request one through the Agora's Discord server. You can run the rag-api-pipeline setup command to set the REST API Key,\nor your can directly store the key in the config/secrets/api-key file. A less secure option is to provide it using the --api-key CLI argument.

\n","isPage":false,"text":"\nTo access this API, you'll need an API key. You can request one through the Agora's Discord server. You can run the rag-api-pipeline setup command to set the REST API Key,\nor your can directly store the key in the config/secrets/api-key file. A less secure option is to provide it using the --api-key CLI argument.\n","title":"Pre-requisites","titles":["Optimism Agora API"]},"19":{"href":"/apis/agora-api#getting-the-agora-api-openapi-spec","html":"\n

TODO:

\n","isPage":false,"text":"\nTODO:\n","title":"Getting the Agora API OpenAPI Spec","titles":["Optimism Agora API"]},"20":{"href":"/apis/agora-api#defining-the-rag-api-pipeline-manifest","html":"\n

This pipeline will extract data related to DAO proposals (/proposals) and RetroPGF projects (/projects).\nNext, you can find an overview of the main sections in the API pipeline manifest.

\n","isPage":false,"text":"\nThis pipeline will extract data related to DAO proposals (/proposals) and RetroPGF projects (/projects).\nNext, you can find an overview of the main sections in the API pipeline manifest.\n","title":"Defining the RAG API Pipeline Manifest","titles":["Optimism Agora API"]},"21":{"href":"/apis/agora-api#basic-configuration","html":"\n

Since no api_parameters are required, this section remains empty.

\n
api_name: "optimism_agora_api"\n \napi_parameters:\n \napi_config:\n  request_method: "get"\n  content_type: "application/json"\n  response_entrypoint_field: "data"
\n","isPage":false,"text":"\nSince no api_parameters are required, this section remains empty.\napi_name: "optimism_agora_api"\n \napi_parameters:\n \napi_config:\n request_method: "get"\n content_type: "application/json"\n response_entrypoint_field: "data"\n","title":"Basic Configuration","titles":["Optimism Agora API","Defining the RAG API Pipeline Manifest"]},"22":{"href":"/apis/agora-api#connector-specification","html":"\n

The manifest then defines some metadata and the request parameters needed for making calls to the API. In this case, it only needs an api_key\nparameter for authentication:

\n
spec:\n  connection_specification:\n    $schema: http://json-schema.org/draft-07/schema#\n    additionalProperties: true\n    properties:\n      api_key:\n        airbyte-secret: true\n        description: Agora API Key.\n        type: string\n    required:\n    - api_key\n    title: Agora API Spec\n    type: object\n  documentation_url: https://docs.airbyte.com/integrations/sources/agora\n  type: Spec
\n","isPage":false,"text":"\nThe manifest then defines some metadata and the request parameters needed for making calls to the API. In this case, it only needs an api_key\nparameter for authentication:\nspec:\n connection_specification:\n $schema: http://json-schema.org/draft-07/schema#\n additionalProperties: true\n properties:\n api_key:\n airbyte-secret: true\n description: Agora API Key.\n type: string\n required:\n - api_key\n title: Agora API Spec\n type: object\n documentation_url: https://docs.airbyte.com/integrations/sources/agora\n type: Spec\n","title":"Connector Specification","titles":["Optimism Agora API","Defining the RAG API Pipeline Manifest"]},"23":{"href":"/apis/agora-api#api-request-configuration","html":"\n

Below is the requester_base definition. The API implements a BearerAuthenticator schema and retrieves the api_token from the config object:

\n
definition:\n  requester_base:\n    type: HttpRequester\n    url_base: "https://vote.optimism.io/api/v1"\n    http_method: "GET"\n    authenticator: # Details at https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/authentication\n      type: BearerAuthenticator\n      api_token: "{{ config['api_key'] }}"
\n","isPage":false,"text":"\nBelow is the requester_base definition. The API implements a BearerAuthenticator schema and retrieves the api_token from the config object:\ndefinition:\n requester_base:\n type: HttpRequester\n url_base: "https://vote.optimism.io/api/v1"\n http_method: "GET"\n authenticator: # Details at https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/authentication\n type: BearerAuthenticator\n api_token: "{{ config['api_key'] }}"\n","title":"API Request Configuration","titles":["Optimism Agora API","Defining the RAG API Pipeline Manifest"]},"24":{"href":"/apis/agora-api#record-selection-and-pagination","html":"\n

The API uses an Offset-based pagination strategy. The page_size is set to 50, while offset and limit parameters are dynamically inserted into the URL as request parameters:

\n
definition:\n  paginator: # Details at https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/pagination\n    type: DefaultPaginator\n    pagination_strategy: # Details at https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/pagination#offset-increment\n      type: "OffsetIncrement"\n      page_size: 50\n    page_token_option:\n      type: "RequestOption"\n      field_name: "offset"\n      inject_into: "request_parameter"\n    page_size_option:\n      type: "RequestOption"\n      inject_into: "request_parameter"\n      field_name: "limit"
\n","isPage":false,"text":"\nThe API uses an Offset-based pagination strategy. The page_size is set to 50, while offset and limit parameters are dynamically inserted into the URL as request parameters:\ndefinition:\n paginator: # Details at https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/pagination\n type: DefaultPaginator\n pagination_strategy: # Details at https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/pagination#offset-increment\n type: "OffsetIncrement"\n page_size: 50\n page_token_option:\n type: "RequestOption"\n field_name: "offset"\n inject_into: "request_parameter"\n page_size_option:\n type: "RequestOption"\n inject_into: "request_parameter"\n field_name: "limit"\n","title":"Record Selection and Pagination","titles":["Optimism Agora API","Defining the RAG API Pipeline Manifest"]},"25":{"href":"/apis/agora-api#endpoint-configuration","html":"\n

Below are the target endpoints with their respective schemas:

\n
endpoints:\n  /proposals:\n    id: "proposals"\n    primary_key: "id"\n    responseSchema: "#/schemas/Proposal"\n    textSchema:\n      $ref: "#/textSchemas/Proposal"\n  /projects:\n    id: "projects"\n    primary_key: "id"\n    responseSchema: "#/schemas/Project"\n    textSchema:\n      $ref: "#/textSchemas/Project"
\n","isPage":false,"text":"\nBelow are the target endpoints with their respective schemas:\nendpoints:\n /proposals:\n id: "proposals"\n primary_key: "id"\n responseSchema: "#/schemas/Proposal"\n textSchema:\n $ref: "#/textSchemas/Proposal"\n /projects:\n id: "projects"\n primary_key: "id"\n responseSchema: "#/schemas/Project"\n textSchema:\n $ref: "#/textSchemas/Project"\n","title":"Endpoint Configuration","titles":["Optimism Agora API","Defining the RAG API Pipeline Manifest"]},"26":{"href":"/apis/agora-api#using-the-rag-pipeline-to-generate-a-knowledge-base-for-the-op-collective","html":"\n","isPage":false,"text":"\n","title":"Using the RAG Pipeline to generate a Knowledge Base for the OP Collective","titles":["Optimism Agora API"]},"27":{"href":"/apis/agora-api#rag-pipeline-cli","html":"\n
    \n
  1. Make sure to setup the pipeline initial settings by running the rag-api-pipeline setup command.
  2. \n
  3. Execute the following command:
  4. \n
\n
rag-api-pipeline run all config/agora_api_pipeline.yaml config/agora_openapi.yaml
\n

After execution, you'll find the processed data and compressed knowledge base snapshot in the output/optimism_agora_api folder.

\n","isPage":false,"text":"\n\nMake sure to setup the pipeline initial settings by running the rag-api-pipeline setup command.\nExecute the following command:\n\nrag-api-pipeline run all config/agora_api_pipeline.yaml config/agora_openapi.yaml\nAfter execution, you'll find the processed data and compressed knowledge base snapshot in the output/optimism_agora_api folder.\n","title":"RAG Pipeline CLI","titles":["Optimism Agora API","Using the RAG Pipeline to generate a Knowledge Base for the OP Collective"]},"28":{"href":"/apis/agora-api#import-the-kb-snapshot-into-a-gaia-node","html":"\n
    \n
  1. Locate the generated snapshot in output/optimism_agora_api/ (named optimism_agora_api_collection-xxxxxxxxxxxxxxxx-yyyy-mm-dd-hh-mm-ss.snapshot.tar.gz) or download it from the HuggingFace link above.
  2. \n
  3. Follow the official knowledge base selection guide
  4. \n
  5. Configure your node using the recommended settings from the node deployment guide.\nDo not forget to update the custom prompts to mention optimism as the target DAO protocol.
  6. \n
","isPage":false,"text":"\n\nLocate the generated snapshot in output/optimism_agora_api/ (named optimism_agora_api_collection-xxxxxxxxxxxxxxxx-yyyy-mm-dd-hh-mm-ss.snapshot.tar.gz) or download it from the HuggingFace link above.\nFollow the official knowledge base selection guide\nConfigure your node using the recommended settings from the node deployment guide.\nDo not forget to update the custom prompts to mention optimism as the target DAO protocol.\n","title":"Import the KB Snapshot into a Gaia Node","titles":["Optimism Agora API","Using the RAG Pipeline to generate a Knowledge Base for the OP Collective"]},"29":{"href":"/apis/boardroom-api#boardroom-governance-api","html":"\n

The repository already contains the OpenAPI specification and the API pipeline manifest needed to create a RAG API pipeline.\nThis pipeline generates a knowledge base from any DAO/Protocol hosted by the Boardroom Governance API.

\n","isPage":true,"text":"\nThe repository already contains the OpenAPI specification and the API pipeline manifest needed to create a RAG API pipeline.\nThis pipeline generates a knowledge base from any DAO/Protocol hosted by the Boardroom Governance API.\n","title":"Boardroom Governance API","titles":[]},"30":{"href":"/apis/boardroom-api#pre-requisites","html":"\n

To use this API, you'll need an API key. Request one from Boardroom's developer portal. You can run the rag-api-pipeline setup command to set the REST API Key,\nor your can directly store the key in the config/secrets/api-key file. A less secure option is to provide it using the --api-key CLI argument.

\n","isPage":false,"text":"\nTo use this API, you'll need an API key. Request one from Boardroom's developer portal. You can run the rag-api-pipeline setup command to set the REST API Key,\nor your can directly store the key in the config/secrets/api-key file. A less secure option is to provide it using the --api-key CLI argument.\n","title":"Pre-requisites","titles":["Boardroom Governance API"]},"31":{"href":"/apis/boardroom-api#getting-the-boardroom-api-openapi-spec","html":"\n

TODO:

\n","isPage":false,"text":"\nTODO:\n","title":"Getting the Boardroom API OpenAPI Spec","titles":["Boardroom Governance API"]},"32":{"href":"/apis/boardroom-api#defining-the-rag-api-pipeline-manifest","html":"\n

This pipeline will extract data related to protocol metadata (/protocols/aave), DAO proposals (/protocols/aave/proposals) and discussion posts from the Discourse forum site (discourseTopics, discourseCategories and discourseTopicPosts) if there's any.

\n","isPage":false,"text":"\nThis pipeline will extract data related to protocol metadata (/protocols/aave), DAO proposals (/protocols/aave/proposals) and discussion posts from the Discourse forum site (discourseTopics, discourseCategories and discourseTopicPosts) if there's any.\n","title":"Defining the RAG API Pipeline Manifest","titles":["Boardroom Governance API"]},"33":{"href":"/apis/boardroom-api#basic-configuration","html":"\n

The manifest starts by defining the API name, parameters and requests settings. You can visit this link to get the list of all DAO protocols in Boardroom. This example focuses on the Aave Governance DAO:

\n
api_name: "aave_boardroom_api"\n \napi_parameters:\n  cname: "aave"\n  protocol: "aave"\n \napi_config:\n  request_method: "get"\n  content_type: "application/json"\n  response_entrypoint_field: "data"
\n","isPage":false,"text":"\nThe manifest starts by defining the API name, parameters and requests settings. You can visit this link to get the list of all DAO protocols in Boardroom. This example focuses on the Aave Governance DAO:\napi_name: "aave_boardroom_api"\n \napi_parameters:\n cname: "aave"\n protocol: "aave"\n \napi_config:\n request_method: "get"\n content_type: "application/json"\n response_entrypoint_field: "data"\n","title":"Basic Configuration","titles":["Boardroom Governance API","Defining the RAG API Pipeline Manifest"]},"34":{"href":"/apis/boardroom-api#connector-specification","html":"\n

The manifest then defines some metadata and the request parameters needed for making calls to the API:

\n
spec:\n  type: Spec\n  documentation_url: https://docs.airbyte.com/integrations/sources/boardroom\n  connection_specification:\n    $schema: http://json-schema.org/draft-07/schema#\n    title: Boardroom API Spec\n    type: object\n    required:\n      - api_key\n      - cname\n      - protocol\n    additionalProperties: true\n    properties:\n      api_key:\n        type: string\n        description: "Boardroom API Key. See <a href='https://docs.boardroom.io/docs/api/05c1fb6d88a07-governance-api'>here</a> for details."\n        airbyte-secret: true\n      cname:\n        type: string\n        description: "Protocol ID a.k.a cname"\n        examples:\n          - aave\n          - hopprotocol\n      protocol:\n        type: string\n        description: "Alias for cname. Required for endpoints using 'protocol' as parameter ID"\n        examples:\n          - aave\n          - metacartel
\n","isPage":false,"text":"\nThe manifest then defines some metadata and the request parameters needed for making calls to the API:\nspec:\n type: Spec\n documentation_url: https://docs.airbyte.com/integrations/sources/boardroom\n connection_specification:\n $schema: http://json-schema.org/draft-07/schema#\n title: Boardroom API Spec\n type: object\n required:\n - api_key\n - cname\n - protocol\n additionalProperties: true\n properties:\n api_key:\n type: string\n description: "Boardroom API Key. See <a href='https://docs.boardroom.io/docs/api/05c1fb6d88a07-governance-api'>here</a> for details."\n airbyte-secret: true\n cname:\n type: string\n description: "Protocol ID a.k.a cname"\n examples:\n - aave\n - hopprotocol\n protocol:\n type: string\n description: "Alias for cname. Required for endpoints using 'protocol' as parameter ID"\n examples:\n - aave\n - metacartel\n","title":"Connector Specification","titles":["Boardroom Governance API","Defining the RAG API Pipeline Manifest"]},"35":{"href":"/apis/boardroom-api#api-request-configuration","html":"\n

Then, the requester_base defines the how connector should make requests to the API. Here, an ApiKeyAuthenticator schema is required and gets the api_token value from the config object:

\n
definitions:\n  requester_base:\n    type: HttpRequester\n    url_base: "https://api.boardroom.info/v1"\n    http_method: "GET"\n    authenticator:\n      type: ApiKeyAuthenticator\n      api_token: "{{ config['api_key'] }}"\n      inject_into:\n        type: RequestOption\n        field_name: "key"\n        inject_into: request_parameter
\n","isPage":false,"text":"\nThen, the requester_base defines the how connector should make requests to the API. Here, an ApiKeyAuthenticator schema is required and gets the api_token value from the config object:\ndefinitions:\n requester_base:\n type: HttpRequester\n url_base: "https://api.boardroom.info/v1"\n http_method: "GET"\n authenticator:\n type: ApiKeyAuthenticator\n api_token: "{{ config['api_key'] }}"\n inject_into:\n type: RequestOption\n field_name: "key"\n inject_into: request_parameter\n","title":"API Request Configuration","titles":["Boardroom Governance API","Defining the RAG API Pipeline Manifest"]},"36":{"href":"/apis/boardroom-api#record-selection-and-pagination","html":"\n

Data records returned by the API are always wrapped in the data field, while pagination is handled using a Cursor-based approach:

\n
definitions:\n  selector:\n    type: RecordSelector\n    extractor:\n      type: DpathExtractor\n      field_path: ["data"]\n \n  paginator:\n    type: DefaultPaginator\n    pagination_strategy:\n      type: CursorPagination\n      cursor_value: "{{ response.get('nextCursor', '') }}"\n      stop_condition: "{{ 'nextCursor' not in response }}"\n    page_token_option:\n      type: RequestOption\n      field_name: "cursor"\n      inject_into: "request_parameter"
\n","isPage":false,"text":"\nData records returned by the API are always wrapped in the data field, while pagination is handled using a Cursor-based approach:\ndefinitions:\n selector:\n type: RecordSelector\n extractor:\n type: DpathExtractor\n field_path: ["data"]\n \n paginator:\n type: DefaultPaginator\n pagination_strategy:\n type: CursorPagination\n cursor_value: "{{ response.get('nextCursor', '') }}"\n stop_condition: "{{ 'nextCursor' not in response }}"\n page_token_option:\n type: RequestOption\n field_name: "cursor"\n inject_into: "request_parameter"\n","title":"Record Selection and Pagination","titles":["Boardroom Governance API","Defining the RAG API Pipeline Manifest"]},"37":{"href":"/apis/boardroom-api#endpoint-configuration","html":"\n

Now it's time to define the target endpoints with their respective schemas. Below is an example for the proposals endpoint:

\n
endpoints:\n  "/protocols/{cname}/proposals":\n    id: "proposals"\n    primary_key: "refId"\n    responseSchema: "#/schemas/Proposals"\n    textSchema:\n      $ref: "#/textSchemas/Proposal"
\n","isPage":false,"text":"\nNow it's time to define the target endpoints with their respective schemas. Below is an example for the proposals endpoint:\nendpoints:\n "/protocols/{cname}/proposals":\n id: "proposals"\n primary_key: "refId"\n responseSchema: "#/schemas/Proposals"\n textSchema:\n $ref: "#/textSchemas/Proposal"\n","title":"Endpoint Configuration","titles":["Boardroom Governance API","Defining the RAG API Pipeline Manifest"]},"38":{"href":"/apis/boardroom-api#schema-definitions","html":"\n

The responseSchema reference from above defines the complete unwrappd data schema that is returned by the API endpoint:

\n
schemas:\n  Proposals:\n    type: object\n    $schema: http://json-schema.org/draft-07/schema#\n    properties:\n      refId:\n        type: string\n      id:\n        type: string\n      title:\n        type: string\n      content:\n        type: string\n      protocol:\n        type: string\n      adapter:\n        type: string\n      proposer:\n        type: string\n      totalVotes:\n        type: integer\n      blockNumber:\n        type: integer\n      externalUrl:\n        type: string\n      startTime:\n        type: object\n        properties:\n          timestamp:\n            type: integer\n      endTime:\n        type: object\n        properties:\n          timestamp:\n            type: integer\n      startTimestamp:\n        type: string\n      endTimestamp:\n        type: string\n      currentState:\n        type: string\n      choices:\n        type: array\n        items:\n          type: string\n      results:\n        type: array\n        items:\n          type: object\n          properties:\n            total:\n              type: number\n            choice:\n              type: integer\n      events:\n        type: array\n        items:\n          type: object\n          properties: {}\n      type:\n        type: string\n      indexedResult:\n        type: array\n        items:\n          type: object\n          properties:\n            total:\n              type: string\n            choice:\n              type: string\n      summary:\n        type: string\n      privacy:\n        type: string\n      indexedAt:\n        type: integer\n      txHash:\n        type: string\n      quorum:\n        type: integer
\n

On the other hand, the endpoint's textSchema reference specifies the list of fields for text parsing. Note that all properties are also listed in the responseSchema.\nIn this case, title, content, and summary will be parsed as texts, while other fields will be included as metadata properties in a JSON object:

\n
textSchemas:\n  Proposal:\n    type: object\n    properties:\n      title:\n        type: string\n      content:\n        type: string\n      summary:\n        type: string
\n","isPage":false,"text":"\nThe responseSchema reference from above defines the complete unwrappd data schema that is returned by the API endpoint:\nschemas:\n Proposals:\n type: object\n $schema: http://json-schema.org/draft-07/schema#\n properties:\n refId:\n type: string\n id:\n type: string\n title:\n type: string\n content:\n type: string\n protocol:\n type: string\n adapter:\n type: string\n proposer:\n type: string\n totalVotes:\n type: integer\n blockNumber:\n type: integer\n externalUrl:\n type: string\n startTime:\n type: object\n properties:\n timestamp:\n type: integer\n endTime:\n type: object\n properties:\n timestamp:\n type: integer\n startTimestamp:\n type: string\n endTimestamp:\n type: string\n currentState:\n type: string\n choices:\n type: array\n items:\n type: string\n results:\n type: array\n items:\n type: object\n properties:\n total:\n type: number\n choice:\n type: integer\n events:\n type: array\n items:\n type: object\n properties: {}\n type:\n type: string\n indexedResult:\n type: array\n items:\n type: object\n properties:\n total:\n type: string\n choice:\n type: string\n summary:\n type: string\n privacy:\n type: string\n indexedAt:\n type: integer\n txHash:\n type: string\n quorum:\n type: integer\nOn the other hand, the endpoint's textSchema reference specifies the list of fields for text parsing. Note that all properties are also listed in the responseSchema.\nIn this case, title, content, and summary will be parsed as texts, while other fields will be included as metadata properties in a JSON object:\ntextSchemas:\n Proposal:\n type: object\n properties:\n title:\n type: string\n content:\n type: string\n summary:\n type: string\n","title":"Schema Definitions","titles":["Boardroom Governance API","Defining the RAG API Pipeline Manifest"]},"39":{"href":"/apis/boardroom-api#chunking-parameters","html":"\n

This section set the settings to be used when applying text chunking to the extracted content:

\n
chunking_params:\n  mode: "elements"\n  chunking_strategy: "by_title"\n  include_orig_elements: true\n  max_characters: 1500\n  new_after_n_chars: 1024\n  overlap: 0\n  overlap_all: false\n  combine_text_under_n_chars: 0\n  multipage_sections: true
\n","isPage":false,"text":"\nThis section set the settings to be used when applying text chunking to the extracted content:\nchunking_params:\n mode: "elements"\n chunking_strategy: "by_title"\n include_orig_elements: true\n max_characters: 1500\n new_after_n_chars: 1024\n overlap: 0\n overlap_all: false\n combine_text_under_n_chars: 0\n multipage_sections: true\n","title":"Chunking Parameters","titles":["Boardroom Governance API","Defining the RAG API Pipeline Manifest"]},"40":{"href":"/apis/boardroom-api#using-the-rag-pipeline-to-generate-a-knowledge-base-for-aave","html":"\n","isPage":false,"text":"\n","title":"Using the RAG Pipeline to generate a Knowledge Base for Aave","titles":["Boardroom Governance API"]},"41":{"href":"/apis/boardroom-api#rag-pipeline-cli","html":"\n
    \n
  1. Make sure to setup the pipeline initial settings by running the rag-api-pipeline setup command.
  2. \n
  3. Execute the following command:
  4. \n
\n
rag-api-pipeline run all config/boardroom_api_pipeline.yaml config/boardroom_openapi.yaml
\n

The processed data and knowledge base snapshot for Aave will be available in the output/aave_boardroom_api folder. You can also find a public knowledge base snapshot on Hugging Face.

\n","isPage":false,"text":"\n\nMake sure to setup the pipeline initial settings by running the rag-api-pipeline setup command.\nExecute the following command:\n\nrag-api-pipeline run all config/boardroom_api_pipeline.yaml config/boardroom_openapi.yaml\nThe processed data and knowledge base snapshot for Aave will be available in the output/aave_boardroom_api folder. You can also find a public knowledge base snapshot on Hugging Face.\n","title":"RAG Pipeline CLI","titles":["Boardroom Governance API","Using the RAG Pipeline to generate a Knowledge Base for Aave"]},"42":{"href":"/apis/boardroom-api#import-the-kb-snapshot-into-a-gaia-node","html":"\n
    \n
  1. Locate the generated snapshot in output/aave_boardroom_api/ (named aave_boardroom_api_collection-xxxxxxxxxxxxxxxx-yyyy-mm-dd-hh-mm-ss.snapshot.tar.gz) or download it from the HuggingFace link above.
  2. \n
  3. Follow the official knowledge base selection guide
  4. \n
  5. Configure your node using the recommended settings from the node deployment guide.\nDo not forget to update the custom prompts to mention aave as the target DAO protocol.
  6. \n
\n","isPage":false,"text":"\n\nLocate the generated snapshot in output/aave_boardroom_api/ (named aave_boardroom_api_collection-xxxxxxxxxxxxxxxx-yyyy-mm-dd-hh-mm-ss.snapshot.tar.gz) or download it from the HuggingFace link above.\nFollow the official knowledge base selection guide\nConfigure your node using the recommended settings from the node deployment guide.\nDo not forget to update the custom prompts to mention aave as the target DAO protocol.\n\n","title":"Import the KB Snapshot into a Gaia Node","titles":["Boardroom Governance API","Using the RAG Pipeline to generate a Knowledge Base for Aave"]},"43":{"href":"/apis/boardroom-api#example-user-prompts","html":"\n\n

\"intro_prompt\"/

\n\n

\"proposal1_prompt\"/

\n\n

\"proposal1_prompt\"/

\n","isPage":false,"text":"\n\nAsking what information the RAG bot is able to provide\n\n\n\nAsking for information about the proposal Enable Metis as Collateral on the Metis Chain\n\n\n\nAsking for information about Onboarding USDS and sUSDS to Aave v3\n\n\n","title":"Example user prompts","titles":["Boardroom Governance API","Using the RAG Pipeline to generate a Knowledge Base for Aave"]},"44":{"href":"/apis/boardroom-api#customizing-for-other-daos","html":"\n

To generate a knowledge base for a different DAO, you just need to modify the api_name and api_parameters values in the boardroom_api_pipeline.yaml manifest file.

","isPage":false,"text":"\nTo generate a knowledge base for a different DAO, you just need to modify the api_name and api_parameters values in the boardroom_api_pipeline.yaml manifest file.","title":"Customizing for Other DAOs","titles":["Boardroom Governance API","Using the RAG Pipeline to generate a Knowledge Base for Aave"]},"45":{"href":"/apis/other-api-sources#working-with-other-api-sources-","html":"\n

Want to supercharge your RAG pipeline with different APIs? We've got you covered! Here's a simple guide to get started.

\n","isPage":true,"text":"\nWant to supercharge your RAG pipeline with different APIs? We've got you covered! Here's a simple guide to get started.\n","title":"Working with Other API Sources 🔌","titles":[]},"46":{"href":"/apis/other-api-sources#where-to-find-great-apis","html":"\n","isPage":false,"text":"\n","title":"Where to Find Great APIs","titles":["Working with Other API Sources 🔌"]},"47":{"href":"/apis/other-api-sources#public-api-collections","html":"\n\n","isPage":false,"text":"\n\nPublic APIs GitHub Repository - A goldmine of free APIs!\nRapidAPI Hub - Browse through thousands of free and paid APIs\n\n","title":"Public API Collections","titles":["Working with Other API Sources 🔌","Where to Find Great APIs"]},"48":{"href":"/apis/other-api-sources#integration-guide-its-easy","html":"\n","isPage":false,"text":"\n","title":"Integration Guide (It's Easy!)","titles":["Working with Other API Sources 🔌"]},"49":{"href":"/apis/other-api-sources#1-gather-documentation","html":"\n\n","isPage":false,"text":"\n\nCollect endpoint details\nNote down request/response formats\nLook for existing OpenAPI/Swagger specifications\n\n","title":"1. Gather Documentation","titles":["Working with Other API Sources 🔌","Integration Guide (It's Easy!)"]},"50":{"href":"/apis/other-api-sources#2-schema-setup","html":"\n\n","isPage":false,"text":"\n\nDo checkout this guide on OpenAPI\nLook for an official OpenAPI spec file from the API provider.\nUse some help from LLMs to create OpenAPI schemas\nValidate your schema:\n\nNew schemas: Swagger Editor\nExisting specs: Swagger Validator\n\n\n\n","title":"2. Schema Setup","titles":["Working with Other API Sources 🔌","Integration Guide (It's Easy!)"]},"51":{"href":"/apis/other-api-sources#3-define-the-rag-api-pipeline-manifest","html":"\n\n","isPage":false,"text":"\n\nDefine the target endpoints and required request parameters\nGet an API Key if needed.\nCheck out our guide or API examples for inspiration.\n\n","title":"3. Define the RAG API Pipeline manifest","titles":["Working with Other API Sources 🔌","Integration Guide (It's Easy!)"]},"52":{"href":"/apis/other-api-sources#4-test-and-deploy","html":"\n\n

Still need help? Feel free reach out or open an issue on this repository!

","isPage":false,"text":"\n\nSetup the pipeline initial configuration by running the rag-api-pipeline setup command.\nTest each endpoint thoroughly:\n\nRun rag-api-pipeline run all <API_MANIFEST_FILE> <OPENAPI_SPEC_FILE> and check for any errors.\nComment other endpoints in the API manifest.\nUse the --normalized-only CLI option and check results in the output folder.\n\n\nAdjust data chunking parameter settings:\n\nUse the --chunked-only CLI option and analyze results (e.g. using a Jupyter notebook)\n\n\nIf you want to include recent endpoint data, use the --full-refresh CLI option to cleanup the cache.\nUse AI assistance to fix validation issues.\nConnect everything to your RAG pipeline.\n\nStill need help? Feel free reach out or open an issue on this repository!","title":"4. Test and Deploy","titles":["Working with Other API Sources 🔌","Integration Guide (It's Easy!)"]},"53":{"href":"/architecture/code-review#in-depth-source-code-review","html":"\n

This document walks through the different modules that comprise the RAG (Retrieval-Augmented Generation) API Pipeline architecture. The system is designed to extract, preprocess, parse, and store data streams from an API source, then create a vector embeddings knowledge base that can be queried using natural language processing and/or hybrid search techniques. Data from each pipeline stage is serialized using a JSON Lines format for easy caching and reuse.

\n","isPage":true,"text":"\nThis document walks through the different modules that comprise the RAG (Retrieval-Augmented Generation) API Pipeline architecture. The system is designed to extract, preprocess, parse, and store data streams from an API source, then create a vector embeddings knowledge base that can be queried using natural language processing and/or hybrid search techniques. Data from each pipeline stage is serialized using a JSON Lines format for easy caching and reuse.\n","title":"In-depth Source Code Review","titles":[]},"54":{"href":"/architecture/code-review#data-flow-overview","html":"\n\n
    \n
  1. API Loader: Generates an Airbyte declarative stream manifest using the input API pipeline manifest and the API OpenAPI spec.
  2. \n
  3. Data Extraction: PyAirbyte uses the source manifest to create individual data streams for each specified API endpoint. Raw data is then cached using Airbyte DuckDB for efficient API data retrieval.
  4. \n
  5. Processing & Transformation: Pathway handles real-time preprocessing of data streams, transforming raw data into a usable format. Endpoint text fields specified in the API pipeline manifest are joined together into a content field, while the remaining fields are stored in a JSON metadata object.
  6. \n
  7. Data Normalization: Preprocessed data streams are joined together into a single normalized stream.
  8. \n
  9. Data Partitioning & Chunking: Normalized data records are then partitioned and chunked.
  10. \n
  11. Vector Embeddings Generation: The pipeline connects to an LLM provider to use a hosted embedding model for generating vector embeddings from chunked data records.
  12. \n
  13. Loading Knowledge Base Snapshot: The resulting QdrantDB collection snapshot can be imported into a Gaia node, allowing the LLM model to use the domain knowledge for providing RAG-based answers to end users.
  14. \n
\n","isPage":false,"text":"\n\n\nAPI Loader: Generates an Airbyte declarative stream manifest using the input API pipeline manifest and the API OpenAPI spec.\nData Extraction: PyAirbyte uses the source manifest to create individual data streams for each specified API endpoint. Raw data is then cached using Airbyte DuckDB for efficient API data retrieval.\nProcessing & Transformation: Pathway handles real-time preprocessing of data streams, transforming raw data into a usable format. Endpoint text fields specified in the API pipeline manifest are joined together into a content field, while the remaining fields are stored in a JSON metadata object.\nData Normalization: Preprocessed data streams are joined together into a single normalized stream.\nData Partitioning & Chunking: Normalized data records are then partitioned and chunked.\nVector Embeddings Generation: The pipeline connects to an LLM provider to use a hosted embedding model for generating vector embeddings from chunked data records.\nLoading Knowledge Base Snapshot: The resulting QdrantDB collection snapshot can be imported into a Gaia node, allowing the LLM model to use the domain knowledge for providing RAG-based answers to end users.\n\n","title":"Data Flow Overview","titles":["In-depth Source Code Review"]},"55":{"href":"/architecture/code-review#pipeline-components","html":"\n","isPage":false,"text":"\n","title":"Pipeline Components","titles":["In-depth Source Code Review"]},"56":{"href":"/architecture/code-review#cli-entrypoint-source","html":"\n

The entrypoint module uses Click to define CLI commands that execute specific pipeline stages. Check the CLI reference for details on available commands and arguments.

\n","isPage":false,"text":"\nThe entrypoint module uses Click to define CLI commands that execute specific pipeline stages. Check the CLI reference for details on available commands and arguments.\n","title":"CLI Entrypoint (","titles":["In-depth Source Code Review","Pipeline Components"]},"57":{"href":"/architecture/code-review#api-loader-source","html":"\n

Uses the input API pipeline manifest and API OpenAPI spec to generate/load an Airbyte declarative stream manifest for initiating the input data streams.

\n

Input Parameters:

\n\n

Output:

\n\n","isPage":false,"text":"\nUses the input API pipeline manifest and API OpenAPI spec to generate/load an Airbyte declarative stream manifest for initiating the input data streams.\nInput Parameters:\n\nAPI Pipeline Manifest: A YAML file defining configuration settings and API endpoints for extraction. The Defining the API Pipeline Manifest reference provides details on creating a new manifest for your target API.\nOpenAPI Spec: YAML file containing the OpenAPI specification for the API source.\n\nOutput:\n\napi_name: API Pipeline ID\napi_parameters: Input parameter values for injection into the Airbyte API connector\nsource_manifest: Generated source manifest (dict serialized)\nendpoint_text_fields: Text fields per API endpoint\nchunking_params: Chunking parameters for the data chunking stage\n\n","title":"API Loader (","titles":["In-depth Source Code Review","Pipeline Components"]},"58":{"href":"/architecture/code-review#input-module-source","html":"\n

Uses Pathway and PyAirbyte to implement the AirbyteAPIConnector (Source). The input module uses this custom connector with api_parameters to create data stream tables for each API endpoint in source_manifest.

\n","isPage":false,"text":"\nUses Pathway and PyAirbyte to implement the AirbyteAPIConnector (Source). The input module uses this custom connector with api_parameters to create data stream tables for each API endpoint in source_manifest.\n","title":"Input Module (","titles":["In-depth Source Code Review","Pipeline Components"]},"59":{"href":"/architecture/code-review#rag-pipeline-source","html":"\n

Receives input data streams and executes the following processing steps:

\n
    \n
  1. \n

    Preprocessing (Source): Transforms raw data streams into a unified data schema using specified endpoint_text_fields.

    \n
  2. \n
  3. \n

    Normalization: Joins preprocessed data into a single normalized stream table.

    \n
  4. \n
  5. \n

    Data Partitioning and Chunking (Source): Receives the normalized data stream and chunking_params to apply data partition and chunking using the CustomParseUnstructured (Source) UDF (Pathway User-defined Function).

    \n
  6. \n
  7. \n

    Feature Embeddings (Source): The CustomLiteLLMEmbedder (Source) integrates litellm and ollama libraries to connect to the selected LLM provider for generating vector embeddings.

    \n
  8. \n
\n\n","isPage":false,"text":"\nReceives input data streams and executes the following processing steps:\n\n\nPreprocessing (Source): Transforms raw data streams into a unified data schema using specified endpoint_text_fields.\n\n\nNormalization: Joins preprocessed data into a single normalized stream table.\n\n\nData Partitioning and Chunking (Source): Receives the normalized data stream and chunking_params to apply data partition and chunking using the CustomParseUnstructured (Source) UDF (Pathway User-defined Function).\n\n\nFeature Embeddings (Source): The CustomLiteLLMEmbedder (Source) integrates litellm and ollama libraries to connect to the selected LLM provider for generating vector embeddings.\n\n\nNOTICE:\nFor pipeline execution on consumer hardware, we recommend using Ollama as a more lightweight LLM provider for vector embeddings generation.\n","title":"RAG Pipeline (","titles":["In-depth Source Code Review","Pipeline Components"]},"60":{"href":"/architecture/code-review#output-module-source","html":"\n

Uses the qdrant_client library to implement the QdrantDBVectorStore (Source). It connects to a Pathway output connector to read records from the embeddings stream, store vector embeddings and attached metadata in a Qdrant DB collection, and generate and download a knowledge base snapshot.

","isPage":false,"text":"\nUses the qdrant_client library to implement the QdrantDBVectorStore (Source). It connects to a Pathway output connector to read records from the embeddings stream, store vector embeddings and attached metadata in a Qdrant DB collection, and generate and download a knowledge base snapshot.","title":"Output Module (","titles":["In-depth Source Code Review","Pipeline Components"]},"61":{"href":"/architecture/overview#architecture-overview","html":"\n

\"architecture\"/

\n

The diagram above illustrates the system architecture. When executing the rag-api-pipeline CLI, the tool performs the following steps:

\n
    \n
  1. The API Loader module reads both the API pipeline manifest and the OpenAPI specification.
  2. \n
  3. The Loader module generates an Airbyte declarative stream manifest and forwards it to the Pipeline module.
  4. \n
  5. The Pipeline module initiates the Pathway engine.
  6. \n
  7. The engine uses an Airbyte UDF connector module to extract data from each API endpoint as independent streams.
  8. \n
  9. Extracted data flows through the RAG pipeline stages: stream preprocessing, data normalization, data partitioning and chunking, and feature embeddings generation.\n
      \n
    • (5.4) The Feature Embeddings generation module can be configured to use an OpenAI-compatible API provider, such as a Gaia node, to generate vector embeddings with your preferred LLM embeddings model. Visit the Other LLM Providers page for details on other supported LLM providers.
    • \n
    • (5.5) Generated vector embeddings are stored in a Qdrant DB instance using the qdrant output module.
    • \n
    \n
  10. \n
  11. The qdrant module automatically generates and compresses a DB vector snapshot for the current vector embeddings collection.
  12. \n
  13. The resulting knowledge base snapshot can be imported into a Gaia node either through local upload or by uploading to an AI dataset/model provider such as HuggingFace.
  14. \n
  15. The node joins the Gaia network to provide an LLM model with custom domain knowledge that can be used to deliver various RAG applications to end users.
  16. \n
","isPage":true,"text":"\n\nThe diagram above illustrates the system architecture. When executing the rag-api-pipeline CLI, the tool performs the following steps:\n\nThe API Loader module reads both the API pipeline manifest and the OpenAPI specification.\nThe Loader module generates an Airbyte declarative stream manifest and forwards it to the Pipeline module.\nThe Pipeline module initiates the Pathway engine.\nThe engine uses an Airbyte UDF connector module to extract data from each API endpoint as independent streams.\nExtracted data flows through the RAG pipeline stages: stream preprocessing, data normalization, data partitioning and chunking, and feature embeddings generation.\n\n(5.4) The Feature Embeddings generation module can be configured to use an OpenAI-compatible API provider, such as a Gaia node, to generate vector embeddings with your preferred LLM embeddings model. Visit the Other LLM Providers page for details on other supported LLM providers.\n(5.5) Generated vector embeddings are stored in a Qdrant DB instance using the qdrant output module.\n\n\nThe qdrant module automatically generates and compresses a DB vector snapshot for the current vector embeddings collection.\nThe resulting knowledge base snapshot can be imported into a Gaia node either through local upload or by uploading to an AI dataset/model provider such as HuggingFace.\nThe node joins the Gaia network to provide an LLM model with custom domain knowledge that can be used to deliver various RAG applications to end users.\n","title":"Architecture Overview","titles":[]},"62":{"href":"/architecture/tech-stack#tech-stack","html":"\n

This page outlines the technologies and tools integrated into the rag-api-pipeline across different execution stages.

\n","isPage":true,"text":"\nThis page outlines the technologies and tools integrated into the rag-api-pipeline across different execution stages.\n","title":"Tech Stack","titles":[]},"63":{"href":"/architecture/tech-stack#tools--frameworks","html":"\n","isPage":false,"text":"\n","title":"Tools & Frameworks","titles":["Tech Stack"]},"64":{"href":"/architecture/tech-stack#1-rag-pipeline-over-data-stream-pathway-docs","html":"\n\n","isPage":false,"text":"\n\nDescription: A Python-based data processing framework designed for creating AI-driven pipelines over data streams\nCore Technology:\n\nRust Engine with multithreading and multiprocessing capabilities for high performance\n\n\nUse Case: Efficient data processing, enabling integration with third-party data-related tools and AI models to process large, real-time data streams\n\n","title":"1. RAG Pipeline over Data Stream: Pathway (","titles":["Tech Stack","Tools & Frameworks"]},"65":{"href":"/architecture/tech-stack#getting-started","html":"\n\n","isPage":false,"text":"\n\nDescription: Utilities for interacting with Airbyte declarative stream connectors using Python\nKey Features:\n\nFacilitates integration with Airbyte data sources\nSupports Declarative API Connectors via the Airbyte CDK, enabling low-code development of custom connectors\n\n\n\n","title":"2. Data Extraction from REST API Sources: PyAirbyte (","titles":["Tech Stack","Tools & Frameworks"]},"66":{"href":"/architecture/tech-stack#DuckDBCache","html":"\n\n","isPage":false,"text":"\n\nDescription: Implements caching mechanisms at various pipeline stages to optimize performance and reduce redundant data processing\nTechnologies Used:\n\nAirbyte DuckDB Cache: Used for caching API data extractions, ensuring efficient retrieval of extracted data without re-querying the source\nJSONL Output Connectors: After normalization and chunking, data is cached and stored in JSONL format, streamlining further processing stages\n\n\n\n","title":"3. Data Caching: DuckDB (","titles":["Tech Stack","Tools & Frameworks"]},"67":{"href":"/architecture/tech-stack#4-data-partitioning-and-chunking-unstructured-open-source-docs","html":"\n\n","isPage":false,"text":"\n\nDescription: Simplifies the ingestion and preprocessing of diverse data formats within data workflows, specifically designed for Large Language Models (LLMs)\nFeatures:\n\nFunctions to partition, chunk, clean, and stage raw source documents for further analysis\nOptimized for unstructured data handling, making it easier to prepare data for machine learning tasks\n\n\n\n","title":"4. Data Partitioning and Chunking: Unstructured Open Source (","titles":["Tech Stack","Tools & Frameworks"]},"68":{"href":"/architecture/tech-stack#5-feature-embedding-generation","html":"\n\n","isPage":false,"text":"\n\nDescription: connects to a LLM provider and is responsible for generating feature embeddings, which create dense vector representations of the extracted data.\nTechnologies Used:\n\nGaia Node (Docs): Offers a RAG API Server that provides an OpenAI-like API to interact with hosted LLM models\nOllama (Docs): Easy-to-install LLM engine for running large language models on a local machine\n\n\nPython Libraries:\n\nlitellm Python library for connecting with OpenAI-compatible LLM providers\nollama Python library for interacting with a local Ollama instance\n\n\n\n","title":"5. Feature Embedding Generation:","titles":["Tech Stack","Tools & Frameworks"]},"69":{"href":"/architecture/tech-stack#6-vector-embeddings-database-snapshot-qdrantdb-docs","html":"\n","isPage":false,"text":"\n\nDescription: A vector database and vector similarity search engine\nKey Features:\n\nProvides efficient vector searches based on similarity, crucial for tasks like nearest-neighbor search in large datasets\nActs as a knowledge base snapshot repository, storing vectors generated from processed data and feature embeddings\n\n\n","title":"6. Vector Embeddings Database Snapshot: QdrantDB (","titles":["Tech Stack","Tools & Frameworks"]},"70":{"href":"/cli/node-deployment#rag-api-pipeline-x-gaia-node","html":"\n","isPage":true,"text":"\n","title":"RAG API Pipeline x Gaia node","titles":[]},"71":{"href":"/cli/node-deployment#quick-start-guide","html":"\n

We recommend to follow the Gaia Official quick start guide. Your Gaia node will\nbe setup in the GAIANET_BASE_DIR (default: "$HOME/gaianet") directory.

\n","isPage":false,"text":"\nWe recommend to follow the Gaia Official quick start guide. Your Gaia node will\nbe setup in the GAIANET_BASE_DIR (default: "$HOME/gaianet") directory.\n","title":"Quick start guide","titles":["RAG API Pipeline x Gaia node"]},"72":{"href":"/cli/node-deployment#deploying-your-gaia-node-in-embeddings-running-mode-️recommended","html":"\n

The rag-api-pipeline requires an embeddings model to generate vector embeddings from the API data source. At this stage, we recommend to\nstart your Gaia node in embeddings-only mode (thus consuming less resources than starting the full node) by running the following command:

\n
cd $GAIANET_BASE_DIR\nwasmedge --dir .:./dashboard --env NODE_VERSION=0.4.7 \\\n  --nn-preload embedding:GGML:AUTO:nomic-embed-text-v1.5.f16.gguf llama-api-server.wasm \\\n  --model-name Nomic-embed-text-v1.5 --model-alias embedding --prompt-template embedding \\\n  --ctx-size 8192 --batch-size 768 --web-ui ./ --socket-addr 0.0.0.0:8080
\n\n","isPage":false,"text":"\nThe rag-api-pipeline requires an embeddings model to generate vector embeddings from the API data source. At this stage, we recommend to\nstart your Gaia node in embeddings-only mode (thus consuming less resources than starting the full node) by running the following command:\ncd $GAIANET_BASE_DIR\nwasmedge --dir .:./dashboard --env NODE_VERSION=0.4.7 \\\n --nn-preload embedding:GGML:AUTO:nomic-embed-text-v1.5.f16.gguf llama-api-server.wasm \\\n --model-name Nomic-embed-text-v1.5 --model-alias embedding --prompt-template embedding \\\n --ctx-size 8192 --batch-size 768 --web-ui ./ --socket-addr 0.0.0.0:8080\n\n--nn-preload embedding:GGML:AUTO:<embeddings_model_file.gguf>: <embeddings_model_file.gguf> specifies the location of the embeddings model file\n--model-name <model_name>: specifies the embeddings model name\n--ctx-size and --batch-size should be set according to the selected embeddings model\n\n","title":"Deploying your Gaia node in embeddings running mode (⚠️Recommended)","titles":["RAG API Pipeline x Gaia node"]},"73":{"href":"/cli/node-deployment#selecting-a-knowledge-base-and-custom-prompts-for-your-gaia-node","html":"\n

In order to supplement the LLM model hosted on your Gaia node with a custom knowledge base and prompts follow the instructions outlined in this link.\nRemember to re-initialize and re-start the node after you make any configuration changes.

\n
gaianet init\ngaianet start
\n","isPage":false,"text":"\nIn order to supplement the LLM model hosted on your Gaia node with a custom knowledge base and prompts follow the instructions outlined in this link.\nRemember to re-initialize and re-start the node after you make any configuration changes.\ngaianet init\ngaianet start\n","title":"Selecting a knowledge base and custom prompts for your Gaia node","titles":["RAG API Pipeline x Gaia node"]},"74":{"href":"/cli/node-deployment#recommended-gaia-node-configuration","html":"\n

The example JSON config file from below helps you to quickly setup/deploy a Gaia node and import a knowledge base snapshot:

\n\n
{\n  "address": "your-node-address",\n  "chat": "https://huggingface.co/gaianet/Meta-Llama-3.1-8B-Instruct-GGUF/resolve/main/Meta-Llama-3.1-8B-Instruct-Q5_K_M.gguf",\n  "chat_batch_size": "64",\n  "chat_ctx_size": "8192",\n  "chat_name": "Boardroom-Llama-3-Chat",\n  "description": "Llama-3-chat model. with Boardroom API snapshot",\n  "domain": "us.gaianet.network",\n  "embedding": "https://huggingface.co/gaianet/Nomic-embed-text-v1.5-Embedding-GGUF/resolve/main/nomic-embed-text-v1.5.f16.gguf",\n  "embedding_batch_size": "2048",\n  "embedding_collection_name": "boardroom_api_collection", # this is the name of the collection where the snapshot will be imported\n  "embedding_ctx_size": "2048",\n  "embedding_name": "Nomic-embed-text-v1.5",\n  "llamaedge_port": "8080",\n  "prompt_template": "llama-3-chat",\n  "qdrant_limit": "10",\n  "qdrant_score_threshold": "0.5",\n  "rag_policy": "system-message",\n  "rag_prompt": "Use the following pieces of context to answer the user's question. Respond directly to the user with your answer, do not say 'this is the answer' or 'this is the answer' or similar language. Never mention your knowledge base or say 'according to the context' or 'hypothetical' or other similar language. Use json metadata included in knowledge base whenever possible enrich your answers. The terms `molochdao` and `moloch dao` refer to the DAO protocol where discussions and proposals are posted. If you don't know the answer, don't try to make up an answer. \\n----------------\\n",\n  "reverse_prompt": "",\n  "snapshot": "/your-snapshot-path-or-url", # snapshot tar file\n  "system_prompt": "You are an AI assistant designed to provide clear, concise, and accurate answers to user queries. Your primary functions include retrieving relevant information from the provided RAG (Retrieval-Augmented Generation) data and utilizing your pre-training data when necessary. Use json metadata included in RAG data whenever possible enrich your answers. The term `molochdao` and `moloch dao` refers to the DAO protocol where discussions and proposals are posted. If no relevant information is found, you will inform the user that you are not familiar with the knowledge."\n}
","isPage":false,"text":"\nThe example JSON config file from below helps you to quickly setup/deploy a Gaia node and import a knowledge base snapshot:\n\nTested on Mac Studio 32GB RAM\nCustom prompts for the Boardroom's MolochDAO example\nsnapshot should point to either a local tar file or to a HTTP server where the node can download a Qdrant snapshot\n\n{\n "address": "your-node-address",\n "chat": "https://huggingface.co/gaianet/Meta-Llama-3.1-8B-Instruct-GGUF/resolve/main/Meta-Llama-3.1-8B-Instruct-Q5_K_M.gguf",\n "chat_batch_size": "64",\n "chat_ctx_size": "8192",\n "chat_name": "Boardroom-Llama-3-Chat",\n "description": "Llama-3-chat model. with Boardroom API snapshot",\n "domain": "us.gaianet.network",\n "embedding": "https://huggingface.co/gaianet/Nomic-embed-text-v1.5-Embedding-GGUF/resolve/main/nomic-embed-text-v1.5.f16.gguf",\n "embedding_batch_size": "2048",\n "embedding_collection_name": "boardroom_api_collection", # this is the name of the collection where the snapshot will be imported\n "embedding_ctx_size": "2048",\n "embedding_name": "Nomic-embed-text-v1.5",\n "llamaedge_port": "8080",\n "prompt_template": "llama-3-chat",\n "qdrant_limit": "10",\n "qdrant_score_threshold": "0.5",\n "rag_policy": "system-message",\n "rag_prompt": "Use the following pieces of context to answer the user's question. Respond directly to the user with your answer, do not say 'this is the answer' or 'this is the answer' or similar language. Never mention your knowledge base or say 'according to the context' or 'hypothetical' or other similar language. Use json metadata included in knowledge base whenever possible enrich your answers. The terms `molochdao` and `moloch dao` refer to the DAO protocol where discussions and proposals are posted. If you don't know the answer, don't try to make up an answer. \\n----------------\\n",\n "reverse_prompt": "",\n "snapshot": "/your-snapshot-path-or-url", # snapshot tar file\n "system_prompt": "You are an AI assistant designed to provide clear, concise, and accurate answers to user queries. Your primary functions include retrieving relevant information from the provided RAG (Retrieval-Augmented Generation) data and utilizing your pre-training data when necessary. Use json metadata included in RAG data whenever possible enrich your answers. The term `molochdao` and `moloch dao` refers to the DAO protocol where discussions and proposals are posted. If no relevant information is found, you will inform the user that you are not familiar with the knowledge."\n}","title":"Recommended Gaia Node Configuration","titles":["RAG API Pipeline x Gaia node"]},"75":{"href":"/cli/other-llm-providers#supported-llm-providers","html":"\n

The rag-api-pipeline currently supports two types of LLM providers: openai and ollama. A Gaia node for example, uses a Rust-based RAG API Server\nto offer OpenAI-compatible web APIs for creating RAG applications.

\n

In the following sections, you'll find more details on the supported LLM providers that the pipeline currently supports and how to setup them

\n","isPage":true,"text":"\nThe rag-api-pipeline currently supports two types of LLM providers: openai and ollama. A Gaia node for example, uses a Rust-based RAG API Server\nto offer OpenAI-compatible web APIs for creating RAG applications.\nIn the following sections, you'll find more details on the supported LLM providers that the pipeline currently supports and how to setup them\n","title":"Supported LLM providers","titles":[]},"76":{"href":"/cli/other-llm-providers#openai","html":"\n

By default, the pipeline supports any LLM provider that offers OpenAI-compatible web APIs. If you wanna work with a provider other than Gaia,\nyou can setup the connection using the setup wizard via the rag-api-pipeline setup command:

\n
(venv) user$ rag-api-pipeline setup\nWhich LLM provider you want to use? (gaia, other) [gaia]: other\nInit pipeline...\n(Step 1/3) Setting Pipeline LLM provider settings...\nSelect a custom LLM provider (openai, ollama): openai\nLLM provider API URL [http://127.0.0.1:8080/v1]: https://api.openai.com/v1\nLLM provider API Key:\nLLM Provider API connection OK!\nEmbeddings model Name [Nomic-embed-text-v1.5]: text-embedding-ada-002\nEmbeddings Vector Size [768]: 2048\nPipeline LLM Provider settings OK!
\n","isPage":false,"text":"\nBy default, the pipeline supports any LLM provider that offers OpenAI-compatible web APIs. If you wanna work with a provider other than Gaia,\nyou can setup the connection using the setup wizard via the rag-api-pipeline setup command:\n(venv) user$ rag-api-pipeline setup\nWhich LLM provider you want to use? (gaia, other) [gaia]: other\nInit pipeline...\n(Step 1/3) Setting Pipeline LLM provider settings...\nSelect a custom LLM provider (openai, ollama): openai\nLLM provider API URL [http://127.0.0.1:8080/v1]: https://api.openai.com/v1\nLLM provider API Key:\nLLM Provider API connection OK!\nEmbeddings model Name [Nomic-embed-text-v1.5]: text-embedding-ada-002\nEmbeddings Vector Size [768]: 2048\nPipeline LLM Provider settings OK!\n","title":"OpenAI","titles":["Supported LLM providers"]},"77":{"href":"/cli/other-llm-providers#ollama","html":"\n

If you're planning to use the pipeline on consumer hardware that cannot handle a Gaia node running in the background, you can opt-in to use Ollama\nas LLM provider. Depending on the use case and resources available, some of the advantages of using Ollama for example are that it is more lighweight,\neasier to install and ready to use with Mac GPU devices.

\n","isPage":false,"text":"\nIf you're planning to use the pipeline on consumer hardware that cannot handle a Gaia node running in the background, you can opt-in to use Ollama\nas LLM provider. Depending on the use case and resources available, some of the advantages of using Ollama for example are that it is more lighweight,\neasier to install and ready to use with Mac GPU devices.\n","title":"Ollama","titles":["Supported LLM providers"]},"78":{"href":"/cli/other-llm-providers#getting-ollama","html":"\n

Download and install Ollama from the official website.

\n","isPage":false,"text":"\nDownload and install Ollama from the official website.\n","title":"Getting Ollama","titles":["Supported LLM providers","Ollama"]},"79":{"href":"/cli/other-llm-providers#importing-an-embeddings-model-in-ollama","html":"\n","isPage":false,"text":"\n","title":"Importing an Embeddings Model in Ollama","titles":["Supported LLM providers","Ollama"]},"80":{"href":"/cli/other-llm-providers#using-the-cli-setup-wizard","html":"\n

Using the rag-api-pipeline setup command, you can easily set the connection to Ollama and even load the embeddings model if it's not imported already.

\n
(venv) user$ rag-api-pipeline setup\nWhich LLM provider you want to use? (gaia, other) [gaia]: other\nInit pipeline...\n(Step 1/3) Setting Pipeline LLM provider settings...\nSelect a custom LLM provider (openai, ollama): ollama\nLLM provider API URL [http://127.0.0.1:11434]:\nERROR: LLM Provider API (@ http://127.0.0.1:11434/v1/models) is down. HTTPConnectionPool(host='127.0.0.1', port=11434): Max retries exceeded with url: /v1/models (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x1091c2490>: Failed to establish a new connection: [Errno 61] Connection refused'))\nTry again...\nLLM provider API URL [http://127.0.0.1:11434]:\nLLM Provider API connection OK!\nEmbeddings model Name [Nomic-embed-text-v1.5]:\nEmbeddings Vector Size [768]:\nEnter the Absolute Path to the Embeddings model file: /home/user/rag-api-pipeline/models/nomic-embed-text-v1.5.f16.gguf\nImporting embeddings model into Ollama...\nPipeline LLM Provider settings OK!
\n","isPage":false,"text":"\nUsing the rag-api-pipeline setup command, you can easily set the connection to Ollama and even load the embeddings model if it's not imported already.\n(venv) user$ rag-api-pipeline setup\nWhich LLM provider you want to use? (gaia, other) [gaia]: other\nInit pipeline...\n(Step 1/3) Setting Pipeline LLM provider settings...\nSelect a custom LLM provider (openai, ollama): ollama\nLLM provider API URL [http://127.0.0.1:11434]:\nERROR: LLM Provider API (@ http://127.0.0.1:11434/v1/models) is down. HTTPConnectionPool(host='127.0.0.1', port=11434): Max retries exceeded with url: /v1/models (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x1091c2490>: Failed to establish a new connection: [Errno 61] Connection refused'))\nTry again...\nLLM provider API URL [http://127.0.0.1:11434]:\nLLM Provider API connection OK!\nEmbeddings model Name [Nomic-embed-text-v1.5]:\nEmbeddings Vector Size [768]:\nEnter the Absolute Path to the Embeddings model file: /home/user/rag-api-pipeline/models/nomic-embed-text-v1.5.f16.gguf\nImporting embeddings model into Ollama...\nPipeline LLM Provider settings OK!\n","title":"Using the CLI Setup Wizard","titles":["Supported LLM providers","Ollama"]},"81":{"href":"/cli/other-llm-providers#manually-importing-a-model","html":"\n
    \n
  1. Download the embeddings model of your preference (e.g. from HuggingFace)
  2. \n
  3. Create Modelfile to use the embedding model with Ollama. Learn more about Ollama Modelfile format here
  4. \n
\n
FROM ./nomic-embed-text-v1.5.f16.gguf # this is the path to the embedding model
\n
    \n
  1. Import the model into Ollama using the ollama CLI
  2. \n
\n
ollama create <model-name> -f <Modelfile>
","isPage":false,"text":"\n\nDownload the embeddings model of your preference (e.g. from HuggingFace)\nCreate Modelfile to use the embedding model with Ollama. Learn more about Ollama Modelfile format here\n\nFROM ./nomic-embed-text-v1.5.f16.gguf # this is the path to the embedding model\n\nImport the model into Ollama using the ollama CLI\n\nollama create <model-name> -f <Modelfile>","title":"Manually Importing a Model","titles":["Supported LLM providers","Ollama"]},"82":{"href":"/cli/reference#rag-api-pipeline-cli-reference-documentation","html":"\n","isPage":true,"text":"\n","title":"RAG API Pipeline CLI Reference Documentation","titles":[]},"83":{"href":"/cli/reference#overview","html":"\n

The CLI tool provides functionality for running a RAG (Retrieval-Augmented Generation) API pipeline. It offers various commands to execute different stages of the pipeline, from data extraction to embedding generation.

\n","isPage":false,"text":"\nThe CLI tool provides functionality for running a RAG (Retrieval-Augmented Generation) API pipeline. It offers various commands to execute different stages of the pipeline, from data extraction to embedding generation.\n","title":"Overview","titles":["RAG API Pipeline CLI Reference Documentation"]},"84":{"href":"/cli/reference#installation","html":"\n

This project uses Poetry for dependency management. To install the project and all its dependencies:

\n
    \n
  1. Ensure you have Poetry installed. If not, install it by following the instructions here
  2. \n
  3. Clone the repository:\n
    git clone https://github.com/raid-guild/gaianet-rag-api-pipeline\ncd gaianet-rag-api-pipeline
    \n
  4. \n
  5. Install dependencies:\n
      \n
    • Using pip (production-mode):\n
          pip install -e .
      \n
    • \n
    • Using Poetry (development-mode):\n
      poetry install
      \n
    • \n
    \n
  6. \n
  7. Check the rag-api-pipeline CLI is available:\n
      \n
    • Production mode:\n
          rag-api-pipeline --help
      \n
    • \n
    • Development mode:\n
          poetry run rag-api-pipeline --help
      \n
    • \n
    \n
  8. \n
\n","isPage":false,"text":"\nThis project uses Poetry for dependency management. To install the project and all its dependencies:\n\nEnsure you have Poetry installed. If not, install it by following the instructions here\nClone the repository:\ngit clone https://github.com/raid-guild/gaianet-rag-api-pipeline\ncd gaianet-rag-api-pipeline\n\nInstall dependencies:\n\nUsing pip (production-mode):\n pip install -e .\n\nUsing Poetry (development-mode):\npoetry install\n\n\n\nCheck the rag-api-pipeline CLI is available:\n\nProduction mode:\n rag-api-pipeline --help\n\nDevelopment mode:\n poetry run rag-api-pipeline --help\n\n\n\n\n","title":"Installation","titles":["RAG API Pipeline CLI Reference Documentation"]},"85":{"href":"/cli/reference#usage","html":"\n
(venv) user$ rag-api-pipeline --help\nUsage: rag-api-pipeline [OPTIONS] COMMAND [ARGS]...\n \n  Command-line interface (CLI) for the RAG API pipeline.\n \nOptions:\n  --help  Show this message and exit.\n \nCommands:\n  setup  Setup wizard to config the pipeline settings prior execution\n  run    Execute RAG API pipeline tasks.
\n","isPage":false,"text":"\n(venv) user$ rag-api-pipeline --help\nUsage: rag-api-pipeline [OPTIONS] COMMAND [ARGS]...\n \n Command-line interface (CLI) for the RAG API pipeline.\n \nOptions:\n --help Show this message and exit.\n \nCommands:\n setup Setup wizard to config the pipeline settings prior execution\n run Execute RAG API pipeline tasks.\n","title":"Usage","titles":["RAG API Pipeline CLI Reference Documentation"]},"86":{"href":"/cli/reference#setup","html":"\n
(venv) user$ rag-api-pipeline setup --help\nUsage: rag-api-pipeline setup [OPTIONS]\n \n  Setup wizard to config the pipeline settings prior execution\n \nOptions:\n  --debug                      enable logging debug level\n  --llm-provider [gaia|other]  LLM provider  [default: gaia]\n  --help                       Show this message and exit.
\n","isPage":false,"text":"\n(venv) user$ rag-api-pipeline setup --help\nUsage: rag-api-pipeline setup [OPTIONS]\n \n Setup wizard to config the pipeline settings prior execution\n \nOptions:\n --debug enable logging debug level\n --llm-provider [gaia|other] LLM provider [default: gaia]\n --help Show this message and exit.\n","title":"setup","titles":["RAG API Pipeline CLI Reference Documentation","Usage"]},"87":{"href":"/cli/reference#options","html":"\n\n","isPage":false,"text":"\n\n--debug: Enable logging at debug level. Useful for development purposes\n--llm-provider [gaia|other]: Embedding model provider (default: gaia). Check the Other LLM Providers section\nfor details on supported LLM engines.\n\n","title":"Options","titles":["RAG API Pipeline CLI Reference Documentation","Usage"]},"88":{"href":"/cli/reference#run","html":"\n
(venv) user$ rag-api-pipeline run --help\nUsage: rag-api-pipeline run [OPTIONS] COMMAND [ARGS]...\n \n  Execute RAG API pipeline tasks.\n \nOptions:\n  --debug  enable logging debug level\n  --help   Show this message and exit.\n \nCommands:\n  all              Run the complete RAG API Pipeline.\n  from-chunked     Execute the RAG API pipeline from chunked data.\n  from-normalized  Execute the RAG API pipeline from normalized data.
\n","isPage":false,"text":"\n(venv) user$ rag-api-pipeline run --help\nUsage: rag-api-pipeline run [OPTIONS] COMMAND [ARGS]...\n \n Execute RAG API pipeline tasks.\n \nOptions:\n --debug enable logging debug level\n --help Show this message and exit.\n \nCommands:\n all Run the complete RAG API Pipeline.\n from-chunked Execute the RAG API pipeline from chunked data.\n from-normalized Execute the RAG API pipeline from normalized data.\n","title":"run","titles":["RAG API Pipeline CLI Reference Documentation","Usage"]},"89":{"href":"/cli/reference#global-options","html":"\n\n","isPage":false,"text":"\n\n--debug: Enable logging at debug level. Useful for development purposes\n\n","title":"Global Options","titles":["RAG API Pipeline CLI Reference Documentation","Usage"]},"90":{"href":"/cli/reference#pipeline-commands","html":"\n

Prior executing any of the commands listed below, it validates that the the pipeline is already setup (config/.env file exists) and\nthe required services (LLM Provider + QdrantDB) are up and running. Otherwise, you will receive one of the following error messages:

\n\n","isPage":false,"text":"\nPrior executing any of the commands listed below, it validates that the the pipeline is already setup (config/.env file exists) and\nthe required services (LLM Provider + QdrantDB) are up and running. Otherwise, you will receive one of the following error messages:\n\nERROR: config/.env file not found. rag-api-pipeline setup should be run first.\nERROR: LLM Provider openai (http://localhost:8080/v1/models) is down.\nERROR: QdrantDB (http://localhost:6333) is down.\n\n","title":"Pipeline Commands","titles":["RAG API Pipeline CLI Reference Documentation"]},"91":{"href":"/cli/reference#run-all","html":"\n

Executes the entire RAG pipeline including API endpoint data streams, data normalization, data chunking, vector embeddings and\ndatabase snapshot generation.

\n
(venv) user$ rag-api-pipeline run all --help\nUsage: rag-api-pipeline run all [OPTIONS] API_MANIFEST_FILE OPENAPI_SPEC_FILE\n \n  Run the complete RAG API Pipeline.\n \n  API_MANIFEST_FILE Path to the API manifest YAML file that defines pipeline\n  config settings and API endpoints.\n \n  OPENAPI_SPEC_FILE Path to the OpenAPI YAML specification file.\n \nOptions:\n  --api-key TEXT                  API Auth key\n  --source-manifest-file PATH     Source YAML manifest\n  --full-refresh                  Clean up cache and extract API data from\n                                  scratch\n  --normalized-only               Run pipeline until the normalized data stage\n  --chunked-only                  Run pipeline until the chunked data stage\n  --help                          Show this message and exit.
\n","isPage":false,"text":"\nExecutes the entire RAG pipeline including API endpoint data streams, data normalization, data chunking, vector embeddings and\ndatabase snapshot generation.\n(venv) user$ rag-api-pipeline run all --help\nUsage: rag-api-pipeline run all [OPTIONS] API_MANIFEST_FILE OPENAPI_SPEC_FILE\n \n Run the complete RAG API Pipeline.\n \n API_MANIFEST_FILE Path to the API manifest YAML file that defines pipeline\n config settings and API endpoints.\n \n OPENAPI_SPEC_FILE Path to the OpenAPI YAML specification file.\n \nOptions:\n --api-key TEXT API Auth key\n --source-manifest-file PATH Source YAML manifest\n --full-refresh Clean up cache and extract API data from\n scratch\n --normalized-only Run pipeline until the normalized data stage\n --chunked-only Run pipeline until the chunked data stage\n --help Show this message and exit.\n","title":"run all","titles":["RAG API Pipeline CLI Reference Documentation","Pipeline Commands"]},"92":{"href":"/cli/reference#arguments","html":"\n\n","isPage":false,"text":"\n\nAPI_MANIFEST_FILE: Pipeline YAML manifest that defines the Pipeline config settings and API endpoints to extract.\nOPENAPI_SPEC_FILE: OpenAPI YAML spec file.\n\n","title":"Arguments","titles":["RAG API Pipeline CLI Reference Documentation","Pipeline Commands","run all"]},"93":{"href":"/cli/reference#options-1","html":"\n\n","isPage":false,"text":"\n\n--api-key TEXT: API Auth key. If specified, it overrides the pipeline settings.\n--source-manifest-file FILE: Airbyte's Source Connector YAML manifest. If specified, it skips the connector manifest generation stage\nand will use this file to start the API data extraction.\n--full-refresh: Clean up cache and extract API data from scratch\n--normalized-only: Run the pipeline process until the normalized data stage\n--chunked-only: Run the pipeline process until the chunked data stage\n\n","title":"Options","titles":["RAG API Pipeline CLI Reference Documentation","Pipeline Commands","run all"]},"94":{"href":"/cli/reference#run-from-normalized","html":"\n

Executes the RAG data pipeline using an already normalized JSONL dataset.

\n
(venv) user$ rag-api-pipeline run from-normalized --help\nUsage: rag-api-pipeline run from-normalized [OPTIONS] API_MANIFEST_FILE\n \n  Execute the RAG API pipeline from normalized data.\n \n  API_MANIFEST_FILE Path to the API manifest YAML file that defines pipeline\n  config settings and API endpoints.\n \nOptions:\n  --normalized-data-file PATH  Normalized data in JSONL format  [required]\n  --help                       Show this message and exit.
\n","isPage":false,"text":"\nExecutes the RAG data pipeline using an already normalized JSONL dataset.\n(venv) user$ rag-api-pipeline run from-normalized --help\nUsage: rag-api-pipeline run from-normalized [OPTIONS] API_MANIFEST_FILE\n \n Execute the RAG API pipeline from normalized data.\n \n API_MANIFEST_FILE Path to the API manifest YAML file that defines pipeline\n config settings and API endpoints.\n \nOptions:\n --normalized-data-file PATH Normalized data in JSONL format [required]\n --help Show this message and exit.\n","title":"run from-normalized","titles":["RAG API Pipeline CLI Reference Documentation","Pipeline Commands"]},"95":{"href":"/cli/reference#arguments-1","html":"\n\n","isPage":false,"text":"\n\nAPI_MANIFEST_FILE: Pipeline YAML manifest that defines the Pipeline config settings.\n\n","title":"Arguments","titles":["RAG API Pipeline CLI Reference Documentation","Pipeline Commands","run from-normalized"]},"96":{"href":"/cli/reference#options-2","html":"\n\n","isPage":false,"text":"\n\n--normalized-data-file FILE (required): Normalized data in JSONL format.\n\n","title":"Options","titles":["RAG API Pipeline CLI Reference Documentation","Pipeline Commands","run from-normalized"]},"97":{"href":"/cli/reference#run-from-chunked","html":"\n

Executes the RAG data pipeline using an already chunked dataset in JSONL format.

\n
(venv) user$ rag-api-pipeline run from-chunked --help\nUsage: rag-api-pipeline run from-chunked [OPTIONS] API_MANIFEST_FILE\n \n  Execute the RAG API pipeline from chunked data.\n \n  API_MANIFEST_FILE Path to the API manifest YAML file that defines pipeline\n  config settings and API endpoints.\n \nOptions:\n  --chunked-data-file PATH  Chunked data in JSONL format  [required]\n  --help                    Show this message and exit.
\n","isPage":false,"text":"\nExecutes the RAG data pipeline using an already chunked dataset in JSONL format.\n(venv) user$ rag-api-pipeline run from-chunked --help\nUsage: rag-api-pipeline run from-chunked [OPTIONS] API_MANIFEST_FILE\n \n Execute the RAG API pipeline from chunked data.\n \n API_MANIFEST_FILE Path to the API manifest YAML file that defines pipeline\n config settings and API endpoints.\n \nOptions:\n --chunked-data-file PATH Chunked data in JSONL format [required]\n --help Show this message and exit.\n","title":"run from-chunked","titles":["RAG API Pipeline CLI Reference Documentation","Pipeline Commands"]},"98":{"href":"/cli/reference#arguments-2","html":"\n\n","isPage":false,"text":"\n\nAPI_MANIFEST_FILE: Pipeline YAML manifest that defines the Pipeline config settings and API endpoints to extract.\n\n","title":"Arguments","titles":["RAG API Pipeline CLI Reference Documentation","Pipeline Commands","run from-chunked"]},"99":{"href":"/cli/reference#options-3","html":"\n\n","isPage":false,"text":"\n\n--chunked-data-file FILE (required): Chunked data in JSONL format.\n\n","title":"Options","titles":["RAG API Pipeline CLI Reference Documentation","Pipeline Commands","run from-chunked"]},"100":{"href":"/cli/reference#examples","html":"\n
    \n
  1. Clean up cachen and run the complete pipeline:
  2. \n
\n
rag-api-pipeline run all config/boardroom_api_pipeline.yaml config/boardroom_openapi.yaml --full-refresh
\n
    \n
  1. Run the pipeline and stop executing after data normalization:
  2. \n
\n
rag-api-pipeline run all config/boardroom_api_pipeline.yaml config/boardroom_openapi.yaml --normalized-only
\n
    \n
  1. Run the pipeline from normalized data:
  2. \n
\n
rag-api-pipeline run from-normalized config/boardroom_api_pipeline.yaml --normalized-data-file path/to/normalized_data.jsonl
\n
    \n
  1. Run the pipeline from chunked data:
  2. \n
\n
rag-api-pipeline run from-chunked config/boardroom_api_pipeline.yaml --chunked-data-file path/to/chunked_data.jsonl
\n","isPage":false,"text":"\n\nClean up cachen and run the complete pipeline:\n\nrag-api-pipeline run all config/boardroom_api_pipeline.yaml config/boardroom_openapi.yaml --full-refresh\n\nRun the pipeline and stop executing after data normalization:\n\nrag-api-pipeline run all config/boardroom_api_pipeline.yaml config/boardroom_openapi.yaml --normalized-only\n\nRun the pipeline from normalized data:\n\nrag-api-pipeline run from-normalized config/boardroom_api_pipeline.yaml --normalized-data-file path/to/normalized_data.jsonl\n\nRun the pipeline from chunked data:\n\nrag-api-pipeline run from-chunked config/boardroom_api_pipeline.yaml --chunked-data-file path/to/chunked_data.jsonl\n","title":"Examples","titles":["RAG API Pipeline CLI Reference Documentation"]},"101":{"href":"/cli/reference#cli-outputs","html":"\n

Cached API stream data and results produced from running any of the rag-api-pipeline run commands are stored in the output/<api_name> folder.\nThe following files and folders are created by the tool within this baseDir folder:

\n","isPage":false,"text":"\nCached API stream data and results produced from running any of the rag-api-pipeline run commands are stored in the output/<api_name> folder.\nThe following files and folders are created by the tool within this baseDir folder:\n\n{baseDir}/{api_name}_source_generated.yaml: generated Airbyte Stream connector manifest.\n{baseDir}/cache/{api_name}/*: extracted API data is cached into a local DuckDB. Database files are stored in this directory. If the --full-refresh argument\nis specified on the run all command, the cache will be cleared and API data will be extracted from scratch.\n{baseDir}/{api_name}_stream_{x}_preprocessed.jsonl: data streams from each API endpoint are preprocessed and stored in JSONL format.\n{baseDir}/{api_name}_normalized.jsonl: preprocessed data streams from each API endpoint are joined together and stored in JSONL format.\n{baseDir}/{api_name}_chunked.jsonl: normalized data that goes through the data chunking stage is then stored in JSONL format.\n{baseDir}/{api_name}_collection-xxxxxxxxxxxxxxxx-yyyy-mm-dd-hh-mm-ss.snapshot: vector embeddings snapshot file that was exported from Qdrant DB.\n{baseDir}/{api_name}_collection-xxxxxxxxxxxxxxxx-yyyy-mm-dd-hh-mm-ss.snapshot.tar.gz: compressed knowledge base that contains the vector embeddings snapshot.\n","title":"CLI Outputs","titles":["RAG API Pipeline CLI Reference Documentation"]},"102":{"href":"/cli/settings#customizing-the-pipeline-config-settings","html":"\n

Most of the pipeline configuration settings are set by running the setup wizard via rag-api-pipeline setup command. However, there are\nmore advanced features that can be also set via environment variables in config/.env.

\n","isPage":true,"text":"\nMost of the pipeline configuration settings are set by running the setup wizard via rag-api-pipeline setup command. However, there are\nmore advanced features that can be also set via environment variables in config/.env.\n","title":"Customizing the Pipeline Config Settings","titles":[]},"103":{"href":"/cli/settings#environment-variables","html":"\n

The following environment variables can be adjusted in config/.env based on the use case requirements:

\n","isPage":false,"text":"\nThe following environment variables can be adjusted in config/.env based on the use case requirements:\n\nPipeline config parameters:\n\nAPI_DATA_ENCODING: data encoding used by the REST API\n\nDefault value: utf-8\n\n\nOUTPUT_FOLDER: output folder where cached data streams, intermediary stage results and generated knowledge base snapshot are stored\n\nDefault value: ./output\n\n\n\n\nLLM provider settings:\n\nLLM_API_BASE_URL: LLM provider base URL (defaults to a local openai-based provider such as gaia node)\n\nDefault value: http://localhost:8080/v1\n\n\nLLM_API_KEY: API key for authenticated requests to the LLM provider\n\nDefault value: empty-api-key\n\n\nLLM_EMBEDDINGS_MODEL: name of the embeddings model to be consumed through the LLM provider\n\nDefault value: Nomic-embed-text-v1.5\n\n\nLLM_EMBEDDINGS_VECTOR_SIZE: embeddings vector size\n\nDefault value: 768\n\n\nLLM_PROVIDER: LLM provider backend to use. It can be either openai or ollama (Gaia offers an OpenAI-compatible API)\n\nDefault value: openai\n\n\n\n\nQdrant DB settings:\n\nQDRANTDB_URL: Qdrant DB base URL\n\nDefault value: http://localhost:6333\n\n\nQDRANTDB_TIMEOUT: timeout for requests made to the Qdrant DB\n\nDefault value: 60\n\n\nQDRANTDB_DISTANCE_FN: score function to use during vector similarity search. Available functions: ['COSINE', 'EUCLID', 'DOT', 'MANHATTAN']\n\nDefault value: COSINE\n\n\n\n\nPathway-related variables:\n\nAUTOCOMMIT_DURATION_MS: the maximum time between two commits. Every autocommit_duration_ms milliseconds, the updates received by the connector are\ncommitted automatically and pushed into Pathway's dataflow. More information can be found here\n\nDefault value: 1000\n\n\nFixedDelayRetryStrategy (docs) config parameters:\n\nPATHWAY_RETRY_MAX_ATTEMPTS: max retries to be performed if a UDF async execution fails\n\nDefault value: 10\n\n\nPATHWAY_RETRY_DELAY_MS: delay in milliseconds to wait for the next execution attempt\n\nDefault value: 1000\n\n\n\n\nUDF async execution: set the maximum number of concurrent operations per batch during UDF async execution. Zero means no specific limits. Be careful when setting\nthese parameters for the embeddings stage as it could break the LLM provider with too many concurrent requests\n\nCHUNKING_BATCH_CAPACITY: max number of concurrent operations during data chunking operations\n\nDefault value: 0\n\n\nEMBEDDINGS_BATCH_CAPACITY: max number of concurrent operations during vector embeddings operations\n\nDefault value: 15\n\n\n\n\n\n\n","title":"Environment variables","titles":["Customizing the Pipeline Config Settings"]},"104":{"href":"/cli/setup#rag-api-pipeline---setup","html":"\n

The rag-api-pipeline CLI offers a setup wizard command that allows you to quickly setup the pipeline settings so you can start creating\nRAG API pipelines in a few seconds. Below is an overview of the command options:

\n
(venv) user$ rag-api-pipeline setup --help\nUsage: rag-api-pipeline setup [OPTIONS]\n \n  Setup wizard to config the pipeline settings prior execution\n \nOptions:\n  --debug                      enable logging debug level\n  --llm-provider [gaia|other]  LLM provider  [default: gaia]\n  --help                       Show this message and exit.
\n

The setup wizard is a three stage process that request you to set some configuration parameters required for the pipeline to execute. For\neach parameter, the wizard suggests a default value/configuration that can be automatically used by hitting the enter key.

\n

Example:

\n
(venv) user$ rag-api-pipeline setup\nWhich LLM provider you want to use? (gaia, other) [gaia]:\nInit pipeline...\n(Step 1/3) Setting Pipeline LLM provider settings...\nLLM provider API URL [http://127.0.0.1:8080/v1]: https://0xd0275a4f8ef0d4b2dc0a3baf3d405a63bc647340.us.gaianet.network/v1\nLLM Provider API connection OK!\nEmbeddings model Name [Nomic-embed-text-v1.5]:\nEmbeddings Vector Size [768]:\nPipeline LLM Provider settings OK!\n(Step 2/3) Setting API Source settings...\nREST API Key:\nAPI Key stored in config/secrets/api_key\n(Step 3/3) Setting Vector DB settings...\nDo you have a running QdrantDB instance? [y/N]:\nChecking Docker settings...\nDocker requirements OK!\nStarting a QdrantDB instance using Docker....\n \n Network gaia-rag-api_rag_api_pipeline_network  Creating\n Network gaia-rag-api_rag_api_pipeline_network  Created\n Container gaia-rag-api-qdrant-1  Creating\n Container gaia-rag-api-qdrant-1  Created\n Container gaia-rag-api-qdrant-1  Starting\n Container gaia-rag-api-qdrant-1  Started\n \nPipeline Setup completed!\n \n            You can use the pipeline by running either rag-api-pipeline run --help\n            or docker compose run pipeline --help
\n

You can run the setup command as many times as you want. If the pipeline was already setup, the CLI will prompt you with a confirmation\nmessage to cleanup previous configurations:

\n
Init pipeline...\nA .env file already exists in config/.env\nDo you want to init the pipeline configuration from scratch? [y/N]: y
\n
    \n
  1. Set the LLM Provider
  2. \n
\n

By default, the RAG API pipeline is setup to integrate with a Gaia node to use a loaded embeddings model for\ngenerating vector embeddings from extracted content. We recommend reading the guide on how to spin up your own\nGaia node, or check the documentation on supported LLM Providers.

\n
(venv) user$ rag-api-pipeline setup\nWhich LLM provider you want to use? (gaia, other) [gaia]:\nInit pipeline...
\n

The Next step is to provide the Gaia node Base URI. Under the hood, the CLI validates it can connect to the node API, otherwise it will\nprompt you the error:

\n
(Step 1/3) Setting Pipeline LLM provider settings...\nLLM provider API URL [http://127.0.0.1:8080/v1]:\nERROR: LLM Provider API (@ http://127.0.0.1:8080/v1/models) is down. HTTPConnectionPool(host='127.0.0.1', port=8080): Max retries exceeded with url: /v1/models (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x110893c90>: Failed to establish a new connection: [Errno 61] Connection refused'))\nTry again...\nLLM provider API URL [http://127.0.0.1:8080/v1]:
\n

Finally, you'll need to specify the embeddings model name and embeddings vector size:

\n
LLM provider API URL [http://127.0.0.1:8080/v1]: https://0xd0275a4f8ef0d4b2dc0a3baf3d405a63bc647340.us.gaianet.network/v1\nLLM Provider API connection OK!\nEmbeddings model Name [Nomic-embed-text-v1.5]:\nEmbeddings Vector Size [768]:\nPipeline LLM Provider settings OK!
\n
    \n
  1. Set Source API Settings
  2. \n
\n

In this stage, you are required to specify the API Key that will be used to make authenticated requests to your target REST API. This value\nwill be stored in the secrets folder.

\n
(Step 2/3) Setting API Source settings...\nREST API Key:\nAPI Key stored in config/secrets/api_key
\n
    \n
  1. Set Vector Database Settings
  2. \n
\n

The final stage is in charge of configuring connection to the Vector Database. If you already have a QdrantDB instance running somewhere,\nyou can specify the Server URL. The CLI validates it can connect to the service instance, otherwise it will prompt you the error:

\n
(Step 3/3) Setting Vector DB settings...\nDo you have a running QdrantDB instance? [y/N]: y\nEnter your Qdrant Server URL [http://127.0.0.1:6333]:\nERROR: QdrantDB (@ http://127.0.0.1:6333) is down. HTTPConnectionPool(host='127.0.0.1', port=6333): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x105873910>: Failed to establish a new connection: [Errno 61] Connection refused'))\nTry again...\nEnter your Qdrant Server URL [http://127.0.0.1:6333]:
\n

If you don't have a running QdrantDB instance, the CLI will attempt to spin up one using Docker. During this process, the CLI validates\nthe host computer has the Docker daemon is installed and running, otherwise it will prompt you the error:

\n
(Step 3/3) Setting Vector DB settings...\nDo you have a running QdrantDB instance? [y/N]:\nChecking Docker settings...\nERROR: Docker daemon is not running. Please start Docker before proceeding\nDo you want to try again? [Y/n]:
\n

If docker is available, it will deploy and start a QdrantDB container using docker-compose (or will omit this step is the container is already running).

\n
Do you have a running QdrantDB instance? [y/N]:\nChecking Docker settings...\nDocker requirements OK!\nStarting a QdrantDB instance using Docker....\n \n Network gaia-rag-api_rag_api_pipeline_network  Creating\n Network gaia-rag-api_rag_api_pipeline_network  Created\n Container gaia-rag-api-qdrant-1  Creating\n Container gaia-rag-api-qdrant-1  Created\n Container gaia-rag-api-qdrant-1  Starting\n Container gaia-rag-api-qdrant-1  Started
\n

At the end, you'll see a Pipeline Setup completed! message, confirming that all selected settings will be stored in the config/.env file.

\n

Now, you're ready to start using the RAG API pipeline by running either rag-api-pipeline run or docker compose run pipeline command.\nIn the next section, you can find the complete CLI reference for each subcommand or task available in the pipeline.

","isPage":true,"text":"\nThe rag-api-pipeline CLI offers a setup wizard command that allows you to quickly setup the pipeline settings so you can start creating\nRAG API pipelines in a few seconds. Below is an overview of the command options:\n(venv) user$ rag-api-pipeline setup --help\nUsage: rag-api-pipeline setup [OPTIONS]\n \n Setup wizard to config the pipeline settings prior execution\n \nOptions:\n --debug enable logging debug level\n --llm-provider [gaia|other] LLM provider [default: gaia]\n --help Show this message and exit.\nThe setup wizard is a three stage process that request you to set some configuration parameters required for the pipeline to execute. For\neach parameter, the wizard suggests a default value/configuration that can be automatically used by hitting the enter key.\nExample:\n(venv) user$ rag-api-pipeline setup\nWhich LLM provider you want to use? (gaia, other) [gaia]:\nInit pipeline...\n(Step 1/3) Setting Pipeline LLM provider settings...\nLLM provider API URL [http://127.0.0.1:8080/v1]: https://0xd0275a4f8ef0d4b2dc0a3baf3d405a63bc647340.us.gaianet.network/v1\nLLM Provider API connection OK!\nEmbeddings model Name [Nomic-embed-text-v1.5]:\nEmbeddings Vector Size [768]:\nPipeline LLM Provider settings OK!\n(Step 2/3) Setting API Source settings...\nREST API Key:\nAPI Key stored in config/secrets/api_key\n(Step 3/3) Setting Vector DB settings...\nDo you have a running QdrantDB instance? [y/N]:\nChecking Docker settings...\nDocker requirements OK!\nStarting a QdrantDB instance using Docker....\n \n Network gaia-rag-api_rag_api_pipeline_network Creating\n Network gaia-rag-api_rag_api_pipeline_network Created\n Container gaia-rag-api-qdrant-1 Creating\n Container gaia-rag-api-qdrant-1 Created\n Container gaia-rag-api-qdrant-1 Starting\n Container gaia-rag-api-qdrant-1 Started\n \nPipeline Setup completed!\n \n You can use the pipeline by running either rag-api-pipeline run --help\n or docker compose run pipeline --help\nYou can run the setup command as many times as you want. If the pipeline was already setup, the CLI will prompt you with a confirmation\nmessage to cleanup previous configurations:\nInit pipeline...\nA .env file already exists in config/.env\nDo you want to init the pipeline configuration from scratch? [y/N]: y\n\nSet the LLM Provider\n\nBy default, the RAG API pipeline is setup to integrate with a Gaia node to use a loaded embeddings model for\ngenerating vector embeddings from extracted content. We recommend reading the guide on how to spin up your own\nGaia node, or check the documentation on supported LLM Providers.\n(venv) user$ rag-api-pipeline setup\nWhich LLM provider you want to use? (gaia, other) [gaia]:\nInit pipeline...\nThe Next step is to provide the Gaia node Base URI. Under the hood, the CLI validates it can connect to the node API, otherwise it will\nprompt you the error:\n(Step 1/3) Setting Pipeline LLM provider settings...\nLLM provider API URL [http://127.0.0.1:8080/v1]:\nERROR: LLM Provider API (@ http://127.0.0.1:8080/v1/models) is down. HTTPConnectionPool(host='127.0.0.1', port=8080): Max retries exceeded with url: /v1/models (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x110893c90>: Failed to establish a new connection: [Errno 61] Connection refused'))\nTry again...\nLLM provider API URL [http://127.0.0.1:8080/v1]:\nFinally, you'll need to specify the embeddings model name and embeddings vector size:\nLLM provider API URL [http://127.0.0.1:8080/v1]: https://0xd0275a4f8ef0d4b2dc0a3baf3d405a63bc647340.us.gaianet.network/v1\nLLM Provider API connection OK!\nEmbeddings model Name [Nomic-embed-text-v1.5]:\nEmbeddings Vector Size [768]:\nPipeline LLM Provider settings OK!\n\nSet Source API Settings\n\nIn this stage, you are required to specify the API Key that will be used to make authenticated requests to your target REST API. This value\nwill be stored in the secrets folder.\n(Step 2/3) Setting API Source settings...\nREST API Key:\nAPI Key stored in config/secrets/api_key\n\nSet Vector Database Settings\n\nThe final stage is in charge of configuring connection to the Vector Database. If you already have a QdrantDB instance running somewhere,\nyou can specify the Server URL. The CLI validates it can connect to the service instance, otherwise it will prompt you the error:\n(Step 3/3) Setting Vector DB settings...\nDo you have a running QdrantDB instance? [y/N]: y\nEnter your Qdrant Server URL [http://127.0.0.1:6333]:\nERROR: QdrantDB (@ http://127.0.0.1:6333) is down. HTTPConnectionPool(host='127.0.0.1', port=6333): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x105873910>: Failed to establish a new connection: [Errno 61] Connection refused'))\nTry again...\nEnter your Qdrant Server URL [http://127.0.0.1:6333]:\nIf you don't have a running QdrantDB instance, the CLI will attempt to spin up one using Docker. During this process, the CLI validates\nthe host computer has the Docker daemon is installed and running, otherwise it will prompt you the error:\n(Step 3/3) Setting Vector DB settings...\nDo you have a running QdrantDB instance? [y/N]:\nChecking Docker settings...\nERROR: Docker daemon is not running. Please start Docker before proceeding\nDo you want to try again? [Y/n]:\nIf docker is available, it will deploy and start a QdrantDB container using docker-compose (or will omit this step is the container is already running).\nDo you have a running QdrantDB instance? [y/N]:\nChecking Docker settings...\nDocker requirements OK!\nStarting a QdrantDB instance using Docker....\n \n Network gaia-rag-api_rag_api_pipeline_network Creating\n Network gaia-rag-api_rag_api_pipeline_network Created\n Container gaia-rag-api-qdrant-1 Creating\n Container gaia-rag-api-qdrant-1 Created\n Container gaia-rag-api-qdrant-1 Starting\n Container gaia-rag-api-qdrant-1 Started\nAt the end, you'll see a Pipeline Setup completed! message, confirming that all selected settings will be stored in the config/.env file.\nNow, you're ready to start using the RAG API pipeline by running either rag-api-pipeline run or docker compose run pipeline command.\nIn the next section, you can find the complete CLI reference for each subcommand or task available in the pipeline.","title":"RAG API Pipeline - Setup","titles":[]},"105":{"href":"/manifest-definition/overview#api-pipeline-manifest---overview","html":"\n

The rag-api-pipeline utilizes Airbyte's CDK low-code framework to create source connectors for REST APIs.\nUnder the hood, it generates a declarative stream manifest in YAML format using\ntwo specification files:

\n
    \n
  1. A well-defined OpenAPI specification for the target REST API: most API providers publish their OpenAPI-based schema definitions in their site.\nIn case it is unavailable, various tools are available online to help you generate or convert an API spec schemas into the required format.
  2. \n
  3. A source RAG API pipeline manifest: you'll learn how to define it in the next section.
  4. \n
\n","isPage":true,"text":"\nThe rag-api-pipeline utilizes Airbyte's CDK low-code framework to create source connectors for REST APIs.\nUnder the hood, it generates a declarative stream manifest in YAML format using\ntwo specification files:\n\nA well-defined OpenAPI specification for the target REST API: most API providers publish their OpenAPI-based schema definitions in their site.\nIn case it is unavailable, various tools are available online to help you generate or convert an API spec schemas into the required format.\nA source RAG API pipeline manifest: you'll learn how to define it in the next section.\n\n","title":"API Pipeline Manifest - Overview","titles":[]},"106":{"href":"/manifest-definition/overview#rag-api-pipeline-manifest---schema-definition","html":"\n

A base manifest template is available in the repository. The API pipeline manifest MUST comply with the following schema:

\n","isPage":false,"text":"\nA base manifest template is available in the repository. The API pipeline manifest MUST comply with the following schema:\n","title":"RAG API Pipeline Manifest - Schema Definition","titles":["API Pipeline Manifest - Overview"]},"107":{"href":"/manifest-definition/overview#api_name","html":"\n

An alphanumeric name for the API pipeline.

\n","isPage":false,"text":"\nAn alphanumeric name for the API pipeline.\n","title":"api_name","titles":["API Pipeline Manifest - Overview","RAG API Pipeline Manifest - Schema Definition"]},"108":{"href":"/manifest-definition/overview#api_parameters","html":"\n

Contains a list of parameters required for building API requests. These parameters with their values MUST be defined in the spec section. Parameter values are accessible throughout the manifest by using the config object .

\n","isPage":false,"text":"\nContains a list of parameters required for building API requests. These parameters with their values MUST be defined in the spec section. Parameter values are accessible throughout the manifest by using the config object .\n","title":"api_parameters","titles":["API Pipeline Manifest - Overview","RAG API Pipeline Manifest - Schema Definition"]},"109":{"href":"/manifest-definition/overview#api_config","html":"\n

Defines the following API metadata for building requests:

\n\n","isPage":false,"text":"\nDefines the following API metadata for building requests:\n\nrequest_method: HTTP request method to use (e.g., "get")\ncontent_type: API-supported content type (e.g., "application/json")\nresponse_entrypoint_field: Field that wraps data records (e.g., "data"). Can be set to an empty string if not required\n\n","title":"api_config","titles":["API Pipeline Manifest - Overview","RAG API Pipeline Manifest - Schema Definition"]},"110":{"href":"/manifest-definition/overview#chunking_params","html":"\n

Parameters used to adjust how the pipeline applies chunking to the normalized data. A more detailed information about each parameter is available in the unstructured library documentation. Default parameter values are:

\n\n","isPage":false,"text":"\nParameters used to adjust how the pipeline applies chunking to the normalized data. A more detailed information about each parameter is available in the unstructured library documentation. Default parameter values are:\n\nmode: elements\nchunking_strategy: by_title\ninclude_orig_elements: true\nmax_characters: 1500\nnew_after_n_chars: 1024\noverlap: 0\noverlap_all: false\ncombine_text_under_n_chars: 0\nmultipage_sections: true\n\n","title":"chunking_params","titles":["API Pipeline Manifest - Overview","RAG API Pipeline Manifest - Schema Definition"]},"111":{"href":"/manifest-definition/overview#airbyte-connector-definitions","html":"\n

An Airbyte declarative manifest requires the following schema definitions:

\n","isPage":false,"text":"\nAn Airbyte declarative manifest requires the following schema definitions:\n","title":"Airbyte Connector Definitions","titles":["API Pipeline Manifest - Overview","RAG API Pipeline Manifest - Schema Definition"]},"112":{"href":"/manifest-definition/overview#spec","html":"\n

A source specification comprising connector metadata and configuration options (Docs).\nAll parameters defined in the api_parameters section MUST also be listed under required and properties.

\n","isPage":false,"text":"\nA source specification comprising connector metadata and configuration options (Docs).\nAll parameters defined in the api_parameters section MUST also be listed under required and properties.\n","title":"spec","titles":["API Pipeline Manifest - Overview","RAG API Pipeline Manifest - Schema Definition","Airbyte Connector Definitions"]},"113":{"href":"/manifest-definition/overview#selector","html":"\n

The record selector is in change of translating an HTTP response into a list of Airbyte records (Docs).\nThe API pipeline manifest template includes two base selectors for single/multiple record responses:

\n
selector:\n    type: RecordSelector\n    extractor:\n      type: DpathExtractor\n      field_path: ["data"] # data field wraps multiple record data responses\nselector_single:\n    type: RecordSelector\n    extractor:\n        type: DpathExtractor\n        field_path: []
\n","isPage":false,"text":"\nThe record selector is in change of translating an HTTP response into a list of Airbyte records (Docs).\nThe API pipeline manifest template includes two base selectors for single/multiple record responses:\nselector:\n type: RecordSelector\n extractor:\n type: DpathExtractor\n field_path: ["data"] # data field wraps multiple record data responses\nselector_single:\n type: RecordSelector\n extractor:\n type: DpathExtractor\n field_path: []\n","title":"selector","titles":["API Pipeline Manifest - Overview","RAG API Pipeline Manifest - Schema Definition","Airbyte Connector Definitions"]},"114":{"href":"/manifest-definition/overview#requester_base","html":"\n

The Requester defines how to prepare HTTP requests for the source API (Docs).\nIt specifies the API base_url and authenticator schema. Airbyte supports common authentication methods: ApiKeyAuthenticator, BearerAuthenticator, BasicHttpAuthenticator, and OAuth.\nDetailed configuration instructions for each method are available in this link

\n","isPage":false,"text":"\nThe Requester defines how to prepare HTTP requests for the source API (Docs).\nIt specifies the API base_url and authenticator schema. Airbyte supports common authentication methods: ApiKeyAuthenticator, BearerAuthenticator, BasicHttpAuthenticator, and OAuth.\nDetailed configuration instructions for each method are available in this link\n","title":"requester_base","titles":["API Pipeline Manifest - Overview","RAG API Pipeline Manifest - Schema Definition","Airbyte Connector Definitions"]},"115":{"href":"/manifest-definition/overview#paginator","html":"\n

Defines the pagination strategy for API endpoints returning multiple records (Docs).\nAirbyte supports Page increment, Offset increment, and Cursor based pagination strategies. The "#/definitions/NoPagination" is automatically set for endpoints returning a single record.

\n","isPage":false,"text":"\nDefines the pagination strategy for API endpoints returning multiple records (Docs).\nAirbyte supports Page increment, Offset increment, and Cursor based pagination strategies. The "#/definitions/NoPagination" is automatically set for endpoints returning a single record.\n","title":"paginator","titles":["API Pipeline Manifest - Overview","RAG API Pipeline Manifest - Schema Definition","Airbyte Connector Definitions"]},"116":{"href":"/manifest-definition/overview#retriever_base","html":"\n

The Retriever object defines how to fetch records through synchronous API requests (Docs).\nIt is in charge of orchestrating the requester, record selector, and paginator. The API pipeline manifest template includes a base retriever for each selector:

\n
retriever_base:\n    type: SimpleRetriever\n    record_selector:\n      $ref: "#/definitions/selector"\nretriever_single_base:\n    type: SimpleRetriever\n    record_selector:\n      $ref: "#/definitions/selector_single"
\n","isPage":false,"text":"\nThe Retriever object defines how to fetch records through synchronous API requests (Docs).\nIt is in charge of orchestrating the requester, record selector, and paginator. The API pipeline manifest template includes a base retriever for each selector:\nretriever_base:\n type: SimpleRetriever\n record_selector:\n $ref: "#/definitions/selector"\nretriever_single_base:\n type: SimpleRetriever\n record_selector:\n $ref: "#/definitions/selector_single"\n","title":"retriever_base","titles":["API Pipeline Manifest - Overview","RAG API Pipeline Manifest - Schema Definition","Airbyte Connector Definitions"]},"117":{"href":"/manifest-definition/overview#api-endpoints-definitions","html":"\n

The endpoints section defines a whitelist of API endpoints from the all the paths defined in the OpenAPI spec. The pipeline will only extract data from endpoints defined here.\nEach endpoint should follow the following schema:

\n\n

Example:

\n
"/example/{foo}":\n    id: "example"\n    primary_key: "id"\n    responseSchema: "#/schemas/exampleSchema"\n    textSchema:\n      $ref: "#/textSchemas/Example"\n/about:\n    id: "about"\n    primary_key: "id"\n    responseSchema: "#/schemas/aboutSchema"\n    textSchema:\n      $ref: "#/textSchemas/About"
\n","isPage":false,"text":"\nThe endpoints section defines a whitelist of API endpoints from the all the paths defined in the OpenAPI spec. The pipeline will only extract data from endpoints defined here.\nEach endpoint should follow the following schema:\n\nEndpoint path: can be enclosed in double quotes to inject parameters defined in api_parameters (e.g., "/example/{foo}")\nid: string identifier for the endpoint\nprimary_key (Optional): a field to be used as primary key on each record\nresponseSchema: the schema returned by the API endpoint after applying the selector.\nIt MUST an unwrapped schema when compared to the endpoint response schema defined in the OpenAPI spec file.\ntextSchema: set the list of fields that should be parsed as text inputs during the data chunking stage. Fields included here MUST be in the endpoint's responseSchema.\n\nExample:\n"/example/{foo}":\n id: "example"\n primary_key: "id"\n responseSchema: "#/schemas/exampleSchema"\n textSchema:\n $ref: "#/textSchemas/Example"\n/about:\n id: "about"\n primary_key: "id"\n responseSchema: "#/schemas/aboutSchema"\n textSchema:\n $ref: "#/textSchemas/About"\n","title":"API Endpoints Definitions","titles":["API Pipeline Manifest - Overview","RAG API Pipeline Manifest - Schema Definition"]},"118":{"href":"/manifest-definition/overview#schemas","html":"\n

Endpoint response schemas should be listed here and referenced in the endpoint's responseSchema. Unwrapped schemas must match response schemas defined in the OpenAPI spec.

\n

Example:

\n

Endpoint response:

\n
{\n    data: [\n        {id: "0", title: "foo", createdAt: "2024-11-01T21:08:05.231Z"}, \n        {id: "0", title: "bar", createdAt: "2024-11-06T21:08:05.231Z"},\n    ]\n}
\n

Endpoint schema:

\n
schemas:\n    exampleSchema:\n        type: object\n        $schema: http://json-schema.org/draft-07/schema#\n        properties:\n        id:\n            type: string\n        title:\n            type: string\n        createdAt:\n            type: string
\n","isPage":false,"text":"\nEndpoint response schemas should be listed here and referenced in the endpoint's responseSchema. Unwrapped schemas must match response schemas defined in the OpenAPI spec.\nExample:\nEndpoint response:\n{\n data: [\n {id: "0", title: "foo", createdAt: "2024-11-01T21:08:05.231Z"}, \n {id: "0", title: "bar", createdAt: "2024-11-06T21:08:05.231Z"},\n ]\n}\nEndpoint schema:\nschemas:\n exampleSchema:\n type: object\n $schema: http://json-schema.org/draft-07/schema#\n properties:\n id:\n type: string\n title:\n type: string\n createdAt:\n type: string\n","title":"schemas","titles":["API Pipeline Manifest - Overview","RAG API Pipeline Manifest - Schema Definition"]},"119":{"href":"/manifest-definition/overview#textschemas","html":"\n

For each endpoint, you can specify the list of fields that should be be parsed as text inputs during data chunking stage.\nThese can be defined within this section and referenced in the endpoint's textSchema. Fields included here MUST be in the endpoint's responseSchema.

\n

Example:

\n

Endpoint textSchema:

\n
textSchemas:\n    Example:\n        type: object\n        properties:\n        title:\n            type: string
","isPage":false,"text":"\nFor each endpoint, you can specify the list of fields that should be be parsed as text inputs during data chunking stage.\nThese can be defined within this section and referenced in the endpoint's textSchema. Fields included here MUST be in the endpoint's responseSchema.\nExample:\nEndpoint textSchema:\ntextSchemas:\n Example:\n type: object\n properties:\n title:\n type: string","title":"textSchemas","titles":["API Pipeline Manifest - Overview","RAG API Pipeline Manifest - Schema Definition"]},"120":{"href":"/manifest-definition/sample-manifests#sample-api-pipeline-manifests","html":"\n

Below you can find the full source RAG API pipeline manifest files that are used to extract DAO-related data from two different REST APIs.\nIn the next section you can find a more in-depth overview for each API example.

\n","isPage":true,"text":"\nBelow you can find the full source RAG API pipeline manifest files that are used to extract DAO-related data from two different REST APIs.\nIn the next section you can find a more in-depth overview for each API example.\n","title":"Sample API Pipeline Manifests","titles":[]},"121":{"href":"/manifest-definition/sample-manifests#boardroom-governance-api","html":"\n
version: "3.0.0"\n \napi_name: "metacartel_boardroom_api"\n \napi_parameters:\n  cname: "metacartel"\n  protocol: "metacartel"\n \napi_config:\n  request_method: "get"\n  content_type: "application/json"\n  response_entrypoint_field: "data"\n \nchunking_params:\n  mode: "elements"\n  chunking_strategy: "by_title"\n  include_orig_elements: true\n  max_characters: 1500\n  new_after_n_chars: 1024\n  overlap: 0\n  overlap_all: false\n  combine_text_under_n_chars: 0\n  multipage_sections: true\n \nspec:\n  type: Spec\n  documentation_url: https://docs.airbyte.com/integrations/sources/boardroom\n  connection_specification:\n    $schema: http://json-schema.org/draft-07/schema#\n    title: Boardroom API Spec\n    type: object\n    required:\n      - api_key\n      - cname\n      - protocol\n    additionalProperties: true\n    properties:\n      api_key:\n        type: string\n        description: >-\n          Boardroom API Key. See <a href="https://docs.boardroom.io/docs/api/05c1fb6d88a07-governance-api">here</a>\n          for details.\n        airbyte-secret: true\n      cname:\n        type: string\n        description: >-\n          Protocol ID a.k.a cname\n        examples:\n          - aave\n          - hopprotocol\n      protocol:\n        type: string\n        description: >-\n          Alias for cname. Needed as there are a few endpoints that use `protocol` as parameter id\n        examples:\n          - aave\n          - metacartel\n \ndefinitions:\n  selector:\n    type: RecordSelector\n    extractor:\n      type: DpathExtractor\n      field_path: ["data"]\n  selector_single:\n    type: RecordSelector\n    extractor:\n      type: DpathExtractor\n      field_path: ["data"] # NOTICE: in the case of boardroom: a single record is return wrapped in "data"\n  requester_base:\n    type: HttpRequester\n    url_base: "https://api.boardroom.info/v1"\n    http_method: "GET"\n    authenticator:\n      type: ApiKeyAuthenticator\n      api_token: "{{ config['api_key'] }}"\n      inject_into: # More on https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/request-options#request-options-1\n        type: RequestOption\n        field_name: "key"\n        inject_into: request_parameter\n  retriever_base:\n    type: SimpleRetriever\n    record_selector:\n      $ref: "#/definitions/selector"\n  retriever_single_base:\n    type: SimpleRetriever\n    record_selector:\n      $ref: "#/definitions/selector_single"\n  paginator:\n    type: DefaultPaginator\n    pagination_strategy: # More on https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/pagination#cursor\n      type: CursorPagination\n      cursor_value: "{{ response.get('nextCursor', '') }}"\n      stop_condition: "{{ 'nextCursor' not in response }}"\n    page_token_option:\n      type: RequestOption\n      field_name: "cursor"\n      inject_into: "request_parameter"\n \nendpoints:\n  /discourseTopics:\n    id: "discourseTopics"\n    primary_key: "refId"\n    responseSchema: "#/schemas/discourseTopics"\n    textSchema:\n      $ref: "#/textSchemas/DiscourseTopic"\n  /discourseCategories:\n    id: "discourseCategories"\n    primary_key: "refId"\n    responseSchema: "#/schemas/discourseCategories"\n    textSchema:\n      $ref: "#/textSchemas/DiscourseCategory"\n  /discourseTopicPosts:\n    id: "discourseTopicPosts"\n    primary_key: "refId"\n    responseSchema: "#/schemas/discourseTopicPosts"\n    textSchema:\n      $ref: "#/textSchemas/DiscourseTopicPost"\n  "/protocols/{cname}":\n    id: "protocol"\n    primary_key: "cname"\n    responseSchema: "#/schemas/Protocol"\n    textSchema:\n      $ref: "#/textSchemas/Protocol"\n  "/protocols/{cname}/proposals":\n    id: "proposals"\n    primary_key: "refId"\n    responseSchema: "#/schemas/Proposals"\n    textSchema:\n      $ref: "#/textSchemas/Proposal"\n \nschemas:\n  discourseTopics:\n    type: object\n    $schema: http://json-schema.org/draft-07/schema#\n    properties:\n      id:\n        type: string\n      refId:\n        type: string\n      protocol:\n        type: string\n      imageUrl:\n        type: string\n      title:\n        type: string\n      slug:\n        type: string\n      tags:\n        type: string\n      postsCount:\n        type: integer\n      views:\n        type: integer\n      replyCount:\n        type: integer\n      likeCount:\n        type: integer\n      categoryId:\n        type: integer\n      pinned:\n        type: boolean\n      visible:\n        type: boolean\n      closed:\n        type: boolean\n      archived:\n        type: boolean\n      createdAt:\n        type: string\n      bumpedAt:\n        type: string\n  discourseCategories:\n    type: object\n    $schema: http://json-schema.org/draft-07/schema#\n    properties:\n      id:\n        type: string\n      refId:\n        type: string\n      protocol:\n        type: string\n      name:\n        type: string\n      description:\n        type: string\n      descriptionText:\n        type: string\n      descriptionExcerpt:\n        type: string\n      color:\n        type: string\n      textColor:\n        type: string\n      slug:\n        type: string\n      topicCount:\n        type: integer\n      postCount:\n        type: integer\n      position:\n        type: integer\n      topicUrl:\n        type: string\n      numFeaturedTopics:\n        type: integer\n      topicsWeek:\n        type: integer\n      topicsMonth:\n        type: integer\n      topicsYear:\n        type: integer\n      topicsAllTime:\n        type: integer\n  discourseTopicPosts:\n    type: object\n    $schema: http://json-schema.org/draft-07/schema#\n    properties:\n      id:\n        type: string\n      refId:\n        type: string\n      protocol:\n        type: string\n      body:\n        type: string\n      authorName:\n        type: string\n      authorUsername:\n        type: string\n      authorAvatar:\n        type: string\n      topicId:\n        type: integer\n      authorId:\n        type: integer\n      reads:\n        type: integer\n      readersCount:\n        type: integer\n      likeCount:\n        type: integer\n      quoteCount:\n        type: integer\n      replyCount:\n        type: integer\n      replyToPostNumber:\n        type:\n          - integer\n          - 'null'\n      postNumber:\n        type: integer\n      createdAt:\n        type: string\n      updatedAt:\n        type: string\n  Protocol:\n    type: object\n    $schema: http://json-schema.org/draft-07/schema#\n    properties:\n      cname:\n        type: string\n      name:\n        type: string\n      categories:\n        type: array\n        items:\n          type: string\n      isEnabled:\n        type: boolean\n      activeOnWebsite:\n        type: boolean\n      totalProposals:\n        type: integer\n      totalVotes:\n        type: integer\n      uniqueVoters:\n        type: integer\n      icons:\n        type: array\n        items:\n          type: object\n          properties:\n            adapter:\n              type: string\n            size:\n              type: string\n            url:\n              type: string\n      tokens:\n        type: array\n        items:\n          type: object\n          properties:\n            adapter:\n              type: string\n            symbol:\n              type: string\n            network:\n              type: string\n            contractAddress:\n              type: string\n            totalSupply:\n              type: integer\n            circulatingSupply:\n              type: integer\n            maxSupply:\n              type: integer\n            marketPrices:\n              type: array\n              items:\n                type: object\n                properties:\n                  currency:\n                    type: string\n                  price:\n                    type: number\n      type:\n        type: string\n      associatedProtocols:\n        type: array\n        items:\n          type: object\n          properties: {}\n      associatedAddresses:\n        type: array\n        items:\n          type: object\n          properties: {}\n      delegationSupport:\n        type: string\n  Proposals:\n    type: object\n    $schema: http://json-schema.org/draft-07/schema#\n    properties:\n      refId:\n        type: string\n      id:\n        type: string\n      title:\n        type: string\n      content:\n        type: string\n      protocol:\n        type: string\n      adapter:\n        type: string\n      proposer:\n        type: string\n      totalVotes:\n        type: integer\n      blockNumber:\n        type: integer\n      externalUrl:\n        type: string\n      startTime:\n        type: object\n        properties:\n          timestamp:\n            type: integer\n      endTime:\n        type: object\n        properties:\n          timestamp:\n            type: integer\n      startTimestamp:\n        type: string\n      endTimestamp:\n        type: string\n      currentState:\n        type: string\n      choices:\n        type: array\n        items:\n          type: string\n      results:\n        type: array\n        items:\n          type: object\n          properties:\n            total:\n              type: number\n            choice:\n              type: integer\n      events:\n        type: array\n        items:\n          type: object\n          properties: {}\n      type:\n        type: string\n      indexedResult:\n        type: array\n        items:\n          type: object\n          properties:\n            total:\n              type: string\n            choice:\n              type: string\n      summary:\n        type: string\n      privacy:\n        type: string\n      indexedAt:\n        type: integer\n      txHash:\n        type: string\n      quorum:\n        type: integer\n \ntextSchemas:\n  Protocol:\n    type: object\n    properties:\n      cname:\n        type: string\n      name:\n        type: string\n      categories:\n        type: array\n        items:\n          type: string\n  Proposal:\n    type: object\n    properties:\n      title:\n        type: string\n      content:\n        type: string\n      summary:\n        type: string\n  DiscourseTopic:\n    type: object\n    properties:\n      title:\n        type: string\n  DiscourseCategory:\n    type: object\n    properties:\n      name:\n        type: string\n      description:\n        type: string\n  DiscourseTopicPost:\n    type: object\n    properties:\n      body:\n        type: string
\n","isPage":false,"text":"\nversion: "3.0.0"\n \napi_name: "metacartel_boardroom_api"\n \napi_parameters:\n cname: "metacartel"\n protocol: "metacartel"\n \napi_config:\n request_method: "get"\n content_type: "application/json"\n response_entrypoint_field: "data"\n \nchunking_params:\n mode: "elements"\n chunking_strategy: "by_title"\n include_orig_elements: true\n max_characters: 1500\n new_after_n_chars: 1024\n overlap: 0\n overlap_all: false\n combine_text_under_n_chars: 0\n multipage_sections: true\n \nspec:\n type: Spec\n documentation_url: https://docs.airbyte.com/integrations/sources/boardroom\n connection_specification:\n $schema: http://json-schema.org/draft-07/schema#\n title: Boardroom API Spec\n type: object\n required:\n - api_key\n - cname\n - protocol\n additionalProperties: true\n properties:\n api_key:\n type: string\n description: >-\n Boardroom API Key. See <a href="https://docs.boardroom.io/docs/api/05c1fb6d88a07-governance-api">here</a>\n for details.\n airbyte-secret: true\n cname:\n type: string\n description: >-\n Protocol ID a.k.a cname\n examples:\n - aave\n - hopprotocol\n protocol:\n type: string\n description: >-\n Alias for cname. Needed as there are a few endpoints that use `protocol` as parameter id\n examples:\n - aave\n - metacartel\n \ndefinitions:\n selector:\n type: RecordSelector\n extractor:\n type: DpathExtractor\n field_path: ["data"]\n selector_single:\n type: RecordSelector\n extractor:\n type: DpathExtractor\n field_path: ["data"] # NOTICE: in the case of boardroom: a single record is return wrapped in "data"\n requester_base:\n type: HttpRequester\n url_base: "https://api.boardroom.info/v1"\n http_method: "GET"\n authenticator:\n type: ApiKeyAuthenticator\n api_token: "{{ config['api_key'] }}"\n inject_into: # More on https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/request-options#request-options-1\n type: RequestOption\n field_name: "key"\n inject_into: request_parameter\n retriever_base:\n type: SimpleRetriever\n record_selector:\n $ref: "#/definitions/selector"\n retriever_single_base:\n type: SimpleRetriever\n record_selector:\n $ref: "#/definitions/selector_single"\n paginator:\n type: DefaultPaginator\n pagination_strategy: # More on https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/pagination#cursor\n type: CursorPagination\n cursor_value: "{{ response.get('nextCursor', '') }}"\n stop_condition: "{{ 'nextCursor' not in response }}"\n page_token_option:\n type: RequestOption\n field_name: "cursor"\n inject_into: "request_parameter"\n \nendpoints:\n /discourseTopics:\n id: "discourseTopics"\n primary_key: "refId"\n responseSchema: "#/schemas/discourseTopics"\n textSchema:\n $ref: "#/textSchemas/DiscourseTopic"\n /discourseCategories:\n id: "discourseCategories"\n primary_key: "refId"\n responseSchema: "#/schemas/discourseCategories"\n textSchema:\n $ref: "#/textSchemas/DiscourseCategory"\n /discourseTopicPosts:\n id: "discourseTopicPosts"\n primary_key: "refId"\n responseSchema: "#/schemas/discourseTopicPosts"\n textSchema:\n $ref: "#/textSchemas/DiscourseTopicPost"\n "/protocols/{cname}":\n id: "protocol"\n primary_key: "cname"\n responseSchema: "#/schemas/Protocol"\n textSchema:\n $ref: "#/textSchemas/Protocol"\n "/protocols/{cname}/proposals":\n id: "proposals"\n primary_key: "refId"\n responseSchema: "#/schemas/Proposals"\n textSchema:\n $ref: "#/textSchemas/Proposal"\n \nschemas:\n discourseTopics:\n type: object\n $schema: http://json-schema.org/draft-07/schema#\n properties:\n id:\n type: string\n refId:\n type: string\n protocol:\n type: string\n imageUrl:\n type: string\n title:\n type: string\n slug:\n type: string\n tags:\n type: string\n postsCount:\n type: integer\n views:\n type: integer\n replyCount:\n type: integer\n likeCount:\n type: integer\n categoryId:\n type: integer\n pinned:\n type: boolean\n visible:\n type: boolean\n closed:\n type: boolean\n archived:\n type: boolean\n createdAt:\n type: string\n bumpedAt:\n type: string\n discourseCategories:\n type: object\n $schema: http://json-schema.org/draft-07/schema#\n properties:\n id:\n type: string\n refId:\n type: string\n protocol:\n type: string\n name:\n type: string\n description:\n type: string\n descriptionText:\n type: string\n descriptionExcerpt:\n type: string\n color:\n type: string\n textColor:\n type: string\n slug:\n type: string\n topicCount:\n type: integer\n postCount:\n type: integer\n position:\n type: integer\n topicUrl:\n type: string\n numFeaturedTopics:\n type: integer\n topicsWeek:\n type: integer\n topicsMonth:\n type: integer\n topicsYear:\n type: integer\n topicsAllTime:\n type: integer\n discourseTopicPosts:\n type: object\n $schema: http://json-schema.org/draft-07/schema#\n properties:\n id:\n type: string\n refId:\n type: string\n protocol:\n type: string\n body:\n type: string\n authorName:\n type: string\n authorUsername:\n type: string\n authorAvatar:\n type: string\n topicId:\n type: integer\n authorId:\n type: integer\n reads:\n type: integer\n readersCount:\n type: integer\n likeCount:\n type: integer\n quoteCount:\n type: integer\n replyCount:\n type: integer\n replyToPostNumber:\n type:\n - integer\n - 'null'\n postNumber:\n type: integer\n createdAt:\n type: string\n updatedAt:\n type: string\n Protocol:\n type: object\n $schema: http://json-schema.org/draft-07/schema#\n properties:\n cname:\n type: string\n name:\n type: string\n categories:\n type: array\n items:\n type: string\n isEnabled:\n type: boolean\n activeOnWebsite:\n type: boolean\n totalProposals:\n type: integer\n totalVotes:\n type: integer\n uniqueVoters:\n type: integer\n icons:\n type: array\n items:\n type: object\n properties:\n adapter:\n type: string\n size:\n type: string\n url:\n type: string\n tokens:\n type: array\n items:\n type: object\n properties:\n adapter:\n type: string\n symbol:\n type: string\n network:\n type: string\n contractAddress:\n type: string\n totalSupply:\n type: integer\n circulatingSupply:\n type: integer\n maxSupply:\n type: integer\n marketPrices:\n type: array\n items:\n type: object\n properties:\n currency:\n type: string\n price:\n type: number\n type:\n type: string\n associatedProtocols:\n type: array\n items:\n type: object\n properties: {}\n associatedAddresses:\n type: array\n items:\n type: object\n properties: {}\n delegationSupport:\n type: string\n Proposals:\n type: object\n $schema: http://json-schema.org/draft-07/schema#\n properties:\n refId:\n type: string\n id:\n type: string\n title:\n type: string\n content:\n type: string\n protocol:\n type: string\n adapter:\n type: string\n proposer:\n type: string\n totalVotes:\n type: integer\n blockNumber:\n type: integer\n externalUrl:\n type: string\n startTime:\n type: object\n properties:\n timestamp:\n type: integer\n endTime:\n type: object\n properties:\n timestamp:\n type: integer\n startTimestamp:\n type: string\n endTimestamp:\n type: string\n currentState:\n type: string\n choices:\n type: array\n items:\n type: string\n results:\n type: array\n items:\n type: object\n properties:\n total:\n type: number\n choice:\n type: integer\n events:\n type: array\n items:\n type: object\n properties: {}\n type:\n type: string\n indexedResult:\n type: array\n items:\n type: object\n properties:\n total:\n type: string\n choice:\n type: string\n summary:\n type: string\n privacy:\n type: string\n indexedAt:\n type: integer\n txHash:\n type: string\n quorum:\n type: integer\n \ntextSchemas:\n Protocol:\n type: object\n properties:\n cname:\n type: string\n name:\n type: string\n categories:\n type: array\n items:\n type: string\n Proposal:\n type: object\n properties:\n title:\n type: string\n content:\n type: string\n summary:\n type: string\n DiscourseTopic:\n type: object\n properties:\n title:\n type: string\n DiscourseCategory:\n type: object\n properties:\n name:\n type: string\n description:\n type: string\n DiscourseTopicPost:\n type: object\n properties:\n body:\n type: string\n","title":"Boardroom Governance API","titles":["Sample API Pipeline Manifests"]},"122":{"href":"/manifest-definition/sample-manifests#optimism-agora-api","html":"\n
version: "3.0.0"\n \napi_name: "optimism_agora_api"\n \napi_parameters:\n \napi_config:\n  request_method: "get"\n  content_type: "application/json"\n  response_entrypoint_field: "data"\n \nchunking_params:\n  mode: "elements"\n  chunking_strategy: "by_title"\n  include_orig_elements: true\n  max_characters: 1500\n  new_after_n_chars: 1024\n  overlap: 0\n  overlap_all: false\n  combine_text_under_n_chars: 0\n  multipage_sections: true\n \nspec:\n  connection_specification:\n    $schema: http://json-schema.org/draft-07/schema#\n    additionalProperties: true\n    properties:\n      api_key:\n        airbyte-secret: true\n        description: Agora API Key.\n        type: string\n    required:\n    - api_key\n    title: Agora API Spec\n    type: object\n  documentation_url: https://docs.airbyte.com/integrations/sources/agora\n  type: Spec\n \ndefinitions:\n  selector:\n    type: RecordSelector\n    extractor:\n      type: DpathExtractor\n      field_path: ["data"]\n  selector_single:\n    type: RecordSelector\n    extractor:\n      type: DpathExtractor\n      field_path: []\n  requester_base:\n    type: HttpRequester\n    url_base: "https://vote.optimism.io/api/v1"\n    http_method: "GET"\n    authenticator: # More on https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/authentication\n      type: BearerAuthenticator\n      api_token: "{{ config['api_key'] }}"\n  retriever_base:\n    type: SimpleRetriever\n    record_selector:\n      $ref: "#/definitions/selector"\n  retriever_single_base:\n    type: SimpleRetriever\n    record_selector:\n      $ref: "#/definitions/selector_single"\n  paginator: # More on https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/pagination\n    type: DefaultPaginator\n    pagination_strategy: # More on https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/pagination#offset-increment\n      type: "OffsetIncrement"\n      page_size: 50\n    page_token_option:\n      type: "RequestOption"\n      field_name: "offset"\n      inject_into: "request_parameter"\n    page_size_option:\n      type: "RequestOption"\n      inject_into: "request_parameter"\n      field_name: "limit"\n \nendpoints:\n  /proposals:\n    id: "proposals"\n    primary_key: "id"\n    responseSchema: "#/schemas/Proposal"\n    textSchema:\n      $ref: "#/textSchemas/Proposal"\n  /projects:\n    id: "projects"\n    primary_key: "id"\n    responseSchema: "#/schemas/Project"\n    textSchema:\n      $ref: "#/textSchemas/Project"\n \nschemas:\n  PageMetadata:\n    summary: Pagination metadata\n    description: Metadata associated with paginated requests.\n    type: object\n    properties:\n      has_next:\n        summary: Flag indicating if there's more data for retrieval\n        description: A boolean flag indicating if there is additional data past the returned page to retrieve.\n        type: boolean\n      total_returned:\n        summary: Total records returned\n        description: A number indicating the total amount of records returned for the request.\n        type: integer\n        format: int32\n      next_offset:\n        summary: Offset to supply to the next request\n        description: A number indicating the offset at which a subsequent request may retrieve the next set of records.\n        type: integer\n        format: int32\n  Delegation:\n    summary: A delegation of voting power\n    description: A delegation of voting power from one address to another.\n    type: object\n    properties:\n      from:\n        summary: Delegator address\n        description: Address of the delegator.\n        type: string\n        examples:\n          - "0xDa6d1F091B672C0f9e215eB9fa6B5a84bF2c5e11"\n      to:\n        summary: Delegatee address\n        description: Address of the delegatee.\n        type: string\n        examples:\n          - "0xDa6d1F091B672C0f9e215eB9fa6B5a84bF2c5e11"\n      allowance:\n        summary: Voting allowance for delegate in OP tokens (18 decimals)\n        description: Total amount of voting power delegated to or from address.\n        type: string\n        examples:\n          - "100000000000000000000000"\n      timestamp:\n        summary: When delegation occurred\n        description: The datetime on which the delegation of voting power occurred.\n        type: string\n        format: date-time\n        examples:\n          - "2024-01-17T19:37:15.983Z"\n      type:\n        summary: Type of delegation\n        description: The type of delegation; can be advanced or direct. Advanced delegations are made through Alligator. Direct delegations are made through OP token.\n        type: string\n        enum:\n          - DIRECT\n          - ADVANCED\n      amount:\n        summary: Amount delegated\n        description: The amount of voting power delegated; can be full or partial.\n        type: string\n        enum:\n          - FULL\n          - PARTIAL\n      transaction_hash:\n        summary: Transaction hash of delegation\n        description: The transaction hash of the delegation transaction.\n        type: string\n        examples:\n          - "0x8ed595a6f85b2d21e32602094d261034d11706dc100d8f48e11a03c15378cfcf"\n  DelegateChunk:\n    summary: A chunk of delegate data\n    description: Data associated with a voting delegate. Sub-resources under this delegate are not expanded.\n    type: object\n    properties:\n      address:\n        summary: Delegate address\n        description: Address of the delegate.\n        type: string\n        examples:\n          - "0xDa6d1F091B672C0f9e215eB9fa6B5a84bF2c5e11"\n      votingPower:\n        summary: Delegate's available voting power\n        description: An object providing a breakdown of a delegate's overall voting power between direct, advanced, and total.\n        type: object\n        properties:\n          advanced:\n            description: Advanced voting power.\n            type: string\n            examples:\n              - "10000"\n          direct:\n            description: Direct voting power.\n            type: string\n            examples:\n              - "20000"\n          total:\n            description: Total voting power.\n            type: string\n            examples:\n              - "30000"\n      isCitizen:\n        description: A boolean flag indicating whether or not this delegate is an Agora citizen.\n        type: boolean\n      statement:\n        $ref: "#/schemas/DelegateStatement"\n  Delegate:\n    summary: A voting delegate\n    description: Data associated with a voting delegate. Sub-resources under this delegate are not expanded.\n    type: object\n    properties:\n      address:\n        summary: Delegate address\n        description: Address of the delegate.\n        type: string\n        examples:\n          - "0xDa6d1F091B672C0f9e215eB9fa6B5a84bF2c5e11"\n      votingPower:\n        summary: Delegate's available voting power\n        description: An object providing a breakdown of a delegate's overall voting power between direct, advanced, and total.\n        type: object\n        properties:\n          advanced:\n            description: Advanced voting power.\n            type: string\n            examples:\n              - "10000"\n          direct:\n            description: Direct voting power.\n            type: string\n            examples:\n              - "20000"\n          total:\n            description: Total voting power.\n            type: string\n            examples:\n              - "30000"\n      isCitizen:\n        description: A boolean flag indicating whether or not this delegate is an Agora citizen.\n        type: boolean\n      statement:\n        $ref: "#/schemas/DelegateStatement"\n      votingPowerRelativeToVotableSupply:\n        summary: Delegate's voting power relative to votable supply\n        description: The delegate's voting power relative to the votable supply.\n        type: number\n      votingPowerRelativeToQuorum:\n        summary: Delegate's voting power relative to quorum\n        description: The delegate's voting power relative to the quorum.\n        type: number\n      proposalsCreated:\n        summary: Number of proposals created\n        description: The number of proposals created by the delegate.\n        type: number\n      proposalsVotedOn:\n        summary: Number of proposals voted on\n        description: The number of proposals voted on by the delegate.\n        type: number\n      votedFor:\n        summary: Number of proposals voted for\n        description: The number of proposals voted for by the delegate.\n        type: string\n      votedAgainst:\n        summary: Number of proposals voted against\n        description: The number of proposals voted against by the delegate.\n        type: string\n      votedAbstain:\n        summary: Number of proposals abstained from\n        description: The number of proposals abstained from by the delegate.\n        type: string\n      votingParticipation:\n        summary: Voting participation\n        description: The delegate's voting participation.\n        type: string\n      lastTenProps:\n        summary: Number of proposals voted on out of the last ten\n        description: The number of proposals voted on out of the last ten.\n        type: string\n      numOfDelegators:\n        summary: Number of delegators\n        description: The number of delegators.\n        type: string\n  DelegateStatement:\n    summary: A delegate's statement\n    description: A delegate's statement, including the social links and topIssues.\n    type: object\n    properties:\n      statement:\n        summary: Delegate's statement\n        description: A statement from the delegate describing their voting positions.\n        type: string\n      twitter:\n        summary: Twitter handle\n        description: Twitter handle for the delegate.\n        type: string\n      discord:\n        summary: Discord handle\n        description: Discord handle for the delegate.\n        type: string\n      warpcast:\n        summary: Warpcast handle\n        description: Warpcast handle for the delegate.\n        type: string\n      topIssues:\n        summary: Top issues for a delegate\n        description: The most important issues for a given delegate.\n        type: array\n        items:\n          $ref: "#/schemas/Issue"\n  Issue:\n    summary: Description of a governance issue\n    description: An object describing a particular view on a particular governance issue.\n    type: object\n    properties:\n      type:\n        type: string\n        examples:\n          - "Funding"\n      value:\n        type: string\n        examples:\n          - "Grant funding should be directed to projects with a great track record"\n  SnapshotProposalResults:\n    summary: Results of a snapshot proposal\n    description: An object describing the results of a snapshot proposal, including status and scores.\n    type: object\n    properties:\n      scores:\n        summary: Scores for the proposal\n        type: array\n        items:\n          type: string\n      status:\n        summary: Status of the proposal\n        type: string\n        enum:\n          - pending\n          - active\n          - closed\n  StandardProposalResults:\n    summary: Results of a standard proposal\n    description: An object describing the results of a standard proposal.\n    type: object\n    properties:\n      for:\n        summary: Number of votes for\n        type: string\n      against:\n        summary: Number of votes against\n        type: string\n      abstain:\n        summary: Number of abstentions\n        type: string\n  ApprovalProposalResults:\n    summary: Results of an approval proposal\n    description: An object describing the results of an approval proposal.\n    type: object\n    properties:\n      for:\n        summary: Number of votes for\n        type: string\n      against:\n        summary: Number of votes against\n        type: string\n      abstain:\n        summary: Number of abstentions\n        type: string\n      options:\n        type: array\n        items:\n          type: object\n          properties:\n            option:\n              type: string\n            votes:\n              type: string\n      criteria:\n        type: string\n        enum:\n          - THRESHOLD\n          - TOP_CHOICES\n      criteriaValue:\n        summary: Threshold required to pass or number of top choices that is passed\n        type: string\n  OptimisticProposalResults:\n    summary: Results of an optimistic proposal\n    description: An object describing the results of an optimistic proposal.\n    type: object\n    properties:\n      for:\n        summary: Number of votes for\n        type: string\n      against:\n        summary: Number of votes against\n        type: string\n      abstain:\n        summary: Number of abstentions\n        type: string\n  SnapshotProposalData:\n    summary: Data associated with a snapshot proposal\n    description: >\n      Metadata and data associated with a snapshot proposal, including start/end/created times, scores, and votes.\n    type: object\n    properties:\n      votingStrategy:\n        $ref: "#/schemas/VotingStrategy"\n      title:\n        summary: Title of the proposal\n        type: string\n      startTimestamp:\n        summary: Start time of the proposal\n        type: string\n        format: date-time\n      endTimestamp:\n        summary: End time of the proposal\n        type: string\n        format: date-time\n      createdTimestamp:\n        summary: Creation time of the proposal\n        type: string\n        format: date-time\n      link:\n        summary: Link to the proposal\n        type: string\n      scores:\n        summary: Scores for the proposal\n        type: array\n        items:\n          type: string\n      votes:\n        summary: Votes for the proposal\n        type: string\n      state:\n        summary: State of the proposal\n        type: string\n        enum:\n          - ACTIVE\n          - CLOSED\n          - PENDING\n  StandardProposalData:\n    summary: Data associated with standard proposal\n    description: >\n      Metadata and data associated with a standard proposal, including onchain execution data.\n    type: object\n    properties:\n      votingStrategy:\n        $ref: "#/schemas/VotingStrategy"\n      options:\n        type: array\n        items:\n          type: object\n          properties:\n            executionData:\n              $ref: "#/schemas/ExecutionData"\n  ApprovalProposalData:\n    summary: Data associated with an approval proposal\n    description: >\n      Metadata and data associated with an approval proposal, including onchain execution data.\n    type: object\n    properties:\n      votingStrategy:\n        $ref: "#/schemas/VotingStrategy"\n      options:\n        type: array\n        items:\n          type: object\n          properties:\n            executionData:\n              $ref: "#/schemas/ExecutionData"\n            budgetTokensSpent:\n              summary: Budget tokens spent\n              type: string\n            description:\n              summary: Description of the proposal\n              type: string\n      proposalSettings:\n        type: object\n        properties:\n          maxApprovals:\n            summary: Maximum approvals for the proposal\n            type: string\n          criteria:\n            summary: Criteria for the proposal\n            type: string\n            enum:\n              - THRESHOLD\n              - TOP_CHOICES\n          budgetToken:\n            summary: Budget token for the proposal\n            type: string\n          criteriaValue:\n            summary: Criteria value for the proposal\n            type: string\n          budgetAmount:\n            summary: Budget amount for the proposal\n            type: string\n  OptimisticProposalData:\n    summary: Data associated with an optimistic proposal\n    description: >\n      Metadata and data associated with an optimistic proposal, including onchain execution data.\n    type: object\n    properties:\n      votingStrategy:\n        $ref: "#/schemas/VotingStrategy"\n      executionData:\n        $ref: "#/schemas/ExecutionData"\n      description:\n        summary: Description of the proposal\n        type: string\n  ExecutionData:\n    summary: Structured execution data for proposal\n    description: >\n      Provides the values, targets, calldata, and functions for proposal execution.\n    type: object\n    properties:\n      values:\n        summary: Values for execution\n        type: array\n        items:\n          type: string\n      targets:\n        summary: Targets for execution\n        type: array\n        items:\n          type: string\n      signatures:\n        summary: Function signatures\n        type: array\n        items:\n          type: string\n      calldata:\n        summary: Calldata for execution\n        type: array\n        items:\n          type: string\n      description:\n        summary: Description of the option\n        type: string\n      functionArgsName:\n        summary: Functions for execution\n        type: array\n        items:\n          type: object\n          properties:\n            functionName:\n              summary: Function name\n              type: string\n            functionArgs:\n              summary: Data for function\n              type: array\n              items:\n                type: string\n      budgetTokensSpent:\n        summary: Total tokens spent in the option transactions\n        type: string\n  Proposal:\n    summary: A specific governance proposal for voting\n    description: >\n      An object describing the specifics and metadata associated with a particular governance proposal,\n      including the specific measure, proposer, data, etc.\n    type: object\n    properties:\n      id:\n        type: string\n      proposer:\n        summary: Proposer's address\n        description: The address which submitted the proposal for voting.\n        type: string\n      snapshotBlockNumber:\n        summary: Block number of the voting power snapshot\n        description: Block number of the proposal at which the voting power was calculated\n        type: number\n      createdTime:\n        summary: Proposal creation time\n        description: Timestamp on which this proposal was created.\n        type: string\n      startTime:\n        summary: Start time of the proposal\n        description: Timestamp at which this proposal is open for voting.\n        type: string\n      endTime:\n        summary: End time of the proposal\n        description: Timestamp at which the proposal has closed for voting.\n        type: string\n      cancelledTime:\n        summary: Cancelled time of the proposal\n        description: Timestamp at which this proposal has been canceled. Zero if not canceled.\n        type: string\n      executedTime:\n        summary: Execution time of the proposal\n        description: Timestamp at which this proposal has been executed. Zero if not executed.\n        type: string\n      markdowntitle:\n        summary: Title of the proposal\n        description: Title of the proposal\n        type: string\n      description:\n        summary: Description of the proposal\n        description: Extended information and context around the proposal.\n        type: string\n      quorum:\n        summary: Minimum participation for passage\n        description: >\n          The minimum number of voting power needed to be involved in a given proposal as a prerequisite for passage\n        type: string\n      approvalThreshold:\n        summary: Minimum amount needed for option to pass\n        description: The amount of voting power needed to pass an option in the given approval voting proposal.\n        type: string\n      proposalData:\n        oneOf:\n          - $ref: "#/schemas/SnapshotProposalData"\n          - $ref: "#/schemas/StandardProposalData"\n          - $ref: "#/schemas/ApprovalProposalData"\n          - $ref: "#/schemas/OptimisticProposalData"\n        discriminator:\n          propertyName: votingStrategy\n      unformattedProposalData:\n        summary: Unformatted proposal data\n        description: >\n          The raw, unformatted data associated with the proposal.\n        type: string\n      proposalResults:\n        oneOf:\n          - $ref: "#/schemas/SnapshotProposalResults"\n          - $ref: "#/schemas/StandardProposalResults"\n          - $ref: "#/schemas/ApprovalProposalResults"\n          - $ref: "#/schemas/OptimisticProposalResults"\n      proposalType:\n        summary: Type of proposal\n        description: The type of proposal; can be standard, approval, optimistic, or snapshot.\n        type: string\n        enum:\n          - STANDARD\n          - APPROVAL\n          - OPTIMISTIC\n          - SNAPSHOT\n      status:\n        summary: Status of the proposal\n        description: The current status of the proposal; can be active, closed, or pending.\n        type: string\n        enum:\n          - "CANCELLED"\n          - "SUCCEEDED"\n          - "DEFEATED"\n          - "ACTIVE"\n          - "PENDING"\n          - "QUEUED"\n          - "EXECUTED"\n          - "CLOSED"\n      createdTransactionHash:\n        summary: Transaction hash of proposal creation\n        description: The transaction hash of the transaction which created the proposal.\n        type: string\n      cancelledTransactionHash:\n        summary: Transaction hash of proposal cancellation\n        description: The transaction hash of the transaction which canceled the proposal.\n        type: string\n      executedTransactionHash:\n        summary: Transaction hash of proposal execution\n        description: The transaction hash of the transaction which executed the proposal.\n        type: string\n      proposalTemplate:\n        $ref: "#/schemas/ProposalTemplate"\n  ProposalTemplate:\n    summary: Metadata about the proposal\n    description: >\n      An object describing the particular voting parameters of a proposal.\n    type: object\n    properties:\n      name:\n        summary: Name of proposal template\n        description: Name of proposal template\n        type: string\n      proposalTemplateId:\n        summary: Numeric id of the proposal template\n        description: Numeric id of the proposal template\n        type: integer\n      votingStrategy:\n        $ref: "#/schemas/VotingStrategy"\n      quorum:\n        summary: Minimum participation for passage\n        description: >\n          The minimum number of voting power needed to be involved in a given proposal as a prerequisite for passage\n        type: string\n      approvalThreshold:\n        summary: Amount needed for measure to pass\n        description: The amount of voting power needed to pass the given proposal.\n        type: string\n      contractAddress:\n        summary: Governor contract address\n        description: Governor contract address to which this proposal was submitted.\n        type: string\n      createBlock:\n        summary: Proposal creation block number\n        description: Block number on which this proposal template was created.\n        type: string\n  VotingStrategy:\n    summary: The voting strategy for a proposal\n    description: Enum description of the proposal's voting strategy.\n    type: string\n    enum:\n      - STANDARD\n      - ADVANCED\n      - OPTIMISTIC\n      - SNAPSHOT\n  VoteSupport:\n    summary: Disposition of the vote\n    description: Describes which way the vote was cast (i.e. for/against/abstention)\n    type: string\n    enum:\n      - FOR\n      - AGAINST\n      - ABSTAIN\n  Vote:\n    summary: Information about a given vote\n    description: Information and metadata about a specific vote on a governance proposal.\n    type: object\n    properties:\n      transactionHash:\n        summary: Transaction hash of the vote\n        description: The transaction hash of the transaction in which the vote was cast.\n        type: string\n      proposalId:\n        summary: Proposal ID for the vote\n        description: The unique ID of the proposal on which the vote was cast.\n        type: string\n      address:\n        summary: Address casting the vote\n        description: On-chain address of the EOA or contract which cast the vote.\n        type: string\n      support:\n        $ref: "#/schemas/VoteSupport"\n      reason:\n        summary: Reason for the vote\n        description: A voter-supplied reason for voting the particular way they did.\n        type: string\n      weight:\n        summary: Voting power behind the vote\n        description: Numeric description of the weight and voting power behind the vote.\n        type: string\n      params:\n        summary: Array of votes that have been chosen by the voter\n        description: An array of items to submit for approval for multiple choice votes.\n        type: array\n        items:\n          type: string\n      proposalValue:\n        summary: Value of the proposal\n        description: The total value that the proposal will be executed with.\n        type: string\n      proposalTitle:\n        summary: Title of the proposal\n        description: The title of the proposal.\n        type: string\n      proposalType:\n        summary: Type of the proposal\n        description: The type of the proposal.\n        type: string\n        enum:\n          - STANDARD\n          - APPROVAL\n          - OPTIMISTIC\n          - SNAPSHOT\n      timestamp:\n        summary: Timestamp of the vote\n        description: The timestamp at which the vote was cast.\n        type: string\n        format: date-time\n  VotingToken:\n    allOf:\n      - $ref: "#/schemas/Contract"\n      - type: object\n        properties:\n          totalSupply:\n            summary: Total supply of the voting token\n            description: The total supply of the voting token.\n            type: string\n          votableSupply:\n            summary: Votable supply of the voting token\n            description: The votable supply of the voting token.\n            type: string\n  Contract:\n    summary: Information about a deployed contract\n    description: Metadata about a specific smart contract deployed on chain.\n    type: object\n    properties:\n      address:\n        summary: Contract address\n        description: The address of the contract on chain.\n        type: string\n      chainId:\n        summary: Chain ID of the contract\n        description: The chain ID on which the contract is deployed.\n        type: string\n  Comment:\n    summary: A comment\n    description: >\n      A discussion comment, including the author, timestamp, and content.\n    type: object\n    properties:\n      comment_id:\n        summary: Comment ID\n        description: The unique ID of the comment.\n        type: string\n      created_at:\n        summary: Timestamp of the comment\n        description: The timestamp at which the comment was created.\n        type: string\n        format: date-time\n      updated_at:\n        summary: Timestamp of the comment edit\n        description: The timestamp at which the comment was last edited.\n        type: string\n        format: date-time\n      comment:\n        summary: Content of the comment\n        description: The text content of the comment.\n        type: string\n      address:\n        summary: Author of the comment\n        description: The delegate address of the author of the comment.\n        type: string\n      votes_count:\n        summary: Count of votes on the comment\n        description: The number of votes on the comment.\n        type: integer\n      votes:\n        type: array\n        items:\n          $ref: "#/schemas/CommentVote"\n  CommentVote:\n    summary: A vote on a comment\n    description: >\n      A vote on a comment, including the voter, timestamp, and vote (-1, 0, 1).\n    type: object\n    properties:\n      comment_id:\n        summary: Comment ID\n        description: The unique ID of the comment.\n        type: string\n      voter:\n        summary: Voter address\n        description: The address of the voter.\n        type: string\n      vote:\n        summary: Vote value\n        description: The value of the vote (-1, 0, 1).\n        type: integer\n      created_at:\n        summary: Timestamp of the vote\n        description: The timestamp at which the vote was created.\n        type: string\n        format: date-time\n      updated_at:\n        summary: Timestamp of the vote update\n        description: The timestamp at which the comment was last edited.\n        type: string\n        format: date-time\n  SocialLinks:\n    summary: Social media links for a project\n    description: >\n      Social media links for a project, including links to Twitter, Discord, and other platforms.\n    type: object\n    properties:\n      twitter:\n        type: string\n      farcaster:\n        type: string\n      mirror:\n        type: string\n      website:\n        type: string\n  Organization:\n    summary: Organization information for a project\n    description: >\n      Information about the organization behind a project, including name and avatar.\n    type: object\n    properties:\n      name:\n        type: string\n      profileAvatarUrl:\n        type: string\n  Project:\n    summary: A project submitted for RetroFunding\n    description: >\n      Information about a project submitted for Retroactive Public Goods Funding on Agora.\n    type: object\n    properties:\n      id:\n        type: string\n      name:\n        type: string\n      category:\n        type: string\n      description:\n        type: string\n      profileAvatarUrl:\n        type: string\n      projectCoverImageUrl:\n        type: string\n      socialLinks:\n        $ref: "#/schemas/SocialLinks"\n      team:\n        type: array\n        items:\n          type: string\n      github:\n        type: array\n        items:\n          oneOf:\n            - type: string\n            - type: object\n              properties:\n                repo_rank:\n                  type: number\n                star_count:\n                  type: number\n                starred_events:\n                  type: number\n                starred_by_top_devs:\n                  type: number\n                fork_count:\n                  type: number\n                forked_events:\n                  type: number\n                forked_by_top_devs:\n                  type: number\n                fulltime_developer_average_6_months:\n                  type: number\n                new_contributor_count_6_months:\n                  type: number\n                age_of_project_years:\n                  type: number\n      packages:\n        type: array\n        items:\n          type: string\n      links:\n        type: array\n        items:\n          type: string\n      organization:\n        $ref: "#/schemas/Organization"\n      contracts:\n        summary: Deployed contracts for the project\n        description: >\n          Information about the contracts deployed by the project, including the contract address, chain ID, deployer, and creation block.\n        type: array\n        items:\n          allOf:\n            - $ref: "#/schemas/Contract"\n            - type: object\n              properties:\n                address:\n                  summary: Address of the deployed contract\n                  description: The address of the deployed contract.\n                  type: string\n                deploymentTxHash:\n                  summary: Transaction hash of the deployment\n                  description: The transaction hash of the deployment transaction.\n                  type: string\n                deployerAddress:\n                  summary: Address of the deployer\n                  description: The address of the entity which deployed the contract.\n                  type: string\n                chainId:\n                  summary: Chain ID of the contract\n                  description: The chain ID on which the contract was deployed.\n                  type: string\n      grantsAndFunding:\n        type: object\n        properties:\n          ventureFunding:\n            type: array\n            items:\n              type: object\n              properties:\n                amount:\n                  type: string\n                year:\n                  type: string\n                details:\n                  type: string\n          grants:\n            type: array\n            items:\n              type: object\n              properties:\n                grant:\n                  type: string\n                link:\n                  type: string\n                amount:\n                  type: string\n                date:\n                  type: string\n                details:\n                  type: string\n          revenue:\n            type: array\n            items:\n              type: object\n              properties:\n                amount:\n                  type: string\n                details:\n                  type: string\n \ntextSchemas:\n  Proposal:\n    type: object\n    properties:\n      markdowntitle:\n        type: string\n      description:\n        type: string\n  Project:\n    type: object\n    properties:\n      name:\n        type: string\n      category:\n        type: string\n      description:\n        type: string
","isPage":false,"text":"\nversion: "3.0.0"\n \napi_name: "optimism_agora_api"\n \napi_parameters:\n \napi_config:\n request_method: "get"\n content_type: "application/json"\n response_entrypoint_field: "data"\n \nchunking_params:\n mode: "elements"\n chunking_strategy: "by_title"\n include_orig_elements: true\n max_characters: 1500\n new_after_n_chars: 1024\n overlap: 0\n overlap_all: false\n combine_text_under_n_chars: 0\n multipage_sections: true\n \nspec:\n connection_specification:\n $schema: http://json-schema.org/draft-07/schema#\n additionalProperties: true\n properties:\n api_key:\n airbyte-secret: true\n description: Agora API Key.\n type: string\n required:\n - api_key\n title: Agora API Spec\n type: object\n documentation_url: https://docs.airbyte.com/integrations/sources/agora\n type: Spec\n \ndefinitions:\n selector:\n type: RecordSelector\n extractor:\n type: DpathExtractor\n field_path: ["data"]\n selector_single:\n type: RecordSelector\n extractor:\n type: DpathExtractor\n field_path: []\n requester_base:\n type: HttpRequester\n url_base: "https://vote.optimism.io/api/v1"\n http_method: "GET"\n authenticator: # More on https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/authentication\n type: BearerAuthenticator\n api_token: "{{ config['api_key'] }}"\n retriever_base:\n type: SimpleRetriever\n record_selector:\n $ref: "#/definitions/selector"\n retriever_single_base:\n type: SimpleRetriever\n record_selector:\n $ref: "#/definitions/selector_single"\n paginator: # More on https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/pagination\n type: DefaultPaginator\n pagination_strategy: # More on https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/pagination#offset-increment\n type: "OffsetIncrement"\n page_size: 50\n page_token_option:\n type: "RequestOption"\n field_name: "offset"\n inject_into: "request_parameter"\n page_size_option:\n type: "RequestOption"\n inject_into: "request_parameter"\n field_name: "limit"\n \nendpoints:\n /proposals:\n id: "proposals"\n primary_key: "id"\n responseSchema: "#/schemas/Proposal"\n textSchema:\n $ref: "#/textSchemas/Proposal"\n /projects:\n id: "projects"\n primary_key: "id"\n responseSchema: "#/schemas/Project"\n textSchema:\n $ref: "#/textSchemas/Project"\n \nschemas:\n PageMetadata:\n summary: Pagination metadata\n description: Metadata associated with paginated requests.\n type: object\n properties:\n has_next:\n summary: Flag indicating if there's more data for retrieval\n description: A boolean flag indicating if there is additional data past the returned page to retrieve.\n type: boolean\n total_returned:\n summary: Total records returned\n description: A number indicating the total amount of records returned for the request.\n type: integer\n format: int32\n next_offset:\n summary: Offset to supply to the next request\n description: A number indicating the offset at which a subsequent request may retrieve the next set of records.\n type: integer\n format: int32\n Delegation:\n summary: A delegation of voting power\n description: A delegation of voting power from one address to another.\n type: object\n properties:\n from:\n summary: Delegator address\n description: Address of the delegator.\n type: string\n examples:\n - "0xDa6d1F091B672C0f9e215eB9fa6B5a84bF2c5e11"\n to:\n summary: Delegatee address\n description: Address of the delegatee.\n type: string\n examples:\n - "0xDa6d1F091B672C0f9e215eB9fa6B5a84bF2c5e11"\n allowance:\n summary: Voting allowance for delegate in OP tokens (18 decimals)\n description: Total amount of voting power delegated to or from address.\n type: string\n examples:\n - "100000000000000000000000"\n timestamp:\n summary: When delegation occurred\n description: The datetime on which the delegation of voting power occurred.\n type: string\n format: date-time\n examples:\n - "2024-01-17T19:37:15.983Z"\n type:\n summary: Type of delegation\n description: The type of delegation; can be advanced or direct. Advanced delegations are made through Alligator. Direct delegations are made through OP token.\n type: string\n enum:\n - DIRECT\n - ADVANCED\n amount:\n summary: Amount delegated\n description: The amount of voting power delegated; can be full or partial.\n type: string\n enum:\n - FULL\n - PARTIAL\n transaction_hash:\n summary: Transaction hash of delegation\n description: The transaction hash of the delegation transaction.\n type: string\n examples:\n - "0x8ed595a6f85b2d21e32602094d261034d11706dc100d8f48e11a03c15378cfcf"\n DelegateChunk:\n summary: A chunk of delegate data\n description: Data associated with a voting delegate. Sub-resources under this delegate are not expanded.\n type: object\n properties:\n address:\n summary: Delegate address\n description: Address of the delegate.\n type: string\n examples:\n - "0xDa6d1F091B672C0f9e215eB9fa6B5a84bF2c5e11"\n votingPower:\n summary: Delegate's available voting power\n description: An object providing a breakdown of a delegate's overall voting power between direct, advanced, and total.\n type: object\n properties:\n advanced:\n description: Advanced voting power.\n type: string\n examples:\n - "10000"\n direct:\n description: Direct voting power.\n type: string\n examples:\n - "20000"\n total:\n description: Total voting power.\n type: string\n examples:\n - "30000"\n isCitizen:\n description: A boolean flag indicating whether or not this delegate is an Agora citizen.\n type: boolean\n statement:\n $ref: "#/schemas/DelegateStatement"\n Delegate:\n summary: A voting delegate\n description: Data associated with a voting delegate. Sub-resources under this delegate are not expanded.\n type: object\n properties:\n address:\n summary: Delegate address\n description: Address of the delegate.\n type: string\n examples:\n - "0xDa6d1F091B672C0f9e215eB9fa6B5a84bF2c5e11"\n votingPower:\n summary: Delegate's available voting power\n description: An object providing a breakdown of a delegate's overall voting power between direct, advanced, and total.\n type: object\n properties:\n advanced:\n description: Advanced voting power.\n type: string\n examples:\n - "10000"\n direct:\n description: Direct voting power.\n type: string\n examples:\n - "20000"\n total:\n description: Total voting power.\n type: string\n examples:\n - "30000"\n isCitizen:\n description: A boolean flag indicating whether or not this delegate is an Agora citizen.\n type: boolean\n statement:\n $ref: "#/schemas/DelegateStatement"\n votingPowerRelativeToVotableSupply:\n summary: Delegate's voting power relative to votable supply\n description: The delegate's voting power relative to the votable supply.\n type: number\n votingPowerRelativeToQuorum:\n summary: Delegate's voting power relative to quorum\n description: The delegate's voting power relative to the quorum.\n type: number\n proposalsCreated:\n summary: Number of proposals created\n description: The number of proposals created by the delegate.\n type: number\n proposalsVotedOn:\n summary: Number of proposals voted on\n description: The number of proposals voted on by the delegate.\n type: number\n votedFor:\n summary: Number of proposals voted for\n description: The number of proposals voted for by the delegate.\n type: string\n votedAgainst:\n summary: Number of proposals voted against\n description: The number of proposals voted against by the delegate.\n type: string\n votedAbstain:\n summary: Number of proposals abstained from\n description: The number of proposals abstained from by the delegate.\n type: string\n votingParticipation:\n summary: Voting participation\n description: The delegate's voting participation.\n type: string\n lastTenProps:\n summary: Number of proposals voted on out of the last ten\n description: The number of proposals voted on out of the last ten.\n type: string\n numOfDelegators:\n summary: Number of delegators\n description: The number of delegators.\n type: string\n DelegateStatement:\n summary: A delegate's statement\n description: A delegate's statement, including the social links and topIssues.\n type: object\n properties:\n statement:\n summary: Delegate's statement\n description: A statement from the delegate describing their voting positions.\n type: string\n twitter:\n summary: Twitter handle\n description: Twitter handle for the delegate.\n type: string\n discord:\n summary: Discord handle\n description: Discord handle for the delegate.\n type: string\n warpcast:\n summary: Warpcast handle\n description: Warpcast handle for the delegate.\n type: string\n topIssues:\n summary: Top issues for a delegate\n description: The most important issues for a given delegate.\n type: array\n items:\n $ref: "#/schemas/Issue"\n Issue:\n summary: Description of a governance issue\n description: An object describing a particular view on a particular governance issue.\n type: object\n properties:\n type:\n type: string\n examples:\n - "Funding"\n value:\n type: string\n examples:\n - "Grant funding should be directed to projects with a great track record"\n SnapshotProposalResults:\n summary: Results of a snapshot proposal\n description: An object describing the results of a snapshot proposal, including status and scores.\n type: object\n properties:\n scores:\n summary: Scores for the proposal\n type: array\n items:\n type: string\n status:\n summary: Status of the proposal\n type: string\n enum:\n - pending\n - active\n - closed\n StandardProposalResults:\n summary: Results of a standard proposal\n description: An object describing the results of a standard proposal.\n type: object\n properties:\n for:\n summary: Number of votes for\n type: string\n against:\n summary: Number of votes against\n type: string\n abstain:\n summary: Number of abstentions\n type: string\n ApprovalProposalResults:\n summary: Results of an approval proposal\n description: An object describing the results of an approval proposal.\n type: object\n properties:\n for:\n summary: Number of votes for\n type: string\n against:\n summary: Number of votes against\n type: string\n abstain:\n summary: Number of abstentions\n type: string\n options:\n type: array\n items:\n type: object\n properties:\n option:\n type: string\n votes:\n type: string\n criteria:\n type: string\n enum:\n - THRESHOLD\n - TOP_CHOICES\n criteriaValue:\n summary: Threshold required to pass or number of top choices that is passed\n type: string\n OptimisticProposalResults:\n summary: Results of an optimistic proposal\n description: An object describing the results of an optimistic proposal.\n type: object\n properties:\n for:\n summary: Number of votes for\n type: string\n against:\n summary: Number of votes against\n type: string\n abstain:\n summary: Number of abstentions\n type: string\n SnapshotProposalData:\n summary: Data associated with a snapshot proposal\n description: >\n Metadata and data associated with a snapshot proposal, including start/end/created times, scores, and votes.\n type: object\n properties:\n votingStrategy:\n $ref: "#/schemas/VotingStrategy"\n title:\n summary: Title of the proposal\n type: string\n startTimestamp:\n summary: Start time of the proposal\n type: string\n format: date-time\n endTimestamp:\n summary: End time of the proposal\n type: string\n format: date-time\n createdTimestamp:\n summary: Creation time of the proposal\n type: string\n format: date-time\n link:\n summary: Link to the proposal\n type: string\n scores:\n summary: Scores for the proposal\n type: array\n items:\n type: string\n votes:\n summary: Votes for the proposal\n type: string\n state:\n summary: State of the proposal\n type: string\n enum:\n - ACTIVE\n - CLOSED\n - PENDING\n StandardProposalData:\n summary: Data associated with standard proposal\n description: >\n Metadata and data associated with a standard proposal, including onchain execution data.\n type: object\n properties:\n votingStrategy:\n $ref: "#/schemas/VotingStrategy"\n options:\n type: array\n items:\n type: object\n properties:\n executionData:\n $ref: "#/schemas/ExecutionData"\n ApprovalProposalData:\n summary: Data associated with an approval proposal\n description: >\n Metadata and data associated with an approval proposal, including onchain execution data.\n type: object\n properties:\n votingStrategy:\n $ref: "#/schemas/VotingStrategy"\n options:\n type: array\n items:\n type: object\n properties:\n executionData:\n $ref: "#/schemas/ExecutionData"\n budgetTokensSpent:\n summary: Budget tokens spent\n type: string\n description:\n summary: Description of the proposal\n type: string\n proposalSettings:\n type: object\n properties:\n maxApprovals:\n summary: Maximum approvals for the proposal\n type: string\n criteria:\n summary: Criteria for the proposal\n type: string\n enum:\n - THRESHOLD\n - TOP_CHOICES\n budgetToken:\n summary: Budget token for the proposal\n type: string\n criteriaValue:\n summary: Criteria value for the proposal\n type: string\n budgetAmount:\n summary: Budget amount for the proposal\n type: string\n OptimisticProposalData:\n summary: Data associated with an optimistic proposal\n description: >\n Metadata and data associated with an optimistic proposal, including onchain execution data.\n type: object\n properties:\n votingStrategy:\n $ref: "#/schemas/VotingStrategy"\n executionData:\n $ref: "#/schemas/ExecutionData"\n description:\n summary: Description of the proposal\n type: string\n ExecutionData:\n summary: Structured execution data for proposal\n description: >\n Provides the values, targets, calldata, and functions for proposal execution.\n type: object\n properties:\n values:\n summary: Values for execution\n type: array\n items:\n type: string\n targets:\n summary: Targets for execution\n type: array\n items:\n type: string\n signatures:\n summary: Function signatures\n type: array\n items:\n type: string\n calldata:\n summary: Calldata for execution\n type: array\n items:\n type: string\n description:\n summary: Description of the option\n type: string\n functionArgsName:\n summary: Functions for execution\n type: array\n items:\n type: object\n properties:\n functionName:\n summary: Function name\n type: string\n functionArgs:\n summary: Data for function\n type: array\n items:\n type: string\n budgetTokensSpent:\n summary: Total tokens spent in the option transactions\n type: string\n Proposal:\n summary: A specific governance proposal for voting\n description: >\n An object describing the specifics and metadata associated with a particular governance proposal,\n including the specific measure, proposer, data, etc.\n type: object\n properties:\n id:\n type: string\n proposer:\n summary: Proposer's address\n description: The address which submitted the proposal for voting.\n type: string\n snapshotBlockNumber:\n summary: Block number of the voting power snapshot\n description: Block number of the proposal at which the voting power was calculated\n type: number\n createdTime:\n summary: Proposal creation time\n description: Timestamp on which this proposal was created.\n type: string\n startTime:\n summary: Start time of the proposal\n description: Timestamp at which this proposal is open for voting.\n type: string\n endTime:\n summary: End time of the proposal\n description: Timestamp at which the proposal has closed for voting.\n type: string\n cancelledTime:\n summary: Cancelled time of the proposal\n description: Timestamp at which this proposal has been canceled. Zero if not canceled.\n type: string\n executedTime:\n summary: Execution time of the proposal\n description: Timestamp at which this proposal has been executed. Zero if not executed.\n type: string\n markdowntitle:\n summary: Title of the proposal\n description: Title of the proposal\n type: string\n description:\n summary: Description of the proposal\n description: Extended information and context around the proposal.\n type: string\n quorum:\n summary: Minimum participation for passage\n description: >\n The minimum number of voting power needed to be involved in a given proposal as a prerequisite for passage\n type: string\n approvalThreshold:\n summary: Minimum amount needed for option to pass\n description: The amount of voting power needed to pass an option in the given approval voting proposal.\n type: string\n proposalData:\n oneOf:\n - $ref: "#/schemas/SnapshotProposalData"\n - $ref: "#/schemas/StandardProposalData"\n - $ref: "#/schemas/ApprovalProposalData"\n - $ref: "#/schemas/OptimisticProposalData"\n discriminator:\n propertyName: votingStrategy\n unformattedProposalData:\n summary: Unformatted proposal data\n description: >\n The raw, unformatted data associated with the proposal.\n type: string\n proposalResults:\n oneOf:\n - $ref: "#/schemas/SnapshotProposalResults"\n - $ref: "#/schemas/StandardProposalResults"\n - $ref: "#/schemas/ApprovalProposalResults"\n - $ref: "#/schemas/OptimisticProposalResults"\n proposalType:\n summary: Type of proposal\n description: The type of proposal; can be standard, approval, optimistic, or snapshot.\n type: string\n enum:\n - STANDARD\n - APPROVAL\n - OPTIMISTIC\n - SNAPSHOT\n status:\n summary: Status of the proposal\n description: The current status of the proposal; can be active, closed, or pending.\n type: string\n enum:\n - "CANCELLED"\n - "SUCCEEDED"\n - "DEFEATED"\n - "ACTIVE"\n - "PENDING"\n - "QUEUED"\n - "EXECUTED"\n - "CLOSED"\n createdTransactionHash:\n summary: Transaction hash of proposal creation\n description: The transaction hash of the transaction which created the proposal.\n type: string\n cancelledTransactionHash:\n summary: Transaction hash of proposal cancellation\n description: The transaction hash of the transaction which canceled the proposal.\n type: string\n executedTransactionHash:\n summary: Transaction hash of proposal execution\n description: The transaction hash of the transaction which executed the proposal.\n type: string\n proposalTemplate:\n $ref: "#/schemas/ProposalTemplate"\n ProposalTemplate:\n summary: Metadata about the proposal\n description: >\n An object describing the particular voting parameters of a proposal.\n type: object\n properties:\n name:\n summary: Name of proposal template\n description: Name of proposal template\n type: string\n proposalTemplateId:\n summary: Numeric id of the proposal template\n description: Numeric id of the proposal template\n type: integer\n votingStrategy:\n $ref: "#/schemas/VotingStrategy"\n quorum:\n summary: Minimum participation for passage\n description: >\n The minimum number of voting power needed to be involved in a given proposal as a prerequisite for passage\n type: string\n approvalThreshold:\n summary: Amount needed for measure to pass\n description: The amount of voting power needed to pass the given proposal.\n type: string\n contractAddress:\n summary: Governor contract address\n description: Governor contract address to which this proposal was submitted.\n type: string\n createBlock:\n summary: Proposal creation block number\n description: Block number on which this proposal template was created.\n type: string\n VotingStrategy:\n summary: The voting strategy for a proposal\n description: Enum description of the proposal's voting strategy.\n type: string\n enum:\n - STANDARD\n - ADVANCED\n - OPTIMISTIC\n - SNAPSHOT\n VoteSupport:\n summary: Disposition of the vote\n description: Describes which way the vote was cast (i.e. for/against/abstention)\n type: string\n enum:\n - FOR\n - AGAINST\n - ABSTAIN\n Vote:\n summary: Information about a given vote\n description: Information and metadata about a specific vote on a governance proposal.\n type: object\n properties:\n transactionHash:\n summary: Transaction hash of the vote\n description: The transaction hash of the transaction in which the vote was cast.\n type: string\n proposalId:\n summary: Proposal ID for the vote\n description: The unique ID of the proposal on which the vote was cast.\n type: string\n address:\n summary: Address casting the vote\n description: On-chain address of the EOA or contract which cast the vote.\n type: string\n support:\n $ref: "#/schemas/VoteSupport"\n reason:\n summary: Reason for the vote\n description: A voter-supplied reason for voting the particular way they did.\n type: string\n weight:\n summary: Voting power behind the vote\n description: Numeric description of the weight and voting power behind the vote.\n type: string\n params:\n summary: Array of votes that have been chosen by the voter\n description: An array of items to submit for approval for multiple choice votes.\n type: array\n items:\n type: string\n proposalValue:\n summary: Value of the proposal\n description: The total value that the proposal will be executed with.\n type: string\n proposalTitle:\n summary: Title of the proposal\n description: The title of the proposal.\n type: string\n proposalType:\n summary: Type of the proposal\n description: The type of the proposal.\n type: string\n enum:\n - STANDARD\n - APPROVAL\n - OPTIMISTIC\n - SNAPSHOT\n timestamp:\n summary: Timestamp of the vote\n description: The timestamp at which the vote was cast.\n type: string\n format: date-time\n VotingToken:\n allOf:\n - $ref: "#/schemas/Contract"\n - type: object\n properties:\n totalSupply:\n summary: Total supply of the voting token\n description: The total supply of the voting token.\n type: string\n votableSupply:\n summary: Votable supply of the voting token\n description: The votable supply of the voting token.\n type: string\n Contract:\n summary: Information about a deployed contract\n description: Metadata about a specific smart contract deployed on chain.\n type: object\n properties:\n address:\n summary: Contract address\n description: The address of the contract on chain.\n type: string\n chainId:\n summary: Chain ID of the contract\n description: The chain ID on which the contract is deployed.\n type: string\n Comment:\n summary: A comment\n description: >\n A discussion comment, including the author, timestamp, and content.\n type: object\n properties:\n comment_id:\n summary: Comment ID\n description: The unique ID of the comment.\n type: string\n created_at:\n summary: Timestamp of the comment\n description: The timestamp at which the comment was created.\n type: string\n format: date-time\n updated_at:\n summary: Timestamp of the comment edit\n description: The timestamp at which the comment was last edited.\n type: string\n format: date-time\n comment:\n summary: Content of the comment\n description: The text content of the comment.\n type: string\n address:\n summary: Author of the comment\n description: The delegate address of the author of the comment.\n type: string\n votes_count:\n summary: Count of votes on the comment\n description: The number of votes on the comment.\n type: integer\n votes:\n type: array\n items:\n $ref: "#/schemas/CommentVote"\n CommentVote:\n summary: A vote on a comment\n description: >\n A vote on a comment, including the voter, timestamp, and vote (-1, 0, 1).\n type: object\n properties:\n comment_id:\n summary: Comment ID\n description: The unique ID of the comment.\n type: string\n voter:\n summary: Voter address\n description: The address of the voter.\n type: string\n vote:\n summary: Vote value\n description: The value of the vote (-1, 0, 1).\n type: integer\n created_at:\n summary: Timestamp of the vote\n description: The timestamp at which the vote was created.\n type: string\n format: date-time\n updated_at:\n summary: Timestamp of the vote update\n description: The timestamp at which the comment was last edited.\n type: string\n format: date-time\n SocialLinks:\n summary: Social media links for a project\n description: >\n Social media links for a project, including links to Twitter, Discord, and other platforms.\n type: object\n properties:\n twitter:\n type: string\n farcaster:\n type: string\n mirror:\n type: string\n website:\n type: string\n Organization:\n summary: Organization information for a project\n description: >\n Information about the organization behind a project, including name and avatar.\n type: object\n properties:\n name:\n type: string\n profileAvatarUrl:\n type: string\n Project:\n summary: A project submitted for RetroFunding\n description: >\n Information about a project submitted for Retroactive Public Goods Funding on Agora.\n type: object\n properties:\n id:\n type: string\n name:\n type: string\n category:\n type: string\n description:\n type: string\n profileAvatarUrl:\n type: string\n projectCoverImageUrl:\n type: string\n socialLinks:\n $ref: "#/schemas/SocialLinks"\n team:\n type: array\n items:\n type: string\n github:\n type: array\n items:\n oneOf:\n - type: string\n - type: object\n properties:\n repo_rank:\n type: number\n star_count:\n type: number\n starred_events:\n type: number\n starred_by_top_devs:\n type: number\n fork_count:\n type: number\n forked_events:\n type: number\n forked_by_top_devs:\n type: number\n fulltime_developer_average_6_months:\n type: number\n new_contributor_count_6_months:\n type: number\n age_of_project_years:\n type: number\n packages:\n type: array\n items:\n type: string\n links:\n type: array\n items:\n type: string\n organization:\n $ref: "#/schemas/Organization"\n contracts:\n summary: Deployed contracts for the project\n description: >\n Information about the contracts deployed by the project, including the contract address, chain ID, deployer, and creation block.\n type: array\n items:\n allOf:\n - $ref: "#/schemas/Contract"\n - type: object\n properties:\n address:\n summary: Address of the deployed contract\n description: The address of the deployed contract.\n type: string\n deploymentTxHash:\n summary: Transaction hash of the deployment\n description: The transaction hash of the deployment transaction.\n type: string\n deployerAddress:\n summary: Address of the deployer\n description: The address of the entity which deployed the contract.\n type: string\n chainId:\n summary: Chain ID of the contract\n description: The chain ID on which the contract was deployed.\n type: string\n grantsAndFunding:\n type: object\n properties:\n ventureFunding:\n type: array\n items:\n type: object\n properties:\n amount:\n type: string\n year:\n type: string\n details:\n type: string\n grants:\n type: array\n items:\n type: object\n properties:\n grant:\n type: string\n link:\n type: string\n amount:\n type: string\n date:\n type: string\n details:\n type: string\n revenue:\n type: array\n items:\n type: object\n properties:\n amount:\n type: string\n details:\n type: string\n \ntextSchemas:\n Proposal:\n type: object\n properties:\n markdowntitle:\n type: string\n description:\n type: string\n Project:\n type: object\n properties:\n name:\n type: string\n category:\n type: string\n description:\n type: string","title":"Optimism Agora API","titles":["Sample API Pipeline Manifests"]}},"dirtCount":0,"index":[["983z",{"2":{"122":1}}],["`protocol`",{"2":{"121":1}}],["`moloch",{"2":{"74":2}}],["`molochdao`",{"2":{"74":2}}],["zero",{"2":{"103":1,"122":2}}],["+",{"2":{"90":1}}],["8",{"2":{"103":1}}],["8b",{"2":{"74":2}}],["8080",{"2":{"72":1,"74":1,"76":1,"90":1,"103":1,"104":5}}],["8192",{"2":{"72":1,"74":1}}],["768",{"2":{"72":1,"76":1,"80":1,"103":1,"104":2}}],["7",{"2":{"72":1}}],["⚠️recommended",{"0":{"72":1}}],["60",{"2":{"103":1}}],["6333",{"2":{"90":1,"103":1,"104":3}}],["61",{"2":{"80":1,"104":2}}],["64",{"2":{"74":1}}],["6",{"0":{"69":1},"2":{"122":2}}],["4",{"0":{"52":1,"67":1},"2":{"61":1,"72":1}}],["231z",{"2":{"118":2}}],["20000",{"2":{"122":2}}],["2024",{"2":{"118":2,"122":1}}],["2048",{"2":{"74":2,"76":1}}],["2",{"0":{"50":1,"65":1},"2":{"104":2}}],["🔌",{"0":{"45":1},"1":{"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1}}],["joins",{"2":{"59":1,"61":1}}],["joined",{"2":{"54":2,"101":1}}],["jupyter",{"2":{"52":1}}],["just",{"2":{"44":1}}],["json",{"2":{"21":1,"22":1,"33":1,"34":1,"38":2,"53":1,"54":1,"74":3,"109":1,"118":1,"121":7,"122":2}}],["jsonl",{"2":{"15":2,"66":2,"94":2,"96":1,"97":2,"99":1,"100":2,"101":6}}],["17t19",{"2":{"122":1}}],["18",{"2":{"122":1}}],["15",{"2":{"103":1,"122":1}}],["1500",{"2":{"39":1,"110":1,"121":1,"122":1}}],["127",{"2":{"76":1,"80":4,"104":10}}],["10000",{"2":{"122":2}}],["100000000000000000000000",{"2":{"122":1}}],["1000",{"2":{"103":2}}],["10",{"2":{"74":1,"103":1}}],["1024",{"2":{"39":1,"110":1,"121":1,"122":1}}],["1",{"0":{"49":1,"64":1},"2":{"74":2,"76":2,"80":5,"104":20,"121":1,"122":4}}],["11434",{"2":{"80":3}}],["11",{"2":{"7":1,"118":2}}],["01",{"2":{"122":1}}],["01t21",{"2":{"118":1}}],["06t21",{"2":{"118":1}}],["05",{"2":{"118":2}}],["05c1fb6d88a07",{"2":{"34":1,"121":1}}],["08",{"2":{"118":2}}],["0x8ed595a6f85b2d21e32602094d261034d11706dc100d8f48e11a03c15378cfcf",{"2":{"122":1}}],["0xda6d1f091b672c0f9e215eb9fa6b5a84bf2c5e11",{"2":{"122":4}}],["0xd0275a4f8ef0d4b2dc0a3baf3d405a63bc647340",{"2":{"104":2}}],["0x105873910",{"2":{"104":1}}],["0x1091c2490",{"2":{"80":1}}],["0x110893c90",{"2":{"104":1}}],["002",{"2":{"76":1}}],["0",{"2":{"39":2,"72":4,"74":1,"76":2,"80":8,"103":1,"104":20,"110":2,"118":2,"121":4,"122":6}}],["07",{"2":{"22":1,"34":1,"38":1,"118":1,"121":6,"122":1}}],["$gaianet",{"2":{"72":1}}],["$home",{"2":{"71":1}}],["$ref",{"2":{"25":2,"37":1,"116":2,"117":2,"121":7,"122":30}}],["$schema",{"2":{"22":1,"34":1,"38":1,"118":1,"121":6,"122":1}}],["know",{"2":{"74":1}}],["knowledge",{"0":{"26":1,"40":1,"73":1},"1":{"27":1,"28":1,"41":1,"42":1,"43":1,"44":1},"2":{"0":1,"1":1,"2":1,"6":1,"16":1,"17":1,"27":1,"28":1,"29":1,"41":2,"42":1,"44":1,"53":1,"54":2,"60":1,"61":2,"69":1,"73":1,"74":4,"101":1,"103":1}}],["k",{"2":{"34":1,"74":1,"121":1}}],["kb",{"0":{"28":1,"42":1}}],["key",{"2":{"18":5,"22":4,"23":1,"25":2,"30":5,"34":3,"35":2,"37":1,"51":1,"65":1,"69":1,"76":1,"91":2,"93":2,"103":3,"104":8,"117":4,"121":10,"122":6}}],["50",{"2":{"24":2,"122":1}}],["5",{"0":{"68":1},"2":{"7":1,"61":3,"72":2,"74":4,"76":1,"80":2,"81":1,"103":1,"104":2}}],["q5",{"2":{"74":1}}],["qdrantdbvectorstore",{"2":{"60":1}}],["qdrantdb",{"0":{"69":1},"2":{"54":1,"90":2,"103":3,"104":10}}],["qdrant",{"2":{"7":1,"60":2,"61":3,"74":3,"101":1,"103":3,"104":10}}],["queued",{"2":{"122":1}}],["question",{"2":{"74":1}}],["querying",{"2":{"66":1}}],["queried",{"2":{"53":1}}],["queries",{"2":{"6":1,"74":1}}],["quorum",{"2":{"38":1,"121":1,"122":4}}],["quotecount",{"2":{"121":1}}],["quotes",{"2":{"117":1}}],["quot",{"2":{"21":8,"23":6,"24":14,"25":16,"33":12,"34":6,"35":8,"36":10,"37":10,"39":4,"71":2,"74":84,"109":6,"113":2,"115":2,"116":4,"117":20,"118":12,"121":90,"122":154}}],["quick",{"0":{"71":1},"2":{"12":1,"71":1}}],["quickly",{"2":{"4":1,"6":1,"74":1,"104":1}}],["xxxxxxxxxxxxxxxx",{"2":{"28":1,"42":1,"101":2}}],["x",{"0":{"70":1},"1":{"71":1,"72":1,"73":1,"74":1},"2":{"7":1,"101":1}}],["x27",{"0":{"48":1},"1":{"49":1,"50":1,"51":1,"52":1},"2":{"6":2,"12":3,"13":3,"14":1,"16":2,"18":2,"23":2,"27":1,"30":2,"32":1,"34":4,"35":2,"36":6,"37":1,"38":1,"45":2,"74":12,"75":1,"77":1,"80":5,"93":1,"103":9,"104":12,"105":2,"117":1,"118":1,"119":2,"121":10,"122":17}}],["30000",{"2":{"122":2}}],["37",{"2":{"122":1}}],["32gb",{"2":{"74":1}}],["3",{"0":{"51":1,"66":1},"2":{"7":1,"74":5,"76":1,"80":1,"104":10,"121":1,"122":1}}],["350+",{"2":{"1":1}}],["last",{"2":{"122":4}}],["lasttenprops",{"2":{"122":1}}],["large",{"2":{"64":1,"67":1,"68":1,"69":1}}],["language",{"2":{"53":1,"67":1,"68":1,"74":2}}],["level",{"2":{"86":1,"87":1,"88":1,"89":1,"104":1}}],["less",{"2":{"18":1,"30":1,"72":1}}],["learning",{"2":{"67":1}}],["learn",{"2":{"16":1,"81":1,"105":1}}],["left",{"2":{"6":1}}],["lighweight",{"2":{"77":1}}],["lightweight",{"2":{"59":1}}],["likecount",{"2":{"121":2}}],["like",{"2":{"68":1,"69":1}}],["library",{"2":{"60":1,"68":2,"110":1}}],["libraries",{"2":{"59":1,"68":1}}],["litellm",{"2":{"59":1,"68":1}}],["limits",{"2":{"103":1}}],["limit",{"2":{"24":2,"74":1,"122":1}}],["listed",{"2":{"38":1,"90":1,"112":1,"118":1}}],["list",{"2":{"15":1,"33":1,"38":1,"108":1,"113":1,"117":1,"119":1}}],["lines",{"2":{"53":1}}],["line",{"2":{"5":1,"85":1}}],["links",{"2":{"122":5}}],["link",{"2":{"1":1,"2":1,"28":1,"33":1,"42":1,"73":1,"114":1,"122":3}}],["lt",{"2":{"14":1,"15":6,"34":2,"52":2,"72":3,"80":1,"81":2,"101":1,"104":2,"121":2}}],["llamaedge",{"2":{"74":1}}],["llama",{"2":{"72":1,"74":5}}],["ll",{"2":{"12":1,"16":1,"18":1,"27":1,"30":1,"75":1,"104":2,"105":1}}],["llms",{"2":{"50":1,"67":1}}],["llm",{"0":{"75":1},"1":{"76":1,"77":1,"78":1,"79":1,"80":1,"81":1},"2":{"5":1,"6":1,"7":1,"54":2,"59":2,"61":4,"68":4,"73":1,"75":2,"76":8,"77":1,"80":8,"86":2,"87":3,"90":2,"103":11,"104":17}}],["logging",{"2":{"86":1,"87":1,"88":1,"89":1,"104":1}}],["low",{"2":{"65":1,"105":1}}],["loaded",{"2":{"104":1}}],["loader",{"0":{"57":1},"2":{"54":1,"61":2}}],["load",{"2":{"57":1,"80":1}}],["loading",{"2":{"54":1}}],["location",{"2":{"72":1}}],["locate",{"2":{"28":1,"42":1}}],["localhost",{"2":{"90":2,"103":2}}],["local",{"2":{"7":1,"9":1,"61":1,"68":2,"74":1,"101":1,"103":1}}],["look",{"2":{"13":1,"49":1,"50":1}}],["looking",{"2":{"6":1,"12":2,"13":1}}],["null",{"2":{"121":1}}],["numeric",{"2":{"122":3}}],["numofdelegators",{"2":{"122":1}}],["numfeaturedtopics",{"2":{"121":1}}],["number",{"2":{"38":1,"103":3,"121":2,"122":48}}],["nn",{"2":{"72":2}}],["n",{"2":{"39":2,"74":2,"104":6,"110":2,"121":2,"122":2}}],["natural",{"2":{"53":1}}],["named",{"2":{"28":1,"42":1}}],["name",{"0":{"107":1},"2":{"21":1,"24":2,"33":2,"35":1,"36":1,"44":1,"57":1,"72":4,"74":4,"76":1,"80":1,"81":1,"101":8,"103":1,"104":3,"107":1,"121":7,"122":11}}],["navigate",{"2":{"10":1}}],["nopagination",{"2":{"115":1}}],["normalization",{"2":{"54":1,"59":1,"61":1,"66":1,"91":1,"100":1}}],["normalized",{"0":{"94":1},"1":{"95":1,"96":1},"2":{"15":3,"52":1,"54":2,"59":2,"88":2,"91":2,"93":2,"94":6,"96":2,"100":5,"101":2,"110":1}}],["notice",{"2":{"59":1,"121":1}}],["notebook",{"2":{"52":1}}],["note",{"2":{"38":1,"49":1}}],["not",{"2":{"28":1,"36":1,"42":1,"74":2,"80":1,"84":1,"90":1,"104":1,"109":1,"121":1,"122":6}}],["no",{"2":{"21":1,"74":1,"103":1}}],["now",{"2":{"13":1,"37":1,"104":1}}],["nomic",{"2":{"7":1,"72":2,"74":3,"76":1,"80":2,"81":1,"103":1,"104":2}}],["node",{"0":{"28":1,"42":1,"70":1,"72":1,"73":1,"74":1},"1":{"71":1,"72":1,"73":1,"74":1},"2":{"5":1,"6":1,"7":1,"28":2,"42":2,"54":1,"61":3,"68":1,"71":1,"72":3,"73":2,"74":3,"75":1,"77":1,"103":1,"104":4}}],["necessary",{"2":{"74":1}}],["never",{"2":{"74":1}}],["neighbor",{"2":{"69":1}}],["nearest",{"2":{"69":1}}],["newconnectionerror",{"2":{"80":1,"104":2}}],["new",{"2":{"39":1,"50":1,"57":1,"80":1,"104":2,"110":1,"121":1,"122":2}}],["needed",{"2":{"17":1,"22":1,"29":1,"34":1,"51":1,"121":1,"122":6}}],["need",{"2":{"14":1,"18":1,"30":1,"44":1,"52":1,"104":1}}],["needs",{"2":{"11":1,"22":1}}],["network",{"2":{"7":1,"61":1,"74":1,"104":10,"121":1}}],["nextcursor",{"2":{"36":2,"121":2}}],["next",{"2":{"4":1,"12":1,"20":1,"103":1,"104":2,"105":1,"120":1,"122":4}}],["uri",{"2":{"104":1}}],["urllib3",{"2":{"80":1,"104":2}}],["url",{"2":{"22":1,"23":1,"24":1,"34":1,"35":1,"74":1,"76":1,"80":3,"103":4,"104":9,"114":1,"121":3,"122":2}}],["utf",{"2":{"103":1}}],["utilizes",{"2":{"105":1}}],["utilizing",{"2":{"74":1}}],["utilities",{"2":{"65":1}}],["ui",{"2":{"72":1}}],["udf",{"2":{"59":1,"61":1,"103":3}}],["unformatted",{"2":{"122":2}}],["unformattedproposaldata",{"2":{"122":1}}],["unique",{"2":{"122":3}}],["uniquevoters",{"2":{"121":1}}],["unified",{"2":{"59":1}}],["unwrapped",{"2":{"117":1,"118":1}}],["unwrappd",{"2":{"38":1}}],["unavailable",{"2":{"105":1}}],["until",{"2":{"91":2,"93":2}}],["unstructured",{"0":{"67":1},"2":{"67":1,"110":1}}],["under",{"2":{"4":1,"6":1,"12":1,"39":1,"104":1,"105":1,"110":1,"112":1,"121":1,"122":3}}],["understanding",{"2":{"23":1,"24":2,"121":2,"122":3}}],["understand",{"2":{"4":1}}],["uploading",{"2":{"61":1}}],["upload",{"2":{"61":1}}],["updated",{"2":{"122":2}}],["updatedat",{"2":{"121":1}}],["updates",{"2":{"103":1}}],["update",{"2":{"28":1,"42":1,"122":1}}],["up",{"2":{"5":1,"6":1,"7":2,"74":1,"90":1,"91":1,"93":1,"100":1,"104":2}}],["usage",{"0":{"85":1},"1":{"86":1,"87":1,"88":1,"89":1},"2":{"85":1,"86":1,"88":1,"91":1,"94":1,"97":1,"104":1}}],["usable",{"2":{"54":1}}],["us",{"2":{"74":1,"104":2}}],["usds",{"2":{"43":1}}],["using",{"0":{"14":1,"26":1,"40":1,"80":1},"1":{"15":1,"27":1,"28":1,"41":1,"42":1,"43":1,"44":1},"2":{"0":1,"6":1,"14":1,"15":2,"18":1,"28":1,"30":1,"34":1,"36":1,"42":1,"52":1,"53":2,"54":2,"59":3,"61":1,"65":1,"76":1,"77":1,"80":1,"81":1,"84":2,"94":1,"97":1,"104":5,"105":1,"108":1}}],["useful",{"2":{"87":1,"89":1}}],["uses",{"2":{"24":1,"54":1,"56":1,"57":1,"58":2,"60":1,"61":1,"75":1,"84":1}}],["user$",{"2":{"76":1,"80":1,"85":1,"86":1,"88":1,"91":1,"94":1,"97":1,"104":3}}],["users",{"2":{"54":1,"61":1}}],["user",{"0":{"43":1},"2":{"5":1,"6":1,"59":1,"74":4,"80":1}}],["used",{"2":{"4":1,"39":1,"61":1,"66":2,"68":1,"103":1,"104":2,"110":1,"117":1,"120":1}}],["use",{"2":{"0":1,"6":1,"11":1,"30":1,"50":1,"52":4,"54":2,"61":1,"64":1,"74":3,"76":1,"77":4,"80":1,"81":1,"93":1,"103":3,"104":4,"109":1,"121":1}}],["hitting",{"2":{"104":1}}],["high",{"2":{"64":1}}],["hypothetical",{"2":{"74":1}}],["hybrid",{"2":{"53":1}}],["hub",{"2":{"47":1}}],["hugging",{"2":{"41":1}}],["huggingface",{"2":{"28":1,"42":1,"61":1,"74":2,"81":1}}],["hash",{"2":{"122":13}}],["has",{"2":{"104":1,"122":4}}],["hardware",{"2":{"59":1,"77":1}}],["handling",{"2":{"67":1}}],["handle",{"2":{"77":1,"122":6}}],["handles",{"2":{"54":1}}],["handled",{"2":{"36":1}}],["hand",{"2":{"38":1}}],["have",{"2":{"14":1,"84":1,"104":6,"122":1}}],["here",{"2":{"34":1,"35":1,"45":1,"81":1,"84":1,"103":1,"117":2,"118":1,"119":1,"121":1}}],["helps",{"2":{"74":1}}],["help",{"2":{"6":1,"14":1,"50":1,"52":1,"84":2,"85":2,"86":2,"88":2,"91":2,"94":2,"97":2,"104":4,"105":1}}],["helpful",{"2":{"4":1}}],["href=",{"2":{"34":1,"121":1}}],["hh",{"2":{"28":1,"42":1,"101":2}}],["httpconnection",{"2":{"80":1,"104":2}}],["httpconnectionpool",{"2":{"80":1,"104":2}}],["httprequester",{"2":{"23":1,"35":1,"121":1,"122":1}}],["http",{"2":{"22":1,"23":1,"34":1,"35":1,"38":1,"74":1,"76":1,"80":3,"90":2,"103":2,"104":8,"109":1,"113":1,"114":1,"118":1,"121":7,"122":2}}],["https",{"2":{"9":1,"22":1,"23":2,"24":2,"34":2,"35":1,"74":2,"76":1,"84":1,"104":2,"121":5,"122":5}}],["home",{"2":{"80":1}}],["host",{"2":{"104":1}}],["host=",{"2":{"80":1,"104":2}}],["hosted",{"2":{"29":1,"54":1,"68":1,"73":1}}],["hopprotocol",{"2":{"34":1,"121":1}}],["hood",{"2":{"4":1,"6":1,"104":1,"105":1}}],["however",{"2":{"102":1}}],["how",{"2":{"0":3,"1":1,"2":1,"4":1,"5":1,"6":2,"13":1,"16":1,"35":1,"75":1,"104":1,"105":1,"110":1,"114":1,"116":1}}],["wraps",{"2":{"109":1,"113":1}}],["wrapped",{"2":{"36":1,"121":1}}],["weight",{"2":{"122":2}}],["well",{"2":{"105":1}}],["website",{"2":{"78":1,"122":1}}],["web",{"2":{"72":1,"75":1,"76":1}}],["we",{"2":{"45":1,"59":1,"71":1,"72":1,"104":1}}],["way",{"2":{"122":2}}],["warpcast",{"2":{"122":3}}],["wait",{"2":{"103":1}}],["wanna",{"2":{"76":1}}],["want",{"2":{"45":1,"52":1,"76":1,"80":1,"104":5}}],["walks",{"2":{"53":1}}],["wasm",{"2":{"72":1}}],["wasmedge",{"2":{"72":1}}],["was",{"2":{"10":1,"101":1,"104":1,"122":13}}],["whitelist",{"2":{"117":1}}],["which",{"2":{"68":1,"76":1,"80":1,"104":2,"122":26}}],["while",{"2":{"24":1,"36":1,"38":1,"54":1}}],["what",{"2":{"43":1}}],["whether",{"2":{"122":2}}],["whenever",{"2":{"74":2}}],["when",{"2":{"39":1,"61":1,"74":1,"103":1,"117":1,"122":1}}],["where",{"0":{"46":1},"1":{"47":1},"2":{"10":1,"74":4,"103":1}}],["will",{"2":{"20":1,"32":1,"38":2,"41":1,"71":1,"74":2,"90":1,"93":1,"101":2,"104":10,"117":1,"122":1}}],["wizard",{"0":{"80":1},"2":{"5":1,"11":2,"76":1,"85":1,"86":1,"102":1,"104":4}}],["without",{"2":{"66":1}}],["within",{"2":{"2":1,"17":1,"67":1,"101":1,"119":1}}],["with",{"0":{"3":1,"45":1},"1":{"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1},"2":{"2":1,"3":1,"4":1,"6":1,"25":1,"37":1,"45":1,"58":1,"61":2,"64":2,"65":2,"68":3,"73":1,"74":3,"76":1,"77":1,"80":1,"81":1,"103":1,"104":4,"106":1,"108":1,"122":15}}],["work",{"2":{"76":1}}],["workflows",{"2":{"67":1}}],["works",{"2":{"4":1,"6":1}}],["working",{"0":{"3":1,"45":1},"1":{"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1},"2":{"3":1}}],["votablesupply",{"2":{"122":1}}],["votable",{"2":{"122":4}}],["votingtoken",{"2":{"122":1}}],["votingstrategy",{"2":{"122":12}}],["votingparticipation",{"2":{"122":1}}],["votingpowerrelativetoquorum",{"2":{"122":1}}],["votingpowerrelativetovotablesupply",{"2":{"122":1}}],["votingpower",{"2":{"122":2}}],["voting",{"2":{"122":47}}],["voter",{"2":{"122":6}}],["votesupport",{"2":{"122":2}}],["votes",{"2":{"122":16}}],["votedabstain",{"2":{"122":1}}],["votedagainst",{"2":{"122":1}}],["votedfor",{"2":{"122":1}}],["voted",{"2":{"122":8}}],["vote",{"2":{"23":1,"122":26}}],["v3",{"2":{"43":1}}],["variables",{"0":{"103":1},"2":{"102":1,"103":2}}],["various",{"2":{"2":1,"61":1,"66":1,"83":1,"105":1}}],["validation",{"2":{"52":1}}],["validator",{"2":{"50":1}}],["validates",{"2":{"90":1,"104":3}}],["validate",{"2":{"50":1}}],["values",{"2":{"44":1,"57":1,"108":2,"110":1,"122":3}}],["value",{"2":{"35":1,"36":1,"103":15,"104":2,"121":1,"122":6}}],["v1",{"2":{"7":1,"23":1,"35":1,"72":2,"74":3,"76":3,"80":4,"81":1,"90":1,"103":2,"104":10,"121":1,"122":1}}],["venturefunding",{"2":{"122":1}}],["venv",{"2":{"7":1,"76":1,"80":1,"85":1,"86":1,"88":1,"91":1,"94":1,"97":1,"104":3}}],["version",{"2":{"121":1,"122":1}}],["version=0",{"2":{"72":1}}],["ve",{"2":{"45":1}}],["vectors",{"2":{"69":1}}],["vector",{"0":{"69":1},"2":{"6":1,"7":1,"12":1,"14":1,"53":1,"54":2,"59":2,"60":1,"61":4,"68":1,"69":3,"72":1,"76":1,"80":1,"91":1,"101":2,"103":4,"104":9}}],["view",{"2":{"122":1}}],["views",{"2":{"121":1}}],["visible",{"2":{"121":1}}],["visit",{"2":{"0":1,"3":1,"11":1,"33":1,"61":1}}],["via",{"2":{"65":1,"76":1,"102":2}}],["virtual",{"2":{"7":1,"10":1}}],["citizen",{"2":{"122":2}}],["circulatingsupply",{"2":{"121":1}}],["ctx",{"2":{"72":2,"74":2}}],["criteriavalue",{"2":{"122":2}}],["criteria",{"2":{"122":4}}],["crucial",{"2":{"69":1}}],["creation",{"2":{"122":5}}],["creating",{"2":{"0":1,"57":1,"64":1,"75":1,"104":5}}],["createblock",{"2":{"122":1}}],["createdtransactionhash",{"2":{"122":1}}],["createdtime",{"2":{"122":1}}],["createdtimestamp",{"2":{"122":1}}],["createdat",{"2":{"118":3,"121":2}}],["created",{"2":{"101":1,"104":4,"122":10}}],["create",{"2":{"17":1,"29":1,"50":1,"53":1,"54":1,"58":1,"68":1,"81":2,"105":1}}],["currency",{"2":{"121":1}}],["currently",{"2":{"75":2}}],["current",{"2":{"61":1,"122":1}}],["currentstate",{"2":{"38":1,"121":1}}],["cursorpagination",{"2":{"36":1,"121":1}}],["cursor",{"2":{"36":3,"115":1,"121":3}}],["customlitellmembedder",{"2":{"59":1}}],["customparseunstructured",{"2":{"59":1}}],["customizing",{"0":{"44":1,"102":1},"1":{"103":1}}],["customize",{"2":{"11":1}}],["custom",{"0":{"73":1},"2":{"28":1,"42":1,"58":1,"61":1,"65":1,"73":1,"74":1,"76":1,"80":1}}],["cname",{"2":{"33":1,"34":4,"37":1,"121":10}}],["cdk",{"2":{"65":1,"105":1}}],["cd",{"2":{"10":1,"72":1,"84":1}}],["closed",{"2":{"121":1,"122":5}}],["cloned",{"2":{"10":1}}],["clone",{"0":{"9":1},"2":{"9":2,"84":2}}],["cleared",{"2":{"101":1}}],["clear",{"2":{"74":1}}],["clean",{"2":{"67":1,"91":1,"93":1,"100":1}}],["cleanup",{"2":{"52":1,"104":1}}],["client",{"2":{"60":1}}],["click",{"2":{"56":1}}],["cli",{"0":{"10":1,"14":1,"27":1,"41":1,"56":1,"80":1,"82":1,"101":1},"1":{"15":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1},"2":{"5":2,"10":1,"11":1,"15":1,"18":1,"30":1,"52":3,"56":2,"61":1,"81":1,"83":1,"84":1,"85":1,"104":7}}],["casting",{"2":{"122":1}}],["cast",{"2":{"122":5}}],["case",{"2":{"22":1,"38":1,"64":1,"77":1,"103":1,"105":1,"121":1}}],["calculated",{"2":{"122":1}}],["calldata",{"2":{"122":3}}],["calls",{"2":{"22":1,"34":1}}],["category",{"2":{"122":2}}],["categoryid",{"2":{"121":1}}],["categories",{"2":{"121":2}}],["categorized",{"2":{"2":1}}],["capacity",{"2":{"103":2}}],["capabilities",{"2":{"64":1}}],["careful",{"2":{"103":1}}],["caused",{"2":{"80":1,"104":2}}],["caching",{"0":{"66":1},"2":{"53":1,"66":2}}],["cachen",{"2":{"100":1}}],["cached",{"2":{"54":1,"66":1,"101":2,"103":1}}],["cache",{"2":{"52":1,"66":1,"91":1,"93":1,"101":2}}],["cancellation",{"2":{"122":1}}],["cancelledtransactionhash",{"2":{"122":1}}],["cancelledtime",{"2":{"122":1}}],["cancelled",{"2":{"122":2}}],["canceled",{"2":{"122":3}}],["cannot",{"2":{"77":1}}],["can",{"2":{"1":1,"2":1,"6":1,"11":1,"12":1,"14":1,"18":3,"20":1,"30":2,"33":1,"41":1,"53":1,"54":1,"61":3,"74":1,"76":1,"77":1,"80":1,"102":1,"103":3,"104":8,"109":1,"117":1,"119":2,"120":2,"122":4}}],["count",{"2":{"122":5}}],["could",{"2":{"103":1}}],["color",{"2":{"121":1}}],["collect",{"2":{"49":1}}],["collections",{"0":{"47":1}}],["collection",{"2":{"28":1,"42":1,"54":1,"60":1,"61":1,"74":3,"101":2}}],["collective",{"0":{"26":1},"1":{"27":1,"28":1},"2":{"2":2,"17":1}}],["collateral",{"2":{"43":1}}],["cosine",{"2":{"103":2}}],["co",{"2":{"74":2}}],["core",{"2":{"64":1}}],["code",{"0":{"53":1},"1":{"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1},"2":{"65":1,"105":1}}],["convert",{"2":{"105":1}}],["confirming",{"2":{"104":1}}],["confirmation",{"2":{"104":1}}],["configuring",{"2":{"104":1}}],["configured",{"2":{"61":1}}],["configure",{"2":{"28":1,"42":1}}],["configurations",{"2":{"104":1}}],["configuration",{"0":{"11":1,"21":1,"23":1,"25":1,"33":1,"35":1,"37":1,"74":1},"2":{"11":1,"52":1,"57":1,"73":1,"102":1,"104":3,"112":1,"114":1}}],["config",{"0":{"102":1,"109":1},"1":{"103":1},"2":{"12":4,"18":1,"21":1,"23":3,"24":2,"27":2,"30":1,"33":1,"35":2,"41":2,"74":1,"85":1,"86":1,"90":2,"91":1,"92":1,"94":1,"95":1,"97":1,"98":1,"100":6,"102":1,"103":3,"104":5,"108":1,"121":4,"122":5}}],["concurrent",{"2":{"103":4}}],["concise",{"2":{"74":1}}],["consumed",{"2":{"103":1}}],["consumer",{"2":{"59":1,"77":1}}],["consuming",{"2":{"72":1}}],["condition",{"2":{"36":1,"121":1}}],["conda",{"2":{"7":1}}],["contributor",{"2":{"122":1}}],["contracts",{"2":{"122":3}}],["contract",{"2":{"122":18}}],["contractaddress",{"2":{"121":1,"122":1}}],["containing",{"2":{"57":1}}],["contains",{"2":{"17":1,"29":1,"101":1,"108":1}}],["container",{"2":{"7":1,"104":10}}],["context",{"2":{"74":2,"122":1}}],["contextual",{"2":{"6":1}}],["content",{"2":{"6":1,"21":1,"33":1,"38":3,"39":1,"54":1,"104":1,"109":2,"121":3,"122":4}}],["connecting",{"2":{"68":1}}],["connection",{"2":{"22":1,"34":1,"76":2,"80":5,"104":9,"121":1,"122":1}}],["connects",{"2":{"54":1,"60":1,"68":1}}],["connectors",{"2":{"65":3,"66":1,"105":1}}],["connector",{"0":{"22":1,"34":1,"111":1},"1":{"112":1,"113":1,"114":1,"115":1,"116":1},"2":{"23":1,"24":2,"35":1,"57":1,"58":1,"60":1,"61":1,"93":2,"101":1,"103":1,"112":1,"121":2,"122":3}}],["connect",{"2":{"5":1,"52":1,"59":1,"104":2}}],["common",{"2":{"114":1}}],["committed",{"2":{"103":1}}],["commits",{"2":{"103":1}}],["commentvote",{"2":{"122":2}}],["comment",{"2":{"52":1,"122":23}}],["commands",{"0":{"15":1,"90":1},"1":{"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1},"2":{"15":1,"56":2,"83":1,"85":1,"88":1,"90":1,"101":1}}],["command",{"2":{"5":1,"10":1,"11":1,"12":1,"14":2,"18":1,"27":2,"30":1,"41":2,"52":1,"72":1,"76":1,"80":1,"85":2,"88":1,"101":1,"102":1,"104":4}}],["combine",{"2":{"39":1,"110":1,"121":1,"122":1}}],["com",{"2":{"9":1,"22":1,"23":1,"24":2,"34":1,"76":1,"84":1,"121":3,"122":4}}],["compared",{"2":{"117":1}}],["compatible",{"2":{"61":1,"68":1,"75":1,"76":1,"103":1}}],["comply",{"2":{"106":1}}],["completed",{"2":{"12":1,"104":2}}],["complete",{"2":{"1":1,"38":1,"88":1,"91":1,"100":1,"104":1}}],["computer",{"2":{"104":1}}],["compose",{"2":{"104":3}}],["components",{"0":{"55":1},"1":{"56":1,"57":1,"58":1,"59":1,"60":1}}],["comprising",{"2":{"112":1}}],["comprise",{"2":{"53":1}}],["compresses",{"2":{"61":1}}],["compressed",{"2":{"27":1,"101":1}}],["comprehensive",{"2":{"1":1,"2":1}}],["covered",{"2":{"45":1}}],["cover",{"2":{"5":1}}],["chosen",{"2":{"122":1}}],["choice",{"2":{"38":2,"121":2,"122":1}}],["choices",{"2":{"38":1,"121":1,"122":3}}],["change",{"2":{"113":1}}],["changes",{"2":{"73":1}}],["chat",{"2":{"74":7}}],["chainid",{"2":{"122":2}}],["chain",{"2":{"43":1,"122":8}}],["chains",{"2":{"1":1}}],["charge",{"2":{"104":1,"116":1}}],["chars",{"2":{"39":2,"110":2,"121":2,"122":2}}],["characters",{"2":{"39":1,"110":1,"121":1,"122":1}}],["chunk",{"2":{"67":1,"122":1}}],["chunking",{"0":{"39":1,"67":1,"110":1},"2":{"39":3,"52":1,"54":1,"57":3,"59":3,"61":1,"66":1,"91":1,"101":1,"103":2,"110":2,"117":1,"119":1,"121":2,"122":2}}],["chunked",{"0":{"97":1},"1":{"98":1,"99":1},"2":{"15":3,"52":1,"54":2,"88":2,"91":2,"93":2,"97":6,"99":2,"100":4,"101":1}}],["checking",{"2":{"104":3}}],["checkout",{"2":{"50":1}}],["check",{"2":{"1":1,"2":1,"6":1,"11":1,"13":1,"15":1,"51":1,"52":2,"56":1,"84":1,"87":1,"104":1}}],["i",{"2":{"122":1}}],["icons",{"2":{"121":1}}],["imageurl",{"2":{"121":1}}],["implement",{"2":{"58":1,"60":1}}],["implements",{"2":{"23":1,"66":1}}],["important",{"2":{"122":1}}],["importing",{"0":{"79":1,"81":1},"2":{"80":1}}],["imported",{"2":{"54":1,"61":1,"74":1,"80":1}}],["import",{"0":{"28":1,"42":1},"2":{"74":1,"81":1}}],["illustrates",{"2":{"61":1}}],["identifier",{"2":{"117":1}}],["id",{"2":{"25":4,"34":2,"37":1,"38":1,"57":1,"117":5,"118":3,"121":11,"122":21}}],["io",{"2":{"23":1,"34":1,"121":1,"122":1}}],["iscitizen",{"2":{"122":2}}],["isenabled",{"2":{"121":1}}],["issue",{"2":{"52":1,"122":4}}],["issues",{"2":{"52":1,"122":2}}],["is",{"2":{"6":1,"10":1,"12":1,"15":1,"18":1,"23":1,"24":1,"30":1,"35":1,"36":1,"37":1,"38":1,"43":1,"53":2,"54":1,"66":1,"68":1,"74":4,"77":1,"80":1,"81":1,"84":1,"90":3,"101":3,"104":12,"105":1,"106":1,"110":1,"113":1,"115":1,"116":1,"121":1,"122":6}}],["if",{"2":{"3":1,"6":1,"14":1,"32":1,"51":1,"52":1,"74":2,"76":1,"77":1,"80":1,"84":1,"93":2,"101":1,"103":1,"104":4,"109":1,"122":4}}],["items",{"2":{"38":4,"121":11,"122":23}}],["it",{"0":{"48":1},"1":{"49":1,"50":1,"51":1,"52":1},"2":{"1":1,"4":1,"6":1,"10":1,"11":1,"13":1,"18":1,"22":1,"28":1,"30":1,"37":1,"42":1,"60":1,"61":1,"67":1,"77":1,"80":1,"83":1,"84":1,"90":1,"93":2,"103":2,"104":6,"105":3,"114":1,"116":1,"117":1}}],["its",{"2":{"1":1,"84":1}}],["involved",{"2":{"122":2}}],["init",{"2":{"73":1,"76":1,"80":1,"104":4}}],["initiates",{"2":{"61":1}}],["initiating",{"2":{"57":1}}],["initialize",{"2":{"73":1}}],["initialization",{"2":{"5":1}}],["initial",{"2":{"27":1,"41":1,"52":1}}],["ingestion",{"2":{"67":1}}],["indicating",{"2":{"122":6}}],["individual",{"2":{"54":1}}],["independent",{"2":{"61":1}}],["indexedat",{"2":{"38":1,"121":1}}],["indexedresult",{"2":{"38":1,"121":1}}],["inputs",{"2":{"117":1,"119":1}}],["input",{"0":{"58":1},"2":{"54":1,"57":4,"58":1,"59":1}}],["inform",{"2":{"74":1}}],["information",{"2":{"1":1,"6":1,"11":1,"43":3,"74":2,"103":1,"110":1,"122":8}}],["info",{"2":{"35":1,"121":1}}],["injection",{"2":{"57":1}}],["inject",{"2":{"24":2,"35":2,"36":1,"117":1,"121":3,"122":2}}],["including",{"2":{"91":1,"122":12}}],["include",{"2":{"39":1,"52":1,"74":1,"110":1,"121":1,"122":1}}],["included",{"2":{"38":1,"74":2,"117":1,"119":1}}],["includes",{"2":{"0":1,"113":1,"116":1}}],["increment",{"2":{"24":1,"115":2,"122":1}}],["inspiration",{"2":{"51":1}}],["inserted",{"2":{"24":1}}],["instruct",{"2":{"74":2}}],["instructions",{"0":{"8":1},"1":{"9":1,"10":1,"11":1},"2":{"73":1,"84":1,"114":1}}],["instance",{"2":{"61":1,"68":1,"104":9}}],["installed",{"2":{"84":1,"104":1}}],["installation",{"0":{"84":1}}],["install",{"0":{"10":1},"2":{"10":2,"68":1,"77":1,"78":1,"84":5}}],["int32",{"2":{"122":2}}],["integrate",{"2":{"104":1}}],["integrated",{"2":{"62":1}}],["integrates",{"2":{"59":1}}],["integration",{"0":{"48":1},"1":{"49":1,"50":1,"51":1,"52":1},"2":{"64":1,"65":1}}],["integrations",{"2":{"22":1,"34":1,"121":1,"122":1}}],["integer",{"2":{"38":7,"121":35,"122":5}}],["intermediary",{"2":{"103":1}}],["interface",{"2":{"5":1,"85":1}}],["interacting",{"2":{"65":1,"68":1}}],["interact",{"2":{"2":1,"68":1}}],["interested",{"2":{"3":1}}],["interest",{"2":{"1":1}}],["into",{"0":{"28":1,"42":1},"2":{"6":1,"24":3,"35":2,"36":1,"54":4,"57":1,"59":2,"61":1,"62":1,"80":1,"81":1,"101":1,"103":1,"105":1,"113":1,"121":3,"122":2}}],["in",{"0":{"53":1,"72":1,"79":1},"1":{"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1},"2":{"0":1,"3":1,"6":1,"12":1,"13":2,"16":1,"18":1,"20":1,"22":1,"27":1,"28":1,"30":1,"33":1,"36":2,"38":3,"41":1,"42":1,"44":1,"52":2,"54":2,"58":1,"60":1,"61":1,"66":1,"69":1,"71":1,"72":1,"73":2,"74":2,"75":1,"77":2,"94":1,"96":1,"97":2,"99":1,"101":5,"102":1,"103":2,"104":10,"105":4,"106":1,"108":1,"110":1,"112":1,"113":1,"114":1,"116":1,"117":5,"118":2,"119":2,"120":2,"121":3,"122":6}}],["grants",{"2":{"122":1}}],["grantsandfunding",{"2":{"122":1}}],["grant",{"2":{"122":2}}],["great",{"0":{"46":1},"1":{"47":1},"2":{"122":1}}],["given",{"2":{"122":6}}],["github",{"2":{"9":1,"47":1,"84":1,"122":1}}],["git",{"2":{"9":3,"84":1}}],["global",{"0":{"89":1}}],["gpu",{"2":{"77":1}}],["gguf",{"2":{"72":3,"74":4,"80":1,"81":1}}],["ggml",{"2":{"72":2}}],["gather",{"0":{"49":1}}],["gaia|other",{"2":{"86":1,"87":1,"104":1}}],["gaianet",{"2":{"9":1,"10":1,"71":2,"73":2,"74":3,"84":2,"104":2}}],["gaia",{"0":{"6":1,"28":1,"42":1,"70":1,"72":1,"73":1,"74":1},"1":{"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"71":1,"72":1,"73":1,"74":1},"2":{"5":1,"6":1,"7":2,"54":1,"61":3,"68":1,"71":2,"72":1,"73":1,"74":1,"75":1,"76":3,"77":1,"80":2,"86":1,"87":1,"103":2,"104":20}}],["gz",{"2":{"28":1,"42":1,"101":1}}],["gt",{"2":{"14":1,"15":6,"34":2,"52":2,"72":3,"80":1,"81":2,"101":1,"104":2,"121":5,"122":16}}],["guild",{"2":{"9":1,"84":1}}],["guide",{"0":{"48":1,"71":1},"1":{"49":1,"50":1,"51":1,"52":1},"2":{"2":1,"5":1,"28":2,"42":2,"45":1,"50":1,"51":1,"71":1,"104":1}}],["g",{"2":{"7":3,"12":2,"52":1,"81":1,"109":3,"117":1}}],["gets",{"2":{"35":1}}],["getting",{"0":{"19":1,"31":1,"78":1}}],["get",{"2":{"3":1,"13":2,"21":1,"23":1,"33":2,"35":1,"36":1,"45":1,"51":1,"109":1,"121":3,"122":2}}],["generation",{"0":{"68":1},"2":{"6":1,"53":1,"54":1,"59":1,"61":2,"74":1,"83":2,"91":1,"93":1}}],["generating",{"2":{"0":1,"14":1,"54":1,"59":1,"68":1,"104":1}}],["generated",{"2":{"28":1,"42":1,"57":1,"61":1,"69":1,"101":2,"103":1}}],["generates",{"2":{"17":1,"29":1,"54":1,"61":2,"105":1}}],["generate",{"0":{"26":1,"40":1},"1":{"27":1,"28":1,"41":1,"42":1,"43":1,"44":1},"2":{"1":1,"2":1,"6":1,"44":1,"57":1,"60":1,"61":1,"72":1,"105":1}}],["governor",{"2":{"122":2}}],["governance",{"0":{"1":1,"29":1,"121":1},"1":{"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1},"2":{"1":1,"29":1,"33":1,"34":1,"121":1,"122":5}}],["goes",{"2":{"101":1}}],["goldmine",{"2":{"47":1}}],["got",{"2":{"45":1}}],["goods",{"2":{"2":1,"122":1}}],["occurred",{"2":{"122":2}}],["oauth",{"2":{"114":1}}],["omit",{"2":{"104":1}}],["ok",{"2":{"76":2,"80":2,"104":6}}],["ollama",{"0":{"77":1,"78":1,"79":1},"1":{"78":1,"79":1,"80":1,"81":1},"2":{"59":2,"68":3,"75":1,"76":1,"77":2,"78":1,"80":4,"81":5,"103":1}}],["our",{"2":{"51":1}}],["outlined",{"2":{"73":1}}],["outlines",{"2":{"62":1}}],["out",{"2":{"51":1,"52":1,"122":2}}],["outputs",{"0":{"101":1}}],["output",{"0":{"60":1},"2":{"12":1,"27":1,"28":1,"41":1,"42":1,"52":1,"57":1,"60":1,"61":1,"66":1,"101":1,"103":3}}],["overall",{"2":{"122":2}}],["overrides",{"2":{"93":1}}],["over",{"0":{"64":1},"2":{"64":1}}],["overlap",{"2":{"39":2,"110":2,"121":2,"122":2}}],["overview",{"0":{"54":1,"61":1,"83":1,"105":1},"1":{"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1},"2":{"20":1,"104":1,"120":1}}],["object",{"2":{"22":1,"23":1,"34":1,"35":1,"38":8,"54":1,"80":1,"104":2,"108":1,"116":1,"118":1,"119":1,"121":21,"122":50}}],["orchestrating",{"2":{"116":1}}],["order",{"2":{"73":1}}],["orig",{"2":{"39":1,"110":1,"121":1,"122":1}}],["organization",{"2":{"122":5}}],["org",{"2":{"22":1,"34":1,"38":1,"118":1,"121":6,"122":1}}],["or",{"2":{"6":1,"7":1,"9":1,"11":1,"13":1,"15":2,"18":1,"28":1,"30":1,"42":1,"51":1,"52":1,"53":1,"61":1,"74":7,"103":1,"104":5,"105":1,"122":9}}],["otherwise",{"2":{"90":1,"104":3}}],["other",{"0":{"3":1,"44":1,"45":1},"1":{"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1},"2":{"3":2,"5":1,"12":1,"38":2,"52":1,"61":2,"74":1,"76":3,"80":2,"87":1,"104":2,"122":1}}],["operations",{"2":{"103":5}}],["openai",{"0":{"76":1},"2":{"61":1,"68":2,"75":2,"76":4,"80":1,"90":1,"103":4}}],["openapi",{"0":{"19":1,"31":1},"2":{"12":4,"13":2,"14":1,"15":1,"17":1,"27":1,"29":1,"41":1,"49":1,"50":3,"52":1,"54":1,"57":3,"61":1,"91":3,"92":2,"100":2,"105":2,"117":2,"118":1}}],["open",{"0":{"67":1},"2":{"52":1,"122":1}}],["opt",{"2":{"77":1}}],["optimisticproposaldata",{"2":{"122":2}}],["optimisticproposalresults",{"2":{"122":2}}],["optimistic",{"2":{"122":8}}],["optimism",{"0":{"2":1,"17":1,"122":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1},"2":{"2":1,"21":1,"23":1,"27":1,"28":3,"122":2}}],["optimized",{"2":{"67":1}}],["optimize",{"2":{"66":1}}],["options",{"0":{"87":1,"89":1,"93":1,"96":1,"99":1},"2":{"85":2,"86":2,"88":2,"91":2,"94":2,"97":2,"104":3,"112":1,"121":2,"122":3}}],["option",{"2":{"18":1,"24":2,"30":1,"36":1,"52":3,"121":1,"122":7}}],["optional",{"2":{"7":2,"117":1}}],["op",{"0":{"26":1},"1":{"27":1,"28":1},"2":{"2":3,"17":1,"122":2}}],["onchain",{"2":{"122":3}}],["once",{"2":{"12":1,"14":1}}],["online",{"2":{"105":1}}],["only",{"2":{"22":1,"52":2,"72":1,"91":2,"93":2,"100":1,"117":1}}],["onboarding",{"2":{"43":1}}],["oneof",{"2":{"122":3}}],["one",{"2":{"7":1,"18":1,"30":1,"90":1,"104":1,"122":1}}],["on",{"2":{"1":2,"2":2,"5":1,"6":2,"13":1,"14":1,"33":1,"38":1,"41":1,"43":1,"50":1,"52":1,"56":1,"57":1,"59":1,"61":1,"68":1,"69":1,"73":1,"74":1,"75":1,"77":2,"87":1,"101":1,"103":1,"104":2,"117":1,"121":2,"122":23}}],["own",{"0":{"13":1},"2":{"0":1,"7":1,"10":1,"16":1,"104":1}}],["offer",{"2":{"75":1}}],["offers",{"2":{"1":2,"68":1,"76":1,"83":1,"103":1,"104":1}}],["official",{"2":{"28":1,"42":1,"50":1,"71":1,"78":1}}],["offsetincrement",{"2":{"24":1,"122":1}}],["offset",{"2":{"24":4,"115":1,"122":5}}],["of",{"2":{"0":1,"1":1,"7":1,"13":1,"14":1,"15":1,"20":1,"33":1,"38":1,"47":2,"54":1,"65":1,"66":1,"67":1,"68":1,"72":1,"74":2,"75":1,"77":2,"81":1,"83":1,"90":2,"101":1,"102":1,"103":4,"104":2,"108":1,"113":2,"116":1,"117":2,"119":1,"121":1,"122":134}}],["year",{"2":{"122":1}}],["years",{"2":{"122":1}}],["y",{"2":{"104":8}}],["yyyy",{"2":{"28":1,"42":1,"101":2}}],["you",{"2":{"1":1,"3":1,"6":3,"11":1,"12":4,"13":3,"14":4,"16":2,"18":3,"20":1,"27":1,"30":2,"33":1,"41":1,"44":1,"45":1,"52":1,"73":1,"74":5,"75":1,"76":3,"77":2,"80":2,"84":1,"90":1,"104":26,"105":2,"119":1,"120":2}}],["your",{"0":{"13":1,"72":1,"73":1},"2":{"0":1,"1":1,"6":1,"7":2,"9":1,"10":1,"11":1,"16":1,"18":1,"28":1,"30":1,"42":1,"45":1,"50":1,"52":1,"57":1,"61":1,"71":1,"72":1,"73":1,"74":8,"81":1,"104":4}}],["yaml",{"2":{"0":1,"12":5,"23":1,"24":2,"27":2,"41":2,"44":1,"57":2,"91":3,"92":2,"93":1,"94":1,"95":1,"97":1,"98":1,"100":6,"101":1,"105":1,"121":2,"122":3}}],["block",{"2":{"122":5}}],["blocknumber",{"2":{"38":1,"121":1}}],["budgetamount",{"2":{"122":1}}],["budgettoken",{"2":{"122":1}}],["budgettokensspent",{"2":{"122":2}}],["budget",{"2":{"122":3}}],["bumpedat",{"2":{"121":1}}],["building",{"2":{"108":1,"109":1}}],["build",{"2":{"0":1}}],["breakdown",{"2":{"122":2}}],["break",{"2":{"103":1}}],["browse",{"2":{"47":1}}],["bar",{"2":{"118":1}}],["backend",{"2":{"103":1}}],["background",{"2":{"77":1}}],["batch",{"2":{"72":2,"74":2,"103":3}}],["basichttpauthenticator",{"2":{"114":1}}],["basic",{"0":{"21":1,"33":1}}],["basedir",{"2":{"101":8}}],["based",{"2":{"6":1,"23":1,"24":3,"36":1,"54":1,"64":1,"69":1,"75":1,"103":2,"105":1,"115":1,"121":2,"122":3}}],["base",{"0":{"26":1,"40":1,"73":1,"114":1,"116":1},"1":{"27":1,"28":1,"41":1,"42":1,"43":1,"44":1},"2":{"1":1,"2":1,"6":1,"16":1,"17":1,"23":3,"27":1,"28":1,"29":1,"35":3,"41":2,"42":1,"44":1,"53":1,"54":1,"60":1,"61":1,"69":1,"71":1,"72":1,"73":1,"74":3,"101":1,"103":4,"104":1,"106":1,"113":1,"114":1,"116":3,"121":4,"122":4}}],["bases",{"2":{"0":1}}],["body",{"2":{"121":2}}],["boolean",{"2":{"121":6,"122":6}}],["bot",{"2":{"43":1}}],["both",{"2":{"14":1,"61":1}}],["boardrooms",{"2":{"1":1}}],["boardroom",{"0":{"1":1,"29":1,"31":1,"121":1},"1":{"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1},"2":{"1":2,"12":6,"29":1,"30":1,"33":2,"34":4,"35":1,"41":3,"42":2,"44":1,"74":4,"100":6,"121":7}}],["behind",{"2":{"122":3}}],["been",{"2":{"122":3}}],["before",{"2":{"104":1}}],["between",{"2":{"103":1,"122":2}}],["bearerauthenticator",{"2":{"23":2,"114":1,"122":1}}],["below",{"2":{"15":1,"23":1,"25":1,"37":1,"74":1,"90":1,"104":1,"120":1}}],["being",{"2":{"4":1}}],["be",{"2":{"2":1,"4":1,"6":1,"12":1,"38":2,"39":1,"41":1,"53":1,"54":1,"61":3,"71":1,"72":1,"74":1,"90":1,"101":2,"102":1,"103":6,"104":4,"108":1,"109":1,"112":1,"117":4,"118":1,"119":4,"122":8}}],["by",{"2":{"2":1,"12":1,"27":1,"29":1,"33":1,"36":1,"38":1,"39":1,"41":1,"52":1,"61":1,"72":1,"76":1,"80":1,"84":1,"101":1,"102":1,"103":2,"104":6,"108":1,"110":1,"117":1,"121":1,"122":10}}],["mirror",{"2":{"122":1}}],["minimum",{"2":{"122":5}}],["milliseconds",{"2":{"103":2}}],["ms",{"2":{"103":3}}],["m",{"2":{"74":1}}],["must",{"2":{"106":1,"108":1,"112":1,"117":2,"118":1,"119":1}}],["multiple",{"2":{"113":2,"115":1,"122":1}}],["multiprocessing",{"2":{"64":1}}],["multipage",{"2":{"39":1,"110":1,"121":1,"122":1}}],["multithreading",{"2":{"64":1}}],["much",{"2":{"1":1}}],["mm",{"2":{"28":2,"42":2,"101":4}}],["media",{"2":{"122":2}}],["measure",{"2":{"122":2}}],["means",{"2":{"103":1}}],["messages",{"2":{"90":1}}],["message",{"2":{"74":1,"85":1,"86":1,"88":1,"91":1,"94":1,"97":1,"104":3}}],["mechanisms",{"2":{"66":1}}],["mention",{"2":{"28":1,"42":1,"74":1}}],["menu",{"2":{"6":1}}],["metis",{"2":{"43":2}}],["meta",{"2":{"74":2}}],["metacartel",{"2":{"34":1,"121":4}}],["metadata",{"2":{"22":1,"32":1,"34":1,"38":1,"54":1,"60":1,"74":2,"109":1,"112":1,"122":10}}],["methods",{"2":{"114":1}}],["method",{"2":{"21":1,"23":1,"33":1,"35":1,"109":2,"114":1,"121":2,"122":2}}],["markdowntitle",{"2":{"122":2}}],["marketprices",{"2":{"121":1}}],["may",{"2":{"122":1}}],["match",{"2":{"118":1}}],["made",{"2":{"103":1,"122":2}}],["mac",{"2":{"74":1,"77":1}}],["machine",{"2":{"9":1,"67":1,"68":1}}],["maxapprovals",{"2":{"122":1}}],["maxsupply",{"2":{"121":1}}],["maximum",{"2":{"103":2,"122":1}}],["max",{"2":{"39":1,"80":1,"103":4,"104":2,"110":1,"121":1,"122":1}}],["making",{"2":{"22":1,"34":1,"67":1}}],["make",{"2":{"13":1,"27":1,"35":1,"41":1,"73":1,"74":1,"104":1}}],["main",{"2":{"12":1,"20":1,"74":2}}],["many",{"2":{"103":1,"104":1}}],["manhattan",{"2":{"103":1}}],["management",{"2":{"84":1}}],["manager",{"2":{"7":1}}],["manually",{"0":{"81":1}}],["manifests",{"0":{"120":1},"1":{"121":1,"122":1},"2":{"13":1}}],["manifest",{"0":{"13":1,"16":1,"20":1,"32":1,"51":1,"105":1,"106":1},"1":{"21":1,"22":1,"23":1,"24":1,"25":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"106":1,"107":2,"108":2,"109":2,"110":2,"111":2,"112":2,"113":2,"114":2,"115":2,"116":2,"117":2,"118":2,"119":2},"2":{"0":4,"12":1,"13":3,"14":1,"15":3,"16":1,"17":1,"20":1,"22":1,"29":1,"33":1,"34":1,"44":1,"52":2,"54":4,"57":7,"58":1,"61":2,"91":5,"92":2,"93":3,"94":3,"95":2,"97":3,"98":2,"101":1,"105":2,"106":2,"108":1,"111":1,"113":1,"116":1,"120":1}}],["months",{"2":{"122":2}}],["most",{"2":{"102":1,"105":1,"122":1}}],["module",{"0":{"58":1,"60":1},"2":{"56":1,"58":1,"61":8}}],["modules",{"2":{"53":1}}],["modify",{"2":{"44":1}}],["mode",{"0":{"72":1},"2":{"39":1,"72":1,"84":4,"110":1,"121":1,"122":1}}],["modelfile",{"2":{"81":3}}],["models",{"2":{"64":1,"67":1,"68":2,"80":3,"90":1,"104":2}}],["model",{"0":{"79":1,"81":1},"2":{"6":1,"7":2,"54":2,"61":3,"72":10,"73":1,"74":1,"76":1,"80":4,"81":5,"87":1,"103":2,"104":4}}],["molochdao",{"2":{"12":1,"74":1}}],["more",{"2":{"0":1,"1":1,"4":1,"6":1,"11":2,"12":1,"14":1,"15":1,"59":1,"75":1,"77":1,"81":1,"102":1,"103":1,"110":1,"120":1,"121":2,"122":4}}],["smart",{"2":{"122":1}}],["slug",{"2":{"121":2}}],["symbol",{"2":{"121":1}}],["synchronous",{"2":{"116":1}}],["system",{"0":{"7":1},"2":{"53":1,"61":1,"74":2}}],["skips",{"2":{"93":1}}],["say",{"2":{"74":2}}],["sample",{"0":{"120":1},"1":{"121":1,"122":1},"2":{"13":1}}],["scratch",{"2":{"91":1,"93":1,"101":1,"104":1}}],["scores",{"2":{"122":6}}],["score",{"2":{"74":1,"103":1}}],["schemas",{"0":{"118":1},"2":{"25":3,"37":2,"38":1,"50":2,"105":1,"117":2,"118":4,"121":6,"122":29}}],["schema",{"0":{"38":1,"50":1,"106":1},"1":{"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1},"2":{"22":2,"23":1,"34":2,"35":1,"38":3,"50":1,"59":1,"105":1,"106":1,"111":1,"114":1,"117":4,"118":3,"121":12,"122":2}}],["swagger",{"2":{"49":1,"50":2}}],["show",{"2":{"85":1,"86":1,"88":1,"91":1,"94":1,"97":1,"104":1}}],["showcase",{"2":{"0":1}}],["should",{"2":{"35":1,"72":1,"74":1,"90":1,"117":2,"118":1,"119":1,"122":1}}],["ss",{"2":{"28":1,"42":1,"101":2}}],["signatures",{"2":{"122":2}}],["similar",{"2":{"74":2}}],["similarity",{"2":{"69":2,"103":1}}],["simplifies",{"2":{"67":1}}],["simpleretriever",{"2":{"116":2,"121":2,"122":2}}],["simple",{"2":{"45":1}}],["single",{"2":{"54":1,"59":1,"113":2,"115":1,"116":2,"121":4,"122":3}}],["since",{"2":{"21":1}}],["site",{"2":{"32":1,"105":1}}],["size",{"2":{"24":3,"72":4,"74":4,"76":1,"80":1,"103":2,"104":3,"121":1,"122":2}}],["sociallinks",{"2":{"122":3}}],["social",{"2":{"122":3}}],["socket",{"2":{"72":1}}],["so",{"2":{"104":1}}],["somewhere",{"2":{"104":1}}],["some",{"2":{"22":1,"34":1,"50":1,"77":1,"104":1}}],["source",{"0":{"53":1,"67":1},"1":{"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1},"2":{"6":1,"12":1,"14":1,"53":1,"54":1,"57":3,"58":2,"59":5,"60":1,"66":1,"67":1,"72":1,"91":2,"93":2,"101":1,"104":3,"105":2,"112":1,"114":1,"120":1}}],["sources",{"0":{"45":1,"65":1},"1":{"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1},"2":{"3":1,"22":1,"34":1,"65":1,"121":1,"122":1}}],["succeeded",{"2":{"122":1}}],["such",{"2":{"61":2,"103":1}}],["suggests",{"2":{"104":1}}],["supplied",{"2":{"122":1}}],["supply",{"2":{"122":7}}],["supplement",{"2":{"73":1}}],["supports",{"2":{"65":1,"75":2,"76":1,"114":1,"115":1}}],["supported",{"0":{"75":1},"1":{"76":1,"77":1,"78":1,"79":1,"80":1,"81":1},"2":{"61":1,"75":1,"87":1,"104":1,"109":1}}],["support",{"2":{"5":1,"122":1}}],["supercharge",{"2":{"45":1}}],["susds",{"2":{"43":1}}],["summary",{"2":{"38":3,"121":2,"122":145}}],["submit",{"2":{"122":1}}],["submitted",{"2":{"122":4}}],["subsequent",{"2":{"122":1}}],["subcommand",{"2":{"104":1}}],["sub",{"0":{"15":1},"2":{"122":2}}],["sure",{"2":{"13":1,"27":1,"41":1}}],["spent",{"2":{"122":2}}],["specs",{"2":{"50":1}}],["spec",{"0":{"19":1,"31":1,"112":1},"2":{"12":1,"13":1,"14":1,"15":1,"22":3,"34":3,"50":1,"52":1,"54":1,"57":2,"91":2,"92":2,"105":1,"108":1,"117":2,"118":1,"121":3,"122":3}}],["specified",{"2":{"54":2,"59":1,"93":2,"101":1}}],["specifies",{"2":{"38":1,"72":2,"114":1}}],["specifics",{"2":{"122":1}}],["specifically",{"2":{"67":1}}],["specifications",{"2":{"49":1}}],["specification",{"0":{"22":1,"34":1},"2":{"12":1,"13":1,"17":1,"22":1,"29":1,"34":1,"57":1,"61":1,"91":1,"105":2,"112":1,"121":1,"122":1}}],["specific",{"2":{"11":1,"56":1,"103":1,"122":4}}],["specify",{"2":{"12":1,"104":3,"119":1}}],["spin",{"2":{"5":1,"7":2,"104":2}}],["s",{"0":{"48":1},"1":{"49":1,"50":1,"51":1,"52":1},"2":{"6":1,"13":1,"18":1,"30":1,"32":1,"37":1,"38":1,"45":1,"74":2,"80":1,"93":1,"103":1,"105":1,"117":1,"118":1,"119":2,"122":15}}],["snapshotblocknumber",{"2":{"122":1}}],["snapshotproposaldata",{"2":{"122":2}}],["snapshotproposalresults",{"2":{"122":2}}],["snapshot",{"0":{"28":1,"42":1,"69":1},"2":{"6":1,"12":1,"14":1,"27":1,"28":2,"41":2,"42":2,"54":2,"60":1,"61":2,"69":1,"74":8,"91":1,"101":4,"103":1,"122":9}}],["service",{"2":{"104":1}}],["services",{"2":{"90":1}}],["server",{"2":{"18":1,"68":1,"72":1,"74":1,"75":1,"104":3}}],["serialized",{"2":{"53":1,"57":1}}],["searches",{"2":{"69":1}}],["search",{"2":{"53":1,"69":2,"103":1}}],["select",{"2":{"76":1,"80":1}}],["selecting",{"0":{"73":1}}],["selection",{"0":{"24":1,"36":1},"2":{"28":1,"42":1}}],["selected",{"2":{"59":1,"72":1,"104":1}}],["selectors",{"2":{"113":1}}],["selector",{"0":{"113":1},"2":{"36":1,"113":3,"116":6,"117":1,"121":6,"122":6}}],["see",{"2":{"34":1,"104":1,"121":1}}],["seconds",{"2":{"104":1}}],["secret",{"2":{"22":1,"34":1,"121":1,"122":1}}],["secrets",{"2":{"18":1,"30":1,"104":3}}],["secure",{"2":{"18":1,"30":1}}],["sections",{"2":{"4":1,"5":1,"6":1,"16":1,"20":1,"39":1,"75":1,"110":1,"121":1,"122":1}}],["section",{"2":{"0":1,"1":1,"2":1,"3":1,"12":1,"13":1,"21":1,"39":1,"87":1,"104":1,"105":1,"108":1,"112":1,"117":1,"119":1,"120":1}}],["setting",{"2":{"76":1,"80":1,"103":1,"104":7}}],["settings",{"0":{"102":1},"1":{"103":1},"2":{"5":1,"11":1,"27":1,"28":1,"33":1,"39":1,"41":1,"42":1,"52":1,"57":1,"76":2,"80":2,"85":1,"86":1,"91":1,"92":1,"93":1,"94":1,"95":1,"97":1,"98":1,"102":1,"103":2,"104":17}}],["set",{"2":{"6":1,"18":1,"24":1,"30":1,"39":1,"72":1,"80":1,"102":2,"103":1,"104":4,"109":1,"115":1,"117":1,"122":1}}],["setup",{"0":{"8":1,"11":1,"50":1,"80":1,"86":1,"104":1},"1":{"9":1,"10":1,"11":1},"2":{"5":1,"11":3,"18":1,"27":2,"30":1,"41":2,"52":2,"71":1,"74":1,"75":1,"76":4,"80":2,"85":2,"86":3,"90":2,"102":2,"104":13}}],["step",{"2":{"76":1,"80":1,"104":9}}],["steps",{"2":{"59":1,"61":1}}],["studio",{"2":{"74":1}}],["still",{"2":{"52":1}}],["storing",{"2":{"69":1}}],["stored",{"2":{"54":1,"61":1,"66":1,"101":5,"103":1,"104":4}}],["store",{"2":{"18":1,"30":1,"53":1,"60":1}}],["stop",{"2":{"36":1,"100":1,"121":1}}],["structured",{"2":{"122":1}}],["streamlining",{"2":{"66":1}}],["stream",{"0":{"64":1},"2":{"54":2,"57":1,"58":1,"59":2,"60":1,"61":2,"65":1,"101":3,"105":1}}],["streams",{"2":{"53":1,"54":3,"57":1,"59":2,"61":1,"64":2,"91":1,"101":2,"103":1}}],["strategy",{"2":{"24":2,"36":1,"39":1,"110":1,"115":1,"121":2,"122":4}}],["strategies",{"2":{"0":1,"115":1}}],["string",{"2":{"22":1,"34":3,"38":21,"109":1,"117":1,"118":3,"119":1,"121":73,"122":149}}],["starred",{"2":{"122":2}}],["star",{"2":{"122":1}}],["starting",{"2":{"72":1,"104":4}}],["starttimestamp",{"2":{"38":1,"121":1,"122":1}}],["starttime",{"2":{"38":1,"121":1,"122":1}}],["starts",{"2":{"33":1}}],["start",{"0":{"71":1},"2":{"11":1,"14":1,"71":1,"72":1,"73":2,"93":1,"104":4,"122":3}}],["started",{"2":{"3":1,"45":1,"104":2}}],["standardproposaldata",{"2":{"122":2}}],["standardproposalresults",{"2":{"122":2}}],["standard",{"2":{"122":8}}],["state",{"2":{"122":2}}],["statement",{"2":{"122":7}}],["status",{"2":{"122":6}}],["stages",{"2":{"56":1,"61":1,"62":1,"66":2,"83":1}}],["stage",{"2":{"53":1,"57":1,"67":1,"72":1,"91":2,"93":3,"101":1,"103":2,"104":3,"117":1,"119":1}}],["stack",{"0":{"62":1},"1":{"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1},"2":{"4":1,"6":1}}],["pending",{"2":{"122":4}}],["performed",{"2":{"103":1}}],["performance",{"2":{"64":1,"66":1}}],["performs",{"2":{"61":1}}],["per",{"2":{"57":1,"103":1}}],["publish",{"2":{"105":1}}],["public",{"0":{"47":1},"2":{"2":1,"7":1,"41":1,"47":1,"122":1}}],["pushed",{"2":{"103":1}}],["purposes",{"2":{"87":1,"89":1}}],["pyairbyte",{"0":{"65":1},"2":{"54":1,"58":1}}],["python",{"2":{"6":1,"7":2,"64":1,"65":1,"68":3}}],["power",{"2":{"122":27}}],["positions",{"2":{"122":1}}],["position",{"2":{"121":1}}],["postnumber",{"2":{"121":1}}],["postcount",{"2":{"121":1}}],["posted",{"2":{"74":2}}],["postscount",{"2":{"121":1}}],["posts",{"2":{"32":1}}],["possible",{"2":{"74":2}}],["policy",{"2":{"74":1}}],["port=6333",{"2":{"104":1}}],["port=8080",{"2":{"104":1}}],["port=11434",{"2":{"80":1}}],["port",{"2":{"74":1}}],["portal",{"2":{"30":1}}],["point",{"2":{"74":1}}],["poetry",{"2":{"7":1,"84":5}}],["packages",{"2":{"122":1}}],["passage",{"2":{"122":4}}],["passed",{"2":{"122":1}}],["pass",{"2":{"122":5}}],["past",{"2":{"122":1}}],["paid",{"2":{"47":1}}],["particular",{"2":{"122":5}}],["participation",{"2":{"122":4}}],["partial",{"2":{"122":2}}],["partition",{"2":{"59":1,"67":1}}],["partitioned",{"2":{"54":1}}],["partitioning",{"0":{"67":1},"2":{"54":1,"59":1,"61":1}}],["party",{"2":{"64":1}}],["params",{"0":{"110":1},"2":{"39":1,"57":1,"59":1,"121":1,"122":2}}],["parameter",{"2":{"22":1,"24":2,"34":1,"35":1,"36":1,"52":1,"57":1,"104":1,"108":1,"110":2,"121":3,"122":2}}],["parameters",{"0":{"39":1,"108":1},"2":{"12":1,"14":1,"21":2,"22":1,"24":2,"33":2,"34":1,"44":1,"51":1,"57":3,"58":1,"103":3,"104":1,"108":2,"110":1,"112":2,"117":2,"121":1,"122":2}}],["parse",{"2":{"53":1}}],["parsed",{"2":{"38":1,"117":1,"119":1}}],["parsing",{"2":{"38":1}}],["paths",{"2":{"117":1}}],["pathway",{"0":{"64":1},"2":{"54":1,"58":1,"59":1,"60":1,"61":1,"103":4}}],["path",{"2":{"12":2,"36":1,"74":1,"80":1,"81":1,"91":3,"94":2,"97":2,"100":2,"113":2,"117":1,"121":2,"122":2}}],["paginated",{"2":{"122":1}}],["paginator",{"0":{"115":1},"2":{"24":1,"36":1,"116":1,"121":1,"122":1}}],["pagination",{"0":{"24":1,"36":1},"2":{"0":1,"24":4,"36":2,"115":2,"121":2,"122":4}}],["pagemetadata",{"2":{"122":1}}],["page",{"2":{"11":2,"13":1,"24":4,"36":1,"61":1,"62":1,"115":1,"121":1,"122":4}}],["pinned",{"2":{"121":1}}],["pieces",{"2":{"74":1}}],["pip",{"2":{"10":1,"84":2}}],["pipelines",{"2":{"64":1,"104":1}}],["pipeline",{"0":{"4":1,"5":1,"6":1,"10":1,"11":1,"12":1,"13":1,"14":1,"16":1,"20":1,"26":1,"27":1,"32":1,"40":1,"41":1,"51":1,"55":1,"59":1,"64":1,"70":1,"82":1,"90":1,"102":1,"104":1,"105":1,"106":1,"120":1},"1":{"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":2,"21":1,"22":1,"23":1,"24":1,"25":1,"27":1,"28":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"41":1,"42":1,"43":1,"44":1,"56":1,"57":1,"58":1,"59":1,"60":1,"71":1,"72":1,"73":1,"74":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":2,"92":2,"93":2,"94":2,"95":2,"96":2,"97":2,"98":2,"99":2,"100":1,"101":1,"103":1,"106":1,"107":2,"108":2,"109":2,"110":2,"111":2,"112":2,"113":2,"114":2,"115":2,"116":2,"117":2,"118":2,"119":2,"121":1,"122":1},"2":{"0":4,"4":1,"5":3,"6":3,"9":1,"10":2,"11":2,"12":6,"13":3,"14":4,"15":4,"16":1,"17":3,"18":1,"20":2,"27":4,"29":3,"30":1,"32":1,"41":4,"44":1,"45":1,"52":4,"53":2,"54":3,"56":1,"57":4,"59":1,"61":5,"62":1,"66":1,"72":1,"75":2,"76":6,"77":1,"80":6,"83":2,"84":5,"85":5,"86":3,"88":6,"90":2,"91":7,"92":2,"93":3,"94":5,"95":2,"97":5,"98":2,"100":12,"101":1,"102":2,"103":1,"104":31,"105":2,"106":1,"107":1,"110":1,"113":1,"116":1,"117":1,"120":1}}],["pick",{"2":{"7":1}}],["price",{"2":{"121":1}}],["prior",{"2":{"85":1,"86":1,"90":1,"104":1}}],["privacy",{"2":{"38":1,"121":1}}],["primary",{"2":{"25":2,"37":1,"74":1,"117":4,"121":5,"122":2}}],["prerequisite",{"2":{"122":2}}],["previous",{"2":{"104":1}}],["preload",{"2":{"72":2}}],["prepare",{"2":{"67":1,"114":1}}],["preprocessed",{"2":{"54":1,"59":1,"101":3}}],["preprocessing",{"2":{"54":1,"59":1,"61":1,"67":1}}],["preprocess",{"2":{"53":1}}],["preferred",{"2":{"61":1}}],["preference",{"2":{"7":1,"81":1}}],["pre",{"0":{"18":1,"30":1},"2":{"74":1}}],["profileavatarurl",{"2":{"122":2}}],["proceeding",{"2":{"104":1}}],["process",{"2":{"64":1,"93":2,"104":2}}],["processing",{"2":{"53":1,"54":1,"59":1,"64":2,"66":2}}],["processed",{"2":{"12":1,"27":1,"41":1,"69":1}}],["produced",{"2":{"101":1}}],["production",{"2":{"84":2}}],["providing",{"2":{"54":1,"122":2}}],["provided",{"2":{"74":1}}],["provider",{"2":{"7":1,"50":1,"54":1,"59":2,"61":2,"68":1,"76":9,"77":1,"80":8,"86":2,"87":2,"90":2,"103":8,"104":16}}],["providers",{"0":{"75":1},"1":{"76":1,"77":1,"78":1,"79":1,"80":1,"81":1},"2":{"5":1,"61":2,"68":1,"75":2,"87":1,"104":1,"105":1}}],["provides",{"2":{"2":1,"57":1,"68":1,"69":1,"83":1,"122":1}}],["provide",{"2":{"1":1,"6":1,"18":1,"30":1,"43":1,"61":1,"74":1,"104":1}}],["protocols",{"2":{"32":2,"33":1,"37":1,"121":2}}],["protocol",{"2":{"28":1,"29":1,"32":1,"33":1,"34":4,"38":1,"42":1,"74":2,"121":13}}],["projectcoverimageurl",{"2":{"122":1}}],["project",{"2":{"25":2,"84":2,"122":13}}],["projects",{"2":{"2":1,"17":1,"20":2,"25":2,"122":3}}],["propertyname",{"2":{"122":1}}],["properties",{"2":{"22":1,"34":1,"38":9,"112":1,"118":1,"119":1,"121":21,"122":41}}],["proposer",{"2":{"38":1,"121":1,"122":3}}],["proposalvalue",{"2":{"122":1}}],["proposalid",{"2":{"122":1}}],["proposaltitle",{"2":{"122":1}}],["proposaltemplateid",{"2":{"122":1}}],["proposaltemplate",{"2":{"122":3}}],["proposaltype",{"2":{"122":2}}],["proposalresults",{"2":{"122":1}}],["proposaldata",{"2":{"122":1}}],["proposal",{"2":{"25":2,"37":1,"38":1,"43":1,"121":2,"122":93}}],["proposalsettings",{"2":{"122":1}}],["proposalsvotedon",{"2":{"122":1}}],["proposalscreated",{"2":{"122":1}}],["proposals",{"2":{"1":1,"2":1,"17":1,"20":2,"25":2,"32":2,"37":4,"38":1,"74":2,"121":4,"122":14}}],["prompts",{"0":{"43":1,"73":1},"2":{"28":1,"42":1,"73":1,"74":1}}],["prompt",{"2":{"6":1,"72":1,"74":4,"104":4}}],["please",{"2":{"104":1}}],["planning",{"2":{"77":1}}],["platforms",{"2":{"122":1}}],["platform",{"2":{"2":1}}],["plugged",{"2":{"6":1}}],["duration",{"2":{"103":2}}],["during",{"2":{"103":4,"104":1,"117":1,"119":1}}],["duckdb",{"0":{"66":1},"2":{"54":1,"66":1,"101":1}}],["driven",{"2":{"64":1}}],["draft",{"2":{"22":1,"34":1,"38":1,"118":1,"121":6,"122":1}}],["db",{"2":{"60":1,"61":2,"101":1,"103":3,"104":3}}],["dpathextractor",{"2":{"36":1,"113":2,"121":2,"122":2}}],["dd",{"2":{"28":1,"42":1,"101":2}}],["dynamically",{"2":{"24":1}}],["double",{"2":{"117":1}}],["dot",{"2":{"103":1}}],["don",{"2":{"74":2,"104":1}}],["domain",{"2":{"54":1,"61":1,"74":1}}],["down",{"2":{"49":1,"80":1,"90":2,"104":2}}],["download",{"2":{"9":1,"10":1,"28":1,"42":1,"60":1,"74":1,"78":1,"81":1}}],["do",{"2":{"28":1,"42":1,"50":1,"74":1,"104":6}}],["documents",{"2":{"67":1}}],["document",{"2":{"53":1}}],["documentation",{"0":{"49":1,"82":1},"1":{"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1},"2":{"1":1,"5":1,"15":1,"22":1,"34":1,"104":1,"110":1,"121":1,"122":1}}],["docker",{"2":{"7":1,"104":15}}],["docs",{"2":{"7":2,"22":1,"23":1,"24":2,"34":3,"68":2,"103":1,"112":1,"113":1,"114":1,"115":1,"116":1,"121":5,"122":4}}],["did",{"2":{"122":1}}],["disposition",{"2":{"122":1}}],["distance",{"2":{"103":1}}],["discriminator",{"2":{"122":1}}],["discoursecategory",{"2":{"121":2}}],["discoursecategories",{"2":{"32":1,"121":4}}],["discoursetopicpost",{"2":{"121":2}}],["discoursetopicposts",{"2":{"32":1,"121":4}}],["discoursetopic",{"2":{"121":2}}],["discoursetopics",{"2":{"32":1,"121":4}}],["discourse",{"2":{"32":1}}],["discord",{"2":{"18":1,"122":4}}],["discussion",{"2":{"32":1,"122":1}}],["discussions",{"2":{"1":1,"74":2}}],["dir",{"2":{"71":1,"72":2}}],["directed",{"2":{"122":1}}],["direct",{"2":{"122":9}}],["directly",{"2":{"18":1,"30":1,"74":1}}],["directory",{"2":{"10":1,"71":1,"101":1}}],["diverse",{"2":{"67":1}}],["diagram",{"2":{"61":1}}],["dict",{"2":{"57":1}}],["different",{"2":{"0":1,"14":1,"44":1,"45":1,"53":1,"62":1,"83":1,"120":1}}],["date",{"2":{"122":10}}],["datetime",{"2":{"122":1}}],["dataflow",{"2":{"103":1}}],["dataset",{"2":{"15":2,"61":1,"94":1,"97":1}}],["datasets",{"2":{"12":1,"69":1}}],["database",{"0":{"69":1},"2":{"6":1,"7":1,"12":1,"14":1,"69":1,"91":1,"101":1,"104":2}}],["data",{"0":{"54":1,"64":1,"65":1,"66":1,"67":1},"2":{"0":1,"1":2,"2":1,"6":2,"12":4,"13":1,"14":1,"15":2,"20":1,"21":1,"27":1,"32":1,"33":1,"36":3,"38":1,"41":1,"52":2,"53":2,"54":11,"57":2,"58":1,"59":7,"61":4,"64":5,"65":1,"66":4,"67":4,"68":1,"69":1,"72":1,"74":3,"83":1,"88":2,"91":6,"93":4,"94":4,"96":2,"97":4,"99":2,"100":7,"101":7,"103":4,"109":2,"110":1,"113":3,"117":2,"118":1,"119":1,"120":1,"121":4,"122":23}}],["daemon",{"2":{"104":2}}],["dashboard",{"2":{"72":1}}],["dao`",{"2":{"74":2}}],["dao",{"2":{"1":1,"20":1,"28":1,"29":1,"32":1,"33":2,"42":1,"44":1,"74":2,"120":1}}],["daos",{"0":{"44":1},"2":{"1":1}}],["decimals",{"2":{"122":1}}],["declarative",{"2":{"54":1,"57":1,"61":1,"65":2,"105":1,"111":1}}],["detailed",{"2":{"110":1,"114":1}}],["details",{"2":{"1":1,"2":1,"11":1,"12":1,"13":1,"14":1,"15":1,"23":1,"24":2,"34":1,"49":1,"56":1,"57":1,"61":1,"75":1,"87":1,"121":1,"122":3}}],["debug",{"2":{"86":2,"87":2,"88":2,"89":2,"104":2}}],["devs",{"2":{"122":2}}],["devices",{"2":{"77":1}}],["development",{"2":{"23":1,"24":2,"65":1,"84":2,"87":1,"89":1,"121":2,"122":3}}],["developer",{"2":{"4":1,"30":1,"122":1}}],["dense",{"2":{"68":1}}],["delegatechunk",{"2":{"122":1}}],["delegated",{"2":{"122":3}}],["delegate",{"2":{"122":38}}],["delegatee",{"2":{"122":2}}],["delegatestatement",{"2":{"122":3}}],["delegates",{"2":{"1":1}}],["delegators",{"2":{"122":2}}],["delegator",{"2":{"122":2}}],["delegations",{"2":{"122":2}}],["delegationsupport",{"2":{"121":1}}],["delegation",{"2":{"122":9}}],["delay",{"2":{"103":2}}],["deliver",{"2":{"61":1}}],["describes",{"2":{"122":1}}],["describing",{"2":{"122":8}}],["descriptionexcerpt",{"2":{"121":1}}],["descriptiontext",{"2":{"121":1}}],["description",{"2":{"22":1,"34":3,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"74":1,"121":5,"122":131}}],["designed",{"2":{"53":1,"64":1,"67":1,"74":1}}],["dependencies",{"2":{"84":2}}],["dependency",{"2":{"84":1}}],["depending",{"2":{"77":1}}],["deployeraddress",{"2":{"122":1}}],["deployer",{"2":{"122":2}}],["deployed",{"2":{"122":9}}],["deploying",{"0":{"72":1}}],["deploy",{"0":{"52":1},"2":{"74":1,"104":1}}],["deploymenttxhash",{"2":{"122":1}}],["deployment",{"2":{"28":1,"42":1,"122":2}}],["depth",{"0":{"53":1},"1":{"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1},"2":{"0":1,"6":1,"13":1,"120":1}}],["demo",{"0":{"12":1},"2":{"12":1}}],["demonstrates",{"2":{"0":1}}],["defeated",{"2":{"122":1}}],["defaults",{"2":{"103":1}}],["defaultpaginator",{"2":{"24":1,"36":1,"121":1,"122":1}}],["default",{"2":{"11":1,"71":1,"76":1,"86":1,"87":1,"103":15,"104":3,"110":1}}],["definition",{"0":{"106":1},"1":{"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1},"2":{"23":2,"24":1}}],["definitions",{"0":{"38":1,"111":1,"117":1},"1":{"112":1,"113":1,"114":1,"115":1,"116":1},"2":{"0":1,"35":1,"36":1,"105":1,"111":1,"115":1,"116":2,"121":3,"122":3}}],["defining",{"0":{"16":1,"20":1,"32":1},"1":{"21":1,"22":1,"23":1,"24":1,"25":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1},"2":{"0":1,"13":1,"33":1,"57":2}}],["defined",{"2":{"59":1,"105":1,"108":1,"112":1,"117":4,"118":1,"119":1}}],["defines",{"2":{"12":1,"22":1,"34":1,"35":1,"38":1,"91":1,"92":1,"94":1,"95":1,"97":1,"98":1,"109":1,"114":1,"115":1,"116":1,"117":1}}],["define",{"0":{"13":1,"51":1},"2":{"0":1,"13":2,"16":1,"37":1,"51":1,"56":1,"105":1}}],["edited",{"2":{"122":2}}],["edit",{"2":{"122":1}}],["editor",{"2":{"50":1}}],["eoa",{"2":{"122":1}}],["etc",{"2":{"122":1}}],["euclid",{"2":{"103":1}}],["errno",{"2":{"80":1,"104":2}}],["error",{"2":{"80":1,"90":4,"104":6}}],["errors",{"2":{"52":1}}],["establish",{"2":{"80":1,"104":2}}],["either",{"2":{"61":1,"74":1,"103":1,"104":2}}],["efficient",{"2":{"54":1,"64":1,"66":1,"69":1}}],["every",{"2":{"103":1}}],["everything",{"2":{"52":1}}],["even",{"2":{"80":1}}],["events",{"2":{"38":1,"121":1,"122":2}}],["elements",{"2":{"39":2,"110":2,"121":2,"122":2}}],["empty",{"2":{"21":1,"103":1,"109":1}}],["embedding",{"0":{"68":1},"2":{"54":1,"72":4,"74":6,"76":1,"81":2,"83":1,"87":1}}],["embeddings",{"0":{"69":1,"72":1,"79":1},"2":{"7":1,"14":1,"53":1,"54":2,"59":3,"60":2,"61":6,"68":1,"69":1,"72":8,"76":2,"80":5,"81":1,"91":1,"101":2,"103":7,"104":8}}],["embed",{"2":{"7":1,"72":2,"74":3,"76":1,"80":2,"81":1,"103":1,"104":2}}],["e",{"2":{"7":3,"10":1,"12":2,"52":1,"81":1,"84":1,"109":3,"117":1,"122":1}}],["enum",{"2":{"122":12}}],["enclosed",{"2":{"117":1}}],["encoding",{"2":{"103":2}}],["ensure",{"2":{"84":1}}],["ensuring",{"2":{"66":1}}],["enrich",{"2":{"74":2}}],["env",{"2":{"72":1,"90":2,"102":1,"103":1,"104":3}}],["environment",{"0":{"103":1},"2":{"7":1,"10":1,"102":1,"103":1}}],["enabling",{"2":{"64":1,"65":1}}],["enable",{"2":{"43":1,"86":1,"87":1,"88":1,"89":1,"104":1}}],["engines",{"2":{"87":1}}],["engine",{"2":{"61":2,"64":1,"68":1,"69":1}}],["end",{"2":{"54":1,"61":1,"104":1,"122":3}}],["endtimestamp",{"2":{"38":1,"121":1,"122":1}}],["endtime",{"2":{"38":1,"121":1,"122":1}}],["endpoint",{"0":{"25":1,"37":1},"2":{"37":1,"38":2,"49":1,"52":2,"54":2,"57":2,"58":1,"59":1,"61":1,"91":1,"101":2,"117":6,"118":4,"119":4}}],["endpoints",{"0":{"117":1},"2":{"0":1,"1":1,"2":2,"12":1,"25":2,"34":1,"37":2,"51":1,"52":1,"57":1,"91":1,"92":1,"94":1,"97":1,"98":1,"115":2,"117":3,"121":2,"122":1}}],["entity",{"2":{"122":1}}],["entire",{"2":{"15":1,"91":1}}],["enter",{"2":{"80":1,"104":3}}],["entrypoint",{"0":{"56":1},"2":{"21":1,"33":1,"56":1,"109":1,"121":1,"122":1}}],["easier",{"2":{"67":1,"77":1}}],["easily",{"2":{"6":1,"80":1}}],["easy",{"0":{"48":1},"1":{"49":1,"50":1,"51":1,"52":1},"2":{"53":1,"68":1}}],["each",{"2":{"0":1,"14":1,"52":1,"53":1,"54":1,"58":1,"61":1,"101":2,"104":2,"110":1,"114":1,"116":1,"117":2,"119":1,"120":1}}],["expanded",{"2":{"122":2}}],["exported",{"2":{"101":1}}],["exists",{"2":{"90":1,"104":1}}],["existing",{"2":{"49":1,"50":1}}],["exit",{"2":{"85":1,"86":1,"88":1,"91":1,"94":1,"97":1,"104":1}}],["exceeded",{"2":{"80":1,"104":2}}],["extended",{"2":{"122":1}}],["externalurl",{"2":{"38":1,"121":1}}],["extractions",{"2":{"66":1}}],["extraction",{"0":{"65":1},"2":{"54":1,"57":1,"83":1,"93":1}}],["extracting",{"2":{"0":1,"14":1,"16":1}}],["extractor",{"2":{"36":1,"113":2,"121":2,"122":2}}],["extracted",{"2":{"12":1,"39":1,"61":1,"66":1,"68":1,"101":2,"104":1}}],["extracts",{"2":{"12":1}}],["extract",{"2":{"1":1,"2":1,"12":2,"13":1,"20":1,"32":1,"53":1,"61":1,"91":1,"92":1,"93":1,"98":1,"117":1,"120":1}}],["executing",{"2":{"61":1,"90":1,"100":1}}],["executiondata",{"2":{"122":7}}],["execution",{"2":{"12":1,"27":1,"59":1,"62":1,"85":1,"86":1,"103":4,"104":1,"122":11}}],["executes",{"2":{"59":1,"91":1,"94":1,"97":1}}],["executedtransactionhash",{"2":{"122":1}}],["executedtime",{"2":{"122":1}}],["executed",{"2":{"12":1,"122":5}}],["execute",{"2":{"6":1,"10":1,"14":2,"27":1,"41":1,"56":1,"83":1,"85":1,"88":3,"94":1,"97":1,"104":1}}],["example",{"0":{"43":1},"2":{"0":1,"33":1,"37":1,"74":2,"75":1,"77":1,"104":1,"117":5,"118":1,"119":2,"120":1}}],["exampleschema",{"2":{"117":1,"118":1}}],["examples",{"0":{"0":1,"100":1},"1":{"1":1,"2":1,"3":1},"2":{"13":1,"34":2,"51":1,"121":2,"122":15}}],["flag",{"2":{"122":4}}],["flows",{"2":{"61":1}}],["flow",{"0":{"54":1}}],["fn",{"2":{"103":1}}],["f",{"2":{"81":1}}],["f16",{"2":{"72":1,"74":1,"80":1,"81":1}}],["framework",{"2":{"64":1,"105":1}}],["frameworks",{"0":{"63":1},"1":{"64":1,"65":1,"66":1,"67":1,"68":1,"69":1}}],["free",{"2":{"47":2,"52":1}}],["from",{"0":{"65":1,"94":1,"97":1},"1":{"95":1,"96":1,"98":1,"99":1},"2":{"0":2,"1":2,"2":1,"6":1,"7":1,"12":3,"13":1,"14":2,"15":2,"17":1,"23":1,"28":2,"29":1,"30":1,"32":1,"35":1,"38":1,"42":2,"50":2,"53":2,"54":1,"60":1,"61":1,"69":1,"72":1,"74":2,"78":1,"81":2,"83":1,"88":4,"91":1,"93":1,"94":3,"97":3,"100":4,"101":5,"104":2,"117":2,"120":1,"122":6}}],["farcaster",{"2":{"122":1}}],["fails",{"2":{"103":1}}],["failed",{"2":{"80":1,"104":2}}],["familiar",{"2":{"74":1}}],["facilitates",{"2":{"65":1}}],["face",{"2":{"41":1}}],["false",{"2":{"39":1,"110":1,"121":1,"122":1}}],["further",{"2":{"66":1,"67":1}}],["fulltime",{"2":{"122":1}}],["full",{"2":{"15":1,"52":1,"72":1,"91":1,"93":1,"100":1,"101":1,"120":1,"122":2}}],["functionname",{"2":{"122":1}}],["functionargs",{"2":{"122":1}}],["functionargsname",{"2":{"122":1}}],["functionality",{"2":{"2":1,"83":1}}],["functions",{"2":{"67":1,"74":1,"103":1,"122":2}}],["function",{"2":{"59":1,"103":1,"122":3}}],["funding",{"2":{"2":1,"122":3}}],["final",{"2":{"104":1}}],["finally",{"2":{"104":1}}],["find",{"0":{"46":1},"1":{"47":1},"2":{"1":1,"12":1,"20":1,"27":1,"41":1,"75":1,"104":1,"120":2}}],["first",{"2":{"90":1}}],["fixeddelayretrystrategy",{"2":{"103":1}}],["fix",{"2":{"52":1}}],["fields",{"2":{"38":2,"54":2,"57":2,"59":1,"117":2,"119":2}}],["field",{"2":{"21":1,"24":2,"33":1,"35":1,"36":3,"54":1,"109":2,"113":3,"117":1,"121":5,"122":5}}],["files",{"2":{"14":1,"101":2,"105":1,"120":1}}],["file",{"2":{"12":3,"15":8,"18":1,"23":1,"24":2,"30":1,"44":1,"50":1,"52":2,"57":2,"72":3,"74":3,"80":1,"90":2,"91":7,"92":3,"93":3,"94":4,"95":1,"96":2,"97":4,"98":1,"99":2,"100":2,"101":1,"104":2,"117":1,"121":2,"122":3}}],["foo",{"2":{"117":2,"118":1}}],["follow",{"2":{"28":1,"42":1,"71":1,"73":1,"117":1}}],["following",{"2":{"5":1,"6":1,"10":1,"11":1,"12":1,"16":1,"27":1,"41":1,"59":1,"61":1,"72":1,"74":1,"75":1,"84":1,"90":1,"101":1,"103":1,"106":1,"109":1,"111":1,"117":1}}],["folders",{"2":{"101":1}}],["folder",{"2":{"12":1,"27":1,"41":1,"52":1,"101":2,"103":2,"104":1}}],["focuses",{"2":{"33":1}}],["focused",{"2":{"4":1}}],["focusing",{"2":{"2":1}}],["found",{"2":{"2":1,"74":1,"90":1,"103":1}}],["forked",{"2":{"122":2}}],["fork",{"2":{"122":1}}],["forwards",{"2":{"61":1}}],["format",{"2":{"53":1,"54":1,"66":1,"81":1,"94":1,"96":1,"97":2,"99":1,"101":3,"105":2,"122":11}}],["formats",{"2":{"49":1,"67":1}}],["forum",{"2":{"32":1}}],["forget",{"2":{"28":1,"42":1}}],["for",{"0":{"26":1,"40":1,"44":1,"73":1},"1":{"27":1,"28":1,"41":1,"42":1,"43":1,"44":1},"2":{"0":5,"1":1,"2":2,"5":1,"6":1,"11":3,"12":1,"13":3,"15":1,"16":2,"22":2,"34":4,"37":1,"38":1,"41":1,"43":2,"44":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":4,"56":1,"57":6,"58":1,"59":3,"61":2,"64":2,"65":1,"66":1,"67":4,"68":4,"69":1,"74":1,"75":2,"77":1,"83":1,"84":1,"85":1,"87":2,"89":1,"103":4,"104":4,"105":2,"107":1,"108":1,"109":1,"113":1,"114":2,"115":2,"116":1,"117":1,"119":1,"120":1,"121":2,"122":55}}],["features",{"2":{"65":1,"67":1,"69":1,"102":1}}],["feature",{"0":{"68":1},"2":{"59":1,"61":2,"68":1,"69":1}}],["feel",{"2":{"52":1}}],["fetch",{"2":{"1":1,"116":1}}],["few",{"2":{"0":1,"104":1,"121":1}}],["rust",{"2":{"64":1,"75":1}}],["running",{"0":{"72":1},"2":{"12":1,"27":1,"41":1,"52":1,"68":1,"72":1,"77":1,"83":1,"90":1,"101":1,"102":1,"104":11}}],["run",{"0":{"12":1,"88":1,"91":1,"94":1,"97":1},"1":{"92":1,"93":1,"95":1,"96":1,"98":1,"99":1},"2":{"11":1,"12":1,"14":2,"15":6,"18":1,"27":1,"30":1,"41":1,"52":2,"84":1,"85":1,"88":3,"90":1,"91":5,"93":2,"94":2,"97":2,"100":8,"101":2,"104":5}}],["rank",{"2":{"122":1}}],["ram",{"2":{"74":1}}],["raw",{"2":{"54":2,"59":1,"67":1,"122":1}}],["rapidapi",{"2":{"47":1}}],["raid",{"2":{"9":1,"84":1}}],["rag",{"0":{"4":1,"5":1,"6":1,"12":1,"20":1,"26":1,"27":1,"32":1,"40":1,"41":1,"51":1,"59":1,"64":1,"70":1,"82":1,"104":1,"106":1},"1":{"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"21":1,"22":1,"23":1,"24":1,"25":1,"27":1,"28":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"41":1,"42":1,"43":1,"44":1,"71":1,"72":1,"73":1,"74":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1},"2":{"0":2,"5":2,"6":2,"9":1,"10":2,"11":1,"12":1,"14":3,"15":3,"17":1,"18":1,"27":2,"29":1,"30":1,"41":2,"43":1,"45":1,"52":3,"53":1,"54":1,"61":3,"62":1,"68":1,"72":1,"74":4,"75":3,"76":2,"80":3,"83":1,"84":5,"85":4,"86":2,"88":6,"90":1,"91":4,"94":4,"97":4,"100":4,"101":1,"102":1,"104":26,"105":2,"120":1}}],["relative",{"2":{"122":4}}],["related",{"2":{"2":1,"5":1,"20":1,"32":1,"64":1,"103":1,"120":1}}],["relevant",{"2":{"74":2}}],["revenue",{"2":{"122":1}}],["reverse",{"2":{"74":1}}],["review",{"0":{"53":1},"1":{"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1},"2":{"0":1,"13":1}}],["repo",{"2":{"122":1}}],["repository",{"0":{"9":1},"2":{"0":1,"9":1,"10":1,"17":1,"29":1,"47":1,"52":1,"69":1,"84":1,"106":1}}],["replytopostnumber",{"2":{"121":1}}],["replycount",{"2":{"121":2}}],["representations",{"2":{"68":1}}],["redundant",{"2":{"66":1}}],["reduce",{"2":{"66":1}}],["reuse",{"2":{"53":1}}],["reason",{"2":{"122":3}}],["readerscount",{"2":{"121":1}}],["reading",{"2":{"104":1}}],["reads",{"2":{"61":1,"121":1}}],["read",{"2":{"60":1}}],["ready",{"2":{"14":1,"77":1,"104":1}}],["real",{"2":{"54":1,"64":1}}],["reach",{"2":{"52":1}}],["received",{"2":{"103":1}}],["receive",{"2":{"90":1}}],["receives",{"2":{"59":2}}],["recent",{"2":{"52":1}}],["recommend",{"2":{"59":1,"71":1,"72":1,"104":1}}],["recommended",{"0":{"74":1},"2":{"10":1,"28":1,"42":1}}],["recordselector",{"2":{"36":1,"113":2,"121":2,"122":2}}],["records",{"2":{"36":1,"54":2,"60":1,"109":1,"113":1,"115":1,"116":1,"122":3}}],["record",{"0":{"24":1,"36":1},"2":{"113":3,"115":1,"116":3,"117":1,"121":3,"122":3}}],["return",{"2":{"121":1}}],["returning",{"2":{"115":2}}],["returned",{"2":{"36":1,"38":1,"117":1,"122":4}}],["retry",{"2":{"103":2}}],["retries",{"2":{"80":1,"103":1,"104":2}}],["retrieve",{"2":{"122":2}}],["retriever",{"0":{"116":1},"2":{"116":4,"121":2,"122":2}}],["retrieves",{"2":{"23":1}}],["retrieving",{"2":{"74":1}}],["retrieval",{"2":{"6":1,"53":1,"54":1,"66":1,"74":1,"83":1,"122":1}}],["retrofunding",{"2":{"122":1}}],["retroactive",{"2":{"2":1,"122":1}}],["retropgf",{"2":{"2":2,"17":1,"20":1}}],["remaining",{"2":{"54":1}}],["remains",{"2":{"21":1}}],["remember",{"2":{"0":1,"73":1}}],["requests",{"2":{"33":1,"35":1,"103":3,"104":1,"108":1,"109":1,"114":1,"116":1,"122":1}}],["requestoption",{"2":{"24":2,"35":1,"36":1,"121":2,"122":2}}],["requester",{"0":{"114":1},"2":{"23":2,"35":2,"114":1,"116":1,"121":1,"122":1}}],["request",{"0":{"23":1,"35":1},"2":{"18":1,"21":1,"22":1,"24":3,"30":1,"33":1,"34":1,"35":1,"36":1,"49":1,"51":1,"104":1,"109":2,"121":5,"122":6}}],["requisites",{"0":{"18":1,"30":1}}],["requires",{"2":{"72":1,"111":1}}],["required",{"2":{"12":1,"21":1,"22":1,"34":2,"35":1,"51":1,"90":1,"94":1,"96":1,"97":1,"99":1,"104":2,"105":1,"108":1,"109":1,"112":1,"121":1,"122":2}}],["requirements",{"0":{"7":1},"2":{"103":1,"104":2}}],["refused",{"2":{"80":1,"104":2}}],["refers",{"2":{"74":1}}],["refer",{"2":{"74":1}}],["referenced",{"2":{"118":1,"119":1}}],["reference",{"0":{"82":1},"1":{"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1},"2":{"5":1,"11":1,"15":1,"38":2,"56":1,"57":1,"104":1}}],["refid",{"2":{"37":1,"38":1,"121":8}}],["refresh",{"2":{"15":1,"52":1,"91":1,"93":1,"100":1,"101":1}}],["re",{"2":{"6":1,"12":2,"13":2,"14":1,"16":1,"66":1,"73":2,"77":1,"104":1}}],["resolve",{"2":{"74":2}}],["resources",{"2":{"72":1,"77":1,"122":2}}],["resource",{"2":{"4":1}}],["results",{"2":{"38":1,"52":2,"101":1,"103":1,"121":1,"122":8}}],["resulting",{"2":{"6":1,"54":1,"61":1}}],["respond",{"2":{"74":1}}],["responsible",{"2":{"68":1}}],["response",{"2":{"21":1,"33":1,"36":2,"49":1,"109":1,"113":1,"117":1,"118":3,"121":3,"122":1}}],["responseschema",{"2":{"25":2,"37":1,"38":2,"117":4,"118":1,"119":1,"121":5,"122":2}}],["responses",{"2":{"6":1,"113":2}}],["respective",{"2":{"25":1,"37":1}}],["rest",{"0":{"65":1},"2":{"0":1,"6":2,"12":1,"13":1,"16":1,"18":1,"30":1,"103":1,"104":3,"105":2,"120":1}}],["twitter",{"2":{"122":5}}],["two",{"2":{"12":2,"75":1,"103":1,"105":1,"113":1,"120":1}}],["t",{"2":{"74":2,"104":1}}],["track",{"2":{"122":1}}],["transactionhash",{"2":{"122":1}}],["transactions",{"2":{"122":1}}],["transaction",{"2":{"122":19}}],["translating",{"2":{"113":1}}],["transforms",{"2":{"59":1}}],["transforming",{"2":{"54":1}}],["transformation",{"2":{"54":1}}],["training",{"2":{"74":1}}],["try",{"2":{"74":1,"80":1,"104":3}}],["true",{"2":{"22":2,"34":2,"39":2,"110":2,"121":4,"122":4}}],["txhash",{"2":{"38":1,"121":1}}],["title",{"2":{"22":1,"34":1,"38":3,"39":1,"110":1,"118":3,"119":1,"121":6,"122":8}}],["times",{"2":{"104":1,"122":1}}],["timestamp",{"2":{"38":2,"121":2,"122":19}}],["timeout",{"2":{"103":2}}],["time",{"2":{"13":1,"37":1,"54":1,"64":1,"103":1,"122":17}}],["types",{"2":{"75":1}}],["type",{"2":{"21":1,"22":3,"23":2,"24":4,"33":1,"34":5,"35":3,"36":5,"38":41,"109":2,"113":4,"116":2,"118":4,"119":2,"121":164,"122":257}}],["tags",{"2":{"121":1}}],["table",{"2":{"59":1}}],["tables",{"2":{"58":1}}],["tar",{"2":{"28":1,"42":1,"74":2,"101":1}}],["targets",{"2":{"122":3}}],["targeting",{"2":{"13":1,"16":1}}],["target",{"2":{"0":1,"25":1,"28":1,"37":1,"42":1,"51":1,"57":1,"104":1,"105":1}}],["task",{"2":{"14":1,"104":1}}],["tasks",{"2":{"14":1,"67":1,"69":1,"85":1,"88":1}}],["take",{"2":{"13":1}}],["team",{"2":{"122":1}}],["ten",{"2":{"122":2}}],["term",{"2":{"74":1}}],["terms",{"2":{"74":1}}],["template",{"2":{"72":1,"74":1,"106":1,"113":1,"116":1,"122":5}}],["tested",{"2":{"74":1}}],["test",{"0":{"52":1},"2":{"52":1}}],["textcolor",{"2":{"121":1}}],["texts",{"2":{"38":1}}],["textschemas",{"0":{"119":1},"2":{"25":2,"37":1,"38":1,"117":2,"119":1,"121":6,"122":3}}],["textschema",{"2":{"25":2,"37":1,"38":1,"117":3,"119":2,"121":5,"122":2}}],["text",{"2":{"7":1,"38":1,"39":2,"54":1,"57":2,"59":1,"72":2,"74":3,"76":2,"80":2,"81":1,"91":1,"93":1,"103":1,"104":2,"110":1,"117":1,"119":1,"121":1,"122":2}}],["technology",{"2":{"64":1}}],["technologies",{"2":{"62":1,"66":1,"68":1}}],["techniques",{"2":{"53":1}}],["tech",{"0":{"62":1},"1":{"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1},"2":{"4":1,"6":1}}],["top",{"2":{"122":6}}],["topissues",{"2":{"122":2}}],["topicid",{"2":{"121":1}}],["topicsalltime",{"2":{"121":1}}],["topicsyear",{"2":{"121":1}}],["topicsmonth",{"2":{"121":1}}],["topicsweek",{"2":{"121":1}}],["topicurl",{"2":{"121":1}}],["topiccount",{"2":{"121":1}}],["too",{"2":{"103":1}}],["tools",{"0":{"63":1},"1":{"64":1,"65":1,"66":1,"67":1,"68":1,"69":1},"2":{"62":1,"64":1,"105":1}}],["tool",{"2":{"5":1,"6":2,"61":1,"83":1,"101":1}}],["together",{"2":{"54":2,"101":1}}],["totalsupply",{"2":{"121":1,"122":1}}],["totalproposals",{"2":{"121":1}}],["total",{"2":{"38":2,"121":2,"122":14}}],["totalvotes",{"2":{"38":1,"121":2}}],["tokens",{"2":{"121":1,"122":3}}],["token",{"2":{"23":2,"24":1,"35":2,"36":1,"121":2,"122":8}}],["todo",{"2":{"19":1,"31":1}}],["to",{"0":{"26":1,"40":1,"46":1},"1":{"27":1,"28":1,"41":1,"42":1,"43":1,"44":1,"47":1},"2":{"0":4,"1":2,"2":4,"3":1,"4":2,"5":3,"6":3,"7":1,"9":1,"10":3,"11":1,"12":5,"13":3,"14":3,"16":1,"17":1,"18":3,"20":1,"22":1,"24":1,"27":1,"28":2,"29":1,"30":3,"32":1,"33":1,"34":1,"35":1,"37":1,"39":2,"41":1,"42":2,"43":2,"44":2,"45":2,"50":1,"52":4,"53":1,"54":5,"56":1,"57":1,"58":2,"59":3,"60":3,"61":8,"64":1,"66":1,"67":2,"68":3,"71":1,"72":3,"73":2,"74":11,"75":2,"76":1,"77":4,"80":4,"81":2,"83":2,"84":1,"85":1,"86":1,"91":2,"92":1,"93":1,"94":1,"97":1,"98":1,"100":2,"103":8,"104":24,"105":3,"109":2,"110":2,"114":1,"116":1,"117":3,"120":1,"122":22}}],["three",{"2":{"104":1}}],["threshold",{"2":{"74":1,"122":3}}],["throughout",{"2":{"108":1}}],["through",{"2":{"18":1,"47":1,"53":1,"61":2,"101":1,"103":1,"116":1,"122":2}}],["than",{"2":{"72":1,"76":1}}],["that",{"2":{"0":1,"1":1,"6":1,"12":2,"38":2,"53":2,"56":1,"61":1,"68":1,"74":1,"75":1,"76":1,"77":2,"90":1,"91":1,"92":1,"94":1,"95":1,"97":1,"98":1,"101":3,"102":1,"104":5,"109":1,"117":1,"119":1,"120":1,"121":1,"122":3}}],["thus",{"2":{"72":1}}],["thoroughly",{"2":{"52":1}}],["thousands",{"2":{"47":1}}],["third",{"2":{"64":1}}],["things",{"2":{"5":1}}],["this",{"0":{"9":1},"2":{"1":1,"2":1,"6":1,"9":1,"10":1,"17":2,"18":1,"20":1,"21":1,"22":1,"29":1,"30":1,"32":1,"33":2,"38":1,"39":1,"50":1,"52":1,"53":1,"58":1,"62":1,"72":1,"73":1,"74":3,"81":1,"84":1,"85":1,"86":1,"88":1,"91":1,"93":1,"94":1,"97":1,"101":2,"104":5,"114":1,"119":1,"122":10}}],["they",{"2":{"122":1}}],["these",{"2":{"103":1,"108":1,"119":1}}],["them",{"2":{"75":1}}],["there",{"2":{"32":1,"102":1,"121":1,"122":2}}],["their",{"2":{"25":1,"37":1,"105":2,"108":1,"122":1}}],["then",{"2":{"6":1,"10":1,"22":1,"34":1,"35":1,"53":1,"54":2,"101":1}}],["the",{"0":{"10":1,"11":1,"14":1,"16":1,"19":1,"20":1,"26":2,"28":1,"31":1,"32":1,"40":1,"42":1,"51":1,"80":1,"102":1},"1":{"15":1,"21":1,"22":1,"23":1,"24":1,"25":1,"27":2,"28":2,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"41":1,"42":1,"43":1,"44":1,"103":1},"2":{"0":3,"1":4,"2":6,"3":1,"4":5,"5":3,"6":7,"7":1,"10":3,"11":5,"12":13,"13":9,"14":4,"15":3,"16":1,"17":2,"18":6,"20":2,"22":3,"23":5,"24":5,"25":1,"27":5,"28":7,"29":4,"30":5,"32":1,"33":4,"34":3,"35":5,"36":2,"37":2,"38":7,"39":2,"41":5,"42":7,"43":3,"44":2,"50":1,"51":1,"52":8,"53":3,"54":9,"56":2,"57":8,"58":2,"59":5,"60":3,"61":22,"62":2,"65":1,"66":1,"67":1,"68":1,"71":2,"72":8,"73":3,"74":20,"75":4,"76":4,"77":4,"78":1,"80":5,"81":6,"83":2,"84":4,"85":2,"86":1,"87":1,"88":3,"90":5,"91":6,"92":1,"93":7,"94":3,"95":1,"97":3,"98":1,"100":4,"101":9,"102":2,"103":14,"104":44,"105":5,"106":3,"107":1,"108":3,"109":1,"110":3,"111":1,"112":1,"113":2,"114":3,"115":2,"116":3,"117":15,"118":2,"119":3,"120":2,"121":3,"122":203}}],["average",{"2":{"122":1}}],["avatar",{"2":{"122":1}}],["available",{"0":{"15":1},"2":{"13":1,"14":1,"15":1,"41":1,"56":1,"77":1,"84":1,"103":1,"104":2,"105":1,"106":1,"110":1,"114":1,"122":2}}],["age",{"2":{"122":1}}],["against",{"2":{"122":10}}],["again",{"2":{"80":1,"104":3}}],["agora",{"0":{"2":1,"17":1,"19":1,"122":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1},"2":{"2":2,"18":1,"21":1,"22":3,"27":3,"28":2,"122":7}}],["amount",{"2":{"122":13}}],["among",{"2":{"12":1}}],["amp",{"0":{"63":1},"1":{"64":1,"65":1,"66":1,"67":1,"68":1,"69":1},"2":{"54":2}}],["abstention",{"2":{"122":1}}],["abstentions",{"2":{"122":3}}],["abstain",{"2":{"122":4}}],["abstained",{"2":{"122":2}}],["absolute",{"2":{"80":1}}],["able",{"2":{"43":1}}],["above",{"2":{"28":1,"38":1,"42":1,"61":1}}],["aboutschema",{"2":{"117":1}}],["about",{"2":{"1":1,"6":1,"14":1,"43":2,"81":1,"110":1,"117":3,"122":8}}],["aave",{"0":{"40":1},"1":{"41":1,"42":1,"43":1,"44":1},"2":{"32":2,"33":4,"34":2,"41":2,"42":3,"43":1,"121":2}}],["after",{"2":{"27":1,"39":1,"66":1,"73":1,"100":1,"110":1,"117":1,"121":1,"122":1}}],["associated",{"2":{"122":13}}],["associatedaddresses",{"2":{"121":1}}],["associatedprotocols",{"2":{"121":1}}],["assistant",{"2":{"74":1}}],["assistance",{"2":{"52":1}}],["async",{"2":{"103":3}}],["asking",{"2":{"43":3}}],["as",{"2":{"24":1,"28":1,"34":1,"38":2,"42":1,"43":1,"59":1,"61":3,"69":1,"77":1,"103":2,"104":2,"117":2,"119":1,"121":2,"122":2}}],["ai",{"2":{"52":1,"61":1,"64":2,"74":1}}],["airbyteapiconnector",{"2":{"58":1}}],["airbyte",{"0":{"111":1},"1":{"112":1,"113":1,"114":1,"115":1,"116":1},"2":{"22":2,"23":1,"24":2,"34":2,"54":2,"57":2,"61":2,"65":3,"66":1,"93":1,"101":1,"105":1,"111":1,"113":1,"114":1,"115":1,"121":4,"122":5}}],["aim",{"2":{"4":1}}],["advantages",{"2":{"77":1}}],["advanced",{"2":{"5":1,"102":1,"122":10}}],["ada",{"2":{"76":1}}],["adapter",{"2":{"38":1,"121":3}}],["additional",{"2":{"122":1}}],["additionalproperties",{"2":{"22":1,"34":1,"121":1,"122":1}}],["address",{"2":{"74":2,"122":32}}],["addr",{"2":{"72":1}}],["adjusted",{"2":{"103":1}}],["adjust",{"2":{"52":1,"110":1}}],["approvalthreshold",{"2":{"122":2}}],["approvals",{"2":{"122":1}}],["approvalproposaldata",{"2":{"122":2}}],["approvalproposalresults",{"2":{"122":2}}],["approval",{"2":{"122":9}}],["approach",{"2":{"36":1}}],["applies",{"2":{"110":1}}],["applications",{"2":{"61":1,"75":1}}],["application",{"2":{"21":1,"33":1,"109":1,"121":1,"122":1}}],["apply",{"2":{"59":1}}],["applying",{"2":{"39":1,"117":1}}],["apikeyauthenticator",{"2":{"35":2,"114":1,"121":1}}],["apis",{"0":{"3":1,"46":1},"1":{"47":1},"2":{"0":1,"45":1,"47":3,"75":1,"76":1,"105":1,"120":1}}],["api",{"0":{"0":1,"1":1,"2":1,"4":1,"5":1,"6":1,"12":1,"13":1,"16":1,"17":1,"19":1,"20":1,"23":1,"29":1,"31":1,"32":1,"35":1,"45":1,"47":1,"51":1,"57":1,"65":1,"70":1,"82":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"117":1,"120":1,"121":1,"122":1},"1":{"1":1,"2":1,"3":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"18":1,"19":1,"20":1,"21":2,"22":2,"23":2,"24":2,"25":2,"26":1,"27":1,"28":1,"30":1,"31":1,"32":1,"33":2,"34":2,"35":2,"36":2,"37":2,"38":2,"39":2,"40":1,"41":1,"42":1,"43":1,"44":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"71":1,"72":1,"73":1,"74":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"106":1,"107":2,"108":2,"109":2,"110":2,"111":2,"112":2,"113":2,"114":2,"115":2,"116":2,"117":2,"118":2,"119":2,"121":1,"122":1},"2":{"0":5,"1":4,"2":4,"3":2,"5":2,"6":3,"9":1,"10":2,"11":1,"12":8,"13":5,"14":4,"15":6,"16":2,"17":1,"18":6,"20":1,"21":5,"22":6,"23":5,"24":1,"27":4,"28":2,"29":3,"30":6,"33":5,"34":7,"35":5,"36":1,"38":1,"41":4,"42":2,"44":3,"50":1,"51":2,"52":4,"53":2,"54":6,"57":12,"58":2,"61":5,"62":1,"65":1,"66":1,"68":2,"72":3,"74":2,"75":2,"76":6,"80":7,"83":1,"84":5,"85":4,"86":2,"88":6,"90":1,"91":11,"92":2,"93":4,"94":7,"95":1,"97":7,"98":2,"100":8,"101":14,"102":1,"103":7,"104":45,"105":5,"106":1,"107":1,"108":1,"109":2,"112":1,"113":1,"114":2,"115":1,"116":2,"117":3,"120":2,"121":13,"122":11}}],["accurate",{"2":{"74":1}}],["according",{"2":{"72":1,"74":1}}],["accessible",{"2":{"108":1}}],["access",{"2":{"18":1}}],["active",{"2":{"122":4}}],["activeonwebsite",{"2":{"121":1}}],["activate",{"2":{"10":1}}],["acts",{"2":{"69":1}}],["across",{"2":{"1":1,"62":1}}],["author",{"2":{"122":3}}],["authorid",{"2":{"121":1}}],["authoravatar",{"2":{"121":1}}],["authorusername",{"2":{"121":1}}],["authorname",{"2":{"121":1}}],["auth",{"2":{"91":1,"93":1}}],["authenticated",{"2":{"103":1,"104":1}}],["authenticator",{"2":{"23":1,"35":1,"114":1,"121":1,"122":1}}],["authentication",{"2":{"0":1,"22":1,"23":1,"114":1,"122":1}}],["autocommit",{"2":{"103":2}}],["auto",{"2":{"72":2}}],["automatically",{"2":{"61":1,"103":1,"104":1,"115":1}}],["augmented",{"2":{"6":1,"53":1,"74":1,"83":1}}],["alphanumeric",{"2":{"107":1}}],["also",{"2":{"38":1,"41":1,"102":1,"112":1}}],["always",{"2":{"36":1}}],["alias",{"2":{"34":1,"72":1,"121":1}}],["allof",{"2":{"122":2}}],["allowance",{"2":{"122":2}}],["allowing",{"2":{"54":1}}],["allows",{"2":{"6":1,"104":1}}],["alligator",{"2":{"122":1}}],["all",{"0":{"91":1},"1":{"92":1,"93":1},"2":{"5":1,"12":1,"15":1,"27":1,"33":1,"38":1,"39":1,"41":1,"52":1,"84":1,"88":1,"91":2,"100":2,"101":1,"104":1,"110":1,"112":1,"117":1,"121":1,"122":1}}],["already",{"2":{"0":1,"15":2,"29":1,"80":1,"90":1,"94":1,"97":1,"104":4}}],["around",{"2":{"122":1}}],["archived",{"2":{"121":1}}],["architecture",{"0":{"4":1,"61":1},"2":{"4":1,"53":1,"61":1}}],["args",{"2":{"85":1,"88":1}}],["argument",{"2":{"18":1,"30":1,"101":1}}],["arguments",{"0":{"92":1,"95":1,"98":1},"2":{"12":1,"56":1}}],["array",{"2":{"38":4,"121":11,"122":24}}],["are",{"2":{"3":1,"4":1,"12":1,"21":1,"24":1,"25":1,"36":1,"38":1,"54":4,"61":1,"74":4,"77":1,"90":1,"101":5,"102":2,"103":2,"104":1,"105":1,"108":1,"110":1,"114":1,"120":1,"121":1,"122":4}}],["another",{"2":{"122":1}}],["answer",{"2":{"74":6}}],["answers",{"2":{"54":1,"74":3}}],["analysis",{"2":{"67":1}}],["analyze",{"2":{"52":1}}],["an",{"0":{"79":1},"2":{"7":1,"13":2,"14":1,"15":2,"18":1,"20":1,"22":1,"24":1,"30":1,"35":1,"37":1,"50":1,"51":1,"52":1,"53":1,"54":2,"57":1,"61":5,"68":1,"72":1,"74":2,"94":1,"97":1,"103":1,"104":1,"105":1,"107":1,"109":1,"111":1,"113":1,"117":1,"122":21}}],["any",{"2":{"3":1,"6":1,"16":1,"29":1,"32":1,"52":1,"73":1,"76":1,"90":1,"101":1}}],["and",{"0":{"24":1,"36":1,"52":1,"67":1,"73":1},"2":{"1":2,"2":2,"4":1,"5":2,"6":3,"10":1,"12":1,"13":1,"14":2,"17":2,"20":1,"22":1,"23":1,"24":1,"27":1,"29":1,"32":2,"33":1,"34":1,"35":1,"38":1,"41":1,"43":1,"44":1,"47":1,"51":1,"52":3,"53":3,"54":2,"56":1,"57":2,"58":1,"59":5,"60":3,"61":5,"62":1,"64":2,"66":3,"67":2,"68":1,"69":2,"72":1,"73":2,"74":7,"75":2,"77":2,"78":1,"80":1,"84":1,"85":1,"86":1,"88":1,"90":2,"91":4,"92":1,"93":2,"94":2,"97":2,"98":1,"100":2,"101":5,"103":2,"104":4,"112":2,"114":2,"115":1,"116":1,"118":1,"119":1,"122":19}}],["attempt",{"2":{"103":1,"104":1}}],["attempts",{"2":{"103":1}}],["attached",{"2":{"60":1}}],["at",{"2":{"1":1,"2":1,"13":1,"23":1,"24":2,"66":1,"72":1,"80":1,"87":1,"89":1,"104":3,"122":15}}],["a",{"0":{"12":1,"26":1,"28":1,"40":1,"42":1,"73":1,"81":1},"1":{"27":1,"28":1,"41":1,"42":1,"43":1,"44":1},"2":{"0":5,"1":1,"2":2,"4":1,"5":2,"6":4,"7":2,"12":2,"13":1,"14":1,"16":1,"17":2,"18":1,"23":1,"29":2,"30":1,"34":4,"36":1,"38":1,"41":1,"44":2,"45":1,"47":1,"52":1,"53":2,"54":6,"57":2,"59":3,"60":3,"61":4,"64":1,"68":4,"69":2,"73":1,"74":5,"75":2,"76":2,"77":1,"80":2,"83":1,"101":1,"103":2,"104":20,"105":3,"106":1,"108":1,"110":1,"112":1,"113":1,"115":1,"116":1,"117":2,"120":1,"121":6,"122":58}}]],"serializationVersion":2} diff --git a/apis/agora-api/index.html b/apis/agora-api/index.html index 5d93eba..ffe774a 100644 --- a/apis/agora-api/index.html +++ b/apis/agora-api/index.html @@ -12,7 +12,7 @@ - + diff --git a/apis/boardroom-api/index.html b/apis/boardroom-api/index.html index 5d93eba..ffe774a 100644 --- a/apis/boardroom-api/index.html +++ b/apis/boardroom-api/index.html @@ -12,7 +12,7 @@ - + diff --git a/apis/index.html b/apis/index.html index 5d93eba..ffe774a 100644 --- a/apis/index.html +++ b/apis/index.html @@ -12,7 +12,7 @@ - + diff --git a/apis/other-api-sources/index.html b/apis/other-api-sources/index.html index 5d93eba..ffe774a 100644 --- a/apis/other-api-sources/index.html +++ b/apis/other-api-sources/index.html @@ -12,7 +12,7 @@ - + diff --git a/architecture/code-review/index.html b/architecture/code-review/index.html index 5d93eba..ffe774a 100644 --- a/architecture/code-review/index.html +++ b/architecture/code-review/index.html @@ -12,7 +12,7 @@ - + diff --git a/architecture/index.html b/architecture/index.html index 5d93eba..ffe774a 100644 --- a/architecture/index.html +++ b/architecture/index.html @@ -12,7 +12,7 @@ - + diff --git a/architecture/overview/index.html b/architecture/overview/index.html index 5d93eba..ffe774a 100644 --- a/architecture/overview/index.html +++ b/architecture/overview/index.html @@ -12,7 +12,7 @@ - + diff --git a/architecture/tech-stack/index.html b/architecture/tech-stack/index.html index 5d93eba..ffe774a 100644 --- a/architecture/tech-stack/index.html +++ b/architecture/tech-stack/index.html @@ -12,7 +12,7 @@ - + diff --git a/assets/agora-api-O7ygYgER.js b/assets/agora-api-D-QUJU2A.js similarity index 98% rename from assets/agora-api-O7ygYgER.js rename to assets/agora-api-D-QUJU2A.js index e9f6b40..61025de 100644 --- a/assets/agora-api-O7ygYgER.js +++ b/assets/agora-api-D-QUJU2A.js @@ -1,4 +1,4 @@ -import{u as a,j as s}from"./index-_V-18SrM.js";const l={title:"Optimism Agora API",description:"undefined"};function n(i){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",...a(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"optimism-agora-api",children:["Optimism Agora API",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#optimism-agora-api",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{u as a,j as s}from"./index-D0ythbgN.js";const l={title:"Optimism Agora API",description:"undefined"};function n(i){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",...a(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"optimism-agora-api",children:["Optimism Agora API",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#optimism-agora-api",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.p,{children:["This repository contains the ",s.jsx(e.a,{href:"https://github.com/raid-guild/gaianet-rag-api-pipeline/blob/main/config/agora_openapi.yaml",children:"OpenAPI specification"})," and ",s.jsx(e.a,{href:"https://github.com/raid-guild/gaianet-rag-api-pipeline/blob/main/config/agora_api_pipeline.yaml",children:"API pipeline manifest"}),` needed to create a RAG pipeline. This pipeline generates a knowledge base from RetroPGF projects and proposals within the OP collective.`]}),` `,s.jsxs(e.h2,{id:"pre-requisites",children:["Pre-requisites",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#pre-requisites",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` @@ -90,5 +90,6 @@ parameter for authentication:`]}),` `,s.jsxs(e.ol,{children:[` `,s.jsxs(e.li,{children:["Locate the generated snapshot in ",s.jsx(e.code,{children:"output/optimism_agora_api/"})," (named ",s.jsx(e.code,{children:"optimism_agora_api_collection-xxxxxxxxxxxxxxxx-yyyy-mm-dd-hh-mm-ss.snapshot.tar.gz"}),") or download it from the HuggingFace link above."]}),` `,s.jsxs(e.li,{children:["Follow the official ",s.jsx(e.a,{href:"https://docs.gaianet.ai/node-guide/customize#select-a-knowledge-base",children:"knowledge base selection guide"})]}),` -`,s.jsxs(e.li,{children:["Configure your node using the recommended settings from the ",s.jsx(e.a,{href:"/cli/node-deployment#recommended-gaianet-node-configuration",children:"node deployment guide"})]}),` +`,s.jsxs(e.li,{children:["Configure your node using the recommended settings from the ",s.jsx(e.a,{href:"/cli/node-deployment#recommended-gaia-node-configuration",children:"node deployment guide"}),`. +Do not forget to update the custom prompts to mention `,s.jsx(e.code,{children:"optimism"})," as the target DAO protocol."]}),` `]})]})}function d(i={}){const{wrapper:e}={...a(),...i.components};return e?s.jsx(e,{...i,children:s.jsx(n,{...i})}):n(i)}export{d as default,l as frontmatter}; diff --git a/assets/apis-QDwbfawa.js b/assets/apis-BdD40rOr.js similarity index 98% rename from assets/apis-QDwbfawa.js rename to assets/apis-BdD40rOr.js index 41e8161..55b73cd 100644 --- a/assets/apis-QDwbfawa.js +++ b/assets/apis-BdD40rOr.js @@ -1,4 +1,4 @@ -import{u as n,j as e}from"./index-_V-18SrM.js";const r={title:"API Examples",description:"undefined"};function t(o){const i={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",...n(),...o.components};return e.jsxs(e.Fragment,{children:[e.jsx(i.header,{children:e.jsxs(i.h1,{id:"api-examples",children:["API Examples",e.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#api-examples",children:e.jsx(i.div,{"data-autolink-icon":!0})})]})}),` +import{u as n,j as e}from"./index-D0ythbgN.js";const r={title:"API Examples",description:"undefined"};function t(o){const i={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",...n(),...o.components};return e.jsxs(e.Fragment,{children:[e.jsx(i.header,{children:e.jsxs(i.h1,{id:"api-examples",children:["API Examples",e.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#api-examples",children:e.jsx(i.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(i.p,{children:["The repository already includes a few API pipeline manifest definitions that showcase how to use the ",e.jsx(i.code,{children:"rag-api-pipeline"}),` for generating knowledge bases from REST APIs. Each example demonstrates how to define a YAML manifest for extracting data from target API endpoints using different Authentication/Pagination strategies. For a more in-depth review of how to build a manifest for creating a RAG pipeline for your own API, remember to visit `,e.jsx(i.a,{href:"/manifest-definition",children:"Defining the API Pipeline Manifest"})," section."]}),` diff --git a/assets/architecture-CMLs3JHa.js b/assets/architecture-D2gP2OxN.js similarity index 92% rename from assets/architecture-CMLs3JHa.js rename to assets/architecture-D2gP2OxN.js index 1ede979..fba04f8 100644 --- a/assets/architecture-CMLs3JHa.js +++ b/assets/architecture-D2gP2OxN.js @@ -1,3 +1,3 @@ -import{u as r,j as e}from"./index-_V-18SrM.js";const c={title:"RAG API Pipeline Architecture",description:"undefined"};function i(n){const t={a:"a",div:"div",h1:"h1",header:"header",p:"p",...r(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"rag-api-pipeline-architecture",children:["RAG API Pipeline Architecture",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#rag-api-pipeline-architecture",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{u as r,j as e}from"./index-D0ythbgN.js";const c={title:"RAG API Pipeline Architecture",description:"undefined"};function i(n){const t={a:"a",div:"div",h1:"h1",header:"header",p:"p",...r(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"rag-api-pipeline-architecture",children:["RAG API Pipeline Architecture",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#rag-api-pipeline-architecture",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(t.p,{children:`The next sections are more developer-focused with the aim to be a helpful resource to quickly understand the pipeline architecture, the tech stack being used and how it works under the hood.`})]})}function o(n={}){const{wrapper:t}={...r(),...n.components};return t?e.jsx(t,{...n,children:e.jsx(i,{...n})}):i(n)}export{o as default,c as frontmatter}; diff --git a/assets/boardroom-api-D6RMY5FE.js b/assets/boardroom-api-DR_ey-kj.js similarity index 98% rename from assets/boardroom-api-D6RMY5FE.js rename to assets/boardroom-api-DR_ey-kj.js index 8e5dceb..b130d96 100644 --- a/assets/boardroom-api-D6RMY5FE.js +++ b/assets/boardroom-api-DR_ey-kj.js @@ -1,4 +1,4 @@ -import{u as l,j as s}from"./index-_V-18SrM.js";const r={title:"Boardroom Governance API",description:"undefined"};function n(i){const e={a:"a",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",ul:"ul",...l(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"boardroom-governance-api",children:["Boardroom Governance API",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#boardroom-governance-api",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{u as l,j as s}from"./index-D0ythbgN.js";const r={title:"Boardroom Governance API",description:"undefined"};function n(i){const e={a:"a",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",ul:"ul",...l(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"boardroom-governance-api",children:["Boardroom Governance API",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#boardroom-governance-api",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.p,{children:["The repository already contains the ",s.jsx(e.a,{href:"https://github.com/raid-guild/gaianet-rag-api-pipeline/blob/main/config/boardroom_openapi.yaml",children:"OpenAPI specification"})," and the ",s.jsx(e.a,{href:"https://github.com/raid-guild/gaianet-rag-api-pipeline/blob/main/config/boardroom_api_pipeline.yaml",children:"API pipeline manifest"}),` needed to create a RAG API pipeline. This pipeline generates a knowledge base from any DAO/Protocol hosted by the Boardroom Governance API.`]}),` `,s.jsxs(e.h2,{id:"pre-requisites",children:["Pre-requisites",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#pre-requisites",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` @@ -214,9 +214,6 @@ In this case, `,s.jsx(e.code,{children:"title"}),", ",s.jsx(e.code,{children:"co `,s.jsxs(e.li,{children:["Configure your node using the recommended settings from the ",s.jsx(e.a,{href:"/cli/node-deployment#recommended-gaia-node-configuration",children:"node deployment guide"}),`. Do not forget to update the custom prompts to mention `,s.jsx(e.code,{children:"aave"})," as the target DAO protocol."]}),` `]}),` -`,s.jsxs(e.p,{children:[`Once the command above finishes, you'll find a compressed knowledge base snapshot in -`,s.jsx(e.code,{children:"{OUTPUT_FOLDER}/aave_boardroom_api/"})," with name aave_boardroom_api_collection-xxxxxxxxxxxxxxxx-yyyy-mm-dd-hh-mm-ss.snapshot.tar.gz`. Now it's time to import it\ninto your gaia node. You can find the instructions on how to select a knowledge base ",s.jsx(e.a,{href:"https://docs.gaianet.ai/node-guide/customize#select-a-knowledge-base",children:"here"}),`. -The recommended prompts and node config settings can be found `,s.jsx(e.a,{href:"/cli/node-deployment#recommended-gaianet-node-configuration",children:"here"}),"."]}),` `,s.jsxs(e.h3,{id:"example-user-prompts",children:["Example user prompts",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#example-user-prompts",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsxs(e.ul,{children:[` `,s.jsx(e.li,{children:"Asking what information the RAG bot is able to provide"}),` diff --git a/assets/cli-25jLkomP.js b/assets/cli-DnaBwwVZ.js similarity index 94% rename from assets/cli-25jLkomP.js rename to assets/cli-DnaBwwVZ.js index 8acd7ab..0089c61 100644 --- a/assets/cli-25jLkomP.js +++ b/assets/cli-DnaBwwVZ.js @@ -1,4 +1,4 @@ -import{u as r,j as e}from"./index-_V-18SrM.js";const l={title:"RAG API Pipeline",description:"undefined"};function t(i){const n={a:"a",div:"div",h1:"h1",header:"header",li:"li",p:"p",ul:"ul",...r(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"rag-api-pipeline",children:["RAG API Pipeline",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#rag-api-pipeline",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{u as r,j as e}from"./index-D0ythbgN.js";const l={title:"RAG API Pipeline",description:"undefined"};function t(i){const n={a:"a",div:"div",h1:"h1",header:"header",li:"li",p:"p",ul:"ul",...r(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"rag-api-pipeline",children:["RAG API Pipeline",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#rag-api-pipeline",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(n.p,{children:"The following sections cover all things related to the RAG API Pipeline Command-line interface (CLI) tool:"}),` `,e.jsxs(n.ul,{children:[` `,e.jsx(n.li,{children:"Pipeline initialization and the Setup Wizard."}),` diff --git a/assets/code-review-CcKvfVK9.js b/assets/code-review-5cWe1Nbr.js similarity index 99% rename from assets/code-review-CcKvfVK9.js rename to assets/code-review-5cWe1Nbr.js index d0660e3..75ca8b1 100644 --- a/assets/code-review-CcKvfVK9.js +++ b/assets/code-review-5cWe1Nbr.js @@ -1,4 +1,4 @@ -import{u as r,j as e}from"./index-_V-18SrM.js";const s={title:"In-depth Source Code Review",description:"undefined"};function a(n){const i={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...r(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(i.header,{children:e.jsxs(i.h1,{id:"in-depth-source-code-review",children:["In-depth Source Code Review",e.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#in-depth-source-code-review",children:e.jsx(i.div,{"data-autolink-icon":!0})})]})}),` +import{u as r,j as e}from"./index-D0ythbgN.js";const s={title:"In-depth Source Code Review",description:"undefined"};function a(n){const i={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...r(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(i.header,{children:e.jsxs(i.h1,{id:"in-depth-source-code-review",children:["In-depth Source Code Review",e.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#in-depth-source-code-review",children:e.jsx(i.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(i.p,{children:"This document walks through the different modules that comprise the RAG (Retrieval-Augmented Generation) API Pipeline architecture. The system is designed to extract, preprocess, parse, and store data streams from an API source, then create a vector embeddings knowledge base that can be queried using natural language processing and/or hybrid search techniques. Data from each pipeline stage is serialized using a JSON Lines format for easy caching and reuse."}),` `,e.jsxs(i.h2,{id:"data-flow-overview",children:["Data Flow Overview",e.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#data-flow-overview",children:e.jsx(i.div,{"data-autolink-icon":!0})})]}),` `,e.jsx("iframe",{src:"https://mermaid.live/view#pako:eNplVF1vozAQ_CuWXy8l4SPQoNNJiZqmVZM2Ou7pnD44eAOogJEx7eWa_PdbQ0lzqSUke3Z2Zz22eaexFEBDmihepeTXbFMSHHWz7YBpprZ7DWxDP2bkG1lznb7x_YY-d2Qz1iu2zirIsxLIipfZDmr9TK6ufhxsyyYKuDiQ6ZJN1_dLyQWos9SniD1VUGKIRBXEfZZzyvqkTpdt0MGSCZSguIYDiVYsko2KgRS98GdGtGozXMyoNVf6QH5OFww_0rd7RjawYXstWyos_jBjD6V8y0EkQGa8Pqc_zD7YTs_GAl0YSnFhJIYiUK-g0Eqj0263Bf7zcblcMfxIgaeSn5s0ve9cujeZZ4H5is2LLQiRlcmXrItmZgs2k1wJJWVBFhK1S16ib6ai2Up_2h27d2NsjcgOuG4UEOilDp8b6tgfZvhIjkpe1anUXzgXy8UjW_CMP4ImayW1jGVOcPEm1cvzRQL5btpbPHbw3S27a5LE7PiWx4C9WyhtLtYXyZP_S0hOPrRG2wxFY6jrc_cddsM1J5E5znPcZfM_2tiVt4eWxX0Ua9IBLUAVPBP4jN4NvKE6hQI2NMSp4OplQzflEXm80TLalzENtWpgQJVskpSGO57XuGoqgRf6JuPYcXGBzkWGPZ3AvH1ENHynel-1zzerNQrEstxlicEblSOcal3V4XBowlaS6bTZWrEshnUmUnwN6evEH_qOf80dF_zA5WPXFfHWnlzvHM_eiWBkO5wejwMKrf6q-1e0v4wBrXj5G2_SqSlcG-U_NPS8seU7I8_3XMcbjQN_PKB7GrquhdBoPPa8IJg49gQL_20rjKxrN_B8Z-Lb2Ebg-sHxHxjOZcQ",width:"100%",height:"900px"}),` diff --git a/assets/getting-started-DOjqpcWh.js b/assets/getting-started-BxYi9NBE.js similarity index 99% rename from assets/getting-started-DOjqpcWh.js rename to assets/getting-started-BxYi9NBE.js index 0170e6c..06a5bbb 100644 --- a/assets/getting-started-DOjqpcWh.js +++ b/assets/getting-started-BxYi9NBE.js @@ -1,4 +1,4 @@ -import{u as a,j as e}from"./index-_V-18SrM.js";const l={title:"Gaia RAG API Pipeline",description:"undefined"};function s(n){const i={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...a(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(i.header,{children:e.jsxs(i.h1,{id:"gaia-rag-api-pipeline",children:["Gaia RAG API Pipeline",e.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#gaia-rag-api-pipeline",children:e.jsx(i.div,{"data-autolink-icon":!0})})]})}),` +import{u as a,j as e}from"./index-D0ythbgN.js";const l={title:"Gaia RAG API Pipeline",description:"undefined"};function s(n){const i={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...a(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(i.header,{children:e.jsxs(i.h1,{id:"gaia-rag-api-pipeline",children:["Gaia RAG API Pipeline",e.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#gaia-rag-api-pipeline",children:e.jsx(i.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(i.p,{children:[e.jsx(i.code,{children:"rag-api-pipeline"}),` is a Python-based data pipeline tool that allows you to easily generate a vector knowledge base from any REST API data source. The resulting database snapshot can then be plugged into a Gaia node's LLM model with a prompt and provide contextual responses to user queries using RAG (Retrieval Augmented Generation).`]}),` diff --git a/assets/index-_V-18SrM.js b/assets/index-D0ythbgN.js similarity index 99% rename from assets/index-_V-18SrM.js rename to assets/index-D0ythbgN.js index 488eab4..b3f3a6f 100644 --- a/assets/index-_V-18SrM.js +++ b/assets/index-D0ythbgN.js @@ -66,7 +66,7 @@ Error generating stack: `+i.message+` * LICENSE.md file in the root directory of this source tree. * * @license MIT - */function Lo(){return Lo=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&(n[o]=e[o]);return n}function UC(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function BC(e,t){return e.button===0&&(!t||t==="_self")&&!UC(e)}const HC=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","unstable_viewTransition"],VC="6";try{window.__reactRouterVersion=VC}catch{}function WC(e,t){return eC({basename:t==null?void 0:t.basename,future:Lo({},t==null?void 0:t.future,{v7_prependBasename:!0}),history:R3({window:t==null?void 0:t.window}),hydrationData:(t==null?void 0:t.hydrationData)||KC(),routes:e,mapRouteProperties:zC,unstable_dataStrategy:t==null?void 0:t.unstable_dataStrategy,unstable_patchRoutesOnNavigation:t==null?void 0:t.unstable_patchRoutesOnNavigation,window:t==null?void 0:t.window}).initialize()}function KC(){var e;let t=(e=window)==null?void 0:e.__staticRouterHydrationData;return t&&t.errors&&(t=Lo({},t,{errors:GC(t.errors)})),t}function GC(e){if(!e)return null;let t=Object.entries(e),n={};for(let[r,o]of t)if(o&&o.__type==="RouteErrorResponse")n[r]=new Ll(o.status,o.statusText,o.data,o.internal===!0);else if(o&&o.__type==="Error"){if(o.__subType){let i=window[o.__subType];if(typeof i=="function")try{let a=new i(o.message);a.stack="",n[r]=a}catch{}}if(n[r]==null){let i=new Error(o.message);i.stack="",n[r]=i}}else n[r]=o;return n}const YC=m.createContext({isTransitioning:!1}),QC=m.createContext(new Map),ZC="startTransition",bp=ff[ZC],XC="flushSync",Lp=T3[XC];function JC(e){bp?bp(e):e()}function oi(e){Lp?Lp(e):e()}class qC{constructor(){this.status="pending",this.promise=new Promise((t,n)=>{this.resolve=r=>{this.status==="pending"&&(this.status="resolved",t(r))},this.reject=r=>{this.status==="pending"&&(this.status="rejected",n(r))}})}}function e5(e){let{fallbackElement:t,router:n,future:r}=e,[o,i]=m.useState(n.state),[a,l]=m.useState(),[s,c]=m.useState({isTransitioning:!1}),[f,u]=m.useState(),[d,h]=m.useState(),[x,v]=m.useState(),C=m.useRef(new Map),{v7_startTransition:g}=r||{},y=m.useCallback(_=>{g?JC(_):_()},[g]),w=m.useCallback((_,k)=>{let{deletedFetchers:A,unstable_flushSync:M,unstable_viewTransitionOpts:D}=k;A.forEach(L=>C.current.delete(L)),_.fetchers.forEach((L,V)=>{L.data!==void 0&&C.current.set(V,L.data)});let U=n.window==null||n.window.document==null||typeof n.window.document.startViewTransition!="function";if(!D||U){M?oi(()=>i(_)):y(()=>i(_));return}if(M){oi(()=>{d&&(f&&f.resolve(),d.skipTransition()),c({isTransitioning:!0,flushSync:!0,currentLocation:D.currentLocation,nextLocation:D.nextLocation})});let L=n.window.document.startViewTransition(()=>{oi(()=>i(_))});L.finished.finally(()=>{oi(()=>{u(void 0),h(void 0),l(void 0),c({isTransitioning:!1})})}),oi(()=>h(L));return}d?(f&&f.resolve(),d.skipTransition(),v({state:_,currentLocation:D.currentLocation,nextLocation:D.nextLocation})):(l(_),c({isTransitioning:!0,flushSync:!1,currentLocation:D.currentLocation,nextLocation:D.nextLocation}))},[n.window,d,f,C,y]);m.useLayoutEffect(()=>n.subscribe(w),[n,w]),m.useEffect(()=>{s.isTransitioning&&!s.flushSync&&u(new qC)},[s]),m.useEffect(()=>{if(f&&a&&n.window){let _=a,k=f.promise,A=n.window.document.startViewTransition(async()=>{y(()=>i(_)),await k});A.finished.finally(()=>{u(void 0),h(void 0),l(void 0),c({isTransitioning:!1})}),h(A)}},[y,a,f,n.window]),m.useEffect(()=>{f&&a&&o.location.key===a.location.key&&f.resolve()},[f,d,o.location,a]),m.useEffect(()=>{!s.isTransitioning&&x&&(l(x.state),c({isTransitioning:!0,flushSync:!1,currentLocation:x.currentLocation,nextLocation:x.nextLocation}),v(void 0))},[s.isTransitioning,x]),m.useEffect(()=>{},[]);let E=m.useMemo(()=>({createHref:n.createHref,encodeLocation:n.encodeLocation,go:_=>n.navigate(_),push:(_,k,A)=>n.navigate(_,{state:k,preventScrollReset:A==null?void 0:A.preventScrollReset}),replace:(_,k,A)=>n.navigate(_,{replace:!0,state:k,preventScrollReset:A==null?void 0:A.preventScrollReset})}),[n]),S=n.basename||"/",R=m.useMemo(()=>({router:n,navigator:E,static:!1,basename:S}),[n,E,S]),T=m.useMemo(()=>({v7_relativeSplatPath:n.future.v7_relativeSplatPath}),[n.future.v7_relativeSplatPath]);return m.createElement(m.Fragment,null,m.createElement(Ji.Provider,{value:R},m.createElement(sd.Provider,{value:o},m.createElement(QC.Provider,{value:C.current},m.createElement(YC.Provider,{value:s},m.createElement(FC,{basename:S,location:o.location,navigationType:o.historyAction,navigator:E,future:T},o.initialized||n.future.v7_partialHydration?m.createElement(t5,{routes:n.routes,future:n.future,state:o}):t))))),null)}const t5=m.memo(n5);function n5(e){let{routes:t,future:n,state:r}=e;return RC(t,void 0,r,n)}const r5=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",o5=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,ss=m.forwardRef(function(t,n){let{onClick:r,relative:o,reloadDocument:i,replace:a,state:l,target:s,to:c,preventScrollReset:f,unstable_viewTransition:u}=t,d=$C(t,HC),{basename:h}=m.useContext(vr),x,v=!1;if(typeof c=="string"&&o5.test(c)&&(x=c,r5))try{let w=new URL(window.location.href),E=c.startsWith("//")?new URL(w.protocol+c):new URL(c),S=zr(E.pathname,h);E.origin===w.origin&&S!=null?c=S+E.search+E.hash:v=!0}catch{}let C=_C(c,{relative:o}),g=s5(c,{replace:a,state:l,target:s,preventScrollReset:f,relative:o,unstable_viewTransition:u});function y(w){r&&r(w),w.defaultPrevented||g(w)}return m.createElement("a",Lo({},d,{href:x||C,onClick:v||i?r:y,ref:n,target:s}))});function i5(e){let{getKey:t,storageKey:n}=e;return u5({getKey:t,storageKey:n}),null}var Ec;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(Ec||(Ec={}));var _c;(function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(_c||(_c={}));function a5(e){let t=m.useContext(Ji);return t||ne(!1),t}function l5(e){let t=m.useContext(sd);return t||ne(!1),t}function s5(e,t){let{target:n,replace:r,state:o,preventScrollReset:i,relative:a,unstable_viewTransition:l}=t===void 0?{}:t,s=cd(),c=$e(),f=m0(e,{relative:a});return m.useCallback(u=>{if(BC(u,n)){u.preventDefault();let d=r!==void 0?r:jr(c)===jr(f);s(e,{replace:d,state:o,preventScrollReset:i,relative:a,unstable_viewTransition:l})}},[c,s,f,r,o,n,e,i,a,l])}const jp="react-router-scroll-positions";let Aa={};function u5(e){let{getKey:t,storageKey:n}=e===void 0?{}:e,{router:r}=a5(Ec.UseScrollRestoration),{restoreScrollPosition:o,preventScrollReset:i}=l5(_c.UseScrollRestoration),{basename:a}=m.useContext(vr),l=$e(),s=MC(),c=IC();m.useEffect(()=>(window.history.scrollRestoration="manual",()=>{window.history.scrollRestoration="auto"}),[]),c5(m.useCallback(()=>{if(c.state==="idle"){let f=(t?t(l,s):null)||l.key;Aa[f]=window.scrollY}try{sessionStorage.setItem(n||jp,JSON.stringify(Aa))}catch{}window.history.scrollRestoration="auto"},[n,t,c.state,l,s])),typeof document<"u"&&(m.useLayoutEffect(()=>{try{let f=sessionStorage.getItem(n||jp);f&&(Aa=JSON.parse(f))}catch{}},[n]),m.useLayoutEffect(()=>{let f=t&&a!=="/"?(d,h)=>t(Lo({},d,{pathname:zr(d.pathname,a)||d.pathname}),h):t,u=r==null?void 0:r.enableScrollRestoration(Aa,()=>window.scrollY,f);return()=>u&&u()},[r,a,t]),m.useLayoutEffect(()=>{if(o!==!1){if(typeof o=="number"){window.scrollTo(0,o);return}if(l.hash){let f=document.getElementById(decodeURIComponent(l.hash.slice(1)));if(f){f.scrollIntoView();return}}i!==!0&&window.scrollTo(0,0)}},[l,o,i]))}function c5(e,t){let{capture:n}={};m.useEffect(()=>{let r=n!=null?{capture:n}:void 0;return window.addEventListener("pagehide",e,r),()=>{window.removeEventListener("pagehide",e,r)}},[e,n])}const f5="modulepreload",d5=function(e){return"/gaianet-rag-api-pipeline/"+e},Ip={},ae=function(t,n,r){let o=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const a=document.querySelector("meta[property=csp-nonce]"),l=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));o=Promise.allSettled(n.map(s=>{if(s=d5(s),s in Ip)return;Ip[s]=!0;const c=s.endsWith(".css"),f=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${s}"]${f}`))return;const u=document.createElement("link");if(u.rel=c?"stylesheet":f5,c||(u.as="script"),u.crossOrigin="",u.href=s,l&&u.setAttribute("nonce",l),document.head.appendChild(u),c)return new Promise((d,h)=>{u.addEventListener("load",d),u.addEventListener("error",()=>h(new Error(`Unable to preload CSS for ${s}`)))})}))}function i(a){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=a,window.dispatchEvent(l),!l.defaultPrevented)throw a}return o.then(a=>{for(const l of a||[])l.status==="rejected"&&i(l.reason);return t().catch(i)})};function Sc(e){return Array.isArray(e)?e.map(Sc):typeof e=="object"&&e!==null?Object.keys(e).reduce((t,n)=>(t[n]=Sc(e[n]),t),{}):typeof e=="string"&&e.includes("_vocs-fn_")?new Function(`return ${e.slice(9)}`)():e}const x0=Sc({blogDir:"./pages/blog",rootDir:"docs",title:"RAG API Pipeline",titleTemplate:"%s – RAG API Pipeline",basePath:"/gaianet-rag-api-pipeline",description:"Supercharge your Gaia node by generating a vector knowledge base from any API.",editLink:{pattern:"https://github.com/raid-guild/gaianet-rag-api-pipeline/edit/main/docs/pages/:path",text:"Edit on GitHub"},iconUrl:"/gaianet-rag-api-pipeline/icon.svg",sidebar:[{text:"Getting Started",link:"/getting-started"},{text:"Defining the API Pipeline Manifest",collapsed:!1,link:"/manifest-definition",items:[{text:"Overview",link:"/manifest-definition/overview"},{text:"Example Manifests",link:"/manifest-definition/sample-manifests"}]},{text:"API Examples",collapsed:!1,link:"/apis",items:[{text:"Boardroom API",link:"/apis/boardroom-api"},{text:"Agora API",link:"/apis/agora-api"},{text:"Other API Sources",link:"/apis/other-api-sources"}]},{text:"RAG API Pipeline",collapsed:!1,link:"/cli",items:[{text:"Setup",link:"/cli/setup"},{text:"CLI Reference",link:"/cli/reference"},{text:"Customize Pipeline Settings",link:"/cli/settings"},{text:"Gaia Node Deployment",link:"/cli/node-deployment"},{text:"Other LLM Providers",link:"/cli/other-llm-providers"}]},{text:"Architecture",collapsed:!1,link:"/architecture",items:[{text:"Overview",link:"/architecture/overview"},{text:"Tech stack",link:"/architecture/tech-stack"},{text:"In-depth code review",link:"/architecture/code-review"}]}],topNav:[{text:"APIs",items:[{text:"Boardroom Governance API",link:"/apis/boardroom-api",id:19,items:[]}],id:18}],socials:[{icon:"github",link:"https://github.com/raid-guild/gaianet-rag-api-pipeline",label:"GitHub",type:"github"}],font:{},markdown:{code:{themes:{dark:"github-dark-dimmed",light:"github-light"}}},theme:{},vite:{base:"/gaianet-rag-api-pipeline"}}),w0=m.createContext(x0);function C0(){return typeof window<"u",x0}function h5({children:e,config:t}){const[n,r]=m.useState(()=>t||C0());return m.useEffect(()=>{},[]),m.useEffect(()=>{typeof window<"u"},[n]),p.jsx(w0.Provider,{value:n,children:e})}function Xe(){return m.useContext(w0)}const dd=[{lazy:()=>ae(()=>import("./apis-QDwbfawa.js"),[]),path:"/apis",type:"mdx",filePath:"apis.mdx",lastUpdatedAt:1731022359e3},{lazy:()=>ae(()=>import("./apis-QDwbfawa.js"),[]),path:"/apis.html",type:"mdx",filePath:"apis.mdx",lastUpdatedAt:1731022359e3},{lazy:()=>ae(()=>import("./architecture-CMLs3JHa.js"),[]),path:"/architecture",type:"mdx",filePath:"architecture.mdx",lastUpdatedAt:1726721893e3},{lazy:()=>ae(()=>import("./architecture-CMLs3JHa.js"),[]),path:"/architecture.html",type:"mdx",filePath:"architecture.mdx",lastUpdatedAt:1726721893e3},{lazy:()=>ae(()=>import("./cli-25jLkomP.js"),[]),path:"/cli",type:"mdx",filePath:"cli.mdx",lastUpdatedAt:1731022359e3},{lazy:()=>ae(()=>import("./cli-25jLkomP.js"),[]),path:"/cli.html",type:"mdx",filePath:"cli.mdx",lastUpdatedAt:1731022359e3},{lazy:()=>ae(()=>import("./getting-started-DOjqpcWh.js"),[]),path:"/getting-started",type:"mdx",filePath:"getting-started.mdx",lastUpdatedAt:1732640373e3},{lazy:()=>ae(()=>import("./getting-started-DOjqpcWh.js"),[]),path:"/getting-started.html",type:"mdx",filePath:"getting-started.mdx",lastUpdatedAt:1732640373e3},{lazy:()=>ae(()=>import("./index-DXqXtHau.js"),[]),path:"/",type:"mdx",filePath:"index.mdx",lastUpdatedAt:1732640373e3},{lazy:()=>ae(()=>import("./manifest-definition-BaamKtey.js"),[]),path:"/manifest-definition",type:"mdx",filePath:"manifest-definition.mdx",lastUpdatedAt:1731022359e3},{lazy:()=>ae(()=>import("./manifest-definition-BaamKtey.js"),[]),path:"/manifest-definition.html",type:"mdx",filePath:"manifest-definition.mdx",lastUpdatedAt:1731022359e3},{lazy:()=>ae(()=>import("./agora-api-O7ygYgER.js"),[]),path:"/apis/agora-api",type:"mdx",filePath:"apis/agora-api.mdx",lastUpdatedAt:173264393e4},{lazy:()=>ae(()=>import("./agora-api-O7ygYgER.js"),[]),path:"/apis/agora-api.html",type:"mdx",filePath:"apis/agora-api.mdx",lastUpdatedAt:173264393e4},{lazy:()=>ae(()=>import("./boardroom-api-D6RMY5FE.js"),[]),path:"/apis/boardroom-api",type:"mdx",filePath:"apis/boardroom-api.mdx",lastUpdatedAt:1732640373e3},{lazy:()=>ae(()=>import("./boardroom-api-D6RMY5FE.js"),[]),path:"/apis/boardroom-api.html",type:"mdx",filePath:"apis/boardroom-api.mdx",lastUpdatedAt:1732640373e3},{lazy:()=>ae(()=>import("./other-api-sources--zDi0222.js"),[]),path:"/apis/other-api-sources",type:"mdx",filePath:"apis/other-api-sources.mdx",lastUpdatedAt:1731022359e3},{lazy:()=>ae(()=>import("./other-api-sources--zDi0222.js"),[]),path:"/apis/other-api-sources.html",type:"mdx",filePath:"apis/other-api-sources.mdx",lastUpdatedAt:1731022359e3},{lazy:()=>ae(()=>import("./code-review-CcKvfVK9.js"),[]),path:"/architecture/code-review",type:"mdx",filePath:"architecture/code-review.mdx",lastUpdatedAt:1730870005e3},{lazy:()=>ae(()=>import("./code-review-CcKvfVK9.js"),[]),path:"/architecture/code-review.html",type:"mdx",filePath:"architecture/code-review.mdx",lastUpdatedAt:1730870005e3},{lazy:()=>ae(()=>import("./overview-DW02L2el.js"),[]),path:"/architecture/overview",type:"mdx",filePath:"architecture/overview.mdx",lastUpdatedAt:173264393e4},{lazy:()=>ae(()=>import("./overview-DW02L2el.js"),[]),path:"/architecture/overview.html",type:"mdx",filePath:"architecture/overview.mdx",lastUpdatedAt:173264393e4},{lazy:()=>ae(()=>import("./tech-stack-CUAjgFft.js"),[]),path:"/architecture/tech-stack",type:"mdx",filePath:"architecture/tech-stack.mdx",lastUpdatedAt:1732640373e3},{lazy:()=>ae(()=>import("./tech-stack-CUAjgFft.js"),[]),path:"/architecture/tech-stack.html",type:"mdx",filePath:"architecture/tech-stack.mdx",lastUpdatedAt:1732640373e3},{lazy:()=>ae(()=>import("./node-deployment-Bs-gA8GX.js"),[]),path:"/cli/node-deployment",type:"mdx",filePath:"cli/node-deployment.mdx",lastUpdatedAt:173264393e4},{lazy:()=>ae(()=>import("./node-deployment-Bs-gA8GX.js"),[]),path:"/cli/node-deployment.html",type:"mdx",filePath:"cli/node-deployment.mdx",lastUpdatedAt:173264393e4},{lazy:()=>ae(()=>import("./other-llm-providers-B8WmTDqK.js"),[]),path:"/cli/other-llm-providers",type:"mdx",filePath:"cli/other-llm-providers.mdx",lastUpdatedAt:1732640373e3},{lazy:()=>ae(()=>import("./other-llm-providers-B8WmTDqK.js"),[]),path:"/cli/other-llm-providers.html",type:"mdx",filePath:"cli/other-llm-providers.mdx",lastUpdatedAt:1732640373e3},{lazy:()=>ae(()=>import("./reference-DVNLRTb2.js"),[]),path:"/cli/reference",type:"mdx",filePath:"cli/reference.mdx",lastUpdatedAt:1731022359e3},{lazy:()=>ae(()=>import("./reference-DVNLRTb2.js"),[]),path:"/cli/reference.html",type:"mdx",filePath:"cli/reference.mdx",lastUpdatedAt:1731022359e3},{lazy:()=>ae(()=>import("./settings-DXgRaJT-.js"),[]),path:"/cli/settings",type:"mdx",filePath:"cli/settings.mdx",lastUpdatedAt:1732640373e3},{lazy:()=>ae(()=>import("./settings-DXgRaJT-.js"),[]),path:"/cli/settings.html",type:"mdx",filePath:"cli/settings.mdx",lastUpdatedAt:1732640373e3},{lazy:()=>ae(()=>import("./setup-EvAnAtPX.js"),[]),path:"/cli/setup",type:"mdx",filePath:"cli/setup.mdx",lastUpdatedAt:1732640373e3},{lazy:()=>ae(()=>import("./setup-EvAnAtPX.js"),[]),path:"/cli/setup.html",type:"mdx",filePath:"cli/setup.mdx",lastUpdatedAt:1732640373e3},{lazy:()=>ae(()=>import("./overview-DXI0Yf7z.js"),[]),path:"/manifest-definition/overview",type:"mdx",filePath:"manifest-definition/overview.mdx",lastUpdatedAt:1731022359e3},{lazy:()=>ae(()=>import("./overview-DXI0Yf7z.js"),[]),path:"/manifest-definition/overview.html",type:"mdx",filePath:"manifest-definition/overview.mdx",lastUpdatedAt:1731022359e3},{lazy:()=>ae(()=>import("./sample-manifests-BHPO8PSC.js"),[]),path:"/manifest-definition/sample-manifests",type:"mdx",filePath:"manifest-definition/sample-manifests.mdx",lastUpdatedAt:1731022359e3},{lazy:()=>ae(()=>import("./sample-manifests-BHPO8PSC.js"),[]),path:"/manifest-definition/sample-manifests.html",type:"mdx",filePath:"manifest-definition/sample-manifests.mdx",lastUpdatedAt:1731022359e3}];var eu={horizontalPadding:"var(--vocs-content_horizontalPadding)",verticalPadding:"var(--vocs-content_verticalPadding)",width:"var(--vocs-content_width)"},Mp={default:"system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif",mono:'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace'},Op={default:"var(--vocs-fontFamily_default)",mono:"var(--vocs-fontFamily_mono)"},Dp={white:"var(--vocs-color_white)",black:"var(--vocs-color_black)",background:"var(--vocs-color_background)",background2:"var(--vocs-color_background2)",background3:"var(--vocs-color_background3)",background4:"var(--vocs-color_background4)",background5:"var(--vocs-color_background5)",backgroundAccent:"var(--vocs-color_backgroundAccent)",backgroundAccentHover:"var(--vocs-color_backgroundAccentHover)",backgroundAccentText:"var(--vocs-color_backgroundAccentText)",backgroundBlueTint:"var(--vocs-color_backgroundBlueTint)",backgroundDark:"var(--vocs-color_backgroundDark)",backgroundGreenTint:"var(--vocs-color_backgroundGreenTint)",backgroundGreenTint2:"var(--vocs-color_backgroundGreenTint2)",backgroundIrisTint:"var(--vocs-color_backgroundIrisTint)",backgroundRedTint:"var(--vocs-color_backgroundRedTint)",backgroundRedTint2:"var(--vocs-color_backgroundRedTint2)",backgroundYellowTint:"var(--vocs-color_backgroundYellowTint)",border:"var(--vocs-color_border)",border2:"var(--vocs-color_border2)",borderAccent:"var(--vocs-color_borderAccent)",borderBlue:"var(--vocs-color_borderBlue)",borderGreen:"var(--vocs-color_borderGreen)",borderIris:"var(--vocs-color_borderIris)",borderRed:"var(--vocs-color_borderRed)",borderYellow:"var(--vocs-color_borderYellow)",heading:"var(--vocs-color_heading)",inverted:"var(--vocs-color_inverted)",shadow:"var(--vocs-color_shadow)",shadow2:"var(--vocs-color_shadow2)",text:"var(--vocs-color_text)",text2:"var(--vocs-color_text2)",text3:"var(--vocs-color_text3)",text4:"var(--vocs-color_text4)",textAccent:"var(--vocs-color_textAccent)",textAccentHover:"var(--vocs-color_textAccentHover)",textBlue:"var(--vocs-color_textBlue)",textBlueHover:"var(--vocs-color_textBlueHover)",textGreen:"var(--vocs-color_textGreen)",textGreenHover:"var(--vocs-color_textGreenHover)",textIris:"var(--vocs-color_textIris)",textIrisHover:"var(--vocs-color_textIrisHover)",textRed:"var(--vocs-color_textRed)",textRedHover:"var(--vocs-color_textRedHover)",textYellow:"var(--vocs-color_textYellow)",textYellowHover:"var(--vocs-color_textYellowHover)",title:"var(--vocs-color_title)"},tu={0:"var(--vocs-space_0)",1:"var(--vocs-space_1)",2:"var(--vocs-space_2)",3:"var(--vocs-space_3)",4:"var(--vocs-space_4)",6:"var(--vocs-space_6)",8:"var(--vocs-space_8)",12:"var(--vocs-space_12)",14:"var(--vocs-space_14)",16:"var(--vocs-space_16)",18:"var(--vocs-space_18)",20:"var(--vocs-space_20)",22:"var(--vocs-space_22)",24:"var(--vocs-space_24)",28:"var(--vocs-space_28)",32:"var(--vocs-space_32)",36:"var(--vocs-space_36)",40:"var(--vocs-space_40)",44:"var(--vocs-space_44)",48:"var(--vocs-space_48)",56:"var(--vocs-space_56)",64:"var(--vocs-space_64)",72:"var(--vocs-space_72)",80:"var(--vocs-space_80)"};function E0(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var o=e.length;for(t=0;t"".concat(l,":").concat(this[l])).join(";")},writable:!1}),n}var v5="var(--vocs_ExternalLink_iconUrl)",m5="vocs_ExternalLink";const g5=m.forwardRef(({className:e,children:t,hideExternalIcon:n,href:r,...o},i)=>{const{basePath:a}=Xe(),l=a;return p.jsx("a",{ref:i,className:F(e,n||typeof t!="string"?void 0:m5),href:r,target:"_blank",rel:"noopener noreferrer",style:Jt({[v5]:`url(${l}/.vocs/icons/arrow-diagonal.svg)`}),...o,children:t})});var Fp="vocs_Link_accent_underlined",zp="vocs_Link",$p="vocs_Link_styleless",Tc=new Map,ba=new WeakMap,Up=0,y5=void 0;function x5(e){return e?(ba.has(e)||(Up+=1,ba.set(e,Up.toString())),ba.get(e)):"0"}function w5(e){return Object.keys(e).sort().filter(t=>e[t]!==void 0).map(t=>`${t}_${t==="root"?x5(e.root):e[t]}`).toString()}function C5(e){const t=w5(e);let n=Tc.get(t);if(!n){const r=new Map;let o;const i=new IntersectionObserver(a=>{a.forEach(l=>{var s;const c=l.isIntersecting&&o.some(f=>l.intersectionRatio>=f);e.trackVisibility&&typeof l.isVisible>"u"&&(l.isVisible=c),(s=r.get(l.target))==null||s.forEach(f=>{f(c,l)})})},e);o=i.thresholds||(Array.isArray(e.threshold)?e.threshold:[e.threshold||0]),n={id:t,observer:i,elements:r},Tc.set(t,n)}return n}function E5(e,t,n={},r=y5){if(typeof window.IntersectionObserver>"u"&&r!==void 0){const s=e.getBoundingClientRect();return t(r,{isIntersecting:r,target:e,intersectionRatio:typeof n.threshold=="number"?n.threshold:0,time:0,boundingClientRect:s,intersectionRect:s,rootBounds:s}),()=>{}}const{id:o,observer:i,elements:a}=C5(n),l=a.get(e)||[];return a.has(e)||a.set(e,l),l.push(t),i.observe(e),function(){l.splice(l.indexOf(t),1),l.length===0&&(a.delete(e),i.unobserve(e)),a.size===0&&(i.disconnect(),Tc.delete(o))}}function _0({threshold:e,delay:t,trackVisibility:n,rootMargin:r,root:o,triggerOnce:i,skip:a,initialInView:l,fallbackInView:s,onChange:c}={}){var f;const[u,d]=m.useState(null),h=m.useRef(),[x,v]=m.useState({inView:!!l,entry:void 0});h.current=c,m.useEffect(()=>{if(a||!u)return;let w;return w=E5(u,(E,S)=>{v({inView:E,entry:S}),h.current&&h.current(E,S),S.isIntersecting&&i&&w&&(w(),w=void 0)},{root:o,rootMargin:r,threshold:e,trackVisibility:n,delay:t},s),()=>{w&&w()}},[Array.isArray(e)?e.toString():e,u,o,r,i,a,n,s,t]);const C=(f=x.entry)==null?void 0:f.target,g=m.useRef();!u&&C&&!i&&!a&&g.current!==C&&(g.current=C,v({inView:!!l,entry:void 0}));const y=[d,x.inView,x.entry];return y.ref=y[0],y.inView=y[1],y.entry=y[2],y}function _5(...e){return t=>{S5(t,...e)}}function S5(e,...t){t.forEach(n=>{typeof n=="function"?n(e):n!=null&&(n.current=e)})}const ir=m.forwardRef((e,t)=>{const n=()=>{var i;return(i=dd.find(a=>a.path===e.to))==null?void 0:i.lazy()},{ref:r,inView:o}=_0();return m.useEffect(()=>{o&&n()},[o,n]),p.jsx(ss,{ref:_5(t,r),...e})}),sn=m.forwardRef((e,t)=>{const{href:n,variant:r="accent underlined"}=e,{pathname:o}=$e();if(n!=null&&n.match(/^(www|https?)/))return p.jsx(g5,{...e,ref:t,className:F(e.className,zp,r==="accent underlined"&&Fp,r==="styleless"&&$p),hideExternalIcon:e.hideExternalIcon});const[i,a]=(n||"").split("#"),l=`${i||o}${a?`#${a}`:""}`;return p.jsx(ir,{...e,ref:t,className:F(e.className,zp,r==="accent underlined"&&Fp,r==="styleless"&&$p),to:l})});var T5="vocs_NotFound_divider",R5="vocs_NotFound",N5="vocs_H1",S0="vocs_Heading",T0="vocs_Heading_slugTarget";function Bo({level:e,...t}){const n=`h${e}`;return p.jsxs(n,{...t,id:void 0,className:F(t.className,S0),children:[p.jsx("div",{id:t.id,className:T0}),t.children]})}function R0(e){return p.jsx(Bo,{...e,className:F(e.className,N5),level:1})}var P5="vocs_Paragraph";function N0(e){return p.jsx("p",{...e,className:F(e.className,P5)})}function k5(){return p.jsxs("div",{className:R5,children:[p.jsx(R0,{children:"Page Not Found"}),p.jsx("div",{style:{height:tu[24]}}),p.jsx("hr",{className:T5}),p.jsx("div",{style:{height:tu[24]}}),p.jsx(N0,{children:"The page you were looking for could not be found."}),p.jsx("div",{style:{height:tu[8]}}),p.jsx(sn,{href:"/",children:"Go to Home Page"})]})}var A5="var(--vocs_Banner_bannerBackgroundColor)",b5="var(--vocs_Banner_bannerHeight)",L5="var(--vocs_Banner_bannerTextColor)",j5="vocs_Banner_closeButton",I5="vocs_Banner_content",M5="vocs_Banner_inner",O5="vocs_Banner";const D5=Object.getPrototypeOf(F5).constructor;async function F5(e,t){return new D5(String(e))(t)}function z5(e,t){return new Function(String(e))(t)}function Ur(e,t){if(e==null)return{};var n={},r=Object.keys(e),o,i;for(i=0;i=0)&&(n[o]=e[o]);return n}var $5=["color"],U5=m.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Ur(e,$5);return m.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),m.createElement("path",{d:"M6.85355 3.14645C7.04882 3.34171 7.04882 3.65829 6.85355 3.85355L3.70711 7H12.5C12.7761 7 13 7.22386 13 7.5C13 7.77614 12.7761 8 12.5 8H3.70711L6.85355 11.1464C7.04882 11.3417 7.04882 11.6583 6.85355 11.8536C6.65829 12.0488 6.34171 12.0488 6.14645 11.8536L2.14645 7.85355C1.95118 7.65829 1.95118 7.34171 2.14645 7.14645L6.14645 3.14645C6.34171 2.95118 6.65829 2.95118 6.85355 3.14645Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),B5=["color"],H5=m.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Ur(e,B5);return m.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),m.createElement("path",{d:"M6.1584 3.13508C6.35985 2.94621 6.67627 2.95642 6.86514 3.15788L10.6151 7.15788C10.7954 7.3502 10.7954 7.64949 10.6151 7.84182L6.86514 11.8418C6.67627 12.0433 6.35985 12.0535 6.1584 11.8646C5.95694 11.6757 5.94673 11.3593 6.1356 11.1579L9.565 7.49985L6.1356 3.84182C5.94673 3.64036 5.95694 3.32394 6.1584 3.13508Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),V5=["color"],W5=m.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Ur(e,V5);return m.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),m.createElement("path",{d:"M12.8536 2.85355C13.0488 2.65829 13.0488 2.34171 12.8536 2.14645C12.6583 1.95118 12.3417 1.95118 12.1464 2.14645L7.5 6.79289L2.85355 2.14645C2.65829 1.95118 2.34171 1.95118 2.14645 2.14645C1.95118 2.34171 1.95118 2.65829 2.14645 2.85355L6.79289 7.5L2.14645 12.1464C1.95118 12.3417 1.95118 12.6583 2.14645 12.8536C2.34171 13.0488 2.65829 13.0488 2.85355 12.8536L7.5 8.20711L12.1464 12.8536C12.3417 13.0488 12.6583 13.0488 12.8536 12.8536C13.0488 12.6583 13.0488 12.3417 12.8536 12.1464L8.20711 7.5L12.8536 2.85355Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),K5=["color"],G5=m.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Ur(e,K5);return m.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),m.createElement("path",{d:"M3.5 2C3.22386 2 3 2.22386 3 2.5V12.5C3 12.7761 3.22386 13 3.5 13H11.5C11.7761 13 12 12.7761 12 12.5V6H8.5C8.22386 6 8 5.77614 8 5.5V2H3.5ZM9 2.70711L11.2929 5H9V2.70711ZM2 2.5C2 1.67157 2.67157 1 3.5 1H8.5C8.63261 1 8.75979 1.05268 8.85355 1.14645L12.8536 5.14645C12.9473 5.24021 13 5.36739 13 5.5V12.5C13 13.3284 12.3284 14 11.5 14H3.5C2.67157 14 2 13.3284 2 12.5V2.5Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),Y5=["color"],Q5=m.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Ur(e,Y5);return m.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),m.createElement("path",{d:"M1.5 5.25C1.91421 5.25 2.25 4.91421 2.25 4.5C2.25 4.08579 1.91421 3.75 1.5 3.75C1.08579 3.75 0.75 4.08579 0.75 4.5C0.75 4.91421 1.08579 5.25 1.5 5.25ZM4 4.5C4 4.22386 4.22386 4 4.5 4H13.5C13.7761 4 14 4.22386 14 4.5C14 4.77614 13.7761 5 13.5 5H4.5C4.22386 5 4 4.77614 4 4.5ZM4.5 7C4.22386 7 4 7.22386 4 7.5C4 7.77614 4.22386 8 4.5 8H13.5C13.7761 8 14 7.77614 14 7.5C14 7.22386 13.7761 7 13.5 7H4.5ZM4.5 10C4.22386 10 4 10.2239 4 10.5C4 10.7761 4.22386 11 4.5 11H13.5C13.7761 11 14 10.7761 14 10.5C14 10.2239 13.7761 10 13.5 10H4.5ZM2.25 7.5C2.25 7.91421 1.91421 8.25 1.5 8.25C1.08579 8.25 0.75 7.91421 0.75 7.5C0.75 7.08579 1.08579 6.75 1.5 6.75C1.91421 6.75 2.25 7.08579 2.25 7.5ZM1.5 11.25C1.91421 11.25 2.25 10.9142 2.25 10.5C2.25 10.0858 1.91421 9.75 1.5 9.75C1.08579 9.75 0.75 10.0858 0.75 10.5C0.75 10.9142 1.08579 11.25 1.5 11.25Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),Z5=["color"],hd=m.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Ur(e,Z5);return m.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),m.createElement("path",{d:"M10 6.5C10 8.433 8.433 10 6.5 10C4.567 10 3 8.433 3 6.5C3 4.567 4.567 3 6.5 3C8.433 3 10 4.567 10 6.5ZM9.30884 10.0159C8.53901 10.6318 7.56251 11 6.5 11C4.01472 11 2 8.98528 2 6.5C2 4.01472 4.01472 2 6.5 2C8.98528 2 11 4.01472 11 6.5C11 7.56251 10.6318 8.53901 10.0159 9.30884L12.8536 12.1464C13.0488 12.3417 13.0488 12.6583 12.8536 12.8536C12.6583 13.0488 12.3417 13.0488 12.1464 12.8536L9.30884 10.0159Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),X5=["color"],J5=m.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Ur(e,X5);return m.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),m.createElement("path",{d:"M12.1464 1.14645C12.3417 0.951184 12.6583 0.951184 12.8535 1.14645L14.8535 3.14645C15.0488 3.34171 15.0488 3.65829 14.8535 3.85355L10.9109 7.79618C10.8349 7.87218 10.7471 7.93543 10.651 7.9835L6.72359 9.94721C6.53109 10.0435 6.29861 10.0057 6.14643 9.85355C5.99425 9.70137 5.95652 9.46889 6.05277 9.27639L8.01648 5.34897C8.06455 5.25283 8.1278 5.16507 8.2038 5.08907L12.1464 1.14645ZM12.5 2.20711L8.91091 5.79618L7.87266 7.87267L8.12731 8.12732L10.2038 7.08907L13.7929 3.5L12.5 2.20711ZM9.99998 2L8.99998 3H4.9C4.47171 3 4.18056 3.00039 3.95552 3.01877C3.73631 3.03668 3.62421 3.06915 3.54601 3.10899C3.35785 3.20487 3.20487 3.35785 3.10899 3.54601C3.06915 3.62421 3.03669 3.73631 3.01878 3.95552C3.00039 4.18056 3 4.47171 3 4.9V11.1C3 11.5283 3.00039 11.8194 3.01878 12.0445C3.03669 12.2637 3.06915 12.3758 3.10899 12.454C3.20487 12.6422 3.35785 12.7951 3.54601 12.891C3.62421 12.9309 3.73631 12.9633 3.95552 12.9812C4.18056 12.9996 4.47171 13 4.9 13H11.1C11.5283 13 11.8194 12.9996 12.0445 12.9812C12.2637 12.9633 12.3758 12.9309 12.454 12.891C12.6422 12.7951 12.7951 12.6422 12.891 12.454C12.9309 12.3758 12.9633 12.2637 12.9812 12.0445C12.9996 11.8194 13 11.5283 13 11.1V6.99998L14 5.99998V11.1V11.1207C14 11.5231 14 11.8553 13.9779 12.1259C13.9549 12.407 13.9057 12.6653 13.782 12.908C13.5903 13.2843 13.2843 13.5903 12.908 13.782C12.6653 13.9057 12.407 13.9549 12.1259 13.9779C11.8553 14 11.5231 14 11.1207 14H11.1H4.9H4.87934C4.47686 14 4.14468 14 3.87409 13.9779C3.59304 13.9549 3.33469 13.9057 3.09202 13.782C2.7157 13.5903 2.40973 13.2843 2.21799 12.908C2.09434 12.6653 2.04506 12.407 2.0221 12.1259C1.99999 11.8553 1.99999 11.5231 2 11.1207V11.1206V11.1V4.9V4.87935V4.87932V4.87931C1.99999 4.47685 1.99999 4.14468 2.0221 3.87409C2.04506 3.59304 2.09434 3.33469 2.21799 3.09202C2.40973 2.71569 2.7157 2.40973 3.09202 2.21799C3.33469 2.09434 3.59304 2.04506 3.87409 2.0221C4.14468 1.99999 4.47685 1.99999 4.87932 2H4.87935H4.9H9.99998Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))});function Il(e,t){if(typeof e!="object"||e===null)return e;if(Array.isArray(e))return e.map((r,o)=>Il(r,o));const n=e.props.children?{...e.props,children:Il(e.props.children)}:e.props;return he.createElement(e.type,{...n,key:t})}function q5({hide:e}){const{banner:t}=Xe(),n=m.useMemo(()=>{const r=(t==null?void 0:t.content)??"";if(!r)return null;if(typeof r!="string")return()=>Il(r);const{default:o}=z5(r,{...ww,Fragment:m.Fragment});return o},[t]);return n?p.jsx("div",{className:F(O5),style:Jt({[A5]:t==null?void 0:t.backgroundColor,[L5]:t==null?void 0:t.textColor}),children:p.jsxs("div",{className:F(M5),children:[p.jsx("div",{className:F(I5),children:p.jsx(n,{})}),(t==null?void 0:t.dismissable)!=="false"&&p.jsx("button",{className:F(j5),onClick:e,type:"button",children:p.jsx(W5,{width:14,height:14})})]})}):null}var eE="vocs_Content";function P0({children:e,className:t}){return p.jsx("article",{className:F(t,eE),children:e})}function k0({items:e,pathname:t}){const n=t.replace(/\.html$/,""),r=[];for(const o of e)(o.link&&n.startsWith(o.match||o.link)||o.items&&k0({items:o.items,pathname:t}).length>0)&&r.push(o.id);return r}function qi({items:e,pathname:t}){return m.useMemo(()=>k0({items:e,pathname:t}),[e,t])}function Br(){const e=m.useContext(A0);if(!e)throw new Error("`usePageData` must be used within `PageDataContext.Provider`.");return e}const A0=m.createContext(void 0);function us(){const{pathname:e}=$e(),t=Xe(),{sidebar:n}=t;if(!n)return{items:[]};if(Array.isArray(n))return{items:n};const r=m.useMemo(()=>{const o=Object.keys(n).filter(i=>e.startsWith(i));return o[o.length-1]},[n,e]);return r?Array.isArray(n[r])?{key:r,items:n[r]}:{...n[r],key:r}:{items:[]}}function Hr(){const e=us(),{frontmatter:t}=Br(),{layout:n,showLogo:r,showOutline:o,showSidebar:i,showTopNav:a}=t||{},l=n??"docs";return{layout:l,get showLogo(){return typeof r<"u"?r:!0},get showOutline(){return typeof o<"u"?o:l==="docs"},get showSidebar(){return e.items.length===0?!1:typeof i<"u"?i:!(l==="minimal"||l==="landing")},get showTopNav(){return typeof a<"u"?a:!0}}}function tE(){const[e,t]=m.useState(()=>{if(!(typeof window>"u")){if(localStorage.getItem("vocs.theme")){const n=localStorage.getItem("vocs.theme");if(n)return n}return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}});return m.useEffect(()=>{e&&localStorage.setItem("vocs.theme",e),e==="dark"?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark")},[e]),{theme:e,toggle(){t(n=>n==="light"?"dark":"light")}}}var nE="vocs_utils_visibleDark",rE="vocs_utils_visibleLight",b0="vocs_utils_visuallyHidden";function oe(e,t,{checkForDefaultPrevented:n=!0}={}){return function(o){if(e==null||e(o),n===!1||!o.defaultPrevented)return t==null?void 0:t(o)}}function oE(e,t){typeof e=="function"?e(t):e!=null&&(e.current=t)}function pd(...e){return t=>e.forEach(n=>oE(n,t))}function ze(...e){return m.useCallback(pd(...e),e)}function iE(e,t){const n=m.createContext(t);function r(i){const{children:a,...l}=i,s=m.useMemo(()=>l,Object.values(l));return p.jsx(n.Provider,{value:s,children:a})}function o(i){const a=m.useContext(n);if(a)return a;if(t!==void 0)return t;throw new Error(`\`${i}\` must be used within \`${e}\``)}return r.displayName=e+"Provider",[r,o]}function bn(e,t=[]){let n=[];function r(i,a){const l=m.createContext(a),s=n.length;n=[...n,a];function c(u){const{scope:d,children:h,...x}=u,v=(d==null?void 0:d[e][s])||l,C=m.useMemo(()=>x,Object.values(x));return p.jsx(v.Provider,{value:C,children:h})}function f(u,d){const h=(d==null?void 0:d[e][s])||l,x=m.useContext(h);if(x)return x;if(a!==void 0)return a;throw new Error(`\`${u}\` must be used within \`${i}\``)}return c.displayName=i+"Provider",[c,f]}const o=()=>{const i=n.map(a=>m.createContext(a));return function(l){const s=(l==null?void 0:l[e])||i;return m.useMemo(()=>({[`__scope${e}`]:{...l,[e]:s}}),[l,s])}};return o.scopeName=e,[r,aE(o,...t)]}function aE(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const r=e.map(o=>({useScope:o(),scopeName:o.scopeName}));return function(i){const a=r.reduce((l,{useScope:s,scopeName:c})=>{const u=s(i)[`__scope${c}`];return{...l,...u}},{});return m.useMemo(()=>({[`__scope${t.scopeName}`]:a}),[a])}};return n.scopeName=t.scopeName,n}var qt=globalThis!=null&&globalThis.document?m.useLayoutEffect:()=>{},lE=ff.useId||(()=>{}),sE=0;function un(e){const[t,n]=m.useState(lE());return qt(()=>{n(r=>r??String(sE++))},[e]),t?`radix-${t}`:""}function at(e){const t=m.useRef(e);return m.useEffect(()=>{t.current=e}),m.useMemo(()=>(...n)=>{var r;return(r=t.current)==null?void 0:r.call(t,...n)},[])}function Ln({prop:e,defaultProp:t,onChange:n=()=>{}}){const[r,o]=uE({defaultProp:t,onChange:n}),i=e!==void 0,a=i?e:r,l=at(n),s=m.useCallback(c=>{if(i){const u=typeof c=="function"?c(e):c;u!==e&&l(u)}else o(c)},[i,e,o,l]);return[a,s]}function uE({defaultProp:e,onChange:t}){const n=m.useState(e),[r]=n,o=m.useRef(r),i=at(t);return m.useEffect(()=>{o.current!==r&&(i(r),o.current=r)},[r,o,i]),n}var jo=m.forwardRef((e,t)=>{const{children:n,...r}=e,o=m.Children.toArray(n),i=o.find(fE);if(i){const a=i.props.children,l=o.map(s=>s===i?m.Children.count(a)>1?m.Children.only(null):m.isValidElement(a)?a.props.children:null:s);return p.jsx(Rc,{...r,ref:t,children:m.isValidElement(a)?m.cloneElement(a,void 0,l):null})}return p.jsx(Rc,{...r,ref:t,children:n})});jo.displayName="Slot";var Rc=m.forwardRef((e,t)=>{const{children:n,...r}=e;if(m.isValidElement(n)){const o=hE(n);return m.cloneElement(n,{...dE(r,n.props),ref:t?pd(t,o):o})}return m.Children.count(n)>1?m.Children.only(null):null});Rc.displayName="SlotClone";var cE=({children:e})=>p.jsx(p.Fragment,{children:e});function fE(e){return m.isValidElement(e)&&e.type===cE}function dE(e,t){const n={...t};for(const r in t){const o=e[r],i=t[r];/^on[A-Z]/.test(r)?o&&i?n[r]=(...l)=>{i(...l),o(...l)}:o&&(n[r]=o):r==="style"?n[r]={...o,...i}:r==="className"&&(n[r]=[o,i].filter(Boolean).join(" "))}return{...e,...n}}function hE(e){var r,o;let t=(r=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:r.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=(o=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:o.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var pE=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"],ie=pE.reduce((e,t)=>{const n=m.forwardRef((r,o)=>{const{asChild:i,...a}=r,l=i?jo:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),p.jsx(l,{...a,ref:o})});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{});function Nc(e,t){e&&$o.flushSync(()=>e.dispatchEvent(t))}function vE(e,t=globalThis==null?void 0:globalThis.document){const n=at(e);m.useEffect(()=>{const r=o=>{o.key==="Escape"&&n(o)};return t.addEventListener("keydown",r,{capture:!0}),()=>t.removeEventListener("keydown",r,{capture:!0})},[n,t])}var mE="DismissableLayer",Pc="dismissableLayer.update",gE="dismissableLayer.pointerDownOutside",yE="dismissableLayer.focusOutside",Bp,L0=m.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),cs=m.forwardRef((e,t)=>{const{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:r,onPointerDownOutside:o,onFocusOutside:i,onInteractOutside:a,onDismiss:l,...s}=e,c=m.useContext(L0),[f,u]=m.useState(null),d=(f==null?void 0:f.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,h]=m.useState({}),x=ze(t,T=>u(T)),v=Array.from(c.layers),[C]=[...c.layersWithOutsidePointerEventsDisabled].slice(-1),g=v.indexOf(C),y=f?v.indexOf(f):-1,w=c.layersWithOutsidePointerEventsDisabled.size>0,E=y>=g,S=CE(T=>{const _=T.target,k=[...c.branches].some(A=>A.contains(_));!E||k||(o==null||o(T),a==null||a(T),T.defaultPrevented||l==null||l())},d),R=EE(T=>{const _=T.target;[...c.branches].some(A=>A.contains(_))||(i==null||i(T),a==null||a(T),T.defaultPrevented||l==null||l())},d);return vE(T=>{y===c.layers.size-1&&(r==null||r(T),!T.defaultPrevented&&l&&(T.preventDefault(),l()))},d),m.useEffect(()=>{if(f)return n&&(c.layersWithOutsidePointerEventsDisabled.size===0&&(Bp=d.body.style.pointerEvents,d.body.style.pointerEvents="none"),c.layersWithOutsidePointerEventsDisabled.add(f)),c.layers.add(f),Hp(),()=>{n&&c.layersWithOutsidePointerEventsDisabled.size===1&&(d.body.style.pointerEvents=Bp)}},[f,d,n,c]),m.useEffect(()=>()=>{f&&(c.layers.delete(f),c.layersWithOutsidePointerEventsDisabled.delete(f),Hp())},[f,c]),m.useEffect(()=>{const T=()=>h({});return document.addEventListener(Pc,T),()=>document.removeEventListener(Pc,T)},[]),p.jsx(ie.div,{...s,ref:x,style:{pointerEvents:w?E?"auto":"none":void 0,...e.style},onFocusCapture:oe(e.onFocusCapture,R.onFocusCapture),onBlurCapture:oe(e.onBlurCapture,R.onBlurCapture),onPointerDownCapture:oe(e.onPointerDownCapture,S.onPointerDownCapture)})});cs.displayName=mE;var xE="DismissableLayerBranch",wE=m.forwardRef((e,t)=>{const n=m.useContext(L0),r=m.useRef(null),o=ze(t,r);return m.useEffect(()=>{const i=r.current;if(i)return n.branches.add(i),()=>{n.branches.delete(i)}},[n.branches]),p.jsx(ie.div,{...e,ref:o})});wE.displayName=xE;function CE(e,t=globalThis==null?void 0:globalThis.document){const n=at(e),r=m.useRef(!1),o=m.useRef(()=>{});return m.useEffect(()=>{const i=l=>{if(l.target&&!r.current){let s=function(){j0(gE,n,c,{discrete:!0})};const c={originalEvent:l};l.pointerType==="touch"?(t.removeEventListener("click",o.current),o.current=s,t.addEventListener("click",o.current,{once:!0})):s()}else t.removeEventListener("click",o.current);r.current=!1},a=window.setTimeout(()=>{t.addEventListener("pointerdown",i)},0);return()=>{window.clearTimeout(a),t.removeEventListener("pointerdown",i),t.removeEventListener("click",o.current)}},[t,n]),{onPointerDownCapture:()=>r.current=!0}}function EE(e,t=globalThis==null?void 0:globalThis.document){const n=at(e),r=m.useRef(!1);return m.useEffect(()=>{const o=i=>{i.target&&!r.current&&j0(yE,n,{originalEvent:i},{discrete:!1})};return t.addEventListener("focusin",o),()=>t.removeEventListener("focusin",o)},[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function Hp(){const e=new CustomEvent(Pc);document.dispatchEvent(e)}function j0(e,t,n,{discrete:r}){const o=n.originalEvent.target,i=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&o.addEventListener(e,t,{once:!0}),r?Nc(o,i):o.dispatchEvent(i)}var nu="focusScope.autoFocusOnMount",ru="focusScope.autoFocusOnUnmount",Vp={bubbles:!1,cancelable:!0},_E="FocusScope",vd=m.forwardRef((e,t)=>{const{loop:n=!1,trapped:r=!1,onMountAutoFocus:o,onUnmountAutoFocus:i,...a}=e,[l,s]=m.useState(null),c=at(o),f=at(i),u=m.useRef(null),d=ze(t,v=>s(v)),h=m.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;m.useEffect(()=>{if(r){let v=function(w){if(h.paused||!l)return;const E=w.target;l.contains(E)?u.current=E:$n(u.current,{select:!0})},C=function(w){if(h.paused||!l)return;const E=w.relatedTarget;E!==null&&(l.contains(E)||$n(u.current,{select:!0}))},g=function(w){if(document.activeElement===document.body)for(const S of w)S.removedNodes.length>0&&$n(l)};document.addEventListener("focusin",v),document.addEventListener("focusout",C);const y=new MutationObserver(g);return l&&y.observe(l,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",v),document.removeEventListener("focusout",C),y.disconnect()}}},[r,l,h.paused]),m.useEffect(()=>{if(l){Kp.add(h);const v=document.activeElement;if(!l.contains(v)){const g=new CustomEvent(nu,Vp);l.addEventListener(nu,c),l.dispatchEvent(g),g.defaultPrevented||(SE(kE(I0(l)),{select:!0}),document.activeElement===v&&$n(l))}return()=>{l.removeEventListener(nu,c),setTimeout(()=>{const g=new CustomEvent(ru,Vp);l.addEventListener(ru,f),l.dispatchEvent(g),g.defaultPrevented||$n(v??document.body,{select:!0}),l.removeEventListener(ru,f),Kp.remove(h)},0)}}},[l,c,f,h]);const x=m.useCallback(v=>{if(!n&&!r||h.paused)return;const C=v.key==="Tab"&&!v.altKey&&!v.ctrlKey&&!v.metaKey,g=document.activeElement;if(C&&g){const y=v.currentTarget,[w,E]=TE(y);w&&E?!v.shiftKey&&g===E?(v.preventDefault(),n&&$n(w,{select:!0})):v.shiftKey&&g===w&&(v.preventDefault(),n&&$n(E,{select:!0})):g===y&&v.preventDefault()}},[n,r,h.paused]);return p.jsx(ie.div,{tabIndex:-1,...a,ref:d,onKeyDown:x})});vd.displayName=_E;function SE(e,{select:t=!1}={}){const n=document.activeElement;for(const r of e)if($n(r,{select:t}),document.activeElement!==n)return}function TE(e){const t=I0(e),n=Wp(t,e),r=Wp(t.reverse(),e);return[n,r]}function I0(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const o=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||o?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function Wp(e,t){for(const n of e)if(!RE(n,{upTo:t}))return n}function RE(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function NE(e){return e instanceof HTMLInputElement&&"select"in e}function $n(e,{select:t=!1}={}){if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&NE(e)&&t&&e.select()}}var Kp=PE();function PE(){let e=[];return{add(t){const n=e[0];t!==n&&(n==null||n.pause()),e=Gp(e,t),e.unshift(t)},remove(t){var n;e=Gp(e,t),(n=e[0])==null||n.resume()}}}function Gp(e,t){const n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function kE(e){return e.filter(t=>t.tagName!=="A")}var AE="Portal",md=m.forwardRef((e,t)=>{var l;const{container:n,...r}=e,[o,i]=m.useState(!1);qt(()=>i(!0),[]);const a=n||o&&((l=globalThis==null?void 0:globalThis.document)==null?void 0:l.body);return a?nd.createPortal(p.jsx(ie.div,{...r,ref:t}),a):null});md.displayName=AE;function bE(e,t){return m.useReducer((n,r)=>t[n][r]??n,e)}var zt=e=>{const{present:t,children:n}=e,r=LE(t),o=typeof n=="function"?n({present:r.isPresent}):m.Children.only(n),i=ze(r.ref,jE(o));return typeof n=="function"||r.isPresent?m.cloneElement(o,{ref:i}):null};zt.displayName="Presence";function LE(e){const[t,n]=m.useState(),r=m.useRef({}),o=m.useRef(e),i=m.useRef("none"),a=e?"mounted":"unmounted",[l,s]=bE(a,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return m.useEffect(()=>{const c=La(r.current);i.current=l==="mounted"?c:"none"},[l]),qt(()=>{const c=r.current,f=o.current;if(f!==e){const d=i.current,h=La(c);e?s("MOUNT"):h==="none"||(c==null?void 0:c.display)==="none"?s("UNMOUNT"):s(f&&d!==h?"ANIMATION_OUT":"UNMOUNT"),o.current=e}},[e,s]),qt(()=>{if(t){const c=u=>{const h=La(r.current).includes(u.animationName);u.target===t&&h&&$o.flushSync(()=>s("ANIMATION_END"))},f=u=>{u.target===t&&(i.current=La(r.current))};return t.addEventListener("animationstart",f),t.addEventListener("animationcancel",c),t.addEventListener("animationend",c),()=>{t.removeEventListener("animationstart",f),t.removeEventListener("animationcancel",c),t.removeEventListener("animationend",c)}}else s("ANIMATION_END")},[t,s]),{isPresent:["mounted","unmountSuspended"].includes(l),ref:m.useCallback(c=>{c&&(r.current=getComputedStyle(c)),n(c)},[])}}function La(e){return(e==null?void 0:e.animationName)||"none"}function jE(e){var r,o;let t=(r=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:r.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=(o=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:o.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var ou=0;function M0(){m.useEffect(()=>{const e=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",e[0]??Yp()),document.body.insertAdjacentElement("beforeend",e[1]??Yp()),ou++,()=>{ou===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(t=>t.remove()),ou--}},[])}function Yp(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.cssText="outline: none; opacity: 0; position: fixed; pointer-events: none",e}var on=function(){return on=Object.assign||function(t){for(var n,r=1,o=arguments.length;r"u")return ZE;var t=XE(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},qE=z0(),wo="data-scroll-locked",e4=function(e,t,n,r){var o=e.left,i=e.top,a=e.right,l=e.gap;return n===void 0&&(n="margin"),` + */function Lo(){return Lo=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&(n[o]=e[o]);return n}function UC(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function BC(e,t){return e.button===0&&(!t||t==="_self")&&!UC(e)}const HC=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","unstable_viewTransition"],VC="6";try{window.__reactRouterVersion=VC}catch{}function WC(e,t){return eC({basename:t==null?void 0:t.basename,future:Lo({},t==null?void 0:t.future,{v7_prependBasename:!0}),history:R3({window:t==null?void 0:t.window}),hydrationData:(t==null?void 0:t.hydrationData)||KC(),routes:e,mapRouteProperties:zC,unstable_dataStrategy:t==null?void 0:t.unstable_dataStrategy,unstable_patchRoutesOnNavigation:t==null?void 0:t.unstable_patchRoutesOnNavigation,window:t==null?void 0:t.window}).initialize()}function KC(){var e;let t=(e=window)==null?void 0:e.__staticRouterHydrationData;return t&&t.errors&&(t=Lo({},t,{errors:GC(t.errors)})),t}function GC(e){if(!e)return null;let t=Object.entries(e),n={};for(let[r,o]of t)if(o&&o.__type==="RouteErrorResponse")n[r]=new Ll(o.status,o.statusText,o.data,o.internal===!0);else if(o&&o.__type==="Error"){if(o.__subType){let i=window[o.__subType];if(typeof i=="function")try{let a=new i(o.message);a.stack="",n[r]=a}catch{}}if(n[r]==null){let i=new Error(o.message);i.stack="",n[r]=i}}else n[r]=o;return n}const YC=m.createContext({isTransitioning:!1}),QC=m.createContext(new Map),ZC="startTransition",bp=ff[ZC],XC="flushSync",Lp=T3[XC];function JC(e){bp?bp(e):e()}function oi(e){Lp?Lp(e):e()}class qC{constructor(){this.status="pending",this.promise=new Promise((t,n)=>{this.resolve=r=>{this.status==="pending"&&(this.status="resolved",t(r))},this.reject=r=>{this.status==="pending"&&(this.status="rejected",n(r))}})}}function e5(e){let{fallbackElement:t,router:n,future:r}=e,[o,i]=m.useState(n.state),[a,l]=m.useState(),[s,c]=m.useState({isTransitioning:!1}),[f,u]=m.useState(),[d,h]=m.useState(),[x,v]=m.useState(),C=m.useRef(new Map),{v7_startTransition:g}=r||{},y=m.useCallback(_=>{g?JC(_):_()},[g]),w=m.useCallback((_,k)=>{let{deletedFetchers:A,unstable_flushSync:M,unstable_viewTransitionOpts:D}=k;A.forEach(L=>C.current.delete(L)),_.fetchers.forEach((L,V)=>{L.data!==void 0&&C.current.set(V,L.data)});let U=n.window==null||n.window.document==null||typeof n.window.document.startViewTransition!="function";if(!D||U){M?oi(()=>i(_)):y(()=>i(_));return}if(M){oi(()=>{d&&(f&&f.resolve(),d.skipTransition()),c({isTransitioning:!0,flushSync:!0,currentLocation:D.currentLocation,nextLocation:D.nextLocation})});let L=n.window.document.startViewTransition(()=>{oi(()=>i(_))});L.finished.finally(()=>{oi(()=>{u(void 0),h(void 0),l(void 0),c({isTransitioning:!1})})}),oi(()=>h(L));return}d?(f&&f.resolve(),d.skipTransition(),v({state:_,currentLocation:D.currentLocation,nextLocation:D.nextLocation})):(l(_),c({isTransitioning:!0,flushSync:!1,currentLocation:D.currentLocation,nextLocation:D.nextLocation}))},[n.window,d,f,C,y]);m.useLayoutEffect(()=>n.subscribe(w),[n,w]),m.useEffect(()=>{s.isTransitioning&&!s.flushSync&&u(new qC)},[s]),m.useEffect(()=>{if(f&&a&&n.window){let _=a,k=f.promise,A=n.window.document.startViewTransition(async()=>{y(()=>i(_)),await k});A.finished.finally(()=>{u(void 0),h(void 0),l(void 0),c({isTransitioning:!1})}),h(A)}},[y,a,f,n.window]),m.useEffect(()=>{f&&a&&o.location.key===a.location.key&&f.resolve()},[f,d,o.location,a]),m.useEffect(()=>{!s.isTransitioning&&x&&(l(x.state),c({isTransitioning:!0,flushSync:!1,currentLocation:x.currentLocation,nextLocation:x.nextLocation}),v(void 0))},[s.isTransitioning,x]),m.useEffect(()=>{},[]);let E=m.useMemo(()=>({createHref:n.createHref,encodeLocation:n.encodeLocation,go:_=>n.navigate(_),push:(_,k,A)=>n.navigate(_,{state:k,preventScrollReset:A==null?void 0:A.preventScrollReset}),replace:(_,k,A)=>n.navigate(_,{replace:!0,state:k,preventScrollReset:A==null?void 0:A.preventScrollReset})}),[n]),S=n.basename||"/",R=m.useMemo(()=>({router:n,navigator:E,static:!1,basename:S}),[n,E,S]),T=m.useMemo(()=>({v7_relativeSplatPath:n.future.v7_relativeSplatPath}),[n.future.v7_relativeSplatPath]);return m.createElement(m.Fragment,null,m.createElement(Ji.Provider,{value:R},m.createElement(sd.Provider,{value:o},m.createElement(QC.Provider,{value:C.current},m.createElement(YC.Provider,{value:s},m.createElement(FC,{basename:S,location:o.location,navigationType:o.historyAction,navigator:E,future:T},o.initialized||n.future.v7_partialHydration?m.createElement(t5,{routes:n.routes,future:n.future,state:o}):t))))),null)}const t5=m.memo(n5);function n5(e){let{routes:t,future:n,state:r}=e;return RC(t,void 0,r,n)}const r5=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",o5=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,ss=m.forwardRef(function(t,n){let{onClick:r,relative:o,reloadDocument:i,replace:a,state:l,target:s,to:c,preventScrollReset:f,unstable_viewTransition:u}=t,d=$C(t,HC),{basename:h}=m.useContext(vr),x,v=!1;if(typeof c=="string"&&o5.test(c)&&(x=c,r5))try{let w=new URL(window.location.href),E=c.startsWith("//")?new URL(w.protocol+c):new URL(c),S=zr(E.pathname,h);E.origin===w.origin&&S!=null?c=S+E.search+E.hash:v=!0}catch{}let C=_C(c,{relative:o}),g=s5(c,{replace:a,state:l,target:s,preventScrollReset:f,relative:o,unstable_viewTransition:u});function y(w){r&&r(w),w.defaultPrevented||g(w)}return m.createElement("a",Lo({},d,{href:x||C,onClick:v||i?r:y,ref:n,target:s}))});function i5(e){let{getKey:t,storageKey:n}=e;return u5({getKey:t,storageKey:n}),null}var Ec;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(Ec||(Ec={}));var _c;(function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(_c||(_c={}));function a5(e){let t=m.useContext(Ji);return t||ne(!1),t}function l5(e){let t=m.useContext(sd);return t||ne(!1),t}function s5(e,t){let{target:n,replace:r,state:o,preventScrollReset:i,relative:a,unstable_viewTransition:l}=t===void 0?{}:t,s=cd(),c=$e(),f=m0(e,{relative:a});return m.useCallback(u=>{if(BC(u,n)){u.preventDefault();let d=r!==void 0?r:jr(c)===jr(f);s(e,{replace:d,state:o,preventScrollReset:i,relative:a,unstable_viewTransition:l})}},[c,s,f,r,o,n,e,i,a,l])}const jp="react-router-scroll-positions";let Aa={};function u5(e){let{getKey:t,storageKey:n}=e===void 0?{}:e,{router:r}=a5(Ec.UseScrollRestoration),{restoreScrollPosition:o,preventScrollReset:i}=l5(_c.UseScrollRestoration),{basename:a}=m.useContext(vr),l=$e(),s=MC(),c=IC();m.useEffect(()=>(window.history.scrollRestoration="manual",()=>{window.history.scrollRestoration="auto"}),[]),c5(m.useCallback(()=>{if(c.state==="idle"){let f=(t?t(l,s):null)||l.key;Aa[f]=window.scrollY}try{sessionStorage.setItem(n||jp,JSON.stringify(Aa))}catch{}window.history.scrollRestoration="auto"},[n,t,c.state,l,s])),typeof document<"u"&&(m.useLayoutEffect(()=>{try{let f=sessionStorage.getItem(n||jp);f&&(Aa=JSON.parse(f))}catch{}},[n]),m.useLayoutEffect(()=>{let f=t&&a!=="/"?(d,h)=>t(Lo({},d,{pathname:zr(d.pathname,a)||d.pathname}),h):t,u=r==null?void 0:r.enableScrollRestoration(Aa,()=>window.scrollY,f);return()=>u&&u()},[r,a,t]),m.useLayoutEffect(()=>{if(o!==!1){if(typeof o=="number"){window.scrollTo(0,o);return}if(l.hash){let f=document.getElementById(decodeURIComponent(l.hash.slice(1)));if(f){f.scrollIntoView();return}}i!==!0&&window.scrollTo(0,0)}},[l,o,i]))}function c5(e,t){let{capture:n}={};m.useEffect(()=>{let r=n!=null?{capture:n}:void 0;return window.addEventListener("pagehide",e,r),()=>{window.removeEventListener("pagehide",e,r)}},[e,n])}const f5="modulepreload",d5=function(e){return"/gaianet-rag-api-pipeline/"+e},Ip={},ae=function(t,n,r){let o=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const a=document.querySelector("meta[property=csp-nonce]"),l=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));o=Promise.allSettled(n.map(s=>{if(s=d5(s),s in Ip)return;Ip[s]=!0;const c=s.endsWith(".css"),f=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${s}"]${f}`))return;const u=document.createElement("link");if(u.rel=c?"stylesheet":f5,c||(u.as="script"),u.crossOrigin="",u.href=s,l&&u.setAttribute("nonce",l),document.head.appendChild(u),c)return new Promise((d,h)=>{u.addEventListener("load",d),u.addEventListener("error",()=>h(new Error(`Unable to preload CSS for ${s}`)))})}))}function i(a){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=a,window.dispatchEvent(l),!l.defaultPrevented)throw a}return o.then(a=>{for(const l of a||[])l.status==="rejected"&&i(l.reason);return t().catch(i)})};function Sc(e){return Array.isArray(e)?e.map(Sc):typeof e=="object"&&e!==null?Object.keys(e).reduce((t,n)=>(t[n]=Sc(e[n]),t),{}):typeof e=="string"&&e.includes("_vocs-fn_")?new Function(`return ${e.slice(9)}`)():e}const x0=Sc({blogDir:"./pages/blog",rootDir:"docs",title:"RAG API Pipeline",titleTemplate:"%s – RAG API Pipeline",basePath:"/gaianet-rag-api-pipeline",description:"Supercharge your Gaia node by generating a vector knowledge base from any API.",editLink:{pattern:"https://github.com/raid-guild/gaianet-rag-api-pipeline/edit/main/docs/pages/:path",text:"Edit on GitHub"},iconUrl:"/gaianet-rag-api-pipeline/icon.svg",sidebar:[{text:"Getting Started",link:"/getting-started"},{text:"Defining the API Pipeline Manifest",collapsed:!1,link:"/manifest-definition",items:[{text:"Overview",link:"/manifest-definition/overview"},{text:"Example Manifests",link:"/manifest-definition/sample-manifests"}]},{text:"API Examples",collapsed:!1,link:"/apis",items:[{text:"Boardroom API",link:"/apis/boardroom-api"},{text:"Agora API",link:"/apis/agora-api"},{text:"Other API Sources",link:"/apis/other-api-sources"}]},{text:"RAG API Pipeline",collapsed:!1,link:"/cli",items:[{text:"Setup",link:"/cli/setup"},{text:"CLI Reference",link:"/cli/reference"},{text:"Customize Pipeline Settings",link:"/cli/settings"},{text:"Gaia Node Deployment",link:"/cli/node-deployment"},{text:"Other LLM Providers",link:"/cli/other-llm-providers"}]},{text:"Architecture",collapsed:!1,link:"/architecture",items:[{text:"Overview",link:"/architecture/overview"},{text:"Tech stack",link:"/architecture/tech-stack"},{text:"In-depth code review",link:"/architecture/code-review"}]}],topNav:[{text:"APIs",items:[{text:"Boardroom Governance API",link:"/apis/boardroom-api",id:19,items:[]}],id:18}],socials:[{icon:"github",link:"https://github.com/raid-guild/gaianet-rag-api-pipeline",label:"GitHub",type:"github"}],font:{},markdown:{code:{themes:{dark:"github-dark-dimmed",light:"github-light"}}},theme:{},vite:{base:"/gaianet-rag-api-pipeline"}}),w0=m.createContext(x0);function C0(){return typeof window<"u",x0}function h5({children:e,config:t}){const[n,r]=m.useState(()=>t||C0());return m.useEffect(()=>{},[]),m.useEffect(()=>{typeof window<"u"},[n]),p.jsx(w0.Provider,{value:n,children:e})}function Xe(){return m.useContext(w0)}const dd=[{lazy:()=>ae(()=>import("./apis-BdD40rOr.js"),[]),path:"/apis",type:"mdx",filePath:"apis.mdx",lastUpdatedAt:1731022359e3},{lazy:()=>ae(()=>import("./apis-BdD40rOr.js"),[]),path:"/apis.html",type:"mdx",filePath:"apis.mdx",lastUpdatedAt:1731022359e3},{lazy:()=>ae(()=>import("./architecture-D2gP2OxN.js"),[]),path:"/architecture",type:"mdx",filePath:"architecture.mdx",lastUpdatedAt:1726721893e3},{lazy:()=>ae(()=>import("./architecture-D2gP2OxN.js"),[]),path:"/architecture.html",type:"mdx",filePath:"architecture.mdx",lastUpdatedAt:1726721893e3},{lazy:()=>ae(()=>import("./cli-DnaBwwVZ.js"),[]),path:"/cli",type:"mdx",filePath:"cli.mdx",lastUpdatedAt:1731022359e3},{lazy:()=>ae(()=>import("./cli-DnaBwwVZ.js"),[]),path:"/cli.html",type:"mdx",filePath:"cli.mdx",lastUpdatedAt:1731022359e3},{lazy:()=>ae(()=>import("./getting-started-BxYi9NBE.js"),[]),path:"/getting-started",type:"mdx",filePath:"getting-started.mdx",lastUpdatedAt:1732640373e3},{lazy:()=>ae(()=>import("./getting-started-BxYi9NBE.js"),[]),path:"/getting-started.html",type:"mdx",filePath:"getting-started.mdx",lastUpdatedAt:1732640373e3},{lazy:()=>ae(()=>import("./index-VSbBw26D.js"),[]),path:"/",type:"mdx",filePath:"index.mdx",lastUpdatedAt:1732640373e3},{lazy:()=>ae(()=>import("./manifest-definition-DAZ1JnHf.js"),[]),path:"/manifest-definition",type:"mdx",filePath:"manifest-definition.mdx",lastUpdatedAt:1731022359e3},{lazy:()=>ae(()=>import("./manifest-definition-DAZ1JnHf.js"),[]),path:"/manifest-definition.html",type:"mdx",filePath:"manifest-definition.mdx",lastUpdatedAt:1731022359e3},{lazy:()=>ae(()=>import("./agora-api-D-QUJU2A.js"),[]),path:"/apis/agora-api",type:"mdx",filePath:"apis/agora-api.mdx",lastUpdatedAt:173264393e4},{lazy:()=>ae(()=>import("./agora-api-D-QUJU2A.js"),[]),path:"/apis/agora-api.html",type:"mdx",filePath:"apis/agora-api.mdx",lastUpdatedAt:173264393e4},{lazy:()=>ae(()=>import("./boardroom-api-DR_ey-kj.js"),[]),path:"/apis/boardroom-api",type:"mdx",filePath:"apis/boardroom-api.mdx",lastUpdatedAt:1732640373e3},{lazy:()=>ae(()=>import("./boardroom-api-DR_ey-kj.js"),[]),path:"/apis/boardroom-api.html",type:"mdx",filePath:"apis/boardroom-api.mdx",lastUpdatedAt:1732640373e3},{lazy:()=>ae(()=>import("./other-api-sources-DaEQwlTX.js"),[]),path:"/apis/other-api-sources",type:"mdx",filePath:"apis/other-api-sources.mdx",lastUpdatedAt:1731022359e3},{lazy:()=>ae(()=>import("./other-api-sources-DaEQwlTX.js"),[]),path:"/apis/other-api-sources.html",type:"mdx",filePath:"apis/other-api-sources.mdx",lastUpdatedAt:1731022359e3},{lazy:()=>ae(()=>import("./code-review-5cWe1Nbr.js"),[]),path:"/architecture/code-review",type:"mdx",filePath:"architecture/code-review.mdx",lastUpdatedAt:1730870005e3},{lazy:()=>ae(()=>import("./code-review-5cWe1Nbr.js"),[]),path:"/architecture/code-review.html",type:"mdx",filePath:"architecture/code-review.mdx",lastUpdatedAt:1730870005e3},{lazy:()=>ae(()=>import("./overview-BtUem5Wu.js"),[]),path:"/architecture/overview",type:"mdx",filePath:"architecture/overview.mdx",lastUpdatedAt:173264393e4},{lazy:()=>ae(()=>import("./overview-BtUem5Wu.js"),[]),path:"/architecture/overview.html",type:"mdx",filePath:"architecture/overview.mdx",lastUpdatedAt:173264393e4},{lazy:()=>ae(()=>import("./tech-stack-CTVSLlLa.js"),[]),path:"/architecture/tech-stack",type:"mdx",filePath:"architecture/tech-stack.mdx",lastUpdatedAt:1732640373e3},{lazy:()=>ae(()=>import("./tech-stack-CTVSLlLa.js"),[]),path:"/architecture/tech-stack.html",type:"mdx",filePath:"architecture/tech-stack.mdx",lastUpdatedAt:1732640373e3},{lazy:()=>ae(()=>import("./node-deployment-CAmmDiDf.js"),[]),path:"/cli/node-deployment",type:"mdx",filePath:"cli/node-deployment.mdx",lastUpdatedAt:173264393e4},{lazy:()=>ae(()=>import("./node-deployment-CAmmDiDf.js"),[]),path:"/cli/node-deployment.html",type:"mdx",filePath:"cli/node-deployment.mdx",lastUpdatedAt:173264393e4},{lazy:()=>ae(()=>import("./other-llm-providers-BdtMvBoO.js"),[]),path:"/cli/other-llm-providers",type:"mdx",filePath:"cli/other-llm-providers.mdx",lastUpdatedAt:1732640373e3},{lazy:()=>ae(()=>import("./other-llm-providers-BdtMvBoO.js"),[]),path:"/cli/other-llm-providers.html",type:"mdx",filePath:"cli/other-llm-providers.mdx",lastUpdatedAt:1732640373e3},{lazy:()=>ae(()=>import("./reference-BDSmr8b3.js"),[]),path:"/cli/reference",type:"mdx",filePath:"cli/reference.mdx",lastUpdatedAt:1731022359e3},{lazy:()=>ae(()=>import("./reference-BDSmr8b3.js"),[]),path:"/cli/reference.html",type:"mdx",filePath:"cli/reference.mdx",lastUpdatedAt:1731022359e3},{lazy:()=>ae(()=>import("./settings-CStiPj1M.js"),[]),path:"/cli/settings",type:"mdx",filePath:"cli/settings.mdx",lastUpdatedAt:1732640373e3},{lazy:()=>ae(()=>import("./settings-CStiPj1M.js"),[]),path:"/cli/settings.html",type:"mdx",filePath:"cli/settings.mdx",lastUpdatedAt:1732640373e3},{lazy:()=>ae(()=>import("./setup-gfql-aPS.js"),[]),path:"/cli/setup",type:"mdx",filePath:"cli/setup.mdx",lastUpdatedAt:1732640373e3},{lazy:()=>ae(()=>import("./setup-gfql-aPS.js"),[]),path:"/cli/setup.html",type:"mdx",filePath:"cli/setup.mdx",lastUpdatedAt:1732640373e3},{lazy:()=>ae(()=>import("./overview-BWB8nuSk.js"),[]),path:"/manifest-definition/overview",type:"mdx",filePath:"manifest-definition/overview.mdx",lastUpdatedAt:1731022359e3},{lazy:()=>ae(()=>import("./overview-BWB8nuSk.js"),[]),path:"/manifest-definition/overview.html",type:"mdx",filePath:"manifest-definition/overview.mdx",lastUpdatedAt:1731022359e3},{lazy:()=>ae(()=>import("./sample-manifests-D3T56Jyd.js"),[]),path:"/manifest-definition/sample-manifests",type:"mdx",filePath:"manifest-definition/sample-manifests.mdx",lastUpdatedAt:1731022359e3},{lazy:()=>ae(()=>import("./sample-manifests-D3T56Jyd.js"),[]),path:"/manifest-definition/sample-manifests.html",type:"mdx",filePath:"manifest-definition/sample-manifests.mdx",lastUpdatedAt:1731022359e3}];var eu={horizontalPadding:"var(--vocs-content_horizontalPadding)",verticalPadding:"var(--vocs-content_verticalPadding)",width:"var(--vocs-content_width)"},Mp={default:"system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif",mono:'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace'},Op={default:"var(--vocs-fontFamily_default)",mono:"var(--vocs-fontFamily_mono)"},Dp={white:"var(--vocs-color_white)",black:"var(--vocs-color_black)",background:"var(--vocs-color_background)",background2:"var(--vocs-color_background2)",background3:"var(--vocs-color_background3)",background4:"var(--vocs-color_background4)",background5:"var(--vocs-color_background5)",backgroundAccent:"var(--vocs-color_backgroundAccent)",backgroundAccentHover:"var(--vocs-color_backgroundAccentHover)",backgroundAccentText:"var(--vocs-color_backgroundAccentText)",backgroundBlueTint:"var(--vocs-color_backgroundBlueTint)",backgroundDark:"var(--vocs-color_backgroundDark)",backgroundGreenTint:"var(--vocs-color_backgroundGreenTint)",backgroundGreenTint2:"var(--vocs-color_backgroundGreenTint2)",backgroundIrisTint:"var(--vocs-color_backgroundIrisTint)",backgroundRedTint:"var(--vocs-color_backgroundRedTint)",backgroundRedTint2:"var(--vocs-color_backgroundRedTint2)",backgroundYellowTint:"var(--vocs-color_backgroundYellowTint)",border:"var(--vocs-color_border)",border2:"var(--vocs-color_border2)",borderAccent:"var(--vocs-color_borderAccent)",borderBlue:"var(--vocs-color_borderBlue)",borderGreen:"var(--vocs-color_borderGreen)",borderIris:"var(--vocs-color_borderIris)",borderRed:"var(--vocs-color_borderRed)",borderYellow:"var(--vocs-color_borderYellow)",heading:"var(--vocs-color_heading)",inverted:"var(--vocs-color_inverted)",shadow:"var(--vocs-color_shadow)",shadow2:"var(--vocs-color_shadow2)",text:"var(--vocs-color_text)",text2:"var(--vocs-color_text2)",text3:"var(--vocs-color_text3)",text4:"var(--vocs-color_text4)",textAccent:"var(--vocs-color_textAccent)",textAccentHover:"var(--vocs-color_textAccentHover)",textBlue:"var(--vocs-color_textBlue)",textBlueHover:"var(--vocs-color_textBlueHover)",textGreen:"var(--vocs-color_textGreen)",textGreenHover:"var(--vocs-color_textGreenHover)",textIris:"var(--vocs-color_textIris)",textIrisHover:"var(--vocs-color_textIrisHover)",textRed:"var(--vocs-color_textRed)",textRedHover:"var(--vocs-color_textRedHover)",textYellow:"var(--vocs-color_textYellow)",textYellowHover:"var(--vocs-color_textYellowHover)",title:"var(--vocs-color_title)"},tu={0:"var(--vocs-space_0)",1:"var(--vocs-space_1)",2:"var(--vocs-space_2)",3:"var(--vocs-space_3)",4:"var(--vocs-space_4)",6:"var(--vocs-space_6)",8:"var(--vocs-space_8)",12:"var(--vocs-space_12)",14:"var(--vocs-space_14)",16:"var(--vocs-space_16)",18:"var(--vocs-space_18)",20:"var(--vocs-space_20)",22:"var(--vocs-space_22)",24:"var(--vocs-space_24)",28:"var(--vocs-space_28)",32:"var(--vocs-space_32)",36:"var(--vocs-space_36)",40:"var(--vocs-space_40)",44:"var(--vocs-space_44)",48:"var(--vocs-space_48)",56:"var(--vocs-space_56)",64:"var(--vocs-space_64)",72:"var(--vocs-space_72)",80:"var(--vocs-space_80)"};function E0(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var o=e.length;for(t=0;t"".concat(l,":").concat(this[l])).join(";")},writable:!1}),n}var v5="var(--vocs_ExternalLink_iconUrl)",m5="vocs_ExternalLink";const g5=m.forwardRef(({className:e,children:t,hideExternalIcon:n,href:r,...o},i)=>{const{basePath:a}=Xe(),l=a;return p.jsx("a",{ref:i,className:F(e,n||typeof t!="string"?void 0:m5),href:r,target:"_blank",rel:"noopener noreferrer",style:Jt({[v5]:`url(${l}/.vocs/icons/arrow-diagonal.svg)`}),...o,children:t})});var Fp="vocs_Link_accent_underlined",zp="vocs_Link",$p="vocs_Link_styleless",Tc=new Map,ba=new WeakMap,Up=0,y5=void 0;function x5(e){return e?(ba.has(e)||(Up+=1,ba.set(e,Up.toString())),ba.get(e)):"0"}function w5(e){return Object.keys(e).sort().filter(t=>e[t]!==void 0).map(t=>`${t}_${t==="root"?x5(e.root):e[t]}`).toString()}function C5(e){const t=w5(e);let n=Tc.get(t);if(!n){const r=new Map;let o;const i=new IntersectionObserver(a=>{a.forEach(l=>{var s;const c=l.isIntersecting&&o.some(f=>l.intersectionRatio>=f);e.trackVisibility&&typeof l.isVisible>"u"&&(l.isVisible=c),(s=r.get(l.target))==null||s.forEach(f=>{f(c,l)})})},e);o=i.thresholds||(Array.isArray(e.threshold)?e.threshold:[e.threshold||0]),n={id:t,observer:i,elements:r},Tc.set(t,n)}return n}function E5(e,t,n={},r=y5){if(typeof window.IntersectionObserver>"u"&&r!==void 0){const s=e.getBoundingClientRect();return t(r,{isIntersecting:r,target:e,intersectionRatio:typeof n.threshold=="number"?n.threshold:0,time:0,boundingClientRect:s,intersectionRect:s,rootBounds:s}),()=>{}}const{id:o,observer:i,elements:a}=C5(n),l=a.get(e)||[];return a.has(e)||a.set(e,l),l.push(t),i.observe(e),function(){l.splice(l.indexOf(t),1),l.length===0&&(a.delete(e),i.unobserve(e)),a.size===0&&(i.disconnect(),Tc.delete(o))}}function _0({threshold:e,delay:t,trackVisibility:n,rootMargin:r,root:o,triggerOnce:i,skip:a,initialInView:l,fallbackInView:s,onChange:c}={}){var f;const[u,d]=m.useState(null),h=m.useRef(),[x,v]=m.useState({inView:!!l,entry:void 0});h.current=c,m.useEffect(()=>{if(a||!u)return;let w;return w=E5(u,(E,S)=>{v({inView:E,entry:S}),h.current&&h.current(E,S),S.isIntersecting&&i&&w&&(w(),w=void 0)},{root:o,rootMargin:r,threshold:e,trackVisibility:n,delay:t},s),()=>{w&&w()}},[Array.isArray(e)?e.toString():e,u,o,r,i,a,n,s,t]);const C=(f=x.entry)==null?void 0:f.target,g=m.useRef();!u&&C&&!i&&!a&&g.current!==C&&(g.current=C,v({inView:!!l,entry:void 0}));const y=[d,x.inView,x.entry];return y.ref=y[0],y.inView=y[1],y.entry=y[2],y}function _5(...e){return t=>{S5(t,...e)}}function S5(e,...t){t.forEach(n=>{typeof n=="function"?n(e):n!=null&&(n.current=e)})}const ir=m.forwardRef((e,t)=>{const n=()=>{var i;return(i=dd.find(a=>a.path===e.to))==null?void 0:i.lazy()},{ref:r,inView:o}=_0();return m.useEffect(()=>{o&&n()},[o,n]),p.jsx(ss,{ref:_5(t,r),...e})}),sn=m.forwardRef((e,t)=>{const{href:n,variant:r="accent underlined"}=e,{pathname:o}=$e();if(n!=null&&n.match(/^(www|https?)/))return p.jsx(g5,{...e,ref:t,className:F(e.className,zp,r==="accent underlined"&&Fp,r==="styleless"&&$p),hideExternalIcon:e.hideExternalIcon});const[i,a]=(n||"").split("#"),l=`${i||o}${a?`#${a}`:""}`;return p.jsx(ir,{...e,ref:t,className:F(e.className,zp,r==="accent underlined"&&Fp,r==="styleless"&&$p),to:l})});var T5="vocs_NotFound_divider",R5="vocs_NotFound",N5="vocs_H1",S0="vocs_Heading",T0="vocs_Heading_slugTarget";function Bo({level:e,...t}){const n=`h${e}`;return p.jsxs(n,{...t,id:void 0,className:F(t.className,S0),children:[p.jsx("div",{id:t.id,className:T0}),t.children]})}function R0(e){return p.jsx(Bo,{...e,className:F(e.className,N5),level:1})}var P5="vocs_Paragraph";function N0(e){return p.jsx("p",{...e,className:F(e.className,P5)})}function k5(){return p.jsxs("div",{className:R5,children:[p.jsx(R0,{children:"Page Not Found"}),p.jsx("div",{style:{height:tu[24]}}),p.jsx("hr",{className:T5}),p.jsx("div",{style:{height:tu[24]}}),p.jsx(N0,{children:"The page you were looking for could not be found."}),p.jsx("div",{style:{height:tu[8]}}),p.jsx(sn,{href:"/",children:"Go to Home Page"})]})}var A5="var(--vocs_Banner_bannerBackgroundColor)",b5="var(--vocs_Banner_bannerHeight)",L5="var(--vocs_Banner_bannerTextColor)",j5="vocs_Banner_closeButton",I5="vocs_Banner_content",M5="vocs_Banner_inner",O5="vocs_Banner";const D5=Object.getPrototypeOf(F5).constructor;async function F5(e,t){return new D5(String(e))(t)}function z5(e,t){return new Function(String(e))(t)}function Ur(e,t){if(e==null)return{};var n={},r=Object.keys(e),o,i;for(i=0;i=0)&&(n[o]=e[o]);return n}var $5=["color"],U5=m.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Ur(e,$5);return m.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),m.createElement("path",{d:"M6.85355 3.14645C7.04882 3.34171 7.04882 3.65829 6.85355 3.85355L3.70711 7H12.5C12.7761 7 13 7.22386 13 7.5C13 7.77614 12.7761 8 12.5 8H3.70711L6.85355 11.1464C7.04882 11.3417 7.04882 11.6583 6.85355 11.8536C6.65829 12.0488 6.34171 12.0488 6.14645 11.8536L2.14645 7.85355C1.95118 7.65829 1.95118 7.34171 2.14645 7.14645L6.14645 3.14645C6.34171 2.95118 6.65829 2.95118 6.85355 3.14645Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),B5=["color"],H5=m.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Ur(e,B5);return m.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),m.createElement("path",{d:"M6.1584 3.13508C6.35985 2.94621 6.67627 2.95642 6.86514 3.15788L10.6151 7.15788C10.7954 7.3502 10.7954 7.64949 10.6151 7.84182L6.86514 11.8418C6.67627 12.0433 6.35985 12.0535 6.1584 11.8646C5.95694 11.6757 5.94673 11.3593 6.1356 11.1579L9.565 7.49985L6.1356 3.84182C5.94673 3.64036 5.95694 3.32394 6.1584 3.13508Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),V5=["color"],W5=m.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Ur(e,V5);return m.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),m.createElement("path",{d:"M12.8536 2.85355C13.0488 2.65829 13.0488 2.34171 12.8536 2.14645C12.6583 1.95118 12.3417 1.95118 12.1464 2.14645L7.5 6.79289L2.85355 2.14645C2.65829 1.95118 2.34171 1.95118 2.14645 2.14645C1.95118 2.34171 1.95118 2.65829 2.14645 2.85355L6.79289 7.5L2.14645 12.1464C1.95118 12.3417 1.95118 12.6583 2.14645 12.8536C2.34171 13.0488 2.65829 13.0488 2.85355 12.8536L7.5 8.20711L12.1464 12.8536C12.3417 13.0488 12.6583 13.0488 12.8536 12.8536C13.0488 12.6583 13.0488 12.3417 12.8536 12.1464L8.20711 7.5L12.8536 2.85355Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),K5=["color"],G5=m.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Ur(e,K5);return m.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),m.createElement("path",{d:"M3.5 2C3.22386 2 3 2.22386 3 2.5V12.5C3 12.7761 3.22386 13 3.5 13H11.5C11.7761 13 12 12.7761 12 12.5V6H8.5C8.22386 6 8 5.77614 8 5.5V2H3.5ZM9 2.70711L11.2929 5H9V2.70711ZM2 2.5C2 1.67157 2.67157 1 3.5 1H8.5C8.63261 1 8.75979 1.05268 8.85355 1.14645L12.8536 5.14645C12.9473 5.24021 13 5.36739 13 5.5V12.5C13 13.3284 12.3284 14 11.5 14H3.5C2.67157 14 2 13.3284 2 12.5V2.5Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),Y5=["color"],Q5=m.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Ur(e,Y5);return m.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),m.createElement("path",{d:"M1.5 5.25C1.91421 5.25 2.25 4.91421 2.25 4.5C2.25 4.08579 1.91421 3.75 1.5 3.75C1.08579 3.75 0.75 4.08579 0.75 4.5C0.75 4.91421 1.08579 5.25 1.5 5.25ZM4 4.5C4 4.22386 4.22386 4 4.5 4H13.5C13.7761 4 14 4.22386 14 4.5C14 4.77614 13.7761 5 13.5 5H4.5C4.22386 5 4 4.77614 4 4.5ZM4.5 7C4.22386 7 4 7.22386 4 7.5C4 7.77614 4.22386 8 4.5 8H13.5C13.7761 8 14 7.77614 14 7.5C14 7.22386 13.7761 7 13.5 7H4.5ZM4.5 10C4.22386 10 4 10.2239 4 10.5C4 10.7761 4.22386 11 4.5 11H13.5C13.7761 11 14 10.7761 14 10.5C14 10.2239 13.7761 10 13.5 10H4.5ZM2.25 7.5C2.25 7.91421 1.91421 8.25 1.5 8.25C1.08579 8.25 0.75 7.91421 0.75 7.5C0.75 7.08579 1.08579 6.75 1.5 6.75C1.91421 6.75 2.25 7.08579 2.25 7.5ZM1.5 11.25C1.91421 11.25 2.25 10.9142 2.25 10.5C2.25 10.0858 1.91421 9.75 1.5 9.75C1.08579 9.75 0.75 10.0858 0.75 10.5C0.75 10.9142 1.08579 11.25 1.5 11.25Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),Z5=["color"],hd=m.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Ur(e,Z5);return m.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),m.createElement("path",{d:"M10 6.5C10 8.433 8.433 10 6.5 10C4.567 10 3 8.433 3 6.5C3 4.567 4.567 3 6.5 3C8.433 3 10 4.567 10 6.5ZM9.30884 10.0159C8.53901 10.6318 7.56251 11 6.5 11C4.01472 11 2 8.98528 2 6.5C2 4.01472 4.01472 2 6.5 2C8.98528 2 11 4.01472 11 6.5C11 7.56251 10.6318 8.53901 10.0159 9.30884L12.8536 12.1464C13.0488 12.3417 13.0488 12.6583 12.8536 12.8536C12.6583 13.0488 12.3417 13.0488 12.1464 12.8536L9.30884 10.0159Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),X5=["color"],J5=m.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Ur(e,X5);return m.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),m.createElement("path",{d:"M12.1464 1.14645C12.3417 0.951184 12.6583 0.951184 12.8535 1.14645L14.8535 3.14645C15.0488 3.34171 15.0488 3.65829 14.8535 3.85355L10.9109 7.79618C10.8349 7.87218 10.7471 7.93543 10.651 7.9835L6.72359 9.94721C6.53109 10.0435 6.29861 10.0057 6.14643 9.85355C5.99425 9.70137 5.95652 9.46889 6.05277 9.27639L8.01648 5.34897C8.06455 5.25283 8.1278 5.16507 8.2038 5.08907L12.1464 1.14645ZM12.5 2.20711L8.91091 5.79618L7.87266 7.87267L8.12731 8.12732L10.2038 7.08907L13.7929 3.5L12.5 2.20711ZM9.99998 2L8.99998 3H4.9C4.47171 3 4.18056 3.00039 3.95552 3.01877C3.73631 3.03668 3.62421 3.06915 3.54601 3.10899C3.35785 3.20487 3.20487 3.35785 3.10899 3.54601C3.06915 3.62421 3.03669 3.73631 3.01878 3.95552C3.00039 4.18056 3 4.47171 3 4.9V11.1C3 11.5283 3.00039 11.8194 3.01878 12.0445C3.03669 12.2637 3.06915 12.3758 3.10899 12.454C3.20487 12.6422 3.35785 12.7951 3.54601 12.891C3.62421 12.9309 3.73631 12.9633 3.95552 12.9812C4.18056 12.9996 4.47171 13 4.9 13H11.1C11.5283 13 11.8194 12.9996 12.0445 12.9812C12.2637 12.9633 12.3758 12.9309 12.454 12.891C12.6422 12.7951 12.7951 12.6422 12.891 12.454C12.9309 12.3758 12.9633 12.2637 12.9812 12.0445C12.9996 11.8194 13 11.5283 13 11.1V6.99998L14 5.99998V11.1V11.1207C14 11.5231 14 11.8553 13.9779 12.1259C13.9549 12.407 13.9057 12.6653 13.782 12.908C13.5903 13.2843 13.2843 13.5903 12.908 13.782C12.6653 13.9057 12.407 13.9549 12.1259 13.9779C11.8553 14 11.5231 14 11.1207 14H11.1H4.9H4.87934C4.47686 14 4.14468 14 3.87409 13.9779C3.59304 13.9549 3.33469 13.9057 3.09202 13.782C2.7157 13.5903 2.40973 13.2843 2.21799 12.908C2.09434 12.6653 2.04506 12.407 2.0221 12.1259C1.99999 11.8553 1.99999 11.5231 2 11.1207V11.1206V11.1V4.9V4.87935V4.87932V4.87931C1.99999 4.47685 1.99999 4.14468 2.0221 3.87409C2.04506 3.59304 2.09434 3.33469 2.21799 3.09202C2.40973 2.71569 2.7157 2.40973 3.09202 2.21799C3.33469 2.09434 3.59304 2.04506 3.87409 2.0221C4.14468 1.99999 4.47685 1.99999 4.87932 2H4.87935H4.9H9.99998Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))});function Il(e,t){if(typeof e!="object"||e===null)return e;if(Array.isArray(e))return e.map((r,o)=>Il(r,o));const n=e.props.children?{...e.props,children:Il(e.props.children)}:e.props;return he.createElement(e.type,{...n,key:t})}function q5({hide:e}){const{banner:t}=Xe(),n=m.useMemo(()=>{const r=(t==null?void 0:t.content)??"";if(!r)return null;if(typeof r!="string")return()=>Il(r);const{default:o}=z5(r,{...ww,Fragment:m.Fragment});return o},[t]);return n?p.jsx("div",{className:F(O5),style:Jt({[A5]:t==null?void 0:t.backgroundColor,[L5]:t==null?void 0:t.textColor}),children:p.jsxs("div",{className:F(M5),children:[p.jsx("div",{className:F(I5),children:p.jsx(n,{})}),(t==null?void 0:t.dismissable)!=="false"&&p.jsx("button",{className:F(j5),onClick:e,type:"button",children:p.jsx(W5,{width:14,height:14})})]})}):null}var eE="vocs_Content";function P0({children:e,className:t}){return p.jsx("article",{className:F(t,eE),children:e})}function k0({items:e,pathname:t}){const n=t.replace(/\.html$/,""),r=[];for(const o of e)(o.link&&n.startsWith(o.match||o.link)||o.items&&k0({items:o.items,pathname:t}).length>0)&&r.push(o.id);return r}function qi({items:e,pathname:t}){return m.useMemo(()=>k0({items:e,pathname:t}),[e,t])}function Br(){const e=m.useContext(A0);if(!e)throw new Error("`usePageData` must be used within `PageDataContext.Provider`.");return e}const A0=m.createContext(void 0);function us(){const{pathname:e}=$e(),t=Xe(),{sidebar:n}=t;if(!n)return{items:[]};if(Array.isArray(n))return{items:n};const r=m.useMemo(()=>{const o=Object.keys(n).filter(i=>e.startsWith(i));return o[o.length-1]},[n,e]);return r?Array.isArray(n[r])?{key:r,items:n[r]}:{...n[r],key:r}:{items:[]}}function Hr(){const e=us(),{frontmatter:t}=Br(),{layout:n,showLogo:r,showOutline:o,showSidebar:i,showTopNav:a}=t||{},l=n??"docs";return{layout:l,get showLogo(){return typeof r<"u"?r:!0},get showOutline(){return typeof o<"u"?o:l==="docs"},get showSidebar(){return e.items.length===0?!1:typeof i<"u"?i:!(l==="minimal"||l==="landing")},get showTopNav(){return typeof a<"u"?a:!0}}}function tE(){const[e,t]=m.useState(()=>{if(!(typeof window>"u")){if(localStorage.getItem("vocs.theme")){const n=localStorage.getItem("vocs.theme");if(n)return n}return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}});return m.useEffect(()=>{e&&localStorage.setItem("vocs.theme",e),e==="dark"?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark")},[e]),{theme:e,toggle(){t(n=>n==="light"?"dark":"light")}}}var nE="vocs_utils_visibleDark",rE="vocs_utils_visibleLight",b0="vocs_utils_visuallyHidden";function oe(e,t,{checkForDefaultPrevented:n=!0}={}){return function(o){if(e==null||e(o),n===!1||!o.defaultPrevented)return t==null?void 0:t(o)}}function oE(e,t){typeof e=="function"?e(t):e!=null&&(e.current=t)}function pd(...e){return t=>e.forEach(n=>oE(n,t))}function ze(...e){return m.useCallback(pd(...e),e)}function iE(e,t){const n=m.createContext(t);function r(i){const{children:a,...l}=i,s=m.useMemo(()=>l,Object.values(l));return p.jsx(n.Provider,{value:s,children:a})}function o(i){const a=m.useContext(n);if(a)return a;if(t!==void 0)return t;throw new Error(`\`${i}\` must be used within \`${e}\``)}return r.displayName=e+"Provider",[r,o]}function bn(e,t=[]){let n=[];function r(i,a){const l=m.createContext(a),s=n.length;n=[...n,a];function c(u){const{scope:d,children:h,...x}=u,v=(d==null?void 0:d[e][s])||l,C=m.useMemo(()=>x,Object.values(x));return p.jsx(v.Provider,{value:C,children:h})}function f(u,d){const h=(d==null?void 0:d[e][s])||l,x=m.useContext(h);if(x)return x;if(a!==void 0)return a;throw new Error(`\`${u}\` must be used within \`${i}\``)}return c.displayName=i+"Provider",[c,f]}const o=()=>{const i=n.map(a=>m.createContext(a));return function(l){const s=(l==null?void 0:l[e])||i;return m.useMemo(()=>({[`__scope${e}`]:{...l,[e]:s}}),[l,s])}};return o.scopeName=e,[r,aE(o,...t)]}function aE(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const r=e.map(o=>({useScope:o(),scopeName:o.scopeName}));return function(i){const a=r.reduce((l,{useScope:s,scopeName:c})=>{const u=s(i)[`__scope${c}`];return{...l,...u}},{});return m.useMemo(()=>({[`__scope${t.scopeName}`]:a}),[a])}};return n.scopeName=t.scopeName,n}var qt=globalThis!=null&&globalThis.document?m.useLayoutEffect:()=>{},lE=ff.useId||(()=>{}),sE=0;function un(e){const[t,n]=m.useState(lE());return qt(()=>{n(r=>r??String(sE++))},[e]),t?`radix-${t}`:""}function at(e){const t=m.useRef(e);return m.useEffect(()=>{t.current=e}),m.useMemo(()=>(...n)=>{var r;return(r=t.current)==null?void 0:r.call(t,...n)},[])}function Ln({prop:e,defaultProp:t,onChange:n=()=>{}}){const[r,o]=uE({defaultProp:t,onChange:n}),i=e!==void 0,a=i?e:r,l=at(n),s=m.useCallback(c=>{if(i){const u=typeof c=="function"?c(e):c;u!==e&&l(u)}else o(c)},[i,e,o,l]);return[a,s]}function uE({defaultProp:e,onChange:t}){const n=m.useState(e),[r]=n,o=m.useRef(r),i=at(t);return m.useEffect(()=>{o.current!==r&&(i(r),o.current=r)},[r,o,i]),n}var jo=m.forwardRef((e,t)=>{const{children:n,...r}=e,o=m.Children.toArray(n),i=o.find(fE);if(i){const a=i.props.children,l=o.map(s=>s===i?m.Children.count(a)>1?m.Children.only(null):m.isValidElement(a)?a.props.children:null:s);return p.jsx(Rc,{...r,ref:t,children:m.isValidElement(a)?m.cloneElement(a,void 0,l):null})}return p.jsx(Rc,{...r,ref:t,children:n})});jo.displayName="Slot";var Rc=m.forwardRef((e,t)=>{const{children:n,...r}=e;if(m.isValidElement(n)){const o=hE(n);return m.cloneElement(n,{...dE(r,n.props),ref:t?pd(t,o):o})}return m.Children.count(n)>1?m.Children.only(null):null});Rc.displayName="SlotClone";var cE=({children:e})=>p.jsx(p.Fragment,{children:e});function fE(e){return m.isValidElement(e)&&e.type===cE}function dE(e,t){const n={...t};for(const r in t){const o=e[r],i=t[r];/^on[A-Z]/.test(r)?o&&i?n[r]=(...l)=>{i(...l),o(...l)}:o&&(n[r]=o):r==="style"?n[r]={...o,...i}:r==="className"&&(n[r]=[o,i].filter(Boolean).join(" "))}return{...e,...n}}function hE(e){var r,o;let t=(r=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:r.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=(o=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:o.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var pE=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"],ie=pE.reduce((e,t)=>{const n=m.forwardRef((r,o)=>{const{asChild:i,...a}=r,l=i?jo:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),p.jsx(l,{...a,ref:o})});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{});function Nc(e,t){e&&$o.flushSync(()=>e.dispatchEvent(t))}function vE(e,t=globalThis==null?void 0:globalThis.document){const n=at(e);m.useEffect(()=>{const r=o=>{o.key==="Escape"&&n(o)};return t.addEventListener("keydown",r,{capture:!0}),()=>t.removeEventListener("keydown",r,{capture:!0})},[n,t])}var mE="DismissableLayer",Pc="dismissableLayer.update",gE="dismissableLayer.pointerDownOutside",yE="dismissableLayer.focusOutside",Bp,L0=m.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),cs=m.forwardRef((e,t)=>{const{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:r,onPointerDownOutside:o,onFocusOutside:i,onInteractOutside:a,onDismiss:l,...s}=e,c=m.useContext(L0),[f,u]=m.useState(null),d=(f==null?void 0:f.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,h]=m.useState({}),x=ze(t,T=>u(T)),v=Array.from(c.layers),[C]=[...c.layersWithOutsidePointerEventsDisabled].slice(-1),g=v.indexOf(C),y=f?v.indexOf(f):-1,w=c.layersWithOutsidePointerEventsDisabled.size>0,E=y>=g,S=CE(T=>{const _=T.target,k=[...c.branches].some(A=>A.contains(_));!E||k||(o==null||o(T),a==null||a(T),T.defaultPrevented||l==null||l())},d),R=EE(T=>{const _=T.target;[...c.branches].some(A=>A.contains(_))||(i==null||i(T),a==null||a(T),T.defaultPrevented||l==null||l())},d);return vE(T=>{y===c.layers.size-1&&(r==null||r(T),!T.defaultPrevented&&l&&(T.preventDefault(),l()))},d),m.useEffect(()=>{if(f)return n&&(c.layersWithOutsidePointerEventsDisabled.size===0&&(Bp=d.body.style.pointerEvents,d.body.style.pointerEvents="none"),c.layersWithOutsidePointerEventsDisabled.add(f)),c.layers.add(f),Hp(),()=>{n&&c.layersWithOutsidePointerEventsDisabled.size===1&&(d.body.style.pointerEvents=Bp)}},[f,d,n,c]),m.useEffect(()=>()=>{f&&(c.layers.delete(f),c.layersWithOutsidePointerEventsDisabled.delete(f),Hp())},[f,c]),m.useEffect(()=>{const T=()=>h({});return document.addEventListener(Pc,T),()=>document.removeEventListener(Pc,T)},[]),p.jsx(ie.div,{...s,ref:x,style:{pointerEvents:w?E?"auto":"none":void 0,...e.style},onFocusCapture:oe(e.onFocusCapture,R.onFocusCapture),onBlurCapture:oe(e.onBlurCapture,R.onBlurCapture),onPointerDownCapture:oe(e.onPointerDownCapture,S.onPointerDownCapture)})});cs.displayName=mE;var xE="DismissableLayerBranch",wE=m.forwardRef((e,t)=>{const n=m.useContext(L0),r=m.useRef(null),o=ze(t,r);return m.useEffect(()=>{const i=r.current;if(i)return n.branches.add(i),()=>{n.branches.delete(i)}},[n.branches]),p.jsx(ie.div,{...e,ref:o})});wE.displayName=xE;function CE(e,t=globalThis==null?void 0:globalThis.document){const n=at(e),r=m.useRef(!1),o=m.useRef(()=>{});return m.useEffect(()=>{const i=l=>{if(l.target&&!r.current){let s=function(){j0(gE,n,c,{discrete:!0})};const c={originalEvent:l};l.pointerType==="touch"?(t.removeEventListener("click",o.current),o.current=s,t.addEventListener("click",o.current,{once:!0})):s()}else t.removeEventListener("click",o.current);r.current=!1},a=window.setTimeout(()=>{t.addEventListener("pointerdown",i)},0);return()=>{window.clearTimeout(a),t.removeEventListener("pointerdown",i),t.removeEventListener("click",o.current)}},[t,n]),{onPointerDownCapture:()=>r.current=!0}}function EE(e,t=globalThis==null?void 0:globalThis.document){const n=at(e),r=m.useRef(!1);return m.useEffect(()=>{const o=i=>{i.target&&!r.current&&j0(yE,n,{originalEvent:i},{discrete:!1})};return t.addEventListener("focusin",o),()=>t.removeEventListener("focusin",o)},[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function Hp(){const e=new CustomEvent(Pc);document.dispatchEvent(e)}function j0(e,t,n,{discrete:r}){const o=n.originalEvent.target,i=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&o.addEventListener(e,t,{once:!0}),r?Nc(o,i):o.dispatchEvent(i)}var nu="focusScope.autoFocusOnMount",ru="focusScope.autoFocusOnUnmount",Vp={bubbles:!1,cancelable:!0},_E="FocusScope",vd=m.forwardRef((e,t)=>{const{loop:n=!1,trapped:r=!1,onMountAutoFocus:o,onUnmountAutoFocus:i,...a}=e,[l,s]=m.useState(null),c=at(o),f=at(i),u=m.useRef(null),d=ze(t,v=>s(v)),h=m.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;m.useEffect(()=>{if(r){let v=function(w){if(h.paused||!l)return;const E=w.target;l.contains(E)?u.current=E:$n(u.current,{select:!0})},C=function(w){if(h.paused||!l)return;const E=w.relatedTarget;E!==null&&(l.contains(E)||$n(u.current,{select:!0}))},g=function(w){if(document.activeElement===document.body)for(const S of w)S.removedNodes.length>0&&$n(l)};document.addEventListener("focusin",v),document.addEventListener("focusout",C);const y=new MutationObserver(g);return l&&y.observe(l,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",v),document.removeEventListener("focusout",C),y.disconnect()}}},[r,l,h.paused]),m.useEffect(()=>{if(l){Kp.add(h);const v=document.activeElement;if(!l.contains(v)){const g=new CustomEvent(nu,Vp);l.addEventListener(nu,c),l.dispatchEvent(g),g.defaultPrevented||(SE(kE(I0(l)),{select:!0}),document.activeElement===v&&$n(l))}return()=>{l.removeEventListener(nu,c),setTimeout(()=>{const g=new CustomEvent(ru,Vp);l.addEventListener(ru,f),l.dispatchEvent(g),g.defaultPrevented||$n(v??document.body,{select:!0}),l.removeEventListener(ru,f),Kp.remove(h)},0)}}},[l,c,f,h]);const x=m.useCallback(v=>{if(!n&&!r||h.paused)return;const C=v.key==="Tab"&&!v.altKey&&!v.ctrlKey&&!v.metaKey,g=document.activeElement;if(C&&g){const y=v.currentTarget,[w,E]=TE(y);w&&E?!v.shiftKey&&g===E?(v.preventDefault(),n&&$n(w,{select:!0})):v.shiftKey&&g===w&&(v.preventDefault(),n&&$n(E,{select:!0})):g===y&&v.preventDefault()}},[n,r,h.paused]);return p.jsx(ie.div,{tabIndex:-1,...a,ref:d,onKeyDown:x})});vd.displayName=_E;function SE(e,{select:t=!1}={}){const n=document.activeElement;for(const r of e)if($n(r,{select:t}),document.activeElement!==n)return}function TE(e){const t=I0(e),n=Wp(t,e),r=Wp(t.reverse(),e);return[n,r]}function I0(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const o=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||o?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function Wp(e,t){for(const n of e)if(!RE(n,{upTo:t}))return n}function RE(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function NE(e){return e instanceof HTMLInputElement&&"select"in e}function $n(e,{select:t=!1}={}){if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&NE(e)&&t&&e.select()}}var Kp=PE();function PE(){let e=[];return{add(t){const n=e[0];t!==n&&(n==null||n.pause()),e=Gp(e,t),e.unshift(t)},remove(t){var n;e=Gp(e,t),(n=e[0])==null||n.resume()}}}function Gp(e,t){const n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function kE(e){return e.filter(t=>t.tagName!=="A")}var AE="Portal",md=m.forwardRef((e,t)=>{var l;const{container:n,...r}=e,[o,i]=m.useState(!1);qt(()=>i(!0),[]);const a=n||o&&((l=globalThis==null?void 0:globalThis.document)==null?void 0:l.body);return a?nd.createPortal(p.jsx(ie.div,{...r,ref:t}),a):null});md.displayName=AE;function bE(e,t){return m.useReducer((n,r)=>t[n][r]??n,e)}var zt=e=>{const{present:t,children:n}=e,r=LE(t),o=typeof n=="function"?n({present:r.isPresent}):m.Children.only(n),i=ze(r.ref,jE(o));return typeof n=="function"||r.isPresent?m.cloneElement(o,{ref:i}):null};zt.displayName="Presence";function LE(e){const[t,n]=m.useState(),r=m.useRef({}),o=m.useRef(e),i=m.useRef("none"),a=e?"mounted":"unmounted",[l,s]=bE(a,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return m.useEffect(()=>{const c=La(r.current);i.current=l==="mounted"?c:"none"},[l]),qt(()=>{const c=r.current,f=o.current;if(f!==e){const d=i.current,h=La(c);e?s("MOUNT"):h==="none"||(c==null?void 0:c.display)==="none"?s("UNMOUNT"):s(f&&d!==h?"ANIMATION_OUT":"UNMOUNT"),o.current=e}},[e,s]),qt(()=>{if(t){const c=u=>{const h=La(r.current).includes(u.animationName);u.target===t&&h&&$o.flushSync(()=>s("ANIMATION_END"))},f=u=>{u.target===t&&(i.current=La(r.current))};return t.addEventListener("animationstart",f),t.addEventListener("animationcancel",c),t.addEventListener("animationend",c),()=>{t.removeEventListener("animationstart",f),t.removeEventListener("animationcancel",c),t.removeEventListener("animationend",c)}}else s("ANIMATION_END")},[t,s]),{isPresent:["mounted","unmountSuspended"].includes(l),ref:m.useCallback(c=>{c&&(r.current=getComputedStyle(c)),n(c)},[])}}function La(e){return(e==null?void 0:e.animationName)||"none"}function jE(e){var r,o;let t=(r=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:r.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=(o=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:o.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var ou=0;function M0(){m.useEffect(()=>{const e=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",e[0]??Yp()),document.body.insertAdjacentElement("beforeend",e[1]??Yp()),ou++,()=>{ou===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(t=>t.remove()),ou--}},[])}function Yp(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.cssText="outline: none; opacity: 0; position: fixed; pointer-events: none",e}var on=function(){return on=Object.assign||function(t){for(var n,r=1,o=arguments.length;r"u")return ZE;var t=XE(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},qE=z0(),wo="data-scroll-locked",e4=function(e,t,n,r){var o=e.left,i=e.top,a=e.right,l=e.gap;return n===void 0&&(n="margin"),` .`.concat(ME,` { overflow: hidden `).concat(r,`; padding-right: `).concat(l,"px ").concat(r,`; diff --git a/assets/index-DXqXtHau.js b/assets/index-VSbBw26D.js similarity index 98% rename from assets/index-DXqXtHau.js rename to assets/index-VSbBw26D.js index 076bdfc..aec8521 100644 --- a/assets/index-DXqXtHau.js +++ b/assets/index-VSbBw26D.js @@ -1,2 +1,2 @@ -import{j as e,L as f,c as t,a as _,b,R as P,d as k,T as c,C as l,u as v}from"./index-_V-18SrM.js";var H="vocs_Button_button",N="vocs_Button_button_accent";function y({children:a,className:n,href:r,variant:j}){return e.jsx(f,{className:t(n,H,j==="accent"&&N),href:r,variant:"styleless",children:a})}var C="vocs_HomePage_button",D="vocs_HomePage_buttons",F="vocs_HomePage_description",L="vocs_HomePage_logo",d="vocs_HomePage_packageManager",M="vocs_HomePage",R="vocs_HomePage_tabs",u="vocs_HomePage_tabsContent",B="vocs_HomePage_tabsList",I="vocs_HomePage_tagline",w="vocs_HomePage_title";function m({children:a,className:n}){return e.jsx("div",{className:t(n,M),children:a})}function g({className:a}){const{logoUrl:n,title:r}=_();return n?e.jsx("div",{className:t(a,L),children:e.jsx(b,{})}):e.jsx("h1",{className:t(a,w),children:r})}function h({children:a,className:n}){return e.jsx("div",{className:t(n,I),children:a})}function o({children:a,className:n}){return e.jsx("div",{className:t(n,F),children:a})}function p({children:a,className:n}){return e.jsx("div",{className:t(n,D),children:a})}function i(a){return e.jsx(y,{...a,className:t(C,a.className)})}function A({name:a,type:n="install"}){return e.jsxs(P,{className:R,defaultValue:"npm",children:[e.jsxs(k,{className:B,children:[e.jsx(c,{value:"npm",children:"npm"}),e.jsx(c,{value:"pnpm",children:"pnpm"}),e.jsx(c,{value:"yarn",children:"yarn"})]}),e.jsxs(l,{className:u,value:"npm",children:[e.jsx("span",{className:d,children:"npm"})," ",n==="init"?"init":"install"," ",a]}),e.jsxs(l,{className:u,value:"pnpm",children:[e.jsx("span",{className:d,children:"pnpm"})," ",n==="init"?"create":"add"," ",a]}),e.jsxs(l,{className:u,value:"yarn",children:[e.jsx("span",{className:d,children:"yarn"})," ",n==="init"?"create":"add"," ",a]})]})}const G=Object.freeze(Object.defineProperty({__proto__:null,Button:i,Buttons:p,Description:o,InstallPackage:A,Logo:g,Root:m,Tagline:h},Symbol.toStringTag,{value:"Module"})),$={layout:"landing"};function x(a){const n={code:"code",div:"div",pre:"pre",span:"span",...v(),...a.components};return G||s("HomePage",!1),i||s("HomePage.Button",!0),p||s("HomePage.Buttons",!0),o||s("HomePage.Description",!0),g||s("HomePage.Logo",!0),m||s("HomePage.Root",!0),h||s("HomePage.Tagline",!0),e.jsxs(e.Fragment,{children:[e.jsxs(m,{children:[e.jsx(g,{}),e.jsx(h,{children:"Gaia x RAG API Pipeline"}),e.jsx(o,{children:"Supercharge your Gaia node by generating a vector knowledge base from any API."}),e.jsx(o,{children:"In this website you can find documentation on how to setup and use the RAG API Pipeline for your API data source."}),e.jsxs(p,{children:[e.jsx(i,{href:"/getting-started",variant:"accent",children:"Go to Documentation"}),e.jsx(i,{href:"https://github.com/raid-guild/gaianet-rag-api-pipeline",children:"GitHub"})]})]}),` +import{j as e,L as f,c as t,a as _,b,R as P,d as k,T as c,C as l,u as v}from"./index-D0ythbgN.js";var H="vocs_Button_button",N="vocs_Button_button_accent";function y({children:a,className:n,href:r,variant:j}){return e.jsx(f,{className:t(n,H,j==="accent"&&N),href:r,variant:"styleless",children:a})}var C="vocs_HomePage_button",D="vocs_HomePage_buttons",F="vocs_HomePage_description",L="vocs_HomePage_logo",d="vocs_HomePage_packageManager",M="vocs_HomePage",R="vocs_HomePage_tabs",u="vocs_HomePage_tabsContent",B="vocs_HomePage_tabsList",I="vocs_HomePage_tagline",w="vocs_HomePage_title";function m({children:a,className:n}){return e.jsx("div",{className:t(n,M),children:a})}function g({className:a}){const{logoUrl:n,title:r}=_();return n?e.jsx("div",{className:t(a,L),children:e.jsx(b,{})}):e.jsx("h1",{className:t(a,w),children:r})}function h({children:a,className:n}){return e.jsx("div",{className:t(n,I),children:a})}function o({children:a,className:n}){return e.jsx("div",{className:t(n,F),children:a})}function p({children:a,className:n}){return e.jsx("div",{className:t(n,D),children:a})}function i(a){return e.jsx(y,{...a,className:t(C,a.className)})}function A({name:a,type:n="install"}){return e.jsxs(P,{className:R,defaultValue:"npm",children:[e.jsxs(k,{className:B,children:[e.jsx(c,{value:"npm",children:"npm"}),e.jsx(c,{value:"pnpm",children:"pnpm"}),e.jsx(c,{value:"yarn",children:"yarn"})]}),e.jsxs(l,{className:u,value:"npm",children:[e.jsx("span",{className:d,children:"npm"})," ",n==="init"?"init":"install"," ",a]}),e.jsxs(l,{className:u,value:"pnpm",children:[e.jsx("span",{className:d,children:"pnpm"})," ",n==="init"?"create":"add"," ",a]}),e.jsxs(l,{className:u,value:"yarn",children:[e.jsx("span",{className:d,children:"yarn"})," ",n==="init"?"create":"add"," ",a]})]})}const G=Object.freeze(Object.defineProperty({__proto__:null,Button:i,Buttons:p,Description:o,InstallPackage:A,Logo:g,Root:m,Tagline:h},Symbol.toStringTag,{value:"Module"})),$={layout:"landing"};function x(a){const n={code:"code",div:"div",pre:"pre",span:"span",...v(),...a.components};return G||s("HomePage",!1),i||s("HomePage.Button",!0),p||s("HomePage.Buttons",!0),o||s("HomePage.Description",!0),g||s("HomePage.Logo",!0),m||s("HomePage.Root",!0),h||s("HomePage.Tagline",!0),e.jsxs(e.Fragment,{children:[e.jsxs(m,{children:[e.jsx(g,{}),e.jsx(h,{children:"Gaia x RAG API Pipeline"}),e.jsx(o,{children:"Supercharge your Gaia node by generating a vector knowledge base from any API."}),e.jsx(o,{children:"In this website you can find documentation on how to setup and use the RAG API Pipeline for your API data source."}),e.jsxs(p,{children:[e.jsx(i,{href:"/getting-started",variant:"accent",children:"Go to Documentation"}),e.jsx(i,{href:"https://github.com/raid-guild/gaianet-rag-api-pipeline",children:"GitHub"})]})]}),` `,e.jsx(n.div,{className:"code-group",children:e.jsx(n.div,{"data-title":"npm",children:e.jsx(n.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0","data-title":"npm","data-lang":"bash",children:e.jsx(n.code,{children:e.jsxs(n.span,{className:"line",children:[e.jsx(n.span,{style:{color:"#6F42C1","--shiki-dark":"#F69D50"},children:"npm"}),e.jsx(n.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:" i"}),e.jsx(n.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:" viem"})]})})})})})]})}function E(a={}){const{wrapper:n}={...v(),...a.components};return n?e.jsx(n,{...a,children:e.jsx(x,{...a})}):x(a)}function s(a,n){throw new Error("Expected "+(n?"component":"object")+" `"+a+"` to be defined: you likely forgot to import, pass, or provide it.")}export{E as default,$ as frontmatter}; diff --git a/assets/manifest-definition-BaamKtey.js b/assets/manifest-definition-DAZ1JnHf.js similarity index 92% rename from assets/manifest-definition-BaamKtey.js rename to assets/manifest-definition-DAZ1JnHf.js index c020ed5..8327f7c 100644 --- a/assets/manifest-definition-BaamKtey.js +++ b/assets/manifest-definition-DAZ1JnHf.js @@ -1,2 +1,2 @@ -import{u as a,j as e}from"./index-_V-18SrM.js";const r={title:"Defining the API Pipeline Manifest",description:"undefined"};function t(i){const n={a:"a",div:"div",h1:"h1",header:"header",p:"p",...a(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"defining-the-api-pipeline-manifest",children:["Defining the API Pipeline Manifest",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#defining-the-api-pipeline-manifest",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{u as a,j as e}from"./index-D0ythbgN.js";const r={title:"Defining the API Pipeline Manifest",description:"undefined"};function t(i){const n={a:"a",div:"div",h1:"h1",header:"header",p:"p",...a(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"defining-the-api-pipeline-manifest",children:["Defining the API Pipeline Manifest",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#defining-the-api-pipeline-manifest",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(n.p,{children:"In the following sections you'll learn how to define your own API pipeline manifest for any REST API you're targeting for extracting a knowledge base."})]})}function s(i={}){const{wrapper:n}={...a(),...i.components};return n?e.jsx(n,{...i,children:e.jsx(t,{...i})}):t(i)}export{s as default,r as frontmatter}; diff --git a/assets/node-deployment-Bs-gA8GX.js b/assets/node-deployment-CAmmDiDf.js similarity index 99% rename from assets/node-deployment-Bs-gA8GX.js rename to assets/node-deployment-CAmmDiDf.js index c582946..26e8c4a 100644 --- a/assets/node-deployment-Bs-gA8GX.js +++ b/assets/node-deployment-CAmmDiDf.js @@ -1,4 +1,4 @@ -import{u as l,j as s}from"./index-_V-18SrM.js";const r={title:"RAG API Pipeline x Gaia node",description:"undefined"};function n(i){const e={a:"a",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...l(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"rag-api-pipeline-x-gaia-node",children:["RAG API Pipeline x Gaia node",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#rag-api-pipeline-x-gaia-node",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{u as l,j as s}from"./index-D0ythbgN.js";const r={title:"RAG API Pipeline x Gaia node",description:"undefined"};function n(i){const e={a:"a",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...l(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"rag-api-pipeline-x-gaia-node",children:["RAG API Pipeline x Gaia node",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#rag-api-pipeline-x-gaia-node",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.h2,{id:"quick-start-guide",children:["Quick start guide",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#quick-start-guide",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsxs(e.p,{children:["We recommend to follow the Gaia Official ",s.jsx(e.a,{href:"https://docs.gaianet.ai/node-guide/quick-start",children:"quick start guide"}),`. Your Gaia node will be setup in the `,s.jsx(e.code,{children:"GAIANET_BASE_DIR"})," (default: ",s.jsx(e.code,{children:'"$HOME/gaianet"'}),") directory."]}),` diff --git a/assets/other-api-sources--zDi0222.js b/assets/other-api-sources-DaEQwlTX.js similarity index 98% rename from assets/other-api-sources--zDi0222.js rename to assets/other-api-sources-DaEQwlTX.js index e95c335..5e418cc 100644 --- a/assets/other-api-sources--zDi0222.js +++ b/assets/other-api-sources-DaEQwlTX.js @@ -1,4 +1,4 @@ -import{u as t,j as e}from"./index-_V-18SrM.js";const d={title:"Working with Other API Sources 🔌",description:"undefined"};function s(n){const i={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",ul:"ul",...t(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(i.header,{children:e.jsxs(i.h1,{id:"working-with-other-api-sources-",children:["Working with Other API Sources 🔌",e.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#working-with-other-api-sources-",children:e.jsx(i.div,{"data-autolink-icon":!0})})]})}),` +import{u as t,j as e}from"./index-D0ythbgN.js";const d={title:"Working with Other API Sources 🔌",description:"undefined"};function s(n){const i={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",ul:"ul",...t(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(i.header,{children:e.jsxs(i.h1,{id:"working-with-other-api-sources-",children:["Working with Other API Sources 🔌",e.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#working-with-other-api-sources-",children:e.jsx(i.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(i.p,{children:"Want to supercharge your RAG pipeline with different APIs? We've got you covered! Here's a simple guide to get started."}),` `,e.jsxs(i.h2,{id:"where-to-find-great-apis",children:["Where to Find Great APIs",e.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#where-to-find-great-apis",children:e.jsx(i.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(i.h3,{id:"public-api-collections",children:["Public API Collections",e.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#public-api-collections",children:e.jsx(i.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/other-llm-providers-B8WmTDqK.js b/assets/other-llm-providers-BdtMvBoO.js similarity index 99% rename from assets/other-llm-providers-B8WmTDqK.js rename to assets/other-llm-providers-BdtMvBoO.js index 2f4b57a..cfa2793 100644 --- a/assets/other-llm-providers-B8WmTDqK.js +++ b/assets/other-llm-providers-BdtMvBoO.js @@ -1,4 +1,4 @@ -import{u as r,j as s}from"./index-_V-18SrM.js";const a={title:"Supported LLM providers",description:"undefined"};function l(e){const i={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",...r(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(i.header,{children:s.jsxs(i.h1,{id:"supported-llm-providers",children:["Supported LLM providers",s.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#supported-llm-providers",children:s.jsx(i.div,{"data-autolink-icon":!0})})]})}),` +import{u as r,j as s}from"./index-D0ythbgN.js";const a={title:"Supported LLM providers",description:"undefined"};function l(e){const i={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",...r(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(i.header,{children:s.jsxs(i.h1,{id:"supported-llm-providers",children:["Supported LLM providers",s.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#supported-llm-providers",children:s.jsx(i.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(i.p,{children:["The ",s.jsx(i.code,{children:"rag-api-pipeline"})," currently supports two types of LLM providers: ",s.jsx(i.code,{children:"openai"})," and ",s.jsx(i.code,{children:"ollama"}),". A Gaia node for example, uses a Rust-based ",s.jsx(i.a,{href:"https://github.com/LlamaEdge/rag-api-server",children:"RAG API Server"}),` to offer OpenAI-compatible web APIs for creating RAG applications.`]}),` `,s.jsx(i.p,{children:"In the following sections, you'll find more details on the supported LLM providers that the pipeline currently supports and how to setup them"}),` diff --git a/assets/overview-DXI0Yf7z.js b/assets/overview-BWB8nuSk.js similarity index 99% rename from assets/overview-DXI0Yf7z.js rename to assets/overview-BWB8nuSk.js index 72a6f62..9cc521b 100644 --- a/assets/overview-DXI0Yf7z.js +++ b/assets/overview-BWB8nuSk.js @@ -1,4 +1,4 @@ -import{u as r,j as e}from"./index-_V-18SrM.js";const l={title:"API Pipeline Manifest - Overview",description:"undefined"};function n(i){const s={a:"a",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...r(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"api-pipeline-manifest---overview",children:["API Pipeline Manifest - Overview",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#api-pipeline-manifest---overview",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{u as r,j as e}from"./index-D0ythbgN.js";const l={title:"API Pipeline Manifest - Overview",description:"undefined"};function n(i){const s={a:"a",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...r(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"api-pipeline-manifest---overview",children:["API Pipeline Manifest - Overview",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#api-pipeline-manifest---overview",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(s.p,{children:["The ",e.jsx(s.code,{children:"rag-api-pipeline"})," utilizes ",e.jsx(s.a,{href:"https://docs.airbyte.com/connector-development/config-based/low-code-cdk-overview",children:"Airbyte's CDK low-code framework"}),` to create source connectors for REST APIs. Under the hood, it generates a `,e.jsx(s.a,{href:"https://docs.airbyte.com/connector-development/config-based/understanding-the-yaml-file/yaml-overview",children:"declarative stream"}),` manifest in YAML format using two specification files:`]}),` diff --git a/assets/overview-DW02L2el.js b/assets/overview-BtUem5Wu.js similarity index 97% rename from assets/overview-DW02L2el.js rename to assets/overview-BtUem5Wu.js index 453b182..d32632f 100644 --- a/assets/overview-DW02L2el.js +++ b/assets/overview-BtUem5Wu.js @@ -1,4 +1,4 @@ -import{u as r,j as e}from"./index-_V-18SrM.js";const d={title:"Architecture Overview",description:"undefined"};function t(i){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",img:"img",li:"li",ol:"ol",p:"p",ul:"ul",...r(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"architecture-overview",children:["Architecture Overview",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#architecture-overview",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{u as r,j as e}from"./index-D0ythbgN.js";const d={title:"Architecture Overview",description:"undefined"};function t(i){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",img:"img",li:"li",ol:"ol",p:"p",ul:"ul",...r(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"architecture-overview",children:["Architecture Overview",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#architecture-overview",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(n.p,{children:e.jsx(n.img,{src:"https://raw.githubusercontent.com/raid-guild/gaianet-rag-api-pipeline/refs/heads/main/docs/public/architecture.png",alt:"architecture"})}),` `,e.jsxs(n.p,{children:["The diagram above illustrates the system architecture. When executing the ",e.jsx(n.code,{children:"rag-api-pipeline"})," CLI, the tool performs the following steps:"]}),` `,e.jsxs(n.ol,{children:[` diff --git a/assets/reference-DVNLRTb2.js b/assets/reference-BDSmr8b3.js similarity index 99% rename from assets/reference-DVNLRTb2.js rename to assets/reference-BDSmr8b3.js index 3778885..e19e339 100644 --- a/assets/reference-DVNLRTb2.js +++ b/assets/reference-BDSmr8b3.js @@ -1,4 +1,4 @@ -import{u as n,j as s}from"./index-_V-18SrM.js";const a={title:"RAG API Pipeline CLI Reference Documentation",description:"undefined"};function l(e){const i={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",ul:"ul",...n(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(i.header,{children:s.jsxs(i.h1,{id:"rag-api-pipeline-cli-reference-documentation",children:["RAG API Pipeline CLI Reference Documentation",s.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#rag-api-pipeline-cli-reference-documentation",children:s.jsx(i.div,{"data-autolink-icon":!0})})]})}),` +import{u as n,j as s}from"./index-D0ythbgN.js";const a={title:"RAG API Pipeline CLI Reference Documentation",description:"undefined"};function l(e){const i={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",ul:"ul",...n(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(i.header,{children:s.jsxs(i.h1,{id:"rag-api-pipeline-cli-reference-documentation",children:["RAG API Pipeline CLI Reference Documentation",s.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#rag-api-pipeline-cli-reference-documentation",children:s.jsx(i.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(i.h2,{id:"overview",children:["Overview",s.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#overview",children:s.jsx(i.div,{"data-autolink-icon":!0})})]}),` `,s.jsx(i.p,{children:"The CLI tool provides functionality for running a RAG (Retrieval-Augmented Generation) API pipeline. It offers various commands to execute different stages of the pipeline, from data extraction to embedding generation."}),` `,s.jsxs(i.h2,{id:"installation",children:["Installation",s.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#installation",children:s.jsx(i.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/sample-manifests-BHPO8PSC.js b/assets/sample-manifests-D3T56Jyd.js similarity index 99% rename from assets/sample-manifests-BHPO8PSC.js rename to assets/sample-manifests-D3T56Jyd.js index 6f1c6eb..a740bb7 100644 --- a/assets/sample-manifests-BHPO8PSC.js +++ b/assets/sample-manifests-D3T56Jyd.js @@ -1,4 +1,4 @@ -import{u as n,j as s}from"./index-_V-18SrM.js";const a={title:"Sample API Pipeline Manifests",description:"undefined"};function e(i){const l={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",span:"span",...n(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(l.header,{children:s.jsxs(l.h1,{id:"sample-api-pipeline-manifests",children:["Sample API Pipeline Manifests",s.jsx(l.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sample-api-pipeline-manifests",children:s.jsx(l.div,{"data-autolink-icon":!0})})]})}),` +import{u as n,j as s}from"./index-D0ythbgN.js";const a={title:"Sample API Pipeline Manifests",description:"undefined"};function e(i){const l={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",span:"span",...n(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(l.header,{children:s.jsxs(l.h1,{id:"sample-api-pipeline-manifests",children:["Sample API Pipeline Manifests",s.jsx(l.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sample-api-pipeline-manifests",children:s.jsx(l.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(l.p,{children:[`Below you can find the full source RAG API pipeline manifest files that are used to extract DAO-related data from two different REST APIs. In the `,s.jsx(l.a,{href:"/apis",children:"next section"})," you can find a more in-depth overview for each API example."]}),` `,s.jsxs(l.h2,{id:"boardroom-governance-api",children:["Boardroom Governance API",s.jsx(l.a,{"aria-hidden":"true",tabIndex:"-1",href:"#boardroom-governance-api",children:s.jsx(l.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/settings-DXgRaJT-.js b/assets/settings-CStiPj1M.js similarity index 99% rename from assets/settings-DXgRaJT-.js rename to assets/settings-CStiPj1M.js index c9a8f94..b16e92e 100644 --- a/assets/settings-DXgRaJT-.js +++ b/assets/settings-CStiPj1M.js @@ -1,4 +1,4 @@ -import{u as r,j as e}from"./index-_V-18SrM.js";const d={title:"Customizing the Pipeline Config Settings",description:"undefined"};function s(i){const n={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...r(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"customizing-the-pipeline-config-settings",children:["Customizing the Pipeline Config Settings",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#customizing-the-pipeline-config-settings",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{u as r,j as e}from"./index-D0ythbgN.js";const d={title:"Customizing the Pipeline Config Settings",description:"undefined"};function s(i){const n={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...r(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"customizing-the-pipeline-config-settings",children:["Customizing the Pipeline Config Settings",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#customizing-the-pipeline-config-settings",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.p,{children:["Most of the pipeline configuration settings are set by running the setup wizard via ",e.jsx(n.code,{children:"rag-api-pipeline setup"}),` command. However, there are more advanced features that can be also set via environment variables in `,e.jsx(n.code,{children:"config/.env"}),"."]}),` `,e.jsxs(n.h2,{id:"environment-variables",children:["Environment variables",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#environment-variables",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/setup-EvAnAtPX.js b/assets/setup-gfql-aPS.js similarity index 99% rename from assets/setup-EvAnAtPX.js rename to assets/setup-gfql-aPS.js index 85ef5c4..e4f2222 100644 --- a/assets/setup-EvAnAtPX.js +++ b/assets/setup-gfql-aPS.js @@ -1,4 +1,4 @@ -import{u as l,j as s}from"./index-_V-18SrM.js";const a={title:"RAG API Pipeline - Setup",description:"undefined"};function r(e){const i={a:"a",code:"code",div:"div",h1:"h1",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",...l(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(i.header,{children:s.jsxs(i.h1,{id:"rag-api-pipeline---setup",children:["RAG API Pipeline - Setup",s.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#rag-api-pipeline---setup",children:s.jsx(i.div,{"data-autolink-icon":!0})})]})}),` +import{u as l,j as s}from"./index-D0ythbgN.js";const a={title:"RAG API Pipeline - Setup",description:"undefined"};function r(e){const i={a:"a",code:"code",div:"div",h1:"h1",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",...l(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(i.header,{children:s.jsxs(i.h1,{id:"rag-api-pipeline---setup",children:["RAG API Pipeline - Setup",s.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#rag-api-pipeline---setup",children:s.jsx(i.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(i.p,{children:["The ",s.jsx(i.code,{children:"rag-api-pipeline"}),` CLI offers a setup wizard command that allows you to quickly setup the pipeline settings so you can start creating RAG API pipelines in a few seconds. Below is an overview of the command options:`]}),` `,s.jsx(i.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0","data-title":"Terminal","data-lang":"bash",children:s.jsxs(i.code,{children:[s.jsxs(i.span,{className:"line",children:[s.jsx(i.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),s.jsx(i.span,{style:{color:"#6F42C1","--shiki-dark":"#F69D50"},children:"venv"}),s.jsx(i.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:") "}),s.jsx(i.span,{style:{color:"#6F42C1","--shiki-dark":"#F69D50"},children:"user$"}),s.jsx(i.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:" rag-api-pipeline"}),s.jsx(i.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:" setup"}),s.jsx(i.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" --help"})]}),` diff --git a/assets/tech-stack-CUAjgFft.js b/assets/tech-stack-CTVSLlLa.js similarity index 99% rename from assets/tech-stack-CUAjgFft.js rename to assets/tech-stack-CTVSLlLa.js index 4b1c97d..b7b6b9a 100644 --- a/assets/tech-stack-CUAjgFft.js +++ b/assets/tech-stack-CTVSLlLa.js @@ -1,4 +1,4 @@ -import{u as s,j as e}from"./index-_V-18SrM.js";const a={title:"Tech Stack",description:"undefined"};function r(i){const n={a:"a",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...s(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"tech-stack",children:["Tech Stack",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#tech-stack",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{u as s,j as e}from"./index-D0ythbgN.js";const a={title:"Tech Stack",description:"undefined"};function r(i){const n={a:"a",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...s(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"tech-stack",children:["Tech Stack",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#tech-stack",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.p,{children:["This page outlines the technologies and tools integrated into the ",e.jsx(n.code,{children:"rag-api-pipeline"})," across different execution stages."]}),` `,e.jsxs(n.h2,{id:"tools--frameworks",children:["Tools & Frameworks",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#tools--frameworks",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(n.h3,{id:"1-rag-pipeline-over-data-stream-pathway-docs",children:["1. RAG Pipeline over Data Stream: Pathway (",e.jsx(n.a,{href:"https://pathway.com/developers/user-guide/introduction/welcome/",children:"Docs"}),")",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#1-rag-pipeline-over-data-stream-pathway-docs",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` diff --git a/cli/index.html b/cli/index.html index 5d93eba..ffe774a 100644 --- a/cli/index.html +++ b/cli/index.html @@ -12,7 +12,7 @@ - + diff --git a/cli/node-deployment/index.html b/cli/node-deployment/index.html index 5d93eba..ffe774a 100644 --- a/cli/node-deployment/index.html +++ b/cli/node-deployment/index.html @@ -12,7 +12,7 @@ - + diff --git a/cli/other-llm-providers/index.html b/cli/other-llm-providers/index.html index 5d93eba..ffe774a 100644 --- a/cli/other-llm-providers/index.html +++ b/cli/other-llm-providers/index.html @@ -12,7 +12,7 @@ - + diff --git a/cli/reference/index.html b/cli/reference/index.html index 5d93eba..ffe774a 100644 --- a/cli/reference/index.html +++ b/cli/reference/index.html @@ -12,7 +12,7 @@ - + diff --git a/cli/settings/index.html b/cli/settings/index.html index 5d93eba..ffe774a 100644 --- a/cli/settings/index.html +++ b/cli/settings/index.html @@ -12,7 +12,7 @@ - + diff --git a/cli/setup/index.html b/cli/setup/index.html index 5d93eba..ffe774a 100644 --- a/cli/setup/index.html +++ b/cli/setup/index.html @@ -12,7 +12,7 @@ - + diff --git a/getting-started/index.html b/getting-started/index.html index 5d93eba..ffe774a 100644 --- a/getting-started/index.html +++ b/getting-started/index.html @@ -12,7 +12,7 @@ - + diff --git a/index.html b/index.html index 5d93eba..ffe774a 100644 --- a/index.html +++ b/index.html @@ -12,7 +12,7 @@ - + diff --git a/manifest-definition/index.html b/manifest-definition/index.html index 5d93eba..ffe774a 100644 --- a/manifest-definition/index.html +++ b/manifest-definition/index.html @@ -12,7 +12,7 @@ - + diff --git a/manifest-definition/overview/index.html b/manifest-definition/overview/index.html index 5d93eba..ffe774a 100644 --- a/manifest-definition/overview/index.html +++ b/manifest-definition/overview/index.html @@ -12,7 +12,7 @@ - + diff --git a/manifest-definition/sample-manifests/index.html b/manifest-definition/sample-manifests/index.html index 5d93eba..ffe774a 100644 --- a/manifest-definition/sample-manifests/index.html +++ b/manifest-definition/sample-manifests/index.html @@ -12,7 +12,7 @@ - +