orchestrator-core 4.5.1a1__py3-none-any.whl → 4.5.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. orchestrator/__init__.py +3 -12
  2. orchestrator/agentic_app.py +48 -29
  3. orchestrator/api/api_v1/api.py +8 -6
  4. orchestrator/api/api_v1/endpoints/processes.py +2 -0
  5. orchestrator/api/api_v1/endpoints/search.py +26 -7
  6. orchestrator/cli/main.py +2 -2
  7. orchestrator/cli/search/__init__.py +32 -0
  8. orchestrator/devtools/populator.py +16 -0
  9. orchestrator/domain/base.py +2 -7
  10. orchestrator/domain/lifecycle.py +24 -7
  11. orchestrator/llm_settings.py +9 -3
  12. orchestrator/log_config.py +1 -0
  13. orchestrator/migrations/helpers.py +7 -1
  14. orchestrator/schemas/search.py +13 -0
  15. orchestrator/schemas/workflow.py +1 -0
  16. orchestrator/search/agent/__init__.py +15 -2
  17. orchestrator/search/agent/agent.py +30 -15
  18. orchestrator/search/agent/prompts.py +75 -37
  19. orchestrator/search/agent/state.py +13 -0
  20. orchestrator/search/agent/tools.py +148 -11
  21. orchestrator/search/core/__init__.py +12 -0
  22. orchestrator/search/core/embedding.py +13 -4
  23. orchestrator/search/core/exceptions.py +14 -0
  24. orchestrator/search/core/types.py +15 -0
  25. orchestrator/search/core/validators.py +13 -0
  26. orchestrator/search/docs/running_local_text_embedding_inference.md +1 -0
  27. orchestrator/search/filters/__init__.py +13 -0
  28. orchestrator/search/filters/base.py +84 -61
  29. orchestrator/search/filters/date_filters.py +13 -0
  30. orchestrator/search/filters/definitions.py +16 -2
  31. orchestrator/search/filters/ltree_filters.py +16 -3
  32. orchestrator/search/filters/numeric_filter.py +13 -0
  33. orchestrator/search/indexing/__init__.py +13 -0
  34. orchestrator/search/indexing/indexer.py +14 -3
  35. orchestrator/search/indexing/registry.py +13 -0
  36. orchestrator/search/indexing/tasks.py +17 -1
  37. orchestrator/search/indexing/traverse.py +17 -5
  38. orchestrator/search/llm_migration.py +108 -0
  39. orchestrator/search/retrieval/__init__.py +13 -0
  40. orchestrator/search/retrieval/builder.py +23 -8
  41. orchestrator/search/retrieval/engine.py +36 -34
  42. orchestrator/search/retrieval/exceptions.py +90 -0
  43. orchestrator/search/retrieval/pagination.py +13 -0
  44. orchestrator/search/retrieval/retrievers/__init__.py +26 -0
  45. orchestrator/search/retrieval/retrievers/base.py +123 -0
  46. orchestrator/search/retrieval/retrievers/fuzzy.py +94 -0
  47. orchestrator/search/retrieval/retrievers/hybrid.py +277 -0
  48. orchestrator/search/retrieval/retrievers/semantic.py +94 -0
  49. orchestrator/search/retrieval/retrievers/structured.py +39 -0
  50. orchestrator/search/retrieval/utils.py +21 -7
  51. orchestrator/search/retrieval/validation.py +54 -76
  52. orchestrator/search/schemas/__init__.py +12 -0
  53. orchestrator/search/schemas/parameters.py +13 -0
  54. orchestrator/search/schemas/results.py +15 -1
  55. orchestrator/services/processes.py +2 -1
  56. orchestrator/settings.py +7 -0
  57. orchestrator/utils/state.py +6 -1
  58. orchestrator/workflows/steps.py +16 -1
  59. orchestrator/workflows/tasks/validate_product_type.py +3 -3
  60. {orchestrator_core-4.5.1a1.dist-info → orchestrator_core-4.5.3.dist-info}/METADATA +14 -12
  61. {orchestrator_core-4.5.1a1.dist-info → orchestrator_core-4.5.3.dist-info}/RECORD +67 -60
  62. orchestrator/migrations/versions/schema/2025-08-12_52b37b5b2714_search_index_model_for_llm_integration.py +0 -95
  63. orchestrator/search/retrieval/retriever.py +0 -447
  64. /orchestrator/cli/{index_llm.py → search/index_llm.py} +0 -0
  65. /orchestrator/cli/{resize_embedding.py → search/resize_embedding.py} +0 -0
  66. /orchestrator/cli/{search_explore.py → search/search_explore.py} +0 -0
  67. /orchestrator/cli/{speedtest.py → search/speedtest.py} +0 -0
  68. {orchestrator_core-4.5.1a1.dist-info → orchestrator_core-4.5.3.dist-info}/WHEEL +0 -0
  69. {orchestrator_core-4.5.1a1.dist-info → orchestrator_core-4.5.3.dist-info}/licenses/LICENSE +0 -0
@@ -1,3 +1,16 @@
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
+
1
14
  import uuid
2
15
  from typing import Any, Literal
3
16
 
@@ -1,3 +1,16 @@
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
+
1
14
  from typing import Literal
2
15
 
3
16
  from pydantic import BaseModel, ConfigDict
@@ -39,6 +52,7 @@ class ValueSchema(BaseModel):
39
52
  class LeafInfo(BaseModel):
40
53
  name: str
41
54
  ui_types: list[UIType]
55
+ paths: list[str]
42
56
 
