orchestrator-core 4.6.3__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.3 → orchestrator_core-4.6.4}/PKG-INFO +4 -4
  2. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/__init__.py +1 -1
  3. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/search/index_llm.py +8 -0
  4. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/filters/date_filters.py +4 -5
  5. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/indexing/indexer.py +43 -7
  6. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/indexing/registry.py +16 -1
  7. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/indexing/tasks.py +22 -1
  8. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/indexing/traverse.py +30 -8
  9. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/query/results.py +60 -2
  10. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/retrieval/retrievers/__init__.py +2 -0
  11. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/retrieval/retrievers/base.py +8 -1
  12. orchestrator_core-4.6.4/orchestrator/search/retrieval/retrievers/process.py +225 -0
  13. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/pyproject.toml +3 -3
  14. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/LICENSE +0 -0
  15. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/README.md +0 -0
  16. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/agentic_app.py +0 -0
  17. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/__init__.py +0 -0
  18. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/__init__.py +0 -0
  19. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/api.py +0 -0
  20. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/__init__.py +0 -0
  21. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/agent.py +0 -0
  22. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/health.py +0 -0
  23. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/processes.py +0 -0
  24. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/product_blocks.py +0 -0
  25. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/products.py +0 -0
  26. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/resource_types.py +0 -0
  27. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/search.py +0 -0
  28. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/settings.py +0 -0
  29. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/subscription_customer_descriptions.py +0 -0
  30. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/subscriptions.py +0 -0
  31. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/translations.py +0 -0
  32. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/user.py +0 -0
  33. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/workflows.py +0 -0
  34. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/ws.py +0 -0
  35. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/error_handling.py +0 -0
  36. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/helpers.py +0 -0
  37. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/models.py +0 -0
  38. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/app.py +0 -0
  39. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/__init__.py +0 -0
  40. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/database.py +0 -0
  41. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/domain_gen_helpers/__init__.py +0 -0
  42. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/domain_gen_helpers/fixed_input_helpers.py +0 -0
  43. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/domain_gen_helpers/helpers.py +0 -0
  44. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/domain_gen_helpers/product_block_helpers.py +0 -0
  45. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/domain_gen_helpers/product_helpers.py +0 -0
  46. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/domain_gen_helpers/resource_type_helpers.py +0 -0
  47. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/domain_gen_helpers/types.py +0 -0
  48. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generate.py +0 -0
  49. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/__init__.py +0 -0
  50. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/custom_templates/README +0 -0
  51. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/custom_templates/additional_create_imports.j2 +0 -0
  52. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/custom_templates/additional_create_input_fields.j2 +0 -0
  53. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/custom_templates/additional_create_steps.j2 +0 -0
  54. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/custom_templates/additional_modify_imports.j2 +0 -0
  55. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/custom_templates/additional_modify_input_fields.j2 +0 -0
  56. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/custom_templates/additional_modify_steps.j2 +0 -0
  57. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/custom_templates/additional_terminate_imports.j2 +0 -0
  58. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/custom_templates/additional_terminate_input_fields.j2 +0 -0
  59. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/custom_templates/additional_terminate_steps.j2 +0 -0
  60. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/generator/__init__.py +0 -0
  61. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/generator/enums.py +0 -0
  62. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/generator/helpers.py +0 -0
  63. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/generator/migration.py +0 -0
  64. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/generator/product.py +0 -0
  65. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/generator/product_block.py +0 -0
  66. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/generator/settings.py +0 -0
  67. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/generator/translations.py +0 -0
  68. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/generator/unittest.py +0 -0
  69. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/generator/validations.py +0 -0
  70. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/generator/workflow.py +0 -0
  71. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/products/workshop/circuit.yaml +0 -0
  72. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/products/workshop/node.yaml +0 -0
  73. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/products/workshop/user.yaml +0 -0
  74. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/products/workshop/user_group.yaml +0 -0
  75. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/additional_create_imports.j2 +0 -0
  76. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/additional_create_steps.j2 +0 -0
  77. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/additional_modify_imports.j2 +0 -0
  78. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/additional_modify_steps.j2 +0 -0
  79. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/additional_terminate_steps.j2 +0 -0
  80. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/constrained_int_definitions.j2 +0 -0
  81. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/create_data_head.j2 +0 -0
  82. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/create_product.j2 +0 -0
  83. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/enums.j2 +0 -0
  84. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/lazy_workflow_instance.j2 +0 -0
  85. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/list_definitions.j2 +0 -0
  86. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/macros.j2 +0 -0
  87. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/modify_product.j2 +0 -0
  88. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/new_product_migration.j2 +0 -0
  89. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/product.j2 +0 -0
  90. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/product_block.j2 +0 -0
  91. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/shared_forms.j2 +0 -0
  92. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/shared_workflows.j2 +0 -0
  93. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/subscription_model_registry.j2 +0 -0
  94. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/terminate_product.j2 +0 -0
  95. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/test_create_workflow.j2 +0 -0
  96. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/test_modify_workflow.j2 +0 -0
  97. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/test_product_type.j2 +0 -0
  98. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/test_terminate_workflow.j2 +0 -0
  99. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/test_validate_workflow.j2 +0 -0
  100. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/validate_product.j2 +0 -0
  101. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/helpers/__init__.py +0 -0
  102. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/helpers/input_helpers.py +0 -0
  103. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/helpers/print_helpers.py +0 -0
  104. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/main.py +0 -0
  105. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/migrate_domain_models.py +0 -0
  106. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/migrate_tasks.py +0 -0
  107. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/migrate_workflows.py +0 -0
  108. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/migration_helpers.py +0 -0
  109. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/scheduler.py +0 -0
  110. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/search/__init__.py +0 -0
  111. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/search/display.py +0 -0
  112. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/search/resize_embedding.py +0 -0
  113. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/search/search_explore.py +0 -0
  114. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/search/speedtest.py +0 -0
  115. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/config/__init__.py +0 -0
  116. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/config/assignee.py +0 -0
  117. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/__init__.py +0 -0
  118. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/database.py +0 -0
  119. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/filters/__init__.py +0 -0
  120. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/filters/filters.py +0 -0
  121. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/filters/process.py +0 -0
  122. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/filters/product.py +0 -0
  123. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/filters/product_block.py +0 -0
  124. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/filters/resource_type.py +0 -0
  125. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/filters/search_filters/__init__.py +0 -0
  126. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/filters/search_filters/inferred_filter.py +0 -0
  127. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/filters/subscription.py +0 -0
  128. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/filters/workflow.py +0 -0
  129. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/helpers.py +0 -0
  130. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/listeners.py +0 -0
  131. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/loaders.py +0 -0
  132. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/models.py +0 -0
  133. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/queries/__init__.py +0 -0
  134. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/queries/subscription.py +0 -0
  135. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/queries/subscription_instance.py +0 -0
  136. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/range/__init__.py +0 -0
  137. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/range/range.py +0 -0
  138. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/sorting/__init__.py +0 -0
  139. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/sorting/process.py +0 -0
  140. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/sorting/product.py +0 -0
  141. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/sorting/product_block.py +0 -0
  142. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/sorting/resource_type.py +0 -0
  143. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/sorting/sorting.py +0 -0
  144. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/sorting/subscription.py +0 -0
  145. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/sorting/workflow.py +0 -0
  146. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/devtools/__init__.py +0 -0
  147. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/devtools/populator.py +0 -0
  148. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/devtools/scripts/__init__.py +0 -0
  149. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/devtools/scripts/migrate_20.py +0 -0
  150. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/devtools/scripts/migrate_30.py +0 -0
  151. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/devtools/scripts/shared.py +0 -0
  152. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/distlock/__init__.py +0 -0
  153. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/distlock/distlock_manager.py +0 -0
  154. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/distlock/managers/__init__.py +0 -0
  155. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/distlock/managers/memory_distlock_manager.py +0 -0
  156. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/distlock/managers/redis_distlock_manager.py +0 -0
  157. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/domain/__init__.py +0 -0
  158. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/domain/base.py +0 -0
  159. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/domain/context_cache.py +0 -0
  160. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/domain/customer_description.py +0 -0
  161. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/domain/helpers.py +0 -0
  162. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/domain/lifecycle.py +0 -0
  163. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/domain/subscription_instance_transform.py +0 -0
  164. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/exception_handlers.py +0 -0
  165. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/forms/__init__.py +0 -0
  166. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/forms/validators/__init__.py +0 -0
  167. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/forms/validators/customer_contact_list.py +0 -0
  168. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/forms/validators/customer_id.py +0 -0
  169. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/forms/validators/display_subscription.py +0 -0
  170. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/forms/validators/network_type_validators.py +0 -0
  171. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/forms/validators/product_id.py +0 -0
  172. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/__init__.py +0 -0
  173. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/autoregistration.py +0 -0
  174. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/extensions/__init__.py +0 -0
  175. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/extensions/model_cache.py +0 -0
  176. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/extensions/stats.py +0 -0
  177. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/loaders/__init__.py +0 -0
  178. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/loaders/subscriptions.py +0 -0
  179. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/mutations/customer_description.py +0 -0
  180. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/mutations/start_process.py +0 -0
  181. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/pagination.py +0 -0
  182. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/resolvers/__init__.py +0 -0
  183. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/resolvers/customer.py +0 -0
  184. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/resolvers/helpers.py +0 -0
  185. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/resolvers/process.py +0 -0
  186. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/resolvers/product.py +0 -0
  187. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/resolvers/product_block.py +0 -0
  188. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/resolvers/resource_type.py +0 -0
  189. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/resolvers/scheduled_tasks.py +0 -0
  190. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/resolvers/settings.py +0 -0
  191. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/resolvers/subscription.py +0 -0
  192. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/resolvers/version.py +0 -0
  193. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/resolvers/workflow.py +0 -0
  194. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/schema.py +0 -0
  195. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/__init__.py +0 -0
  196. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/customer.py +0 -0
  197. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/customer_description.py +0 -0
  198. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/errors.py +0 -0
  199. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/fixed_input.py +0 -0
  200. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/helpers.py +0 -0
  201. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/process.py +0 -0
  202. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/product.py +0 -0
  203. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/product_block.py +0 -0
  204. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/resource_type.py +0 -0
  205. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/scheduled_task.py +0 -0
  206. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/settings.py +0 -0
  207. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/strawberry_pydantic_patch.py +0 -0
  208. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/subscription.py +0 -0
  209. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/version.py +0 -0
  210. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/workflow.py +0 -0
  211. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/types.py +0 -0
  212. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/utils/__init__.py +0 -0
  213. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/utils/create_resolver_error_handler.py +0 -0
  214. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/utils/get_query_loaders.py +0 -0
  215. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/utils/get_selected_fields.py +0 -0
  216. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/utils/get_selected_paths.py +0 -0
  217. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/utils/get_subscription_product_blocks.py +0 -0
  218. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/utils/is_query_detailed.py +0 -0
  219. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/utils/override_class.py +0 -0
  220. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/utils/to_graphql_result_page.py +0 -0
  221. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/llm_settings.py +0 -0
  222. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/log_config.py +0 -0
  223. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/metrics/__init__.py +0 -0
  224. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/metrics/engine.py +0 -0
  225. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/metrics/init.py +0 -0
  226. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/metrics/processes.py +0 -0
  227. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/metrics/subscriptions.py +0 -0
  228. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/README +0 -0
  229. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/__init__.py +0 -0
  230. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/alembic.ini +0 -0
  231. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/env.py +0 -0
  232. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/helpers.py +0 -0
  233. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/script.py.mako +0 -0
  234. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/templates/alembic.ini.j2 +0 -0
  235. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/templates/env.py.j2 +0 -0
  236. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/templates/helpers.py.j2 +0 -0
  237. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2020-10-19_3323bcb934e7_fix_tsv_triggers.py +0 -0
  238. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2020-10-19_a76b9185b334_add_generic_workflows_to_core.py +0 -0
  239. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2020-10-19_c112305b07d3_initial_schema_migration.py +0 -0
  240. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2021-04-06_3c8b9185c221_add_validate_products_task.py +0 -0
  241. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2021-07-01_6896a54e9483_add_product_block_relations.py +0 -0
  242. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2021-11-17_19cdd3ab86f6_fix_parse_websearch.py +0 -0
  243. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2022-02-16_bed6bc0b197a_rename_parent_and_child_block_relations.py +0 -0
  244. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2023-03-06_e05bb1967eff_add_subscriptions_search_view.py +0 -0
  245. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2023-05-25_b1970225392d_add_subscription_metadata_workflow.py +0 -0
  246. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2023-06-28_a09ac125ea73_add_throttling_to_refresh_subscriptions.py +0 -0
  247. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2023-06-28_a09ac125ea73_add_throttling_to_refresh_subscriptions.sql +0 -0
  248. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2023-07-17_165303a20fb1_customer_id_to_varchar.py +0 -0
  249. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2023-07-17_165303a20fb1_customer_id_to_varchar.sql +0 -0
  250. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2023-09-25_da5c9f4cce1c_add_subscription_metadata_to_fulltext_.py +0 -0
  251. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2023-09-25_da5c9f4cce1c_add_subscription_metadata_to_fulltext_.sql +0 -0
  252. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2023-12-06_048219045729_add_workflow_id_to_processes_table.py +0 -0
  253. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2024-09-27_460ec6748e37_add_uuid_search_workaround.py +0 -0
  254. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2024-09-27_460ec6748e37_add_uuid_search_workaround.sql +0 -0
  255. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2025-01-08_4c5859620539_add_version_column_to_subscription.py +0 -0
  256. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2025-01-19_4fjdn13f83ga_add_validate_product_type_task.py +0 -0
  257. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2025-02-12_bac6be6f2b4f_added_input_state_table.py +0 -0
  258. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2025-02-20_68d14db1b8da_make_workflow_description_mandatory.py +0 -0
  259. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2025-03-06_42b3d076a85b_subscription_instance_as_json_function.py +0 -0
  260. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2025-03-06_42b3d076a85b_subscription_instance_as_json_function.sql +0 -0
  261. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2025-04-09_fc5c993a4b4a_add_cascade_constraint_on_processes_.py +0 -0
  262. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2025-05-08_161918133bec_add_is_task_to_workflow.py +0 -0
  263. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2025-07-01_93fc5834c7e5_changed_timestamping_fields_in_process_steps.py +0 -0
  264. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2025-07-04_4b58e336d1bf_deprecating_workflow_target_in_.py +0 -0
  265. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2025-07-28_850dccac3b02_update_description_of_resume_workflows_.py +0 -0
  266. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/py.typed +0 -0
  267. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schedules/__init__.py +0 -0
  268. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schedules/resume_workflows.py +0 -0
  269. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schedules/scheduler.py +0 -0
  270. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schedules/scheduling.py +0 -0
  271. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schedules/task_vacuum.py +0 -0
  272. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schedules/validate_products.py +0 -0
  273. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schedules/validate_subscriptions.py +0 -0
  274. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schemas/__init__.py +0 -0
  275. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schemas/base.py +0 -0
  276. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schemas/engine_settings.py +0 -0
  277. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schemas/fixed_input.py +0 -0
  278. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schemas/problem_detail.py +0 -0
  279. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schemas/process.py +0 -0
  280. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schemas/product.py +0 -0
  281. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schemas/product_block.py +0 -0
  282. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schemas/resource_type.py +0 -0
  283. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schemas/search.py +0 -0
  284. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schemas/search_requests.py +0 -0
  285. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schemas/subscription.py +0 -0
  286. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schemas/subscription_descriptions.py +0 -0
  287. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schemas/workflow.py +0 -0
  288. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/__init__.py +0 -0
  289. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/agent/__init__.py +0 -0
  290. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/agent/agent.py +0 -0
  291. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/agent/handlers.py +0 -0
  292. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/agent/json_patch.py +0 -0
  293. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/agent/prompts.py +0 -0
  294. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/agent/state.py +0 -0
  295. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/agent/tools.py +0 -0
  296. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/agent/validation.py +0 -0
  297. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/aggregations/__init__.py +0 -0
  298. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/aggregations/base.py +0 -0
  299. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/core/__init__.py +0 -0
  300. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/core/embedding.py +0 -0
  301. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/core/exceptions.py +0 -0
  302. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/core/types.py +0 -0
  303. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/core/validators.py +0 -0
  304. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/docs/index.md +0 -0
  305. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/docs/running_local_text_embedding_inference.md +0 -0
  306. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/filters/__init__.py +0 -0
  307. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/filters/base.py +0 -0
  308. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/filters/definitions.py +0 -0
  309. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/filters/ltree_filters.py +0 -0
  310. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/filters/numeric_filter.py +0 -0
  311. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/indexing/__init__.py +0 -0
  312. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/llm_migration.py +0 -0
  313. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/query/__init__.py +0 -0
  314. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/query/builder.py +0 -0
  315. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/query/engine.py +0 -0
  316. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/query/exceptions.py +0 -0
  317. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/query/export.py +0 -0
  318. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/query/mixins.py +0 -0
  319. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/query/queries.py +0 -0
  320. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/query/state.py +0 -0
  321. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/query/validation.py +0 -0
  322. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/retrieval/__init__.py +0 -0
  323. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/retrieval/pagination.py +0 -0
  324. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/retrieval/retrievers/fuzzy.py +0 -0
  325. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/retrieval/retrievers/hybrid.py +0 -0
  326. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/retrieval/retrievers/semantic.py +0 -0
  327. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/retrieval/retrievers/structured.py +0 -0
  328. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/security.py +0 -0
  329. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/services/__init__.py +0 -0
  330. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/services/executors/__init__.py +0 -0
  331. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/services/executors/celery.py +0 -0
  332. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/services/executors/threadpool.py +0 -0
  333. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/services/fixed_inputs.py +0 -0
  334. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/services/input_state.py +0 -0
  335. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/services/process_broadcast_thread.py +0 -0
  336. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/services/processes.py +0 -0
  337. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/services/products.py +0 -0
  338. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/services/resource_types.py +0 -0
  339. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/services/settings.py +0 -0
  340. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/services/settings_env_variables.py +0 -0
  341. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/services/subscription_relations.py +0 -0
  342. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/services/subscriptions.py +0 -0
  343. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/services/tasks.py +0 -0
  344. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/services/translations.py +0 -0
  345. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/services/workflows.py +0 -0
  346. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/settings.py +0 -0
  347. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/targets.py +0 -0
  348. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/types.py +0 -0
  349. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/__init__.py +0 -0
  350. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/auth.py +0 -0
  351. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/crypt.py +0 -0
  352. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/datetime.py +0 -0
  353. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/deprecation_logger.py +0 -0
  354. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/docs.py +0 -0
  355. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/enrich_process.py +0 -0
  356. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/errors.py +0 -0
  357. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/expose_settings.py +0 -0
  358. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/fixed_inputs.py +0 -0
  359. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/functional.py +0 -0
  360. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/get_subscription_dict.py +0 -0
  361. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/get_updated_properties.py +0 -0
  362. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/helpers.py +0 -0
  363. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/json.py +0 -0
  364. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/redis.py +0 -0
  365. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/redis_client.py +0 -0
  366. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/search_query.py +0 -0
  367. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/state.py +0 -0
  368. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/strings.py +0 -0
  369. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/validate_data_version.py +0 -0
  370. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/version.py +0 -0
  371. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/websocket/__init__.py +0 -0
  372. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/websocket/managers/broadcast_websocket_manager.py +0 -0
  373. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/websocket/managers/memory_websocket_manager.py +0 -0
  374. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/websocket/websocket_manager.py +0 -0
  375. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/workflow.py +0 -0
  376. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/workflows/__init__.py +0 -0
  377. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/workflows/modify_note.py +0 -0
  378. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/workflows/removed_workflow.py +0 -0
  379. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/workflows/steps.py +0 -0
  380. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/workflows/tasks/__init__.py +0 -0
  381. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/workflows/tasks/cleanup_tasks_log.py +0 -0
  382. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/workflows/tasks/resume_workflows.py +0 -0
  383. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/workflows/tasks/validate_product_type.py +0 -0
  384. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/workflows/tasks/validate_products.py +0 -0
  385. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/workflows/translations/en-GB.json +0 -0
  386. {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/workflows/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orchestrator-core
3
- Version: 4.6.3
3
+ Version: 4.6.4
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.15
@@ -42,7 +42,7 @@ Requires-Dist: fastapi-etag==0.4.0
42
42
  Requires-Dist: itsdangerous>=2.2.0
43
43
  Requires-Dist: jinja2==3.1.6
44
44
  Requires-Dist: more-itertools~=10.8.0
45
- Requires-Dist: nwa-stdlib~=1.10.3
45
+ Requires-Dist: nwa-stdlib~=1.11.0
46
46
  Requires-Dist: oauth2-lib>=2.5.0
47
47
  Requires-Dist: orjson==3.11.4
48
48
  Requires-Dist: pgvector>=0.4.1
@@ -54,11 +54,11 @@ Requires-Dist: pydantic[email]~=2.12.4
54
54
  Requires-Dist: python-dateutil==2.9.0.post0
55
55
  Requires-Dist: python-rapidjson>=1.22,<1.23
56
56
  Requires-Dist: pytz==2025.2
57
- Requires-Dist: redis==5.1.1
57
+ Requires-Dist: redis==5.3.1
58
58
  Requires-Dist: semver==3.0.4
59
59
  Requires-Dist: sentry-sdk[fastapi]>=2.29.1
60
60
  Requires-Dist: sqlalchemy==2.0.44
61
- Requires-Dist: sqlalchemy-utils==0.41.2
61
+ Requires-Dist: sqlalchemy-utils==0.42.0
62
62
  Requires-Dist: strawberry-graphql>=0.281.0,<0.285.0
63
63
  Requires-Dist: structlog>=25.4.0
64
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.3"
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
 
@@ -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):
@@ -139,6 +139,63 @@ def format_aggregation_response(
139
139
  )
