orchestrator-core 4.6.3rc1__tar.gz → 4.6.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (386) hide show
  1. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/PKG-INFO +15 -14
  2. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/__init__.py +1 -1
  3. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/search/index_llm.py +8 -0
  4. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/resolvers/helpers.py +15 -0
  5. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/resolvers/process.py +5 -3
  6. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/resolvers/product.py +3 -2
  7. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/resolvers/product_block.py +3 -2
  8. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/resolvers/resource_type.py +3 -2
  9. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/resolvers/scheduled_tasks.py +3 -1
  10. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/resolvers/settings.py +2 -0
  11. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/resolvers/subscription.py +5 -3
  12. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/resolvers/version.py +2 -0
  13. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/resolvers/workflow.py +3 -2
  14. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/filters/date_filters.py +4 -5
  15. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/indexing/indexer.py +43 -7
  16. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/indexing/registry.py +16 -1
  17. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/indexing/tasks.py +22 -1
  18. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/indexing/traverse.py +30 -8
  19. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/query/results.py +60 -2
  20. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/retrieval/retrievers/__init__.py +2 -0
  21. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/retrieval/retrievers/base.py +8 -1
  22. orchestrator_core-4.6.4/orchestrator/search/retrieval/retrievers/process.py +225 -0
  23. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/workflows/translations/en-GB.json +1 -0
  24. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/pyproject.toml +15 -14
  25. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/LICENSE +0 -0
  26. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/README.md +0 -0
  27. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/agentic_app.py +0 -0
  28. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/api/__init__.py +0 -0
  29. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/__init__.py +0 -0
  30. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/api.py +0 -0
  31. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/__init__.py +0 -0
  32. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/agent.py +0 -0
  33. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/health.py +0 -0
  34. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/processes.py +0 -0
  35. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/product_blocks.py +0 -0
  36. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/products.py +0 -0
  37. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/resource_types.py +0 -0
  38. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/search.py +0 -0
  39. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/settings.py +0 -0
  40. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/subscription_customer_descriptions.py +0 -0
  41. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/subscriptions.py +0 -0
  42. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/translations.py +0 -0
  43. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/user.py +0 -0
  44. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/workflows.py +0 -0
  45. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/ws.py +0 -0
  46. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/api/error_handling.py +0 -0
  47. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/api/helpers.py +0 -0
  48. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/api/models.py +0 -0
  49. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/app.py +0 -0
  50. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/__init__.py +0 -0
  51. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/database.py +0 -0
  52. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/domain_gen_helpers/__init__.py +0 -0
  53. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/domain_gen_helpers/fixed_input_helpers.py +0 -0
  54. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/domain_gen_helpers/helpers.py +0 -0
  55. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/domain_gen_helpers/product_block_helpers.py +0 -0
  56. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/domain_gen_helpers/product_helpers.py +0 -0
  57. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/domain_gen_helpers/resource_type_helpers.py +0 -0
  58. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/domain_gen_helpers/types.py +0 -0
  59. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generate.py +0 -0
  60. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/__init__.py +0 -0
  61. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/custom_templates/README +0 -0
  62. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/custom_templates/additional_create_imports.j2 +0 -0
  63. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/custom_templates/additional_create_input_fields.j2 +0 -0
  64. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/custom_templates/additional_create_steps.j2 +0 -0
  65. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/custom_templates/additional_modify_imports.j2 +0 -0
  66. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/custom_templates/additional_modify_input_fields.j2 +0 -0
  67. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/custom_templates/additional_modify_steps.j2 +0 -0
  68. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/custom_templates/additional_terminate_imports.j2 +0 -0
  69. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/custom_templates/additional_terminate_input_fields.j2 +0 -0
  70. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/custom_templates/additional_terminate_steps.j2 +0 -0
  71. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/generator/__init__.py +0 -0
  72. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/generator/enums.py +0 -0
  73. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/generator/helpers.py +0 -0
  74. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/generator/migration.py +0 -0
  75. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/generator/product.py +0 -0
  76. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/generator/product_block.py +0 -0
  77. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/generator/settings.py +0 -0
  78. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/generator/translations.py +0 -0
  79. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/generator/unittest.py +0 -0
  80. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/generator/validations.py +0 -0
  81. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/generator/workflow.py +0 -0
  82. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/products/workshop/circuit.yaml +0 -0
  83. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/products/workshop/node.yaml +0 -0
  84. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/products/workshop/user.yaml +0 -0
  85. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/products/workshop/user_group.yaml +0 -0
  86. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/additional_create_imports.j2 +0 -0
  87. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/additional_create_steps.j2 +0 -0
  88. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/additional_modify_imports.j2 +0 -0
  89. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/additional_modify_steps.j2 +0 -0
  90. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/additional_terminate_steps.j2 +0 -0
  91. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/constrained_int_definitions.j2 +0 -0
  92. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/create_data_head.j2 +0 -0
  93. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/create_product.j2 +0 -0
  94. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/enums.j2 +0 -0
  95. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/lazy_workflow_instance.j2 +0 -0
  96. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/list_definitions.j2 +0 -0
  97. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/macros.j2 +0 -0
  98. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/modify_product.j2 +0 -0
  99. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/new_product_migration.j2 +0 -0
  100. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/product.j2 +0 -0
  101. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/product_block.j2 +0 -0
  102. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/shared_forms.j2 +0 -0
  103. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/shared_workflows.j2 +0 -0
  104. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/subscription_model_registry.j2 +0 -0
  105. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/terminate_product.j2 +0 -0
  106. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/test_create_workflow.j2 +0 -0
  107. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/test_modify_workflow.j2 +0 -0
  108. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/test_product_type.j2 +0 -0
  109. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/test_terminate_workflow.j2 +0 -0
  110. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/test_validate_workflow.j2 +0 -0
  111. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/validate_product.j2 +0 -0
  112. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/helpers/__init__.py +0 -0
  113. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/helpers/input_helpers.py +0 -0
  114. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/helpers/print_helpers.py +0 -0
  115. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/main.py +0 -0
  116. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/migrate_domain_models.py +0 -0
  117. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/migrate_tasks.py +0 -0
  118. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/migrate_workflows.py +0 -0
  119. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/migration_helpers.py +0 -0
  120. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/scheduler.py +0 -0
  121. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/search/__init__.py +0 -0
  122. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/search/display.py +0 -0
  123. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/search/resize_embedding.py +0 -0
  124. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/search/search_explore.py +0 -0
  125. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/cli/search/speedtest.py +0 -0
  126. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/config/__init__.py +0 -0
  127. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/config/assignee.py +0 -0
  128. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/db/__init__.py +0 -0
  129. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/db/database.py +0 -0
  130. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/db/filters/__init__.py +0 -0
  131. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/db/filters/filters.py +0 -0
  132. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/db/filters/process.py +0 -0
  133. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/db/filters/product.py +0 -0
  134. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/db/filters/product_block.py +0 -0
  135. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/db/filters/resource_type.py +0 -0
  136. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/db/filters/search_filters/__init__.py +0 -0
  137. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/db/filters/search_filters/inferred_filter.py +0 -0
  138. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/db/filters/subscription.py +0 -0
  139. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/db/filters/workflow.py +0 -0
  140. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/db/helpers.py +0 -0
  141. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/db/listeners.py +0 -0
  142. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/db/loaders.py +0 -0
  143. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/db/models.py +0 -0
  144. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/db/queries/__init__.py +0 -0
  145. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/db/queries/subscription.py +0 -0
  146. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/db/queries/subscription_instance.py +0 -0
  147. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/db/range/__init__.py +0 -0
  148. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/db/range/range.py +0 -0
  149. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/db/sorting/__init__.py +0 -0
  150. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/db/sorting/process.py +0 -0
  151. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/db/sorting/product.py +0 -0
  152. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/db/sorting/product_block.py +0 -0
  153. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/db/sorting/resource_type.py +0 -0
  154. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/db/sorting/sorting.py +0 -0
  155. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/db/sorting/subscription.py +0 -0
  156. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/db/sorting/workflow.py +0 -0
  157. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/devtools/__init__.py +0 -0
  158. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/devtools/populator.py +0 -0
  159. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/devtools/scripts/__init__.py +0 -0
  160. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/devtools/scripts/migrate_20.py +0 -0
  161. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/devtools/scripts/migrate_30.py +0 -0
  162. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/devtools/scripts/shared.py +0 -0
  163. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/distlock/__init__.py +0 -0
  164. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/distlock/distlock_manager.py +0 -0
  165. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/distlock/managers/__init__.py +0 -0
  166. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/distlock/managers/memory_distlock_manager.py +0 -0
  167. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/distlock/managers/redis_distlock_manager.py +0 -0
  168. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/domain/__init__.py +0 -0
  169. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/domain/base.py +0 -0
  170. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/domain/context_cache.py +0 -0
  171. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/domain/customer_description.py +0 -0
  172. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/domain/helpers.py +0 -0
  173. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/domain/lifecycle.py +0 -0
  174. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/domain/subscription_instance_transform.py +0 -0
  175. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/exception_handlers.py +0 -0
  176. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/forms/__init__.py +0 -0
  177. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/forms/validators/__init__.py +0 -0
  178. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/forms/validators/customer_contact_list.py +0 -0
  179. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/forms/validators/customer_id.py +0 -0
  180. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/forms/validators/display_subscription.py +0 -0
  181. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/forms/validators/network_type_validators.py +0 -0
  182. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/forms/validators/product_id.py +0 -0
  183. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/__init__.py +0 -0
  184. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/autoregistration.py +0 -0
  185. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/extensions/__init__.py +0 -0
  186. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/extensions/model_cache.py +0 -0
  187. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/extensions/stats.py +0 -0
  188. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/loaders/__init__.py +0 -0
  189. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/loaders/subscriptions.py +0 -0
  190. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/mutations/customer_description.py +0 -0
  191. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/mutations/start_process.py +0 -0
  192. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/pagination.py +0 -0
  193. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/resolvers/__init__.py +0 -0
  194. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/resolvers/customer.py +0 -0
  195. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/schema.py +0 -0
  196. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/__init__.py +0 -0
  197. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/customer.py +0 -0
  198. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/customer_description.py +0 -0
  199. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/errors.py +0 -0
  200. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/fixed_input.py +0 -0
  201. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/helpers.py +0 -0
  202. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/process.py +0 -0
  203. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/product.py +0 -0
  204. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/product_block.py +0 -0
  205. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/resource_type.py +0 -0
  206. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/scheduled_task.py +0 -0
  207. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/settings.py +0 -0
  208. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/strawberry_pydantic_patch.py +0 -0
  209. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/subscription.py +0 -0
  210. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/version.py +0 -0
  211. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/workflow.py +0 -0
  212. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/types.py +0 -0
  213. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/utils/__init__.py +0 -0
  214. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/utils/create_resolver_error_handler.py +0 -0
  215. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/utils/get_query_loaders.py +0 -0
  216. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/utils/get_selected_fields.py +0 -0
  217. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/utils/get_selected_paths.py +0 -0
  218. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/utils/get_subscription_product_blocks.py +0 -0
  219. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/utils/is_query_detailed.py +0 -0
  220. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/utils/override_class.py +0 -0
  221. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/graphql/utils/to_graphql_result_page.py +0 -0
  222. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/llm_settings.py +0 -0
  223. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/log_config.py +0 -0
  224. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/metrics/__init__.py +0 -0
  225. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/metrics/engine.py +0 -0
  226. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/metrics/init.py +0 -0
  227. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/metrics/processes.py +0 -0
  228. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/metrics/subscriptions.py +0 -0
  229. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/README +0 -0
  230. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/__init__.py +0 -0
  231. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/alembic.ini +0 -0
  232. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/env.py +0 -0
  233. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/helpers.py +0 -0
  234. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/script.py.mako +0 -0
  235. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/templates/alembic.ini.j2 +0 -0
  236. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/templates/env.py.j2 +0 -0
  237. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/templates/helpers.py.j2 +0 -0
  238. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2020-10-19_3323bcb934e7_fix_tsv_triggers.py +0 -0
  239. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2020-10-19_a76b9185b334_add_generic_workflows_to_core.py +0 -0
  240. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2020-10-19_c112305b07d3_initial_schema_migration.py +0 -0
  241. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2021-04-06_3c8b9185c221_add_validate_products_task.py +0 -0
  242. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2021-07-01_6896a54e9483_add_product_block_relations.py +0 -0
  243. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2021-11-17_19cdd3ab86f6_fix_parse_websearch.py +0 -0
  244. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2022-02-16_bed6bc0b197a_rename_parent_and_child_block_relations.py +0 -0
  245. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2023-03-06_e05bb1967eff_add_subscriptions_search_view.py +0 -0
  246. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2023-05-25_b1970225392d_add_subscription_metadata_workflow.py +0 -0
  247. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2023-06-28_a09ac125ea73_add_throttling_to_refresh_subscriptions.py +0 -0
  248. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2023-06-28_a09ac125ea73_add_throttling_to_refresh_subscriptions.sql +0 -0
  249. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2023-07-17_165303a20fb1_customer_id_to_varchar.py +0 -0
  250. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2023-07-17_165303a20fb1_customer_id_to_varchar.sql +0 -0
  251. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2023-09-25_da5c9f4cce1c_add_subscription_metadata_to_fulltext_.py +0 -0
  252. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2023-09-25_da5c9f4cce1c_add_subscription_metadata_to_fulltext_.sql +0 -0
  253. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2023-12-06_048219045729_add_workflow_id_to_processes_table.py +0 -0
  254. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2024-09-27_460ec6748e37_add_uuid_search_workaround.py +0 -0
  255. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2024-09-27_460ec6748e37_add_uuid_search_workaround.sql +0 -0
  256. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2025-01-08_4c5859620539_add_version_column_to_subscription.py +0 -0
  257. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2025-01-19_4fjdn13f83ga_add_validate_product_type_task.py +0 -0
  258. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2025-02-12_bac6be6f2b4f_added_input_state_table.py +0 -0
  259. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2025-02-20_68d14db1b8da_make_workflow_description_mandatory.py +0 -0
  260. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2025-03-06_42b3d076a85b_subscription_instance_as_json_function.py +0 -0
  261. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2025-03-06_42b3d076a85b_subscription_instance_as_json_function.sql +0 -0
  262. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2025-04-09_fc5c993a4b4a_add_cascade_constraint_on_processes_.py +0 -0
  263. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2025-05-08_161918133bec_add_is_task_to_workflow.py +0 -0
  264. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2025-07-01_93fc5834c7e5_changed_timestamping_fields_in_process_steps.py +0 -0
  265. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2025-07-04_4b58e336d1bf_deprecating_workflow_target_in_.py +0 -0
  266. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2025-07-28_850dccac3b02_update_description_of_resume_workflows_.py +0 -0
  267. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/py.typed +0 -0
  268. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/schedules/__init__.py +0 -0
  269. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/schedules/resume_workflows.py +0 -0
  270. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/schedules/scheduler.py +0 -0
  271. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/schedules/scheduling.py +0 -0
  272. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/schedules/task_vacuum.py +0 -0
  273. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/schedules/validate_products.py +0 -0
  274. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/schedules/validate_subscriptions.py +0 -0
  275. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/schemas/__init__.py +0 -0
  276. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/schemas/base.py +0 -0
  277. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/schemas/engine_settings.py +0 -0
  278. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/schemas/fixed_input.py +0 -0
  279. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/schemas/problem_detail.py +0 -0
  280. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/schemas/process.py +0 -0
  281. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/schemas/product.py +0 -0
  282. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/schemas/product_block.py +0 -0
  283. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/schemas/resource_type.py +0 -0
  284. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/schemas/search.py +0 -0
  285. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/schemas/search_requests.py +0 -0
  286. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/schemas/subscription.py +0 -0
  287. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/schemas/subscription_descriptions.py +0 -0
  288. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/schemas/workflow.py +0 -0
  289. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/__init__.py +0 -0
  290. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/agent/__init__.py +0 -0
  291. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/agent/agent.py +0 -0
  292. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/agent/handlers.py +0 -0
  293. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/agent/json_patch.py +0 -0
  294. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/agent/prompts.py +0 -0
  295. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/agent/state.py +0 -0
  296. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/agent/tools.py +0 -0
  297. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/agent/validation.py +0 -0
  298. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/aggregations/__init__.py +0 -0
  299. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/aggregations/base.py +0 -0
  300. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/core/__init__.py +0 -0
  301. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/core/embedding.py +0 -0
  302. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/core/exceptions.py +0 -0
  303. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/core/types.py +0 -0
  304. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/core/validators.py +0 -0
  305. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/docs/index.md +0 -0
  306. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/docs/running_local_text_embedding_inference.md +0 -0
  307. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/filters/__init__.py +0 -0
  308. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/filters/base.py +0 -0
  309. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/filters/definitions.py +0 -0
  310. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/filters/ltree_filters.py +0 -0
  311. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/filters/numeric_filter.py +0 -0
  312. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/indexing/__init__.py +0 -0
  313. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/llm_migration.py +0 -0
  314. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/query/__init__.py +0 -0
  315. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/query/builder.py +0 -0
  316. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/query/engine.py +0 -0
  317. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/query/exceptions.py +0 -0
  318. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/query/export.py +0 -0
  319. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/query/mixins.py +0 -0
  320. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/query/queries.py +0 -0
  321. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/query/state.py +0 -0
  322. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/query/validation.py +0 -0
  323. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/retrieval/__init__.py +0 -0
  324. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/retrieval/pagination.py +0 -0
  325. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/retrieval/retrievers/fuzzy.py +0 -0
  326. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/retrieval/retrievers/hybrid.py +0 -0
  327. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/retrieval/retrievers/semantic.py +0 -0
  328. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/search/retrieval/retrievers/structured.py +0 -0
  329. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/security.py +0 -0
  330. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/services/__init__.py +0 -0
  331. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/services/executors/__init__.py +0 -0
  332. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/services/executors/celery.py +0 -0
  333. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/services/executors/threadpool.py +0 -0
  334. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/services/fixed_inputs.py +0 -0
  335. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/services/input_state.py +0 -0
  336. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/services/process_broadcast_thread.py +0 -0
  337. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/services/processes.py +0 -0
  338. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/services/products.py +0 -0
  339. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/services/resource_types.py +0 -0
  340. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/services/settings.py +0 -0
  341. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/services/settings_env_variables.py +0 -0
  342. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/services/subscription_relations.py +0 -0
  343. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/services/subscriptions.py +0 -0
  344. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/services/tasks.py +0 -0
  345. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/services/translations.py +0 -0
  346. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/services/workflows.py +0 -0
  347. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/settings.py +0 -0
  348. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/targets.py +0 -0
  349. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/types.py +0 -0
  350. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/utils/__init__.py +0 -0
  351. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/utils/auth.py +0 -0
  352. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/utils/crypt.py +0 -0
  353. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/utils/datetime.py +0 -0
  354. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/utils/deprecation_logger.py +0 -0
  355. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/utils/docs.py +0 -0
  356. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/utils/enrich_process.py +0 -0
  357. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/utils/errors.py +0 -0
  358. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/utils/expose_settings.py +0 -0
  359. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/utils/fixed_inputs.py +0 -0
  360. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/utils/functional.py +0 -0
  361. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/utils/get_subscription_dict.py +0 -0
  362. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/utils/get_updated_properties.py +0 -0
  363. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/utils/helpers.py +0 -0
  364. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/utils/json.py +0 -0
  365. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/utils/redis.py +0 -0
  366. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/utils/redis_client.py +0 -0
  367. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/utils/search_query.py +0 -0
  368. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/utils/state.py +0 -0
  369. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/utils/strings.py +0 -0
  370. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/utils/validate_data_version.py +0 -0
  371. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/version.py +0 -0
  372. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/websocket/__init__.py +0 -0
  373. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/websocket/managers/broadcast_websocket_manager.py +0 -0
  374. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/websocket/managers/memory_websocket_manager.py +0 -0
  375. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/websocket/websocket_manager.py +0 -0
  376. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/workflow.py +0 -0
  377. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/workflows/__init__.py +0 -0
  378. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/workflows/modify_note.py +0 -0
  379. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/workflows/removed_workflow.py +0 -0
  380. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/workflows/steps.py +0 -0
  381. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/workflows/tasks/__init__.py +0 -0
  382. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/workflows/tasks/cleanup_tasks_log.py +0 -0
  383. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/workflows/tasks/resume_workflows.py +0 -0
  384. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/workflows/tasks/validate_product_type.py +0 -0
  385. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/orchestrator/workflows/tasks/validate_products.py +0 -0
  386. {orchestrator_core-4.6.3rc1 → orchestrator_core-4.6.4}/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.3rc1
