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