orchestrator-core 4.5.3__py3-none-any.whl → 4.6.0__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 (52) hide show
  1. orchestrator/__init__.py +2 -2
  2. orchestrator/agentic_app.py +3 -23
  3. orchestrator/api/api_v1/api.py +5 -0
  4. orchestrator/api/api_v1/endpoints/agent.py +49 -0
  5. orchestrator/api/api_v1/endpoints/search.py +120 -201
  6. orchestrator/app.py +1 -1
  7. orchestrator/cli/database.py +3 -0
  8. orchestrator/cli/generate.py +11 -4
  9. orchestrator/cli/generator/generator/migration.py +7 -3
  10. orchestrator/cli/main.py +1 -1
  11. orchestrator/cli/scheduler.py +15 -22
  12. orchestrator/cli/search/resize_embedding.py +28 -22
  13. orchestrator/cli/search/speedtest.py +4 -6
  14. orchestrator/db/__init__.py +6 -0
  15. orchestrator/db/models.py +75 -0
  16. orchestrator/llm_settings.py +18 -1
  17. orchestrator/migrations/helpers.py +47 -39
  18. orchestrator/schedules/scheduler.py +32 -15
  19. orchestrator/schedules/validate_products.py +1 -1
  20. orchestrator/schemas/search.py +8 -85
  21. orchestrator/search/agent/__init__.py +2 -2
  22. orchestrator/search/agent/agent.py +26 -30
  23. orchestrator/search/agent/json_patch.py +51 -0
  24. orchestrator/search/agent/prompts.py +35 -9
  25. orchestrator/search/agent/state.py +28 -2
  26. orchestrator/search/agent/tools.py +192 -53
  27. orchestrator/search/core/embedding.py +2 -2
  28. orchestrator/search/core/exceptions.py +6 -0
  29. orchestrator/search/core/types.py +1 -0
  30. orchestrator/search/export.py +199 -0
  31. orchestrator/search/indexing/indexer.py +13 -4
  32. orchestrator/search/indexing/registry.py +14 -1
  33. orchestrator/search/llm_migration.py +55 -0
  34. orchestrator/search/retrieval/__init__.py +3 -2
  35. orchestrator/search/retrieval/builder.py +5 -1
  36. orchestrator/search/retrieval/engine.py +66 -23
  37. orchestrator/search/retrieval/pagination.py +46 -56
  38. orchestrator/search/retrieval/query_state.py +61 -0
  39. orchestrator/search/retrieval/retrievers/base.py +26 -40
  40. orchestrator/search/retrieval/retrievers/fuzzy.py +10 -9
  41. orchestrator/search/retrieval/retrievers/hybrid.py +11 -8
  42. orchestrator/search/retrieval/retrievers/semantic.py +9 -8
  43. orchestrator/search/retrieval/retrievers/structured.py +6 -6
  44. orchestrator/search/schemas/parameters.py +17 -13
  45. orchestrator/search/schemas/results.py +4 -1
  46. orchestrator/settings.py +1 -0
  47. orchestrator/utils/auth.py +3 -2
  48. orchestrator/workflow.py +23 -6
  49. {orchestrator_core-4.5.3.dist-info → orchestrator_core-4.6.0.dist-info}/METADATA +16 -11
  50. {orchestrator_core-4.5.3.dist-info → orchestrator_core-4.6.0.dist-info}/RECORD +52 -48
  51. {orchestrator_core-4.5.3.dist-info → orchestrator_core-4.6.0.dist-info}/WHEEL +0 -0
  52. {orchestrator_core-4.5.3.dist-info → orchestrator_core-4.6.0.dist-info}/licenses/LICENSE +0 -0
@@ -20,7 +20,7 @@ from sqlalchemy.types import TypeEngine
20
20
  from orchestrator.db.models import AiSearchIndex
21
21
  from orchestrator.search.core.types import SearchMetadata
22
22
 
23
- from ..pagination import PaginationParams
23
+ from ..pagination import PageCursor
24
24
  from .base import Retriever
25
25
 
26
26
 
@@ -127,14 +127,13 @@ class RrfHybridRetriever(Retriever):
127
127
  self,
128
128
  q_vec: list[float],
129
129
  fuzzy_term: str,
130
- pagination_params: PaginationParams,
130
+ cursor: PageCursor | None,
131
131
  k: int = 60,
132
132
  field_candidates_limit: int = 100,
133
133
  ) -> None:
134
134
  self.q_vec = q_vec
135
135
  self.fuzzy_term = fuzzy_term
136
- self.page_after_score = pagination_params.page_after_score
137
- self.page_after_id = pagination_params.page_after_id
136
+ self.cursor = cursor
138
137
  self.k = k
139
138
  self.field_candidates_limit = field_candidates_limit
140
139
 