140
140
 
141
141
 
142
+ def truncate_text_with_highlights(
143
+ text: str, highlight_indices: list[tuple[int, int]] | None = None, max_length: int = 500, context_chars: int = 100
144
+ ) -> tuple[str, list[tuple[int, int]] | None]:
145
+ """Truncate text to max_length while preserving context around the first highlight.
146
+
147
+ Args:
148
+ text: The text to truncate
149
+ highlight_indices: List of (start, end) tuples indicating highlight positions, or None
150
+ max_length: Maximum length of the returned text
151
+ context_chars: Number of characters to show before and after the first highlight
152
+
153
+ Returns:
154
+ Tuple of (truncated_text, adjusted_highlight_indices)
155
+ """
156
+ # If text is short enough, return as-is
157
+ if len(text) <= max_length:
158
+ return text, highlight_indices
159
+
160
+ # If no highlights, truncate from beginning
161
+ if not highlight_indices:
162
+ truncated_text = text[:max_length]
163
+ suffix = "..." if len(text) > max_length else ""
164
+ return truncated_text + suffix, None
165
+
166
+ # Use first highlight to determine what to show
167
+ first_highlight_start = highlight_indices[0][0]
168
+
169
+ # Calculate start position: try to center around first highlight
170
+ start = max(0, first_highlight_start - context_chars)
171
+ end = min(len(text), start + max_length)
172
+
173
+ # Adjust start if we hit the end boundary
174
+ if end == len(text) and (end - start) < max_length:
175
+ start = max(0, end - max_length)
176
+
177
+ truncated_text = text[start:end]
178
+
179
+ # Add ellipsis to indicate truncation
180
+ truncated_from_start = start > 0
181
+ truncated_from_end = end < len(text)
182
+
183
+ if truncated_from_start:
184
+ truncated_text = "..." + truncated_text
185
+ if truncated_from_end:
186
+ truncated_text = truncated_text + "..."
187
+
188
+ # Adjust highlight indices to be relative to truncated text
189
+ offset = start - (3 if truncated_from_start else 0) # Account for leading "..."
190
+ adjusted_indices = []
191
+ for hl_start, hl_end in highlight_indices:
192
+ # Only include highlights that are within the truncated range
193
+ if hl_start >= start and hl_end <= end:
194
+ adjusted_indices.append((hl_start - offset, hl_end - offset))
195
+
196
+ return truncated_text, adjusted_indices if adjusted_indices else None
197
+
198
+
142
199
  def generate_highlight_indices(text: str, term: str) -> list[tuple[int, int]]:
