trustgraph-flow 2.3.0__tar.gz → 2.3.2__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.
Files changed (361) hide show
  1. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/PKG-INFO +1 -1
  2. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/agent/orchestrator/pattern_base.py +67 -24
  3. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/agent/orchestrator/plan_pattern.py +7 -3
  4. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/agent/orchestrator/react_pattern.py +19 -3
  5. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/agent/orchestrator/service.py +25 -13
  6. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/agent/orchestrator/supervisor_pattern.py +7 -3
  7. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/agent/react/agent_manager.py +54 -13
  8. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/agent/react/service.py +13 -13
  9. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/agent/react/tools.py +1 -1
  10. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/agent/react/types.py +11 -1
  11. trustgraph_flow-2.3.2/trustgraph/flow_version.py +1 -0
  12. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/retrieval/document_rag/document_rag.py +12 -1
  13. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/retrieval/graph_rag/graph_rag.py +29 -2
  14. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph_flow.egg-info/PKG-INFO +1 -1
  15. trustgraph_flow-2.3.0/trustgraph/flow_version.py +0 -1
  16. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/README.md +0 -0
  17. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/pyproject.toml +0 -0
  18. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/setup.cfg +0 -0
  19. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/__init__.py +0 -0
  20. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/agent/__init__.py +0 -0
  21. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/agent/mcp_tool/__init__.py +0 -0
  22. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/agent/mcp_tool/__main__.py +0 -0
  23. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/agent/mcp_tool/service.py +0 -0
  24. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/agent/orchestrator/__init__.py +0 -0
  25. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/agent/orchestrator/__main__.py +0 -0
  26. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/agent/orchestrator/aggregator.py +0 -0
  27. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/agent/orchestrator/meta_router.py +0 -0
  28. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/agent/react/__init__.py +0 -0
  29. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/agent/react/__main__.py +0 -0
  30. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/agent/react/streaming_parser.py +0 -0
  31. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/agent/tool_filter.py +0 -0
  32. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/chunking/__init__.py +0 -0
  33. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/chunking/recursive/__init__.py +0 -0
  34. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/chunking/recursive/__main__.py +0 -0
  35. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/chunking/recursive/chunker.py +0 -0
  36. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/chunking/token/__init__.py +0 -0
  37. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/chunking/token/__main__.py +0 -0
  38. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/chunking/token/chunker.py +0 -0
  39. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/config/service/__init__.py +0 -0
  40. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/config/service/__main__.py +0 -0
  41. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/config/service/config.py +0 -0
  42. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/config/service/flow.py +0 -0
  43. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/config/service/service.py +0 -0
  44. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/cores/__init__.py +0 -0
  45. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/cores/__main__.py +0 -0
  46. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/cores/knowledge.py +0 -0
  47. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/cores/service.py +0 -0
  48. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/decoding/__init__.py +0 -0
  49. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/decoding/mistral_ocr/__init__.py +0 -0
  50. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/decoding/mistral_ocr/__main__.py +0 -0
  51. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/decoding/mistral_ocr/processor.py +0 -0
  52. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/decoding/pdf/__init__.py +0 -0
  53. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/decoding/pdf/__main__.py +0 -0
  54. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/decoding/pdf/pdf_decoder.py +0 -0
  55. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/direct/__init__.py +0 -0
  56. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/direct/cassandra_kg.py +0 -0
  57. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/direct/milvus_doc_embeddings.py +0 -0
  58. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/direct/milvus_graph_embeddings.py +0 -0
  59. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/embeddings/__init__.py +0 -0
  60. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/embeddings/document_embeddings/__init__.py +0 -0
  61. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/embeddings/document_embeddings/__main__.py +0 -0
  62. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/embeddings/document_embeddings/embeddings.py +0 -0
  63. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/embeddings/fastembed/__init__.py +0 -0
  64. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/embeddings/fastembed/__main__.py +0 -0
  65. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/embeddings/fastembed/processor.py +0 -0
  66. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/embeddings/graph_embeddings/__init__.py +0 -0
  67. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/embeddings/graph_embeddings/__main__.py +0 -0
  68. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/embeddings/graph_embeddings/embeddings.py +0 -0
  69. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/embeddings/ollama/__init__.py +0 -0
  70. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/embeddings/ollama/__main__.py +0 -0
  71. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/embeddings/ollama/processor.py +0 -0
  72. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/embeddings/row_embeddings/__init__.py +0 -0
  73. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/embeddings/row_embeddings/__main__.py +0 -0
  74. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/embeddings/row_embeddings/embeddings.py +0 -0
  75. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/external/__init__.py +0 -0
  76. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/external/wikipedia/__init__.py +0 -0
  77. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/external/wikipedia/__main__.py +0 -0
  78. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/external/wikipedia/service.py +0 -0
  79. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/extract/__init__.py +0 -0
  80. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/extract/kg/__init__.py +0 -0
  81. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/extract/kg/agent/__init__.py +0 -0
  82. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/extract/kg/agent/__main__.py +0 -0
  83. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/extract/kg/agent/extract.py +0 -0
  84. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/extract/kg/definitions/__init__.py +0 -0
  85. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/extract/kg/definitions/__main__.py +0 -0
  86. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/extract/kg/definitions/extract.py +0 -0
  87. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/extract/kg/ontology/__init__.py +0 -0
  88. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/extract/kg/ontology/entity_normalizer.py +0 -0
  89. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/extract/kg/ontology/extract.py +0 -0
  90. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/extract/kg/ontology/ontology_embedder.py +0 -0
  91. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/extract/kg/ontology/ontology_loader.py +0 -0
  92. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/extract/kg/ontology/ontology_selector.py +0 -0
  93. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/extract/kg/ontology/run.py +0 -0
  94. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/extract/kg/ontology/simplified_parser.py +0 -0
  95. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/extract/kg/ontology/text_processor.py +0 -0
  96. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/extract/kg/ontology/triple_converter.py +0 -0
  97. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/extract/kg/ontology/vector_store.py +0 -0
  98. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/extract/kg/relationships/__init__.py +0 -0
  99. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/extract/kg/relationships/__main__.py +0 -0
  100. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/extract/kg/relationships/extract.py +0 -0
  101. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/extract/kg/rows/__init__.py +0 -0
  102. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/extract/kg/rows/__main__.py +0 -0
  103. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/extract/kg/rows/processor.py +0 -0
  104. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/extract/kg/topics/__init__.py +0 -0
  105. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/extract/kg/topics/__main__.py +0 -0
  106. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/extract/kg/topics/extract.py +0 -0
  107. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/__init__.py +0 -0
  108. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/__main__.py +0 -0
  109. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/auth.py +0 -0
  110. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/config/receiver.py +0 -0
  111. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/agent.py +0 -0
  112. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/collection_management.py +0 -0
  113. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/config.py +0 -0
  114. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/core_export.py +0 -0
  115. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/core_import.py +0 -0
  116. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/document_embeddings_export.py +0 -0
  117. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/document_embeddings_import.py +0 -0
  118. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/document_embeddings_query.py +0 -0
  119. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/document_load.py +0 -0
  120. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/document_rag.py +0 -0
  121. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/document_stream.py +0 -0
  122. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/embeddings.py +0 -0
  123. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/entity_contexts_export.py +0 -0
  124. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/entity_contexts_import.py +0 -0
  125. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/flow.py +0 -0
  126. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/graph_embeddings_export.py +0 -0
  127. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/graph_embeddings_import.py +0 -0
  128. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/graph_embeddings_query.py +0 -0
  129. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/graph_rag.py +0 -0
  130. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/knowledge.py +0 -0
  131. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/librarian.py +0 -0
  132. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/manager.py +0 -0
  133. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/mcp_tool.py +0 -0
  134. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/mux.py +0 -0
  135. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/nlp_query.py +0 -0
  136. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/prompt.py +0 -0
  137. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/requestor.py +0 -0
  138. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/row_embeddings_query.py +0 -0
  139. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/rows_import.py +0 -0
  140. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/rows_query.py +0 -0
  141. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/sender.py +0 -0
  142. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/serialize.py +0 -0
  143. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/sparql_query.py +0 -0
  144. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/streamer.py +0 -0
  145. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/structured_diag.py +0 -0
  146. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/structured_query.py +0 -0
  147. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/text_completion.py +0 -0
  148. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/text_load.py +0 -0
  149. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/triples_export.py +0 -0
  150. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/triples_import.py +0 -0
  151. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/dispatch/triples_query.py +0 -0
  152. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/endpoint/constant_endpoint.py +0 -0
  153. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/endpoint/manager.py +0 -0
  154. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/endpoint/metrics.py +0 -0
  155. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/endpoint/socket.py +0 -0
  156. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/endpoint/stream_endpoint.py +0 -0
  157. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/endpoint/variable_endpoint.py +0 -0
  158. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/running.py +0 -0
  159. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/service.py +0 -0
  160. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/unused/dbpedia.py +0 -0
  161. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/unused/encyclopedia.py +0 -0
  162. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/gateway/unused/internet_search.py +0 -0
  163. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/librarian/__init__.py +0 -0
  164. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/librarian/__main__.py +0 -0
  165. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/librarian/blob_store.py +0 -0
  166. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/librarian/collection_manager.py +0 -0
  167. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/librarian/librarian.py +0 -0
  168. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/librarian/service.py +0 -0
  169. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/metering/__init__.py +0 -0
  170. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/metering/__main__.py +0 -0
  171. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/metering/counter.py +0 -0
  172. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/model/__init__.py +0 -0
  173. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/model/text_completion/__init__.py +0 -0
  174. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/model/text_completion/azure/__init__.py +0 -0
  175. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/model/text_completion/azure/__main__.py +0 -0
  176. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/model/text_completion/azure/llm.py +0 -0
  177. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/model/text_completion/azure_openai/__init__.py +0 -0
  178. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/model/text_completion/azure_openai/__main__.py +0 -0
  179. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/model/text_completion/azure_openai/llm.py +0 -0
  180. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/model/text_completion/claude/__init__.py +0 -0
  181. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/model/text_completion/claude/__main__.py +0 -0
  182. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/model/text_completion/claude/llm.py +0 -0
  183. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/model/text_completion/cohere/__init__.py +0 -0
  184. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/model/text_completion/cohere/__main__.py +0 -0
  185. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/model/text_completion/cohere/llm.py +0 -0
  186. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/model/text_completion/llamafile/__init__.py +0 -0
  187. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/model/text_completion/llamafile/__main__.py +0 -0
  188. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/model/text_completion/llamafile/llm.py +0 -0
  189. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/model/text_completion/lmstudio/__init__.py +0 -0
  190. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/model/text_completion/lmstudio/__main__.py +0 -0
  191. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/model/text_completion/lmstudio/llm.py +0 -0
  192. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/model/text_completion/mistral/__init__.py +0 -0
  193. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/model/text_completion/mistral/__main__.py +0 -0
  194. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/model/text_completion/mistral/llm.py +0 -0
  195. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/model/text_completion/ollama/__init__.py +0 -0
  196. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/model/text_completion/ollama/__main__.py +0 -0
  197. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/model/text_completion/ollama/llm.py +0 -0
  198. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/model/text_completion/openai/__init__.py +0 -0
  199. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/model/text_completion/openai/__main__.py +0 -0
  200. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/model/text_completion/openai/llm.py +0 -0
  201. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/model/text_completion/tgi/__init__.py +0 -0
  202. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/model/text_completion/tgi/__main__.py +0 -0
  203. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/model/text_completion/tgi/llm.py +0 -0
  204. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/model/text_completion/vllm/__init__.py +0 -0
  205. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/model/text_completion/vllm/__main__.py +0 -0
  206. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/model/text_completion/vllm/llm.py +0 -0
  207. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/processing/__init__.py +0 -0
  208. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/processing/__main__.py +0 -0
  209. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/processing/processing.py +0 -0
  210. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/prompt/__init__.py +0 -0
  211. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/prompt/template/__init__.py +0 -0
  212. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/prompt/template/__main__.py +0 -0
  213. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/prompt/template/service.py +0 -0
  214. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/__init__.py +0 -0
  215. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/doc_embeddings/__init__.py +0 -0
  216. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/doc_embeddings/milvus/__init__.py +0 -0
  217. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/doc_embeddings/milvus/__main__.py +0 -0
  218. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/doc_embeddings/milvus/service.py +0 -0
  219. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/doc_embeddings/pinecone/__init__.py +0 -0
  220. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/doc_embeddings/pinecone/__main__.py +0 -0
  221. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/doc_embeddings/pinecone/service.py +0 -0
  222. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/doc_embeddings/qdrant/__init__.py +0 -0
  223. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/doc_embeddings/qdrant/__main__.py +0 -0
  224. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/doc_embeddings/qdrant/service.py +0 -0
  225. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/graph_embeddings/__init__.py +0 -0
  226. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/graph_embeddings/milvus/__init__.py +0 -0
  227. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/graph_embeddings/milvus/__main__.py +0 -0
  228. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/graph_embeddings/milvus/service.py +0 -0
  229. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/graph_embeddings/pinecone/__init__.py +0 -0
  230. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/graph_embeddings/pinecone/__main__.py +0 -0
  231. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/graph_embeddings/pinecone/service.py +0 -0
  232. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/graph_embeddings/qdrant/__init__.py +0 -0
  233. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/graph_embeddings/qdrant/__main__.py +0 -0
  234. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/graph_embeddings/qdrant/service.py +0 -0
  235. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/graphql/__init__.py +0 -0
  236. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/graphql/filters.py +0 -0
  237. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/graphql/schema.py +0 -0
  238. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/graphql/types.py +0 -0
  239. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/ontology/__init__.py +0 -0
  240. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/ontology/answer_generator.py +0 -0
  241. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/ontology/backend_router.py +0 -0
  242. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/ontology/cache.py +0 -0
  243. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/ontology/cypher_executor.py +0 -0
  244. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/ontology/cypher_generator.py +0 -0
  245. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/ontology/error_handling.py +0 -0
  246. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/ontology/monitoring.py +0 -0
  247. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/ontology/multi_language.py +0 -0
  248. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/ontology/ontology_matcher.py +0 -0
  249. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/ontology/query_explanation.py +0 -0
  250. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/ontology/query_optimizer.py +0 -0
  251. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/ontology/query_service.py +0 -0
  252. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/ontology/question_analyzer.py +0 -0
  253. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/ontology/sparql_cassandra.py +0 -0
  254. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/ontology/sparql_generator.py +0 -0
  255. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/row_embeddings/__init__.py +0 -0
  256. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/row_embeddings/qdrant/__init__.py +0 -0
  257. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/row_embeddings/qdrant/__main__.py +0 -0
  258. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/row_embeddings/qdrant/service.py +0 -0
  259. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/rows/__init__.py +0 -0
  260. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/rows/cassandra/__init__.py +0 -0
  261. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/rows/cassandra/__main__.py +0 -0
  262. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/rows/cassandra/service.py +0 -0
  263. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/sparql/__init__.py +0 -0
  264. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/sparql/__main__.py +0 -0
  265. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/sparql/algebra.py +0 -0
  266. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/sparql/expressions.py +0 -0
  267. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/sparql/parser.py +0 -0
  268. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/sparql/service.py +0 -0
  269. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/sparql/solutions.py +0 -0
  270. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/triples/__init__.py +0 -0
  271. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/triples/cassandra/__init__.py +0 -0
  272. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/triples/cassandra/__main__.py +0 -0
  273. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/triples/cassandra/service.py +0 -0
  274. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/triples/falkordb/__init__.py +0 -0
  275. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/triples/falkordb/__main__.py +0 -0
  276. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/triples/falkordb/service.py +0 -0
  277. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/triples/memgraph/__init__.py +0 -0
  278. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/triples/memgraph/__main__.py +0 -0
  279. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/triples/memgraph/service.py +0 -0
  280. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/triples/neo4j/__init__.py +0 -0
  281. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/triples/neo4j/__main__.py +0 -0
  282. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/query/triples/neo4j/service.py +0 -0
  283. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/retrieval/__init__.py +0 -0
  284. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/retrieval/document_rag/__init__.py +0 -0
  285. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/retrieval/document_rag/__main__.py +0 -0
  286. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/retrieval/document_rag/rag.py +0 -0
  287. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/retrieval/graph_rag/__init__.py +0 -0
  288. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/retrieval/graph_rag/__main__.py +0 -0
  289. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/retrieval/graph_rag/rag.py +0 -0
  290. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/retrieval/nlp_query/__init__.py +0 -0
  291. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/retrieval/nlp_query/__main__.py +0 -0
  292. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/retrieval/nlp_query/service.py +0 -0
  293. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/retrieval/structured_diag/__init__.py +0 -0
  294. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/retrieval/structured_diag/service.py +0 -0
  295. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/retrieval/structured_diag/type_detector.py +0 -0
  296. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/retrieval/structured_query/__init__.py +0 -0
  297. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/retrieval/structured_query/__main__.py +0 -0
  298. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/retrieval/structured_query/service.py +0 -0
  299. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/rev_gateway/__init__.py +0 -0
  300. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/rev_gateway/__main__.py +0 -0
  301. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/rev_gateway/dispatcher.py +0 -0
  302. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/rev_gateway/service.py +0 -0
  303. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/__init__.py +0 -0
  304. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/doc_embeddings/__init__.py +0 -0
  305. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/doc_embeddings/milvus/__init__.py +0 -0
  306. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/doc_embeddings/milvus/__main__.py +0 -0
  307. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/doc_embeddings/milvus/write.py +0 -0
  308. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/doc_embeddings/pinecone/__init__.py +0 -0
  309. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/doc_embeddings/pinecone/__main__.py +0 -0
  310. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/doc_embeddings/pinecone/write.py +0 -0
  311. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/doc_embeddings/qdrant/__init__.py +0 -0
  312. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/doc_embeddings/qdrant/__main__.py +0 -0
  313. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/doc_embeddings/qdrant/write.py +0 -0
  314. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/graph_embeddings/__init__.py +0 -0
  315. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/graph_embeddings/milvus/__init__.py +0 -0
  316. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/graph_embeddings/milvus/__main__.py +0 -0
  317. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/graph_embeddings/milvus/write.py +0 -0
  318. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/graph_embeddings/pinecone/__init__.py +0 -0
  319. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/graph_embeddings/pinecone/__main__.py +0 -0
  320. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/graph_embeddings/pinecone/write.py +0 -0
  321. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/graph_embeddings/qdrant/__init__.py +0 -0
  322. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/graph_embeddings/qdrant/__main__.py +0 -0
  323. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/graph_embeddings/qdrant/write.py +0 -0
  324. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/knowledge/__init__.py +0 -0
  325. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/knowledge/__main__.py +0 -0
  326. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/knowledge/store.py +0 -0
  327. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/row_embeddings/__init__.py +0 -0
  328. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/row_embeddings/qdrant/__init__.py +0 -0
  329. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/row_embeddings/qdrant/__main__.py +0 -0
  330. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/row_embeddings/qdrant/write.py +0 -0
  331. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/rows/__init__.py +0 -0
  332. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/rows/cassandra/__init__.py +0 -0
  333. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/rows/cassandra/__main__.py +0 -0
  334. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/rows/cassandra/write.py +0 -0
  335. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/triples/__init__.py +0 -0
  336. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/triples/cassandra/__init__.py +0 -0
  337. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/triples/cassandra/__main__.py +0 -0
  338. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/triples/cassandra/write.py +0 -0
  339. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/triples/falkordb/__init__.py +0 -0
  340. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/triples/falkordb/__main__.py +0 -0
  341. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/triples/falkordb/write.py +0 -0
  342. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/triples/memgraph/__init__.py +0 -0
  343. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/triples/memgraph/__main__.py +0 -0
  344. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/triples/memgraph/write.py +0 -0
  345. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/triples/neo4j/__init__.py +0 -0
  346. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/triples/neo4j/__main__.py +0 -0
  347. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/storage/triples/neo4j/write.py +0 -0
  348. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/tables/__init__.py +0 -0
  349. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/tables/config.py +0 -0
  350. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/tables/knowledge.py +0 -0
  351. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/tables/library.py +0 -0
  352. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/template/__init__.py +0 -0
  353. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/template/prompt_manager.py +0 -0
  354. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/tool_service/__init__.py +0 -0
  355. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/tool_service/joke/__init__.py +0 -0
  356. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph/tool_service/joke/service.py +0 -0
  357. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph_flow.egg-info/SOURCES.txt +0 -0
  358. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph_flow.egg-info/dependency_links.txt +0 -0
  359. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph_flow.egg-info/entry_points.txt +0 -0
  360. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/trustgraph_flow.egg-info/requires.txt +0 -0
  361. {trustgraph_flow-2.3.0 → trustgraph_flow-2.3.2}/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.3.0
