orchestrator-core 4.6.1__tar.gz → 4.6.3__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 (391) hide show
  1. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/PKG-INFO +16 -15
  2. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/__init__.py +1 -1
  3. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/api/api_v1/endpoints/processes.py +4 -1
  4. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/api/api_v1/endpoints/search.py +44 -34
  5. orchestrator_core-4.6.1/orchestrator/search/retrieval/utils.py → orchestrator_core-4.6.3/orchestrator/cli/search/display.py +4 -29
  6. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/search/search_explore.py +22 -24
  7. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/search/speedtest.py +11 -9
  8. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/db/models.py +6 -6
  9. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/resolvers/helpers.py +15 -0
  10. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/resolvers/process.py +5 -3
  11. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/resolvers/product.py +3 -2
  12. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/resolvers/product_block.py +3 -2
  13. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/resolvers/resource_type.py +3 -2
  14. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/resolvers/scheduled_tasks.py +3 -1
  15. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/resolvers/settings.py +2 -0
  16. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/resolvers/subscription.py +5 -3
  17. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/resolvers/version.py +2 -0
  18. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/resolvers/workflow.py +3 -2
  19. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/schemas/process.py +3 -3
  20. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/log_config.py +2 -0
  21. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/schemas/search.py +1 -1
  22. orchestrator_core-4.6.3/orchestrator/schemas/search_requests.py +59 -0
  23. orchestrator_core-4.6.3/orchestrator/search/agent/handlers.py +129 -0
  24. orchestrator_core-4.6.3/orchestrator/search/agent/prompts.py +147 -0
  25. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/search/agent/state.py +9 -24
  26. orchestrator_core-4.6.3/orchestrator/search/agent/tools.py +476 -0
  27. orchestrator_core-4.6.3/orchestrator/search/agent/validation.py +80 -0
  28. {orchestrator_core-4.6.1/orchestrator/search/retrieval → orchestrator_core-4.6.3/orchestrator/search/aggregations}/__init__.py +18 -3
  29. orchestrator_core-4.6.3/orchestrator/search/aggregations/base.py +201 -0
  30. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/search/core/types.py +3 -2
  31. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/search/filters/__init__.py +4 -0
  32. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/search/filters/definitions.py +22 -1
  33. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/search/filters/numeric_filter.py +3 -3
  34. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/search/llm_migration.py +2 -1
  35. orchestrator_core-4.6.3/orchestrator/search/query/__init__.py +90 -0
  36. orchestrator_core-4.6.3/orchestrator/search/query/builder.py +285 -0
  37. orchestrator_core-4.6.3/orchestrator/search/query/engine.py +162 -0
  38. {orchestrator_core-4.6.1/orchestrator/search/retrieval → orchestrator_core-4.6.3/orchestrator/search/query}/exceptions.py +38 -7
  39. orchestrator_core-4.6.3/orchestrator/search/query/mixins.py +95 -0
  40. orchestrator_core-4.6.3/orchestrator/search/query/queries.py +129 -0
  41. orchestrator_core-4.6.3/orchestrator/search/query/results.py +252 -0
  42. orchestrator_core-4.6.1/orchestrator/search/retrieval/query_state.py → orchestrator_core-4.6.3/orchestrator/search/query/state.py +31 -11
  43. {orchestrator_core-4.6.1/orchestrator/search/retrieval → orchestrator_core-4.6.3/orchestrator/search/query}/validation.py +58 -1
  44. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/search/retrieval/pagination.py +7 -8
  45. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/search/retrieval/retrievers/base.py +9 -9
  46. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/workflows/translations/en-GB.json +1 -0
  47. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/pyproject.toml +17 -16
  48. orchestrator_core-4.6.1/orchestrator/search/agent/prompts.py +0 -126
  49. orchestrator_core-4.6.1/orchestrator/search/agent/tools.py +0 -397
  50. orchestrator_core-4.6.1/orchestrator/search/retrieval/builder.py +0 -127
  51. orchestrator_core-4.6.1/orchestrator/search/retrieval/engine.py +0 -197
  52. orchestrator_core-4.6.1/orchestrator/search/schemas/parameters.py +0 -133
  53. orchestrator_core-4.6.1/orchestrator/search/schemas/results.py +0 -80
  54. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/LICENSE +0 -0
  55. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/README.md +0 -0
  56. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/agentic_app.py +0 -0
  57. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/api/__init__.py +0 -0
  58. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/api/api_v1/__init__.py +0 -0
  59. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/api/api_v1/api.py +0 -0
  60. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/api/api_v1/endpoints/__init__.py +0 -0
  61. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/api/api_v1/endpoints/agent.py +0 -0
  62. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/api/api_v1/endpoints/health.py +0 -0
  63. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/api/api_v1/endpoints/product_blocks.py +0 -0
  64. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/api/api_v1/endpoints/products.py +0 -0
  65. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/api/api_v1/endpoints/resource_types.py +0 -0
  66. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/api/api_v1/endpoints/settings.py +0 -0
  67. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/api/api_v1/endpoints/subscription_customer_descriptions.py +0 -0
  68. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/api/api_v1/endpoints/subscriptions.py +0 -0
  69. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/api/api_v1/endpoints/translations.py +0 -0
  70. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/api/api_v1/endpoints/user.py +0 -0
  71. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/api/api_v1/endpoints/workflows.py +0 -0
  72. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/api/api_v1/endpoints/ws.py +0 -0
  73. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/api/error_handling.py +0 -0
  74. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/api/helpers.py +0 -0
  75. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/api/models.py +0 -0
  76. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/app.py +0 -0
  77. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/__init__.py +0 -0
  78. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/database.py +0 -0
  79. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/domain_gen_helpers/__init__.py +0 -0
  80. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/domain_gen_helpers/fixed_input_helpers.py +0 -0
  81. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/domain_gen_helpers/helpers.py +0 -0
  82. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/domain_gen_helpers/product_block_helpers.py +0 -0
  83. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/domain_gen_helpers/product_helpers.py +0 -0
  84. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/domain_gen_helpers/resource_type_helpers.py +0 -0
  85. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/domain_gen_helpers/types.py +0 -0
  86. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generate.py +0 -0
  87. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/__init__.py +0 -0
  88. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/custom_templates/README +0 -0
  89. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/custom_templates/additional_create_imports.j2 +0 -0
  90. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/custom_templates/additional_create_input_fields.j2 +0 -0
  91. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/custom_templates/additional_create_steps.j2 +0 -0
  92. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/custom_templates/additional_modify_imports.j2 +0 -0
  93. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/custom_templates/additional_modify_input_fields.j2 +0 -0
  94. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/custom_templates/additional_modify_steps.j2 +0 -0
  95. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/custom_templates/additional_terminate_imports.j2 +0 -0
  96. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/custom_templates/additional_terminate_input_fields.j2 +0 -0
  97. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/custom_templates/additional_terminate_steps.j2 +0 -0
  98. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/generator/__init__.py +0 -0
  99. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/generator/enums.py +0 -0
  100. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/generator/helpers.py +0 -0
  101. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/generator/migration.py +0 -0
  102. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/generator/product.py +0 -0
  103. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/generator/product_block.py +0 -0
  104. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/generator/settings.py +0 -0
  105. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/generator/translations.py +0 -0
  106. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/generator/unittest.py +0 -0
  107. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/generator/validations.py +0 -0
  108. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/generator/workflow.py +0 -0
  109. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/products/workshop/circuit.yaml +0 -0
  110. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/products/workshop/node.yaml +0 -0
  111. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/products/workshop/user.yaml +0 -0
  112. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/products/workshop/user_group.yaml +0 -0
  113. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/templates/additional_create_imports.j2 +0 -0
  114. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/templates/additional_create_steps.j2 +0 -0
  115. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/templates/additional_modify_imports.j2 +0 -0
  116. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/templates/additional_modify_steps.j2 +0 -0
  117. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/templates/additional_terminate_steps.j2 +0 -0
  118. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/templates/constrained_int_definitions.j2 +0 -0
  119. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/templates/create_data_head.j2 +0 -0
  120. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/templates/create_product.j2 +0 -0
  121. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/templates/enums.j2 +0 -0
  122. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/templates/lazy_workflow_instance.j2 +0 -0
  123. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/templates/list_definitions.j2 +0 -0
  124. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/templates/macros.j2 +0 -0
  125. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/templates/modify_product.j2 +0 -0
  126. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/templates/new_product_migration.j2 +0 -0
  127. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/templates/product.j2 +0 -0
  128. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/templates/product_block.j2 +0 -0
  129. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/templates/shared_forms.j2 +0 -0
  130. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/templates/shared_workflows.j2 +0 -0
  131. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/templates/subscription_model_registry.j2 +0 -0
  132. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/templates/terminate_product.j2 +0 -0
  133. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/templates/test_create_workflow.j2 +0 -0
  134. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/templates/test_modify_workflow.j2 +0 -0
  135. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/templates/test_product_type.j2 +0 -0
  136. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/templates/test_terminate_workflow.j2 +0 -0
  137. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/templates/test_validate_workflow.j2 +0 -0
  138. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/generator/templates/validate_product.j2 +0 -0
  139. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/helpers/__init__.py +0 -0
  140. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/helpers/input_helpers.py +0 -0
  141. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/helpers/print_helpers.py +0 -0
  142. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/main.py +0 -0
  143. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/migrate_domain_models.py +0 -0
  144. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/migrate_tasks.py +0 -0
  145. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/migrate_workflows.py +0 -0
  146. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/migration_helpers.py +0 -0
  147. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/scheduler.py +0 -0
  148. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/search/__init__.py +0 -0
  149. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/search/index_llm.py +0 -0
  150. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/cli/search/resize_embedding.py +0 -0
  151. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/config/__init__.py +0 -0
  152. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/config/assignee.py +0 -0
  153. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/db/__init__.py +0 -0
  154. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/db/database.py +0 -0
  155. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/db/filters/__init__.py +0 -0
  156. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/db/filters/filters.py +0 -0
  157. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/db/filters/process.py +0 -0
  158. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/db/filters/product.py +0 -0
  159. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/db/filters/product_block.py +0 -0
  160. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/db/filters/resource_type.py +0 -0
  161. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/db/filters/search_filters/__init__.py +0 -0
  162. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/db/filters/search_filters/inferred_filter.py +0 -0
  163. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/db/filters/subscription.py +0 -0
  164. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/db/filters/workflow.py +0 -0
  165. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/db/helpers.py +0 -0
  166. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/db/listeners.py +0 -0
  167. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/db/loaders.py +0 -0
  168. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/db/queries/__init__.py +0 -0
  169. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/db/queries/subscription.py +0 -0
  170. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/db/queries/subscription_instance.py +0 -0
  171. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/db/range/__init__.py +0 -0
  172. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/db/range/range.py +0 -0
  173. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/db/sorting/__init__.py +0 -0
  174. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/db/sorting/process.py +0 -0
  175. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/db/sorting/product.py +0 -0
  176. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/db/sorting/product_block.py +0 -0
  177. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/db/sorting/resource_type.py +0 -0
  178. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/db/sorting/sorting.py +0 -0
  179. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/db/sorting/subscription.py +0 -0
  180. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/db/sorting/workflow.py +0 -0
  181. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/devtools/__init__.py +0 -0
  182. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/devtools/populator.py +0 -0
  183. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/devtools/scripts/__init__.py +0 -0
  184. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/devtools/scripts/migrate_20.py +0 -0
  185. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/devtools/scripts/migrate_30.py +0 -0
  186. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/devtools/scripts/shared.py +0 -0
  187. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/distlock/__init__.py +0 -0
  188. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/distlock/distlock_manager.py +0 -0
  189. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/distlock/managers/__init__.py +0 -0
  190. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/distlock/managers/memory_distlock_manager.py +0 -0
  191. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/distlock/managers/redis_distlock_manager.py +0 -0
  192. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/domain/__init__.py +0 -0
  193. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/domain/base.py +0 -0
  194. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/domain/context_cache.py +0 -0
  195. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/domain/customer_description.py +0 -0
  196. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/domain/helpers.py +0 -0
  197. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/domain/lifecycle.py +0 -0
  198. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/domain/subscription_instance_transform.py +0 -0
  199. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/exception_handlers.py +0 -0
  200. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/forms/__init__.py +0 -0
  201. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/forms/validators/__init__.py +0 -0
  202. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/forms/validators/customer_contact_list.py +0 -0
  203. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/forms/validators/customer_id.py +0 -0
  204. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/forms/validators/display_subscription.py +0 -0
  205. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/forms/validators/network_type_validators.py +0 -0
  206. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/forms/validators/product_id.py +0 -0
  207. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/__init__.py +0 -0
  208. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/autoregistration.py +0 -0
  209. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/extensions/__init__.py +0 -0
  210. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/extensions/model_cache.py +0 -0
  211. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/extensions/stats.py +0 -0
  212. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/loaders/__init__.py +0 -0
  213. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/loaders/subscriptions.py +0 -0
  214. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/mutations/customer_description.py +0 -0
  215. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/mutations/start_process.py +0 -0
  216. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/pagination.py +0 -0
  217. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/resolvers/__init__.py +0 -0
  218. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/resolvers/customer.py +0 -0
  219. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/schema.py +0 -0
  220. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/schemas/__init__.py +0 -0
  221. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/schemas/customer.py +0 -0
  222. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/schemas/customer_description.py +0 -0
  223. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/schemas/errors.py +0 -0
  224. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/schemas/fixed_input.py +0 -0
  225. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/schemas/helpers.py +0 -0
  226. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/schemas/product.py +0 -0
  227. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/schemas/product_block.py +0 -0
  228. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/schemas/resource_type.py +0 -0
  229. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/schemas/scheduled_task.py +0 -0
  230. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/schemas/settings.py +0 -0
  231. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/schemas/strawberry_pydantic_patch.py +0 -0
  232. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/schemas/subscription.py +0 -0
  233. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/schemas/version.py +0 -0
  234. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/schemas/workflow.py +0 -0
  235. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/types.py +0 -0
  236. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/utils/__init__.py +0 -0
  237. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/utils/create_resolver_error_handler.py +0 -0
  238. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/utils/get_query_loaders.py +0 -0
  239. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/utils/get_selected_fields.py +0 -0
  240. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/utils/get_selected_paths.py +0 -0
  241. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/utils/get_subscription_product_blocks.py +0 -0
  242. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/utils/is_query_detailed.py +0 -0
  243. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/utils/override_class.py +0 -0
  244. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/graphql/utils/to_graphql_result_page.py +0 -0
  245. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/llm_settings.py +0 -0
  246. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/metrics/__init__.py +0 -0
  247. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/metrics/engine.py +0 -0
  248. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/metrics/init.py +0 -0
  249. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/metrics/processes.py +0 -0
  250. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/metrics/subscriptions.py +0 -0
  251. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/README +0 -0
  252. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/__init__.py +0 -0
  253. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/alembic.ini +0 -0
  254. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/env.py +0 -0
  255. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/helpers.py +0 -0
  256. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/script.py.mako +0 -0
  257. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/templates/alembic.ini.j2 +0 -0
  258. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/templates/env.py.j2 +0 -0
  259. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/templates/helpers.py.j2 +0 -0
  260. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/versions/schema/2020-10-19_3323bcb934e7_fix_tsv_triggers.py +0 -0
  261. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/versions/schema/2020-10-19_a76b9185b334_add_generic_workflows_to_core.py +0 -0
  262. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/versions/schema/2020-10-19_c112305b07d3_initial_schema_migration.py +0 -0
  263. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/versions/schema/2021-04-06_3c8b9185c221_add_validate_products_task.py +0 -0
  264. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/versions/schema/2021-07-01_6896a54e9483_add_product_block_relations.py +0 -0
  265. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/versions/schema/2021-11-17_19cdd3ab86f6_fix_parse_websearch.py +0 -0
  266. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/versions/schema/2022-02-16_bed6bc0b197a_rename_parent_and_child_block_relations.py +0 -0
  267. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/versions/schema/2023-03-06_e05bb1967eff_add_subscriptions_search_view.py +0 -0
  268. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/versions/schema/2023-05-25_b1970225392d_add_subscription_metadata_workflow.py +0 -0
  269. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/versions/schema/2023-06-28_a09ac125ea73_add_throttling_to_refresh_subscriptions.py +0 -0
  270. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/versions/schema/2023-06-28_a09ac125ea73_add_throttling_to_refresh_subscriptions.sql +0 -0
  271. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/versions/schema/2023-07-17_165303a20fb1_customer_id_to_varchar.py +0 -0
  272. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/versions/schema/2023-07-17_165303a20fb1_customer_id_to_varchar.sql +0 -0
  273. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/versions/schema/2023-09-25_da5c9f4cce1c_add_subscription_metadata_to_fulltext_.py +0 -0
  274. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/versions/schema/2023-09-25_da5c9f4cce1c_add_subscription_metadata_to_fulltext_.sql +0 -0
  275. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/versions/schema/2023-12-06_048219045729_add_workflow_id_to_processes_table.py +0 -0
  276. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/versions/schema/2024-09-27_460ec6748e37_add_uuid_search_workaround.py +0 -0
  277. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/versions/schema/2024-09-27_460ec6748e37_add_uuid_search_workaround.sql +0 -0
  278. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/versions/schema/2025-01-08_4c5859620539_add_version_column_to_subscription.py +0 -0
  279. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/versions/schema/2025-01-19_4fjdn13f83ga_add_validate_product_type_task.py +0 -0
  280. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/versions/schema/2025-02-12_bac6be6f2b4f_added_input_state_table.py +0 -0
  281. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/versions/schema/2025-02-20_68d14db1b8da_make_workflow_description_mandatory.py +0 -0
  282. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/versions/schema/2025-03-06_42b3d076a85b_subscription_instance_as_json_function.py +0 -0
  283. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/versions/schema/2025-03-06_42b3d076a85b_subscription_instance_as_json_function.sql +0 -0
  284. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/versions/schema/2025-04-09_fc5c993a4b4a_add_cascade_constraint_on_processes_.py +0 -0
  285. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/versions/schema/2025-05-08_161918133bec_add_is_task_to_workflow.py +0 -0
  286. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/versions/schema/2025-07-01_93fc5834c7e5_changed_timestamping_fields_in_process_steps.py +0 -0
  287. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/versions/schema/2025-07-04_4b58e336d1bf_deprecating_workflow_target_in_.py +0 -0
  288. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/migrations/versions/schema/2025-07-28_850dccac3b02_update_description_of_resume_workflows_.py +0 -0
  289. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/py.typed +0 -0
  290. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/schedules/__init__.py +0 -0
  291. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/schedules/resume_workflows.py +0 -0
  292. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/schedules/scheduler.py +0 -0
  293. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/schedules/scheduling.py +0 -0
  294. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/schedules/task_vacuum.py +0 -0
  295. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/schedules/validate_products.py +0 -0
  296. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/schedules/validate_subscriptions.py +0 -0
  297. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/schemas/__init__.py +0 -0
  298. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/schemas/base.py +0 -0
  299. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/schemas/engine_settings.py +0 -0
  300. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/schemas/fixed_input.py +0 -0
  301. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/schemas/problem_detail.py +0 -0
  302. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/schemas/process.py +0 -0
  303. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/schemas/product.py +0 -0
  304. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/schemas/product_block.py +0 -0
  305. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/schemas/resource_type.py +0 -0
  306. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/schemas/subscription.py +0 -0
  307. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/schemas/subscription_descriptions.py +0 -0
  308. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/schemas/workflow.py +0 -0
  309. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/search/__init__.py +0 -0
  310. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/search/agent/__init__.py +0 -0
  311. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/search/agent/agent.py +0 -0
  312. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/search/agent/json_patch.py +0 -0
  313. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/search/core/__init__.py +0 -0
  314. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/search/core/embedding.py +0 -0
  315. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/search/core/exceptions.py +0 -0
  316. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/search/core/validators.py +0 -0
  317. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/search/docs/index.md +0 -0
  318. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/search/docs/running_local_text_embedding_inference.md +0 -0
  319. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/search/filters/base.py +0 -0
  320. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/search/filters/date_filters.py +0 -0
  321. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/search/filters/ltree_filters.py +0 -0
  322. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/search/indexing/__init__.py +0 -0
  323. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/search/indexing/indexer.py +0 -0
  324. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/search/indexing/registry.py +0 -0
  325. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/search/indexing/tasks.py +0 -0
  326. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/search/indexing/traverse.py +0 -0
  327. {orchestrator_core-4.6.1/orchestrator/search → orchestrator_core-4.6.3/orchestrator/search/query}/export.py +0 -0
  328. {orchestrator_core-4.6.1/orchestrator/search/schemas → orchestrator_core-4.6.3/orchestrator/search/retrieval}/__init__.py +0 -0
  329. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/search/retrieval/retrievers/__init__.py +0 -0
  330. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/search/retrieval/retrievers/fuzzy.py +0 -0
  331. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/search/retrieval/retrievers/hybrid.py +0 -0
  332. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/search/retrieval/retrievers/semantic.py +0 -0
  333. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/search/retrieval/retrievers/structured.py +0 -0
  334. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/security.py +0 -0
  335. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/services/__init__.py +0 -0
  336. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/services/executors/__init__.py +0 -0
  337. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/services/executors/celery.py +0 -0
  338. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/services/executors/threadpool.py +0 -0
  339. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/services/fixed_inputs.py +0 -0
  340. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/services/input_state.py +0 -0
  341. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/services/process_broadcast_thread.py +0 -0
  342. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/services/processes.py +0 -0
  343. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/services/products.py +0 -0
  344. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/services/resource_types.py +0 -0
  345. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/services/settings.py +0 -0
  346. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/services/settings_env_variables.py +0 -0
  347. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/services/subscription_relations.py +0 -0
  348. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/services/subscriptions.py +0 -0
  349. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/services/tasks.py +0 -0
  350. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/services/translations.py +0 -0
  351. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/services/workflows.py +0 -0
  352. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/settings.py +0 -0
  353. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/targets.py +0 -0
  354. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/types.py +0 -0
  355. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/utils/__init__.py +0 -0
  356. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/utils/auth.py +0 -0
  357. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/utils/crypt.py +0 -0
  358. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/utils/datetime.py +0 -0
  359. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/utils/deprecation_logger.py +0 -0
  360. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/utils/docs.py +0 -0
  361. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/utils/enrich_process.py +0 -0
  362. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/utils/errors.py +0 -0
  363. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/utils/expose_settings.py +0 -0
  364. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/utils/fixed_inputs.py +0 -0
  365. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/utils/functional.py +0 -0
  366. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/utils/get_subscription_dict.py +0 -0
  367. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/utils/get_updated_properties.py +0 -0
  368. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/utils/helpers.py +0 -0
  369. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/utils/json.py +0 -0
  370. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/utils/redis.py +0 -0
  371. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/utils/redis_client.py +0 -0
  372. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/utils/search_query.py +0 -0
  373. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/utils/state.py +0 -0
  374. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/utils/strings.py +0 -0
  375. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/utils/validate_data_version.py +0 -0
  376. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/version.py +0 -0
  377. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/websocket/__init__.py +0 -0
  378. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/websocket/managers/broadcast_websocket_manager.py +0 -0
  379. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/websocket/managers/memory_websocket_manager.py +0 -0
  380. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/websocket/websocket_manager.py +0 -0
  381. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/workflow.py +0 -0
  382. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/workflows/__init__.py +0 -0
  383. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/workflows/modify_note.py +0 -0
  384. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/workflows/removed_workflow.py +0 -0
  385. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/workflows/steps.py +0 -0
  386. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/workflows/tasks/__init__.py +0 -0
  387. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/workflows/tasks/cleanup_tasks_log.py +0 -0
  388. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/workflows/tasks/resume_workflows.py +0 -0
  389. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/workflows/tasks/validate_product_type.py +0 -0
  390. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/workflows/tasks/validate_products.py +0 -0
  391. {orchestrator_core-4.6.1 → orchestrator_core-4.6.3}/orchestrator/workflows/utils.py +0 -0
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orchestrator-core
3
- Version: 4.6.1
3
+ Version: 4.6.3
4
4
  Summary: This is the orchestrator workflow engine.
