trustgraph-flow 2.4.2__tar.gz → 2.4.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/PKG-INFO +1 -1
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/pyproject.toml +1 -0
- trustgraph_flow-2.4.4/trustgraph/bootstrap/base.py +68 -0
- trustgraph_flow-2.4.4/trustgraph/bootstrap/bootstrapper/service.py +414 -0
- trustgraph_flow-2.4.4/trustgraph/bootstrap/initialisers/__init__.py +20 -0
- trustgraph_flow-2.4.4/trustgraph/bootstrap/initialisers/default_flow_start.py +101 -0
- trustgraph_flow-2.4.4/trustgraph/bootstrap/initialisers/pulsar_topology.py +131 -0
- trustgraph_flow-2.4.4/trustgraph/bootstrap/initialisers/template_seed.py +93 -0
- trustgraph_flow-2.4.4/trustgraph/bootstrap/initialisers/workspace_init.py +138 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/config/service/service.py +30 -0
- trustgraph_flow-2.4.4/trustgraph/flow_version.py +1 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/endpoint/metrics.py +22 -11
- trustgraph_flow-2.4.4/trustgraph/query/sparql/__init__.py +1 -0
- trustgraph_flow-2.4.4/trustgraph/query/sparql/__main__.py +6 -0
- trustgraph_flow-2.4.4/trustgraph/tables/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph_flow.egg-info/PKG-INFO +1 -1
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph_flow.egg-info/SOURCES.txt +10 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph_flow.egg-info/entry_points.txt +1 -0
- trustgraph_flow-2.4.2/trustgraph/flow_version.py +0 -1
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/README.md +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/setup.cfg +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/agent/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/agent/mcp_tool/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/agent/mcp_tool/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/agent/mcp_tool/service.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/agent/orchestrator/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/agent/orchestrator/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/agent/orchestrator/aggregator.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/agent/orchestrator/meta_router.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/agent/orchestrator/pattern_base.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/agent/orchestrator/plan_pattern.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/agent/orchestrator/react_pattern.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/agent/orchestrator/service.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/agent/orchestrator/supervisor_pattern.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/agent/react/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/agent/react/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/agent/react/agent_manager.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/agent/react/service.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/agent/react/streaming_parser.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/agent/react/tools.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/agent/react/types.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/agent/tool_filter.py +0 -0
- {trustgraph_flow-2.4.2/trustgraph/chunking → trustgraph_flow-2.4.4/trustgraph/bootstrap}/__init__.py +0 -0
- {trustgraph_flow-2.4.2/trustgraph/query/sparql → trustgraph_flow-2.4.4/trustgraph/bootstrap/bootstrapper}/__init__.py +0 -0
- {trustgraph_flow-2.4.2/trustgraph/flow/service → trustgraph_flow-2.4.4/trustgraph/bootstrap/bootstrapper}/__main__.py +0 -0
- {trustgraph_flow-2.4.2/trustgraph/decoding → trustgraph_flow-2.4.4/trustgraph/chunking}/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/chunking/recursive/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/chunking/recursive/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/chunking/recursive/chunker.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/chunking/token/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/chunking/token/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/chunking/token/chunker.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/config/service/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/config/service/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/config/service/config.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/cores/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/cores/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/cores/knowledge.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/cores/service.py +0 -0
- {trustgraph_flow-2.4.2/trustgraph/direct → trustgraph_flow-2.4.4/trustgraph/decoding}/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/decoding/mistral_ocr/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/decoding/mistral_ocr/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/decoding/mistral_ocr/processor.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/decoding/pdf/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/decoding/pdf/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/decoding/pdf/pdf_decoder.py +0 -0
- {trustgraph_flow-2.4.2/trustgraph/embeddings → trustgraph_flow-2.4.4/trustgraph/direct}/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/direct/cassandra_kg.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/direct/milvus_doc_embeddings.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/direct/milvus_graph_embeddings.py +0 -0
- {trustgraph_flow-2.4.2/trustgraph/external → trustgraph_flow-2.4.4/trustgraph/embeddings}/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/embeddings/document_embeddings/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/embeddings/document_embeddings/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/embeddings/document_embeddings/embeddings.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/embeddings/fastembed/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/embeddings/fastembed/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/embeddings/fastembed/processor.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/embeddings/graph_embeddings/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/embeddings/graph_embeddings/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/embeddings/graph_embeddings/embeddings.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/embeddings/ollama/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/embeddings/ollama/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/embeddings/ollama/processor.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/embeddings/row_embeddings/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/embeddings/row_embeddings/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/embeddings/row_embeddings/embeddings.py +0 -0
- {trustgraph_flow-2.4.2/trustgraph/extract → trustgraph_flow-2.4.4/trustgraph/external}/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/external/wikipedia/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/external/wikipedia/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/external/wikipedia/service.py +0 -0
- {trustgraph_flow-2.4.2/trustgraph/extract/kg → trustgraph_flow-2.4.4/trustgraph/extract}/__init__.py +0 -0
- {trustgraph_flow-2.4.2/trustgraph/model → trustgraph_flow-2.4.4/trustgraph/extract/kg}/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/extract/kg/agent/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/extract/kg/agent/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/extract/kg/agent/extract.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/extract/kg/definitions/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/extract/kg/definitions/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/extract/kg/definitions/extract.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/extract/kg/ontology/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/extract/kg/ontology/entity_normalizer.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/extract/kg/ontology/extract.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/extract/kg/ontology/ontology_embedder.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/extract/kg/ontology/ontology_loader.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/extract/kg/ontology/ontology_selector.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/extract/kg/ontology/run.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/extract/kg/ontology/simplified_parser.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/extract/kg/ontology/text_processor.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/extract/kg/ontology/triple_converter.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/extract/kg/ontology/vector_store.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/extract/kg/relationships/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/extract/kg/relationships/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/extract/kg/relationships/extract.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/extract/kg/rows/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/extract/kg/rows/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/extract/kg/rows/processor.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/extract/kg/topics/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/extract/kg/topics/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/extract/kg/topics/extract.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/flow/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/flow/service/__init__.py +0 -0
- {trustgraph_flow-2.4.2/trustgraph/query/sparql → trustgraph_flow-2.4.4/trustgraph/flow/service}/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/flow/service/flow.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/flow/service/service.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/auth.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/config/receiver.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/agent.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/collection_management.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/config.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/core_export.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/core_import.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/document_embeddings_export.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/document_embeddings_import.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/document_embeddings_query.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/document_load.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/document_rag.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/document_stream.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/embeddings.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/entity_contexts_export.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/entity_contexts_import.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/flow.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/graph_embeddings_export.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/graph_embeddings_import.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/graph_embeddings_query.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/graph_rag.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/knowledge.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/librarian.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/manager.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/mcp_tool.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/mux.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/nlp_query.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/prompt.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/requestor.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/row_embeddings_query.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/rows_import.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/rows_query.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/sender.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/serialize.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/sparql_query.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/streamer.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/structured_diag.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/structured_query.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/text_completion.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/text_load.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/triples_export.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/triples_import.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/dispatch/triples_query.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/endpoint/constant_endpoint.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/endpoint/i18n.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/endpoint/manager.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/endpoint/socket.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/endpoint/stream_endpoint.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/endpoint/variable_endpoint.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/running.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/service.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/unused/dbpedia.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/unused/encyclopedia.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/gateway/unused/internet_search.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/librarian/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/librarian/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/librarian/blob_store.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/librarian/collection_manager.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/librarian/librarian.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/librarian/service.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/metering/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/metering/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/metering/counter.py +0 -0
- {trustgraph_flow-2.4.2/trustgraph/model/text_completion → trustgraph_flow-2.4.4/trustgraph/model}/__init__.py +0 -0
- {trustgraph_flow-2.4.2/trustgraph/prompt → trustgraph_flow-2.4.4/trustgraph/model/text_completion}/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/model/text_completion/azure/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/model/text_completion/azure/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/model/text_completion/azure/llm.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/model/text_completion/azure_openai/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/model/text_completion/azure_openai/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/model/text_completion/azure_openai/llm.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/model/text_completion/claude/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/model/text_completion/claude/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/model/text_completion/claude/llm.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/model/text_completion/cohere/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/model/text_completion/cohere/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/model/text_completion/cohere/llm.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/model/text_completion/llamafile/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/model/text_completion/llamafile/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/model/text_completion/llamafile/llm.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/model/text_completion/lmstudio/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/model/text_completion/lmstudio/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/model/text_completion/lmstudio/llm.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/model/text_completion/mistral/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/model/text_completion/mistral/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/model/text_completion/mistral/llm.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/model/text_completion/ollama/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/model/text_completion/ollama/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/model/text_completion/ollama/llm.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/model/text_completion/openai/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/model/text_completion/openai/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/model/text_completion/openai/llm.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/model/text_completion/tgi/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/model/text_completion/tgi/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/model/text_completion/tgi/llm.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/model/text_completion/vllm/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/model/text_completion/vllm/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/model/text_completion/vllm/llm.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/processing/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/processing/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/processing/processing.py +0 -0
- {trustgraph_flow-2.4.2/trustgraph/query → trustgraph_flow-2.4.4/trustgraph/prompt}/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/prompt/template/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/prompt/template/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/prompt/template/service.py +0 -0
- {trustgraph_flow-2.4.2/trustgraph/query/doc_embeddings → trustgraph_flow-2.4.4/trustgraph/query}/__init__.py +0 -0
- {trustgraph_flow-2.4.2/trustgraph/query/graph_embeddings → trustgraph_flow-2.4.4/trustgraph/query/doc_embeddings}/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/doc_embeddings/milvus/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/doc_embeddings/milvus/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/doc_embeddings/milvus/service.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/doc_embeddings/pinecone/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/doc_embeddings/pinecone/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/doc_embeddings/pinecone/service.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/doc_embeddings/qdrant/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/doc_embeddings/qdrant/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/doc_embeddings/qdrant/service.py +0 -0
- {trustgraph_flow-2.4.2/trustgraph/query/rows → trustgraph_flow-2.4.4/trustgraph/query/graph_embeddings}/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/graph_embeddings/milvus/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/graph_embeddings/milvus/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/graph_embeddings/milvus/service.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/graph_embeddings/pinecone/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/graph_embeddings/pinecone/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/graph_embeddings/pinecone/service.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/graph_embeddings/qdrant/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/graph_embeddings/qdrant/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/graph_embeddings/qdrant/service.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/graphql/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/graphql/filters.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/graphql/schema.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/graphql/types.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/ontology/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/ontology/answer_generator.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/ontology/backend_router.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/ontology/cache.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/ontology/cypher_executor.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/ontology/cypher_generator.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/ontology/error_handling.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/ontology/monitoring.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/ontology/multi_language.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/ontology/ontology_matcher.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/ontology/query_explanation.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/ontology/query_optimizer.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/ontology/query_service.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/ontology/question_analyzer.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/ontology/sparql_cassandra.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/ontology/sparql_generator.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/row_embeddings/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/row_embeddings/qdrant/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/row_embeddings/qdrant/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/row_embeddings/qdrant/service.py +0 -0
- {trustgraph_flow-2.4.2/trustgraph/query/triples → trustgraph_flow-2.4.4/trustgraph/query/rows}/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/rows/cassandra/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/rows/cassandra/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/rows/cassandra/service.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/sparql/algebra.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/sparql/expressions.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/sparql/parser.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/sparql/service.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/sparql/solutions.py +0 -0
- {trustgraph_flow-2.4.2/trustgraph/retrieval → trustgraph_flow-2.4.4/trustgraph/query/triples}/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/triples/cassandra/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/triples/cassandra/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/triples/cassandra/service.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/triples/falkordb/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/triples/falkordb/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/triples/falkordb/service.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/triples/memgraph/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/triples/memgraph/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/triples/memgraph/service.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/triples/neo4j/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/triples/neo4j/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/query/triples/neo4j/service.py +0 -0
- {trustgraph_flow-2.4.2/trustgraph/storage → trustgraph_flow-2.4.4/trustgraph/retrieval}/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/retrieval/document_rag/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/retrieval/document_rag/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/retrieval/document_rag/document_rag.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/retrieval/document_rag/rag.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/retrieval/graph_rag/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/retrieval/graph_rag/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/retrieval/graph_rag/graph_rag.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/retrieval/graph_rag/rag.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/retrieval/nlp_query/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/retrieval/nlp_query/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/retrieval/nlp_query/service.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/retrieval/structured_diag/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/retrieval/structured_diag/service.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/retrieval/structured_diag/type_detector.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/retrieval/structured_query/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/retrieval/structured_query/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/retrieval/structured_query/service.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/rev_gateway/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/rev_gateway/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/rev_gateway/dispatcher.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/rev_gateway/service.py +0 -0
- {trustgraph_flow-2.4.2/trustgraph/storage/doc_embeddings → trustgraph_flow-2.4.4/trustgraph/storage}/__init__.py +0 -0
- {trustgraph_flow-2.4.2/trustgraph/storage/graph_embeddings → trustgraph_flow-2.4.4/trustgraph/storage/doc_embeddings}/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/doc_embeddings/milvus/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/doc_embeddings/milvus/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/doc_embeddings/milvus/write.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/doc_embeddings/pinecone/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/doc_embeddings/pinecone/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/doc_embeddings/pinecone/write.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/doc_embeddings/qdrant/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/doc_embeddings/qdrant/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/doc_embeddings/qdrant/write.py +0 -0
- {trustgraph_flow-2.4.2/trustgraph/storage/rows → trustgraph_flow-2.4.4/trustgraph/storage/graph_embeddings}/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/graph_embeddings/milvus/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/graph_embeddings/milvus/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/graph_embeddings/milvus/write.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/graph_embeddings/pinecone/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/graph_embeddings/pinecone/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/graph_embeddings/pinecone/write.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/graph_embeddings/qdrant/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/graph_embeddings/qdrant/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/graph_embeddings/qdrant/write.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/knowledge/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/knowledge/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/knowledge/store.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/row_embeddings/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/row_embeddings/qdrant/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/row_embeddings/qdrant/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/row_embeddings/qdrant/write.py +0 -0
- {trustgraph_flow-2.4.2/trustgraph/storage/triples → trustgraph_flow-2.4.4/trustgraph/storage/rows}/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/rows/cassandra/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/rows/cassandra/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/rows/cassandra/write.py +0 -0
- {trustgraph_flow-2.4.2/trustgraph/tables → trustgraph_flow-2.4.4/trustgraph/storage/triples}/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/triples/cassandra/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/triples/cassandra/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/triples/cassandra/write.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/triples/falkordb/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/triples/falkordb/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/triples/falkordb/write.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/triples/memgraph/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/triples/memgraph/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/triples/memgraph/write.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/triples/neo4j/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/triples/neo4j/__main__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/storage/triples/neo4j/write.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/tables/cassandra_async.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/tables/config.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/tables/knowledge.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/tables/library.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/template/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/template/prompt_manager.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/tool_service/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/tool_service/joke/__init__.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph/tool_service/joke/service.py +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph_flow.egg-info/dependency_links.txt +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph_flow.egg-info/requires.txt +0 -0
- {trustgraph_flow-2.4.2 → trustgraph_flow-2.4.4}/trustgraph_flow.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: trustgraph-flow
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.4
|
|
4
4
|
Summary: TrustGraph provides a means to run a pipeline of flexible AI processing components in a flexible means to achieve a processing pipeline.
|
|
5
5
|
Author-email: "trustgraph.ai" <security@trustgraph.ai>
|
|
6
6
|
Project-URL: Homepage, https://github.com/trustgraph-ai/trustgraph
|
|
@@ -60,6 +60,7 @@ agent-orchestrator = "trustgraph.agent.orchestrator:run"
|
|
|
60
60
|
api-gateway = "trustgraph.gateway:run"
|
|
61
61
|
chunker-recursive = "trustgraph.chunking.recursive:run"
|
|
62
62
|
chunker-token = "trustgraph.chunking.token:run"
|
|
63
|
+
bootstrap = "trustgraph.bootstrap.bootstrapper:run"
|
|
63
64
|
config-svc = "trustgraph.config.service:run"
|
|
64
65
|
flow-svc = "trustgraph.flow.service:run"
|
|
65
66
|
doc-embeddings-query-milvus = "trustgraph.query.doc_embeddings.milvus:run"
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Bootstrap framework: Initialiser base class and per-wake context.
|
|
3
|
+
|
|
4
|
+
See docs/tech-specs/bootstrap.md for the full design.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import logging
|
|
8
|
+
from dataclasses import dataclass
|
|
9
|
+
from typing import Any
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@dataclass
|
|
13
|
+
class InitContext:
|
|
14
|
+
"""Shared per-wake context passed to each initialiser.
|
|
15
|
+
|
|
16
|
+
The bootstrapper constructs one of these on every wake cycle,
|
|
17
|
+
tears it down at cycle end, and passes it into each initialiser's
|
|
18
|
+
``run()`` method. Fields are short-lived and safe to use during
|
|
19
|
+
a single cycle only.
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
logger: logging.Logger
|
|
23
|
+
config: Any # ConfigClient
|
|
24
|
+
flow: Any # RequestResponse client for flow-svc
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class Initialiser:
|
|
28
|
+
"""Base class for bootstrap initialisers.
|
|
29
|
+
|
|
30
|
+
Subclasses implement :meth:`run`. The bootstrapper manages
|
|
31
|
+
completion state, flag comparison, retry and error handling —
|
|
32
|
+
subclasses describe only the work to perform.
|
|
33
|
+
|
|
34
|
+
Class attributes:
|
|
35
|
+
|
|
36
|
+
* ``wait_for_services`` (bool, default ``True``): when ``True`` the
|
|
37
|
+
initialiser only runs after the bootstrapper's service gate has
|
|
38
|
+
passed (config-svc and flow-svc reachable). Set ``False`` for
|
|
39
|
+
initialisers that bring up infrastructure the gate itself
|
|
40
|
+
depends on — principally Pulsar topology, without which
|
|
41
|
+
config-svc cannot come online.
|
|
42
|
+
"""
|
|
43
|
+
|
|
44
|
+
wait_for_services: bool = True
|
|
45
|
+
|
|
46
|
+
def __init__(self, **params):
|
|
47
|
+
# Subclasses should consume their own params via keyword
|
|
48
|
+
# arguments in their own __init__ signatures. This catch-all
|
|
49
|
+
# is here so any kwargs that filter through unnoticed don't
|
|
50
|
+
# raise TypeError on construction.
|
|
51
|
+
pass
|
|
52
|
+
|
|
53
|
+
async def run(self, ctx, old_flag, new_flag):
|
|
54
|
+
"""Perform initialisation work.
|
|
55
|
+
|
|
56
|
+
:param ctx: :class:`InitContext` with logger, config client,
|
|
57
|
+
flow-svc client.
|
|
58
|
+
:param old_flag: Previously-stored flag string, or ``None`` if
|
|
59
|
+
this initialiser has never successfully completed in this
|
|
60
|
+
deployment.
|
|
61
|
+
:param new_flag: Currently-configured flag. A string chosen
|
|
62
|
+
by the operator; typically something like ``"v1"``.
|
|
63
|
+
|
|
64
|
+
:raises: Any exception on failure. The bootstrapper catches,
|
|
65
|
+
logs, and re-runs on the next cycle; completion state is
|
|
66
|
+
only written on clean return.
|
|
67
|
+
"""
|
|
68
|
+
raise NotImplementedError
|
|
@@ -0,0 +1,414 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Bootstrapper processor.
|
|
3
|
+
|
|
4
|
+
Runs a pluggable list of initialisers in a reconciliation loop.
|
|
5
|
+
Each initialiser's completion state is recorded in the reserved
|
|
6
|
+
``__system__`` workspace under the ``init-state`` config type.
|
|
7
|
+
|
|
8
|
+
See docs/tech-specs/bootstrap.md for the full design.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
import asyncio
|
|
12
|
+
import importlib
|
|
13
|
+
import json
|
|
14
|
+
import logging
|
|
15
|
+
import uuid
|
|
16
|
+
from argparse import ArgumentParser
|
|
17
|
+
from dataclasses import dataclass
|
|
18
|
+
|
|
19
|
+
from trustgraph.base import AsyncProcessor
|
|
20
|
+
from trustgraph.base import ProducerMetrics, SubscriberMetrics
|
|
21
|
+
from trustgraph.base.config_client import ConfigClient
|
|
22
|
+
from trustgraph.base.request_response_spec import RequestResponse
|
|
23
|
+
from trustgraph.schema import (
|
|
24
|
+
ConfigRequest, ConfigResponse,
|
|
25
|
+
config_request_queue, config_response_queue,
|
|
26
|
+
)
|
|
27
|
+
from trustgraph.schema import (
|
|
28
|
+
FlowRequest, FlowResponse,
|
|
29
|
+
flow_request_queue, flow_response_queue,
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
from .. base import Initialiser, InitContext
|
|
33
|
+
|
|
34
|
+
logger = logging.getLogger(__name__)
|
|
35
|
+
|
|
36
|
+
default_ident = "bootstrap"
|
|
37
|
+
|
|
38
|
+
# Reserved workspace + config type under which completion state is
|
|
39
|
+
# stored. Reserved (`_`-prefix) workspaces are excluded from the
|
|
40
|
+
# config push broadcast — live processors never see these keys.
|
|
41
|
+
SYSTEM_WORKSPACE = "__system__"
|
|
42
|
+
INIT_STATE_TYPE = "init-state"
|
|
43
|
+
|
|
44
|
+
# Cadence tiers.
|
|
45
|
+
GATE_BACKOFF = 5 # Services not responding; retry soon.
|
|
46
|
+
INIT_RETRY = 15 # Gate passed but something ran/failed;
|
|
47
|
+
# converge quickly.
|
|
48
|
+
STEADY_INTERVAL = 300 # Everything at target flag; idle cheaply.
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
@dataclass
|
|
52
|
+
class InitialiserSpec:
|
|
53
|
+
"""One entry in the bootstrapper's configured list of initialisers."""
|
|
54
|
+
name: str
|
|
55
|
+
flag: str
|
|
56
|
+
instance: Initialiser
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def _resolve_class(dotted):
|
|
60
|
+
"""Import and return a class by its dotted path."""
|
|
61
|
+
module_path, _, class_name = dotted.rpartition(".")
|
|
62
|
+
if not module_path:
|
|
63
|
+
raise ValueError(
|
|
64
|
+
f"Initialiser class must be a dotted path, got {dotted!r}"
|
|
65
|
+
)
|
|
66
|
+
module = importlib.import_module(module_path)
|
|
67
|
+
return getattr(module, class_name)
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def _load_initialisers_file(path):
|
|
71
|
+
"""Load the initialisers spec list from a YAML or JSON file.
|
|
72
|
+
|
|
73
|
+
File shape:
|
|
74
|
+
|
|
75
|
+
.. code-block:: yaml
|
|
76
|
+
|
|
77
|
+
initialisers:
|
|
78
|
+
- class: trustgraph.bootstrap.initialisers.PulsarTopology
|
|
79
|
+
name: pulsar-topology
|
|
80
|
+
flag: v1
|
|
81
|
+
params:
|
|
82
|
+
admin_url: http://pulsar:8080
|
|
83
|
+
tenant: tg
|
|
84
|
+
- ...
|
|
85
|
+
"""
|
|
86
|
+
with open(path) as f:
|
|
87
|
+
content = f.read()
|
|
88
|
+
if path.endswith((".yaml", ".yml")):
|
|
89
|
+
import yaml
|
|
90
|
+
doc = yaml.safe_load(content)
|
|
91
|
+
else:
|
|
92
|
+
doc = json.loads(content)
|
|
93
|
+
if not isinstance(doc, dict) or "initialisers" not in doc:
|
|
94
|
+
raise RuntimeError(
|
|
95
|
+
f"{path}: expected a mapping with an 'initialisers' key"
|
|
96
|
+
)
|
|
97
|
+
return doc["initialisers"]
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
class Processor(AsyncProcessor):
|
|
101
|
+
|
|
102
|
+
def __init__(self, **params):
|
|
103
|
+
|
|
104
|
+
super().__init__(**params)
|
|
105
|
+
|
|
106
|
+
# Source the initialisers list either from a direct parameter
|
|
107
|
+
# (processor-group embedding) or from a file (CLI launch).
|
|
108
|
+
inits = params.get("initialisers")
|
|
109
|
+
if inits is None:
|
|
110
|
+
inits_file = params.get("initialisers_file")
|
|
111
|
+
if inits_file is None:
|
|
112
|
+
raise RuntimeError(
|
|
113
|
+
"Bootstrapper requires either the 'initialisers' "
|
|
114
|
+
"parameter or --initialisers-file"
|
|
115
|
+
)
|
|
116
|
+
inits = _load_initialisers_file(inits_file)
|
|
117
|
+
|
|
118
|
+
self.specs = []
|
|
119
|
+
names = set()
|
|
120
|
+
|
|
121
|
+
for entry in inits:
|
|
122
|
+
if not isinstance(entry, dict):
|
|
123
|
+
raise RuntimeError(
|
|
124
|
+
f"Initialiser entry must be a mapping, got: {entry!r}"
|
|
125
|
+
)
|
|
126
|
+
for required in ("class", "name", "flag"):
|
|
127
|
+
if required not in entry:
|
|
128
|
+
raise RuntimeError(
|
|
129
|
+
f"Initialiser entry missing required field "
|
|
130
|
+
f"{required!r}: {entry!r}"
|
|
131
|
+
)
|
|
132
|
+
|
|
133
|
+
name = entry["name"]
|
|
134
|
+
if name in names:
|
|
135
|
+
raise RuntimeError(f"Duplicate initialiser name {name!r}")
|
|
136
|
+
names.add(name)
|
|
137
|
+
|
|
138
|
+
cls = _resolve_class(entry["class"])
|
|
139
|
+
|
|
140
|
+
try:
|
|
141
|
+
instance = cls(**entry.get("params", {}))
|
|
142
|
+
except Exception as e:
|
|
143
|
+
raise RuntimeError(
|
|
144
|
+
f"Failed to instantiate initialiser "
|
|
145
|
+
f"{entry['class']!r} as {name!r}: "
|
|
146
|
+
f"{type(e).__name__}: {e}"
|
|
147
|
+
)
|
|
148
|
+
|
|
149
|
+
self.specs.append(InitialiserSpec(
|
|
150
|
+
name=name,
|
|
151
|
+
flag=entry["flag"],
|
|
152
|
+
instance=instance,
|
|
153
|
+
))
|
|
154
|
+
|
|
155
|
+
logger.info(
|
|
156
|
+
f"Bootstrapper: loaded {len(self.specs)} initialisers"
|
|
157
|
+
)
|
|
158
|
+
|
|
159
|
+
# ------------------------------------------------------------------
|
|
160
|
+
# Client construction (short-lived per wake cycle).
|
|
161
|
+
# ------------------------------------------------------------------
|
|
162
|
+
|
|
163
|
+
def _make_config_client(self):
|
|
164
|
+
rr_id = str(uuid.uuid4())
|
|
165
|
+
return ConfigClient(
|
|
166
|
+
backend=self.pubsub_backend,
|
|
167
|
+
subscription=f"{self.id}--config--{rr_id}",
|
|
168
|
+
consumer_name=self.id,
|
|
169
|
+
request_topic=config_request_queue,
|
|
170
|
+
request_schema=ConfigRequest,
|
|
171
|
+
request_metrics=ProducerMetrics(
|
|
172
|
+
processor=self.id, flow=None, name="config-request",
|
|
173
|
+
),
|
|
174
|
+
response_topic=config_response_queue,
|
|
175
|
+
response_schema=ConfigResponse,
|
|
176
|
+
response_metrics=SubscriberMetrics(
|
|
177
|
+
processor=self.id, flow=None, name="config-response",
|
|
178
|
+
),
|
|
179
|
+
)
|
|
180
|
+
|
|
181
|
+
def _make_flow_client(self):
|
|
182
|
+
rr_id = str(uuid.uuid4())
|
|
183
|
+
return RequestResponse(
|
|
184
|
+
backend=self.pubsub_backend,
|
|
185
|
+
subscription=f"{self.id}--flow--{rr_id}",
|
|
186
|
+
consumer_name=self.id,
|
|
187
|
+
request_topic=flow_request_queue,
|
|
188
|
+
request_schema=FlowRequest,
|
|
189
|
+
request_metrics=ProducerMetrics(
|
|
190
|
+
processor=self.id, flow=None, name="flow-request",
|
|
191
|
+
),
|
|
192
|
+
response_topic=flow_response_queue,
|
|
193
|
+
response_schema=FlowResponse,
|
|
194
|
+
response_metrics=SubscriberMetrics(
|
|
195
|
+
processor=self.id, flow=None, name="flow-response",
|
|
196
|
+
),
|
|
197
|
+
)
|
|
198
|
+
|
|
199
|
+
async def _open_clients(self):
|
|
200
|
+
config = self._make_config_client()
|
|
201
|
+
flow = self._make_flow_client()
|
|
202
|
+
await config.start()
|
|
203
|
+
try:
|
|
204
|
+
await flow.start()
|
|
205
|
+
except Exception:
|
|
206
|
+
await self._safe_stop(config)
|
|
207
|
+
raise
|
|
208
|
+
return config, flow
|
|
209
|
+
|
|
210
|
+
async def _safe_stop(self, client):
|
|
211
|
+
try:
|
|
212
|
+
await client.stop()
|
|
213
|
+
except Exception:
|
|
214
|
+
pass
|
|
215
|
+
|
|
216
|
+
# ------------------------------------------------------------------
|
|
217
|
+
# Service gate.
|
|
218
|
+
# ------------------------------------------------------------------
|
|
219
|
+
|
|
220
|
+
async def _gate_ready(self, config, flow):
|
|
221
|
+
try:
|
|
222
|
+
await config.keys(SYSTEM_WORKSPACE, INIT_STATE_TYPE)
|
|
223
|
+
except Exception as e:
|
|
224
|
+
logger.info(
|
|
225
|
+
f"Gate: config-svc not ready ({type(e).__name__}: {e})"
|
|
226
|
+
)
|
|
227
|
+
return False
|
|
228
|
+
|
|
229
|
+
try:
|
|
230
|
+
resp = await flow.request(
|
|
231
|
+
FlowRequest(
|
|
232
|
+
operation="list-blueprints",
|
|
233
|
+
workspace=SYSTEM_WORKSPACE,
|
|
234
|
+
),
|
|
235
|
+
timeout=5,
|
|
236
|
+
)
|
|
237
|
+
if resp.error:
|
|
238
|
+
logger.info(
|
|
239
|
+
f"Gate: flow-svc error: "
|
|
240
|
+
f"{resp.error.type}: {resp.error.message}"
|
|
241
|
+
)
|
|
242
|
+
return False
|
|
243
|
+
except Exception as e:
|
|
244
|
+
logger.info(
|
|
245
|
+
f"Gate: flow-svc not ready ({type(e).__name__}: {e})"
|
|
246
|
+
)
|
|
247
|
+
return False
|
|
248
|
+
|
|
249
|
+
return True
|
|
250
|
+
|
|
251
|
+
# ------------------------------------------------------------------
|
|
252
|
+
# Completion state.
|
|
253
|
+
# ------------------------------------------------------------------
|
|
254
|
+
|
|
255
|
+
async def _stored_flag(self, config, name):
|
|
256
|
+
raw = await config.get(SYSTEM_WORKSPACE, INIT_STATE_TYPE, name)
|
|
257
|
+
if raw is None:
|
|
258
|
+
return None
|
|
259
|
+
try:
|
|
260
|
+
return json.loads(raw)
|
|
261
|
+
except Exception:
|
|
262
|
+
return raw
|
|
263
|
+
|
|
264
|
+
async def _store_flag(self, config, name, flag):
|
|
265
|
+
await config.put(
|
|
266
|
+
SYSTEM_WORKSPACE, INIT_STATE_TYPE, name,
|
|
267
|
+
json.dumps(flag),
|
|
268
|
+
)
|
|
269
|
+
|
|
270
|
+
# ------------------------------------------------------------------
|
|
271
|
+
# Per-spec execution.
|
|
272
|
+
# ------------------------------------------------------------------
|
|
273
|
+
|
|
274
|
+
async def _run_spec(self, spec, config, flow):
|
|
275
|
+
"""Run a single initialiser spec.
|
|
276
|
+
|
|
277
|
+
Returns one of:
|
|
278
|
+
- ``"skip"``: stored flag already matches target, nothing to do.
|
|
279
|
+
- ``"ran"``: initialiser ran and completion state was updated.
|
|
280
|
+
- ``"failed"``: initialiser raised.
|
|
281
|
+
- ``"failed-state-write"``: initialiser succeeded but we could
|
|
282
|
+
not persist the new flag (transient — will re-run next cycle).
|
|
283
|
+
"""
|
|
284
|
+
|
|
285
|
+
try:
|
|
286
|
+
old_flag = await self._stored_flag(config, spec.name)
|
|
287
|
+
except Exception as e:
|
|
288
|
+
logger.warning(
|
|
289
|
+
f"{spec.name}: could not read stored flag "
|
|
290
|
+
f"({type(e).__name__}: {e})"
|
|
291
|
+
)
|
|
292
|
+
return "failed"
|
|
293
|
+
|
|
294
|
+
if old_flag == spec.flag:
|
|
295
|
+
return "skip"
|
|
296
|
+
|
|
297
|
+
child_logger = logger.getChild(spec.name)
|
|
298
|
+
child_ctx = InitContext(
|
|
299
|
+
logger=child_logger,
|
|
300
|
+
config=config,
|
|
301
|
+
flow=flow,
|
|
302
|
+
)
|
|
303
|
+
|
|
304
|
+
child_logger.info(
|
|
305
|
+
f"Running (old_flag={old_flag!r} -> new_flag={spec.flag!r})"
|
|
306
|
+
)
|
|
307
|
+
|
|
308
|
+
try:
|
|
309
|
+
await spec.instance.run(child_ctx, old_flag, spec.flag)
|
|
310
|
+
except Exception as e:
|
|
311
|
+
child_logger.error(
|
|
312
|
+
f"Failed: {type(e).__name__}: {e}", exc_info=True,
|
|
313
|
+
)
|
|
314
|
+
return "failed"
|
|
315
|
+
|
|
316
|
+
try:
|
|
317
|
+
await self._store_flag(config, spec.name, spec.flag)
|
|
318
|
+
except Exception as e:
|
|
319
|
+
child_logger.warning(
|
|
320
|
+
f"Completed but could not persist state flag "
|
|
321
|
+
f"({type(e).__name__}: {e}); will re-run next cycle"
|
|
322
|
+
)
|
|
323
|
+
return "failed-state-write"
|
|
324
|
+
|
|
325
|
+
child_logger.info(f"Completed (flag={spec.flag!r})")
|
|
326
|
+
return "ran"
|
|
327
|
+
|
|
328
|
+
# ------------------------------------------------------------------
|
|
329
|
+
# Main loop.
|
|
330
|
+
# ------------------------------------------------------------------
|
|
331
|
+
|
|
332
|
+
async def run(self):
|
|
333
|
+
|
|
334
|
+
logger.info(
|
|
335
|
+
f"Bootstrapper starting with {len(self.specs)} initialisers"
|
|
336
|
+
)
|
|
337
|
+
|
|
338
|
+
while self.running:
|
|
339
|
+
|
|
340
|
+
sleep_for = STEADY_INTERVAL
|
|
341
|
+
|
|
342
|
+
try:
|
|
343
|
+
config, flow = await self._open_clients()
|
|
344
|
+
except Exception as e:
|
|
345
|
+
logger.info(
|
|
346
|
+
f"Failed to open clients "
|
|
347
|
+
f"({type(e).__name__}: {e}); retry in {GATE_BACKOFF}s"
|
|
348
|
+
)
|
|
349
|
+
await asyncio.sleep(GATE_BACKOFF)
|
|
350
|
+
continue
|
|
351
|
+
|
|
352
|
+
try:
|
|
353
|
+
# Phase 1: pre-service initialisers run unconditionally.
|
|
354
|
+
pre_specs = [
|
|
355
|
+
s for s in self.specs
|
|
356
|
+
if not s.instance.wait_for_services
|
|
357
|
+
]
|
|
358
|
+
pre_results = {}
|
|
359
|
+
for spec in pre_specs:
|
|
360
|
+
pre_results[spec.name] = await self._run_spec(
|
|
361
|
+
spec, config, flow,
|
|
362
|
+
)
|
|
363
|
+
|
|
364
|
+
# Phase 2: gate.
|
|
365
|
+
gate_ok = await self._gate_ready(config, flow)
|
|
366
|
+
|
|
367
|
+
# Phase 3: post-service initialisers, if gate passed.
|
|
368
|
+
post_results = {}
|
|
369
|
+
if gate_ok:
|
|
370
|
+
post_specs = [
|
|
371
|
+
s for s in self.specs
|
|
372
|
+
if s.instance.wait_for_services
|
|
373
|
+
]
|
|
374
|
+
for spec in post_specs:
|
|
375
|
+
post_results[spec.name] = await self._run_spec(
|
|
376
|
+
spec, config, flow,
|
|
377
|
+
)
|
|
378
|
+
|
|
379
|
+
# Cadence selection.
|
|
380
|
+
if not gate_ok:
|
|
381
|
+
sleep_for = GATE_BACKOFF
|
|
382
|
+
else:
|
|
383
|
+
all_results = {**pre_results, **post_results}
|
|
384
|
+
if any(r != "skip" for r in all_results.values()):
|
|
385
|
+
sleep_for = INIT_RETRY
|
|
386
|
+
else:
|
|
387
|
+
sleep_for = STEADY_INTERVAL
|
|
388
|
+
|
|
389
|
+
finally:
|
|
390
|
+
await self._safe_stop(config)
|
|
391
|
+
await self._safe_stop(flow)
|
|
392
|
+
|
|
393
|
+
await asyncio.sleep(sleep_for)
|
|
394
|
+
|
|
395
|
+
# ------------------------------------------------------------------
|
|
396
|
+
# CLI arg plumbing.
|
|
397
|
+
# ------------------------------------------------------------------
|
|
398
|
+
|
|
399
|
+
@staticmethod
|
|
400
|
+
def add_args(parser: ArgumentParser) -> None:
|
|
401
|
+
|
|
402
|
+
AsyncProcessor.add_args(parser)
|
|
403
|
+
|
|
404
|
+
parser.add_argument(
|
|
405
|
+
'-c', '--initialisers-file',
|
|
406
|
+
help='Path to YAML or JSON file describing the '
|
|
407
|
+
'initialisers to run. Ignored when the '
|
|
408
|
+
"'initialisers' parameter is provided directly "
|
|
409
|
+
'(e.g. when running inside a processor group).',
|
|
410
|
+
)
|
|
411
|
+
|
|
412
|
+
|
|
413
|
+
def run():
|
|
414
|
+
Processor.launch(default_ident, __doc__)
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Core bootstrap initialisers.
|
|
3
|
+
|
|
4
|
+
These cover the base TrustGraph deployment case. Enterprise or
|
|
5
|
+
third-party initialisers live in their own packages and are
|
|
6
|
+
referenced in the bootstrapper's config by fully-qualified dotted
|
|
7
|
+
path.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from . pulsar_topology import PulsarTopology
|
|
11
|
+
from . template_seed import TemplateSeed
|
|
12
|
+
from . workspace_init import WorkspaceInit
|
|
13
|
+
from . default_flow_start import DefaultFlowStart
|
|
14
|
+
|
|
15
|
+
__all__ = [
|
|
16
|
+
"PulsarTopology",
|
|
17
|
+
"TemplateSeed",
|
|
18
|
+
"WorkspaceInit",
|
|
19
|
+
"DefaultFlowStart",
|
|
20
|
+
]
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"""
|
|
2
|
+
DefaultFlowStart initialiser — starts a named flow in a workspace
|
|
3
|
+
using a specified blueprint.
|
|
4
|
+
|
|
5
|
+
Separated from WorkspaceInit so deployments that want a workspace
|
|
6
|
+
without an auto-started flow can simply omit this initialiser.
|
|
7
|
+
|
|
8
|
+
Parameters
|
|
9
|
+
----------
|
|
10
|
+
workspace : str (default "default")
|
|
11
|
+
Workspace in which to start the flow.
|
|
12
|
+
flow_id : str (default "default")
|
|
13
|
+
Identifier for the started flow.
|
|
14
|
+
blueprint : str (required)
|
|
15
|
+
Blueprint name (must already exist in the workspace's config,
|
|
16
|
+
typically via TemplateSeed -> WorkspaceInit).
|
|
17
|
+
description : str (default "Default")
|
|
18
|
+
Human-readable description passed to flow-svc.
|
|
19
|
+
parameters : dict (optional)
|
|
20
|
+
Optional parameter overrides passed to start-flow.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
from trustgraph.schema import FlowRequest
|
|
24
|
+
|
|
25
|
+
from .. base import Initialiser
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class DefaultFlowStart(Initialiser):
|
|
29
|
+
|
|
30
|
+
def __init__(
|
|
31
|
+
self,
|
|
32
|
+
workspace="default",
|
|
33
|
+
flow_id="default",
|
|
34
|
+
blueprint=None,
|
|
35
|
+
description="Default",
|
|
36
|
+
parameters=None,
|
|
37
|
+
**kwargs,
|
|
38
|
+
):
|
|
39
|
+
super().__init__(**kwargs)
|
|
40
|
+
if not blueprint:
|
|
41
|
+
raise ValueError(
|
|
42
|
+
"DefaultFlowStart requires 'blueprint'"
|
|
43
|
+
)
|
|
44
|
+
self.workspace = workspace
|
|
45
|
+
self.flow_id = flow_id
|
|
46
|
+
self.blueprint = blueprint
|
|
47
|
+
self.description = description
|
|
48
|
+
self.parameters = dict(parameters) if parameters else {}
|
|
49
|
+
|
|
50
|
+
async def run(self, ctx, old_flag, new_flag):
|
|
51
|
+
|
|
52
|
+
# Check whether the flow already exists. Belt-and-braces
|
|
53
|
+
# beyond the flag gate: if an operator stops and restarts the
|
|
54
|
+
# bootstrapper after the flow is already running, we don't
|
|
55
|
+
# want to blindly try to start it again.
|
|
56
|
+
list_resp = await ctx.flow.request(
|
|
57
|
+
FlowRequest(
|
|
58
|
+
operation="list-flows",
|
|
59
|
+
workspace=self.workspace,
|
|
60
|
+
),
|
|
61
|
+
timeout=10,
|
|
62
|
+
)
|
|
63
|
+
if list_resp.error:
|
|
64
|
+
raise RuntimeError(
|
|
65
|
+
f"list-flows failed: "
|
|
66
|
+
f"{list_resp.error.type}: {list_resp.error.message}"
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
if self.flow_id in (list_resp.flow_ids or []):
|
|
70
|
+
ctx.logger.info(
|
|
71
|
+
f"Flow {self.flow_id!r} already running in workspace "
|
|
72
|
+
f"{self.workspace!r}; nothing to do"
|
|
73
|
+
)
|
|
74
|
+
return
|
|
75
|
+
|
|
76
|
+
ctx.logger.info(
|
|
77
|
+
f"Starting flow {self.flow_id!r} "
|
|
78
|
+
f"(blueprint={self.blueprint!r}) "
|
|
79
|
+
f"in workspace {self.workspace!r}"
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
resp = await ctx.flow.request(
|
|
83
|
+
FlowRequest(
|
|
84
|
+
operation="start-flow",
|
|
85
|
+
workspace=self.workspace,
|
|
86
|
+
flow_id=self.flow_id,
|
|
87
|
+
blueprint_name=self.blueprint,
|
|
88
|
+
description=self.description,
|
|
89
|
+
parameters=self.parameters,
|
|
90
|
+
),
|
|
91
|
+
timeout=30,
|
|
92
|
+
)
|
|
93
|
+
if resp.error:
|
|
94
|
+
raise RuntimeError(
|
|
95
|
+
f"start-flow failed: "
|
|
96
|
+
f"{resp.error.type}: {resp.error.message}"
|
|
97
|
+
)
|
|
98
|
+
|
|
99
|
+
ctx.logger.info(
|
|
100
|
+
f"Flow {self.flow_id!r} started"
|
|
101
|
+
)
|