3
+ Version: 2.3.2
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
@@ -25,6 +25,7 @@ from trustgraph.provenance import (
25
25
  agent_plan_uri,
26
26
  agent_step_result_uri,
27
27
  agent_synthesis_uri,
28
+ agent_pattern_decision_uri,
28
29
  agent_session_triples,
29
30
  agent_iteration_triples,
30
31
  agent_observation_triples,
@@ -34,6 +35,7 @@ from trustgraph.provenance import (
34
35
  agent_plan_triples,
35
36
  agent_step_result_triples,
36
37
  agent_synthesis_triples,
38
+ agent_pattern_decision_triples,
37
39
  set_graph,
38
40
  GRAPH_RETRIEVAL,
39
41
  )
@@ -182,7 +184,7 @@ class PatternBase:
182
184
  logger.debug(f"Think: {x} (is_final={is_final})")
183
185
  if streaming:
184
186
  r = AgentResponse(
185
- chunk_type="thought",
187
+ message_type="thought",
186
188
  content=x,
187
189
  end_of_message=is_final,
188
190
  end_of_dialog=False,
@@ -190,7 +192,7 @@ class PatternBase:
190
192
  )
191
193
  else:
192
194
  r = AgentResponse(
193
- chunk_type="thought",
195
+ message_type="thought",
194
196
  content=x,
195
197
  end_of_message=True,
196
198
  end_of_dialog=False,
@@ -205,7 +207,7 @@ class PatternBase:
205
207
  logger.debug(f"Observe: {x} (is_final={is_final})")
206
208
  if streaming:
207
209
  r = AgentResponse(
208
- chunk_type="observation",
210
+ message_type="observation",
209
211
  content=x,
210
212
  end_of_message=is_final,
211
213
  end_of_dialog=False,
@@ -213,7 +215,7 @@ class PatternBase:
213
215
  )
214
216
  else:
215
217
  r = AgentResponse(
216
- chunk_type="observation",
218
+ message_type="observation",
217
219
  content=x,
218
220
  end_of_message=True,
219
221
  end_of_dialog=False,
@@ -228,7 +230,7 @@ class PatternBase:
228
230
  logger.debug(f"Answer: {x}")
229
231
  if streaming:
230
232
  r = AgentResponse(
231
- chunk_type="answer",
233
+ message_type="answer",
232
234
  content=x,
233
235
  end_of_message=False,
234
236
  end_of_dialog=False,
@@ -236,7 +238,7 @@ class PatternBase:
236
238
  )
237
239
  else:
238
240
  r = AgentResponse(
239
- chunk_type="answer",
241
+ message_type="answer",
240
242
  content=x,
241
243
  end_of_message=True,
242
244
  end_of_dialog=False,
@@ -270,16 +272,43 @@ class PatternBase:
270
272
  logger.debug(f"Emitted session triples for {session_uri}")
271
273
 
272
274
  await respond(AgentResponse(
273
- chunk_type="explain",
275
+ message_type="explain",
274
276
  content="",
275
277
  explain_id=session_uri,
276
278
  explain_graph=GRAPH_RETRIEVAL,
277
279
  explain_triples=triples,
278
280
  ))
279
281
 
282
+ async def emit_pattern_decision_triples(
283
+ self, flow, session_id, session_uri, pattern, task_type,
284
+ user, collection, respond,
285
+ ):
286
+ """Emit provenance triples for a meta-router pattern decision."""
287
+ uri = agent_pattern_decision_uri(session_id)
288
+ triples = set_graph(
289
+ agent_pattern_decision_triples(
290
+ uri, session_uri, pattern, task_type,
291
+ ),
292
+ GRAPH_RETRIEVAL,
293
+ )
294
+ await flow("explainability").send(Triples(
295
+ metadata=Metadata(id=uri, user=user, collection=collection),
296
+ triples=triples,
297
+ ))
298
+ await respond(AgentResponse(
299
+ message_type="explain", content="",
300
+ explain_id=uri, explain_graph=GRAPH_RETRIEVAL,
301
+ explain_triples=triples,
302
+ ))
303
+ return uri
304
+
280
305
  async def emit_iteration_triples(self, flow, session_id, iteration_num,
281
306
  session_uri, act, request, respond,
282
- streaming):
307
+ streaming, tool_candidates=None,
308
+ step_number=None,
309
+ llm_duration_ms=None,
310
+ in_token=None, out_token=None,
311
+ model=None):
283
312
  """Emit provenance triples for an iteration (Analysis+ToolUse)."""
284
313
  iteration_uri = agent_iteration_uri(session_id, iteration_num)
285
314
 
@@ -319,6 +348,12 @@ class PatternBase:
319
348
  arguments=act.arguments,
320
349
  thought_uri=thought_entity_uri if thought_doc_id else None,
321
350
  thought_document_id=thought_doc_id,
351
+ tool_candidates=tool_candidates,
352
+ step_number=step_number,
353
+ llm_duration_ms=llm_duration_ms,
354
+ in_token=in_token,
355
+ out_token=out_token,
356
+ model=model,
322
357
  ),
323
358
  GRAPH_RETRIEVAL,
324
359
  )
@@ -333,7 +368,7 @@ class PatternBase:
333
368
  logger.debug(f"Emitted iteration triples for {iteration_uri}")
334
369
 
335
370
  await respond(AgentResponse(
336
- chunk_type="explain",
371
+ message_type="explain",
337
372
  content="",
338
373
  explain_id=iteration_uri,
339
374
  explain_graph=GRAPH_RETRIEVAL,
@@ -342,7 +377,9 @@ class PatternBase:
342
377
 
343
378
  async def emit_observation_triples(self, flow, session_id, iteration_num,
344
379
  observation_text, request, respond,
345
- context=None):
380
+ context=None,
381
+ tool_duration_ms=None,
382
+ tool_error=None):
346
383
  """Emit provenance triples for a standalone Observation entity."""
347
384
  iteration_uri = agent_iteration_uri(session_id, iteration_num)
348
385
  observation_entity_uri = agent_observation_uri(session_id, iteration_num)
@@ -375,6 +412,8 @@ class PatternBase:
375
412
  observation_entity_uri,
376
413
  parent_uri,
377
414
  document_id=observation_doc_id,
415
+ tool_duration_ms=tool_duration_ms,
416
+ tool_error=tool_error,
378
417
  ),
379
418
  GRAPH_RETRIEVAL,
380
419
  )