@@ -154,6 +153,7 @@ class RrfHybridRetriever(Retriever):
154
153
  field_candidates = (
155
154
  select(
156
155
  AiSearchIndex.entity_id,
156
+ AiSearchIndex.entity_title,
157
157
  AiSearchIndex.path,
158
158
  AiSearchIndex.value,
159
159
  sem_val,
@@ -178,9 +178,10 @@ class RrfHybridRetriever(Retriever):
178
178
  entity_scores = (
179
179
  select(
180
180
  field_candidates.c.entity_id,
181
+ field_candidates.c.entity_title,
181
182
  func.avg(field_candidates.c.semantic_distance).label("avg_semantic_distance"),
182
183
  func.avg(field_candidates.c.fuzzy_score).label("avg_fuzzy_score"),
183
- ).group_by(field_candidates.c.entity_id)
184
+ ).group_by(field_candidates.c.entity_id, field_candidates.c.entity_title)
184
185
  ).cte("entity_scores")
185
186
 
186
187
  entity_highlights = (
@@ -204,6 +205,7 @@ class RrfHybridRetriever(Retriever):
204
205
  ranked = (
205
206
  select(
206
207
  entity_scores.c.entity_id,
208
+ entity_scores.c.entity_title,
207
209
  entity_scores.c.avg_semantic_distance,
208
210
  entity_scores.c.avg_fuzzy_score,
209
211
  entity_highlights.c.highlight_text,
@@ -242,6 +244,7 @@ class RrfHybridRetriever(Retriever):
242
244
 
243
245
  stmt = select(
244
246
  ranked.c.entity_id,
247
+ ranked.c.entity_title,
245
248
  score,
246
249
  ranked.c.highlight_text,
247
250
  ranked.c.highlight_path,
@@ -262,12 +265,12 @@ class RrfHybridRetriever(Retriever):
262
265
  entity_id_column: ColumnElement,
263
266
  ) -> Select:
264
267
  """Keyset paginate by fused score + id."""
265
- if self.page_after_score is not None and self.page_after_id is not None:
266
- score_param = self._quantize_score_for_pagination(self.page_after_score)
268
+ if self.cursor is not None:
269
+ score_param = self._quantize_score_for_pagination(self.cursor.score)
267
270
  stmt = stmt.where(
268
271
  or_(
269
272
  score_column < score_param,
270
- and_(score_column == score_param, entity_id_column > self.page_after_id),
273
+ and_(score_column == score_param, entity_id_column > self.cursor.id),
271
274
  )
272
275
  )
273
276
  return stmt
@@ -17,17 +17,16 @@ from sqlalchemy.sql.expression import ColumnElement
17
17
  from orchestrator.db.models import AiSearchIndex
18
18
  from orchestrator.search.core.types import SearchMetadata
19
19
 
20
- from ..pagination import PaginationParams
20
+ from ..pagination import PageCursor
21
21
  from .base import Retriever
22
22
 
23
23
 
24
24
  class SemanticRetriever(Retriever):
25
25
  """Ranks results based on the minimum semantic vector distance."""
26
26
 
27
- def __init__(self, vector_query: list[float], pagination_params: PaginationParams) -> None:
27
+ def __init__(self, vector_query: list[float], cursor: PageCursor | None) -> None:
28
28
  self.vector_query = vector_query
29
- self.page_after_score = pagination_params.page_after_score
30
- self.page_after_id = pagination_params.page_after_id
29
+ self.cursor = cursor
31
30
 
32
31
  def apply(self, candidate_query: Select) -> Select:
33
32
  cand = candidate_query.subquery()
@@ -49,6 +48,7 @@ class SemanticRetriever(Retriever):
49
48
  combined_query = (
50
49
  select(
51
50
  AiSearchIndex.entity_id,
51
+ AiSearchIndex.entity_title,
52
52
  score,
53
53
  func.first_value(AiSearchIndex.value)
54
54
  .over(partition_by=AiSearchIndex.entity_id, order_by=[dist.asc(), AiSearchIndex.path.asc()])
@@ -60,12 +60,13 @@ class SemanticRetriever(Retriever):
60
60
  .select_from(AiSearchIndex)
61
61
  .join(cand, cand.c.entity_id == AiSearchIndex.entity_id)
62
62
  .where(AiSearchIndex.embedding.isnot(None))
63
- .distinct(AiSearchIndex.entity_id)
63
+ .distinct(AiSearchIndex.entity_id, AiSearchIndex.entity_title)
64
64
  )
65
65
  final_query = combined_query.subquery("ranked_semantic")
66
66
 
67
67
  stmt = select(
68
68
  final_query.c.entity_id,
69
+ final_query.c.entity_title,
69
70
  final_query.c.score,
70
71
  final_query.c.highlight_text,
71
72
  final_query.c.highlight_path,
@@ -83,12 +84,12 @@ class SemanticRetriever(Retriever):
83
84
  self, stmt: Select, score_column: ColumnElement, entity_id_column: ColumnElement
84
85
  ) -> Select:
85
86
  """Apply semantic score pagination with precise Decimal handling."""
86
- if self.page_after_score is not None and self.page_after_id is not None:
87
- score_param = self._quantize_score_for_pagination(self.page_after_score)
87
+ if self.cursor is not None:
88
+ score_param = self._quantize_score_for_pagination(self.cursor.score)
88
89
  stmt = stmt.where(
89
90
  or_(
90
91
  score_column < score_param,
91
- and_(score_column == score_param, entity_id_column > self.page_after_id),
92
+ and_(score_column == score_param, entity_id_column > self.cursor.id),
92
93
  )
93
94
  )
94
95
  return stmt
@@ -15,22 +15,22 @@ from sqlalchemy import Select, literal, select
15
15
 
16
16
  from orchestrator.search.core.types import SearchMetadata
17
17
 
18
- from ..pagination import PaginationParams
18
+ from ..pagination import PageCursor
19
19
  from .base import Retriever
20
20
 
21
21
 
22
22
  class StructuredRetriever(Retriever):
23
23
  """Applies a dummy score for purely structured searches with no text query."""
24
24
 
25
- def __init__(self, pagination_params: PaginationParams) -> None:
26
- self.page_after_id = pagination_params.page_after_id
25
+ def __init__(self, cursor: PageCursor | None) -> None:
26
+ self.cursor = cursor
27
27
 
28
28
  def apply(self, candidate_query: Select) -> Select:
29
29
  cand = candidate_query.subquery()
30
- stmt = select(cand.c.entity_id, literal(1.0).label("score")).select_from(cand)
30
+ stmt = select(cand.c.entity_id, cand.c.entity_title, literal(1.0).label("score")).select_from(cand)
31
31
 
32
- if self.page_after_id:
33
- stmt = stmt.where(cand.c.entity_id > self.page_after_id)
32
+ if self.cursor is not None:
33
+ stmt = stmt.where(cand.c.entity_id > self.cursor.id)
34
34
 
35
35
  return stmt.order_by(cand.c.entity_id.asc())
36
36
 
@@ -12,9 +12,9 @@
12
12
  # limitations under the License.
13
13
 
14
14
  import uuid
15
- from typing import Any, Literal
15
+ from typing import Any, ClassVar, Literal
16
16
 
17
- from pydantic import BaseModel, ConfigDict, Field
17
+ from pydantic import BaseModel, ConfigDict, Field, TypeAdapter
18
18
 
19
19
  from orchestrator.search.core.types import ActionType, EntityType
20
20
  from orchestrator.search.filters import FilterTree
@@ -23,6 +23,9 @@ from orchestrator.search.filters import FilterTree
23
23
  class BaseSearchParameters(BaseModel):
24
24
  """Base model with common search parameters."""
25
25
 
26
+ DEFAULT_EXPORT_LIMIT: ClassVar[int] = 1000
27
+ MAX_EXPORT_LIMIT: ClassVar[int] = 10000
28
+
26
29
  action: ActionType = Field(default=ActionType.SELECT, description="The action to perform.")
27
30
  entity_type: EntityType
28
31
 
@@ -33,14 +36,18 @@ class BaseSearchParameters(BaseModel):
33
36
  )
34
37
 
35
38
  limit: int = Field(default=10, ge=1, le=30, description="Maximum number of search results to return.")
39
+ export_limit: int = Field(
40
+ default=DEFAULT_EXPORT_LIMIT, ge=1, le=MAX_EXPORT_LIMIT, description="Maximum number of results to export."
41
+ )
36
42
  model_config = ConfigDict(extra="forbid")
37
43
 
38
44
  @classmethod
39
- def create(cls, entity_type: EntityType, **kwargs: Any) -> "BaseSearchParameters":
40
- try:
41
- return PARAMETER_REGISTRY[entity_type](entity_type=entity_type, **kwargs)
42
- except KeyError:
43
- raise ValueError(f"No search parameter class found for entity type: {entity_type.value}")
45
+ def create(cls, **kwargs: Any) -> "SearchParameters":
46
+ """Create the correct search parameter subclass instance based on entity_type."""
47
+ from orchestrator.search.schemas.parameters import SearchParameters
48
+
49
+ adapter: TypeAdapter = TypeAdapter(SearchParameters)
50
+ return adapter.validate_python(kwargs)
44
51
 
45
52
  @property
46
53
  def vector_query(self) -> str | None:
@@ -121,9 +128,6 @@ class ProcessSearchParameters(BaseSearchParameters):
121
128
  )
122
129
 
123
130
 
124
- PARAMETER_REGISTRY: dict[EntityType, type[BaseSearchParameters]] = {
125
- EntityType.SUBSCRIPTION: SubscriptionSearchParameters,
126
- EntityType.PRODUCT: ProductSearchParameters,
127
- EntityType.WORKFLOW: WorkflowSearchParameters,
128
- EntityType.PROCESS: ProcessSearchParameters,
129
- }
131
+ SearchParameters = (
132
+ SubscriptionSearchParameters | ProductSearchParameters | WorkflowSearchParameters | ProcessSearchParameters
133
+ )
@@ -15,7 +15,7 @@ from typing import Literal
15
15
 
16
16
  from pydantic import BaseModel, ConfigDict
17
17
 
18
- from orchestrator.search.core.types import FilterOp, SearchMetadata, UIType
18
+ from orchestrator.search.core.types import EntityType, FilterOp, SearchMetadata, UIType
19
19
 
20
20
 
21
21
  class MatchingField(BaseModel):
@@ -30,6 +30,8 @@ class SearchResult(BaseModel):
30
30
  """Represents a single search result item."""
31
31
 
32
32
  entity_id: str
33
+ entity_type: EntityType
34
+ entity_title: str
33
35
  score: float
34
36
  perfect_match: int = 0
35
37
  matching_field: MatchingField | None = None
@@ -40,6 +42,7 @@ class SearchResponse(BaseModel):
40
42
 
41
43
  results: list[SearchResult]
42
44
  metadata: SearchMetadata
45
+ query_embedding: list[float] | None = None
43
46
 
44
47
 
45
48
  class ValueSchema(BaseModel):
orchestrator/settings.py CHANGED
@@ -57,6 +57,7 @@ class AppSettings(BaseSettings):
57
57
  EXECUTOR: str = ExecutorType.THREADPOOL
58
58
  WORKFLOWS_SWAGGER_HOST: str = "localhost"
59
59
  WORKFLOWS_GUI_URI: str = "http://localhost:3000"
60
+ BASE_URL: str = "http://localhost:8080" # Base URL for the API (used for generating export URLs)
60
61
  DATABASE_URI: PostgresDsn = "postgresql://nwa:nwa@localhost/orchestrator-core" # type: ignore
61
62
  MAX_WORKERS: int = 5
62
63
  MAIL_SERVER: str = "localhost"
@@ -1,9 +1,10 @@
1
1
  from collections.abc import Callable
2
- from typing import TypeAlias
2
+ from typing import TypeAlias, TypeVar
3
3
 
4
4
  from oauth2_lib.fastapi import OIDCUserModel
5
5
 
6
6
  # This file is broken out separately to avoid circular imports.
7
7
 
8
8
  # Can instead use "type Authorizer = ..." in later Python versions.
9
- Authorizer: TypeAlias = Callable[[OIDCUserModel | None], bool]
9
+ T = TypeVar("T", bound=OIDCUserModel)
10
+ Authorizer: TypeAlias = Callable[[T | None], bool]
orchestrator/workflow.py CHANGED
@@ -235,7 +235,10 @@ def make_workflow(
235
235
  return wrapping_function
236
236
 
237
237
 
238
- def step(name: str) -> Callable[[StepFunc], Step]:
238
+ def step(
239
+ name: str,
240
+ retry_auth_callback: Authorizer | None = None,
241
+ ) -> Callable[[StepFunc], Step]:
239
242
  """Mark a function as a workflow step."""
240
243
 
241
244
  def decorator(func: StepFunc) -> Step:
@@ -255,12 +258,19 @@ def step(name: str) -> Callable[[StepFunc], Step]:
255
258
  logger.warning("Step failed", exc_info=ex)
256
259
  return Failed(ex)
257
260
 
258
- return make_step_function(wrapper, name)
261
+ return make_step_function(
262
+ wrapper,
263
+ name,
264
+ retry_auth_callback=retry_auth_callback,
265
+ )
259
266
 
260
267
  return decorator
261
268
 
262
269
 
263
- def retrystep(name: str) -> Callable[[StepFunc], Step]:
270
+ def retrystep(
271
+ name: str,
272
+ retry_auth_callback: Authorizer | None = None,
273
+ ) -> Callable[[StepFunc], Step]:
264
274
  """Mark a function as a retryable workflow step.
265
275
 
266
276
  If this step fails it goes to `Waiting` were it will be retried periodically. If it `Success` it acts as a normal
@@ -283,7 +293,11 @@ def retrystep(name: str) -> Callable[[StepFunc], Step]:
283
293
  except Exception as ex:
284
294
  return Waiting(ex)
285
295
 
286
- return make_step_function(wrapper, name)
296
+ return make_step_function(
297
+ wrapper,
298
+ name,
299
+ retry_auth_callback=retry_auth_callback,
300
+ )
287
301
 
288
302
  return decorator
289
303
 
@@ -349,7 +363,9 @@ def _extend_step_group_steps(name: str, steps: StepList) -> StepList:
349
363
  return enter_step >> steps >> exit_step
350
364
 
351
365
 
352
- def step_group(name: str, steps: StepList, extract_form: bool = True) -> Step:
366
+ def step_group(
367
+ name: str, steps: StepList, extract_form: bool = True, retry_auth_callback: Authorizer | None = None
368
+ ) -> Step:
353
369
  """Add a group of steps to the workflow as a single step.
354
370
 
355
371
  A step group is a sequence of steps that act as a single step.
@@ -362,6 +378,7 @@ def step_group(name: str, steps: StepList, extract_form: bool = True) -> Step:
362
378
  name: The name of the step
363
379
  steps: The sub steps in the step group
364
380
  extract_form: Whether to attach the first form of the sub steps to the step group
381
+ retry_auth_callback: Callback to determine if user is authorized to retry this group on failure
365
382
  """
366
383
 
367
384
  steps = _extend_step_group_steps(name, steps)
@@ -392,7 +409,7 @@ def step_group(name: str, steps: StepList, extract_form: bool = True) -> Step:
392
409
 
393
410
  # Make sure we return a form is a sub step has a form
394
411
  form = next((sub_step.form for sub_step in steps if sub_step.form), None) if extract_form else None
395
- return make_step_function(func, name, form)
412
+ return make_step_function(func, name, form, retry_auth_callback=retry_auth_callback)
396
413
 
397
414
 
398
415
  def _create_endpoint_step(key: str = DEFAULT_CALLBACK_ROUTE_KEY) -> StepFunc:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orchestrator-core
3
- Version: 4.5.3
3
+ Version: 4.6.0
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
@@ -41,8 +41,8 @@ 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.2
45
- Requires-Dist: oauth2-lib>=2.4.1
44
+ Requires-Dist: nwa-stdlib~=1.10.3
45
+ Requires-Dist: oauth2-lib>=2.5.0
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 ==0.7.0 ; extra == "agent"
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"
@@ -119,21 +119,26 @@ Configure the database URI in your local environment:
119
119
  export DATABASE_URI=postgresql://nwa:nwa@localhost:5432/orchestrator-core
120
120
  ```
121
121
 
122
- ### Step 3 - Create main.py
122
+ ### Step 3 - Create main.py and wsgi.py
123
123
 
124
- Create a `main.py` file.
124
+ Create a `main.py` file for running the CLI.
125
125
 
126
126
  ```python
127
- from orchestrator import OrchestratorCore
128
127
  from orchestrator.cli.main import app as core_cli
129
- from orchestrator.settings import AppSettings
130
-
131
- app = OrchestratorCore(base_settings=AppSettings())
132
128
 
133
129
  if __name__ == "__main__":
134
130
  core_cli()
135
131
  ```
136
132
 
133
+ Create a `wsgi.py` file for running the web server.
134
+
135
+ ```python
136
+ from orchestrator import OrchestratorCore
137
+ from orchestrator.settings import AppSettings
138
+
139
+ app = OrchestratorCore(base_settings=AppSettings())
140
+ ```
141
+
137
142
  ### Step 4 - Run the database migrations
138
143
 
139
144
  Initialize the migration environment and database tables.
@@ -147,7 +152,7 @@ python main.py db upgrade heads
147
152
 
148
153
  ```shell
149
154
  export OAUTH2_ACTIVE=False
150
- uvicorn --reload --host 127.0.0.1 --port 8080 main:app
155
+ uvicorn --reload --host 127.0.0.1 --port 8080 wsgi:app
151
156
  ```
152
157
 
153
158
  Visit the [ReDoc](http://127.0.0.1:8080/api/redoc) or [OpenAPI](http://127.0.0.1:8080/api/docs) page to view and interact with the API.
@@ -1,29 +1,30 @@
1
- orchestrator/__init__.py,sha256=lAl6oSNu-QVncaN5mMYEuHLv8QFr-CZIMBXFmG7BBto,1447
2
- orchestrator/agentic_app.py,sha256=op7osw7KJRww90iYuWBt_bB5qI-sAkpG0fyr0liubQw,3968
3
- orchestrator/app.py,sha256=UPKQuDpg8MWNC6r3SRRbp6l9RBzwb00IMIaGRk-jbCU,13203
1
+ orchestrator/__init__.py,sha256=8JJFpeMSHjgtMb6PR_KnH5Vp_qgNvvK0C3Uve5tPqEo,1454
2
+ orchestrator/agentic_app.py,sha256=ouiyyZiS4uS6Lox2DtbGGRnb2njJBMSHpSAGe-T5rX0,3028
3
+ orchestrator/app.py,sha256=w8ubXaaogwjmwLM0TXqZaLkAhmaOTWzVlwiYbi5mHeE,13203
4
4
  orchestrator/exception_handlers.py,sha256=UsW3dw8q0QQlNLcV359bIotah8DYjMsj2Ts1LfX4ClY,1268
5
- orchestrator/llm_settings.py,sha256=UDehiEVXkRMfmPSfCTHQX8dtH2gLCGtZK_wQTU3yISg,2316
5
+ orchestrator/llm_settings.py,sha256=giqxZmwO8sXyNF5Zc7-O9JYd7PLN065pKQYpJYOpXcE,2816
6
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=Xl6bXd2VtosBTOuv4PClgVv9KoVDItThYkhDzf4IYxc,4560
9
+ orchestrator/settings.py,sha256=mvs1VhBYth6Zp55HsNroML4DU1jiq5SkVM47_BLgcIo,4662
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
13
- orchestrator/workflow.py,sha256=meDCPnyyX_n5PsMUaFy2wWb5EKNm1_ff7zRDBYrbcDg,45901
13
+ orchestrator/workflow.py,sha256=QvAbJ3ySuqUnKrQ_EQ6PQqgkK1TmKZ7COioCCmeABwc,46391
14
14
  orchestrator/api/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
15
15
  orchestrator/api/error_handling.py,sha256=YrPCxSa-DSa9KwqIMlXI-KGBGnbGIW5ukOPiikUH9E4,1502
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=bWsvWgLap7b6ltu1BvwZpW7X2dEE6cQ7-WY0HcY7Yoo,3279
19
+ orchestrator/api/api_v1/api.py,sha256=1qQRsIxKXLW3kcmSV5u3_v1TZk5RcNWb4ZOyLguhTKY,3488
20
20
  orchestrator/api/api_v1/endpoints/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
21
+ orchestrator/api/api_v1/endpoints/agent.py,sha256=9_s3nchTr9ua_1Sxs0kJl2mH_20o-DlUaaQPmY4vRMk,1732
21
22
  orchestrator/api/api_v1/endpoints/health.py,sha256=iaxs1XX1_250_gKNsspuULCV2GEMBjbtjsmfQTOvMAI,1284
22
23
  orchestrator/api/api_v1/endpoints/processes.py,sha256=OVbt6FgFnJ4aHaYGIg0cPoim8mxDpdzJ4TGAyfB_kPw,16269
23
24
  orchestrator/api/api_v1/endpoints/product_blocks.py,sha256=kZ6ywIOsS_S2qGq7RvZ4KzjvaS1LmwbGWR37AKRvWOw,2146
24
25
  orchestrator/api/api_v1/endpoints/products.py,sha256=BfFtwu9dZXEQbtKxYj9icc73GKGvAGMR5ytyf41nQlQ,3081
25
26
  orchestrator/api/api_v1/endpoints/resource_types.py,sha256=gGyuaDyOD0TAVoeFGaGmjDGnQ8eQQArOxKrrk4MaDzA,2145
26
- orchestrator/api/api_v1/endpoints/search.py,sha256=NooZcMXmlnD1NxdhFWlqF3jhmixF1DZYuUG8XtEVGjo,10885
27
+ orchestrator/api/api_v1/endpoints/search.py,sha256=Zk3kDICF3ruaz0VUJH2q5GbbccLSdt9x4I5SN00M9EM,8133
27
28
  orchestrator/api/api_v1/endpoints/settings.py,sha256=5s-k169podZjgGHUbVDmSQwpY_3Cs_Bbf2PPtZIkBcw,6184
28
29
  orchestrator/api/api_v1/endpoints/subscription_customer_descriptions.py,sha256=1_6LtgQleoq3M6z_W-Qz__Bj3OFUweoPrUqHMwSH6AM,3288
29
30
  orchestrator/api/api_v1/endpoints/subscriptions.py,sha256=7KaodccUiMkcVnrFnK2azp_V_-hGudcIyhov5WwVGQY,9810
@@ -32,14 +33,14 @@ orchestrator/api/api_v1/endpoints/user.py,sha256=RyI32EXVu6I-IxWjz0XB5zQWzzLL60z
32
33
  orchestrator/api/api_v1/endpoints/workflows.py,sha256=_0vhGiQeu3-z16Zi0WmuDWBs8gmed6BzRNwYH_sF6AY,1977
33
34
  orchestrator/api/api_v1/endpoints/ws.py,sha256=1l7E0ag_sZ6UMfQPHlmew7ENwxjm6fflBwcMZAb7V-k,2786
34
35
  orchestrator/cli/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
35
- orchestrator/cli/database.py,sha256=YkYAbCY2VPAa6mDW0PpNKG5wL4FuAQYD2CGl1_DQtEk,19595
36
- orchestrator/cli/generate.py,sha256=SBaYfRijXPF9r3VxarPKTiDzDcB6GBMMQvecQIb_ZLQ,7377
37
- orchestrator/cli/main.py,sha256=xGLc_cS2LoSIbK5qkMFE7GCnZoOi5kATgtmQDFNQU7E,1658
36
+ orchestrator/cli/database.py,sha256=iO8SPvswNK1aXpk-QcIrwTqLrV7n_WQ5ftoG_VOkXxg,19870
37
+ orchestrator/cli/generate.py,sha256=UPvdCtaG6Zy_Vb4t2B2Nsd0k8PMFToFj7YlNd3mgbqw,7601
38
+ orchestrator/cli/main.py,sha256=rpVp7f9N5LDDQXqTYPkI412ADNBwelf5gK4sS8f3e9Y,1673
38
39
  orchestrator/cli/migrate_domain_models.py,sha256=WRXy_1OnziQwpsCFZXvjB30nDJtjj0ikVXy8YNLque4,20928
39
40
  orchestrator/cli/migrate_tasks.py,sha256=bju8XColjSZD0v3rS4kl-24dLr8En_H4-6enBmqd494,7255
40
41
  orchestrator/cli/migrate_workflows.py,sha256=nxUpx0vgEIc_8aJrjAyrw3E9Dt8JmaamTts8oiQ4vHY,8923
41
42
  orchestrator/cli/migration_helpers.py,sha256=C5tpkP5WEBr7G9S-1k1hgSI8ili6xd9Z5ygc9notaK0,4110
42
- orchestrator/cli/scheduler.py,sha256=2q6xT_XVOodY3e_qzIV98MWNvKvrbFpOJajWesj1fcs,1911
43
+ orchestrator/cli/scheduler.py,sha256=4jWpgxx0j0UFoba4Kw0nOEM6slr5XffDYBkm6hzK_C0,1766
43
44
  orchestrator/cli/domain_gen_helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
44
45
  orchestrator/cli/domain_gen_helpers/fixed_input_helpers.py,sha256=uzpwsaau81hHSxNMOS9-o7kF-9_78R0f_UE0AvWooZQ,6775
45
46
  orchestrator/cli/domain_gen_helpers/helpers.py,sha256=tIPxn8ezED_xYZxH7ZAtQLwkDc6RNmLZVxWAoJ3a9lw,4203
@@ -61,7 +62,7 @@ orchestrator/cli/generator/custom_templates/additional_terminate_steps.j2,sha256
61
62
  orchestrator/cli/generator/generator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
63
  orchestrator/cli/generator/generator/enums.py,sha256=ztGxHzpq7l4HDSZswH8UDJlf2374tj_-Rzf8t-sub1s,2007
63
64
  orchestrator/cli/generator/generator/helpers.py,sha256=IoHXacEebef7MhUseTVkj05fRryyGMDH94Ai0nGq-nw,9838
64
- orchestrator/cli/generator/generator/migration.py,sha256=lDqosegGRKJRs1dN4QZV7lFwdWBKTEwe9DeNqP8OVkY,7045
65
+ orchestrator/cli/generator/generator/migration.py,sha256=k1w1yCm0Ga9h8VYs3Iinat3ktBVi81ZfD8Mt8ilArJY,7158
65
66
  orchestrator/cli/generator/generator/product.py,sha256=W930c-9C8k0kW7I8_SC4mWf045neYcfFpkck5SwHeNQ,2079
66
67
  orchestrator/cli/generator/generator/product_block.py,sha256=h552YZTuehtaux6PKw5GKWAmBQ6cStOSY4TbaJ1Kcq8,4802
67
68
  orchestrator/cli/generator/generator/settings.py,sha256=_IhRnQ7bpGjqYtFo-OiLky25IKCibdghC6pkHmPIPoI,1379
@@ -104,17 +105,17 @@ orchestrator/cli/helpers/input_helpers.py,sha256=pv5GTMuIWLzBE_bKNhn1XD_gxoqB0s1
104
105
  orchestrator/cli/helpers/print_helpers.py,sha256=b3ePg6HfBLKPYBBVr5XOA__JnFEMI5HBjbjov3CP8Po,859
105
106
  orchestrator/cli/search/__init__.py,sha256=K15_iW9ogR7xtX7qHDal4H09tmwVGnOBZWyPBLWhuzc,1274
106
107
  orchestrator/cli/search/index_llm.py,sha256=RWPkFz5bxiznjpN1vMsSWeqcvYKB90DLL4pXQ92QJNI,2239
107
- orchestrator/cli/search/resize_embedding.py,sha256=ds830T26ADOD9vZS7psRHJVF_u2xar2d4vvIH1AOlww,4216
108
+ orchestrator/cli/search/resize_embedding.py,sha256=iJdM7L6Kyq4CzRjXHWLwpGRiMnKK7xZ9133C0THebBE,4847
108
109
  orchestrator/cli/search/search_explore.py,sha256=SDn1DMN8a4roSPodIHl-KrNAvdHo5jTDUvMUFLVh1P4,8602
109
- orchestrator/cli/search/speedtest.py,sha256=QkQ_YhKh7TnNRX4lKjgrmF7DyufU9teLqw4CWkm52ko,4972
110
+ orchestrator/cli/search/speedtest.py,sha256=4YGd2JsOHozuI3YMphO_GAJLJZ8KyL72ERhf_1RwABI,4812
110
111
  orchestrator/config/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
111
112
  orchestrator/config/assignee.py,sha256=9mFFe9hoi2NCkXFOKL2pU2aveBzcZhljSvqUnh55vrk,780
112
- orchestrator/db/__init__.py,sha256=41_v-oeX5SMnwH2uIeBzscoST3FRXdpkEFDE5AoQR1E,3498
113
+ orchestrator/db/__init__.py,sha256=I9QSWgqnenShixO_Kseuo0ZtM1epLAOIRpucxccrQDk,3625
113
114
  orchestrator/db/database.py,sha256=MU_w_e95ho2dVb2JDnt_KFYholx___XDkiQXbc8wCkI,10269
114
115
  orchestrator/db/helpers.py,sha256=L8kEdnSSNGnUpZhdeGx2arCodakWN8vSpKdfjoLuHdY,831
115
116
  orchestrator/db/listeners.py,sha256=UBPYcH0FE3a7aZQu_D0O_JMXpXIRYXC0gjSAvlv5GZo,1142
116
117
  orchestrator/db/loaders.py,sha256=ez6JzQ3IKVkC_oLAkVlIIiI8Do7hXbdcPKCvUSLxRog,7962
117
- orchestrator/db/models.py,sha256=bFyTiQGndaEMaNMl9GegPBj5018eBPvA8OMLcF94NIM,28530
118
+ orchestrator/db/models.py,sha256=vgYRMBiMzwDvePZBBkMrvflljfYHsAGNo6u6jUtC0QY,31328
118
119
  orchestrator/db/filters/__init__.py,sha256=RUj6P0XxEBhYj0SN5wH5-Vf_Wt_ilZR_n9DSar5m9oM,371
119
120
  orchestrator/db/filters/filters.py,sha256=55RtpQwM2rhrk4A6CCSeSXoo-BT9GnQoNTryA8CtLEg,5020
120
121
  orchestrator/db/filters/process.py,sha256=xvGhyfo_MZ1xhLvFC6yULjcT4mJk0fKc1glJIYgsWLE,4018
@@ -221,7 +222,7 @@ orchestrator/migrations/README,sha256=heMzebYwlGhnE8_4CWJ4LS74WoEZjBy-S-mIJRxAEK
221
222
  orchestrator/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
222
223
  orchestrator/migrations/alembic.ini,sha256=kMoADqhGeubU8xanILNaqm4oixLy9m4ngYtdGpZcc7I,873
223
224
  orchestrator/migrations/env.py,sha256=M_cPoAL2axuuup5fvMy8I_WTPHEw0RbPEHkhZ3QEGoE,3740
224
- orchestrator/migrations/helpers.py,sha256=sgSNZzQFHGT9_nboxwp_ryP2CWQZsSqEg_0i4giIM2k,48248
225
+ orchestrator/migrations/helpers.py,sha256=-Bvsl5Jt4FChtAAG7Lx6uiDVx6_8NyJ8IEWSk1fIQEU,47904
225
226
  orchestrator/migrations/script.py.mako,sha256=607Zrgp-Z-m9WGLt4wewN1QDOmHeifxcePUdADkSZyM,510
226
227
  orchestrator/migrations/templates/alembic.ini.j2,sha256=8v7UbKvOiWEbEKQa-Au3uONKUuYx6aflulYanZX6r2I,883
227
228
  orchestrator/migrations/templates/env.py.j2,sha256=LIt0ildZTZvNEx3imhy4GNzfFi_rPZg-8H7rGgrBOP8,2717
@@ -257,10 +258,10 @@ orchestrator/migrations/versions/schema/2025-07-04_4b58e336d1bf_deprecating_work
257
258
  orchestrator/migrations/versions/schema/2025-07-28_850dccac3b02_update_description_of_resume_workflows_.py,sha256=R6Qoga83DJ1IL0WYPu0u5u2ZvAmqGlDmUMv_KtJyOhQ,812
258
259
  orchestrator/schedules/__init__.py,sha256=Zy0fTOBMGIRFoh5iVFDLF9_PRAFaONYDThGK9EsysWo,981
259
260
  orchestrator/schedules/resume_workflows.py,sha256=jRnVRWDy687pQu-gtk80ecwiLSdrvtL15tG3U2zWA6I,891
260
- orchestrator/schedules/scheduler.py,sha256=nnuehZnBbtC90MsFP_Q6kqcD1ihsq08vr1ALJ6jHF_s,5833
261
+ orchestrator/schedules/scheduler.py,sha256=9d6n-J2_GB6crOoVSCK29IfaktfUyzQYcTZl7gRTZ5c,6250
261
262
  orchestrator/schedules/scheduling.py,sha256=_mbpHMhijey8Y56ebtJ4wVkrp_kPVRm8hoByzlQF4SE,2821
262
263
  orchestrator/schedules/task_vacuum.py,sha256=mxb7fsy1GphRwvUWi_lvwNaj51YAXUdIDlkOJd90AFI,874
263
- orchestrator/schedules/validate_products.py,sha256=zWFQeVn3F8LP3joExLiKdmHs008pZsO-RolcIXHjFyE,1322
264
+ orchestrator/schedules/validate_products.py,sha256=_ucUG9HecskG2eN3tcDSiMzJK9gN3kZB1dXjrtxcApY,1324
264
265
  orchestrator/schedules/validate_subscriptions.py,sha256=bUBV45aEuqVdtqYBAXh1lX4O5vuNTeTfds4J_zq35dI,2113
265
266
  orchestrator/schemas/__init__.py,sha256=YDyZ0YBvzB4ML9oDBCBPGnBvf680zFFgUzg7X0tYBRY,2326
266
267
  orchestrator/schemas/base.py,sha256=Vc444LetsINLRhG2SxW9Bq01hOzChPOhQWCImQTr-As,930
@@ -271,21 +272,23 @@ orchestrator/schemas/process.py,sha256=UACBNt-4g4v9Y528u-gZ-Wk7YxwJHhnI4cEu5CtQm
271
272
  orchestrator/schemas/product.py,sha256=MhMCh058ZuS2RJq-wSmxIPUNlhQexxXIx3DSz2OmOh4,1570
272
273
  orchestrator/schemas/product_block.py,sha256=kCqvm6qadHpegMr9aWI_fYX-T7mS-5S-ldPxnGQZg7M,1519
273
274
  orchestrator/schemas/resource_type.py,sha256=VDju4XywcDDLxdpbWU62RTvR9QF8x_GRrpTlN_NE8uI,1064
274
- orchestrator/schemas/search.py,sha256=Q89GAPrmHf2DnwTJiPMYog1xAIC3QMJ3IItFZdVVFXg,3417
275
+ orchestrator/schemas/search.py,sha256=DOW-zwxr6VZVYbVsvft2mwFLv9M_nDegX33F6Bx1tJE,1548
275
276
  orchestrator/schemas/subscription.py,sha256=-jXyHZIed9Xlia18ksSDyenblNN6Q2yM2FlGELyJ458,3423
276
277
  orchestrator/schemas/subscription_descriptions.py,sha256=Ft_jw1U0bf9Z0U8O4OWfLlcl0mXCVT_qYVagBP3GbIQ,1262
277
278
  orchestrator/schemas/workflow.py,sha256=StVoRGyNT2iIeq3z8BIlTPt0bcafzbeYxXRrCucR6LU,2146
278
279
  orchestrator/search/__init__.py,sha256=2uhTQexKx-cdBP1retV3CYSNCs02s8WL3fhGvupRGZk,571
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
280
+ orchestrator/search/export.py,sha256=_0ncVpTqN6AoQfW3WX0fWnDQX3hBz6ZGC31Beu4PVwQ,6678
281
+ orchestrator/search/llm_migration.py,sha256=tJAfAoykMFIROQrKBKpAbDaGYDLKcmevKWjYrsBmuAY,6703
282
+ orchestrator/search/agent/__init__.py,sha256=_O4DN0MSTUtr4olhyE0-2hsb7x3f_KURMCYjg8jV4QA,756
283
+ orchestrator/search/agent/agent.py,sha256=iWa4_achqh5zRIfcJvjmY3hmDuFVGpV_PxjgttLdokU,2075
284
+ orchestrator/search/agent/json_patch.py,sha256=_Z5ULhLyeuOuy-Gr_DJR4eA-wo9F78qySKUt5F_SQvQ,1892
285
+ orchestrator/search/agent/prompts.py,sha256=6EPubiSLFyICIeinfVUF6miU1nS2QTAhqgzm-l5O3PI,5810
286
+ orchestrator/search/agent/state.py,sha256=WhvZu7N0NhD1DD5mfZSUAzYN4mu8dDyvQ4Tz9I-hLtg,1364
287
+ orchestrator/search/agent/tools.py,sha256=m4Krtb-Qmep-JkbJ9-RC7QqKa0CuQJM6-Z6_PN-b8HU,14706
285
288
  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/embedding.py,sha256=n16H5fZRlfn91wI8PfZPa1R39HwQd8T1nwlDOzcOUBU,2823
290
+ orchestrator/search/core/exceptions.py,sha256=S_ZMEhrqsQBVqJ559FQ5J6tZU6BYLiU65AGWgSvgv_k,1159
291
+ orchestrator/search/core/types.py,sha256=0U_m4ZmPwvL77hIx9yk7UyvkE8HoiRvEnGdY4mDLzCo,8853
289
292
  orchestrator/search/core/validators.py,sha256=zktY5A3RTBmfdARJoxoz9rnnyTZj7L30Kbmh9UTQz2o,1204
290
293
  orchestrator/search/docs/index.md,sha256=zKzE2fbtHDfYTKaHg628wAsqCTOJ5yFUWV0ucFH3pAg,863
291
294
  orchestrator/search/docs/running_local_text_embedding_inference.md,sha256=OR0NVZMb8DqpgXYxlwDUrJwfRk0bYOk1-LkDMqsV6bU,1327
@@ -296,26 +299,27 @@ orchestrator/search/filters/definitions.py,sha256=wl2HiXlTWXQN4JmuSq2SBuhTMvyIeo
296
299
  orchestrator/search/filters/ltree_filters.py,sha256=1OOmM5K90NsGBQmTqyoDlphdAOGd9r2rmz1rNItm8yk,2341
297
300
  orchestrator/search/filters/numeric_filter.py,sha256=lcOAOpPNTwA0SW8QPiMOs1oKTYZLwGDQSrwFydXgMUU,2774
298
301
  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
302
+ orchestrator/search/indexing/indexer.py,sha256=2qqDe6IlKfz1exh0xLBmpPdkTqbapLnTJORZneM6tmw,15320
303
+ orchestrator/search/indexing/registry.py,sha256=N4YOUhNJfY6iBwPnn76tDcZaOVYJMA2SxwWhdBE85Xs,3716
301
304
  orchestrator/search/indexing/tasks.py,sha256=vmS1nnprPF74yitS0xGpP1dhSDis2nekMYF0v_jduDE,2478
302
305
  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/__init__.py,sha256=WpbC65DrI1AlNPvp5QDZXUZzGnzZ8Av0-9fH95eWvs0,763
307
+ orchestrator/search/retrieval/builder.py,sha256=af_m4I-p_8eJ85t2B99jxecYlzFaY4F0CZwh4YFf_Us,4669
308
+ orchestrator/search/retrieval/engine.py,sha256=RjaH70ChVU2etx5I6PuePcwbVGhxVVw_zG2ZlOviOPQ,7635
306
309
  orchestrator/search/retrieval/exceptions.py,sha256=oHoLGLLxxmVcV-W36uK0V-Pn4vf_iw6hajpQbap3NqI,3588
307
- orchestrator/search/retrieval/pagination.py,sha256=bRcXtWxxWvOhCQyhjwfJ7S6q_Dn3pYm8TCg7ofjVP44,3353
310
+ orchestrator/search/retrieval/pagination.py,sha256=mJMesuHaxYvJggy8MsxRmfof_D-LuDVc_lGQ_jhqWkQ,3148
311
+ orchestrator/search/retrieval/query_state.py,sha256=Gxhb7JcS40Qv2w9wvCp6_CPokGOQoxByyjc-AhK1LRI,2301
308
312
  orchestrator/search/retrieval/utils.py,sha256=svhF9YfMClq2MVPArS3ir3pg5_e_bremquv_l6tTsOQ,4597
309
313
  orchestrator/search/retrieval/validation.py,sha256=AjhttVJWlZDaT1_pUL_LaypQV11U21JpTCE4OwnpoqA,5849
310
314
  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
315
+ orchestrator/search/retrieval/retrievers/base.py,sha256=GyVbFVsZwjolyVfgGv3kYD22dxRhvRbUI7h9BjeK1DU,4174
316
+ orchestrator/search/retrieval/retrievers/fuzzy.py,sha256=PLp_ANRLzmtGQP1t9X4jt43_JLKDnOxWU2xqlexSH1U,3779
317
+ orchestrator/search/retrieval/retrievers/hybrid.py,sha256=l-7J4qct0h28wSi0KvdFJw2lyh3jyobbrCbg0PuX-4I,11141
318
+ orchestrator/search/retrieval/retrievers/semantic.py,sha256=36ky_A_LNWs13IYe809qy1RPrd0Fab-G-9pf2ZDARhA,3905
319
+ orchestrator/search/retrieval/retrievers/structured.py,sha256=13TxC52fpNGXHnPX40J2GczRYFk8LAvWn2a0HWZCd2Q,1426
316
320
  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
321
+ orchestrator/search/schemas/parameters.py,sha256=rrRLF_3p41SDEzX5yt-IPQWawGAcSzpeOVROhqulnbc,4834
322
+ orchestrator/search/schemas/results.py,sha256=5UU4mmTrIu--RDW4nrl6_EpdYCMf_S-kj0OyR0aaOHQ,2096
319
323
  orchestrator/services/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
320
324
  orchestrator/services/fixed_inputs.py,sha256=kyz7s2HLzyDulvcq-ZqefTw1om86COvyvTjz0_5CmgI,876
321
325
  orchestrator/services/input_state.py,sha256=6BZOpb3cHpO18K-XG-3QUIV9pIM25_ufdODrp5CmXG4,2390
@@ -334,7 +338,7 @@ orchestrator/services/executors/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7n
334
338
  orchestrator/services/executors/celery.py,sha256=j5xJo7sZAdTtc0GmmJzoYVfzuYKiqAdAe5QbtPv0bPI,4937
335
339
  orchestrator/services/executors/threadpool.py,sha256=SA0Lns17fP7qp5Y0bLZB7YzZ-sYKrmHQdYTeqs9dnV0,4931
336
340
  orchestrator/utils/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
337
- orchestrator/utils/auth.py,sha256=IWn0amdquLobt1mRNwhgKT0ErCBjLGDtLdsDuaY8rlE,309
341
+ orchestrator/utils/auth.py,sha256=CyjVbouzP5-eQ8Fe2kpBdMaBIJ7Ej-Cx8MLq0iaIHa8,344
338
342
  orchestrator/utils/crypt.py,sha256=18eNamYWMllPkxyRtWIde3FDr3rSF74R5SAL6WsCj9Y,5584
339
343
  orchestrator/utils/datetime.py,sha256=a1WQ_yvu7MA0TiaRpC5avwbOSFdrj4eMrV4a7I2sD5Q,1477
340
344
  orchestrator/utils/deprecation_logger.py,sha256=oqju7ecJcB_r7cMnldaOAA79QUZYS_h69IkDrFV9nAg,875
@@ -369,7 +373,7 @@ orchestrator/workflows/tasks/resume_workflows.py,sha256=T3iobSJjVgiupe0rClD34kUZ
369
373
  orchestrator/workflows/tasks/validate_product_type.py,sha256=lo2TX_MZOfcOmYFjLyD82FrJ5AAN3HOsE6BhDVFuy9Q,3210
370
374
  orchestrator/workflows/tasks/validate_products.py,sha256=GZJBoFF-WMphS7ghMs2-gqvV2iL1F0POhk0uSNt93n0,8510
371
375
  orchestrator/workflows/translations/en-GB.json,sha256=ST53HxkphFLTMjFHonykDBOZ7-P_KxksktZU3GbxLt0,846
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,,
376
+ orchestrator_core-4.6.0.dist-info/licenses/LICENSE,sha256=b-aA5OZQuuBATmLKo_mln8CQrDPPhg3ghLzjPjLn4Tg,11409
377
+ orchestrator_core-4.6.0.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
378
+ orchestrator_core-4.6.0.dist-info/METADATA,sha256=QCqCq87j8moTuHs58DFl2NNttWLaFSjvbikTj8kNVwM,6351
379
+ orchestrator_core-4.6.0.dist-info/RECORD,,