3
+ Version: 4.6.4
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,34 +31,34 @@ 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.120.4
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: nwa-stdlib~=1.10.3
44
+ Requires-Dist: more-itertools~=10.8.0
45
+ Requires-Dist: nwa-stdlib~=1.11.0
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: prometheus-client==0.23.1
49
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
- Requires-Dist: redis==5.1.1
57
+ Requires-Dist: redis==5.3.1
57
58
  Requires-Dist: semver==3.0.4
58
59
  Requires-Dist: sentry-sdk[fastapi]>=2.29.1
59
60
  Requires-Dist: sqlalchemy==2.0.44
60
- Requires-Dist: sqlalchemy-utils==0.41.2
61
+ Requires-Dist: sqlalchemy-utils==0.42.0
61
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
@@ -13,7 +13,7 @@
13
13
 
14
14
  """This is the orchestrator workflow engine."""
15
15
 
16
- __version__ = "4.6.3rc1"
16
+ __version__ = "4.6.4"
17
17
 
18
18
 
19
19
  from structlog import get_logger
@@ -14,6 +14,7 @@ def subscriptions_command(
14
14
  subscription_id: str | None = typer.Option(None, help="UUID (default = all)"),
15
15
  dry_run: bool = typer.Option(False, help="No DB writes"),
16
16
  force_index: bool = typer.Option(False, help="Force re-index (ignore hash cache)"),
17
+ show_progress: bool = typer.Option(False, help="Show per-entity progress"),
17
18
  ) -> None:
