orchestrator-core 4.4.2__py3-none-any.whl → 4.5.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 +17 -2
- orchestrator/agentic_app.py +103 -0
- orchestrator/api/api_v1/api.py +14 -2
- orchestrator/api/api_v1/endpoints/search.py +296 -0
- orchestrator/app.py +32 -0
- orchestrator/cli/main.py +22 -1
- orchestrator/cli/search/__init__.py +32 -0
- orchestrator/cli/search/index_llm.py +73 -0
- orchestrator/cli/search/resize_embedding.py +135 -0
- orchestrator/cli/search/search_explore.py +208 -0
- orchestrator/cli/search/speedtest.py +151 -0
- orchestrator/db/models.py +37 -1
- orchestrator/devtools/populator.py +16 -0
- orchestrator/domain/base.py +2 -7
- orchestrator/domain/lifecycle.py +24 -7
- orchestrator/llm_settings.py +57 -0
- orchestrator/log_config.py +1 -0
- orchestrator/migrations/helpers.py +7 -1
- orchestrator/schemas/search.py +130 -0
- orchestrator/schemas/workflow.py +1 -0
- orchestrator/search/__init__.py +12 -0
- orchestrator/search/agent/__init__.py +21 -0
- orchestrator/search/agent/agent.py +62 -0
- orchestrator/search/agent/prompts.py +100 -0
- orchestrator/search/agent/state.py +21 -0
- orchestrator/search/agent/tools.py +258 -0
- orchestrator/search/core/__init__.py +12 -0
- orchestrator/search/core/embedding.py +73 -0
- orchestrator/search/core/exceptions.py +36 -0
- orchestrator/search/core/types.py +296 -0
- orchestrator/search/core/validators.py +40 -0
- orchestrator/search/docs/index.md +37 -0
- orchestrator/search/docs/running_local_text_embedding_inference.md +46 -0
- orchestrator/search/filters/__init__.py +40 -0
- orchestrator/search/filters/base.py +295 -0
- orchestrator/search/filters/date_filters.py +88 -0
- orchestrator/search/filters/definitions.py +107 -0
- orchestrator/search/filters/ltree_filters.py +56 -0
- orchestrator/search/filters/numeric_filter.py +73 -0
- orchestrator/search/indexing/__init__.py +16 -0
- orchestrator/search/indexing/indexer.py +334 -0
- orchestrator/search/indexing/registry.py +101 -0
- orchestrator/search/indexing/tasks.py +69 -0
- orchestrator/search/indexing/traverse.py +334 -0
- orchestrator/search/llm_migration.py +108 -0
- orchestrator/search/retrieval/__init__.py +16 -0
- orchestrator/search/retrieval/builder.py +123 -0
- orchestrator/search/retrieval/engine.py +154 -0
- orchestrator/search/retrieval/exceptions.py +90 -0
- orchestrator/search/retrieval/pagination.py +96 -0
- orchestrator/search/retrieval/retrievers/__init__.py +26 -0
- orchestrator/search/retrieval/retrievers/base.py +123 -0
- orchestrator/search/retrieval/retrievers/fuzzy.py +94 -0
- orchestrator/search/retrieval/retrievers/hybrid.py +277 -0
- orchestrator/search/retrieval/retrievers/semantic.py +94 -0
- orchestrator/search/retrieval/retrievers/structured.py +39 -0
- orchestrator/search/retrieval/utils.py +120 -0
- orchestrator/search/retrieval/validation.py +152 -0
- orchestrator/search/schemas/__init__.py +12 -0
- orchestrator/search/schemas/parameters.py +129 -0
- orchestrator/search/schemas/results.py +77 -0
- orchestrator/services/processes.py +1 -1
- orchestrator/services/settings_env_variables.py +2 -2
- orchestrator/settings.py +8 -1
- orchestrator/utils/state.py +6 -1
- orchestrator/workflows/steps.py +15 -1
- orchestrator/workflows/tasks/validate_products.py +1 -1
- {orchestrator_core-4.4.2.dist-info → orchestrator_core-4.5.0.dist-info}/METADATA +15 -8
- {orchestrator_core-4.4.2.dist-info → orchestrator_core-4.5.0.dist-info}/RECORD +71 -21
- {orchestrator_core-4.4.2.dist-info → orchestrator_core-4.5.0.dist-info}/WHEEL +0 -0
- {orchestrator_core-4.4.2.dist-info → orchestrator_core-4.5.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,12 @@
|
|
|
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.
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# Copyright 2019-2025 SURF, GÉANT.
|
|
2
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
|
+
# you may not use this file except in compliance with the License.
|
|
4
|
+
# You may obtain a copy of the License at
|
|
5
|
+
#
|
|
6
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
7
|
+
#
|
|
8
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
9
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
10
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
11
|
+
# See the License for the specific language governing permissions and
|
|
12
|
+
# limitations under the License.
|
|
13
|
+
|
|
14
|
+
import uuid
|
|
15
|
+
from typing import Any, Literal
|
|
16
|
+
|
|
17
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
18
|
+
|
|
19
|
+
from orchestrator.search.core.types import ActionType, EntityType
|
|
20
|
+
from orchestrator.search.filters import FilterTree
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class BaseSearchParameters(BaseModel):
|
|
24
|
+
"""Base model with common search parameters."""
|
|
25
|
+
|
|
26
|
+
action: ActionType = Field(default=ActionType.SELECT, description="The action to perform.")
|
|
27
|
+
entity_type: EntityType
|
|
28
|
+
|
|
29
|
+
filters: FilterTree | None = Field(default=None, description="A list of structured filters to apply to the search.")
|
|
30
|
+
|
|
31
|
+
query: str | None = Field(
|
|
32
|
+
default=None, description="Unified search query - will be processed into vector_query and/or fuzzy_term"
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
limit: int = Field(default=10, ge=1, le=30, description="Maximum number of search results to return.")
|
|
36
|
+
model_config = ConfigDict(extra="forbid")
|
|
37
|
+
|
|
38
|
+
@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}")
|
|
44
|
+
|
|
45
|
+
@property
|
|
46
|
+
def vector_query(self) -> str | None:
|
|
47
|
+
"""Extract vector query from unified query field."""
|
|
48
|
+
if not self.query:
|
|
49
|
+
return None
|
|
50
|
+
try:
|
|
51
|
+
uuid.UUID(self.query)
|
|
52
|
+
return None # It's a UUID, so disable vector search.
|
|
53
|
+
except ValueError:
|
|
54
|
+
return self.query
|
|
55
|
+
|
|
56
|
+
@property
|
|
57
|
+
def fuzzy_term(self) -> str | None:
|
|
58
|
+
"""Extract fuzzy term from unified query field."""
|
|
59
|
+
if not self.query:
|
|
60
|
+
return None
|
|
61
|
+
|
|
62
|
+
words = self.query.split()
|
|
63
|
+
# Only use fuzzy for single words
|
|
64
|
+
# otherwise, trigram operator filters out too much.
|
|
65
|
+
return self.query if len(words) == 1 else None
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
class SubscriptionSearchParameters(BaseSearchParameters):
|
|
69
|
+
entity_type: Literal[EntityType.SUBSCRIPTION] = Field(
|
|
70
|
+
default=EntityType.SUBSCRIPTION, description="The type of entity to search."
|
|
71
|
+
)
|
|
72
|
+
model_config = ConfigDict(
|
|
73
|
+
json_schema_extra={
|
|
74
|
+
"title": "SearchSubscriptions",
|
|
75
|
+
"description": "Search subscriptions based on specific criteria.",
|
|
76
|
+
"examples": [
|
|
77
|
+
{
|
|
78
|
+
"filters": {
|
|
79
|
+
"op": "AND",
|
|
80
|
+
"children": [
|
|
81
|
+
{"path": "subscription.status", "condition": {"op": "eq", "value": "provisioning"}},
|
|
82
|
+
{"path": "subscription.end_date", "condition": {"op": "gte", "value": "2025-01-01"}},
|
|
83
|
+
],
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
],
|
|
87
|
+
}
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
class ProductSearchParameters(BaseSearchParameters):
|
|
92
|
+
entity_type: Literal[EntityType.PRODUCT] = Field(
|
|
93
|
+
default=EntityType.PRODUCT, description="The type of entity to search."
|
|
94
|
+
)
|
|
95
|
+
model_config = ConfigDict(
|
|
96
|
+
json_schema_extra={
|
|
97
|
+
"title": "SearchProducts",
|
|
98
|
+
"description": "Search products based on specific criteria.",
|
|
99
|
+
"examples": [
|
|
100
|
+
{
|
|
101
|
+
"filters": [
|
|
102
|
+
{"path": "product.product_type", "condition": {"op": "eq", "value": "Shop"}},
|
|
103
|
+
]
|
|
104
|
+
}
|
|
105
|
+
],
|
|
106
|
+
}
|
|
107
|
+
)
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
class WorkflowSearchParameters(BaseSearchParameters):
|
|
111
|
+
entity_type: Literal[EntityType.WORKFLOW] = Field(
|
|
112
|
+
default=EntityType.WORKFLOW, description="The type of entity to search."
|
|
113
|
+
)
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
class ProcessSearchParameters(BaseSearchParameters):
|
|
117
|
+
"""Search parameters specifically for PROCESS entities."""
|
|
118
|
+
|
|
119
|
+
entity_type: Literal[EntityType.PROCESS] = Field(
|
|
120
|
+
default=EntityType.PROCESS, description="The type of entity to search."
|
|
121
|
+
)
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
PARAMETER_REGISTRY: dict[EntityType, type[BaseSearchParameters]] = {
|
|
125
|
+
EntityType.SUBSCRIPTION: SubscriptionSearchParameters,
|
|
126
|
+
EntityType.PRODUCT: ProductSearchParameters,
|
|
127
|
+
EntityType.WORKFLOW: WorkflowSearchParameters,
|
|
128
|
+
EntityType.PROCESS: ProcessSearchParameters,
|
|
129
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Copyright 2019-2025 SURF, GÉANT.
|
|
2
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
|
+
# you may not use this file except in compliance with the License.
|
|
4
|
+
# You may obtain a copy of the License at
|
|
5
|
+
#
|
|
6
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
7
|
+
#
|
|
8
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
9
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
10
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
11
|
+
# See the License for the specific language governing permissions and
|
|
12
|
+
# limitations under the License.
|
|
13
|
+
|
|
14
|
+
from typing import Literal
|
|
15
|
+
|
|
16
|
+
from pydantic import BaseModel, ConfigDict
|
|
17
|
+
|
|
18
|
+
from orchestrator.search.core.types import FilterOp, SearchMetadata, UIType
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class MatchingField(BaseModel):
|
|
22
|
+
"""Contains the field that contributed most to the (fuzzy) search result."""
|
|
23
|
+
|
|
24
|
+
text: str
|
|
25
|
+
path: str
|
|
26
|
+
highlight_indices: list[tuple[int, int]] | None = None
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class SearchResult(BaseModel):
|
|
30
|
+
"""Represents a single search result item."""
|
|
31
|
+
|
|
32
|
+
entity_id: str
|
|
33
|
+
score: float
|
|
34
|
+
perfect_match: int = 0
|
|
35
|
+
matching_field: MatchingField | None = None
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
class SearchResponse(BaseModel):
|
|
39
|
+
"""Response containing search results and metadata."""
|
|
40
|
+
|
|
41
|
+
results: list[SearchResult]
|
|
42
|
+
metadata: SearchMetadata
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class ValueSchema(BaseModel):
|
|
46
|
+
kind: UIType | Literal["none", "object"] = UIType.STRING
|
|
47
|
+
fields: dict[str, "ValueSchema"] | None = None
|
|
48
|
+
|
|
49
|
+
model_config = ConfigDict(extra="forbid")
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
class LeafInfo(BaseModel):
|
|
53
|
+
name: str
|
|
54
|
+
ui_types: list[UIType]
|
|
55
|
+
paths: list[str]
|
|
56
|
+
|
|
57
|
+
model_config = ConfigDict(
|
|
58
|
+
extra="forbid",
|
|
59
|
+
use_enum_values=True,
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
class ComponentInfo(BaseModel):
|
|
64
|
+
name: str
|
|
65
|
+
ui_types: list[UIType]
|
|
66
|
+
|
|
67
|
+
model_config = ConfigDict(
|
|
68
|
+
extra="forbid",
|
|
69
|
+
use_enum_values=True,
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
class TypeDefinition(BaseModel):
|
|
74
|
+
operators: list[FilterOp]
|
|
75
|
+
value_schema: dict[FilterOp, ValueSchema]
|
|
76
|
+
|
|
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)
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
from typing import Any, Dict, Type
|
|
15
15
|
|
|
16
16
|
from pydantic import SecretStr as PydanticSecretStr
|
|
17
|
-
from
|
|
17
|
+
from pydantic.networks import AnyUrl, _BaseMultiHostUrl
|
|
18
18
|
from pydantic_settings import BaseSettings
|
|
19
19
|
|
|
20
20
|
from orchestrator.utils.expose_settings import SecretStr as OrchSecretStr
|
|
@@ -34,7 +34,7 @@ def mask_value(key: str, value: Any) -> Any:
|
|
|
34
34
|
key_lower = key.lower()
|
|
35
35
|
is_sensitive_key = "secret" in key_lower or "password" in key_lower
|
|
36
36
|
|
|
37
|
-
if is_sensitive_key or isinstance(value, (OrchSecretStr, PydanticSecretStr,
|
|
37
|
+
if is_sensitive_key or isinstance(value, (OrchSecretStr, PydanticSecretStr, _BaseMultiHostUrl, AnyUrl)):
|
|
38
38
|
return MASK
|
|
39
39
|
|
|
40
40
|
return value
|
orchestrator/settings.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright 2019-
|
|
1
|
+
# Copyright 2019-2025 SURF, GÉANT.
|
|
2
2
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
3
|
# you may not use this file except in compliance with the License.
|
|
4
4
|
# You may obtain a copy of the License at
|
|
@@ -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()
|
orchestrator/utils/state.py
CHANGED
|
@@ -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
|
|
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)
|
orchestrator/workflows/steps.py
CHANGED
|
@@ -15,9 +15,12 @@ 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
|
|
22
|
+
from orchestrator.search.core.types import EntityType
|
|
23
|
+
from orchestrator.search.indexing import run_indexing_for_entity
|
|
21
24
|
from orchestrator.services.settings import reset_search_index
|
|
22
25
|
from orchestrator.services.subscriptions import get_subscription
|
|
23
26
|
from orchestrator.targets import Target
|
|
@@ -141,9 +144,20 @@ def set_status(status: SubscriptionLifecycle) -> Step:
|
|
|
141
144
|
|
|
142
145
|
|
|
143
146
|
@step("Refresh subscription search index")
|
|
144
|
-
def refresh_subscription_search_index() -> State:
|
|
147
|
+
def refresh_subscription_search_index(subscription: SubscriptionModel | None) -> State:
|
|
148
|
+
"""Refresh subscription search index.
|
|
149
|
+
|
|
150
|
+
Args:
|
|
151
|
+
subscription: Subscription to refresh search index.
|
|
152
|
+
|
|
153
|
+
Returns:
|
|
154
|
+
State of the workflow.
|
|
155
|
+
|
|
156
|
+
"""
|
|
145
157
|
try:
|
|
146
158
|
reset_search_index()
|
|
159
|
+
if llm_settings.SEARCH_ENABLED and subscription:
|
|
160
|
+
run_indexing_for_entity(EntityType.SUBSCRIPTION, str(subscription.subscription_id))
|
|
147
161
|
except Exception:
|
|
148
162
|
# Don't fail workflow in case of unexpected error
|
|
149
163
|
logger.warning("Error updated the subscriptions search index")
|
|
@@ -105,7 +105,7 @@ def check_that_products_have_create_modify_and_terminate_workflows() -> State:
|
|
|
105
105
|
product_data = get_products(filters=[ProductTable.status == "active"])
|
|
106
106
|
|
|
107
107
|
workflows_not_complete: list = []
|
|
108
|
-
targets = ["CREATE", "TERMINATE", "MODIFY", "VALIDATE"]
|
|
108
|
+
targets = ["CREATE", "TERMINATE", "MODIFY", "RECONCILE", "VALIDATE"]
|
|
109
109
|
for product in product_data:
|
|
110
110
|
workflows = {c.target for c in product.workflows if c.target in targets and c.name != "modify_note"}
|
|
111
111
|
if len(workflows) < len(targets):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: orchestrator-core
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.5.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
|
|
@@ -36,19 +36,20 @@ 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.
|
|
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.
|
|
45
|
-
Requires-Dist: oauth2-lib
|
|
44
|
+
Requires-Dist: nwa-stdlib~=1.9.2
|
|
45
|
+
Requires-Dist: oauth2-lib>=2.4.1
|
|
46
46
|
Requires-Dist: orjson==3.10.18
|
|
47
|
+
Requires-Dist: pgvector>=0.4.1
|
|
47
48
|
Requires-Dist: prometheus-client==0.22.1
|
|
48
49
|
Requires-Dist: psycopg2-binary==2.9.10
|
|
49
|
-
Requires-Dist: pydantic-forms>=1.4.0
|
|
50
|
+
Requires-Dist: pydantic-forms>=1.4.0
|
|
50
51
|
Requires-Dist: pydantic-settings~=2.9.1
|
|
51
|
-
Requires-Dist: pydantic[email]~=2.
|
|
52
|
+
Requires-Dist: pydantic[email]~=2.11.7
|
|
52
53
|
Requires-Dist: python-dateutil==2.8.2
|
|
53
54
|
Requires-Dist: python-rapidjson>=1.18,<1.21
|
|
54
55
|
Requires-Dist: pytz==2025.2
|
|
@@ -57,16 +58,22 @@ Requires-Dist: semver==3.0.4
|
|
|
57
58
|
Requires-Dist: sentry-sdk[fastapi]~=2.29.1
|
|
58
59
|
Requires-Dist: sqlalchemy==2.0.41
|
|
59
60
|
Requires-Dist: sqlalchemy-utils==0.41.2
|
|
60
|
-
Requires-Dist: strawberry-graphql>=0.
|
|
61
|
+
Requires-Dist: strawberry-graphql>=0.281.0
|
|
61
62
|
Requires-Dist: structlog>=25.4.0
|
|
62
63
|
Requires-Dist: tabulate==0.9.0
|
|
63
64
|
Requires-Dist: typer==0.15.4
|
|
64
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"
|
|
65
69
|
Requires-Dist: celery~=5.5.1 ; extra == "celery"
|
|
70
|
+
Requires-Dist: litellm>=1.75.7 ; extra == "search"
|
|
66
71
|
Project-URL: Documentation, https://workfloworchestrator.org/orchestrator-core
|
|
67
72
|
Project-URL: Homepage, https://workfloworchestrator.org/orchestrator-core
|
|
68
73
|
Project-URL: Source, https://github.com/workfloworchestrator/orchestrator-core
|
|
74
|
+
Provides-Extra: agent
|
|
69
75
|
Provides-Extra: celery
|
|
76
|
+
Provides-Extra: search
|
|
70
77
|
|
|
71
78
|
# Orchestrator-Core
|
|
72
79
|
|
|
@@ -74,7 +81,7 @@ Provides-Extra: celery
|
|
|
74
81
|
[](https://codecov.io/gh/workfloworchestrator/orchestrator-core)
|
|
75
82
|
[](https://pypi.org/project/orchestrator-core)
|
|
76
83
|
[](https://pypi.org/project/orchestrator-core)
|
|
77
|
-

|
|
78
85
|
|
|
79
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>
|
|
80
87
|
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
orchestrator/__init__.py,sha256=
|
|
2
|
-
orchestrator/
|
|
1
|
+
orchestrator/__init__.py,sha256=56DajAUnTXWDpnWP3zBCXTdjCpD1-fGjkq7IXrWP4H0,1447
|
|
2
|
+
orchestrator/agentic_app.py,sha256=op7osw7KJRww90iYuWBt_bB5qI-sAkpG0fyr0liubQw,3968
|
|
3
|
+
orchestrator/app.py,sha256=UPKQuDpg8MWNC6r3SRRbp6l9RBzwb00IMIaGRk-jbCU,13203
|
|
3
4
|
orchestrator/exception_handlers.py,sha256=UsW3dw8q0QQlNLcV359bIotah8DYjMsj2Ts1LfX4ClY,1268
|
|
4
|
-
orchestrator/
|
|
5
|
+
orchestrator/llm_settings.py,sha256=UDehiEVXkRMfmPSfCTHQX8dtH2gLCGtZK_wQTU3yISg,2316
|
|
6
|
+
orchestrator/log_config.py,sha256=1cPl_OXT4tEUyNxG8cwIWXrmadUm1E81vq0mdtrV-v4,1912
|
|
5
7
|
orchestrator/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
8
|
orchestrator/security.py,sha256=iXFxGxab54aav7oHEKLAVkTgrQMJGHy6IYLojEnD7gI,2422
|
|
7
|
-
orchestrator/settings.py,sha256=
|
|
9
|
+
orchestrator/settings.py,sha256=Xl6bXd2VtosBTOuv4PClgVv9KoVDItThYkhDzf4IYxc,4560
|
|
8
10
|
orchestrator/targets.py,sha256=d7Fyh_mWIWPivA_E7DTNFpZID3xFW_K0JlZ5nksVX7k,830
|
|
9
11
|
orchestrator/types.py,sha256=qzs7xx5AYRmKbpYRyJJP3wuDb0W0bcAzefCN0RWLAco,15459
|
|
10
12
|
orchestrator/version.py,sha256=b58e08lxs47wUNXv0jXFO_ykpksmytuzEXD4La4W-NQ,1366
|
|
@@ -14,13 +16,14 @@ orchestrator/api/error_handling.py,sha256=YrPCxSa-DSa9KwqIMlXI-KGBGnbGIW5ukOPiik
|
|
|
14
16
|
orchestrator/api/helpers.py,sha256=s0QRHYw8AvEmlkmRhuEzz9xixaZKUF3YuPzUVHkcoXk,6933
|
|
15
17
|
orchestrator/api/models.py,sha256=z9BDBx7uI4KBHWbD_LVrLsqNQ0_w-Mg9Qiy7PR_rZhk,5996
|
|
16
18
|
orchestrator/api/api_v1/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
|
|
17
|
-
orchestrator/api/api_v1/api.py,sha256=
|
|
19
|
+
orchestrator/api/api_v1/api.py,sha256=bWsvWgLap7b6ltu1BvwZpW7X2dEE6cQ7-WY0HcY7Yoo,3279
|
|
18
20
|
orchestrator/api/api_v1/endpoints/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
|
|
19
21
|
orchestrator/api/api_v1/endpoints/health.py,sha256=iaxs1XX1_250_gKNsspuULCV2GEMBjbtjsmfQTOvMAI,1284
|
|
20
22
|
orchestrator/api/api_v1/endpoints/processes.py,sha256=OVbt6FgFnJ4aHaYGIg0cPoim8mxDpdzJ4TGAyfB_kPw,16269
|
|
21
23
|
orchestrator/api/api_v1/endpoints/product_blocks.py,sha256=kZ6ywIOsS_S2qGq7RvZ4KzjvaS1LmwbGWR37AKRvWOw,2146
|
|
22
24
|
orchestrator/api/api_v1/endpoints/products.py,sha256=BfFtwu9dZXEQbtKxYj9icc73GKGvAGMR5ytyf41nQlQ,3081
|
|
23
25
|
orchestrator/api/api_v1/endpoints/resource_types.py,sha256=gGyuaDyOD0TAVoeFGaGmjDGnQ8eQQArOxKrrk4MaDzA,2145
|
|
26
|
+
orchestrator/api/api_v1/endpoints/search.py,sha256=NooZcMXmlnD1NxdhFWlqF3jhmixF1DZYuUG8XtEVGjo,10885
|
|
24
27
|
orchestrator/api/api_v1/endpoints/settings.py,sha256=5s-k169podZjgGHUbVDmSQwpY_3Cs_Bbf2PPtZIkBcw,6184
|
|
25
28
|
orchestrator/api/api_v1/endpoints/subscription_customer_descriptions.py,sha256=1_6LtgQleoq3M6z_W-Qz__Bj3OFUweoPrUqHMwSH6AM,3288
|
|
26
29
|
orchestrator/api/api_v1/endpoints/subscriptions.py,sha256=7KaodccUiMkcVnrFnK2azp_V_-hGudcIyhov5WwVGQY,9810
|
|
@@ -31,7 +34,7 @@ orchestrator/api/api_v1/endpoints/ws.py,sha256=1l7E0ag_sZ6UMfQPHlmew7ENwxjm6fflB
|
|
|
31
34
|
orchestrator/cli/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
|
|
32
35
|
orchestrator/cli/database.py,sha256=YkYAbCY2VPAa6mDW0PpNKG5wL4FuAQYD2CGl1_DQtEk,19595
|
|
33
36
|
orchestrator/cli/generate.py,sha256=SBaYfRijXPF9r3VxarPKTiDzDcB6GBMMQvecQIb_ZLQ,7377
|
|
34
|
-
orchestrator/cli/main.py,sha256=
|
|
37
|
+
orchestrator/cli/main.py,sha256=xGLc_cS2LoSIbK5qkMFE7GCnZoOi5kATgtmQDFNQU7E,1658
|
|
35
38
|
orchestrator/cli/migrate_domain_models.py,sha256=WRXy_1OnziQwpsCFZXvjB30nDJtjj0ikVXy8YNLque4,20928
|
|
36
39
|
orchestrator/cli/migrate_tasks.py,sha256=bju8XColjSZD0v3rS4kl-24dLr8En_H4-6enBmqd494,7255
|
|
37
40
|
orchestrator/cli/migrate_workflows.py,sha256=nxUpx0vgEIc_8aJrjAyrw3E9Dt8JmaamTts8oiQ4vHY,8923
|
|
@@ -99,6 +102,11 @@ orchestrator/cli/generator/templates/validate_product.j2,sha256=_gPNYS8dGOSpRm2E
|
|
|
99
102
|
orchestrator/cli/helpers/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
|
|
100
103
|
orchestrator/cli/helpers/input_helpers.py,sha256=pv5GTMuIWLzBE_bKNhn1XD_gxoqB0s1ZN4cnKkIIu5I,1139
|
|
101
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
|
|
102
110
|
orchestrator/config/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
|
|
103
111
|
orchestrator/config/assignee.py,sha256=9mFFe9hoi2NCkXFOKL2pU2aveBzcZhljSvqUnh55vrk,780
|
|
104
112
|
orchestrator/db/__init__.py,sha256=41_v-oeX5SMnwH2uIeBzscoST3FRXdpkEFDE5AoQR1E,3498
|
|
@@ -106,7 +114,7 @@ orchestrator/db/database.py,sha256=MU_w_e95ho2dVb2JDnt_KFYholx___XDkiQXbc8wCkI,1
|
|
|
106
114
|
orchestrator/db/helpers.py,sha256=L8kEdnSSNGnUpZhdeGx2arCodakWN8vSpKdfjoLuHdY,831
|
|
107
115
|
orchestrator/db/listeners.py,sha256=UBPYcH0FE3a7aZQu_D0O_JMXpXIRYXC0gjSAvlv5GZo,1142
|
|
108
116
|
orchestrator/db/loaders.py,sha256=ez6JzQ3IKVkC_oLAkVlIIiI8Do7hXbdcPKCvUSLxRog,7962
|
|
109
|
-
orchestrator/db/models.py,sha256=
|
|
117
|
+
orchestrator/db/models.py,sha256=bFyTiQGndaEMaNMl9GegPBj5018eBPvA8OMLcF94NIM,28530
|
|
110
118
|
orchestrator/db/filters/__init__.py,sha256=RUj6P0XxEBhYj0SN5wH5-Vf_Wt_ilZR_n9DSar5m9oM,371
|
|
111
119
|
orchestrator/db/filters/filters.py,sha256=55RtpQwM2rhrk4A6CCSeSXoo-BT9GnQoNTryA8CtLEg,5020
|
|
112
120
|
orchestrator/db/filters/process.py,sha256=xvGhyfo_MZ1xhLvFC6yULjcT4mJk0fKc1glJIYgsWLE,4018
|
|
@@ -131,7 +139,7 @@ orchestrator/db/sorting/sorting.py,sha256=WpwImCDRKiOp4Tr54vovWpHkoJIov8SNQNPods
|
|
|
131
139
|
orchestrator/db/sorting/subscription.py,sha256=uepBMyfRFLZz5yoYK4VK3mdRBvO1Gc-6jSQXQ41fR-8,1441
|
|
132
140
|
orchestrator/db/sorting/workflow.py,sha256=6-JceMyB99M994Re58E0MX5uhlpnTW5OJCxmXopEfRU,576
|
|
133
141
|
orchestrator/devtools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
134
|
-
orchestrator/devtools/populator.py,sha256
|
|
142
|
+
orchestrator/devtools/populator.py,sha256=U7j5Gvu5mU8kvqx9jfno25aYyD5GFSk9ZQ2zYSagQOI,20399
|
|
135
143
|
orchestrator/devtools/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
136
144
|
orchestrator/devtools/scripts/migrate_20.py,sha256=8-qLiWfjYctu2kNl5MHtZvfeCdUs0YzRjepy4VYOUkc,4891
|
|
137
145
|
orchestrator/devtools/scripts/migrate_30.py,sha256=pRnJQFvmliwTLgbbDSUGyS9sCWqQcTms-g_3yfUO5vQ,3030
|
|
@@ -142,11 +150,11 @@ orchestrator/distlock/managers/__init__.py,sha256=ImIkNsrXcyE7-NgRWqEhUXUuUzda9K
|
|
|
142
150
|
orchestrator/distlock/managers/memory_distlock_manager.py,sha256=HWQafcVKBF-Cka_wukZZ1GM69AWPVOpJPje3quIebQ8,3114
|
|
143
151
|
orchestrator/distlock/managers/redis_distlock_manager.py,sha256=DXtMhC8qtxiFO6xU9qYXHZQnCLjlmGBpeyfLA0vbRP0,3369
|
|
144
152
|
orchestrator/domain/__init__.py,sha256=20DhXQPKY0g3rTgCkRlNDY58sLviToOVF8NPoex9WJc,936
|
|
145
|
-
orchestrator/domain/base.py,sha256=
|
|
153
|
+
orchestrator/domain/base.py,sha256=8_f4zmaKHIy4JtyY_QgLoF8_-llgW9-7QOfqAJgacEw,69894
|
|
146
154
|
orchestrator/domain/context_cache.py,sha256=vT1a01MBSBIaokoShK9KwjItd7abNmz7cXaF67VRZK8,2508
|
|
147
155
|
orchestrator/domain/customer_description.py,sha256=RU_pcgCIZjjFfDsY45lfV0z6ATlS1NXtB0E7eH3UcYQ,3190
|
|
148
156
|
orchestrator/domain/helpers.py,sha256=D9O2duhCAZGmm39u-9ggvU-X2JsCbIS607kF77-r8QM,2549
|
|
149
|
-
orchestrator/domain/lifecycle.py,sha256=
|
|
157
|
+
orchestrator/domain/lifecycle.py,sha256=FO31mhgtHbq5H3Qr9vzA36PxSLu_icJqcuqFex0PQnk,3823
|
|
150
158
|
orchestrator/domain/subscription_instance_transform.py,sha256=j_d49dFcSss0dl-BHS-ev2faLbE0y8hLvCfrzui6C74,4360
|
|
151
159
|
orchestrator/forms/__init__.py,sha256=bw_1238HKy_T0gvfA5oEjJFwkALzvWU4O_VJ0xE8UyU,1168
|
|
152
160
|
orchestrator/forms/validators/__init__.py,sha256=2T7w429dQhChsAbnQDeyp2BrM_iKj6-nkNrz27RZatY,1906
|
|
@@ -213,7 +221,7 @@ orchestrator/migrations/README,sha256=heMzebYwlGhnE8_4CWJ4LS74WoEZjBy-S-mIJRxAEK
|
|
|
213
221
|
orchestrator/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
214
222
|
orchestrator/migrations/alembic.ini,sha256=kMoADqhGeubU8xanILNaqm4oixLy9m4ngYtdGpZcc7I,873
|
|
215
223
|
orchestrator/migrations/env.py,sha256=M_cPoAL2axuuup5fvMy8I_WTPHEw0RbPEHkhZ3QEGoE,3740
|
|
216
|
-
orchestrator/migrations/helpers.py,sha256=
|
|
224
|
+
orchestrator/migrations/helpers.py,sha256=sgSNZzQFHGT9_nboxwp_ryP2CWQZsSqEg_0i4giIM2k,48248
|
|
217
225
|
orchestrator/migrations/script.py.mako,sha256=607Zrgp-Z-m9WGLt4wewN1QDOmHeifxcePUdADkSZyM,510
|
|
218
226
|
orchestrator/migrations/templates/alembic.ini.j2,sha256=8v7UbKvOiWEbEKQa-Au3uONKUuYx6aflulYanZX6r2I,883
|
|
219
227
|
orchestrator/migrations/templates/env.py.j2,sha256=LIt0ildZTZvNEx3imhy4GNzfFi_rPZg-8H7rGgrBOP8,2717
|
|
@@ -263,18 +271,60 @@ orchestrator/schemas/process.py,sha256=UACBNt-4g4v9Y528u-gZ-Wk7YxwJHhnI4cEu5CtQm
|
|
|
263
271
|
orchestrator/schemas/product.py,sha256=MhMCh058ZuS2RJq-wSmxIPUNlhQexxXIx3DSz2OmOh4,1570
|
|
264
272
|
orchestrator/schemas/product_block.py,sha256=kCqvm6qadHpegMr9aWI_fYX-T7mS-5S-ldPxnGQZg7M,1519
|
|
265
273
|
orchestrator/schemas/resource_type.py,sha256=VDju4XywcDDLxdpbWU62RTvR9QF8x_GRrpTlN_NE8uI,1064
|
|
274
|
+
orchestrator/schemas/search.py,sha256=Q89GAPrmHf2DnwTJiPMYog1xAIC3QMJ3IItFZdVVFXg,3417
|
|
266
275
|
orchestrator/schemas/subscription.py,sha256=-jXyHZIed9Xlia18ksSDyenblNN6Q2yM2FlGELyJ458,3423
|
|
267
276
|
orchestrator/schemas/subscription_descriptions.py,sha256=Ft_jw1U0bf9Z0U8O4OWfLlcl0mXCVT_qYVagBP3GbIQ,1262
|
|
268
|
-
orchestrator/schemas/workflow.py,sha256=
|
|
277
|
+
orchestrator/schemas/workflow.py,sha256=StVoRGyNT2iIeq3z8BIlTPt0bcafzbeYxXRrCucR6LU,2146
|
|
278
|
+
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
|
|
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
|
|
290
|
+
orchestrator/search/docs/index.md,sha256=zKzE2fbtHDfYTKaHg628wAsqCTOJ5yFUWV0ucFH3pAg,863
|
|
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
|
|
269
319
|
orchestrator/services/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
|
|
270
320
|
orchestrator/services/fixed_inputs.py,sha256=kyz7s2HLzyDulvcq-ZqefTw1om86COvyvTjz0_5CmgI,876
|
|
271
321
|
orchestrator/services/input_state.py,sha256=6BZOpb3cHpO18K-XG-3QUIV9pIM25_ufdODrp5CmXG4,2390
|
|
272
322
|
orchestrator/services/process_broadcast_thread.py,sha256=D44YbjF8mRqGuznkRUV4SoRn1J0lfy_x1H508GnSVlU,4649
|
|
273
|
-
orchestrator/services/processes.py,sha256=
|
|
323
|
+
orchestrator/services/processes.py,sha256=LpJbq13UJOrNUKorwYBTV4-MJj-XLXFv6LBk7iyQgl8,30622
|
|
274
324
|
orchestrator/services/products.py,sha256=BP4KyE8zO-8z7Trrs5T6zKBOw53S9BfBJnHWI3p6u5Y,1943
|
|
275
325
|
orchestrator/services/resource_types.py,sha256=_QBy_JOW_X3aSTqH0CuLrq4zBJL0p7Q-UDJUcuK2_qc,884
|
|
276
326
|
orchestrator/services/settings.py,sha256=HEWfFulgoEDwgfxGEO__QTr5fDiwNBEj1UhAeTAdbLQ,3159
|
|
277
|
-
orchestrator/services/settings_env_variables.py,sha256=
|
|
327
|
+
orchestrator/services/settings_env_variables.py,sha256=6im2hB69KGRaqA2eskJfjgTIgfY405sHpZTnX_QQVJ4,2216
|
|
278
328
|
orchestrator/services/subscription_relations.py,sha256=aIdyzwyyy58OFhwjRPCPgnQTUTmChu6SeSQRIleQoDE,13138
|
|
279
329
|
orchestrator/services/subscriptions.py,sha256=XhJ5ygAAyWUIZHULhKyi1uU5DwkKZhzdxxn9vdQZYiA,27281
|
|
280
330
|
orchestrator/services/tasks.py,sha256=mR3Fj1VsudltpanJKI2PvrxersyhVQ1skp8H7r3XnYI,5288
|
|
@@ -301,7 +351,7 @@ orchestrator/utils/json.py,sha256=7386sdqkrKYyy4sbn5NscwctH_v1hLyw5172P__rU3g,83
|
|
|
301
351
|
orchestrator/utils/redis.py,sha256=BjUNmrKx8YVyJIucl2mhXubK6WV-49OnAU6rPMOZpM0,4469
|
|
302
352
|
orchestrator/utils/redis_client.py,sha256=9rhsvedjK_CyClAjUicQyge0mVIViATqKFGZyjBY3XA,1384
|
|
303
353
|
orchestrator/utils/search_query.py,sha256=ji5LHtrzohGz6b1IG41cnPdpWXzLEzz4SGWgHly_yfU,16205
|
|
304
|
-
orchestrator/utils/state.py,sha256=
|
|
354
|
+
orchestrator/utils/state.py,sha256=ELH08cxvpmpnJg_ae0sMi9m_QX6SqHxNzOFaJgyW9gM,14344
|
|
305
355
|
orchestrator/utils/strings.py,sha256=N0gWjmQaMjE9_99VtRvRaU8IBLTKMgBKSXcTZ9TpWAg,1077
|
|
306
356
|
orchestrator/utils/validate_data_version.py,sha256=3Eioy2wE2EWKSgkyMKcEKrkCAfUIAq-eb73iRcpgppw,184
|
|
307
357
|
orchestrator/websocket/__init__.py,sha256=V79jskk1z3uPIYgu0Gt6JLzuqr7NGfNeAZ-hbBqoUv4,5745
|
|
@@ -311,15 +361,15 @@ orchestrator/websocket/managers/memory_websocket_manager.py,sha256=lF5EEx1iFMCGE
|
|
|
311
361
|
orchestrator/workflows/__init__.py,sha256=NzIGGI-8SNAwCk2YqH6sHhEWbgAY457ntDwjO15N8v4,4131
|
|
312
362
|
orchestrator/workflows/modify_note.py,sha256=eXt5KQvrkOXf-3YEXCn2XbBLP9N-n1pUYRW2t8Odupo,2150
|
|
313
363
|
orchestrator/workflows/removed_workflow.py,sha256=V0Da5TEdfLdZZKD38ig-MTp3_IuE7VGqzHHzvPYQmLI,909
|
|
314
|
-
orchestrator/workflows/steps.py,sha256=
|
|
364
|
+
orchestrator/workflows/steps.py,sha256=teis7vHLOEAchMrzw_pvPPQ6pRFliKZRpe02vsv3AZY,6994
|
|
315
365
|
orchestrator/workflows/utils.py,sha256=VUCDoIl5XAKtIeAJpVpyW2pCIg3PoVWfwGn28BYlYhA,15424
|
|
316
366
|
orchestrator/workflows/tasks/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
|
|
317
367
|
orchestrator/workflows/tasks/cleanup_tasks_log.py,sha256=BfWYbPXhnLAHUJ0mlODDnjZnQQAvKCZJDVTwbwOWI04,1624
|
|
318
368
|
orchestrator/workflows/tasks/resume_workflows.py,sha256=T3iobSJjVgiupe0rClD34kUZ7KF4pL5yK2AVeRLZog8,4313
|
|
319
369
|
orchestrator/workflows/tasks/validate_product_type.py,sha256=paG-NAY1bdde3Adt8zItkcBKf5Pxw6f5ngGW6an6dYU,3192
|
|
320
|
-
orchestrator/workflows/tasks/validate_products.py,sha256=
|
|
370
|
+
orchestrator/workflows/tasks/validate_products.py,sha256=kXBGZTkobfYH8e_crhdErT-ypdouH0a3_WLImmbKXcE,8523
|
|
321
371
|
orchestrator/workflows/translations/en-GB.json,sha256=ST53HxkphFLTMjFHonykDBOZ7-P_KxksktZU3GbxLt0,846
|
|
322
|
-
orchestrator_core-4.
|
|
323
|
-
orchestrator_core-4.
|
|
324
|
-
orchestrator_core-4.
|
|
325
|
-
orchestrator_core-4.
|
|
372
|
+
orchestrator_core-4.5.0.dist-info/licenses/LICENSE,sha256=b-aA5OZQuuBATmLKo_mln8CQrDPPhg3ghLzjPjLn4Tg,11409
|
|
373
|
+
orchestrator_core-4.5.0.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
|
|
374
|
+
orchestrator_core-4.5.0.dist-info/METADATA,sha256=e0YOsOdZ6qAneyXj-ANE0fFlpOXkWDSfHPRBvnJNMRk,6250
|
|
375
|
+
orchestrator_core-4.5.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|