orchestrator-core 4.5.2__tar.gz → 4.6.0rc1__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 (385) hide show
  1. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/PKG-INFO +4 -4
  2. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/__init__.py +1 -1
  3. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/agentic_app.py +1 -21
  4. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/api/api_v1/api.py +5 -0
  5. orchestrator_core-4.6.0rc1/orchestrator/api/api_v1/endpoints/agent.py +50 -0
  6. orchestrator_core-4.6.0rc1/orchestrator/api/api_v1/endpoints/search.py +215 -0
  7. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/database.py +3 -0
  8. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generate.py +11 -4
  9. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/generator/migration.py +7 -3
  10. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/search/resize_embedding.py +28 -22
  11. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/search/speedtest.py +4 -6
  12. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/db/__init__.py +6 -0
  13. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/db/models.py +75 -0
  14. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/helpers.py +46 -38
  15. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/schedules/validate_products.py +1 -1
  16. orchestrator_core-4.6.0rc1/orchestrator/schemas/search.py +53 -0
  17. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/search/agent/__init__.py +2 -2
  18. orchestrator_core-4.6.0rc1/orchestrator/search/agent/agent.py +58 -0
  19. orchestrator_core-4.6.0rc1/orchestrator/search/agent/json_patch.py +51 -0
  20. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/search/agent/prompts.py +35 -9
  21. orchestrator_core-4.6.0rc1/orchestrator/search/agent/state.py +47 -0
  22. orchestrator_core-4.6.0rc1/orchestrator/search/agent/tools.py +397 -0
  23. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/search/core/exceptions.py +6 -0
  24. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/search/core/types.py +1 -0
  25. orchestrator_core-4.6.0rc1/orchestrator/search/export.py +199 -0
  26. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/search/indexing/indexer.py +13 -4
  27. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/search/indexing/registry.py +14 -1
  28. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/search/llm_migration.py +55 -0
  29. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/search/retrieval/__init__.py +3 -2
  30. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/search/retrieval/builder.py +5 -1
  31. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/search/retrieval/engine.py +66 -23
  32. orchestrator_core-4.6.0rc1/orchestrator/search/retrieval/pagination.py +86 -0
  33. orchestrator_core-4.6.0rc1/orchestrator/search/retrieval/query_state.py +61 -0
  34. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/search/retrieval/retrievers/base.py +26 -40
  35. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/search/retrieval/retrievers/fuzzy.py +10 -9
  36. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/search/retrieval/retrievers/hybrid.py +11 -8
  37. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/search/retrieval/retrievers/semantic.py +9 -8
  38. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/search/retrieval/retrievers/structured.py +6 -6
  39. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/search/schemas/parameters.py +17 -13
  40. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/search/schemas/results.py +4 -1
  41. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/settings.py +1 -0
  42. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/utils/auth.py +3 -2
  43. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/workflows/tasks/validate_product_type.py +3 -3
  44. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/pyproject.toml +4 -3
  45. orchestrator_core-4.5.2/orchestrator/api/api_v1/endpoints/search.py +0 -296
  46. orchestrator_core-4.5.2/orchestrator/schemas/search.py +0 -130
  47. orchestrator_core-4.5.2/orchestrator/search/agent/agent.py +0 -62
  48. orchestrator_core-4.5.2/orchestrator/search/agent/state.py +0 -21
  49. orchestrator_core-4.5.2/orchestrator/search/agent/tools.py +0 -258
  50. orchestrator_core-4.5.2/orchestrator/search/retrieval/pagination.py +0 -96
  51. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/LICENSE +0 -0
  52. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/README.md +0 -0
  53. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/api/__init__.py +0 -0
  54. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/api/api_v1/__init__.py +0 -0
  55. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/api/api_v1/endpoints/__init__.py +0 -0
  56. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/api/api_v1/endpoints/health.py +0 -0
  57. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/api/api_v1/endpoints/processes.py +0 -0
  58. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/api/api_v1/endpoints/product_blocks.py +0 -0
  59. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/api/api_v1/endpoints/products.py +0 -0
  60. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/api/api_v1/endpoints/resource_types.py +0 -0
  61. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/api/api_v1/endpoints/settings.py +0 -0
  62. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/api/api_v1/endpoints/subscription_customer_descriptions.py +0 -0
  63. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/api/api_v1/endpoints/subscriptions.py +0 -0
  64. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/api/api_v1/endpoints/translations.py +0 -0
  65. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/api/api_v1/endpoints/user.py +0 -0
  66. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/api/api_v1/endpoints/workflows.py +0 -0
  67. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/api/api_v1/endpoints/ws.py +0 -0
  68. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/api/error_handling.py +0 -0
  69. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/api/helpers.py +0 -0
  70. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/api/models.py +0 -0
  71. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/app.py +0 -0
  72. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/__init__.py +0 -0
  73. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/domain_gen_helpers/__init__.py +0 -0
  74. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/domain_gen_helpers/fixed_input_helpers.py +0 -0
  75. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/domain_gen_helpers/helpers.py +0 -0
  76. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/domain_gen_helpers/product_block_helpers.py +0 -0
  77. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/domain_gen_helpers/product_helpers.py +0 -0
  78. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/domain_gen_helpers/resource_type_helpers.py +0 -0
  79. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/domain_gen_helpers/types.py +0 -0
  80. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/__init__.py +0 -0
  81. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/custom_templates/README +0 -0
  82. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/custom_templates/additional_create_imports.j2 +0 -0
  83. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/custom_templates/additional_create_input_fields.j2 +0 -0
  84. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/custom_templates/additional_create_steps.j2 +0 -0
  85. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/custom_templates/additional_modify_imports.j2 +0 -0
  86. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/custom_templates/additional_modify_input_fields.j2 +0 -0
  87. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/custom_templates/additional_modify_steps.j2 +0 -0
  88. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/custom_templates/additional_terminate_imports.j2 +0 -0
  89. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/custom_templates/additional_terminate_input_fields.j2 +0 -0
  90. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/custom_templates/additional_terminate_steps.j2 +0 -0
  91. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/generator/__init__.py +0 -0
  92. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/generator/enums.py +0 -0
  93. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/generator/helpers.py +0 -0
  94. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/generator/product.py +0 -0
  95. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/generator/product_block.py +0 -0
  96. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/generator/settings.py +0 -0
  97. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/generator/translations.py +0 -0
  98. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/generator/unittest.py +0 -0
  99. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/generator/validations.py +0 -0
  100. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/generator/workflow.py +0 -0
  101. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/products/workshop/circuit.yaml +0 -0
  102. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/products/workshop/node.yaml +0 -0
  103. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/products/workshop/user.yaml +0 -0
  104. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/products/workshop/user_group.yaml +0 -0
  105. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/templates/additional_create_imports.j2 +0 -0
  106. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/templates/additional_create_steps.j2 +0 -0
  107. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/templates/additional_modify_imports.j2 +0 -0
  108. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/templates/additional_modify_steps.j2 +0 -0
  109. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/templates/additional_terminate_steps.j2 +0 -0
  110. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/templates/constrained_int_definitions.j2 +0 -0
  111. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/templates/create_data_head.j2 +0 -0
  112. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/templates/create_product.j2 +0 -0
  113. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/templates/enums.j2 +0 -0
  114. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/templates/lazy_workflow_instance.j2 +0 -0
  115. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/templates/list_definitions.j2 +0 -0
  116. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/templates/macros.j2 +0 -0
  117. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/templates/modify_product.j2 +0 -0
  118. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/templates/new_product_migration.j2 +0 -0
  119. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/templates/product.j2 +0 -0
  120. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/templates/product_block.j2 +0 -0
  121. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/templates/shared_forms.j2 +0 -0
  122. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/templates/shared_workflows.j2 +0 -0
  123. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/templates/subscription_model_registry.j2 +0 -0
  124. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/templates/terminate_product.j2 +0 -0
  125. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/templates/test_create_workflow.j2 +0 -0
  126. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/templates/test_modify_workflow.j2 +0 -0
  127. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/templates/test_product_type.j2 +0 -0
  128. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/templates/test_terminate_workflow.j2 +0 -0
  129. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/templates/test_validate_workflow.j2 +0 -0
  130. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/generator/templates/validate_product.j2 +0 -0
  131. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/helpers/__init__.py +0 -0
  132. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/helpers/input_helpers.py +0 -0
  133. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/helpers/print_helpers.py +0 -0
  134. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/main.py +0 -0
  135. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/migrate_domain_models.py +0 -0
  136. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/migrate_tasks.py +0 -0
  137. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/migrate_workflows.py +0 -0
  138. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/migration_helpers.py +0 -0
  139. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/scheduler.py +0 -0
  140. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/search/__init__.py +0 -0
  141. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/search/index_llm.py +0 -0
  142. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/cli/search/search_explore.py +0 -0
  143. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/config/__init__.py +0 -0
  144. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/config/assignee.py +0 -0
  145. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/db/database.py +0 -0
  146. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/db/filters/__init__.py +0 -0
  147. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/db/filters/filters.py +0 -0
  148. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/db/filters/process.py +0 -0
  149. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/db/filters/product.py +0 -0
  150. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/db/filters/product_block.py +0 -0
  151. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/db/filters/resource_type.py +0 -0
  152. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/db/filters/search_filters/__init__.py +0 -0
  153. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/db/filters/search_filters/inferred_filter.py +0 -0
  154. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/db/filters/subscription.py +0 -0
  155. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/db/filters/workflow.py +0 -0
  156. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/db/helpers.py +0 -0
  157. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/db/listeners.py +0 -0
  158. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/db/loaders.py +0 -0
  159. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/db/queries/__init__.py +0 -0
  160. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/db/queries/subscription.py +0 -0
  161. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/db/queries/subscription_instance.py +0 -0
  162. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/db/range/__init__.py +0 -0
  163. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/db/range/range.py +0 -0
  164. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/db/sorting/__init__.py +0 -0
  165. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/db/sorting/process.py +0 -0
  166. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/db/sorting/product.py +0 -0
  167. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/db/sorting/product_block.py +0 -0
  168. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/db/sorting/resource_type.py +0 -0
  169. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/db/sorting/sorting.py +0 -0
  170. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/db/sorting/subscription.py +0 -0
  171. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/db/sorting/workflow.py +0 -0
  172. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/devtools/__init__.py +0 -0
  173. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/devtools/populator.py +0 -0
  174. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/devtools/scripts/__init__.py +0 -0
  175. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/devtools/scripts/migrate_20.py +0 -0
  176. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/devtools/scripts/migrate_30.py +0 -0
  177. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/devtools/scripts/shared.py +0 -0
  178. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/distlock/__init__.py +0 -0
  179. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/distlock/distlock_manager.py +0 -0
  180. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/distlock/managers/__init__.py +0 -0
  181. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/distlock/managers/memory_distlock_manager.py +0 -0
  182. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/distlock/managers/redis_distlock_manager.py +0 -0
  183. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/domain/__init__.py +0 -0
  184. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/domain/base.py +0 -0
  185. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/domain/context_cache.py +0 -0
  186. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/domain/customer_description.py +0 -0
  187. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/domain/helpers.py +0 -0
  188. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/domain/lifecycle.py +0 -0
  189. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/domain/subscription_instance_transform.py +0 -0
  190. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/exception_handlers.py +0 -0
  191. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/forms/__init__.py +0 -0
  192. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/forms/validators/__init__.py +0 -0
  193. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/forms/validators/customer_contact_list.py +0 -0
  194. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/forms/validators/customer_id.py +0 -0
  195. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/forms/validators/display_subscription.py +0 -0
  196. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/forms/validators/network_type_validators.py +0 -0
  197. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/forms/validators/product_id.py +0 -0
  198. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/__init__.py +0 -0
  199. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/autoregistration.py +0 -0
  200. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/extensions/__init__.py +0 -0
  201. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/extensions/model_cache.py +0 -0
  202. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/extensions/stats.py +0 -0
  203. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/loaders/__init__.py +0 -0
  204. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/loaders/subscriptions.py +0 -0
  205. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/mutations/customer_description.py +0 -0
  206. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/mutations/start_process.py +0 -0
  207. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/pagination.py +0 -0
  208. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/resolvers/__init__.py +0 -0
  209. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/resolvers/customer.py +0 -0
  210. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/resolvers/helpers.py +0 -0
  211. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/resolvers/process.py +0 -0
  212. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/resolvers/product.py +0 -0
  213. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/resolvers/product_block.py +0 -0
  214. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/resolvers/resource_type.py +0 -0
  215. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/resolvers/scheduled_tasks.py +0 -0
  216. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/resolvers/settings.py +0 -0
  217. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/resolvers/subscription.py +0 -0
  218. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/resolvers/version.py +0 -0
  219. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/resolvers/workflow.py +0 -0
  220. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/schema.py +0 -0
  221. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/schemas/__init__.py +0 -0
  222. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/schemas/customer.py +0 -0
  223. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/schemas/customer_description.py +0 -0
  224. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/schemas/errors.py +0 -0
  225. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/schemas/fixed_input.py +0 -0
  226. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/schemas/helpers.py +0 -0
  227. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/schemas/process.py +0 -0
  228. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/schemas/product.py +0 -0
  229. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/schemas/product_block.py +0 -0
  230. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/schemas/resource_type.py +0 -0
  231. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/schemas/scheduled_task.py +0 -0
  232. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/schemas/settings.py +0 -0
  233. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/schemas/strawberry_pydantic_patch.py +0 -0
  234. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/schemas/subscription.py +0 -0
  235. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/schemas/version.py +0 -0
  236. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/schemas/workflow.py +0 -0
  237. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/types.py +0 -0
  238. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/utils/__init__.py +0 -0
  239. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/utils/create_resolver_error_handler.py +0 -0
  240. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/utils/get_query_loaders.py +0 -0
  241. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/utils/get_selected_fields.py +0 -0
  242. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/utils/get_selected_paths.py +0 -0
  243. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/utils/get_subscription_product_blocks.py +0 -0
  244. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/utils/is_query_detailed.py +0 -0
  245. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/utils/override_class.py +0 -0
  246. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/graphql/utils/to_graphql_result_page.py +0 -0
  247. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/llm_settings.py +0 -0
  248. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/log_config.py +0 -0
  249. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/metrics/__init__.py +0 -0
  250. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/metrics/engine.py +0 -0
  251. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/metrics/init.py +0 -0
  252. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/metrics/processes.py +0 -0
  253. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/metrics/subscriptions.py +0 -0
  254. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/README +0 -0
  255. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/__init__.py +0 -0
  256. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/alembic.ini +0 -0
  257. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/env.py +0 -0
  258. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/script.py.mako +0 -0
  259. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/templates/alembic.ini.j2 +0 -0
  260. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/templates/env.py.j2 +0 -0
  261. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/templates/helpers.py.j2 +0 -0
  262. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/versions/schema/2020-10-19_3323bcb934e7_fix_tsv_triggers.py +0 -0
  263. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/versions/schema/2020-10-19_a76b9185b334_add_generic_workflows_to_core.py +0 -0
  264. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/versions/schema/2020-10-19_c112305b07d3_initial_schema_migration.py +0 -0
  265. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/versions/schema/2021-04-06_3c8b9185c221_add_validate_products_task.py +0 -0
  266. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/versions/schema/2021-07-01_6896a54e9483_add_product_block_relations.py +0 -0
  267. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/versions/schema/2021-11-17_19cdd3ab86f6_fix_parse_websearch.py +0 -0
  268. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/versions/schema/2022-02-16_bed6bc0b197a_rename_parent_and_child_block_relations.py +0 -0
  269. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/versions/schema/2023-03-06_e05bb1967eff_add_subscriptions_search_view.py +0 -0
  270. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/versions/schema/2023-05-25_b1970225392d_add_subscription_metadata_workflow.py +0 -0
  271. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/versions/schema/2023-06-28_a09ac125ea73_add_throttling_to_refresh_subscriptions.py +0 -0
  272. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/versions/schema/2023-06-28_a09ac125ea73_add_throttling_to_refresh_subscriptions.sql +0 -0
  273. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/versions/schema/2023-07-17_165303a20fb1_customer_id_to_varchar.py +0 -0
  274. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/versions/schema/2023-07-17_165303a20fb1_customer_id_to_varchar.sql +0 -0
  275. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/versions/schema/2023-09-25_da5c9f4cce1c_add_subscription_metadata_to_fulltext_.py +0 -0
  276. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/versions/schema/2023-09-25_da5c9f4cce1c_add_subscription_metadata_to_fulltext_.sql +0 -0
  277. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/versions/schema/2023-12-06_048219045729_add_workflow_id_to_processes_table.py +0 -0
  278. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/versions/schema/2024-09-27_460ec6748e37_add_uuid_search_workaround.py +0 -0
  279. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/versions/schema/2024-09-27_460ec6748e37_add_uuid_search_workaround.sql +0 -0
  280. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/versions/schema/2025-01-08_4c5859620539_add_version_column_to_subscription.py +0 -0
  281. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/versions/schema/2025-01-19_4fjdn13f83ga_add_validate_product_type_task.py +0 -0
  282. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/versions/schema/2025-02-12_bac6be6f2b4f_added_input_state_table.py +0 -0
  283. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/versions/schema/2025-02-20_68d14db1b8da_make_workflow_description_mandatory.py +0 -0
  284. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/versions/schema/2025-03-06_42b3d076a85b_subscription_instance_as_json_function.py +0 -0
  285. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/versions/schema/2025-03-06_42b3d076a85b_subscription_instance_as_json_function.sql +0 -0
  286. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/versions/schema/2025-04-09_fc5c993a4b4a_add_cascade_constraint_on_processes_.py +0 -0
  287. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/versions/schema/2025-05-08_161918133bec_add_is_task_to_workflow.py +0 -0
  288. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/versions/schema/2025-07-01_93fc5834c7e5_changed_timestamping_fields_in_process_steps.py +0 -0
  289. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/versions/schema/2025-07-04_4b58e336d1bf_deprecating_workflow_target_in_.py +0 -0
  290. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/migrations/versions/schema/2025-07-28_850dccac3b02_update_description_of_resume_workflows_.py +0 -0
  291. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/py.typed +0 -0
  292. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/schedules/__init__.py +0 -0
  293. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/schedules/resume_workflows.py +0 -0
  294. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/schedules/scheduler.py +0 -0
  295. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/schedules/scheduling.py +0 -0
  296. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/schedules/task_vacuum.py +0 -0
  297. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/schedules/validate_subscriptions.py +0 -0
  298. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/schemas/__init__.py +0 -0
  299. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/schemas/base.py +0 -0
  300. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/schemas/engine_settings.py +0 -0
  301. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/schemas/fixed_input.py +0 -0
  302. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/schemas/problem_detail.py +0 -0
  303. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/schemas/process.py +0 -0
  304. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/schemas/product.py +0 -0
  305. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/schemas/product_block.py +0 -0
  306. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/schemas/resource_type.py +0 -0
  307. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/schemas/subscription.py +0 -0
  308. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/schemas/subscription_descriptions.py +0 -0
  309. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/schemas/workflow.py +0 -0
  310. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/search/__init__.py +0 -0
  311. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/search/core/__init__.py +0 -0
  312. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/search/core/embedding.py +0 -0
  313. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/search/core/validators.py +0 -0
  314. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/search/docs/index.md +0 -0
  315. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/search/docs/running_local_text_embedding_inference.md +0 -0
  316. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/search/filters/__init__.py +0 -0
  317. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/search/filters/base.py +0 -0
  318. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/search/filters/date_filters.py +0 -0
  319. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/search/filters/definitions.py +0 -0
  320. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/search/filters/ltree_filters.py +0 -0
  321. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/search/filters/numeric_filter.py +0 -0
  322. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/search/indexing/__init__.py +0 -0
  323. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/search/indexing/tasks.py +0 -0
  324. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/search/indexing/traverse.py +0 -0
  325. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/search/retrieval/exceptions.py +0 -0
  326. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/search/retrieval/retrievers/__init__.py +0 -0
  327. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/search/retrieval/utils.py +0 -0
  328. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/search/retrieval/validation.py +0 -0
  329. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/search/schemas/__init__.py +0 -0
  330. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/security.py +0 -0
  331. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/services/__init__.py +0 -0
  332. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/services/executors/__init__.py +0 -0
  333. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/services/executors/celery.py +0 -0
  334. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/services/executors/threadpool.py +0 -0
  335. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/services/fixed_inputs.py +0 -0
  336. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/services/input_state.py +0 -0
  337. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/services/process_broadcast_thread.py +0 -0
  338. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/services/processes.py +0 -0
  339. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/services/products.py +0 -0
  340. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/services/resource_types.py +0 -0
  341. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/services/settings.py +0 -0
  342. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/services/settings_env_variables.py +0 -0
  343. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/services/subscription_relations.py +0 -0
  344. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/services/subscriptions.py +0 -0
  345. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/services/tasks.py +0 -0
  346. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/services/translations.py +0 -0
  347. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/services/workflows.py +0 -0
  348. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/targets.py +0 -0
  349. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/types.py +0 -0
  350. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/utils/__init__.py +0 -0
  351. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/utils/crypt.py +0 -0
  352. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/utils/datetime.py +0 -0
  353. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/utils/deprecation_logger.py +0 -0
  354. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/utils/docs.py +0 -0
  355. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/utils/enrich_process.py +0 -0
  356. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/utils/errors.py +0 -0
  357. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/utils/expose_settings.py +0 -0
  358. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/utils/fixed_inputs.py +0 -0
  359. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/utils/functional.py +0 -0
  360. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/utils/get_subscription_dict.py +0 -0
  361. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/utils/get_updated_properties.py +0 -0
  362. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/utils/helpers.py +0 -0
  363. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/utils/json.py +0 -0
  364. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/utils/redis.py +0 -0
  365. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/utils/redis_client.py +0 -0
  366. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/utils/search_query.py +0 -0
  367. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/utils/state.py +0 -0
  368. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/utils/strings.py +0 -0
  369. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/utils/validate_data_version.py +0 -0
  370. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/version.py +0 -0
  371. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/websocket/__init__.py +0 -0
  372. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/websocket/managers/broadcast_websocket_manager.py +0 -0
  373. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/websocket/managers/memory_websocket_manager.py +0 -0
  374. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/websocket/websocket_manager.py +0 -0
  375. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/workflow.py +0 -0
  376. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/workflows/__init__.py +0 -0
  377. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/workflows/modify_note.py +0 -0
  378. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/workflows/removed_workflow.py +0 -0
  379. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/workflows/steps.py +0 -0
  380. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/workflows/tasks/__init__.py +0 -0
  381. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/workflows/tasks/cleanup_tasks_log.py +0 -0
  382. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/workflows/tasks/resume_workflows.py +0 -0
  383. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/workflows/tasks/validate_products.py +0 -0
  384. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/workflows/translations/en-GB.json +0 -0
  385. {orchestrator_core-4.5.2 → orchestrator_core-4.6.0rc1}/orchestrator/workflows/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orchestrator-core