@@ -389,7 +428,7 @@ class PatternBase:
389
428
  logger.debug(f"Emitted observation triples for {observation_entity_uri}")
390
429
 
391
430
  await respond(AgentResponse(
392
- chunk_type="explain",
431
+ message_type="explain",
393
432
  content="",
394
433
  explain_id=observation_entity_uri,
395
434
  explain_graph=GRAPH_RETRIEVAL,
@@ -398,7 +437,7 @@ class PatternBase:
398
437
 
399
438
  async def emit_final_triples(self, flow, session_id, iteration_num,
400
439
  session_uri, answer_text, request, respond,
401
- streaming):
440
+ streaming, termination_reason=None):
402
441
  """Emit provenance triples for the final answer and save to librarian."""
403
442
  final_uri = agent_final_uri(session_id)
404
443
 
@@ -432,6 +471,7 @@ class PatternBase:
432
471
  question_uri=final_question_uri,
433
472
  previous_uri=final_previous_uri,
434
473
  document_id=answer_doc_id,
474
+ termination_reason=termination_reason,
435
475
  ),
436
476
  GRAPH_RETRIEVAL,
437
477
  )
@@ -446,7 +486,7 @@ class PatternBase:
446
486
  logger.debug(f"Emitted final triples for {final_uri}")
