unique_orchestrator 2026.24.0.dev1__tar.gz → 2026.24.0.dev2__tar.gz
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.
- {unique_orchestrator-2026.24.0.dev1 → unique_orchestrator-2026.24.0.dev2}/PKG-INFO +5 -5
- {unique_orchestrator-2026.24.0.dev1 → unique_orchestrator-2026.24.0.dev2}/pyproject.toml +5 -5
- {unique_orchestrator-2026.24.0.dev1 → unique_orchestrator-2026.24.0.dev2}/unique_orchestrator/config.py +9 -2
- unique_orchestrator-2026.24.0.dev2/unique_orchestrator/tests/test_agent_config_rjsf_ui_schema.py +53 -0
- {unique_orchestrator-2026.24.0.dev1 → unique_orchestrator-2026.24.0.dev2}/README.md +0 -0
- {unique_orchestrator-2026.24.0.dev1 → unique_orchestrator-2026.24.0.dev2}/unique_orchestrator/__init__.py +0 -0
- {unique_orchestrator-2026.24.0.dev1 → unique_orchestrator-2026.24.0.dev2}/unique_orchestrator/_builders/__init__.py +0 -0
- {unique_orchestrator-2026.24.0.dev1 → unique_orchestrator-2026.24.0.dev2}/unique_orchestrator/_builders/inject_tool_reminders.py +0 -0
- {unique_orchestrator-2026.24.0.dev1 → unique_orchestrator-2026.24.0.dev2}/unique_orchestrator/_builders/loop_iteration_runner.py +0 -0
- {unique_orchestrator-2026.24.0.dev1 → unique_orchestrator-2026.24.0.dev2}/unique_orchestrator/_builders/open_file_setup.py +0 -0
- {unique_orchestrator-2026.24.0.dev1 → unique_orchestrator-2026.24.0.dev2}/unique_orchestrator/_builders/skill_setup.py +0 -0
- {unique_orchestrator-2026.24.0.dev1 → unique_orchestrator-2026.24.0.dev2}/unique_orchestrator/prompts/generic_reference_prompt.jinja2 +0 -0
- {unique_orchestrator-2026.24.0.dev1 → unique_orchestrator-2026.24.0.dev2}/unique_orchestrator/prompts/system_prompt.jinja2 +0 -0
- {unique_orchestrator-2026.24.0.dev1 → unique_orchestrator-2026.24.0.dev2}/unique_orchestrator/prompts/user_message_prompt.jinja2 +0 -0
- {unique_orchestrator-2026.24.0.dev1 → unique_orchestrator-2026.24.0.dev2}/unique_orchestrator/settings.py +0 -0
- {unique_orchestrator-2026.24.0.dev1 → unique_orchestrator-2026.24.0.dev2}/unique_orchestrator/tests/test_build_loop_iteration_runner.py +0 -0
- {unique_orchestrator-2026.24.0.dev1 → unique_orchestrator-2026.24.0.dev2}/unique_orchestrator/tests/test_config_services_validators.py +0 -0
- {unique_orchestrator-2026.24.0.dev1 → unique_orchestrator-2026.24.0.dev2}/unique_orchestrator/tests/test_qwen_max_loop_iterations.py +0 -0
- {unique_orchestrator-2026.24.0.dev1 → unique_orchestrator-2026.24.0.dev2}/unique_orchestrator/tests/test_register_code_interpreter_postprocessors.py +0 -0
- {unique_orchestrator-2026.24.0.dev1 → unique_orchestrator-2026.24.0.dev2}/unique_orchestrator/tests/test_unique_ai_async_modify.py +0 -0
- {unique_orchestrator-2026.24.0.dev1 → unique_orchestrator-2026.24.0.dev2}/unique_orchestrator/tests/test_unique_ai_execution_timing.py +0 -0
- {unique_orchestrator-2026.24.0.dev1 → unique_orchestrator-2026.24.0.dev2}/unique_orchestrator/tests/test_unique_ai_get_filtered_user_metadata.py +0 -0
- {unique_orchestrator-2026.24.0.dev1 → unique_orchestrator-2026.24.0.dev2}/unique_orchestrator/tests/test_unique_ai_log_tool_calls.py +0 -0
- {unique_orchestrator-2026.24.0.dev1 → unique_orchestrator-2026.24.0.dev2}/unique_orchestrator/tests/test_unique_ai_loop_debug_params.py +0 -0
- {unique_orchestrator-2026.24.0.dev1 → unique_orchestrator-2026.24.0.dev2}/unique_orchestrator/tests/test_unique_ai_persist_tool_calls.py +0 -0
- {unique_orchestrator-2026.24.0.dev1 → unique_orchestrator-2026.24.0.dev2}/unique_orchestrator/tests/test_unique_ai_plan_or_execute_include.py +0 -0
- {unique_orchestrator-2026.24.0.dev1 → unique_orchestrator-2026.24.0.dev2}/unique_orchestrator/tests/test_unique_ai_reference_order.py +0 -0
- {unique_orchestrator-2026.24.0.dev1 → unique_orchestrator-2026.24.0.dev2}/unique_orchestrator/tests/test_unique_ai_render_system_prompt_user_instructions.py +0 -0
- {unique_orchestrator-2026.24.0.dev1 → unique_orchestrator-2026.24.0.dev2}/unique_orchestrator/tests/test_utils_resolve_other_options.py +0 -0
- {unique_orchestrator-2026.24.0.dev1 → unique_orchestrator-2026.24.0.dev2}/unique_orchestrator/unique_ai.py +0 -0
- {unique_orchestrator-2026.24.0.dev1 → unique_orchestrator-2026.24.0.dev2}/unique_orchestrator/unique_ai_builder.py +0 -0
- {unique_orchestrator-2026.24.0.dev1 → unique_orchestrator-2026.24.0.dev2}/unique_orchestrator/utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: unique-orchestrator
|
|
3
|
-
Version: 2026.24.0.
|
|
3
|
+
Version: 2026.24.0.dev2
|
|
4
4
|
Summary:
|
|
5
5
|
Author: Andreas Hauri
|
|
6
6
|
Author-email: Andreas Hauri <andreas.hauri@unique.ai>
|
|
@@ -9,13 +9,13 @@ Requires-Dist: pydantic>=2.8.2,<3
|
|
|
9
9
|
Requires-Dist: pydantic-settings>=2.10.1,<3
|
|
10
10
|
Requires-Dist: typing-extensions>=4.9.0,<5
|
|
11
11
|
Requires-Dist: jinja2>=3.1.0,<4
|
|
12
|
-
Requires-Dist: unique-toolkit>=2026.24.0.
|
|
12
|
+
Requires-Dist: unique-toolkit>=2026.24.0.dev11,<2026.24.0rc0
|
|
13
13
|
Requires-Dist: unique-stock-ticker>=2026.24.0.dev1,<2026.24.0rc0
|
|
14
|
-
Requires-Dist: unique-follow-up-questions>=2026.24.0.
|
|
14
|
+
Requires-Dist: unique-follow-up-questions>=2026.24.0.dev2,<2026.24.0rc0
|
|
15
15
|
Requires-Dist: unique-internal-search>=2026.24.0.dev1,<2026.24.0rc0
|
|
16
16
|
Requires-Dist: unique-deep-research>=2026.24.0.dev0,<2026.24.0rc0
|
|
17
|
-
Requires-Dist: unique-web-search>=2026.24.0.
|
|
18
|
-
Requires-Dist: unique-swot>=2026.24.0.
|
|
17
|
+
Requires-Dist: unique-web-search>=2026.24.0.dev3,<2026.24.0rc0
|
|
18
|
+
Requires-Dist: unique-swot>=2026.24.0.dev2,<2026.24.0rc0
|
|
19
19
|
Requires-Dist: unique-skill-tool>=2026.24.0.dev0,<2026.24.0rc0
|
|
20
20
|
Requires-Dist: openai>=1.109.1,<3
|
|
21
21
|
Requires-Python: >=3.12, <4
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "unique_orchestrator"
|
|
3
|
-
version = "2026.24.0.
|
|
3
|
+
version = "2026.24.0.dev2"
|
|
4
4
|
description = ""
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = { text = "Proprietary" }
|
|
@@ -13,13 +13,13 @@ dependencies = [
|
|
|
13
13
|
"pydantic-settings>=2.10.1,<3",
|
|
14
14
|
"typing-extensions>=4.9.0,<5",
|
|
15
15
|
"jinja2>=3.1.0,<4",
|
|
16
|
-
"unique-toolkit>=2026.24.0.
|
|
16
|
+
"unique-toolkit>=2026.24.0.dev11,<2026.24.0rc0",
|
|
17
17
|
"unique-stock-ticker>=2026.24.0.dev1,<2026.24.0rc0",
|
|
18
|
-
"unique-follow-up-questions>=2026.24.0.
|
|
18
|
+
"unique-follow-up-questions>=2026.24.0.dev2,<2026.24.0rc0",
|
|
19
19
|
"unique-internal-search>=2026.24.0.dev1,<2026.24.0rc0",
|
|
20
20
|
"unique-deep-research>=2026.24.0.dev0,<2026.24.0rc0",
|
|
21
|
-
"unique-web-search>=2026.24.0.
|
|
22
|
-
"unique-swot>=2026.24.0.
|
|
21
|
+
"unique-web-search>=2026.24.0.dev3,<2026.24.0rc0",
|
|
22
|
+
"unique-swot>=2026.24.0.dev2,<2026.24.0rc0",
|
|
23
23
|
"unique-skill-tool>=2026.24.0.dev0,<2026.24.0rc0",
|
|
24
24
|
"openai>=1.109.1,<3",
|
|
25
25
|
]
|
|
@@ -14,6 +14,7 @@ from unique_internal_search.uploaded_search.config import (
|
|
|
14
14
|
)
|
|
15
15
|
from unique_stock_ticker.config import StockTickerConfig
|
|
16
16
|
from unique_swot import SwotAnalysisTool, SwotAnalysisToolConfig
|
|
17
|
+
from unique_toolkit._common.pydantic.rjsf_tags import RJSFMetaTag
|
|
17
18
|
from unique_toolkit._common.validators import (
|
|
18
19
|
LMI,
|
|
19
20
|
ClipInt,
|
|
@@ -236,14 +237,20 @@ class EvaluationConfig(BaseToolConfig):
|
|
|
236
237
|
|
|
237
238
|
|
|
238
239
|
class UniqueAIPromptConfig(BaseToolConfig):
|
|
239
|
-
system_prompt_template:
|
|
240
|
+
system_prompt_template: Annotated[
|
|
241
|
+
str,
|
|
242
|
+
RJSFMetaTag.StringWidget.textarea(rows=25),
|
|
243
|
+
] = Field(
|
|
240
244
|
default_factory=lambda: (
|
|
241
245
|
Path(__file__).parent / "prompts" / "system_prompt.jinja2"
|
|
242
246
|
).read_text(),
|
|
243
247
|
description="The system prompt template as a Jinja2 template string.",
|
|
244
248
|
)
|
|
245
249
|
|
|
246
|
-
user_message_prompt_template:
|
|
250
|
+
user_message_prompt_template: Annotated[
|
|
251
|
+
str,
|
|
252
|
+
RJSFMetaTag.StringWidget.textarea(rows=4),
|
|
253
|
+
] = Field(
|
|
247
254
|
default_factory=lambda: (
|
|
248
255
|
Path(__file__).parent / "prompts" / "user_message_prompt.jinja2"
|
|
249
256
|
).read_text(),
|
unique_orchestrator-2026.24.0.dev2/unique_orchestrator/tests/test_agent_config_rjsf_ui_schema.py
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
from humps import camelize
|
|
2
|
+
from unique_toolkit._common.pydantic.rjsf_tags import ui_schema_for_model
|
|
3
|
+
|
|
4
|
+
from unique_orchestrator.config import UniqueAIAgentConfig
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def _nested_get(data: dict, path: str) -> object:
|
|
8
|
+
current: object = data
|
|
9
|
+
for part in path.split("."):
|
|
10
|
+
assert isinstance(current, dict)
|
|
11
|
+
current = current[part]
|
|
12
|
+
return current
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def test_unique_ai_agent_config__prompt_fields__textarea_widgets() -> None:
|
|
16
|
+
ui_schema = ui_schema_for_model(UniqueAIAgentConfig, key_transform=camelize)
|
|
17
|
+
assert _nested_get(ui_schema, "promptConfig.systemPromptTemplate") == {
|
|
18
|
+
"ui:widget": "textarea",
|
|
19
|
+
"ui:disabled": False,
|
|
20
|
+
"ui:readonly": False,
|
|
21
|
+
"ui:options": {"rows": 25},
|
|
22
|
+
"ui:emptyValue": "",
|
|
23
|
+
}
|
|
24
|
+
assert _nested_get(ui_schema, "promptConfig.userMessagePromptTemplate") == {
|
|
25
|
+
"ui:widget": "textarea",
|
|
26
|
+
"ui:disabled": False,
|
|
27
|
+
"ui:readonly": False,
|
|
28
|
+
"ui:options": {"rows": 4},
|
|
29
|
+
"ui:emptyValue": "",
|
|
30
|
+
}
|
|
31
|
+
assert _nested_get(ui_schema, "services.followUpQuestionsConfig.userPrompt") == {
|
|
32
|
+
"ui:widget": "textarea",
|
|
33
|
+
"ui:disabled": False,
|
|
34
|
+
"ui:readonly": False,
|
|
35
|
+
"ui:options": {"rows": 10},
|
|
36
|
+
"ui:emptyValue": "",
|
|
37
|
+
}
|
|
38
|
+
assert _nested_get(ui_schema, "services.followUpQuestionsConfig.systemPrompt") == {
|
|
39
|
+
"ui:widget": "textarea",
|
|
40
|
+
"ui:disabled": False,
|
|
41
|
+
"ui:readonly": False,
|
|
42
|
+
"ui:options": {"rows": 15},
|
|
43
|
+
"ui:emptyValue": "",
|
|
44
|
+
}
|
|
45
|
+
assert _nested_get(
|
|
46
|
+
ui_schema, "services.followUpQuestionsConfig.suggestionsFormat"
|
|
47
|
+
) == {
|
|
48
|
+
"ui:widget": "textarea",
|
|
49
|
+
"ui:disabled": False,
|
|
50
|
+
"ui:readonly": False,
|
|
51
|
+
"ui:options": {"rows": 8},
|
|
52
|
+
"ui:emptyValue": "",
|
|
53
|
+
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|