3
- Version: 4.5.2
3
+ Version: 4.6.0rc1
4
4
  Summary: This is the orchestrator workflow engine.
5
5
  Author-email: SURF <automation-beheer@surf.nl>
6
6
  Requires-Python: >=3.11,<3.14
@@ -42,7 +42,7 @@ Requires-Dist: itsdangerous>=2.2.0
42
42
  Requires-Dist: jinja2==3.1.6
43
43
  Requires-Dist: more-itertools~=10.7.0
44
44
  Requires-Dist: nwa-stdlib~=1.9.2
45
- Requires-Dist: oauth2-lib>=2.4.1
45
+ Requires-Dist: oauth2-lib==2.4.2
46
46
  Requires-Dist: orjson==3.10.18
47
47
  Requires-Dist: pgvector>=0.4.1
48
48
  Requires-Dist: prometheus-client==0.22.1
@@ -55,7 +55,7 @@ Requires-Dist: python-rapidjson>=1.18,<1.21
55
55
  Requires-Dist: pytz==2025.2
56
56
  Requires-Dist: redis==5.1.1
57
57
  Requires-Dist: semver==3.0.4
58
- Requires-Dist: sentry-sdk[fastapi]~=2.29.1
58
+ Requires-Dist: sentry-sdk[fastapi]>=2.29.1
59
59
  Requires-Dist: sqlalchemy==2.0.41