18
19
  """Index subscription_search_index."""
19
20
  run_indexing_for_entity(
@@ -21,6 +22,7 @@ def subscriptions_command(
21
22
  entity_id=subscription_id,
22
23
  dry_run=dry_run,
23
24
  force_index=force_index,
25
+ show_progress=show_progress,
24
26
  )
25
27
 
26
28
 
@@ -29,6 +31,7 @@ def products_command(
29
31
  product_id: str | None = typer.Option(None, help="UUID (default = all)"),
30
32
  dry_run: bool = typer.Option(False, help="No DB writes"),
31
33
  force_index: bool = typer.Option(False, help="Force re-index (ignore hash cache)"),
34
+ show_progress: bool = typer.Option(False, help="Show per-entity progress"),
32
35
  ) -> None:
33
36
  """Index product_search_index."""
34
37
  run_indexing_for_entity(
@@ -36,6 +39,7 @@ def products_command(
36
39
  entity_id=product_id,
37
40
  dry_run=dry_run,
38
41
  force_index=force_index,
42
+ show_progress=show_progress,
39
43
  )
40
44
 
41
45
 
@@ -44,6 +48,7 @@ def processes_command(
44
48
  process_id: str | None = typer.Option(None, help="UUID (default = all)"),
45
49
  dry_run: bool = typer.Option(False, help="No DB writes"),
46
50
  force_index: bool = typer.Option(False, help="Force re-index (ignore hash cache)"),
51
+ show_progress: bool = typer.Option(False, help="Show per-entity progress"),
47
52
  ) -> None:
48
53
  """Index process_search_index."""
49
54
  run_indexing_for_entity(
@@ -51,6 +56,7 @@ def processes_command(
51
56
  entity_id=process_id,
52
57
  dry_run=dry_run,
53
58
  force_index=force_index,
59
+ show_progress=show_progress,
54
60
  )
55
61
 
56
62
 
@@ -59,6 +65,7 @@ def workflows_command(
59
65
  workflow_id: str | None = typer.Option(None, help="UUID (default = all)"),
60
66
  dry_run: bool = typer.Option(False, help="No DB writes"),
61
67
  force_index: bool = typer.Option(False, help="Force re-index (ignore hash cache)"),
68
+ show_progress: bool = typer.Option(False, help="Show per-entity progress"),
62
69
  ) -> None:
63
70
  """Index workflow_search_index."""
64
71
  run_indexing_for_entity(
@@ -66,6 +73,7 @@ def workflows_command(
66
73
  entity_id=workflow_id,
67
74
  dry_run=dry_run,
68
75
  force_index=force_index,
76
+ show_progress=show_progress,
69
77
  )
70
78
 
71
79
 
@@ -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,
@@ -3,6 +3,7 @@ import structlog
3
3
  from orchestrator.db.filters import Filter
4
4
  from orchestrator.db.sorting import Sort
5
5
  from orchestrator.graphql.pagination import Connection
6
+ from orchestrator.graphql.resolvers.helpers import make_async
6
7
  from orchestrator.graphql.schemas.scheduled_task import ScheduledTaskGraphql
7
8
  from orchestrator.graphql.types import GraphqlFilter, GraphqlSort, OrchestratorInfo
8
9
  from orchestrator.graphql.utils import create_resolver_error_handler, to_graphql_result_page
@@ -12,7 +13,8 @@ from orchestrator.schedules.scheduler import get_scheduler_tasks, scheduled_task
12
13
  logger = structlog.get_logger(__name__)
13
14
 
14
15
 
15
- async def resolve_scheduled_tasks(
16
+ @make_async
17
+ def resolve_scheduled_tasks(
16
18
  info: OrchestratorInfo,
17
19
  filter_by: list[GraphqlFilter] | None = None,
18
20
  sort_by: list[GraphqlSort] | None = None,
@@ -4,6 +4,7 @@ from redis.asyncio import Redis as AIORedis
4
4
 
5
5
  from oauth2_lib.strawberry import authenticated_mutation_field
6
6
  from orchestrator.api.api_v1.endpoints.settings import generate_engine_status_response
7
+ from orchestrator.graphql.resolvers.helpers import make_async
7
8
  from orchestrator.graphql.schemas.errors import Error
8
9
  from orchestrator.graphql.schemas.settings import (
9
10
  CACHE_FLUSH_OPTIONS,
@@ -27,6 +28,7 @@ logger = structlog.get_logger(__name__)
27
28
 
28
29
 
29
30
  # Queries
31
+ @make_async
30
32
  def resolve_settings(info: OrchestratorInfo) -> StatusType:
31
33
  selected_fields = get_selected_fields(info)
32
34
 
@@ -18,6 +18,7 @@ from graphql import GraphQLError
18
18
  from pydantic.alias_generators import to_camel as to_lower_camel
19
19
  from sqlalchemy import Select, func, select
20
20
  from sqlalchemy.orm import contains_eager
21
+ from starlette.concurrency import run_in_threadpool
21
22
  from strawberry.experimental.pydantic.conversion_types import StrawberryTypeFromPydantic
22
23
 
23
24
  from nwastdlib.asyncio import gather_nice
@@ -101,7 +102,7 @@ async def format_subscription(info: OrchestratorInfo, subscription: Subscription
101
102
  async def resolve_subscription(info: OrchestratorInfo, id: UUID) -> SubscriptionInterface | None:
102
103
  stmt = select(SubscriptionTable).where(SubscriptionTable.subscription_id == id)
103
104
 
104
- if subscription := db.session.scalar(stmt):
105
+ if subscription := await run_in_threadpool(db.session.scalar, stmt):
105
106
  return await format_subscription(info, subscription)
106
107
  return None
107
108
 
@@ -141,12 +142,13 @@ async def resolve_subscriptions(
141
142
  stmt = filter_by_query_string(stmt, query)
142
143
 
143
144
  stmt = cast(Select, sort_subscriptions(stmt, pydantic_sort_by, _error_handler))
144
- total = db.session.scalar(select(func.count()).select_from(stmt.subquery()))
145
+ total = await run_in_threadpool(db.session.scalar, select(func.count()).select_from(stmt.subquery()))
145
146
  stmt = apply_range_to_statement(stmt, after, after + first + 1)
146
147
 
147
148
  graphql_subscriptions: list[SubscriptionInterface] = []
148
149
  if is_querying_page_data(info):
149
- subscriptions = db.session.scalars(stmt).all()
150
+ scalars = await run_in_threadpool(db.session.scalars, stmt)
151
+ subscriptions = scalars.all()
150
152
  graphql_subscriptions = list(await gather_nice((format_subscription(info, p) for p in subscriptions))) # type: ignore
151
153
  logger.info("Resolve subscriptions", filter_by=filter_by, total=total)
152
154
 
@@ -1,6 +1,7 @@
1
1
  from structlog import get_logger
2
2
 
3
3
  from orchestrator import __version__
4
+ from orchestrator.graphql.resolvers.helpers import make_async
4
5
  from orchestrator.graphql.schemas.version import VersionType
5
6
  from orchestrator.graphql.types import OrchestratorInfo
6
7
  from orchestrator.graphql.utils import create_resolver_error_handler
@@ -11,6 +12,7 @@ logger = get_logger(__name__)
11
12
  VERSIONS = [f"orchestrator-core: {__version__}"]
12
13
 
13
14
 
15
+ @make_async
14
16
  def resolve_version(info: OrchestratorInfo) -> VersionType | None:
15
17
  logger.debug("resolve_version() called")
16
18
  _error_handler = create_resolver_error_handler(info)
@@ -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.workflow import sort_workflows, workflow_sort_fields
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.workflow import Workflow
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_workflows(
22
+ @make_async
23
+ def resolve_workflows(
23
24
  info: OrchestratorInfo,
24
25
  filter_by: list[GraphqlFilter] | None = None,
25
26
  sort_by: list[GraphqlSort] | None = None,
@@ -14,7 +14,6 @@
14
14
  from datetime import date, datetime
15
15
  from typing import Annotated, Any, Literal
16
16
 
17
- from dateutil.parser import parse as dt_parse
18
17
  from pydantic import BaseModel, BeforeValidator, Field, model_validator
19
18
  from sqlalchemy import TIMESTAMP, and_
20
19
  from sqlalchemy import cast as sa_cast
@@ -27,10 +26,10 @@ def _validate_date_string(v: Any) -> Any:
27
26
  if not isinstance(v, str):
28
27
  return v
29
28
  try:
30
- dt_parse(v)
29
+ datetime.fromisoformat(v)
31
30
  return v
32
31
  except Exception as exc:
33
- raise ValueError("is not a valid date or datetime string") from exc
32
+ raise ValueError("is not a valid ISO-8601 date or datetime string") from exc
34
33
 
35
34
 
36
35
  DateValue = datetime | date | str
@@ -44,8 +43,8 @@ class DateRange(BaseModel):
44
43
 
45
44
  @model_validator(mode="after")
46
45
  def _order(self) -> "DateRange":
47
- to_datetime = dt_parse(str(self.end))
48
- from_datetime = dt_parse(str(self.start))
46
+ to_datetime = datetime.fromisoformat(str(self.end))
47
+ from_datetime = datetime.fromisoformat(str(self.start))
49
48
  if to_datetime <= from_datetime:
50
49
  raise ValueError("'to' must be after 'from'")
51
50
  return self
@@ -45,6 +45,23 @@ def _maybe_begin(session: Session | None) -> Iterator[None]:
45
45
  yield
46
46
 
47
47
 
48
+ @contextmanager
49
+ def _maybe_progress(show_progress: bool, total_count: int | None, label: str) -> Iterator[Any]:
50
+ """Context manager that optionally creates a progress bar."""
51
+ if show_progress:
52
+ import typer
53
+
54
+ with typer.progressbar(
55
+ length=total_count,
56
+ label=label,
57
+ show_eta=True,
58
+ show_percent=bool(total_count),
59
+ ) as progress:
60
+ yield progress
61
+ else:
62
+ yield None
63
+
64
+
48
65
  class Indexer:
49
66
  """Index entities into `AiSearchIndex` using streaming reads and batched writes.
50
67
 
@@ -89,11 +106,21 @@ class Indexer:
89
106
  8) Repeat until the stream is exhausted.
90
107
  """
91
108
 
92
- def __init__(self, config: EntityConfig, dry_run: bool, force_index: bool, chunk_size: int = 1000) -> None:
109
+ def __init__(
110
+ self,
111
+ config: EntityConfig,
112
+ dry_run: bool,
113
+ force_index: bool,
114
+ chunk_size: int = 1000,
115
+ show_progress: bool = False,
116
+ total_count: int | None = None,
117
+ ) -> None:
93
118
  self.config = config
94
119
  self.dry_run = dry_run
95
120
  self.force_index = force_index
96
121
  self.chunk_size = chunk_size
122
+ self.show_progress = show_progress
123
+ self.total_count = total_count
97
124
  self.embedding_model = llm_settings.EMBEDDING_MODEL
98
125
  self.logger = logger.bind(entity_kind=config.entity_kind.value)
99
126
  self._entity_titles: dict[str, str] = {}
@@ -116,13 +143,22 @@ class Indexer:
116
143
 
117
144
  with write_scope as database:
118
145
  session: Session | None = getattr(database, "session", None)
119
- for entity in entities:
120
- chunk.append(entity)
121
- if len(chunk) >= self.chunk_size:
122
- flush()
123
146
 
124
- if chunk:
125
- flush()
147
+ with _maybe_progress(
148
+ self.show_progress, self.total_count, f"Indexing {self.config.entity_kind.value}"
149
+ ) as progress:
150
+ for entity in entities:
151
+ chunk.append(entity)
152
+
153
+ if len(chunk) >= self.chunk_size:
154
+ flush()
155
+ if progress:
156
+ progress.update(self.chunk_size)
157
+
158
+ if chunk:
159
+ flush()
160
+ if progress:
161
+ progress.update(len(chunk))
126
162
 
127
163
  final_log_message = (
128
164
  f"processed {total_records_processed} records and skipped {total_identical_records} identical records."
@@ -66,6 +66,21 @@ class EntityConfig(Generic[ModelT]):
66
66
  return "UNKNOWN"
67
67
 
68
68
 
69
+ @dataclass(frozen=True)
70
+ class ProcessConfig(EntityConfig[ProcessTable]):
71
+ """Processes need to eager load workflow for workflow_name field."""
72
+
73
+ def get_all_query(self, entity_id: str | None = None) -> Query | Select:
74
+ from sqlalchemy.orm import selectinload
75
+
76
+ # Only load workflow, not subscriptions (keeps it lightweight)
77
+ query = self.table.query.options(selectinload(ProcessTable.workflow))
78
+ if entity_id:
79
+ pk_column = getattr(self.table, self.pk_name)
80
+ query = query.filter(pk_column == UUID(entity_id))
81
+ return query
82
+
83
+
69
84
  @dataclass(frozen=True)
70
85
  class WorkflowConfig(EntityConfig[WorkflowTable]):
71
86
  """Workflows have a custom select() function that filters out deleted workflows."""
@@ -95,7 +110,7 @@ ENTITY_CONFIG_REGISTRY: dict[EntityType, EntityConfig] = {
95
110
  root_name="product",
96
111
  title_paths=["product.description", "product.name"],
97
112
  ),
98
- EntityType.PROCESS: EntityConfig(
113
+ EntityType.PROCESS: ProcessConfig(
99
114
  entity_kind=EntityType.PROCESS,
100
115
  table=ProcessTable,
101
116
  traverser=ProcessTraverser,
@@ -11,7 +11,10 @@
11
11
  # See the License for the specific language governing permissions and
12
12
  # limitations under the License.
13
13
 
14
+ from typing import Any
15
+
14
16
  import structlog
17
+ from sqlalchemy import func, select
15
18
  from sqlalchemy.orm import Query
16
19
 
17
20
  from orchestrator.db import db
@@ -23,12 +26,20 @@ from orchestrator.search.indexing.registry import ENTITY_CONFIG_REGISTRY
23
26
  logger = structlog.get_logger(__name__)
24
27
 
25
28
 
29
+ def _get_entity_count(stmt: Any) -> int | None:
30
+ """Get total count of entities from a select statement."""
31
+
32
+ count_stmt = select(func.count()).select_from(stmt.subquery())
33
+ return db.session.execute(count_stmt).scalar()
34
+
35
+
26
36
  def run_indexing_for_entity(
27
37
  entity_kind: EntityType,
28
38
  entity_id: str | None = None,
29
39
  dry_run: bool = False,
30
40
  force_index: bool = False,
31
41
  chunk_size: int = 1000,
42
+ show_progress: bool = False,
32
43
  ) -> None:
33
44
  """Stream and index entities for the given kind.
34
45
 
@@ -46,6 +57,7 @@ def run_indexing_for_entity(
46
57
  existing hashes.
47
58
  chunk_size (int): Number of rows fetched per round-trip and passed to
48
59
  the indexer per batch.
60
+ show_progress (bool): When True, logs progress for each processed entity.
49
61
 
50
62
  Returns:
51
63
  None
@@ -60,10 +72,19 @@ def run_indexing_for_entity(
60
72
  else:
61
73
  stmt = q
62
74
 
75
+ total_count = _get_entity_count(stmt) if show_progress else None
76
+
63
77
  stmt = stmt.execution_options(stream_results=True, yield_per=chunk_size)
64
78
  entities = db.session.execute(stmt).scalars()
65
79
 
66
- indexer = Indexer(config=config, dry_run=dry_run, force_index=force_index, chunk_size=chunk_size)
80
+ indexer = Indexer(
81
+ config=config,
82
+ dry_run=dry_run,
83
+ force_index=force_index,
84
+ chunk_size=chunk_size,
85
+ show_progress=show_progress,
86
+ total_count=total_count,
87
+ )
67
88
 
68
89
  with cache_subscription_models():
69
90
  indexer.run(entities)
@@ -29,7 +29,7 @@ from orchestrator.domain.base import ProductBlockModel, ProductModel
29
29
  from orchestrator.domain.lifecycle import (
30
30
  lookup_specialized_type,
31
31
  )
32
- from orchestrator.schemas.process import ProcessSchema
32
+ from orchestrator.schemas.process import ProcessBaseSchema
33
33
  from orchestrator.schemas.workflow import WorkflowSchema
34
34
  from orchestrator.search.core.exceptions import ModelLoadError, ProductNotInRegistryError
35
35
  from orchestrator.search.core.types import LTREE_SEPARATOR, ExtractedField, FieldType
@@ -307,17 +307,39 @@ class ProductTraverser(BaseTraverser):
307
307
 
308
308
 
309
309
  class ProcessTraverser(BaseTraverser):
310
- """Traverser for process entities using ProcessSchema model.
310
+ """Traverser for process entities using ProcessBaseSchema.
311
311
 
312
- Note: Currently extracts only top-level process fields. Could be extended to include:
313
- - Related subscriptions (entity.subscriptions)
314
- - Related workflow information beyond workflow_name
312
+ Only indexes top-level process fields (no subscriptions or steps)
313
+ to keep the index size manageable.
315
314
  """
316
315
 
316
+ EXCLUDED_FIELDS = {"traceback", "failed_reason"}
317
+
318
+ @classmethod
319
+ def _load_model(cls, entity: ProcessTable) -> ProcessBaseSchema | None:
320
+ return cls._load_model_with_schema(entity, ProcessBaseSchema, "process_id")
321
+
317
322
  @classmethod
318
- def _load_model(cls, process: ProcessTable) -> ProcessSchema:
319
- """Load process model using ProcessSchema."""
320
- return cls._load_model_with_schema(process, ProcessSchema, "process_id")
323
+ def get_fields(cls, entity: ProcessTable, pk_name: str, root_name: str) -> list[ExtractedField]: # type: ignore[override]
324
+ """Extract fields from process, excluding fields in EXCLUDED_FIELDS."""
325
+ try:
326
+ model = cls._load_model(entity)
327
+ if model is None:
328
+ return []
329
+
330
+ return sorted(
331
+ (
332
+ field
333
+ for field in cls.traverse(model, root_name)
334
+ if field.path.split(LTREE_SEPARATOR)[-1] not in cls.EXCLUDED_FIELDS
335
+ ),
336
+ key=lambda f: f.path,
337
+ )
338
+
339
+ except (ProductNotInRegistryError, ModelLoadError) as e:
340
+ entity_id = getattr(entity, pk_name, "unknown")
341
+ logger.error(f"Failed to extract fields from {entity.__class__.__name__}", id=str(entity_id), error=str(e))
342
+ return []
321
343
 
322
344
 
323
345
  class WorkflowTraverser(BaseTraverser):