447
487
 
448
488
  await respond(AgentResponse(
449
- chunk_type="explain",
489
+ message_type="explain",
450
490
  content="",
451
491
  explain_id=final_uri,
452
492
  explain_graph=GRAPH_RETRIEVAL,
@@ -470,7 +510,7 @@ class PatternBase:
470
510
  triples=triples,
471
511
  ))
472
512
  await respond(AgentResponse(
473
- chunk_type="explain", content="",
513
+ message_type="explain", content="",
474
514
  explain_id=uri, explain_graph=GRAPH_RETRIEVAL,
475
515
  explain_triples=triples,
476
516
  ))
@@ -509,7 +549,7 @@ class PatternBase:
509
549
  triples=triples,
510
550
  ))
511
551
  await respond(AgentResponse(
512
- chunk_type="explain", content="",
552
+ message_type="explain", content="",
513
553
  explain_id=uri, explain_graph=GRAPH_RETRIEVAL,
514
554
  explain_triples=triples,
515
555
  ))
@@ -529,7 +569,7 @@ class PatternBase:
529
569
  triples=triples,
530
570
  ))
531
571
  await respond(AgentResponse(
532
- chunk_type="explain", content="",
572
+ message_type="explain", content="",
533
573
  explain_id=uri, explain_graph=GRAPH_RETRIEVAL,
534
574
  explain_triples=triples,
535
575
  ))