60
60
  Requires-Dist: sqlalchemy-utils==0.41.2
61
61
  Requires-Dist: strawberry-graphql>=0.281.0
@@ -63,7 +63,7 @@ Requires-Dist: structlog>=25.4.0
63
63
  Requires-Dist: tabulate==0.9.0
64
64
  Requires-Dist: typer==0.15.4
65
65
  Requires-Dist: uvicorn[standard]~=0.34.0
66
- Requires-Dist: pydantic-ai-slim ==0.7.0 ; extra == "agent"
66
+ Requires-Dist: pydantic-ai-slim >=1.3.0 ; extra == "agent"
67
67
  Requires-Dist: ag-ui-protocol>=0.1.8 ; extra == "agent"
68
68
  Requires-Dist: litellm>=1.75.7 ; extra == "agent"
69
69
  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.5.2"
16
+ __version__ = "4.6.0rc1"
17
17
 
18
18
 
19
19
  from structlog import get_logger
@@ -27,7 +27,6 @@ from orchestrator.llm_settings import LLMSettings, llm_settings
27
27
 
28
28
  if TYPE_CHECKING:
29
29
  from pydantic_ai.models.openai import OpenAIModel
30
- from pydantic_ai.toolsets import FunctionToolset
31
30
 
32
31
  logger = get_logger(__name__)