143
200
  """Finds all occurrences of individual words from the term, including both word boundary and substring matches."""
144
201
  import re
@@ -201,8 +258,9 @@ def format_search_response(
201
258
  if not isinstance(path, str):
202
259
  path = str(path)
203
260
 
204
- highlight_indices = generate_highlight_indices(text, user_query) or None
205
- matching_field = MatchingField(text=text, path=path, highlight_indices=highlight_indices)
261
+ highlight_indices = generate_highlight_indices(text, user_query)
262
+ truncated_text, adjusted_indices = truncate_text_with_highlights(text, highlight_indices)
263
+ matching_field = MatchingField(text=truncated_text, path=path, highlight_indices=adjusted_indices)
206
264
 
207
265
  elif not user_query and query.filters and metadata.search_type == "structured":
208
266
  # Structured search (filter-only)
@@ -14,6 +14,7 @@
14
14
  from .base import Retriever
15
15
  from .fuzzy import FuzzyRetriever
16
16
  from .hybrid import RrfHybridRetriever
17
+ from .process import ProcessHybridRetriever
17
18
  from .semantic import SemanticRetriever
18
19
  from .structured import StructuredRetriever
19
20
 
@@ -21,6 +22,7 @@ __all__ = [
21
22
  "Retriever",
22
23
  "FuzzyRetriever",
23
24
  "RrfHybridRetriever",
25
+ "ProcessHybridRetriever",
24
26
  "SemanticRetriever",
25
27
  "StructuredRetriever",
26
28
  ]
@@ -17,7 +17,7 @@ from decimal import Decimal
17
17
  import structlog
18
18
  from sqlalchemy import BindParameter, Numeric, Select, literal
19
19
 
20
- from orchestrator.search.core.types import FieldType, SearchMetadata
20
+ from orchestrator.search.core.types import EntityType, FieldType, SearchMetadata
21
21
  from orchestrator.search.query.queries import ExportQuery, SelectQuery
22
22
 
23
23
  from ..pagination import PageCursor
@@ -63,12 +63,15 @@ class Retriever(ABC):
63
63
  Returns:
64
64
  A concrete retriever instance based on available search criteria
65
65
  """
66
+
66
67
  from .fuzzy import FuzzyRetriever
67
68
  from .hybrid import RrfHybridRetriever
69
+ from .process import ProcessHybridRetriever
68
70
  from .semantic import SemanticRetriever
69
71
  from .structured import StructuredRetriever
70
72
 
71
73
  fuzzy_term = query.fuzzy_term
74
+ is_process = query.entity_type == EntityType.PROCESS
72
75
 
73
76
  # If vector_query exists but embedding generation failed, fall back to fuzzy search with full query text
74
77
  if query_embedding is None and query.vector_query is not None and query.query_text is not None:
@@ -76,10 +79,14 @@ class Retriever(ABC):
76
79
 
77
80
  # Select retriever based on available search criteria
78
81
  if query_embedding is not None and fuzzy_term is not None:
82
+ if is_process:
83
+ return ProcessHybridRetriever(query_embedding, fuzzy_term, cursor)
79
84
  return RrfHybridRetriever(query_embedding, fuzzy_term, cursor)
80
85
  if query_embedding is not None:
81
86
  return SemanticRetriever(query_embedding, cursor)
82
87
  if fuzzy_term is not None:
88
+ if is_process:
89
+ return ProcessHybridRetriever(None, fuzzy_term, cursor)
83
90
  return FuzzyRetriever(fuzzy_term, cursor)
84
91
 
85
92
  return StructuredRetriever(cursor)