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.
- orchestrator/__init__.py +2 -2
- orchestrator/agentic_app.py +3 -23
- orchestrator/api/api_v1/api.py +5 -0
- orchestrator/api/api_v1/endpoints/agent.py +49 -0
- orchestrator/api/api_v1/endpoints/search.py +120 -201
- orchestrator/app.py +1 -1
- orchestrator/cli/database.py +3 -0
- orchestrator/cli/generate.py +11 -4
- orchestrator/cli/generator/generator/migration.py +7 -3
- orchestrator/cli/main.py +1 -1
- orchestrator/cli/scheduler.py +15 -22
- orchestrator/cli/search/resize_embedding.py +28 -22
- orchestrator/cli/search/speedtest.py +4 -6
- orchestrator/db/__init__.py +6 -0
- orchestrator/db/models.py +75 -0
- orchestrator/llm_settings.py +18 -1
- orchestrator/migrations/helpers.py +47 -39
- orchestrator/schedules/scheduler.py +32 -15
- orchestrator/schedules/validate_products.py +1 -1
- orchestrator/schemas/search.py +8 -85
- orchestrator/search/agent/__init__.py +2 -2
- orchestrator/search/agent/agent.py +26 -30
- orchestrator/search/agent/json_patch.py +51 -0
- orchestrator/search/agent/prompts.py +35 -9
- orchestrator/search/agent/state.py +28 -2
- orchestrator/search/agent/tools.py +192 -53
- orchestrator/search/core/embedding.py +2 -2
- orchestrator/search/core/exceptions.py +6 -0
- orchestrator/search/core/types.py +1 -0
- orchestrator/search/export.py +199 -0
- orchestrator/search/indexing/indexer.py +13 -4
- orchestrator/search/indexing/registry.py +14 -1
- orchestrator/search/llm_migration.py +55 -0
- orchestrator/search/retrieval/__init__.py +3 -2
- orchestrator/search/retrieval/builder.py +5 -1
- orchestrator/search/retrieval/engine.py +66 -23
- orchestrator/search/retrieval/pagination.py +46 -56
- orchestrator/search/retrieval/query_state.py +61 -0
- orchestrator/search/retrieval/retrievers/base.py +26 -40
- orchestrator/search/retrieval/retrievers/fuzzy.py +10 -9
- orchestrator/search/retrieval/retrievers/hybrid.py +11 -8
- orchestrator/search/retrieval/retrievers/semantic.py +9 -8
- orchestrator/search/retrieval/retrievers/structured.py +6 -6
- orchestrator/search/schemas/parameters.py +17 -13
- orchestrator/search/schemas/results.py +4 -1
- orchestrator/settings.py +1 -0
- orchestrator/utils/auth.py +3 -2
- orchestrator/workflow.py +23 -6
- {orchestrator_core-4.5.3.dist-info → orchestrator_core-4.6.0.dist-info}/METADATA +16 -11
- {orchestrator_core-4.5.3.dist-info → orchestrator_core-4.6.0.dist-info}/RECORD +52 -48
- {orchestrator_core-4.5.3.dist-info → orchestrator_core-4.6.0.dist-info}/WHEEL +0 -0
- {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
|
|
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
|
-
|
|
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.
|
|
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.
|
|
266
|
-
score_param = self._quantize_score_for_pagination(self.
|
|
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.
|
|
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
|
|
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],
|
|
27
|
+
def __init__(self, vector_query: list[float], cursor: PageCursor | None) -> None:
|
|
28
28
|
self.vector_query = vector_query
|
|
29
|
-
self.
|
|
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.
|
|
87
|
-
score_param = self._quantize_score_for_pagination(self.
|
|
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.
|
|
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
|
|
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,
|
|
26
|
-
self.
|
|
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.
|
|
33
|
-
stmt = stmt.where(cand.c.entity_id > self.
|
|
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,
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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
|
-
|
|
125
|
-
|
|
126
|
-
|
|
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"
|
orchestrator/utils/auth.py
CHANGED
|
@@ -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
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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.
|
|
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.
|
|
45
|
-
Requires-Dist: oauth2-lib>=2.
|
|
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
|
|
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
|
|
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=
|
|
2
|
-
orchestrator/agentic_app.py,sha256=
|
|
3
|
-
orchestrator/app.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
36
|
-
orchestrator/cli/generate.py,sha256=
|
|
37
|
-
orchestrator/cli/main.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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
|
|
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=
|
|
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=
|
|
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=
|
|
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/
|
|
280
|
-
orchestrator/search/
|
|
281
|
-
orchestrator/search/agent/
|
|
282
|
-
orchestrator/search/agent/
|
|
283
|
-
orchestrator/search/agent/
|
|
284
|
-
orchestrator/search/agent/
|
|
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=
|
|
287
|
-
orchestrator/search/core/exceptions.py,sha256=
|
|
288
|
-
orchestrator/search/core/types.py,sha256=
|
|
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=
|
|
300
|
-
orchestrator/search/indexing/registry.py,sha256=
|
|
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=
|
|
304
|
-
orchestrator/search/retrieval/builder.py,sha256=
|
|
305
|
-
orchestrator/search/retrieval/engine.py,sha256=
|
|
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=
|
|
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=
|
|
312
|
-
orchestrator/search/retrieval/retrievers/fuzzy.py,sha256=
|
|
313
|
-
orchestrator/search/retrieval/retrievers/hybrid.py,sha256=
|
|
314
|
-
orchestrator/search/retrieval/retrievers/semantic.py,sha256=
|
|
315
|
-
orchestrator/search/retrieval/retrievers/structured.py,sha256=
|
|
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=
|
|
318
|
-
orchestrator/search/schemas/results.py,sha256=
|
|
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=
|
|
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.
|
|
373
|
-
orchestrator_core-4.
|
|
374
|
-
orchestrator_core-4.
|
|
375
|
-
orchestrator_core-4.
|
|
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,,
|
|
File without changes
|
|
File without changes
|