33
32
 
@@ -38,19 +37,17 @@ class LLMOrchestratorCore(OrchestratorCore):
38
37
  *args: Any,
39
38
  llm_settings: LLMSettings = llm_settings,
40
39
  agent_model: "OpenAIModel | str | None" = None,
41
- agent_tools: "list[FunctionToolset] | None" = None,
42
40
  **kwargs: Any,
43
41
  ) -> None:
44
42
  """Initialize the `LLMOrchestratorCore` class.
45
43
 
46
44
  This class extends `OrchestratorCore` with LLM features (search and agent).
47
- It runs the search migration and mounts the agent endpoint based on feature flags.
45
+ It runs the search migration based on feature flags.
48
46
 
49
47
  Args:
50
48
  *args: All the normal arguments passed to the `OrchestratorCore` class.
51
49
  llm_settings: A class of settings for the LLM
52
50
  agent_model: Override the agent model (defaults to llm_settings.AGENT_MODEL)
53
- agent_tools: A list of tools that can be used by the agent
54
51
  **kwargs: Additional arguments passed to the `OrchestratorCore` class.
55
52
 
56
53
  Returns:
@@ -58,7 +55,6 @@ class LLMOrchestratorCore(OrchestratorCore):
58
55
  """
59
56
  self.llm_settings = llm_settings
