orchestrator-core 4.4.0rc3__py3-none-any.whl → 4.5.1a1__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 +26 -2
- orchestrator/agentic_app.py +84 -0
- orchestrator/api/api_v1/api.py +10 -0
- orchestrator/api/api_v1/endpoints/search.py +277 -0
- orchestrator/app.py +32 -0
- orchestrator/cli/index_llm.py +73 -0
- orchestrator/cli/main.py +22 -1
- orchestrator/cli/resize_embedding.py +135 -0
- orchestrator/cli/search_explore.py +208 -0
- orchestrator/cli/speedtest.py +151 -0
- orchestrator/db/models.py +37 -1
- orchestrator/graphql/schemas/process.py +2 -2
- orchestrator/graphql/schemas/workflow.py +2 -2
- orchestrator/llm_settings.py +51 -0
- orchestrator/migrations/versions/schema/2025-08-12_52b37b5b2714_search_index_model_for_llm_integration.py +95 -0
- orchestrator/schedules/scheduler.py +6 -7
- orchestrator/schemas/search.py +117 -0
- orchestrator/search/__init__.py +12 -0
- orchestrator/search/agent/__init__.py +8 -0
- orchestrator/search/agent/agent.py +47 -0
- orchestrator/search/agent/prompts.py +62 -0
- orchestrator/search/agent/state.py +8 -0
- orchestrator/search/agent/tools.py +121 -0
- orchestrator/search/core/__init__.py +0 -0
- orchestrator/search/core/embedding.py +64 -0
- orchestrator/search/core/exceptions.py +22 -0
- orchestrator/search/core/types.py +281 -0
- orchestrator/search/core/validators.py +27 -0
- orchestrator/search/docs/index.md +37 -0
- orchestrator/search/docs/running_local_text_embedding_inference.md +45 -0
- orchestrator/search/filters/__init__.py +27 -0
- orchestrator/search/filters/base.py +272 -0
- orchestrator/search/filters/date_filters.py +75 -0
- orchestrator/search/filters/definitions.py +93 -0
- orchestrator/search/filters/ltree_filters.py +43 -0
- orchestrator/search/filters/numeric_filter.py +60 -0
- orchestrator/search/indexing/__init__.py +3 -0
- orchestrator/search/indexing/indexer.py +323 -0
- orchestrator/search/indexing/registry.py +88 -0
- orchestrator/search/indexing/tasks.py +53 -0
- orchestrator/search/indexing/traverse.py +322 -0
- orchestrator/search/retrieval/__init__.py +3 -0
- orchestrator/search/retrieval/builder.py +108 -0
- orchestrator/search/retrieval/engine.py +152 -0
- orchestrator/search/retrieval/pagination.py +83 -0
- orchestrator/search/retrieval/retriever.py +447 -0
- orchestrator/search/retrieval/utils.py +106 -0
- orchestrator/search/retrieval/validation.py +174 -0
- orchestrator/search/schemas/__init__.py +0 -0
- orchestrator/search/schemas/parameters.py +116 -0
- orchestrator/search/schemas/results.py +63 -0
- orchestrator/services/settings_env_variables.py +2 -2
- orchestrator/settings.py +1 -1
- {orchestrator_core-4.4.0rc3.dist-info → orchestrator_core-4.5.1a1.dist-info}/METADATA +8 -3
- {orchestrator_core-4.4.0rc3.dist-info → orchestrator_core-4.5.1a1.dist-info}/RECORD +57 -14
- {orchestrator_core-4.4.0rc3.dist-info → orchestrator_core-4.5.1a1.dist-info}/WHEEL +0 -0
- {orchestrator_core-4.4.0rc3.dist-info → orchestrator_core-4.5.1a1.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
from typing import assert_never
|
|
2
|
+
|
|
3
|
+
from sqlalchemy import select, text
|
|
4
|
+
from sqlalchemy.exc import ProgrammingError
|
|
5
|
+
from sqlalchemy_utils import Ltree
|
|
6
|
+
|
|
7
|
+
from orchestrator.db import db
|
|
8
|
+
from orchestrator.db.database import WrappedSession
|
|
9
|
+
from orchestrator.db.models import AiSearchIndex
|
|
10
|
+
from orchestrator.search.core.types import EntityType, FieldType
|
|
11
|
+
from orchestrator.search.filters import (
|
|
12
|
+
DateRangeFilter,
|
|
13
|
+
DateValueFilter,
|
|
14
|
+
EqualityFilter,
|
|
15
|
+
FilterCondition,
|
|
16
|
+
FilterTree,
|
|
17
|
+
LtreeFilter,
|
|
18
|
+
NumericRangeFilter,
|
|
19
|
+
NumericValueFilter,
|
|
20
|
+
PathFilter,
|
|
21
|
+
StringFilter,
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def is_filter_compatible_with_field_type(filter_condition: FilterCondition, field_type: FieldType) -> bool:
|
|
26
|
+
"""Check whether a filter condition is compatible with a given field type.
|
|
27
|
+
|
|
28
|
+
Parameters
|
|
29
|
+
----------
|
|
30
|
+
filter_condition : FilterCondition
|
|
31
|
+
The filter condition instance to check.
|
|
32
|
+
field_type : FieldType
|
|
33
|
+
The type of field from the index schema.
|
|
34
|
+
|
|
35
|
+
Returns:
|
|
36
|
+
-------
|
|
37
|
+
bool
|
|
38
|
+
True if the filter condition is valid for the given field type, False otherwise.
|
|
39
|
+
"""
|
|
40
|
+
|
|
41
|
+
match filter_condition:
|
|
42
|
+
case LtreeFilter():
|
|
43
|
+
return True # Filters for path only
|
|
44
|
+
case DateRangeFilter() | DateValueFilter():
|
|
45
|
+
return field_type == FieldType.DATETIME
|
|
46
|
+
case NumericRangeFilter() | NumericValueFilter():
|
|
47
|
+
return field_type in {FieldType.INTEGER, FieldType.FLOAT}
|
|
48
|
+
case StringFilter():
|
|
49
|
+
return field_type == FieldType.STRING
|
|
50
|
+
case EqualityFilter():
|
|
51
|
+
return field_type in {
|
|
52
|
+
FieldType.BOOLEAN,
|
|
53
|
+
FieldType.UUID,
|
|
54
|
+
FieldType.BLOCK,
|
|
55
|
+
FieldType.RESOURCE_TYPE,
|
|
56
|
+
FieldType.STRING,
|
|
57
|
+
}
|
|
58
|
+
case _:
|
|
59
|
+
assert_never(filter_condition)
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def is_lquery_syntactically_valid(pattern: str, db_session: WrappedSession) -> bool:
|
|
63
|
+
"""Validate whether a string is a syntactically correct `lquery` pattern.
|
|
64
|
+
|
|
65
|
+
Parameters
|
|
66
|
+
----------
|
|
67
|
+
pattern : str
|
|
68
|
+
The LTree lquery pattern string to validate.
|
|
69
|
+
db_session : WrappedSession
|
|
70
|
+
The database session used to test casting.
|
|
71
|
+
|
|
72
|
+
Returns:
|
|
73
|
+
-------
|
|
74
|
+
bool
|
|
75
|
+
True if the pattern is valid, False if it fails to cast in PostgreSQL.
|
|
76
|
+
"""
|
|
77
|
+
try:
|
|
78
|
+
with db_session.begin_nested():
|
|
79
|
+
db_session.execute(text("SELECT CAST(:pattern AS lquery)"), {"pattern": pattern})
|
|
80
|
+
return True
|
|
81
|
+
except ProgrammingError:
|
|
82
|
+
return False
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
def get_structured_filter_schema() -> dict[str, str]:
|
|
86
|
+
"""Retrieve all distinct filterable paths and their field types from the index.
|
|
87
|
+
|
|
88
|
+
Returns:
|
|
89
|
+
-------
|
|
90
|
+
Dict[str, str]
|
|
91
|
+
Mapping of path strings to their corresponding field type values.
|
|
92
|
+
"""
|
|
93
|
+
stmt = select(AiSearchIndex.path, AiSearchIndex.value_type).distinct().order_by(AiSearchIndex.path)
|
|
94
|
+
result = db.session.execute(stmt)
|
|
95
|
+
return {str(path): value_type.value for path, value_type in result}
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
def validate_filter_path(path: str) -> str | None:
|
|
99
|
+
"""Check if a given path exists in the index and return its field type.
|
|
100
|
+
|
|
101
|
+
Parameters
|
|
102
|
+
----------
|
|
103
|
+
path : str
|
|
104
|
+
The fully qualified LTree path.
|
|
105
|
+
|
|
106
|
+
Returns:
|
|
107
|
+
-------
|
|
108
|
+
Optional[str]
|
|
109
|
+
The value type of the field if found, otherwise None.
|
|
110
|
+
"""
|
|
111
|
+
stmt = select(AiSearchIndex.value_type).where(AiSearchIndex.path == Ltree(path)).limit(1)
|
|
112
|
+
result = db.session.execute(stmt).scalar_one_or_none()
|
|
113
|
+
return result.value if result else None
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
async def complete_filter_validation(filter: PathFilter, entity_type: EntityType) -> None:
|
|
117
|
+
"""Validate a PathFilter against the database schema and entity type.
|
|
118
|
+
|
|
119
|
+
Checks performed:
|
|
120
|
+
1. LTree filter syntax (for LtreeFilter only)
|
|
121
|
+
2. Non-empty path
|
|
122
|
+
3. Path exists in the database schema
|
|
123
|
+
4. Filter type matches the field's value_type
|
|
124
|
+
5. Path starts with the correct entity type prefix (unless wildcard)
|
|
125
|
+
|
|
126
|
+
Parameters
|
|
127
|
+
----------
|
|
128
|
+
filter : PathFilter
|
|
129
|
+
The filter to validate.
|
|
130
|
+
entity_type : EntityType
|
|
131
|
+
The entity type being searched.
|
|
132
|
+
|
|
133
|
+
Raises:
|
|
134
|
+
------
|
|
135
|
+
ValueError
|
|
136
|
+
If any of the validation checks fail.
|
|
137
|
+
"""
|
|
138
|
+
# Ltree is a special case
|
|
139
|
+
if isinstance(filter.condition, LtreeFilter):
|
|
140
|
+
lquery_pattern = filter.condition.value
|
|
141
|
+
if not is_lquery_syntactically_valid(lquery_pattern, db.session):
|
|
142
|
+
raise ValueError(f"Ltree pattern '{lquery_pattern}' has invalid syntax.")
|
|
143
|
+
return
|
|
144
|
+
|
|
145
|
+
if not filter.path or not filter.path.strip():
|
|
146
|
+
raise ValueError("Filter path cannot be empty")
|
|
147
|
+
|
|
148
|
+
# 1. Check if path exists in database
|
|
149
|
+
db_field_type_str = validate_filter_path(filter.path)
|
|
150
|
+
if db_field_type_str is None:
|
|
151
|
+
raise ValueError(f"Path '{filter.path}' does not exist in database schema")
|
|
152
|
+
|
|
153
|
+
db_field_type = FieldType(db_field_type_str)
|
|
154
|
+
|
|
155
|
+
# 2. Check filter compatibility with field type
|
|
156
|
+
if not is_filter_compatible_with_field_type(filter.condition, db_field_type):
|
|
157
|
+
raise ValueError(
|
|
158
|
+
f"Filter '{type(filter.condition).__name__}' not compatible with field type '{db_field_type.value}'"
|
|
159
|
+
)
|
|
160
|
+
|
|
161
|
+
# 3. Check entity type prefix requirements (unless it's a wildcard path)
|
|
162
|
+
expected_prefix = f"{entity_type.value.lower()}."
|
|
163
|
+
if not filter.path.startswith(expected_prefix) and not filter.path.startswith("*"):
|
|
164
|
+
raise ValueError(
|
|
165
|
+
f"Filter path '{filter.path}' must start with '{expected_prefix}' for {entity_type.value} searches."
|
|
166
|
+
)
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
async def validate_filter_tree(filters: FilterTree | None, entity_type: EntityType) -> None:
|
|
170
|
+
"""Validate all PathFilter leaves in a FilterTree."""
|
|
171
|
+
if filters is None:
|
|
172
|
+
return
|
|
173
|
+
for leaf in filters.get_all_leaves():
|
|
174
|
+
await complete_filter_validation(leaf, entity_type)
|
|
File without changes
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import uuid
|
|
2
|
+
from typing import Any, Literal
|
|
3
|
+
|
|
4
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
5
|
+
|
|
6
|
+
from orchestrator.search.core.types import ActionType, EntityType
|
|
7
|
+
from orchestrator.search.filters import FilterTree
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class BaseSearchParameters(BaseModel):
|
|
11
|
+
"""Base model with common search parameters."""
|
|
12
|
+
|
|
13
|
+
action: ActionType = Field(default=ActionType.SELECT, description="The action to perform.")
|
|
14
|
+
entity_type: EntityType
|
|
15
|
+
|
|
16
|
+
filters: FilterTree | None = Field(default=None, description="A list of structured filters to apply to the search.")
|
|
17
|
+
|
|
18
|
+
query: str | None = Field(
|
|
19
|
+
default=None, description="Unified search query - will be processed into vector_query and/or fuzzy_term"
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
limit: int = Field(default=10, ge=1, le=30, description="Maximum number of search results to return.")
|
|
23
|
+
model_config = ConfigDict(extra="forbid")
|
|
24
|
+
|
|
25
|
+
@classmethod
|
|
26
|
+
def create(cls, entity_type: EntityType, **kwargs: Any) -> "BaseSearchParameters":
|
|
27
|
+
try:
|
|
28
|
+
return PARAMETER_REGISTRY[entity_type](entity_type=entity_type, **kwargs)
|
|
29
|
+
except KeyError:
|
|
30
|
+
raise ValueError(f"No search parameter class found for entity type: {entity_type.value}")
|
|
31
|
+
|
|
32
|
+
@property
|
|
33
|
+
def vector_query(self) -> str | None:
|
|
34
|
+
"""Extract vector query from unified query field."""
|
|
35
|
+
if not self.query:
|
|
36
|
+
return None
|
|
37
|
+
try:
|
|
38
|
+
uuid.UUID(self.query)
|
|
39
|
+
return None # It's a UUID, so disable vector search.
|
|
40
|
+
except ValueError:
|
|
41
|
+
return self.query
|
|
42
|
+
|
|
43
|
+
@property
|
|
44
|
+
def fuzzy_term(self) -> str | None:
|
|
45
|
+
"""Extract fuzzy term from unified query field."""
|
|
46
|
+
if not self.query:
|
|
47
|
+
return None
|
|
48
|
+
|
|
49
|
+
words = self.query.split()
|
|
50
|
+
# Only use fuzzy for single words
|
|
51
|
+
# otherwise, trigram operator filters out too much.
|
|
52
|
+
return self.query if len(words) == 1 else None
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
class SubscriptionSearchParameters(BaseSearchParameters):
|
|
56
|
+
entity_type: Literal[EntityType.SUBSCRIPTION] = Field(
|
|
57
|
+
default=EntityType.SUBSCRIPTION, description="The type of entity to search."
|
|
58
|
+
)
|
|
59
|
+
model_config = ConfigDict(
|
|
60
|
+
json_schema_extra={
|
|
61
|
+
"title": "SearchSubscriptions",
|
|
62
|
+
"description": "Search subscriptions based on specific criteria.",
|
|
63
|
+
"examples": [
|
|
64
|
+
{
|
|
65
|
+
"filters": {
|
|
66
|
+
"op": "AND",
|
|
67
|
+
"children": [
|
|
68
|
+
{"path": "subscription.status", "condition": {"op": "eq", "value": "provisioning"}},
|
|
69
|
+
{"path": "subscription.end_date", "condition": {"op": "gte", "value": "2025-01-01"}},
|
|
70
|
+
],
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
}
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
class ProductSearchParameters(BaseSearchParameters):
|
|
79
|
+
entity_type: Literal[EntityType.PRODUCT] = Field(
|
|
80
|
+
default=EntityType.PRODUCT, description="The type of entity to search."
|
|
81
|
+
)
|
|
82
|
+
model_config = ConfigDict(
|
|
83
|
+
json_schema_extra={
|
|
84
|
+
"title": "SearchProducts",
|
|
85
|
+
"description": "Search products based on specific criteria.",
|
|
86
|
+
"examples": [
|
|
87
|
+
{
|
|
88
|
+
"filters": [
|
|
89
|
+
{"path": "product.product_type", "condition": {"op": "eq", "value": "Shop"}},
|
|
90
|
+
]
|
|
91
|
+
}
|
|
92
|
+
],
|
|
93
|
+
}
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
class WorkflowSearchParameters(BaseSearchParameters):
|
|
98
|
+
entity_type: Literal[EntityType.WORKFLOW] = Field(
|
|
99
|
+
default=EntityType.WORKFLOW, description="The type of entity to search."
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
class ProcessSearchParameters(BaseSearchParameters):
|
|
104
|
+
"""Search parameters specifically for PROCESS entities."""
|
|
105
|
+
|
|
106
|
+
entity_type: Literal[EntityType.PROCESS] = Field(
|
|
107
|
+
default=EntityType.PROCESS, description="The type of entity to search."
|
|
108
|
+
)
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
PARAMETER_REGISTRY: dict[EntityType, type[BaseSearchParameters]] = {
|
|
112
|
+
EntityType.SUBSCRIPTION: SubscriptionSearchParameters,
|
|
113
|
+
EntityType.PRODUCT: ProductSearchParameters,
|
|
114
|
+
EntityType.WORKFLOW: WorkflowSearchParameters,
|
|
115
|
+
EntityType.PROCESS: ProcessSearchParameters,
|
|
116
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
from typing import Literal
|
|
2
|
+
|
|
3
|
+
from pydantic import BaseModel, ConfigDict
|
|
4
|
+
|
|
5
|
+
from orchestrator.search.core.types import FilterOp, SearchMetadata, UIType
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class MatchingField(BaseModel):
|
|
9
|
+
"""Contains the field that contributed most to the (fuzzy) search result."""
|
|
10
|
+
|
|
11
|
+
text: str
|
|
12
|
+
path: str
|
|
13
|
+
highlight_indices: list[tuple[int, int]] | None = None
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class SearchResult(BaseModel):
|
|
17
|
+
"""Represents a single search result item."""
|
|
18
|
+
|
|
19
|
+
entity_id: str
|
|
20
|
+
score: float
|
|
21
|
+
perfect_match: int = 0
|
|
22
|
+
matching_field: MatchingField | None = None
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class SearchResponse(BaseModel):
|
|
26
|
+
"""Response containing search results and metadata."""
|
|
27
|
+
|
|
28
|
+
results: list[SearchResult]
|
|
29
|
+
metadata: SearchMetadata
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class ValueSchema(BaseModel):
|
|
33
|
+
kind: UIType | Literal["none", "object"] = UIType.STRING
|
|
34
|
+
fields: dict[str, "ValueSchema"] | None = None
|
|
35
|
+
|
|
36
|
+
model_config = ConfigDict(extra="forbid")
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class LeafInfo(BaseModel):
|
|
40
|
+
name: str
|
|
41
|
+
ui_types: list[UIType]
|
|
42
|
+
|
|
43
|
+
model_config = ConfigDict(
|
|
44
|
+
extra="forbid",
|
|
45
|
+
use_enum_values=True,
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
class ComponentInfo(BaseModel):
|
|
50
|
+
name: str
|
|
51
|
+
ui_types: list[UIType]
|
|
52
|
+
|
|
53
|
+
model_config = ConfigDict(
|
|
54
|
+
extra="forbid",
|
|
55
|
+
use_enum_values=True,
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
class TypeDefinition(BaseModel):
|
|
60
|
+
operators: list[FilterOp]
|
|
61
|
+
valueSchema: dict[FilterOp, ValueSchema]
|
|
62
|
+
|
|
63
|
+
model_config = ConfigDict(use_enum_values=True)
|
|
@@ -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,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: orchestrator-core
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.5.1a1
|
|
4
4
|
Summary: This is the orchestrator workflow engine.
|
|
5
5
|
Author-email: SURF <automation-beheer@surf.nl>
|
|
6
6
|
Requires-Python: >=3.11,<3.14
|
|
@@ -42,13 +42,14 @@ Requires-Dist: itsdangerous>=2.2.0
|
|
|
42
42
|
Requires-Dist: jinja2==3.1.6
|
|
43
43
|
Requires-Dist: more-itertools~=10.7.0
|
|
44
44
|
Requires-Dist: nwa-stdlib~=1.9.0
|
|
45
|
-
Requires-Dist: oauth2-lib
|
|
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
50
|
Requires-Dist: pydantic-forms>=1.4.0,<=2.1.0
|
|
50
51
|
Requires-Dist: pydantic-settings~=2.9.1
|
|
51
|
-
Requires-Dist: pydantic[email]~=2.
|
|
52
|
+
Requires-Dist: pydantic[email]~=2.11.0
|
|
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
|
|
@@ -63,10 +64,14 @@ Requires-Dist: tabulate==0.9.0
|
|
|
63
64
|
Requires-Dist: typer==0.15.4
|
|
64
65
|
Requires-Dist: uvicorn[standard]~=0.34.0
|
|
65
66
|
Requires-Dist: celery~=5.5.1 ; extra == "celery"
|
|
67
|
+
Requires-Dist: pydantic-ai-slim ==0.7.0 ; extra == "llm"
|
|
68
|
+
Requires-Dist: ag-ui-protocol>=0.1.8 ; extra == "llm"
|
|
69
|
+
Requires-Dist: litellm>=1.75.7 ; extra == "llm"
|
|
66
70
|
Project-URL: Documentation, https://workfloworchestrator.org/orchestrator-core
|
|
67
71
|
Project-URL: Homepage, https://workfloworchestrator.org/orchestrator-core
|
|
68
72
|
Project-URL: Source, https://github.com/workfloworchestrator/orchestrator-core
|
|
69
73
|
Provides-Extra: celery
|
|
74
|
+
Provides-Extra: llm
|
|
70
75
|
|
|
71
76
|
# Orchestrator-Core
|
|
72
77
|
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
orchestrator/__init__.py,sha256=
|
|
2
|
-
orchestrator/
|
|
1
|
+
orchestrator/__init__.py,sha256=fQf0IZ-r0EBypFgTFaJmM8-HGrDB8XI7AB43wnjDL3g,1732
|
|
2
|
+
orchestrator/agentic_app.py,sha256=bBMuH9Ub42nb8oFG0U00SzW_uQqnAayUX2tNs6yz1BM,2810
|
|
3
|
+
orchestrator/app.py,sha256=UPKQuDpg8MWNC6r3SRRbp6l9RBzwb00IMIaGRk-jbCU,13203
|
|
3
4
|
orchestrator/exception_handlers.py,sha256=UsW3dw8q0QQlNLcV359bIotah8DYjMsj2Ts1LfX4ClY,1268
|
|
5
|
+
orchestrator/llm_settings.py,sha256=PJ3vf5aEugVigHFU7iw9haQon_bC7Y268GTFhfFaQHs,2075
|
|
4
6
|
orchestrator/log_config.py,sha256=1tPRX5q65e57a6a_zEii_PFK8SzWT0mnA5w2sKg4hh8,1853
|
|
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=30iYKd_wNtjIO12DZ4LrH9w9OJgtmQ2AFEOSnrVTsRg,4365
|
|
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=FHOEwVfyQsStZmWUlxto26vI5OvqsJF2DgtSxyuiQJo,3124
|
|
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=238Bydgj4ILNyMU_7j_Q7a0WGlfIvKv5ypP7lESU32w,16188
|
|
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=QFxnMFQ2HgpL9Ebdc-vta6Z7Rdq5Qb9OKxyiPy2Lu9o,10200
|
|
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,12 +34,16 @@ 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/
|
|
37
|
+
orchestrator/cli/index_llm.py,sha256=RWPkFz5bxiznjpN1vMsSWeqcvYKB90DLL4pXQ92QJNI,2239
|
|
38
|
+
orchestrator/cli/main.py,sha256=U4eAG_iT3JhmeB6yZnogB6KTM6kFlDUo7zY4qBdIHv4,1648
|
|
35
39
|
orchestrator/cli/migrate_domain_models.py,sha256=WRXy_1OnziQwpsCFZXvjB30nDJtjj0ikVXy8YNLque4,20928
|
|
36
40
|
orchestrator/cli/migrate_tasks.py,sha256=bju8XColjSZD0v3rS4kl-24dLr8En_H4-6enBmqd494,7255
|
|
37
41
|
orchestrator/cli/migrate_workflows.py,sha256=nxUpx0vgEIc_8aJrjAyrw3E9Dt8JmaamTts8oiQ4vHY,8923
|
|
38
42
|
orchestrator/cli/migration_helpers.py,sha256=C5tpkP5WEBr7G9S-1k1hgSI8ili6xd9Z5ygc9notaK0,4110
|
|
43
|
+
orchestrator/cli/resize_embedding.py,sha256=ds830T26ADOD9vZS7psRHJVF_u2xar2d4vvIH1AOlww,4216
|
|
39
44
|
orchestrator/cli/scheduler.py,sha256=2q6xT_XVOodY3e_qzIV98MWNvKvrbFpOJajWesj1fcs,1911
|
|
45
|
+
orchestrator/cli/search_explore.py,sha256=SDn1DMN8a4roSPodIHl-KrNAvdHo5jTDUvMUFLVh1P4,8602
|
|
46
|
+
orchestrator/cli/speedtest.py,sha256=QkQ_YhKh7TnNRX4lKjgrmF7DyufU9teLqw4CWkm52ko,4972
|
|
40
47
|
orchestrator/cli/domain_gen_helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
41
48
|
orchestrator/cli/domain_gen_helpers/fixed_input_helpers.py,sha256=uzpwsaau81hHSxNMOS9-o7kF-9_78R0f_UE0AvWooZQ,6775
|
|
42
49
|
orchestrator/cli/domain_gen_helpers/helpers.py,sha256=tIPxn8ezED_xYZxH7ZAtQLwkDc6RNmLZVxWAoJ3a9lw,4203
|
|
@@ -106,7 +113,7 @@ orchestrator/db/database.py,sha256=MU_w_e95ho2dVb2JDnt_KFYholx___XDkiQXbc8wCkI,1
|
|
|
106
113
|
orchestrator/db/helpers.py,sha256=L8kEdnSSNGnUpZhdeGx2arCodakWN8vSpKdfjoLuHdY,831
|
|
107
114
|
orchestrator/db/listeners.py,sha256=UBPYcH0FE3a7aZQu_D0O_JMXpXIRYXC0gjSAvlv5GZo,1142
|
|
108
115
|
orchestrator/db/loaders.py,sha256=ez6JzQ3IKVkC_oLAkVlIIiI8Do7hXbdcPKCvUSLxRog,7962
|
|
109
|
-
orchestrator/db/models.py,sha256=
|
|
116
|
+
orchestrator/db/models.py,sha256=bFyTiQGndaEMaNMl9GegPBj5018eBPvA8OMLcF94NIM,28530
|
|
110
117
|
orchestrator/db/filters/__init__.py,sha256=RUj6P0XxEBhYj0SN5wH5-Vf_Wt_ilZR_n9DSar5m9oM,371
|
|
111
118
|
orchestrator/db/filters/filters.py,sha256=55RtpQwM2rhrk4A6CCSeSXoo-BT9GnQoNTryA8CtLEg,5020
|
|
112
119
|
orchestrator/db/filters/process.py,sha256=xvGhyfo_MZ1xhLvFC6yULjcT4mJk0fKc1glJIYgsWLE,4018
|
|
@@ -185,7 +192,7 @@ orchestrator/graphql/schemas/customer_description.py,sha256=fize71IMpkvk_rTzcqCY
|
|
|
185
192
|
orchestrator/graphql/schemas/errors.py,sha256=VRl-Zd1FHMnscyozhfxzqeEUZ0ERAWum_Y8YwjGxwmA,203
|
|
186
193
|
orchestrator/graphql/schemas/fixed_input.py,sha256=1yqYHADQRgHz8OIP7ObYsPFS-gmzfkCvEO0a-KKf7zI,513
|
|
187
194
|
orchestrator/graphql/schemas/helpers.py,sha256=Kpj4kIbmoKKN35bdgUSwQvGUIbeg7VJAVMEq65YS_ik,346
|
|
188
|
-
orchestrator/graphql/schemas/process.py,sha256=
|
|
195
|
+
orchestrator/graphql/schemas/process.py,sha256=wN4pKDuPbPHyyfGYaqFXMXxKTDm_zIwmyCOhSu5H1Iw,4978
|
|
189
196
|
orchestrator/graphql/schemas/product.py,sha256=vUCqcjrKBJj-VKSrMYPKzjmmxLMXL7alKTJ8UdUkhTg,4342
|
|
190
197
|
orchestrator/graphql/schemas/product_block.py,sha256=Qk9cbA6vm7ZPrhdgPHatKRuy6TytBmxSr97McEOxAu8,2860
|
|
191
198
|
orchestrator/graphql/schemas/resource_type.py,sha256=s5d_FwQXL2-Sc-IDUxTJun5qFQ4zOP4-XcHF9ql-t1g,898
|
|
@@ -194,7 +201,7 @@ orchestrator/graphql/schemas/settings.py,sha256=drhm5VcLmUbiYAk6WUSJcyJqjNM96E6G
|
|
|
194
201
|
orchestrator/graphql/schemas/strawberry_pydantic_patch.py,sha256=CjNUhTKdYmLiaem-WY_mzw4HASIeaZitxGF8pPocqVw,1602
|
|
195
202
|
orchestrator/graphql/schemas/subscription.py,sha256=hTA34C27kgLguH9V53173CxMKIWiQKh3vFzyJ2yBfE0,9918
|
|
196
203
|
orchestrator/graphql/schemas/version.py,sha256=HSzVg_y4Sjd5_H5rRUtu3FJKOG_8ifhvBNt_qjOtC-E,92
|
|
197
|
-
orchestrator/graphql/schemas/workflow.py,sha256=
|
|
204
|
+
orchestrator/graphql/schemas/workflow.py,sha256=ewE5mRuqMq7rnx8Au2eTUm3YTY1pivOWATNacZQ-trY,1773
|
|
198
205
|
orchestrator/graphql/utils/__init__.py,sha256=1JvenzEVW1CBa1sGVI9I8IWnnoXIkb1hneDqph9EEZY,524
|
|
199
206
|
orchestrator/graphql/utils/create_resolver_error_handler.py,sha256=XzCnL482M4wz3fg5fUdGUwCAuzSZQ9Ufu1mscLyeoWU,1227
|
|
200
207
|
orchestrator/graphql/utils/get_query_loaders.py,sha256=abS_HJ7K9een78gMiGq3IhwGwxQXHvZygExe0h_t9ns,815
|
|
@@ -247,9 +254,10 @@ orchestrator/migrations/versions/schema/2025-05-08_161918133bec_add_is_task_to_w
|
|
|
247
254
|
orchestrator/migrations/versions/schema/2025-07-01_93fc5834c7e5_changed_timestamping_fields_in_process_steps.py,sha256=Oezd8b2qaI1Kyq-sZFVFmdzd4d9NjXrf6HtJGk11fy0,1914
|
|
248
255
|
orchestrator/migrations/versions/schema/2025-07-04_4b58e336d1bf_deprecating_workflow_target_in_.py,sha256=xnD6w-97R4ClS7rbmXQEXc36K3fdcXKhCy7ZZNy_FX4,742
|
|
249
256
|
orchestrator/migrations/versions/schema/2025-07-28_850dccac3b02_update_description_of_resume_workflows_.py,sha256=R6Qoga83DJ1IL0WYPu0u5u2ZvAmqGlDmUMv_KtJyOhQ,812
|
|
257
|
+
orchestrator/migrations/versions/schema/2025-08-12_52b37b5b2714_search_index_model_for_llm_integration.py,sha256=6lRbUd1hJBjG8KM4Ow_J4pk2qwlRVhTKczS7XmoW-q4,3304
|
|
250
258
|
orchestrator/schedules/__init__.py,sha256=Zy0fTOBMGIRFoh5iVFDLF9_PRAFaONYDThGK9EsysWo,981
|
|
251
259
|
orchestrator/schedules/resume_workflows.py,sha256=jRnVRWDy687pQu-gtk80ecwiLSdrvtL15tG3U2zWA6I,891
|
|
252
|
-
orchestrator/schedules/scheduler.py,sha256=
|
|
260
|
+
orchestrator/schedules/scheduler.py,sha256=nnuehZnBbtC90MsFP_Q6kqcD1ihsq08vr1ALJ6jHF_s,5833
|
|
253
261
|
orchestrator/schedules/scheduling.py,sha256=_mbpHMhijey8Y56ebtJ4wVkrp_kPVRm8hoByzlQF4SE,2821
|
|
254
262
|
orchestrator/schedules/task_vacuum.py,sha256=mxb7fsy1GphRwvUWi_lvwNaj51YAXUdIDlkOJd90AFI,874
|
|
255
263
|
orchestrator/schedules/validate_products.py,sha256=zWFQeVn3F8LP3joExLiKdmHs008pZsO-RolcIXHjFyE,1322
|
|
@@ -263,9 +271,44 @@ 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=yOlkG61BxSTL5xvepxrG-Qz_NceSw5E0g-7GUkjaj9Q,2837
|
|
266
275
|
orchestrator/schemas/subscription.py,sha256=-jXyHZIed9Xlia18ksSDyenblNN6Q2yM2FlGELyJ458,3423
|
|
267
276
|
orchestrator/schemas/subscription_descriptions.py,sha256=Ft_jw1U0bf9Z0U8O4OWfLlcl0mXCVT_qYVagBP3GbIQ,1262
|
|
268
277
|
orchestrator/schemas/workflow.py,sha256=VqQ9XfV4fVd6MjY0LRRQzWBJHmlPsAamWfTwDx1cZkg,2102
|
|
278
|
+
orchestrator/search/__init__.py,sha256=2uhTQexKx-cdBP1retV3CYSNCs02s8WL3fhGvupRGZk,571
|
|
279
|
+
orchestrator/search/agent/__init__.py,sha256=ucZF-4ZsDc911Zyjmc1OK2ZcA6C64GFdMOVP26sWW7Q,166
|
|
280
|
+
orchestrator/search/agent/agent.py,sha256=6wgsoOkGay_Qnaz8GJNrhKkA50ijotKTnj9ivXvswZg,1740
|
|
281
|
+
orchestrator/search/agent/prompts.py,sha256=aTjjPAF6bXDGFMpghXAyDIMxpOfGtZuAflaUINvR1EI,2094
|
|
282
|
+
orchestrator/search/agent/state.py,sha256=DPCbvp6_WCxXwuJq1IU9glfKNZ1mRODoFcLjb9AOke0,203
|
|
283
|
+
orchestrator/search/agent/tools.py,sha256=KRmoy7FuAiPJZqwjrnt4zfS5689RAIjxsUBXQOMSbI0,4523
|
|
284
|
+
orchestrator/search/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
285
|
+
orchestrator/search/core/embedding.py,sha256=s7P_2hrofnRXnfUFKuDJcpYkm_KzFkmhFe5j2n8_W7U,2297
|
|
286
|
+
orchestrator/search/core/exceptions.py,sha256=uIlePbEyShcoM5uSCGcOlI-WEfEae3uBECGT4p40eaA,448
|
|
287
|
+
orchestrator/search/core/types.py,sha256=Zm3NgoKwmvu3wTRDUrQ8Wn5l05r2hOXh-OkB-uGzLNs,8228
|
|
288
|
+
orchestrator/search/core/validators.py,sha256=Ny80tH3SHuM64yZCi-9kfX-66NKGjsp_0oG7uJ21JVk,624
|
|
289
|
+
orchestrator/search/docs/index.md,sha256=zKzE2fbtHDfYTKaHg628wAsqCTOJ5yFUWV0ucFH3pAg,863
|
|
290
|
+
orchestrator/search/docs/running_local_text_embedding_inference.md,sha256=KlFxyAjHfLyCeV9fXAFVUqZOFWYwGPH-_oBjWx2Vgng,1255
|
|
291
|
+
orchestrator/search/filters/__init__.py,sha256=h9wjnKLcIfG1TwiuwtnlDvv9XMWLxkjCBD9D8qCOoQU,642
|
|
292
|
+
orchestrator/search/filters/base.py,sha256=3EAVTMbIFAGUTiswi2Pe_liphbGTksfhVyCFFtXstZc,10844
|
|
293
|
+
orchestrator/search/filters/date_filters.py,sha256=dDbTPI-badVnaKM404waQ3yzTOHJNn59kYoqHvW3XFE,2460
|
|
294
|
+
orchestrator/search/filters/definitions.py,sha256=oIwW8dWz7HuRkEvCbCfj2WOOdE_PKh0b5n8Re5x_lS0,3455
|
|
295
|
+
orchestrator/search/filters/ltree_filters.py,sha256=kyMmm1EYKYVUwPK5p9tyL-da0SrCe6LPmFW56_6y0uY,1696
|
|
296
|
+
orchestrator/search/filters/numeric_filter.py,sha256=GPBcZgrip2ruxsBx2AHZqxS16zkQG3C6zLJAGC2s2VU,2194
|
|
297
|
+
orchestrator/search/indexing/__init__.py,sha256=7IVylH0S5FPUh6jb9H9vNLb61gQQIk_sNrSHc8WoSD0,82
|
|
298
|
+
orchestrator/search/indexing/indexer.py,sha256=9l4bXwNAfsjMrrzit601solAl6W07Pyj9-SRldmZjGU,14391
|
|
299
|
+
orchestrator/search/indexing/registry.py,sha256=cSeZe6aq3XME-RRz4AMD8BHXzx7dvU6tBa05ecjTzfk,2468
|
|
300
|
+
orchestrator/search/indexing/tasks.py,sha256=k7GihQLov8FMhzYM_6f-IlWPMuP1w2QZpfOyloppKFM,1783
|
|
301
|
+
orchestrator/search/indexing/traverse.py,sha256=_lWbUHy1S5-oDyo-4dDeivb9KTn6VUq_T_KXxFm_A2Y,13775
|
|
302
|
+
orchestrator/search/retrieval/__init__.py,sha256=EixZVzUzP3FOC-hWwf3pqvz0XHZe1HyHBsmJlTEU0Cw,65
|
|
303
|
+
orchestrator/search/retrieval/builder.py,sha256=WZ8nSWvRn8bYms54Xg0i7x5Udf9aqjIbaeBlRKbiCpk,3886
|
|
304
|
+
orchestrator/search/retrieval/engine.py,sha256=yJn65Nv-HIRJ6yLGwgRxdNAdsXmWvoLUK2WB9PRF1fg,5554
|
|
305
|
+
orchestrator/search/retrieval/pagination.py,sha256=-j-vtdPsmUlKCuN7ffwMzEeWG7vLKlJ2NDmRGAGahxM,2773
|
|
306
|
+
orchestrator/search/retrieval/retriever.py,sha256=140SMmBnCGhckPC9nZbe0T-DFPpQBNd6w-_3mY0-_Vs,17465
|
|
307
|
+
orchestrator/search/retrieval/utils.py,sha256=BhrCqSO5fDlDEzqS81dR-Lpd52JgbnR3YS4h9TXx4Bs,3862
|
|
308
|
+
orchestrator/search/retrieval/validation.py,sha256=KvPjvnl67mq2iMbjBc3YLMZ_XMiK3AygRDxrWKAPP_Y,5829
|
|
309
|
+
orchestrator/search/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
310
|
+
orchestrator/search/schemas/parameters.py,sha256=X74WzGO6tmiQ9XAQ2GdgIpqt3KzzqvaByrfB_tdWEX4,4110
|
|
311
|
+
orchestrator/search/schemas/results.py,sha256=zRbl2AQ1CtINdcL77A6TdxmrurgFO1_ueosKOWkttv4,1385
|
|
269
312
|
orchestrator/services/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
|
|
270
313
|
orchestrator/services/fixed_inputs.py,sha256=kyz7s2HLzyDulvcq-ZqefTw1om86COvyvTjz0_5CmgI,876
|
|
271
314
|
orchestrator/services/input_state.py,sha256=6BZOpb3cHpO18K-XG-3QUIV9pIM25_ufdODrp5CmXG4,2390
|
|
@@ -274,7 +317,7 @@ orchestrator/services/processes.py,sha256=NfzdtH4eZK_wYuSmFtUX69qDvoeI8J7sJ2fFyY
|
|
|
274
317
|
orchestrator/services/products.py,sha256=BP4KyE8zO-8z7Trrs5T6zKBOw53S9BfBJnHWI3p6u5Y,1943
|
|
275
318
|
orchestrator/services/resource_types.py,sha256=_QBy_JOW_X3aSTqH0CuLrq4zBJL0p7Q-UDJUcuK2_qc,884
|
|
276
319
|
orchestrator/services/settings.py,sha256=HEWfFulgoEDwgfxGEO__QTr5fDiwNBEj1UhAeTAdbLQ,3159
|
|
277
|
-
orchestrator/services/settings_env_variables.py,sha256=
|
|
320
|
+
orchestrator/services/settings_env_variables.py,sha256=6im2hB69KGRaqA2eskJfjgTIgfY405sHpZTnX_QQVJ4,2216
|
|
278
321
|
orchestrator/services/subscription_relations.py,sha256=aIdyzwyyy58OFhwjRPCPgnQTUTmChu6SeSQRIleQoDE,13138
|
|
279
322
|
orchestrator/services/subscriptions.py,sha256=XhJ5ygAAyWUIZHULhKyi1uU5DwkKZhzdxxn9vdQZYiA,27281
|
|
280
323
|
orchestrator/services/tasks.py,sha256=mR3Fj1VsudltpanJKI2PvrxersyhVQ1skp8H7r3XnYI,5288
|
|
@@ -319,7 +362,7 @@ orchestrator/workflows/tasks/resume_workflows.py,sha256=T3iobSJjVgiupe0rClD34kUZ
|
|
|
319
362
|
orchestrator/workflows/tasks/validate_product_type.py,sha256=paG-NAY1bdde3Adt8zItkcBKf5Pxw6f5ngGW6an6dYU,3192
|
|
320
363
|
orchestrator/workflows/tasks/validate_products.py,sha256=GZJBoFF-WMphS7ghMs2-gqvV2iL1F0POhk0uSNt93n0,8510
|
|
321
364
|
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.
|
|
365
|
+
orchestrator_core-4.5.1a1.dist-info/licenses/LICENSE,sha256=b-aA5OZQuuBATmLKo_mln8CQrDPPhg3ghLzjPjLn4Tg,11409
|
|
366
|
+
orchestrator_core-4.5.1a1.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
|
|
367
|
+
orchestrator_core-4.5.1a1.dist-info/METADATA,sha256=rYbC3a3-J-ekBdQ-STdH3aQpqJZrBxtAbypghQyKnN0,6177
|
|
368
|
+
orchestrator_core-4.5.1a1.dist-info/RECORD,,
|
|
File without changes
|
{orchestrator_core-4.4.0rc3.dist-info → orchestrator_core-4.5.1a1.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|