5
5
  Author-email: SURF <automation-beheer@surf.nl>
6
- Requires-Python: >=3.11,<3.14
6
+ Requires-Python: >=3.11,<3.15
7
7
  Description-Content-Type: text/markdown
8
8
  License-Expression: Apache-2.0
9
9
  Classifier: Development Status :: 5 - Production/Stable
@@ -20,6 +20,7 @@ Classifier: Programming Language :: Python :: 3
20
20
  Classifier: Programming Language :: Python :: 3.11
21
21
  Classifier: Programming Language :: Python :: 3.12
22
22
  Classifier: Programming Language :: Python :: 3.13
23
+ Classifier: Programming Language :: Python :: 3.14
23
24
  Classifier: Programming Language :: Python
24
25
  Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
25
26
  Classifier: Topic :: Internet :: WWW/HTTP
@@ -30,40 +31,40 @@ Classifier: Topic :: Software Development :: Libraries
30
31
  Classifier: Topic :: Software Development
31
32
  Classifier: Typing :: Typed
32
33
  License-File: LICENSE
33
- Requires-Dist: alembic==1.16.1
34
+ Requires-Dist: alembic==1.17.2
34
35
  Requires-Dist: anyio>=3.7.0
35
36
  Requires-Dist: apscheduler>=3.11.0