60
57
  self.agent_model = agent_model or llm_settings.AGENT_MODEL
61
- self.agent_tools = agent_tools
62
58
 
63
59
  super().__init__(*args, **kwargs)
64
60
 
@@ -79,22 +75,6 @@ class LLMOrchestratorCore(OrchestratorCore):
79
75
  )
80
76
  raise
81
77
 
82
- # Mount agent endpoint if agent is enabled
83
- if self.llm_settings.AGENT_ENABLED:
84
- logger.info("Initializing agent features", model=self.agent_model)
85
- try:
86
- from orchestrator.search.agent import build_agent_router
87
-
88
- agent_app = build_agent_router(self.agent_model, self.agent_tools)
89
- self.mount("/agent", agent_app)
90
- except ImportError as e:
91
- logger.error(
92
- "Unable to initialize agent features. Please install agent dependencies: "
93
- "`pip install orchestrator-core[agent]`",
94
- error=str(e),
95
- )
96
- raise
97
-
98
78
 
99
79
  main_typer_app = typer.Typer()
100
80
  main_typer_app.add_typer(cli_app, name="orchestrator", help="The orchestrator CLI commands")
@@ -95,3 +95,8 @@ if llm_settings.SEARCH_ENABLED:
95
95
  api_router.include_router(
96
96
  search.router, prefix="/search", tags=["Core", "Search"], dependencies=[Depends(authorize)]
97
97
  )