@@ -562,14 +602,14 @@ class PatternBase:
562
602
  triples=triples,
563
603
  ))
564
604
  await respond(AgentResponse(
565
- chunk_type="explain", content="",
605
+ message_type="explain", content="",
566
606
  explain_id=uri, explain_graph=GRAPH_RETRIEVAL,
567
607
  explain_triples=triples,
568
608
  ))
569
609
 
570
610
  async def emit_synthesis_triples(
571
611
  self, flow, session_id, previous_uris, answer_text, user, collection,
572
- respond, streaming,
612
+ respond, streaming, termination_reason=None,
573
613
  ):
574
614
  """Emit provenance for a synthesis answer."""
575
615
  uri = agent_synthesis_uri(session_id)
@@ -586,7 +626,10 @@ class PatternBase:
586
626
  doc_id = None
587
627
 
588
628
  triples = set_graph(
589
- agent_synthesis_triples(uri, previous_uris, doc_id),
629
+ agent_synthesis_triples(
630
+ uri, previous_uris, doc_id,
631
+ termination_reason=termination_reason,
632
+ ),
590
633
  GRAPH_RETRIEVAL,
591
634
  )
592
635
  await flow("explainability").send(Triples(
@@ -594,7 +637,7 @@ class PatternBase:
594
637
  triples=triples,
595
638
  ))
