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.
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/PKG-INFO +4 -4
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/__init__.py +1 -1
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/search/index_llm.py +8 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/filters/date_filters.py +4 -5
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/indexing/indexer.py +43 -7
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/indexing/registry.py +16 -1
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/indexing/tasks.py +22 -1
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/indexing/traverse.py +30 -8
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/query/results.py +60 -2
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/retrieval/retrievers/__init__.py +2 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/retrieval/retrievers/base.py +8 -1
- orchestrator_core-4.6.4/orchestrator/search/retrieval/retrievers/process.py +225 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/pyproject.toml +3 -3
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/LICENSE +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/README.md +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/agentic_app.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/api.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/agent.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/health.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/processes.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/product_blocks.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/products.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/resource_types.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/search.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/settings.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/subscription_customer_descriptions.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/subscriptions.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/translations.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/user.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/workflows.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/api_v1/endpoints/ws.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/error_handling.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/helpers.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/api/models.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/app.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/database.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/domain_gen_helpers/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/domain_gen_helpers/fixed_input_helpers.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/domain_gen_helpers/helpers.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/domain_gen_helpers/product_block_helpers.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/domain_gen_helpers/product_helpers.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/domain_gen_helpers/resource_type_helpers.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/domain_gen_helpers/types.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generate.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/custom_templates/README +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/custom_templates/additional_create_imports.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/custom_templates/additional_create_input_fields.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/custom_templates/additional_create_steps.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/custom_templates/additional_modify_imports.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/custom_templates/additional_modify_input_fields.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/custom_templates/additional_modify_steps.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/custom_templates/additional_terminate_imports.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/custom_templates/additional_terminate_input_fields.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/custom_templates/additional_terminate_steps.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/generator/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/generator/enums.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/generator/helpers.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/generator/migration.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/generator/product.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/generator/product_block.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/generator/settings.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/generator/translations.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/generator/unittest.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/generator/validations.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/generator/workflow.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/products/workshop/circuit.yaml +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/products/workshop/node.yaml +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/products/workshop/user.yaml +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/products/workshop/user_group.yaml +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/additional_create_imports.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/additional_create_steps.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/additional_modify_imports.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/additional_modify_steps.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/additional_terminate_steps.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/constrained_int_definitions.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/create_data_head.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/create_product.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/enums.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/lazy_workflow_instance.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/list_definitions.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/macros.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/modify_product.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/new_product_migration.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/product.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/product_block.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/shared_forms.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/shared_workflows.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/subscription_model_registry.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/terminate_product.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/test_create_workflow.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/test_modify_workflow.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/test_product_type.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/test_terminate_workflow.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/test_validate_workflow.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/generator/templates/validate_product.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/helpers/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/helpers/input_helpers.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/helpers/print_helpers.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/main.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/migrate_domain_models.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/migrate_tasks.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/migrate_workflows.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/migration_helpers.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/scheduler.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/search/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/search/display.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/search/resize_embedding.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/search/search_explore.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/cli/search/speedtest.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/config/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/config/assignee.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/database.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/filters/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/filters/filters.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/filters/process.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/filters/product.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/filters/product_block.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/filters/resource_type.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/filters/search_filters/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/filters/search_filters/inferred_filter.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/filters/subscription.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/filters/workflow.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/helpers.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/listeners.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/loaders.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/models.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/queries/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/queries/subscription.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/queries/subscription_instance.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/range/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/range/range.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/sorting/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/sorting/process.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/sorting/product.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/sorting/product_block.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/sorting/resource_type.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/sorting/sorting.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/sorting/subscription.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/db/sorting/workflow.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/devtools/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/devtools/populator.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/devtools/scripts/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/devtools/scripts/migrate_20.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/devtools/scripts/migrate_30.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/devtools/scripts/shared.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/distlock/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/distlock/distlock_manager.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/distlock/managers/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/distlock/managers/memory_distlock_manager.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/distlock/managers/redis_distlock_manager.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/domain/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/domain/base.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/domain/context_cache.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/domain/customer_description.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/domain/helpers.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/domain/lifecycle.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/domain/subscription_instance_transform.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/exception_handlers.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/forms/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/forms/validators/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/forms/validators/customer_contact_list.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/forms/validators/customer_id.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/forms/validators/display_subscription.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/forms/validators/network_type_validators.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/forms/validators/product_id.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/autoregistration.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/extensions/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/extensions/model_cache.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/extensions/stats.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/loaders/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/loaders/subscriptions.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/mutations/customer_description.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/mutations/start_process.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/pagination.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/resolvers/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/resolvers/customer.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/resolvers/helpers.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/resolvers/process.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/resolvers/product.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/resolvers/product_block.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/resolvers/resource_type.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/resolvers/scheduled_tasks.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/resolvers/settings.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/resolvers/subscription.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/resolvers/version.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/resolvers/workflow.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/schema.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/customer.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/customer_description.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/errors.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/fixed_input.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/helpers.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/process.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/product.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/product_block.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/resource_type.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/scheduled_task.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/settings.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/strawberry_pydantic_patch.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/subscription.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/version.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/schemas/workflow.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/types.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/utils/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/utils/create_resolver_error_handler.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/utils/get_query_loaders.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/utils/get_selected_fields.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/utils/get_selected_paths.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/utils/get_subscription_product_blocks.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/utils/is_query_detailed.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/utils/override_class.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/graphql/utils/to_graphql_result_page.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/llm_settings.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/log_config.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/metrics/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/metrics/engine.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/metrics/init.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/metrics/processes.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/metrics/subscriptions.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/README +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/alembic.ini +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/env.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/helpers.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/script.py.mako +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/templates/alembic.ini.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/templates/env.py.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/templates/helpers.py.j2 +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2020-10-19_3323bcb934e7_fix_tsv_triggers.py +0 -0
- {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
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2020-10-19_c112305b07d3_initial_schema_migration.py +0 -0
- {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
- {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
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/migrations/versions/schema/2021-11-17_19cdd3ab86f6_fix_parse_websearch.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/py.typed +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schedules/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schedules/resume_workflows.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schedules/scheduler.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schedules/scheduling.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schedules/task_vacuum.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schedules/validate_products.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schedules/validate_subscriptions.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schemas/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schemas/base.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schemas/engine_settings.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schemas/fixed_input.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schemas/problem_detail.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schemas/process.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schemas/product.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schemas/product_block.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schemas/resource_type.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schemas/search.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schemas/search_requests.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schemas/subscription.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schemas/subscription_descriptions.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/schemas/workflow.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/agent/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/agent/agent.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/agent/handlers.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/agent/json_patch.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/agent/prompts.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/agent/state.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/agent/tools.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/agent/validation.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/aggregations/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/aggregations/base.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/core/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/core/embedding.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/core/exceptions.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/core/types.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/core/validators.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/docs/index.md +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/docs/running_local_text_embedding_inference.md +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/filters/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/filters/base.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/filters/definitions.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/filters/ltree_filters.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/filters/numeric_filter.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/indexing/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/llm_migration.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/query/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/query/builder.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/query/engine.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/query/exceptions.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/query/export.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/query/mixins.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/query/queries.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/query/state.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/query/validation.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/retrieval/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/retrieval/pagination.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/retrieval/retrievers/fuzzy.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/retrieval/retrievers/hybrid.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/retrieval/retrievers/semantic.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/retrieval/retrievers/structured.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/security.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/services/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/services/executors/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/services/executors/celery.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/services/executors/threadpool.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/services/fixed_inputs.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/services/input_state.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/services/process_broadcast_thread.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/services/processes.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/services/products.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/services/resource_types.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/services/settings.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/services/settings_env_variables.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/services/subscription_relations.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/services/subscriptions.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/services/tasks.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/services/translations.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/services/workflows.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/settings.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/targets.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/types.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/auth.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/crypt.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/datetime.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/deprecation_logger.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/docs.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/enrich_process.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/errors.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/expose_settings.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/fixed_inputs.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/functional.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/get_subscription_dict.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/get_updated_properties.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/helpers.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/json.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/redis.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/redis_client.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/search_query.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/state.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/strings.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/utils/validate_data_version.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/version.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/websocket/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/websocket/managers/broadcast_websocket_manager.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/websocket/managers/memory_websocket_manager.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/websocket/websocket_manager.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/workflow.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/workflows/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/workflows/modify_note.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/workflows/removed_workflow.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/workflows/steps.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/workflows/tasks/__init__.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/workflows/tasks/cleanup_tasks_log.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/workflows/tasks/resume_workflows.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/workflows/tasks/validate_product_type.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/workflows/tasks/validate_products.py +0 -0
- {orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/workflows/translations/en-GB.json +0 -0
- {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
|
+
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.
|
|
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.
|
|
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.
|
|
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
|
|
@@ -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
|
|
{orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/filters/date_filters.py
RENAMED
|
@@ -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
|
-
|
|
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 =
|
|
48
|
-
from_datetime =
|
|
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__(
|
|
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
|
-
|
|
125
|
-
|
|
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."
|
{orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/indexing/registry.py
RENAMED
|
@@ -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:
|
|
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(
|
|
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)
|
{orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/indexing/traverse.py
RENAMED
|
@@ -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
|
|
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
|
|
310
|
+
"""Traverser for process entities using ProcessBaseSchema.
|
|
311
311
|
|
|
312
|
-
|
|
313
|
-
|
|
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
|
|
319
|
-
"""
|
|
320
|
-
|
|
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)
|
|
205
|
-
|
|
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
|
]
|
{orchestrator_core-4.6.3 → orchestrator_core-4.6.4}/orchestrator/search/retrieval/retrievers/base.py
RENAMED
|
@@ -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)
|