98
+
99
+ if llm_settings.AGENT_ENABLED:
100
+ from orchestrator.api.api_v1.endpoints import agent
101
+
102
+ api_router.include_router(agent.router, prefix="/agent", tags=["Core", "Agent"], dependencies=[Depends(authorize)])
@@ -0,0 +1,50 @@
1
+ # Copyright 2019-2025 SURF, GÉANT.
2
+ # Licensed under the Apache License, Version 2.0 (the "License");
3
+ # you may not use this file except in compliance with the License.
4
+ # You may obtain a copy of the License at
5
+ #
6
+ # http://www.apache.org/licenses/LICENSE-2.0
7
+ #
8
+ # Unless required by applicable law or agreed to in writing, software
9
+ # distributed under the License is distributed on an "AS IS" BASIS,
10
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ # See the License for the specific language governing permissions and
12
+ # limitations under the License.
13
+
14
+ from functools import cache
15
+ from typing import Annotated
16
+
17
+ from fastapi import APIRouter, Depends, Request
18
+ from pydantic_ai.ag_ui import StateDeps, handle_ag_ui_request
19
+ from pydantic_ai.agent import Agent
20
+ from starlette.responses import Response
21
+ from structlog import get_logger
22
+
23
+ from orchestrator.llm_settings import llm_settings
24
+ from orchestrator.search.agent import build_agent_instance
25
+ from orchestrator.search.agent.state import SearchState
26
+
27
+ router = APIRouter()
28
+ logger = get_logger(__name__)
29
+
30
+
31
+ @cache
32
+ def get_agent() -> Agent[StateDeps[SearchState], str]:
33
+ """Dependency to provide the agent instance.
34
+
35
+ The agent is built once and cached for the lifetime of the application.
36
+ """
37
+ return build_agent_instance(llm_settings.AGENT_MODEL)
38
+
39
+
40
+ @router.post("/")
41
+ async def agent_conversation(
42
+ request: Request,
43
+ agent: Annotated[Agent[StateDeps[SearchState], str], Depends(get_agent)],
44
+ ) -> Response:
45
+ """Agent conversation endpoint using pydantic-ai ag_ui protocol.
46
+
47
+ This endpoint handles the interactive agent conversation for search.
48
+ """
49
+ initial_state = SearchState()
50
+ return await handle_ag_ui_request(agent, request, deps=StateDeps(initial_state))
@@ -0,0 +1,215 @@
1
+ # Copyright 2019-2025 SURF, GÉANT.
2
+ # Licensed under the Apache License, Version 2.0 (the "License");
3
+ # you may not use this file except in compliance with the License.
4
+ # You may obtain a copy of the License at
5
+ #
6
+ # http://www.apache.org/licenses/LICENSE-2.0
7
+ #
8
+ # Unless required by applicable law or agreed to in writing, software
9
+ # distributed under the License is distributed on an "AS IS" BASIS,
10
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ # See the License for the specific language governing permissions and
12
+ # limitations under the License.
13
+
14
+ import structlog
15
+ from fastapi import APIRouter, HTTPException, Query, status
16
+
17
+ from orchestrator.db import db
18
+ from orchestrator.schemas.search import (
19
+ ExportResponse,
20
+ PageInfoSchema,
21
+ PathsResponse,
22
+ SearchResultsSchema,
23
+ )
24
+ from orchestrator.search.core.exceptions import InvalidCursorError, QueryStateNotFoundError
25
+ 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
29
+ 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
+
40
+ router = APIRouter()
41
+ logger = structlog.get_logger(__name__)
42
+
43
+
44
+ async def _perform_search_and_fetch(
45
+ search_params: SearchParameters | None = None,
46
+ cursor: str | None = None,
47
+ query_id: str | None = None,
48
+ ) -> SearchResultsSchema[SearchResult]:
49
+ """Execute search with optional pagination.
50
+
51
+ Args:
52
+ search_params: Search parameters for new search
53
+ cursor: Pagination cursor (loads saved query state)
54
+ query_id: Saved query ID to retrieve and execute
55
+
56
+ Returns:
57
+ Search results with entity_id, score, and matching_field.
58
+ """
59
+ try:
60
+ page_cursor: PageCursor | None = None
61
+
62
+ if cursor:
63
+ page_cursor = PageCursor.decode(cursor)
64
+ query_state = SearchQueryState.load_from_id(page_cursor.query_id)
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)
69
+ else:
70
+ raise HTTPException(
71
+ status_code=status.HTTP_400_BAD_REQUEST,
72
+ detail="Either search_params, cursor, or query_id must be provided",
73
+ )
74
+
75
+ search_response = await execute_search(
76
+ query_state.parameters, db.session, page_cursor, query_state.query_embedding
77
+ )
78
+ if not search_response.results:
79
+ return SearchResultsSchema(search_metadata=search_response.metadata)
80
+
81
+ next_page_cursor = encode_next_page_cursor(search_response, page_cursor, query_state.parameters)
82
+ has_next_page = next_page_cursor is not None
83
+ page_info = PageInfoSchema(has_next_page=has_next_page, next_page_cursor=next_page_cursor)
84
+
85
+ return SearchResultsSchema(
86
+ data=search_response.results, page_info=page_info, search_metadata=search_response.metadata
87
+ )
88
+ except (InvalidCursorError, ValueError) as e:
89
+ raise HTTPException(status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, detail=str(e))
90
+ except QueryStateNotFoundError as e:
91
+ raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=str(e))
92
+ except Exception as e:
93
+ raise HTTPException(
94
+ status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
95
+ detail=f"Search failed: {str(e)}",
96
+ )
97
+
98
+
99
+ @router.post("/subscriptions", response_model=SearchResultsSchema[SearchResult])
100
+ async def search_subscriptions(
101
+ search_params: SubscriptionSearchParameters,
102
+ cursor: str | None = None,
103
+ ) -> SearchResultsSchema[SearchResult]:
104
+ return await _perform_search_and_fetch(search_params, cursor)
105
+
106
+
107
+ @router.post("/workflows", response_model=SearchResultsSchema[SearchResult])
108
+ async def search_workflows(
109
+ search_params: WorkflowSearchParameters,
110
+ cursor: str | None = None,
111
+ ) -> SearchResultsSchema[SearchResult]:
112
+ return await _perform_search_and_fetch(search_params, cursor)
113
+
114
+
115
+ @router.post("/products", response_model=SearchResultsSchema[SearchResult])
116
+ async def search_products(
117
+ search_params: ProductSearchParameters,
118
+ cursor: str | None = None,
119
+ ) -> SearchResultsSchema[SearchResult]:
120
+ return await _perform_search_and_fetch(search_params, cursor)
121
+
122
+
123
+ @router.post("/processes", response_model=SearchResultsSchema[SearchResult])
124
+ async def search_processes(
125
+ search_params: ProcessSearchParameters,
126
+ cursor: str | None = None,
127
+ ) -> SearchResultsSchema[SearchResult]:
128
+ return await _perform_search_and_fetch(search_params, cursor)
129
+
130
+
131
+ @router.get(
132
+ "/paths",
133
+ response_model=PathsResponse,
134
+ response_model_exclude_none=True,
135
+ )
136
+ async def list_paths(
137
+ prefix: str = Query("", min_length=0),
138
+ q: str | None = Query(None, description="Query for path suggestions"),
139
+ entity_type: EntityType = Query(EntityType.SUBSCRIPTION),
140
+ limit: int = Query(10, ge=1, le=10),
141
+ ) -> PathsResponse:
142
+
143
+ if prefix:
144
+ lquery_pattern = create_path_autocomplete_lquery(prefix)
145
+
146
+ if not is_lquery_syntactically_valid(lquery_pattern, db.session):
147
+ raise HTTPException(
148
+ status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
149
+ detail=f"Prefix '{prefix}' creates an invalid search pattern.",
150
+ )
151
+ stmt = build_paths_query(entity_type=entity_type, prefix=prefix, q=q)
152
+ stmt = stmt.limit(limit)
153
+ rows = db.session.execute(stmt).all()
154
+
155
+ leaves, components = process_path_rows(rows)
156
+ return PathsResponse(leaves=leaves, components=components)
157
+
158
+
159
+ @router.get(
160
+ "/definitions",
161
+ response_model=dict[UIType, TypeDefinition],
162
+ response_model_exclude_none=True,
163
+ )
164
+ async def get_definitions() -> dict[UIType, TypeDefinition]:
165
+ """Provide a static definition of operators and schemas for each UI type."""
166
+ return generate_definitions()
167
+
168
+
169
+ @router.get(
170
+ "/queries/{query_id}",
171
+ response_model=SearchResultsSchema[SearchResult],
172
+ summary="Retrieve saved search results by query_id",
173
+ )
174
+ async def get_by_query_id(
175
+ query_id: str,
176
+ cursor: str | None = None,
177
+ ) -> SearchResultsSchema[SearchResult]:
178
+ """Retrieve and execute a saved search by query_id."""
179
+ return await _perform_search_and_fetch(query_id=query_id, cursor=cursor)
180
+
181
+
182
+ @router.get(
183
+ "/queries/{query_id}/export",
184
+ summary="Export query results by query_id",
185
+ response_model=ExportResponse,
186
+ )
187
+ async def export_by_query_id(query_id: str) -> ExportResponse:
188
+ """Export search results using query_id.
189
+
190
+ The query is retrieved from the database, re-executed, and results are returned
191
+ as flattened records suitable for CSV download.
192
+
193
+ Args:
194
+ query_id: Query UUID
195
+
196
+ Returns:
197
+ ExportResponse containing 'page' with an array of flattened entity records.
198
+
199
+ Raises:
200
+ HTTPException: 404 if query not found, 400 if invalid data
201
+ """
202
+ try:
203
+ query_state = SearchQueryState.load_from_id(query_id)
204
+ export_records = await execute_search_for_export(query_state, db.session)
205
+ return ExportResponse(page=export_records)
206
+ except ValueError as e:
207
+ raise HTTPException(status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, detail=str(e))
208
+ except QueryStateNotFoundError as e:
209
+ raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=str(e))
210
+ except Exception as e:
211
+ logger.error(e)
212
+ raise HTTPException(
213
+ status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
214
+ detail=f"Error executing export: {str(e)}",
215
+ )
@@ -23,6 +23,8 @@ from structlog import get_logger
23
23
 