43
57
  model_config = ConfigDict(
44
58
  extra="forbid",
@@ -58,6 +72,6 @@ class ComponentInfo(BaseModel):
58
72
 
59
73
  class TypeDefinition(BaseModel):
60
74
  operators: list[FilterOp]
61
- valueSchema: dict[FilterOp, ValueSchema]
75
+ value_schema: dict[FilterOp, ValueSchema]
62
76
 
63
77
  model_config = ConfigDict(use_enum_values=True)
@@ -492,7 +492,7 @@ def start_process(
492
492
  process id
493
493
 
494
494
  """
495
- pstat = create_process(workflow_key, user_inputs=user_inputs, user=user)
495
+ pstat = create_process(workflow_key, user_inputs=user_inputs, user=user, user_model=user_model)
496
496
 
497
497
  start_func = get_execution_context()["start"]
498
498
  return start_func(pstat, user=user, user_model=user_model, broadcast_func=broadcast_func)
@@ -524,6 +524,7 @@ def restart_process(
524
524
  RESUMABLE_STATUSES = (
525
525
  ProcessStatus.SUSPENDED, # Can be resumed
526
526
  ProcessStatus.WAITING, # Can be retried
527
+ ProcessStatus.AWAITING_CALLBACK, # Can be resumed
527
528
  ProcessStatus.FAILED, # Can be retried
528
529
  ProcessStatus.API_UNAVAILABLE, # subtype of FAILED
529
530
  ProcessStatus.INCONSISTENT_DATA, # subtype of FAILED
orchestrator/settings.py CHANGED
@@ -30,6 +30,12 @@ class ExecutorType(strEnum):
30
30
  THREADPOOL = "threadpool"
31
31
 
32
32
 
33
+ class LifecycleValidationMode(strEnum):
34
+ STRICT = "strict"
35
+ LOOSE = "loose"
36
+ IGNORED = "ignored"
37
+
38
+
33
39
  class AppSettings(BaseSettings):
34
40
  TESTING: bool = True
35
41
  SESSION_SECRET: OrchSecretStr = "".join(secrets.choice(string.ascii_letters) for i in range(16)) # type: ignore
@@ -91,6 +97,7 @@ class AppSettings(BaseSettings):
91
97
  FILTER_BY_MODE: Literal["partial", "exact"] = "exact"
92
98
  EXPOSE_SETTINGS: bool = False
93
99
  EXPOSE_OAUTH_SETTINGS: bool = False
100
+ LIFECYCLE_VALIDATION_MODE: LifecycleValidationMode = LifecycleValidationMode.LOOSE
94
101
 
95
102
 
96
103
  app_settings = AppSettings()
@@ -19,6 +19,7 @@ from typing import Any, cast, get_args
19
19
  from uuid import UUID
20
20
 
21
21
  from orchestrator.domain.base import SubscriptionModel
22
+ from orchestrator.domain.lifecycle import validate_subscription_model_product_type
22
23
  from orchestrator.types import StepFunc, is_list_type, is_optional_type
23
24
  from orchestrator.utils.functional import logger
24
25
  from pydantic_forms.types import (
@@ -135,7 +136,7 @@ def _save_models(state: State) -> None:
135
136
  def _build_arguments(func: StepFunc | InputStepFunc, state: State) -> list: # noqa: C901
136
137
  """Build actual arguments based on step function signature and state.
137
138
 
138
- What the step function requests in its function signature it what this function retrieves from the state or DB.
139
+ What the step function requests in its function signature is what this function retrieves from the state or DB.
139
140
  Domain models are retrieved from the DB (after `subscription_id` lookup in the state). Everything else is
140
141
  retrieved from the state.
141
142
 
@@ -186,6 +187,7 @@ def _build_arguments(func: StepFunc | InputStepFunc, state: State) -> list: # n
186
187
  subscription_id = _get_sub_id(state.get(name))
187
188
  if subscription_id:
188
189
  sub_mod = param.annotation.from_subscription(subscription_id)
190
+ validate_subscription_model_product_type(sub_mod)
189
191
  arguments.append(sub_mod)
190
192
  else:
191
193
  logger.error("Could not find key in state.", key=name, state=state)
@@ -198,12 +200,15 @@ def _build_arguments(func: StepFunc | InputStepFunc, state: State) -> list: # n
198
200
  f"Step function argument '{param.name}' cannot be serialized from database with type 'Any'"
199
201
  )
200
202
  subscriptions = [actual_type.from_subscription(subscription_id) for subscription_id in subscription_ids]
203
+ for sub_mod in subscriptions:
204
+ validate_subscription_model_product_type(sub_mod)
201
205
  arguments.append(subscriptions)
202
206
  elif is_optional_type(param.annotation, SubscriptionModel):
203
207
  subscription_id = _get_sub_id(state.get(name))
204
208
  if subscription_id:
205
209
  # Actual type is first argument from optional type
206
210
  sub_mod = get_args(param.annotation)[0].from_subscription(subscription_id)
211
+ validate_subscription_model_product_type(sub_mod)
207
212
  arguments.append(sub_mod)
208
213
  else:
209
214
  arguments.append(None)
@@ -15,6 +15,7 @@ from copy import deepcopy
15
15
  import structlog
16
16
  from pydantic import ValidationError
17
17
 
18
+ from orchestrator import llm_settings
18
19
  from orchestrator.db import db
19
20
  from orchestrator.db.models import ProcessSubscriptionTable
20
21
  from orchestrator.domain.base import SubscriptionModel
@@ -141,9 +142,23 @@ def set_status(status: SubscriptionLifecycle) -> Step:
141
142
 
142
143
 
143
144
  @step("Refresh subscription search index")
144
- def refresh_subscription_search_index() -> State:
145
+ def refresh_subscription_search_index(subscription: SubscriptionModel | None) -> State:
146
+ """Refresh subscription search index.
147
+
148
+ Args:
149
+ subscription: Subscription to refresh search index.
150
+
151
+ Returns:
152
+ State of the workflow.
153
+
154
+ """
145
155
  try:
146
156
  reset_search_index()
157
+ if llm_settings.SEARCH_ENABLED and subscription:
158
+ from orchestrator.search.core.types import EntityType
159
+ from orchestrator.search.indexing import run_indexing_for_entity
160
+
161
+ run_indexing_for_entity(EntityType.SUBSCRIPTION, str(subscription.subscription_id))
147
162
  except Exception:
148
163
  # Don't fail workflow in case of unexpected error
149
164
  logger.warning("Error updated the subscriptions search index")
@@ -16,7 +16,7 @@ from typing import Any
16
16
  import structlog
17
17
 
18
18
  from orchestrator.db import ProductTable
19
- from orchestrator.forms import FormPage
19
+ from orchestrator.forms import SubmitFormPage
20
20
  from orchestrator.forms.validators import Choice
21
21
  from orchestrator.services.subscriptions import (
22
22
  get_subscriptions_on_product_table_in_sync,
@@ -32,7 +32,7 @@ from pydantic_forms.types import FormGenerator, State
32
32
  logger = structlog.get_logger(__name__)
33
33
 
34
34
 
35
- def create_select_product_type_form() -> type[FormPage]:
35
+ def create_select_product_type_form() -> type[SubmitFormPage]:
36
36
  """Get and create the choices form for the product type."""
37
37
 
38
38
  @cache
@@ -41,7 +41,7 @@ def create_select_product_type_form() -> type[FormPage]:
41
41
 
42
42
  ProductTypeChoices = Choice.__call__("Product Type", get_product_type_choices())
43
43
 
44
- class SelectProductTypeForm(FormPage):
44
+ class SelectProductTypeForm(SubmitFormPage):
45
45
  product_type: ProductTypeChoices # type: ignore
46
46
 
47
47
  return SelectProductTypeForm
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orchestrator-core
3
- Version: 4.5.1a1
3
+ Version: 4.5.3
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
@@ -36,42 +36,44 @@ Requires-Dist: apscheduler>=3.11.0
36
36
  Requires-Dist: click==8.*
37
37
  Requires-Dist: deepmerge==2.0
38
38
  Requires-Dist: deprecated>=1.2.18
39
- Requires-Dist: fastapi~=0.115.2
39
+ Requires-Dist: fastapi~=0.115.14
40
40
  Requires-Dist: fastapi-etag==0.4.0
41
41
  Requires-Dist: itsdangerous>=2.2.0
42
42
  Requires-Dist: jinja2==3.1.6
43
43
  Requires-Dist: more-itertools~=10.7.0
44
- Requires-Dist: nwa-stdlib~=1.9.0
44
+ Requires-Dist: nwa-stdlib~=1.9.2
45
45
  Requires-Dist: oauth2-lib>=2.4.1
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
49
49
  Requires-Dist: psycopg2-binary==2.9.10
50
- Requires-Dist: pydantic-forms>=1.4.0,<=2.1.0
50
+ Requires-Dist: pydantic-forms>=1.4.0
51
51
  Requires-Dist: pydantic-settings~=2.9.1
52
- Requires-Dist: pydantic[email]~=2.11.0
52
+ Requires-Dist: pydantic[email]~=2.11.7
53
53
  Requires-Dist: python-dateutil==2.8.2
54
54
  Requires-Dist: python-rapidjson>=1.18,<1.21
55
55
  Requires-Dist: pytz==2025.2
56
56
  Requires-Dist: redis==5.1.1
57
57
  Requires-Dist: semver==3.0.4
58
- Requires-Dist: sentry-sdk[fastapi]~=2.29.1
58
+ Requires-Dist: sentry-sdk[fastapi]>=2.29.1
59
59
  Requires-Dist: sqlalchemy==2.0.41
60
60
  Requires-Dist: sqlalchemy-utils==0.41.2
61
- Requires-Dist: strawberry-graphql>=0.246.2
61
+ Requires-Dist: strawberry-graphql>=0.281.0
62
62
  Requires-Dist: structlog>=25.4.0
63
63
  Requires-Dist: tabulate==0.9.0
64
64
  Requires-Dist: typer==0.15.4
65
65
  Requires-Dist: uvicorn[standard]~=0.34.0
66
+ Requires-Dist: pydantic-ai-slim ==0.7.0 ; extra == "agent"
67
+ Requires-Dist: ag-ui-protocol>=0.1.8 ; extra == "agent"
68
+ Requires-Dist: litellm>=1.75.7 ; extra == "agent"
66
69
  Requires-Dist: celery~=5.5.1 ; extra == "celery"
67
- Requires-Dist: pydantic-ai-slim ==0.7.0 ; extra == "llm"
68
- Requires-Dist: ag-ui-protocol>=0.1.8 ; extra == "llm"
69
- Requires-Dist: litellm>=1.75.7 ; extra == "llm"
70
+ Requires-Dist: litellm>=1.75.7 ; extra == "search"
70
71
  Project-URL: Documentation, https://workfloworchestrator.org/orchestrator-core
71
72
  Project-URL: Homepage, https://workfloworchestrator.org/orchestrator-core
72
73
  Project-URL: Source, https://github.com/workfloworchestrator/orchestrator-core
74
+ Provides-Extra: agent
73
75
  Provides-Extra: celery
74
- Provides-Extra: llm
76
+ Provides-Extra: search
75
77
 
76
78
  # Orchestrator-Core
77
79
 
@@ -79,7 +81,7 @@ Provides-Extra: llm
79
81
  [![codecov](https://codecov.io/gh/workfloworchestrator/orchestrator-core/branch/main/graph/badge.svg?token=5ANQFI2DHS)](https://codecov.io/gh/workfloworchestrator/orchestrator-core)
80
82
  [![pypi_version](https://img.shields.io/pypi/v/orchestrator-core?color=%2334D058&label=pypi%20package)](https://pypi.org/project/orchestrator-core)
81
83
  [![Supported python versions](https://img.shields.io/pypi/pyversions/orchestrator-core.svg?color=%2334D058)](https://pypi.org/project/orchestrator-core)
82
- ![Discord](https://img.shields.io/discord/1295834294270558280?style=flat&logo=discord&label=discord&link=https%3A%2F%2Fdiscord.gg%2FKNgF6gE8)
84
+ ![Discord](https://img.shields.io/discord/1295834294270558280?style=flat&logo=discord&label=discord&link=https%3A%2F%2Fdiscord.gg%fQkQn5ajFR)
83
85
 
84
86
  <p style="text-align: center"><em>Production ready Orchestration Framework to manage product lifecycle and workflows. Easy to use, built on top of FastAPI and Pydantic</em></p>
85
87
 
@@ -1,12 +1,12 @@
1
- orchestrator/__init__.py,sha256=fQf0IZ-r0EBypFgTFaJmM8-HGrDB8XI7AB43wnjDL3g,1732
2
- orchestrator/agentic_app.py,sha256=bBMuH9Ub42nb8oFG0U00SzW_uQqnAayUX2tNs6yz1BM,2810
1
+ orchestrator/__init__.py,sha256=lAl6oSNu-QVncaN5mMYEuHLv8QFr-CZIMBXFmG7BBto,1447
2
+ orchestrator/agentic_app.py,sha256=op7osw7KJRww90iYuWBt_bB5qI-sAkpG0fyr0liubQw,3968
3
3
  orchestrator/app.py,sha256=UPKQuDpg8MWNC6r3SRRbp6l9RBzwb00IMIaGRk-jbCU,13203
4
4
  orchestrator/exception_handlers.py,sha256=UsW3dw8q0QQlNLcV359bIotah8DYjMsj2Ts1LfX4ClY,1268
5
- orchestrator/llm_settings.py,sha256=PJ3vf5aEugVigHFU7iw9haQon_bC7Y268GTFhfFaQHs,2075
6
- orchestrator/log_config.py,sha256=1tPRX5q65e57a6a_zEii_PFK8SzWT0mnA5w2sKg4hh8,1853
5
+ orchestrator/llm_settings.py,sha256=UDehiEVXkRMfmPSfCTHQX8dtH2gLCGtZK_wQTU3yISg,2316
6
+ orchestrator/log_config.py,sha256=1cPl_OXT4tEUyNxG8cwIWXrmadUm1E81vq0mdtrV-v4,1912
7
7
  orchestrator/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
8
  orchestrator/security.py,sha256=iXFxGxab54aav7oHEKLAVkTgrQMJGHy6IYLojEnD7gI,2422
9
- orchestrator/settings.py,sha256=30iYKd_wNtjIO12DZ4LrH9w9OJgtmQ2AFEOSnrVTsRg,4365
9
+ orchestrator/settings.py,sha256=Xl6bXd2VtosBTOuv4PClgVv9KoVDItThYkhDzf4IYxc,4560
10
10
  orchestrator/targets.py,sha256=d7Fyh_mWIWPivA_E7DTNFpZID3xFW_K0JlZ5nksVX7k,830
11
11
  orchestrator/types.py,sha256=qzs7xx5AYRmKbpYRyJJP3wuDb0W0bcAzefCN0RWLAco,15459
12
12
  orchestrator/version.py,sha256=b58e08lxs47wUNXv0jXFO_ykpksmytuzEXD4La4W-NQ,1366
@@ -16,14 +16,14 @@ orchestrator/api/error_handling.py,sha256=YrPCxSa-DSa9KwqIMlXI-KGBGnbGIW5ukOPiik
16
16
  orchestrator/api/helpers.py,sha256=s0QRHYw8AvEmlkmRhuEzz9xixaZKUF3YuPzUVHkcoXk,6933
17
17
  orchestrator/api/models.py,sha256=z9BDBx7uI4KBHWbD_LVrLsqNQ0_w-Mg9Qiy7PR_rZhk,5996
18
18
  orchestrator/api/api_v1/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
19
- orchestrator/api/api_v1/api.py,sha256=FHOEwVfyQsStZmWUlxto26vI5OvqsJF2DgtSxyuiQJo,3124
19
+ orchestrator/api/api_v1/api.py,sha256=bWsvWgLap7b6ltu1BvwZpW7X2dEE6cQ7-WY0HcY7Yoo,3279
20
20
  orchestrator/api/api_v1/endpoints/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
21
21
  orchestrator/api/api_v1/endpoints/health.py,sha256=iaxs1XX1_250_gKNsspuULCV2GEMBjbtjsmfQTOvMAI,1284
22
- orchestrator/api/api_v1/endpoints/processes.py,sha256=238Bydgj4ILNyMU_7j_Q7a0WGlfIvKv5ypP7lESU32w,16188
22
+ orchestrator/api/api_v1/endpoints/processes.py,sha256=OVbt6FgFnJ4aHaYGIg0cPoim8mxDpdzJ4TGAyfB_kPw,16269
23
23
  orchestrator/api/api_v1/endpoints/product_blocks.py,sha256=kZ6ywIOsS_S2qGq7RvZ4KzjvaS1LmwbGWR37AKRvWOw,2146
24
24
  orchestrator/api/api_v1/endpoints/products.py,sha256=BfFtwu9dZXEQbtKxYj9icc73GKGvAGMR5ytyf41nQlQ,3081
25
25
  orchestrator/api/api_v1/endpoints/resource_types.py,sha256=gGyuaDyOD0TAVoeFGaGmjDGnQ8eQQArOxKrrk4MaDzA,2145
26
- orchestrator/api/api_v1/endpoints/search.py,sha256=QFxnMFQ2HgpL9Ebdc-vta6Z7Rdq5Qb9OKxyiPy2Lu9o,10200
26
+ orchestrator/api/api_v1/endpoints/search.py,sha256=NooZcMXmlnD1NxdhFWlqF3jhmixF1DZYuUG8XtEVGjo,10885
27
27
  orchestrator/api/api_v1/endpoints/settings.py,sha256=5s-k169podZjgGHUbVDmSQwpY_3Cs_Bbf2PPtZIkBcw,6184
28
28
  orchestrator/api/api_v1/endpoints/subscription_customer_descriptions.py,sha256=1_6LtgQleoq3M6z_W-Qz__Bj3OFUweoPrUqHMwSH6AM,3288
29
29
  orchestrator/api/api_v1/endpoints/subscriptions.py,sha256=7KaodccUiMkcVnrFnK2azp_V_-hGudcIyhov5WwVGQY,9810
@@ -34,16 +34,12 @@ orchestrator/api/api_v1/endpoints/ws.py,sha256=1l7E0ag_sZ6UMfQPHlmew7ENwxjm6fflB
34
34
  orchestrator/cli/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
35
35
  orchestrator/cli/database.py,sha256=YkYAbCY2VPAa6mDW0PpNKG5wL4FuAQYD2CGl1_DQtEk,19595
36
36
  orchestrator/cli/generate.py,sha256=SBaYfRijXPF9r3VxarPKTiDzDcB6GBMMQvecQIb_ZLQ,7377
37
- orchestrator/cli/index_llm.py,sha256=RWPkFz5bxiznjpN1vMsSWeqcvYKB90DLL4pXQ92QJNI,2239
38
- orchestrator/cli/main.py,sha256=U4eAG_iT3JhmeB6yZnogB6KTM6kFlDUo7zY4qBdIHv4,1648
37
+ orchestrator/cli/main.py,sha256=xGLc_cS2LoSIbK5qkMFE7GCnZoOi5kATgtmQDFNQU7E,1658
39
38
  orchestrator/cli/migrate_domain_models.py,sha256=WRXy_1OnziQwpsCFZXvjB30nDJtjj0ikVXy8YNLque4,20928
40
39
  orchestrator/cli/migrate_tasks.py,sha256=bju8XColjSZD0v3rS4kl-24dLr8En_H4-6enBmqd494,7255
41
40
  orchestrator/cli/migrate_workflows.py,sha256=nxUpx0vgEIc_8aJrjAyrw3E9Dt8JmaamTts8oiQ4vHY,8923
42
41
  orchestrator/cli/migration_helpers.py,sha256=C5tpkP5WEBr7G9S-1k1hgSI8ili6xd9Z5ygc9notaK0,4110
43
- orchestrator/cli/resize_embedding.py,sha256=ds830T26ADOD9vZS7psRHJVF_u2xar2d4vvIH1AOlww,4216
44
42
  orchestrator/cli/scheduler.py,sha256=2q6xT_XVOodY3e_qzIV98MWNvKvrbFpOJajWesj1fcs,1911
45
- orchestrator/cli/search_explore.py,sha256=SDn1DMN8a4roSPodIHl-KrNAvdHo5jTDUvMUFLVh1P4,8602
46
- orchestrator/cli/speedtest.py,sha256=QkQ_YhKh7TnNRX4lKjgrmF7DyufU9teLqw4CWkm52ko,4972
47
43
  orchestrator/cli/domain_gen_helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
44
  orchestrator/cli/domain_gen_helpers/fixed_input_helpers.py,sha256=uzpwsaau81hHSxNMOS9-o7kF-9_78R0f_UE0AvWooZQ,6775
49
45
  orchestrator/cli/domain_gen_helpers/helpers.py,sha256=tIPxn8ezED_xYZxH7ZAtQLwkDc6RNmLZVxWAoJ3a9lw,4203
@@ -106,6 +102,11 @@ orchestrator/cli/generator/templates/validate_product.j2,sha256=_gPNYS8dGOSpRm2E
106
102
  orchestrator/cli/helpers/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
107
103
  orchestrator/cli/helpers/input_helpers.py,sha256=pv5GTMuIWLzBE_bKNhn1XD_gxoqB0s1ZN4cnKkIIu5I,1139
108
104
  orchestrator/cli/helpers/print_helpers.py,sha256=b3ePg6HfBLKPYBBVr5XOA__JnFEMI5HBjbjov3CP8Po,859
105
+ orchestrator/cli/search/__init__.py,sha256=K15_iW9ogR7xtX7qHDal4H09tmwVGnOBZWyPBLWhuzc,1274
106
+ orchestrator/cli/search/index_llm.py,sha256=RWPkFz5bxiznjpN1vMsSWeqcvYKB90DLL4pXQ92QJNI,2239
107
+ orchestrator/cli/search/resize_embedding.py,sha256=ds830T26ADOD9vZS7psRHJVF_u2xar2d4vvIH1AOlww,4216
108
+ orchestrator/cli/search/search_explore.py,sha256=SDn1DMN8a4roSPodIHl-KrNAvdHo5jTDUvMUFLVh1P4,8602
109
+ orchestrator/cli/search/speedtest.py,sha256=QkQ_YhKh7TnNRX4lKjgrmF7DyufU9teLqw4CWkm52ko,4972
109
110
  orchestrator/config/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
110
111
  orchestrator/config/assignee.py,sha256=9mFFe9hoi2NCkXFOKL2pU2aveBzcZhljSvqUnh55vrk,780
111
112
  orchestrator/db/__init__.py,sha256=41_v-oeX5SMnwH2uIeBzscoST3FRXdpkEFDE5AoQR1E,3498
@@ -138,7 +139,7 @@ orchestrator/db/sorting/sorting.py,sha256=WpwImCDRKiOp4Tr54vovWpHkoJIov8SNQNPods
138
139
  orchestrator/db/sorting/subscription.py,sha256=uepBMyfRFLZz5yoYK4VK3mdRBvO1Gc-6jSQXQ41fR-8,1441
139
140
  orchestrator/db/sorting/workflow.py,sha256=6-JceMyB99M994Re58E0MX5uhlpnTW5OJCxmXopEfRU,576
140
141
  orchestrator/devtools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
141
- orchestrator/devtools/populator.py,sha256=-8i3KDDP1cRgwiDKuYmomwrSlbmcMhpAaEaDvhyIbk4,19688
142
+ orchestrator/devtools/populator.py,sha256=U7j5Gvu5mU8kvqx9jfno25aYyD5GFSk9ZQ2zYSagQOI,20399
142
143
  orchestrator/devtools/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
143
144
  orchestrator/devtools/scripts/migrate_20.py,sha256=8-qLiWfjYctu2kNl5MHtZvfeCdUs0YzRjepy4VYOUkc,4891
144
145
  orchestrator/devtools/scripts/migrate_30.py,sha256=pRnJQFvmliwTLgbbDSUGyS9sCWqQcTms-g_3yfUO5vQ,3030
@@ -149,11 +150,11 @@ orchestrator/distlock/managers/__init__.py,sha256=ImIkNsrXcyE7-NgRWqEhUXUuUzda9K
149
150
  orchestrator/distlock/managers/memory_distlock_manager.py,sha256=HWQafcVKBF-Cka_wukZZ1GM69AWPVOpJPje3quIebQ8,3114
150
151
  orchestrator/distlock/managers/redis_distlock_manager.py,sha256=DXtMhC8qtxiFO6xU9qYXHZQnCLjlmGBpeyfLA0vbRP0,3369
151
152
  orchestrator/domain/__init__.py,sha256=20DhXQPKY0g3rTgCkRlNDY58sLviToOVF8NPoex9WJc,936
152
- orchestrator/domain/base.py,sha256=jjMxJvt0GyaTff_z490lmkqDCtitkh0oA4GygB60n4s,69939
153
+ orchestrator/domain/base.py,sha256=8_f4zmaKHIy4JtyY_QgLoF8_-llgW9-7QOfqAJgacEw,69894
153
154
  orchestrator/domain/context_cache.py,sha256=vT1a01MBSBIaokoShK9KwjItd7abNmz7cXaF67VRZK8,2508
154
155
  orchestrator/domain/customer_description.py,sha256=RU_pcgCIZjjFfDsY45lfV0z6ATlS1NXtB0E7eH3UcYQ,3190
155
156
  orchestrator/domain/helpers.py,sha256=D9O2duhCAZGmm39u-9ggvU-X2JsCbIS607kF77-r8QM,2549
156
- orchestrator/domain/lifecycle.py,sha256=kGR0AFVOSUBlzdhgRr11CUnF26wbBYIjz8uKb_qPCg0,2922
157
+ orchestrator/domain/lifecycle.py,sha256=FO31mhgtHbq5H3Qr9vzA36PxSLu_icJqcuqFex0PQnk,3823
157
158
  orchestrator/domain/subscription_instance_transform.py,sha256=j_d49dFcSss0dl-BHS-ev2faLbE0y8hLvCfrzui6C74,4360
158
159
  orchestrator/forms/__init__.py,sha256=bw_1238HKy_T0gvfA5oEjJFwkALzvWU4O_VJ0xE8UyU,1168
159
160
  orchestrator/forms/validators/__init__.py,sha256=2T7w429dQhChsAbnQDeyp2BrM_iKj6-nkNrz27RZatY,1906
@@ -220,7 +221,7 @@ orchestrator/migrations/README,sha256=heMzebYwlGhnE8_4CWJ4LS74WoEZjBy-S-mIJRxAEK
220
221
  orchestrator/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
221
222
  orchestrator/migrations/alembic.ini,sha256=kMoADqhGeubU8xanILNaqm4oixLy9m4ngYtdGpZcc7I,873
222
223
  orchestrator/migrations/env.py,sha256=M_cPoAL2axuuup5fvMy8I_WTPHEw0RbPEHkhZ3QEGoE,3740
223
- orchestrator/migrations/helpers.py,sha256=CAGGKhxpmhyKGfYcO-SUCPfMTOCZPfEpkJrcm2MYfcE,47979
224
+ orchestrator/migrations/helpers.py,sha256=sgSNZzQFHGT9_nboxwp_ryP2CWQZsSqEg_0i4giIM2k,48248
224
225
  orchestrator/migrations/script.py.mako,sha256=607Zrgp-Z-m9WGLt4wewN1QDOmHeifxcePUdADkSZyM,510
225
226
  orchestrator/migrations/templates/alembic.ini.j2,sha256=8v7UbKvOiWEbEKQa-Au3uONKUuYx6aflulYanZX6r2I,883
226
227
  orchestrator/migrations/templates/env.py.j2,sha256=LIt0ildZTZvNEx3imhy4GNzfFi_rPZg-8H7rGgrBOP8,2717
@@ -254,7 +255,6 @@ orchestrator/migrations/versions/schema/2025-05-08_161918133bec_add_is_task_to_w
254
255
  orchestrator/migrations/versions/schema/2025-07-01_93fc5834c7e5_changed_timestamping_fields_in_process_steps.py,sha256=Oezd8b2qaI1Kyq-sZFVFmdzd4d9NjXrf6HtJGk11fy0,1914
255
256
  orchestrator/migrations/versions/schema/2025-07-04_4b58e336d1bf_deprecating_workflow_target_in_.py,sha256=xnD6w-97R4ClS7rbmXQEXc36K3fdcXKhCy7ZZNy_FX4,742
256
257
  orchestrator/migrations/versions/schema/2025-07-28_850dccac3b02_update_description_of_resume_workflows_.py,sha256=R6Qoga83DJ1IL0WYPu0u5u2ZvAmqGlDmUMv_KtJyOhQ,812
257
- orchestrator/migrations/versions/schema/2025-08-12_52b37b5b2714_search_index_model_for_llm_integration.py,sha256=6lRbUd1hJBjG8KM4Ow_J4pk2qwlRVhTKczS7XmoW-q4,3304
258
258
  orchestrator/schedules/__init__.py,sha256=Zy0fTOBMGIRFoh5iVFDLF9_PRAFaONYDThGK9EsysWo,981
259
259
  orchestrator/schedules/resume_workflows.py,sha256=jRnVRWDy687pQu-gtk80ecwiLSdrvtL15tG3U2zWA6I,891
260
260
  orchestrator/schedules/scheduler.py,sha256=nnuehZnBbtC90MsFP_Q6kqcD1ihsq08vr1ALJ6jHF_s,5833
@@ -271,49 +271,56 @@ orchestrator/schemas/process.py,sha256=UACBNt-4g4v9Y528u-gZ-Wk7YxwJHhnI4cEu5CtQm
271
271
  orchestrator/schemas/product.py,sha256=MhMCh058ZuS2RJq-wSmxIPUNlhQexxXIx3DSz2OmOh4,1570
272
272
  orchestrator/schemas/product_block.py,sha256=kCqvm6qadHpegMr9aWI_fYX-T7mS-5S-ldPxnGQZg7M,1519
273
273
  orchestrator/schemas/resource_type.py,sha256=VDju4XywcDDLxdpbWU62RTvR9QF8x_GRrpTlN_NE8uI,1064
274
- orchestrator/schemas/search.py,sha256=yOlkG61BxSTL5xvepxrG-Qz_NceSw5E0g-7GUkjaj9Q,2837
274
+ orchestrator/schemas/search.py,sha256=Q89GAPrmHf2DnwTJiPMYog1xAIC3QMJ3IItFZdVVFXg,3417
275
275
  orchestrator/schemas/subscription.py,sha256=-jXyHZIed9Xlia18ksSDyenblNN6Q2yM2FlGELyJ458,3423
276
276
  orchestrator/schemas/subscription_descriptions.py,sha256=Ft_jw1U0bf9Z0U8O4OWfLlcl0mXCVT_qYVagBP3GbIQ,1262
277
- orchestrator/schemas/workflow.py,sha256=VqQ9XfV4fVd6MjY0LRRQzWBJHmlPsAamWfTwDx1cZkg,2102
277
+ orchestrator/schemas/workflow.py,sha256=StVoRGyNT2iIeq3z8BIlTPt0bcafzbeYxXRrCucR6LU,2146
278
278
  orchestrator/search/__init__.py,sha256=2uhTQexKx-cdBP1retV3CYSNCs02s8WL3fhGvupRGZk,571
279
- orchestrator/search/agent/__init__.py,sha256=ucZF-4ZsDc911Zyjmc1OK2ZcA6C64GFdMOVP26sWW7Q,166
280
- orchestrator/search/agent/agent.py,sha256=6wgsoOkGay_Qnaz8GJNrhKkA50ijotKTnj9ivXvswZg,1740
281
- orchestrator/search/agent/prompts.py,sha256=aTjjPAF6bXDGFMpghXAyDIMxpOfGtZuAflaUINvR1EI,2094
282
- orchestrator/search/agent/state.py,sha256=DPCbvp6_WCxXwuJq1IU9glfKNZ1mRODoFcLjb9AOke0,203
283
- orchestrator/search/agent/tools.py,sha256=KRmoy7FuAiPJZqwjrnt4zfS5689RAIjxsUBXQOMSbI0,4523
284
- orchestrator/search/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
285
- orchestrator/search/core/embedding.py,sha256=s7P_2hrofnRXnfUFKuDJcpYkm_KzFkmhFe5j2n8_W7U,2297
286
- orchestrator/search/core/exceptions.py,sha256=uIlePbEyShcoM5uSCGcOlI-WEfEae3uBECGT4p40eaA,448
287
- orchestrator/search/core/types.py,sha256=Zm3NgoKwmvu3wTRDUrQ8Wn5l05r2hOXh-OkB-uGzLNs,8228
288
- orchestrator/search/core/validators.py,sha256=Ny80tH3SHuM64yZCi-9kfX-66NKGjsp_0oG7uJ21JVk,624
279
+ orchestrator/search/llm_migration.py,sha256=BklTa8xg85b26j4dadRji_tjaIWU3L0a9B3buwuld0E,4475
280
+ orchestrator/search/agent/__init__.py,sha256=_b7Q43peWSi2bb3-69CThAqt_sxgoaMbHeq6erLGR00,752
281
+ orchestrator/search/agent/agent.py,sha256=zhDyXwRf118vH96CmKRbo5O8GKl_mnLJTDNfWgvsKeE,2450
282
+ orchestrator/search/agent/prompts.py,sha256=-1VLYwPecC6xroKQTc9AE9MTtg_ffAUfHUi8ZATyUMg,4556
283
+ orchestrator/search/agent/state.py,sha256=1WHYol5UlYpq2QZz-BVsBFYrJZms5P18ohN2Ur8P2F4,783
284
+ orchestrator/search/agent/tools.py,sha256=4kvY0tG7i5-w8C-ZMuSabxb_sJmd_TpFl3F4xeGgzok,9513
285
+ orchestrator/search/core/__init__.py,sha256=q5G0z3nKjIHKFs1PkEG3nvTUy3Wp4kCyBtCbqUITj3A,579
286
+ orchestrator/search/core/embedding.py,sha256=ESeI5Vcobb__CRRZE_RP-m4eAz8JUP8S16aGLJh4uAY,2751
287
+ orchestrator/search/core/exceptions.py,sha256=qp7ZdyDvN5b2HD5_oZXMgoLJgy79krpClszKh3KPuAw,1029
288
+ orchestrator/search/core/types.py,sha256=Gaf77cKUqnE8vJNCpk-g3h2U5912axhIgZZnF_0_O48,8831
289
+ orchestrator/search/core/validators.py,sha256=zktY5A3RTBmfdARJoxoz9rnnyTZj7L30Kbmh9UTQz2o,1204
289
290
  orchestrator/search/docs/index.md,sha256=zKzE2fbtHDfYTKaHg628wAsqCTOJ5yFUWV0ucFH3pAg,863
290
- orchestrator/search/docs/running_local_text_embedding_inference.md,sha256=KlFxyAjHfLyCeV9fXAFVUqZOFWYwGPH-_oBjWx2Vgng,1255
291
- orchestrator/search/filters/__init__.py,sha256=h9wjnKLcIfG1TwiuwtnlDvv9XMWLxkjCBD9D8qCOoQU,642
292
- orchestrator/search/filters/base.py,sha256=3EAVTMbIFAGUTiswi2Pe_liphbGTksfhVyCFFtXstZc,10844
293
- orchestrator/search/filters/date_filters.py,sha256=dDbTPI-badVnaKM404waQ3yzTOHJNn59kYoqHvW3XFE,2460
294
- orchestrator/search/filters/definitions.py,sha256=oIwW8dWz7HuRkEvCbCfj2WOOdE_PKh0b5n8Re5x_lS0,3455
295
- orchestrator/search/filters/ltree_filters.py,sha256=kyMmm1EYKYVUwPK5p9tyL-da0SrCe6LPmFW56_6y0uY,1696
296
- orchestrator/search/filters/numeric_filter.py,sha256=GPBcZgrip2ruxsBx2AHZqxS16zkQG3C6zLJAGC2s2VU,2194
297
- orchestrator/search/indexing/__init__.py,sha256=7IVylH0S5FPUh6jb9H9vNLb61gQQIk_sNrSHc8WoSD0,82
298
- orchestrator/search/indexing/indexer.py,sha256=9l4bXwNAfsjMrrzit601solAl6W07Pyj9-SRldmZjGU,14391
299
- orchestrator/search/indexing/registry.py,sha256=cSeZe6aq3XME-RRz4AMD8BHXzx7dvU6tBa05ecjTzfk,2468
300
- orchestrator/search/indexing/tasks.py,sha256=k7GihQLov8FMhzYM_6f-IlWPMuP1w2QZpfOyloppKFM,1783
301
- orchestrator/search/indexing/traverse.py,sha256=_lWbUHy1S5-oDyo-4dDeivb9KTn6VUq_T_KXxFm_A2Y,13775
302
- orchestrator/search/retrieval/__init__.py,sha256=EixZVzUzP3FOC-hWwf3pqvz0XHZe1HyHBsmJlTEU0Cw,65
303
- orchestrator/search/retrieval/builder.py,sha256=WZ8nSWvRn8bYms54Xg0i7x5Udf9aqjIbaeBlRKbiCpk,3886
304
- orchestrator/search/retrieval/engine.py,sha256=yJn65Nv-HIRJ6yLGwgRxdNAdsXmWvoLUK2WB9PRF1fg,5554
305
- orchestrator/search/retrieval/pagination.py,sha256=-j-vtdPsmUlKCuN7ffwMzEeWG7vLKlJ2NDmRGAGahxM,2773
306
- orchestrator/search/retrieval/retriever.py,sha256=140SMmBnCGhckPC9nZbe0T-DFPpQBNd6w-_3mY0-_Vs,17465
307
- orchestrator/search/retrieval/utils.py,sha256=BhrCqSO5fDlDEzqS81dR-Lpd52JgbnR3YS4h9TXx4Bs,3862
308
- orchestrator/search/retrieval/validation.py,sha256=KvPjvnl67mq2iMbjBc3YLMZ_XMiK3AygRDxrWKAPP_Y,5829
309
- orchestrator/search/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
310
- orchestrator/search/schemas/parameters.py,sha256=X74WzGO6tmiQ9XAQ2GdgIpqt3KzzqvaByrfB_tdWEX4,4110
311
- orchestrator/search/schemas/results.py,sha256=zRbl2AQ1CtINdcL77A6TdxmrurgFO1_ueosKOWkttv4,1385
291
+ orchestrator/search/docs/running_local_text_embedding_inference.md,sha256=OR0NVZMb8DqpgXYxlwDUrJwfRk0bYOk1-LkDMqsV6bU,1327
292
+ orchestrator/search/filters/__init__.py,sha256=Yutr21lv8RtZf5OKaBozlYufgmmV2QHuzAPPjvUamLE,1222
293
+ orchestrator/search/filters/base.py,sha256=lUr0eW0zi4oIMVUHuRD3GAQ9xEbHiFUl_EfAI6ABPVo,12456
294
+ orchestrator/search/filters/date_filters.py,sha256=0a6nbUTK647_Qf4XXZMLDvBLVjF5Qqy9eJ-9SrTGaGg,3040
295
+ orchestrator/search/filters/definitions.py,sha256=wl2HiXlTWXQN4JmuSq2SBuhTMvyIeonTtUZoCrJAK6M,4093
296
+ orchestrator/search/filters/ltree_filters.py,sha256=1OOmM5K90NsGBQmTqyoDlphdAOGd9r2rmz1rNItm8yk,2341
297
+ orchestrator/search/filters/numeric_filter.py,sha256=lcOAOpPNTwA0SW8QPiMOs1oKTYZLwGDQSrwFydXgMUU,2774
298
+ orchestrator/search/indexing/__init__.py,sha256=Or78bizNPiuNOgwLGJQ0mspCF1G_gSe5C9Ap7qi0MZk,662
299
+ orchestrator/search/indexing/indexer.py,sha256=puYOL7IXyJi7A7huT1jQ_2G3YZimeivkQJF2BZR4apQ,14866
300
+ orchestrator/search/indexing/registry.py,sha256=zEOUmQDmZHJ4xzT63VSJzuuHWVTnuBSvhZg4l6lFTUU,3048
301
+ orchestrator/search/indexing/tasks.py,sha256=vmS1nnprPF74yitS0xGpP1dhSDis2nekMYF0v_jduDE,2478
302
+ orchestrator/search/indexing/traverse.py,sha256=NKkKSri-if1d1vwzTQlDCF0hvBdB2IbWWuMdPrQ78Jg,14330
303
+ orchestrator/search/retrieval/__init__.py,sha256=JP5WGYhmjd2RKXEExorvU6koMBLsTLdlDGCR_r1t8ug,645
304
+ orchestrator/search/retrieval/builder.py,sha256=70cEvbsWI1dj-4H-LJq4o6Q71e3WERd-V6bzlZhGtHw,4607
305
+ orchestrator/search/retrieval/engine.py,sha256=jHxKuULcsqkdTyh9NEzBCsOnBaZzlbvcGseJoJec1yw,6147
306
+ orchestrator/search/retrieval/exceptions.py,sha256=oHoLGLLxxmVcV-W36uK0V-Pn4vf_iw6hajpQbap3NqI,3588
307
+ orchestrator/search/retrieval/pagination.py,sha256=bRcXtWxxWvOhCQyhjwfJ7S6q_Dn3pYm8TCg7ofjVP44,3353
308
+ orchestrator/search/retrieval/utils.py,sha256=svhF9YfMClq2MVPArS3ir3pg5_e_bremquv_l6tTsOQ,4597
309
+ orchestrator/search/retrieval/validation.py,sha256=AjhttVJWlZDaT1_pUL_LaypQV11U21JpTCE4OwnpoqA,5849
310
+ orchestrator/search/retrieval/retrievers/__init__.py,sha256=1bGmbae0GYRM6e1vxf0ww79NaTSmfOMe9S0pPVmh3CM,897
311
+ orchestrator/search/retrieval/retrievers/base.py,sha256=Sp8h992lw_7vigE4s2QB0gqtqMACEOA8nDnhuXXHtxA,4570
312
+ orchestrator/search/retrieval/retrievers/fuzzy.py,sha256=U_WNAaxSUVUlVrmFrYFt-s0ebw9ift1Z2zBHG8TSPLE,3839
313
+ orchestrator/search/retrieval/retrievers/hybrid.py,sha256=YriY3gF6E7pQUumqdSDSyFJvYQbZZ6vSsMUhM5JHGpg,11102
314
+ orchestrator/search/retrieval/retrievers/semantic.py,sha256=oWNJ9DuqM16BXYXUwmRmkfDmp_2vQH2PySNMk8TcvVk,3961
315
+ orchestrator/search/retrieval/retrievers/structured.py,sha256=OHsHEjjLg1QwtEytQNeyWcCBQd8rJxHVf59HxvA9_vc,1452
316
+ orchestrator/search/schemas/__init__.py,sha256=q5G0z3nKjIHKFs1PkEG3nvTUy3Wp4kCyBtCbqUITj3A,579
317
+ orchestrator/search/schemas/parameters.py,sha256=aglbVvvM_gT-zTpVQh05wIUnfn2mD1JKIiWH_VaTqaM,4690
318
+ orchestrator/search/schemas/results.py,sha256=EsbYS8XJ8r5JoN17N4z1lHIShgg7RW973mi6yILcHOI,1987
312
319
  orchestrator/services/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
313
320
  orchestrator/services/fixed_inputs.py,sha256=kyz7s2HLzyDulvcq-ZqefTw1om86COvyvTjz0_5CmgI,876
314
321
  orchestrator/services/input_state.py,sha256=6BZOpb3cHpO18K-XG-3QUIV9pIM25_ufdODrp5CmXG4,2390
315
322
  orchestrator/services/process_broadcast_thread.py,sha256=D44YbjF8mRqGuznkRUV4SoRn1J0lfy_x1H508GnSVlU,4649
316
- orchestrator/services/processes.py,sha256=NfzdtH4eZK_wYuSmFtUX69qDvoeI8J7sJ2fFyY_VYaM,30544
323
+ orchestrator/services/processes.py,sha256=LpJbq13UJOrNUKorwYBTV4-MJj-XLXFv6LBk7iyQgl8,30622
317
324
  orchestrator/services/products.py,sha256=BP4KyE8zO-8z7Trrs5T6zKBOw53S9BfBJnHWI3p6u5Y,1943
318
325
  orchestrator/services/resource_types.py,sha256=_QBy_JOW_X3aSTqH0CuLrq4zBJL0p7Q-UDJUcuK2_qc,884
319
326
  orchestrator/services/settings.py,sha256=HEWfFulgoEDwgfxGEO__QTr5fDiwNBEj1UhAeTAdbLQ,3159
@@ -344,7 +351,7 @@ orchestrator/utils/json.py,sha256=7386sdqkrKYyy4sbn5NscwctH_v1hLyw5172P__rU3g,83
344
351
  orchestrator/utils/redis.py,sha256=BjUNmrKx8YVyJIucl2mhXubK6WV-49OnAU6rPMOZpM0,4469
345
352
  orchestrator/utils/redis_client.py,sha256=9rhsvedjK_CyClAjUicQyge0mVIViATqKFGZyjBY3XA,1384
346
353
  orchestrator/utils/search_query.py,sha256=ji5LHtrzohGz6b1IG41cnPdpWXzLEzz4SGWgHly_yfU,16205
347
- orchestrator/utils/state.py,sha256=RYKVlvKDBfsBdDk9wHjZKBTlQJbV4SqtCotAlTA2-bI,14021
354
+ orchestrator/utils/state.py,sha256=ELH08cxvpmpnJg_ae0sMi9m_QX6SqHxNzOFaJgyW9gM,14344
348
355
  orchestrator/utils/strings.py,sha256=N0gWjmQaMjE9_99VtRvRaU8IBLTKMgBKSXcTZ9TpWAg,1077
349
356
  orchestrator/utils/validate_data_version.py,sha256=3Eioy2wE2EWKSgkyMKcEKrkCAfUIAq-eb73iRcpgppw,184
350
357
  orchestrator/websocket/__init__.py,sha256=V79jskk1z3uPIYgu0Gt6JLzuqr7NGfNeAZ-hbBqoUv4,5745
@@ -354,15 +361,15 @@ orchestrator/websocket/managers/memory_websocket_manager.py,sha256=lF5EEx1iFMCGE
354
361
  orchestrator/workflows/__init__.py,sha256=NzIGGI-8SNAwCk2YqH6sHhEWbgAY457ntDwjO15N8v4,4131
355
362
  orchestrator/workflows/modify_note.py,sha256=eXt5KQvrkOXf-3YEXCn2XbBLP9N-n1pUYRW2t8Odupo,2150
356
363
  orchestrator/workflows/removed_workflow.py,sha256=V0Da5TEdfLdZZKD38ig-MTp3_IuE7VGqzHHzvPYQmLI,909
357
- orchestrator/workflows/steps.py,sha256=CZxfzkG5ANJYwuYTkQ4da2RpQqIjXCtey_Uy1ezRAZ4,6479
364
+ orchestrator/workflows/steps.py,sha256=VVLRK9_7KzrBlnK7L8eSmRMNVOO7VJBh5OSjHQHM9fU,7019
358
365
  orchestrator/workflows/utils.py,sha256=VUCDoIl5XAKtIeAJpVpyW2pCIg3PoVWfwGn28BYlYhA,15424
359
366
  orchestrator/workflows/tasks/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
360
367
  orchestrator/workflows/tasks/cleanup_tasks_log.py,sha256=BfWYbPXhnLAHUJ0mlODDnjZnQQAvKCZJDVTwbwOWI04,1624
361
368
  orchestrator/workflows/tasks/resume_workflows.py,sha256=T3iobSJjVgiupe0rClD34kUZ7KF4pL5yK2AVeRLZog8,4313
362
- orchestrator/workflows/tasks/validate_product_type.py,sha256=paG-NAY1bdde3Adt8zItkcBKf5Pxw6f5ngGW6an6dYU,3192
369
+ orchestrator/workflows/tasks/validate_product_type.py,sha256=lo2TX_MZOfcOmYFjLyD82FrJ5AAN3HOsE6BhDVFuy9Q,3210
363
370
  orchestrator/workflows/tasks/validate_products.py,sha256=GZJBoFF-WMphS7ghMs2-gqvV2iL1F0POhk0uSNt93n0,8510
364
371
  orchestrator/workflows/translations/en-GB.json,sha256=ST53HxkphFLTMjFHonykDBOZ7-P_KxksktZU3GbxLt0,846
365
- orchestrator_core-4.5.1a1.dist-info/licenses/LICENSE,sha256=b-aA5OZQuuBATmLKo_mln8CQrDPPhg3ghLzjPjLn4Tg,11409
366
- orchestrator_core-4.5.1a1.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
367
- orchestrator_core-4.5.1a1.dist-info/METADATA,sha256=rYbC3a3-J-ekBdQ-STdH3aQpqJZrBxtAbypghQyKnN0,6177
368
- orchestrator_core-4.5.1a1.dist-info/RECORD,,
372
+ orchestrator_core-4.5.3.dist-info/licenses/LICENSE,sha256=b-aA5OZQuuBATmLKo_mln8CQrDPPhg3ghLzjPjLn4Tg,11409
373
+ orchestrator_core-4.5.3.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
374
+ orchestrator_core-4.5.3.dist-info/METADATA,sha256=4VPK7eDOSL9d-GIlwyIlqIAtoPpJrniwNlXGgJ6qHl4,6250
375
+ orchestrator_core-4.5.3.dist-info/RECORD,,
@@ -1,95 +0,0 @@
1
- """Search index model for llm integration.
2
-
3
- Revision ID: 52b37b5b2714
4
- Revises: 850dccac3b02
5
- Create Date: 2025-08-12 22:34:26.694750
6
-
7
- """
8
-
9
- import sqlalchemy as sa
10
- from alembic import op
11
- from pgvector.sqlalchemy import Vector
12
- from sqlalchemy.dialects import postgresql
13
- from sqlalchemy_utils import LtreeType
14
-
15
- from orchestrator.search.core.types import FieldType
16
-
17
- # revision identifiers, used by Alembic.
18
- revision = "52b37b5b2714"
19
- down_revision = "850dccac3b02"
20
- branch_labels = None
21
- depends_on = None
22
-
23
- TABLE = "ai_search_index"
24
- IDX_EMBED_HNSW = "ix_flat_embed_hnsw"
25
- IDX_PATH_GIST = "ix_flat_path_gist"
26
- IDX_PATH_BTREE = "ix_flat_path_btree"
27
- IDX_VALUE_TRGM = "ix_flat_value_trgm"
28
- IDX_CONTENT_HASH = "idx_ai_search_index_content_hash"
29
-
30
- TARGET_DIM = 1536
31
-
32
-
33
- def upgrade() -> None:
34
- # Create PostgreSQL extensions
35
- op.execute("CREATE EXTENSION IF NOT EXISTS ltree;")
36
- op.execute("CREATE EXTENSION IF NOT EXISTS unaccent;")
37
- op.execute("CREATE EXTENSION IF NOT EXISTS pg_trgm;")
38
- op.execute("CREATE EXTENSION IF NOT EXISTS vector;")
39
-
40
- # Create the ai_search_index table
41
- op.create_table(
42
- TABLE,
43
- sa.Column("entity_type", sa.Text, nullable=False),
44
- sa.Column("entity_id", postgresql.UUID, nullable=False),
45
- sa.Column("path", LtreeType, nullable=False),
46
- sa.Column("value", sa.Text, nullable=False),
47
- sa.Column("embedding", Vector(TARGET_DIM), nullable=True),
48
- sa.Column("content_hash", sa.String(64), nullable=False),
49
- sa.PrimaryKeyConstraint("entity_id", "path", name="pk_ai_search_index"),
50
- )
51
-
52
- field_type_enum = sa.Enum(*[ft.value for ft in FieldType], name="field_type")
53
- field_type_enum.create(op.get_bind(), checkfirst=True)
54
- op.add_column(
55
- TABLE,
56
- sa.Column("value_type", field_type_enum, nullable=False, server_default=FieldType.STRING.value),
57
- )
58
- op.alter_column(TABLE, "value_type", server_default=None)
59
-
60
- op.create_index(op.f("ix_ai_search_index_entity_id"), TABLE, ["entity_id"], unique=False)
61
- op.create_index(IDX_CONTENT_HASH, TABLE, ["content_hash"])
62
-
63
- op.create_index(
64
- IDX_PATH_GIST,
65
- TABLE,
66
- ["path"],
67
- postgresql_using="GIST",
68
- postgresql_ops={"path": "gist_ltree_ops"},
69
- )
70
- op.create_index(IDX_PATH_BTREE, TABLE, ["path"])
71
- op.create_index(IDX_VALUE_TRGM, TABLE, ["value"], postgresql_using="GIN", postgresql_ops={"value": "gin_trgm_ops"})
72
-
73
- op.create_index(
74
- IDX_EMBED_HNSW,
75
- TABLE,
76
- ["embedding"],
77
- postgresql_using="HNSW",
78
- postgresql_with={"m": 16, "ef_construction": 64},
79
- postgresql_ops={"embedding": "vector_l2_ops"},
80
- )
81
-
82
-
83
- def downgrade() -> None:
84
- # Drop all indexes
85
- op.drop_index(IDX_EMBED_HNSW, table_name=TABLE, if_exists=True)
86
- op.drop_index(IDX_VALUE_TRGM, table_name=TABLE, if_exists=True)
87
- op.drop_index(IDX_PATH_BTREE, table_name=TABLE, if_exists=True)
88
- op.drop_index(IDX_PATH_GIST, table_name=TABLE, if_exists=True)
89
- op.drop_index(IDX_CONTENT_HASH, table_name=TABLE, if_exists=True)
90
- op.drop_index(op.f("ix_ai_search_index_entity_id"), table_name=TABLE, if_exists=True)
91
-
92
- # Drop table and enum
93
- op.drop_table(TABLE, if_exists=True)
94
- field_type_enum = sa.Enum(name="field_type")
95
- field_type_enum.drop(op.get_bind(), checkfirst=True)