36
37
  Requires-Dist: click==8.*
37
38
  Requires-Dist: deepmerge==2.0
38
39
  Requires-Dist: deprecated>=1.2.18
39
- Requires-Dist: fastapi~=0.115.14
40
+ Requires-Dist: fastapi~=0.121.1
40
41
  Requires-Dist: fastapi-etag==0.4.0
41
42
  Requires-Dist: itsdangerous>=2.2.0
42
43
  Requires-Dist: jinja2==3.1.6
43
- Requires-Dist: more-itertools~=10.7.0
44
+ Requires-Dist: more-itertools~=10.8.0
44
45
  Requires-Dist: nwa-stdlib~=1.10.3
45
46
  Requires-Dist: oauth2-lib>=2.5.0
46
- Requires-Dist: orjson==3.10.18
47
+ Requires-Dist: orjson==3.11.4
47
48
  Requires-Dist: pgvector>=0.4.1
48
- Requires-Dist: prometheus-client==0.22.1
49
- Requires-Dist: psycopg2-binary==2.9.10
49
+ Requires-Dist: prometheus-client==0.23.1
50
+ Requires-Dist: psycopg2-binary==2.9.11
50
51
  Requires-Dist: pydantic-forms>=1.4.0
51
- Requires-Dist: pydantic-settings~=2.9.1
52
- Requires-Dist: pydantic[email]~=2.11.7
53
- Requires-Dist: python-dateutil==2.8.2
54
- Requires-Dist: python-rapidjson>=1.18,<1.21
52
+ Requires-Dist: pydantic-settings~=2.12.0
53
+ Requires-Dist: pydantic[email]~=2.12.4
54
+ Requires-Dist: python-dateutil==2.9.0.post0
55
+ Requires-Dist: python-rapidjson>=1.22,<1.23
55
56
  Requires-Dist: pytz==2025.2