24
24
  import orchestrator.workflows
25
25
  from orchestrator.cli.domain_gen_helpers.types import ModelUpdates
26
+ from orchestrator.cli.generate import create_writer, get_template_environment
27
+ from orchestrator.cli.generator.generator.migration import create_data_head_if_not_exists
26
28
  from orchestrator.cli.helpers.print_helpers import COLOR, str_fmt
27
29
  from orchestrator.cli.migrate_domain_models import create_domain_models_migration_sql
28
30
  from orchestrator.cli.migrate_tasks import create_tasks_migration_wizard
@@ -223,6 +225,7 @@ def revision(
223
225
  --head TEXT Determine the head you need to add your migration to.
224
226
  ```
225
227
  """
228
+ create_data_head_if_not_exists({"writer": create_writer(), "environment": get_template_environment()})
226
229
  command.revision(alembic_cfg(), message, version_path=version_path, autogenerate=autogenerate, head=head)
227
230
 
228
231
 
@@ -14,6 +14,7 @@
14
14
  # ruff: noqa: S603
15
15
  import subprocess
16
16
  from pathlib import Path
17
+ from typing import Callable
17
18
 
18
19
  import structlog
19
20
  import typer
@@ -78,7 +79,7 @@ def ruff(content: str) -> str:
78
79
  return content
79
80
 
80
81
 
81
- def create_context(config_file: Path, dryrun: bool, force: bool, python_version: str, tdd: bool | None = False) -> dict:
82
+ def create_writer(dryrun: bool = False, force: bool = False) -> Callable[..., None]:
82
83
  def writer(path: Path, content: str, append: bool = False) -> None:
83
84
  content = ruff(content) if path.suffix == ".py" else content
84
85
  if dryrun:
@@ -88,9 +89,15 @@ def create_context(config_file: Path, dryrun: bool, force: bool, python_version:
88
89
  else:
89
90
  write_file(path, content, append=append, force=force)
90
91
 
92
+ return writer
93
+
94
+
95
+ def get_template_environment() -> Environment:
91
96
  search_path = (settings.CUSTOM_TEMPLATES, Path(__file__).parent / "generator" / "templates")
92
- environment = Environment(loader=FileSystemLoader(search_path), autoescape=True, keep_trailing_newline=True)
97
+ return Environment(loader=FileSystemLoader(search_path), autoescape=True, keep_trailing_newline=True)
93
98
 
99
+
100
+ def create_context(config_file: Path, dryrun: bool, force: bool, python_version: str, tdd: bool | None = False) -> dict:
94
101
  config = read_config(config_file)
95
102
  config["variable"] = get_variable(config)
96
103
  for pb in config["product_blocks"]:
@@ -98,10 +105,10 @@ def create_context(config_file: Path, dryrun: bool, force: bool, python_version:
98
105
 
99
106
  return {
100
107
  "config": config,
101
- "environment": environment,
108
+ "environment": get_template_environment(),
102
109
  "python_version": python_version,
103
110
  "tdd": tdd,
104
- "writer": writer,
111
+ "writer": create_writer(dryrun=dryrun, force=force),
105
112
  }
106
113
 
107
114
 
@@ -79,6 +79,12 @@ def create_data_head(context: dict, depends_on: str) -> None:
79
79
  writer(path, content)
80
80
 
81
81
 
82
+ def create_data_head_if_not_exists(context: dict) -> None:
83
+ heads = get_heads()
84
+ if "data" not in heads:
85
+ create_data_head(context=context, depends_on=heads["schema"])
86
+
87
+
82
88
  def extract_revision_info(content: list[str]) -> dict:
83
89
  def process() -> Generator:
84
90
  for line in content:
@@ -136,9 +142,7 @@ def generate_product_migration(context: dict) -> None:
136
142
  environment = context["environment"]
137
143
  writer = context["writer"]
138
144
 
139
- heads = get_heads()
140
- if "data" not in heads:
141
- create_data_head(context=context, depends_on=heads["schema"])
145
+ create_data_head_if_not_exists(context=context)
142
146
 
143
147
  if not (migration_file := create_migration_file(message=f"add {config['name']}", head="data")):
144
148
  logger.error("Could not create migration file")
@@ -4,7 +4,7 @@ from sqlalchemy import text
4
4
  from sqlalchemy.exc import SQLAlchemyError
5
5
 
6
6
  from orchestrator.db import db
7
- from orchestrator.db.models import AiSearchIndex
7
+ from orchestrator.db.models import AiSearchIndex, SearchQueryTable
8
8
  from orchestrator.llm_settings import llm_settings
9
9
 
10
10
  logger = structlog.get_logger(__name__)
@@ -40,17 +40,20 @@ def get_current_embedding_dimension() -> int | None:
40
40
  return None
41
41
 
42
42
 
43
- def drop_all_embeddings() -> int:
44
- """Drop all records from the ai_search_index table.
43
+ def drop_all_embeddings() -> tuple[int, int]:
44
+ """Drop all records from ai_search_index and search_queries tables.
45
45
 
46
46
  Returns:
47
- Number of records deleted
47
+ Tuple of (ai_search_index records deleted, search_queries records deleted)
48
48
  """
49
49
  try:
50
- result = db.session.query(AiSearchIndex).delete()
50
+ index_deleted = db.session.query(AiSearchIndex).delete()
51
+ query_deleted = db.session.query(SearchQueryTable).delete()
51
52
  db.session.commit()
52
- logger.info(f"Deleted {result} records from ai_search_index")
53
- return result
53
+ logger.info(
54
+ f"Deleted {index_deleted} records from ai_search_index and {query_deleted} records from search_queries"
55
+ )
56
+ return index_deleted, query_deleted
54
57
 
55
58
  except SQLAlchemyError as e:
56
59
  db.session.rollback()
@@ -59,34 +62,34 @@ def drop_all_embeddings() -> int:
59
62
 
60
63
 
61
64
  def alter_embedding_column_dimension(new_dimension: int) -> None:
62
- """Alter the embedding column to use the new dimension size.
65
+ """Alter the embedding columns in both ai_search_index and search_queries tables.
63
66
 
64
67
  Args:
65
68
  new_dimension: New vector dimension size
66
69
  """
67
70
  try:
68
- drop_query = text("ALTER TABLE ai_search_index DROP COLUMN IF EXISTS embedding")
69
- db.session.execute(drop_query)
71
+ db.session.execute(text("ALTER TABLE ai_search_index DROP COLUMN IF EXISTS embedding"))
72
+ db.session.execute(text(f"ALTER TABLE ai_search_index ADD COLUMN embedding vector({new_dimension})"))
70
73
 
71
- add_query = text(f"ALTER TABLE ai_search_index ADD COLUMN embedding vector({new_dimension})")
72
- db.session.execute(add_query)
74
+ db.session.execute(text("ALTER TABLE search_queries DROP COLUMN IF EXISTS query_embedding"))
75
+ db.session.execute(text(f"ALTER TABLE search_queries ADD COLUMN query_embedding vector({new_dimension})"))
73
76
 
74
77
  db.session.commit()
75
- logger.info(f"Altered embedding column to dimension {new_dimension}")
78
+ logger.info(f"Altered embedding columns to dimension {new_dimension} in ai_search_index and search_queries")
76
79
 
77
80
  except SQLAlchemyError as e:
78
81
  db.session.rollback()
79
- logger.error("Failed to alter embedding column dimension", error=str(e))
82
+ logger.error("Failed to alter embedding column dimensions", error=str(e))
80
83
  raise
81
84
 
82
85
 
83
86
  @app.command("resize")
84
87
  def resize_embeddings_command() -> None:
85
- """Resize vector dimensions of the ai_search_index embedding column.
88
+ """Resize vector dimensions of embedding columns in ai_search_index and search_queries tables.
86
89
 
87
90
  Compares the current embedding dimension in the database with the configured
88
- dimension in llm_settings. If they differ, drops all records and alters the
89
- column to match the new dimension.
91
+ dimension in llm_settings. If they differ, drops all records and alters both
92
+ embedding columns to match the new dimension.
90
93
  """
91
94
  new_dimension = llm_settings.EMBEDDING_DIMENSION
92
95
 
@@ -107,22 +110,25 @@ def resize_embeddings_command() -> None:
107
110
 
108
111
  logger.info("Dimension mismatch detected", current_dimension=current_dimension, new_dimension=new_dimension)
109
112
 
110
- if not typer.confirm("This will DELETE ALL RECORDS from ai_search_index and alter the embedding column. Continue?"):
113
+ if not typer.confirm(
114
+ "This will DELETE ALL RECORDS from ai_search_index and search_queries tables and alter embedding columns. Continue?"
115
+ ):
111
116
  logger.info("Operation cancelled by user")
112
117
  return
113
118
 
114
119
  try:
115
120
  # Drop all records first.
116
121
  logger.info("Dropping all embedding records...")
117
- deleted_count = drop_all_embeddings()
122
+ index_deleted, query_deleted = drop_all_embeddings()
118
123
 
119
- # Then alter column dimension.
120
- logger.info(f"Altering embedding column to dimension {new_dimension}...")
124
+ # Then alter column dimensions.
125
+ logger.info(f"Altering embedding columns to dimension {new_dimension}...")
121
126
  alter_embedding_column_dimension(new_dimension)
122
127
 
123
128
  logger.info(
124
129
  "Embedding dimension resize completed successfully",
125
- records_deleted=deleted_count,
130
+ index_records_deleted=index_deleted,
131
+ query_records_deleted=query_deleted,
126
132
  new_dimension=new_dimension,
127
133
  )
128
134
 
@@ -13,7 +13,6 @@ 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
15
  from orchestrator.search.retrieval.engine import execute_search
16
- from orchestrator.search.retrieval.pagination import PaginationParams
17
16
  from orchestrator.search.schemas.parameters import BaseSearchParameters
18
17
 
19
18
  logger = structlog.get_logger(__name__)
@@ -54,17 +53,16 @@ async def generate_embeddings_for_queries(queries: list[str]) -> dict[str, list[
54
53
  async def run_single_query(query: str, embedding_lookup: dict[str, list[float]]) -> dict[str, Any]:
55
54
  search_params = BaseSearchParameters(entity_type=EntityType.SUBSCRIPTION, query=query, limit=30)
56
55
 
56
+ query_embedding = None
57
+
57
58
  if is_uuid(query):
58
- pagination_params = PaginationParams()
59
59
  logger.debug("Using fuzzy-only ranking for full UUID", query=query)
60
60
  else:
61
-
62
- cached_embedding = embedding_lookup[query]
63
- pagination_params = PaginationParams(q_vec_override=cached_embedding)
61
+ query_embedding = embedding_lookup[query]
64
62
 
65
63
  with db.session as session:
66
64
  start_time = time.perf_counter()
67
- response = await execute_search(search_params, session, pagination_params=pagination_params)
65
+ response = await execute_search(search_params, session, cursor=None, query_embedding=query_embedding)
68
66
  end_time = time.perf_counter()
69
67
 
70
68
  return {
@@ -17,6 +17,7 @@ from structlog import get_logger
17
17
  from orchestrator.db.database import BaseModel as DbBaseModel
18
18
  from orchestrator.db.database import Database, transactional
19
19
  from orchestrator.db.models import ( # noqa: F401
20
+ AgentRunTable,
20
21
  EngineSettingsTable,
21
22
  FixedInputTable,
22
23
  InputStateTable,
@@ -26,6 +27,7 @@ from orchestrator.db.models import ( # noqa: F401
26
27
  ProductBlockTable,
27
28
  ProductTable,
28
29
  ResourceTypeTable,
30
+ SearchQueryTable,
29
31
  SubscriptionCustomerDescriptionTable,
30
32
  SubscriptionInstanceRelationTable,
31
33
  SubscriptionInstanceTable,
@@ -74,6 +76,8 @@ def init_database(settings: AppSettings) -> Database:
74
76
 
75
77
  __all__ = [
76
78
  "transactional",
79
+ "SearchQueryTable",
80
+ "AgentRunTable",
77
81
  "SubscriptionTable",
78
82
  "ProcessSubscriptionTable",
79
83
  "ProcessTable",
@@ -97,6 +101,8 @@ __all__ = [
97
101
  ]
98
102
 
99
103
  ALL_DB_MODELS: list[type[DbBaseModel]] = [
104
+ SearchQueryTable,
105
+ AgentRunTable,
100
106
  FixedInputTable,
101
107
  ProcessStepTable,
102
108
  ProcessSubscriptionTable,