596
639
  await respond(AgentResponse(
597
- chunk_type="explain", content="",
640
+ message_type="explain", content="",
598
641
  explain_id=uri, explain_graph=GRAPH_RETRIEVAL,
599
642
  explain_triples=triples,
600
643
  ))
@@ -616,7 +659,7 @@ class PatternBase:
616
659
  if text:
617
660
  accumulated.append(text)
618
661
  await respond(AgentResponse(
619
- chunk_type="answer",
662
+ message_type="answer",
620
663
  content=text,
621
664
  end_of_message=False,
622
665
  end_of_dialog=False,
@@ -666,7 +709,7 @@ class PatternBase:
666
709
  # Answer wasn't streamed yet — send it as a chunk first
667
710
  if answer_text:
668
711
  await respond(AgentResponse(
669
- chunk_type="answer",
712
+ message_type="answer",
670
713
  content=answer_text,
671
714
  end_of_message=False,
672
715
  end_of_dialog=False,
@@ -675,7 +718,7 @@ class PatternBase:
675
718
  if streaming:
676
719
  # End-of-dialog marker with usage
677
720
  await respond(AgentResponse(
678
- chunk_type="answer",
721
+ message_type="answer",
679
722
  content="",
680
723
  end_of_message=True,
681
724
  end_of_dialog=True,
@@ -684,7 +727,7 @@ class PatternBase:
684
727
  ))
685
728
  else:
686
729
  await respond(AgentResponse(
687
- chunk_type="answer",
730
+ message_type="answer",
688
731
  content=answer_text,
689
732
  end_of_message=True,
690
733
  end_of_dialog=True,
@@ -35,7 +35,8 @@ class PlanThenExecutePattern(PatternBase):
35
35
  Subsequent calls execute the next pending plan step via ReACT.
36
36
  """
37
37
 
38
- async def iterate(self, request, respond, next, flow, usage=None):
38
+ async def iterate(self, request, respond, next, flow, usage=None,
39
+ pattern_decision_uri=None):
39
40
 
40
41
  if usage is None:
41
42
  usage = UsageTracker()
@@ -66,16 +67,18 @@ class PlanThenExecutePattern(PatternBase):
66
67
  # Determine current phase by checking history for a plan step
67
68
  plan = self._extract_plan(request.history)
68
69
 
70
+ derive_from_uri = pattern_decision_uri or session_uri
71
+
69
72
  if plan is None:
70
73
  await self._planning_iteration(
71
74
  request, respond, next, flow,
72
- session_id, collection, streaming, session_uri,
75
+ session_id, collection, streaming, derive_from_uri,
73
76
  iteration_num, usage=usage,
74
77
  )
75
78
  else:
76
79
  await self._execution_iteration(
77
80
  request, respond, next, flow,
78
- session_id, collection, streaming, session_uri,
81
+ session_id, collection, streaming, derive_from_uri,
79
82
  iteration_num, plan, usage=usage,
80
83
  )
81
84
 
@@ -385,6 +388,7 @@ class PlanThenExecutePattern(PatternBase):
385
388
  await self.emit_synthesis_triples(
386
389
  flow, session_id, last_step_uri,
387
390
  response_text, request.user, collection, respond, streaming,
391
+ termination_reason="plan-complete",
388
392
  )
389
393
 
390
394
  if self.is_subagent(request):
@@ -37,7 +37,8 @@ class ReactPattern(PatternBase):
37
37
  result is appended to history and a next-request is emitted.
38
38
  """
39
39
 
40
- async def iterate(self, request, respond, next, flow, usage=None):
40
+ async def iterate(self, request, respond, next, flow, usage=None,
41
+ pattern_decision_uri=None):
41
42
 
42
43
  if usage is None:
43
44
  usage = UsageTracker()
@@ -108,11 +109,23 @@ class ReactPattern(PatternBase):
108
109
  session_id, iteration_num,
109
110
  )
110
111
 
112
+ # Tool names available to the LLM for this iteration
113
+ tool_candidates = [t.name for t in filtered_tools.values()]
114
+
115
+ # Use pattern decision as derivation source if available
116
+ derive_from_uri = pattern_decision_uri or session_uri
117
+
111
118
  # Callback: emit Analysis+ToolUse triples before tool executes
112
119
  async def on_action(act):
113
120
  await self.emit_iteration_triples(
114
- flow, session_id, iteration_num, session_uri,
121
+ flow, session_id, iteration_num, derive_from_uri,
115
122
  act, request, respond, streaming,
123
+ tool_candidates=tool_candidates,
124
+ step_number=iteration_num,
125
+ llm_duration_ms=getattr(act, 'llm_duration_ms', None),
126
+ in_token=getattr(act, 'in_token', None),
127
+ out_token=getattr(act, 'out_token', None),
128
+ model=getattr(act, 'llm_model', None),
116
129
  )
117
130
 
118
131
  act = await temp_agent.react(
@@ -138,8 +151,9 @@ class ReactPattern(PatternBase):
138
151
 
139
152
  # Emit final provenance
140
153
  await self.emit_final_triples(
141
- flow, session_id, iteration_num, session_uri,
154
+ flow, session_id, iteration_num, derive_from_uri,
142
155
  f, request, respond, streaming,
156
+ termination_reason="final-answer",
143
157
  )
144
158
 
145
159
  if self.is_subagent(request):
@@ -157,6 +171,8 @@ class ReactPattern(PatternBase):
157
171
  flow, session_id, iteration_num,
158
172
  act.observation, request, respond,
159
173
  context=context,
174
+ tool_duration_ms=getattr(act, 'tool_duration_ms', None),
175
+ tool_error=getattr(act, 'tool_error', None),
160
176
  )
161
177
 
162
178
  history.append(act)
@@ -23,7 +23,7 @@ from ... base import Consumer, Producer
23
23
  from ... base import ConsumerMetrics, ProducerMetrics
24
24
 
25
25
  from ... schema import AgentRequest, AgentResponse, AgentStep, Error
26
- from ..orchestrator.pattern_base import UsageTracker
26
+ from ..orchestrator.pattern_base import UsageTracker, PatternBase
27
27
  from ... schema import Triples, Metadata
28
28
  from ... schema import LibrarianRequest, LibrarianResponse, DocumentMetadata
29
29
  from ... schema import librarian_request_queue, librarian_response_queue
@@ -537,19 +537,31 @@ class Processor(AgentService):
537
537
  )
538
538
 
539
539
  # Dispatch to the selected pattern
540
+ selected = self.react_pattern
540
541
  if pattern == "plan-then-execute":
541
- await self.plan_pattern.iterate(
542
- request, respond, next, flow, usage=usage,
543
- )
542
+ selected = self.plan_pattern
544
543
  elif pattern == "supervisor":
545
- await self.supervisor_pattern.iterate(
546
- request, respond, next, flow, usage=usage,
547
- )
548
- else:
549
- # Default to react
550
- await self.react_pattern.iterate(
551
- request, respond, next, flow, usage=usage,
552
- )
544
+ selected = self.supervisor_pattern
545
+
546
+ # Emit pattern decision provenance on first iteration
547
+ pattern_decision_uri = None
548
+ if not request.history and pattern:
549
+ session_id = getattr(request, 'session_id', '')
550
+ if session_id:
551
+ session_uri = self.provenance_session_uri(session_id)
552
+ pattern_decision_uri = \
553
+ await selected.emit_pattern_decision_triples(
554
+ flow, session_id, session_uri,
555
+ pattern, getattr(request, 'task_type', ''),
556
+ request.user,
557
+ getattr(request, 'collection', 'default'),
558
+ respond,
559
+ )
560
+
561
+ await selected.iterate(
562
+ request, respond, next, flow, usage=usage,
563
+ pattern_decision_uri=pattern_decision_uri,
564
+ )
553
565
 
554
566
  except Exception as e:
555
567
 
@@ -565,7 +577,7 @@ class Processor(AgentService):
565
577
  )
566
578
 
567
579
  r = AgentResponse(
568
- chunk_type="error",
580
+ message_type="error",
569
581
  content=str(e),
570
582
  end_of_message=True,
571
583
  end_of_dialog=True,
@@ -38,7 +38,8 @@ class SupervisorPattern(PatternBase):
38
38
  - "synthesise": triggered by aggregator with results in subagent_results
39
39
  """
40
40
 
41
- async def iterate(self, request, respond, next, flow, usage=None):
41
+ async def iterate(self, request, respond, next, flow, usage=None,
42
+ pattern_decision_uri=None):
42
43
 
43
44
  if usage is None:
44
45
  usage = UsageTracker()
@@ -70,18 +71,20 @@ class SupervisorPattern(PatternBase):
70
71
  )
71
72
  )
72
73
 
74
+ derive_from_uri = pattern_decision_uri or session_uri
75
+
73
76
  if has_results:
74
77
  await self._synthesise(
75
78
  request, respond, next, flow,
76
79
  session_id, collection, streaming,
77
- session_uri, iteration_num,
80
+ derive_from_uri, iteration_num,
78
81
  usage=usage,
79
82
  )
80
83
  else:
81
84
  await self._decompose_and_fanout(
82
85
  request, respond, next, flow,
83
86
  session_id, collection, streaming,
84
- session_uri, iteration_num,
87
+ derive_from_uri, iteration_num,
85
88
  usage=usage,
86
89
  )
87
90
 
@@ -235,6 +238,7 @@ class SupervisorPattern(PatternBase):
235
238
  await self.emit_synthesis_triples(
236
239
  flow, session_id, finding_uris,
237
240
  response_text, request.user, collection, respond, streaming,
241
+ termination_reason="subagents-complete",
238
242
  )
239
243
 
240
244
  await self.send_final_response(
@@ -3,6 +3,7 @@ import logging
3
3
  import json
4
4
  import re
5
5
  import asyncio
6
+ import time
6
7
 
7
8
  from . types import Action, Final
8
9
 
@@ -260,6 +261,7 @@ class AgentManager:
260
261
  streaming=True,
261
262
  chunk_callback=on_chunk
262
263
  )
264
+ self._last_prompt_result = prompt_result
263
265
  if usage:
264
266
  usage.track(prompt_result)
265
267
 
@@ -269,7 +271,13 @@ class AgentManager:
269
271
  # Get result
270
272
  result = parser.get_result()
271
273
  if result is None:
272
- raise RuntimeError("Parser failed to produce a result")
274
+ return Action(
275
+ thought="",
276
+ name="__parse_error__",
277
+ arguments={},
278
+ observation="",
279
+ tool_error="LLM response could not be parsed (streaming)",
280
+ )
273
281
 
274
282
  return result
275
283
 
@@ -281,6 +289,7 @@ class AgentManager:
281
289
  variables=variables,
282
290
  streaming=False
283
291
  )
292
+ self._last_prompt_result = prompt_result
284
293
  if usage:
285
294
  usage.track(prompt_result)
286
295
  response_text = prompt_result.text
@@ -294,12 +303,19 @@ class AgentManager:
294
303
  except ValueError as e:
295
304
  logger.error(f"Failed to parse response: {e}")
296
305
  logger.error(f"Response was: {response_text}")
297
- raise RuntimeError(f"Failed to parse agent response: {e}")
306
+ return Action(
307
+ thought="",
308
+ name="__parse_error__",
309
+ arguments={},
310
+ observation="",
311
+ tool_error=f"LLM parse error: {e}",
312
+ )
298
313
 
299
314
  async def react(self, question, history, think, observe, context,
300
315
  streaming=False, answer=None, on_action=None,
301
316
  usage=None):
302
317
 
318
+ t0 = time.monotonic()
303
319
  act = await self.reason(
304
320
  question = question,
305
321
  history = history,
@@ -310,6 +326,12 @@ class AgentManager:
310
326
  answer = answer,
311
327
  usage = usage,
312
328
  )
329
+ act.llm_duration_ms = int((time.monotonic() - t0) * 1000)
330
+ pr = getattr(self, '_last_prompt_result', None)
331
+ if pr:
332
+ act.in_token = pr.in_token
333
+ act.out_token = pr.out_token
334
+ act.llm_model = pr.model
313
335
 
314
336
  if isinstance(act, Final):
315
337
 
@@ -328,24 +350,43 @@ class AgentManager:
328
350
 
329
351
  logger.debug(f"ACTION: {act.name}")
330
352
 
353
+ # Notify caller before tool execution (for provenance)
354
+ if on_action:
355
+ await on_action(act)
356
+
357
+ # Handle parse errors — skip tool execution
358
+ if act.name == "__parse_error__":
359
+ resp = f"Error: {act.tool_error}"
360
+ act.tool_duration_ms = 0
361
+ await observe(resp, is_final=True)
362
+ act.observation = resp
363
+ return act
364
+
331
365
  if act.name in self.tools:
332
366
  action = self.tools[act.name]
333
367
  else:
334
368
  raise RuntimeError(f"No action for {act.name}!")
335
369
 
336
- # Notify caller before tool execution (for provenance)
337
- if on_action:
338
- await on_action(act)
370
+ t0 = time.monotonic()
371
+ try:
372
+ resp = await action.implementation(context).invoke(
373
+ **act.arguments
374
+ )
339
375
 
340
- resp = await action.implementation(context).invoke(
341
- **act.arguments
342
- )
376
+ if isinstance(resp, str):
377
+ resp = resp.strip()
378
+ else:
379
+ resp = str(resp)
380
+ resp = resp.strip()
343
381
 
344
- if isinstance(resp, str):
345
- resp = resp.strip()
346
- else:
347
- resp = str(resp)
348
- resp = resp.strip()
382
+ act.tool_error = None
383
+
384
+ except Exception as e:
385
+ logger.error(f"Tool execution error ({act.name}): {e}")
386
+ resp = f"Error: {e}"
387
+ act.tool_error = str(e)
388
+
389
+ act.tool_duration_ms = int((time.monotonic() - t0) * 1000)
349
390
 
350
391
  await observe(resp, is_final=True)
351
392