56
57
  Requires-Dist: redis==5.1.1
57
58
  Requires-Dist: semver==3.0.4
58
59
  Requires-Dist: sentry-sdk[fastapi]>=2.29.1
59
- Requires-Dist: sqlalchemy==2.0.41
60
+ Requires-Dist: sqlalchemy==2.0.44
60
61
  Requires-Dist: sqlalchemy-utils==0.41.2
61
- Requires-Dist: strawberry-graphql>=0.281.0
62
+ Requires-Dist: strawberry-graphql>=0.281.0,<0.285.0
62
63
  Requires-Dist: structlog>=25.4.0
63
64
  Requires-Dist: tabulate==0.9.0
64
65
  Requires-Dist: typer==0.15.4
65
66
  Requires-Dist: uvicorn[standard]~=0.34.0
66
- Requires-Dist: pydantic-ai-slim >=1.3.0 ; extra == "agent"
67
+ Requires-Dist: pydantic-ai-slim >=1.9.0 ; extra == "agent"
67
68
  Requires-Dist: ag-ui-protocol>=0.1.8 ; extra == "agent"
68
69
  Requires-Dist: litellm>=1.75.7 ; extra == "agent"
69
70
  Requires-Dist: celery~=5.5.1 ; extra == "celery"
@@ -13,7 +13,7 @@
13
13
 
14
14
  """This is the orchestrator workflow engine."""
15
15
 
16
- __version__ = "4.6.1"
16
+ __version__ = "4.6.3"
17
17
 
18
18
 
19
19
  from structlog import get_logger
@@ -101,7 +101,7 @@ def get_steps_to_evaluate_for_rbac(pstat: ProcessStat) -> StepList:
101
101
  return StepList(past_steps >> first(remaining_steps))
102
102
 
103
103
 
104
- def get_auth_callbacks(steps: StepList, workflow: Workflow) -> tuple[Authorizer | None, Authorizer | None]:
104
+ def get_auth_callbacks(steps: StepList, workflow: Workflow | None) -> tuple[Authorizer | None, Authorizer | None]:
105
105
  """Iterate over workflow and prior steps to determine correct authorization callbacks for the current step.
106
106
 
107
107
  It's safest to always iterate through the steps. We could track these callbacks statefully
@@ -112,6 +112,9 @@ def get_auth_callbacks(steps: StepList, workflow: Workflow) -> tuple[Authorizer
112
112
  - RESUME callback is explicit RESUME callback, else previous START/RESUME callback
113
113
  - RETRY callback is explicit RETRY, else explicit RESUME, else previous RETRY
114
114
  """
115
+ if not workflow:
116
+ return None, None
117
+
115
118
  # Default to workflow start callbacks
116
119
  auth_resume = workflow.authorize_callback
117
120
  # auth_retry defaults to the workflow start callback if not otherwise specified.
@@ -21,35 +21,32 @@ from orchestrator.schemas.search import (
21
21
  PathsResponse,
22
22
  SearchResultsSchema,
23
23
  )
24
+ from orchestrator.schemas.search_requests import SearchRequest
24
25
  from orchestrator.search.core.exceptions import InvalidCursorError, QueryStateNotFoundError
25
26
  from orchestrator.search.core.types import EntityType, UIType
26
- from orchestrator.search.filters.definitions import generate_definitions
27
- from orchestrator.search.retrieval import SearchQueryState, execute_search, execute_search_for_export
28
- from orchestrator.search.retrieval.builder import build_paths_query, create_path_autocomplete_lquery, process_path_rows
27
+ from orchestrator.search.filters.definitions import TypeDefinition, generate_definitions
28
+ from orchestrator.search.query import QueryState, engine
29
+ from orchestrator.search.query.builder import build_paths_query, create_path_autocomplete_lquery, process_path_rows
30
+ from orchestrator.search.query.queries import ExportQuery, SelectQuery
31
+ from orchestrator.search.query.results import SearchResult
32
+ from orchestrator.search.query.validation import is_lquery_syntactically_valid
29
33
  from orchestrator.search.retrieval.pagination import PageCursor, encode_next_page_cursor
30
- from orchestrator.search.retrieval.validation import is_lquery_syntactically_valid
31
- from orchestrator.search.schemas.parameters import (
32
- ProcessSearchParameters,
33
- ProductSearchParameters,
34
- SearchParameters,
35
- SubscriptionSearchParameters,
36
- WorkflowSearchParameters,
37
- )
38
- from orchestrator.search.schemas.results import SearchResult, TypeDefinition
39
34
 
40
35
  router = APIRouter()
41
36
  logger = structlog.get_logger(__name__)
42
37
 
43
38
 
44
39
  async def _perform_search_and_fetch(
45
- search_params: SearchParameters | None = None,
40
+ entity_type: EntityType | None = None,
41
+ request: SearchRequest | None = None,
46
42
  cursor: str | None = None,
47
43
  query_id: str | None = None,
48
44
  ) -> SearchResultsSchema[SearchResult]:
49
45
  """Execute search with optional pagination.
50
46
 
51
47
  Args:
52
- search_params: Search parameters for new search
48
+ entity_type: Entity type to search
49
+ request: Search request for new search
53
50
  cursor: Pagination cursor (loads saved query state)
54
51
  query_id: Saved query ID to retrieve and execute
55
52
 
@@ -58,27 +55,31 @@ async def _perform_search_and_fetch(
58
55
  """
59
56
  try:
60
57
  page_cursor: PageCursor | None = None
58
+ query: SelectQuery
61
59
 
62
60
  if cursor:
63
61
  page_cursor = PageCursor.decode(cursor)
64
- query_state = SearchQueryState.load_from_id(page_cursor.query_id)
62
+ query_state = QueryState.load_from_id(page_cursor.query_id, SelectQuery)
63
+ query = query_state.query
64
+
65
65
  elif query_id:
66
- query_state = SearchQueryState.load_from_id(query_id)
67
- elif search_params:
68
- query_state = SearchQueryState(parameters=search_params, query_embedding=None)
66
+ query_state = QueryState.load_from_id(query_id, SelectQuery)
67
+ query = query_state.query
68
+
69
+ elif request and entity_type:
70
+ query = request.to_query(entity_type)
71
+ query_state = QueryState(query=query, query_embedding=None)
69
72
  else:
70
73
  raise HTTPException(
71
74
  status_code=status.HTTP_400_BAD_REQUEST,
72
- detail="Either search_params, cursor, or query_id must be provided",
75
+ detail="Either (request + entity_type), cursor, or query_id must be provided",
73
76
  )
74
77
 
75
- search_response = await execute_search(
76
- query_state.parameters, db.session, page_cursor, query_state.query_embedding
77
- )
78
+ search_response = await engine.execute_search(query, db.session, page_cursor, query_state.query_embedding)
78
79
  if not search_response.results:
79
80
  return SearchResultsSchema(search_metadata=search_response.metadata)
80
81
 
81
- next_page_cursor = encode_next_page_cursor(search_response, page_cursor, query_state.parameters)
82
+ next_page_cursor = encode_next_page_cursor(search_response, page_cursor, query)
82
83
  has_next_page = next_page_cursor is not None
83
84
  page_info = PageInfoSchema(has_next_page=has_next_page, next_page_cursor=next_page_cursor)
84
85
 
@@ -98,34 +99,34 @@ async def _perform_search_and_fetch(
98
99
 
99
100
  @router.post("/subscriptions", response_model=SearchResultsSchema[SearchResult])
100
101
  async def search_subscriptions(
101
- search_params: SubscriptionSearchParameters,
102
+ request: SearchRequest,
102
103
  cursor: str | None = None,
103
104
  ) -> SearchResultsSchema[SearchResult]:
104
- return await _perform_search_and_fetch(search_params, cursor)
105
+ return await _perform_search_and_fetch(EntityType.SUBSCRIPTION, request, cursor)
105
106
 
106
107
 
107
108
  @router.post("/workflows", response_model=SearchResultsSchema[SearchResult])
108
109
  async def search_workflows(
109
- search_params: WorkflowSearchParameters,
110
+ request: SearchRequest,
110
111
  cursor: str | None = None,
111
112
  ) -> SearchResultsSchema[SearchResult]:
112
- return await _perform_search_and_fetch(search_params, cursor)
113
+ return await _perform_search_and_fetch(EntityType.WORKFLOW, request, cursor)
113
114
 
114
115
 
115
116
  @router.post("/products", response_model=SearchResultsSchema[SearchResult])
116
117
  async def search_products(
117
- search_params: ProductSearchParameters,
118
+ request: SearchRequest,
118
119
  cursor: str | None = None,
119
120
  ) -> SearchResultsSchema[SearchResult]:
120
- return await _perform_search_and_fetch(search_params, cursor)
121
+ return await _perform_search_and_fetch(EntityType.PRODUCT, request, cursor)
121
122
 
122
123
 
123
124
  @router.post("/processes", response_model=SearchResultsSchema[SearchResult])
124
125
  async def search_processes(
125
- search_params: ProcessSearchParameters,
126
+ request: SearchRequest,
126
127
  cursor: str | None = None,
127
128
  ) -> SearchResultsSchema[SearchResult]:
128
- return await _perform_search_and_fetch(search_params, cursor)
129
+ return await _perform_search_and_fetch(EntityType.PROCESS, request, cursor)
129
130
 
130
131
 
131
132
  @router.get(
@@ -191,7 +192,7 @@ async def export_by_query_id(query_id: str) -> ExportResponse:
191
192
  as flattened records suitable for CSV download.
192
193
 
193
194
  Args:
194
- query_id: Query UUID
195
+ query_id: QueryTypes UUID
195
196
 
196
197
  Returns:
197
198
  ExportResponse containing 'page' with an array of flattened entity records.
@@ -200,8 +201,17 @@ async def export_by_query_id(query_id: str) -> ExportResponse:
200
201
  HTTPException: 404 if query not found, 400 if invalid data
201
202
  """
202
203
  try:
203
- query_state = SearchQueryState.load_from_id(query_id)
204
- export_records = await execute_search_for_export(query_state, db.session)
204
+ # Load SelectQuery from the database (what gets saved during search)
205
+ query_state = QueryState.load_from_id(query_id, SelectQuery)
206
+
207
+ # Convert to ExportQuery with export-appropriate limit
208
+ export_query = ExportQuery(
209
+ entity_type=query_state.query.entity_type,
210
+ filters=query_state.query.filters,
211
+ query_text=query_state.query.query_text,
212
+ )
213
+
214
+ export_records = await engine.execute_export(export_query, db.session, query_state.query_embedding)
205
215
  return ExportResponse(page=export_records)
206
216
  except ValueError as e:
207
217
  raise HTTPException(status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, detail=str(e))
@@ -12,7 +12,6 @@
12
12
  # limitations under the License.
13
13
 
14
14
  import json
15
- import re
16
15
 
17
16
  import structlog
18
17
  from sqlalchemy import and_
@@ -22,37 +21,13 @@ from orchestrator.db.database import WrappedSession
22
21
  from orchestrator.db.models import AiSearchIndex
23
22
  from orchestrator.search.core.types import EntityType
24
23
  from orchestrator.search.indexing.registry import ENTITY_CONFIG_REGISTRY
25
- from orchestrator.search.schemas.parameters import BaseSearchParameters
26
- from orchestrator.search.schemas.results import SearchResult
24
+ from orchestrator.search.query.queries import BaseQuery
25
+ from orchestrator.search.query.results import SearchResult
27
26
 
28
27
  logger = structlog.get_logger(__name__)
29
28
 
30
29
 
31
- def generate_highlight_indices(text: str, term: str) -> list[tuple[int, int]]:
32
- """Finds all occurrences of individual words from the term, including both word boundary and substring matches."""
33
- if not text or not term:
34
- return []
35
-
36
- all_matches = []
37
- words = [w.strip() for w in term.split() if w.strip()]
38
-
39
- for word in words:
40
- # First find word boundary matches
41
- word_boundary_pattern = rf"\b{re.escape(word)}\b"
42
- word_matches = list(re.finditer(word_boundary_pattern, text, re.IGNORECASE))
43
- all_matches.extend([(m.start(), m.end()) for m in word_matches])
44
-
45
- # Then find all substring matches
46
- substring_pattern = re.escape(word)
47
- substring_matches = list(re.finditer(substring_pattern, text, re.IGNORECASE))
48
- all_matches.extend([(m.start(), m.end()) for m in substring_matches])
49
-
50
- return sorted(set(all_matches))
51
-
52
-
53
- def display_filtered_paths_only(
54
- results: list[SearchResult], search_params: BaseSearchParameters, db_session: WrappedSession
55
- ) -> None:
30
+ def display_filtered_paths_only(results: list[SearchResult], query: BaseQuery, db_session: WrappedSession) -> None:
56
31
  """Display only the paths that were searched for in the results."""
57
32
  if not results:
58
33
  logger.info("No results found.")
@@ -60,7 +35,7 @@ def display_filtered_paths_only(
60
35
 
61
36
  logger.info("--- Search Results ---")
62
37
 
63
- searched_paths = search_params.filters.get_all_paths() if search_params.filters else []
38
+ searched_paths = query.filters.get_all_paths() if query.filters else []
64
39
  if not searched_paths:
65
40
  return
66
41
 
@@ -4,13 +4,13 @@ import structlog
4
4
  import typer
5
5
  from pydantic import ValidationError
6
6
 
7
+ from orchestrator.cli.search.display import display_filtered_paths_only, display_results
7
8
  from orchestrator.db import db
8
9
  from orchestrator.search.core.types import EntityType, FilterOp, UIType
9
10
  from orchestrator.search.filters import EqualityFilter, FilterTree, LtreeFilter, PathFilter
10
- from orchestrator.search.retrieval import execute_search
11
- from orchestrator.search.retrieval.utils import display_filtered_paths_only, display_results
12
- from orchestrator.search.retrieval.validation import get_structured_filter_schema
13
- from orchestrator.search.schemas.parameters import BaseSearchParameters
11
+ from orchestrator.search.query import engine
12
+ from orchestrator.search.query.queries import SelectQuery
13
+ from orchestrator.search.query.validation import get_structured_filter_schema
14
14
 
15
15
  app = typer.Typer(help="Experiment with the subscription search indexes.")
16
16
 
@@ -31,16 +31,14 @@ def structured(path: str, value: str, entity_type: EntityType = EntityType.SUBSC
31
31
  ...
32
32
  """
33
33
  path_filter = PathFilter(path=path, condition=EqualityFilter(op=FilterOp.EQ, value=value), value_kind=UIType.STRING)
34
- search_params = BaseSearchParameters.create(
35
- entity_type=entity_type, filters=FilterTree.from_flat_and([path_filter]), limit=limit
36
- )
37
- search_response = asyncio.run(execute_search(search_params=search_params, db_session=db.session))
38
- display_filtered_paths_only(search_response.results, search_params, db.session)
34
+ query = SelectQuery(entity_type=entity_type, filters=FilterTree.from_flat_and([path_filter]), limit=limit)
35
+ search_response = asyncio.run(engine.execute_search(query=query, db_session=db.session))
36
+ display_filtered_paths_only(search_response.results, query, db.session)
39
37
  display_results(search_response.results, db.session, "Match")
40
38
 
41
39
 
42
40
  @app.command()
43
- def semantic(query: str, entity_type: EntityType = EntityType.SUBSCRIPTION, limit: int = 10) -> None:
41
+ def semantic(query_text: str, entity_type: EntityType = EntityType.SUBSCRIPTION, limit: int = 10) -> None:
44
42
  """Finds subscriptions that are conceptually most similar to the query text.
45
43
 
46
44
  Example:
@@ -52,8 +50,8 @@ def semantic(query: str, entity_type: EntityType = EntityType.SUBSCRIPTION, limi
52
50
  },
53
51
  ...
54
52
  """
55
- search_params = BaseSearchParameters.create(entity_type=entity_type, query=query, limit=limit)
56
- search_response = asyncio.run(execute_search(search_params=search_params, db_session=db.session))
53
+ query = SelectQuery(entity_type=entity_type, query_text=query_text, limit=limit)
54
+ search_response = asyncio.run(engine.execute_search(query=query, db_session=db.session))
57
55
  display_results(search_response.results, db.session, "Distance")
58
56
 
59
57
 
@@ -70,8 +68,8 @@ def fuzzy(term: str, entity_type: EntityType = EntityType.SUBSCRIPTION, limit: i
70
68
  },
71
69
  ...
72
70
  """
73
- search_params = BaseSearchParameters.create(entity_type=entity_type, query=term, limit=limit)
74
- search_response = asyncio.run(execute_search(search_params=search_params, db_session=db.session))
71
+ query = SelectQuery(entity_type=entity_type, query_text=term, limit=limit)
72
+ search_response = asyncio.run(engine.execute_search(query=query, db_session=db.session))
75
73
  display_results(search_response.results, db.session, "Similarity")
76
74
 
77
75
 
@@ -79,7 +77,7 @@ def fuzzy(term: str, entity_type: EntityType = EntityType.SUBSCRIPTION, limit: i
79
77
  def hierarchical(
80
78
  op: str = typer.Argument(..., help="The hierarchical operation to perform."),
81
79
  path: str = typer.Argument(..., help="The ltree path or lquery pattern for the operation."),
82
- query: str | None = typer.Option(None, "--query", "-f", help="An optional fuzzy term to rank the results."),
80
+ query_text: str | None = typer.Option(None, "--query", "-q", help="An optional fuzzy term to rank the results."),
83
81
  entity_type: EntityType = EntityType.SUBSCRIPTION,
84
82
  limit: int = 10,
85
83
  ) -> None:
@@ -96,23 +94,23 @@ def hierarchical(
96
94
 
97
95
  path_filter = PathFilter(path="ltree_hierarchical_filter", condition=condition, value_kind=UIType.STRING)
98
96
 
99
- search_params = BaseSearchParameters.create(
100
- entity_type=entity_type, filters=FilterTree.from_flat_and([path_filter]), query=query, limit=limit
97
+ query = SelectQuery(
98
+ entity_type=entity_type, filters=FilterTree.from_flat_and([path_filter]), query_text=query_text, limit=limit
101
99
  )
102
- search_response = asyncio.run(execute_search(search_params=search_params, db_session=db.session))
100
+ search_response = asyncio.run(engine.execute_search(query=query, db_session=db.session))
103
101
  display_results(search_response.results, db.session, "Hierarchical Score")
104
102
 
105
103
 
106
104
  @app.command()
107
- def hybrid(query: str, term: str, entity_type: EntityType = EntityType.SUBSCRIPTION, limit: int = 10) -> None:
105
+ def hybrid(query_text: str, term: str, entity_type: EntityType = EntityType.SUBSCRIPTION, limit: int = 10) -> None:
108
106
  """Performs a hybrid search, combining semantic and fuzzy matching.
109
107
 
110
108
  Example:
111
109
  dotenv run python main.py search hybrid "reptile store" "Kingswood"
112
110
  """
113
- search_params = BaseSearchParameters.create(entity_type=entity_type, query=query, limit=limit)
114
- logger.info("Executing Hybrid Search", query=query, term=term)
115
- search_response = asyncio.run(execute_search(search_params=search_params, db_session=db.session))
111
+ query = SelectQuery(entity_type=entity_type, query_text=query_text, limit=limit)
112
+ logger.info("Executing Hybrid Search", query_text=query_text, term=term)
113
+ search_response = asyncio.run(engine.execute_search(query=query, db_session=db.session))
116
114
  display_results(search_response.results, db.session, "Hybrid Score")
117
115
 
118
116
 
@@ -198,8 +196,8 @@ def nested_demo(entity_type: EntityType = EntityType.SUBSCRIPTION, limit: int =
198
196
  }
199
197
  )
200
198
 
201
- params = BaseSearchParameters.create(entity_type=entity_type, filters=tree, limit=limit)
202
- search_response = asyncio.run(execute_search(params, db.session))
199
+ query = SelectQuery(entity_type=entity_type, filters=tree, limit=limit)
200
+ search_response = asyncio.run(engine.execute_search(query=query, db_session=db.session))
203
201
 
204
202
  display_results(search_response.results, db.session, "Score")
205
203
 
@@ -12,8 +12,8 @@ from orchestrator.db import db
12
12
  from orchestrator.search.core.embedding import QueryEmbedder
13
13
  from orchestrator.search.core.types import EntityType
14
14
  from orchestrator.search.core.validators import is_uuid
15
- from orchestrator.search.retrieval.engine import execute_search
16
- from orchestrator.search.schemas.parameters import BaseSearchParameters
15
+ from orchestrator.search.query import engine
16
+ from orchestrator.search.query.queries import SelectQuery
17
17
 
18
18
  logger = structlog.get_logger(__name__)
19
19
  console = Console()
@@ -50,23 +50,25 @@ async def generate_embeddings_for_queries(queries: list[str]) -> dict[str, list[
50
50
  return embedding_lookup
51
51
 
52
52
 
53
- async def run_single_query(query: str, embedding_lookup: dict[str, list[float]]) -> dict[str, Any]:
54
- search_params = BaseSearchParameters(entity_type=EntityType.SUBSCRIPTION, query=query, limit=30)
53
+ async def run_single_query(query_text: str, embedding_lookup: dict[str, list[float]]) -> dict[str, Any]:
54
+ query = SelectQuery(entity_type=EntityType.SUBSCRIPTION, query_text=query_text, limit=30)
55
55
 
56
56
  query_embedding = None
57
57
 
58
- if is_uuid(query):
59
- logger.debug("Using fuzzy-only ranking for full UUID", query=query)
58
+ if is_uuid(query_text):
59
+ logger.debug("Using fuzzy-only ranking for full UUID", query_text=query_text)
60
60
  else:
61
- query_embedding = embedding_lookup[query]
61
+ query_embedding = embedding_lookup[query_text]
62
62
 
63
63
  with db.session as session:
64
64
  start_time = time.perf_counter()
65
- response = await execute_search(search_params, session, cursor=None, query_embedding=query_embedding)
65
+ response = await engine.execute_search(
66
+ query=query, db_session=session, cursor=None, query_embedding=query_embedding
67
+ )
66
68
  end_time = time.perf_counter()
67
69
 
68
70
  return {
69
- "query": query,
71
+ "query": query_text,
70
72
  "time": end_time - start_time,
71
73
  "results": len(response.results),
72
74
  "search_type": response.metadata.search_type if hasattr(response, "metadata") else "unknown",
@@ -60,7 +60,7 @@ from orchestrator.utils.datetime import nowtz
60
60
  from orchestrator.version import GIT_COMMIT_HASH
61
61
 
62
62
  if TYPE_CHECKING:
63
- from orchestrator.search.retrieval.query_state import SearchQueryState
63
+ from orchestrator.search.query.state import QueryState
64
64
 
65
65
  logger = structlog.get_logger(__name__)
66
66
 
@@ -707,7 +707,7 @@ class SearchQueryTable(BaseModel):
707
707
  )
708
708
  query_number = mapped_column(Integer, nullable=False)
709
709
 
710
- # Search parameters as JSONB (maps to BaseSearchParameters subclasses)
710
+ # Search parameters as JSONB (maps to BaseQuery subclasses)
711
711
  parameters = mapped_column(pg.JSONB, nullable=False)
712
712
 
713
713
  # Query embedding for semantic search (pgvector)
@@ -726,14 +726,14 @@ class SearchQueryTable(BaseModel):
726
726
  @classmethod
727
727
  def from_state(
728
728
  cls,
729
- state: "SearchQueryState",
729
+ state: "QueryState",
730
730
  run_id: "UUID | None" = None,
731
731
  query_number: int = 1,
732
732
  ) -> "SearchQueryTable":
733
- """Create a SearchQueryTable instance from a SearchQueryState.
733
+ """Create a SearchQueryTable instance from a QueryState.
734
734
 
735
735
  Args:
736
- state: The search query state with parameters and embedding
736
+ state: QueryState wrapping the query and embedding
737
737
  run_id: Optional agent run ID (NULL for regular API searches)
738
738
  query_number: Query number within the run (default=1)
739
739
 
@@ -743,7 +743,7 @@ class SearchQueryTable(BaseModel):
743
743
  return cls(
744
744
  run_id=run_id,
745
745
  query_number=query_number,
746
- parameters=state.parameters.model_dump(),
746
+ parameters=state.query.model_dump(),
747
747
  query_embedding=state.query_embedding,
748
748
  )
749
749
 
@@ -1,11 +1,17 @@
1
1
  from collections.abc import Sequence
2
+ from functools import wraps
3
+ from typing import Callable, Coroutine
2
4
 
5
+ import structlog
3
6
  from sqlalchemy import CompoundSelect, Select, select
4
7
  from sqlalchemy.orm.strategy_options import _AbstractLoad
8
+ from starlette.concurrency import run_in_threadpool
5
9
 
6
10
  from orchestrator.db import db
7
11
  from orchestrator.db.database import BaseModel
8
12
 
13
+ logger = structlog.get_logger(__name__)
14
+
9
15
 
10
16
  def rows_from_statement(
11
17
  stmt: Select | CompoundSelect,
@@ -19,3 +25,12 @@ def rows_from_statement(
19
25
  result = db.session.scalars(from_stmt)
20
26
  uresult = result.unique() if unique else result
21
27
  return uresult.all()
28
+
29
+
30
+ def make_async(f: Callable): # type: ignore
31
+ @wraps(f)
32
+ async def wrapper(*args, **kwargs) -> Coroutine: # type: ignore
33
+ logger.debug(f"**async, calling fn {f.__name__}")
34
+ return await run_in_threadpool(f, *args, **kwargs)
35
+
36
+ return wrapper
@@ -25,7 +25,7 @@ from orchestrator.db.range import apply_range_to_statement
25
25
  from orchestrator.db.sorting import Sort
26
26
  from orchestrator.db.sorting.process import process_sort_fields, sort_processes
27
27
  from orchestrator.graphql.pagination import Connection
28
- from orchestrator.graphql.resolvers.helpers import rows_from_statement
28
+ from orchestrator.graphql.resolvers.helpers import make_async, rows_from_statement
29
29
  from orchestrator.graphql.schemas.process import ProcessType
30
30
  from orchestrator.graphql.types import GraphqlFilter, GraphqlSort, OrchestratorInfo
31
31
  from orchestrator.graphql.utils import (
@@ -55,7 +55,8 @@ def _enrich_process(process: ProcessTable, with_details: bool = False) -> Proces
55
55
  return ProcessSchema(**process_data)
56
56
 
57
57
 
58
- async def resolve_process(info: OrchestratorInfo, process_id: UUID) -> ProcessType | None:
58
+ @make_async
59
+ def resolve_process(info: OrchestratorInfo, process_id: UUID) -> ProcessType | None:
59
60
  query_loaders = get_query_loaders_for_gql_fields(ProcessTable, info)
60
61
  stmt = select(ProcessTable).options(*query_loaders).where(ProcessTable.process_id == process_id)
61
62
  if process := db.session.scalar(stmt):
@@ -64,7 +65,8 @@ async def resolve_process(info: OrchestratorInfo, process_id: UUID) -> ProcessTy
64
65
  return None
65
66
 
66
67
 
67
- async def resolve_processes(
68
+ @make_async
69
+ def resolve_processes(
68
70
  info: OrchestratorInfo,
69
71
  filter_by: list[GraphqlFilter] | None = None,
70
72
  sort_by: list[GraphqlSort] | None = None,
@@ -9,7 +9,7 @@ from orchestrator.db.range.range import apply_range_to_statement
9
9
  from orchestrator.db.sorting import Sort
10
10
  from orchestrator.db.sorting.product import product_sort_fields, sort_products
11
11
  from orchestrator.graphql.pagination import Connection
12
- from orchestrator.graphql.resolvers.helpers import rows_from_statement
12
+ from orchestrator.graphql.resolvers.helpers import make_async, rows_from_statement
13
13
  from orchestrator.graphql.schemas.product import ProductType
14
14
  from orchestrator.graphql.types import GraphqlFilter, GraphqlSort, OrchestratorInfo
15
15
  from orchestrator.graphql.utils import create_resolver_error_handler, is_querying_page_data, to_graphql_result_page
@@ -19,7 +19,8 @@ from orchestrator.utils.search_query import create_sqlalchemy_select
19
19
  logger = structlog.get_logger(__name__)
20
20
 
21
21
 
22
- async def resolve_products(
22
+ @make_async
23
+ def resolve_products(
23
24
  info: OrchestratorInfo,
24
25
  filter_by: list[GraphqlFilter] | None = None,
25
26
  sort_by: list[GraphqlSort] | None = None,
@@ -13,7 +13,7 @@ from orchestrator.db.range.range import apply_range_to_statement
13
13
  from orchestrator.db.sorting import Sort
14
14
  from orchestrator.db.sorting.product_block import product_block_sort_fields, sort_product_blocks
15
15
  from orchestrator.graphql.pagination import Connection
16
- from orchestrator.graphql.resolvers.helpers import rows_from_statement
16
+ from orchestrator.graphql.resolvers.helpers import make_async, rows_from_statement
17
17
  from orchestrator.graphql.schemas.product_block import ProductBlock
18
18
  from orchestrator.graphql.types import GraphqlFilter, GraphqlSort, OrchestratorInfo
19
19
  from orchestrator.graphql.utils import create_resolver_error_handler, is_querying_page_data, to_graphql_result_page
@@ -23,7 +23,8 @@ from orchestrator.utils.search_query import create_sqlalchemy_select
23
23
  logger = structlog.get_logger(__name__)
24
24
 
25
25
 
26
- async def resolve_product_blocks(
26
+ @make_async
27
+ def resolve_product_blocks(
27
28
  info: OrchestratorInfo,
28
29
  filter_by: list[GraphqlFilter] | None = None,
29
30
  sort_by: list[GraphqlSort] | None = None,
@@ -13,7 +13,7 @@ from orchestrator.db.range import apply_range_to_statement
13
13
  from orchestrator.db.sorting import Sort
14
14
  from orchestrator.db.sorting.resource_type import resource_type_sort_fields, sort_resource_types
15
15
  from orchestrator.graphql.pagination import Connection
16
- from orchestrator.graphql.resolvers.helpers import rows_from_statement
16
+ from orchestrator.graphql.resolvers.helpers import make_async, rows_from_statement
17
17
  from orchestrator.graphql.schemas.resource_type import ResourceType
18
18
  from orchestrator.graphql.types import GraphqlFilter, GraphqlSort, OrchestratorInfo
19
19
  from orchestrator.graphql.utils import create_resolver_error_handler, is_querying_page_data, to_graphql_result_page
@@ -23,7 +23,8 @@ from orchestrator.utils.search_query import create_sqlalchemy_select
23
23
  logger = structlog.get_logger(__name__)
24
24
 
25
25
 
26
- async def resolve_resource_types(
26
+ @make_async
27
+ def resolve_resource_types(
27
28
  info: OrchestratorInfo,
28
29
  filter_by: list[GraphqlFilter] | None = None,
29
30
  sort_by: list[GraphqlSort] | None = None,