unique_orchestrator 2026.30.0.dev8__tar.gz → 2026.30.0.dev10__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.30.0.dev8 → unique_orchestrator-2026.30.0.dev10}/PKG-INFO +4 -4
- {unique_orchestrator-2026.30.0.dev8 → unique_orchestrator-2026.30.0.dev10}/pyproject.toml +4 -4
- {unique_orchestrator-2026.30.0.dev8 → unique_orchestrator-2026.30.0.dev10}/unique_orchestrator/config.py +2 -2
- {unique_orchestrator-2026.30.0.dev8 → unique_orchestrator-2026.30.0.dev10}/unique_orchestrator/unique_ai.py +12 -0
- {unique_orchestrator-2026.30.0.dev8 → unique_orchestrator-2026.30.0.dev10}/unique_orchestrator/unique_ai_builder.py +1 -0
- {unique_orchestrator-2026.30.0.dev8 → unique_orchestrator-2026.30.0.dev10}/README.md +0 -0
- {unique_orchestrator-2026.30.0.dev8 → unique_orchestrator-2026.30.0.dev10}/unique_orchestrator/__init__.py +0 -0
- {unique_orchestrator-2026.30.0.dev8 → unique_orchestrator-2026.30.0.dev10}/unique_orchestrator/_builders/__init__.py +0 -0
- {unique_orchestrator-2026.30.0.dev8 → unique_orchestrator-2026.30.0.dev10}/unique_orchestrator/_builders/history_manager.py +0 -0
- {unique_orchestrator-2026.30.0.dev8 → unique_orchestrator-2026.30.0.dev10}/unique_orchestrator/_builders/inject_tool_reminders.py +0 -0
- {unique_orchestrator-2026.30.0.dev8 → unique_orchestrator-2026.30.0.dev10}/unique_orchestrator/_builders/loop_iteration_runner.py +0 -0
- {unique_orchestrator-2026.30.0.dev8 → unique_orchestrator-2026.30.0.dev10}/unique_orchestrator/_builders/open_file_setup.py +0 -0
- {unique_orchestrator-2026.30.0.dev8 → unique_orchestrator-2026.30.0.dev10}/unique_orchestrator/_builders/skill_setup.py +0 -0
- {unique_orchestrator-2026.30.0.dev8 → unique_orchestrator-2026.30.0.dev10}/unique_orchestrator/prompts/generic_reference_prompt.jinja2 +0 -0
- {unique_orchestrator-2026.30.0.dev8 → unique_orchestrator-2026.30.0.dev10}/unique_orchestrator/prompts/system_prompt.jinja2 +0 -0
- {unique_orchestrator-2026.30.0.dev8 → unique_orchestrator-2026.30.0.dev10}/unique_orchestrator/prompts/user_message_prompt.jinja2 +0 -0
- {unique_orchestrator-2026.30.0.dev8 → unique_orchestrator-2026.30.0.dev10}/unique_orchestrator/settings.py +0 -0
- {unique_orchestrator-2026.30.0.dev8 → unique_orchestrator-2026.30.0.dev10}/unique_orchestrator/tests/test_agent_config_rjsf_ui_schema.py +0 -0
- {unique_orchestrator-2026.30.0.dev8 → unique_orchestrator-2026.30.0.dev10}/unique_orchestrator/tests/test_build_loop_iteration_runner.py +0 -0
- {unique_orchestrator-2026.30.0.dev8 → unique_orchestrator-2026.30.0.dev10}/unique_orchestrator/tests/test_config_services_validators.py +0 -0
- {unique_orchestrator-2026.30.0.dev8 → unique_orchestrator-2026.30.0.dev10}/unique_orchestrator/tests/test_qwen_max_loop_iterations.py +0 -0
- {unique_orchestrator-2026.30.0.dev8 → unique_orchestrator-2026.30.0.dev10}/unique_orchestrator/tests/test_register_code_interpreter_postprocessors.py +0 -0
- {unique_orchestrator-2026.30.0.dev8 → unique_orchestrator-2026.30.0.dev10}/unique_orchestrator/tests/test_unique_ai_async_modify.py +0 -0
- {unique_orchestrator-2026.30.0.dev8 → unique_orchestrator-2026.30.0.dev10}/unique_orchestrator/tests/test_unique_ai_execution_timing.py +0 -0
- {unique_orchestrator-2026.30.0.dev8 → unique_orchestrator-2026.30.0.dev10}/unique_orchestrator/tests/test_unique_ai_get_filtered_user_metadata.py +0 -0
- {unique_orchestrator-2026.30.0.dev8 → unique_orchestrator-2026.30.0.dev10}/unique_orchestrator/tests/test_unique_ai_log_tool_calls.py +0 -0
- {unique_orchestrator-2026.30.0.dev8 → unique_orchestrator-2026.30.0.dev10}/unique_orchestrator/tests/test_unique_ai_loop_debug_params.py +0 -0
- {unique_orchestrator-2026.30.0.dev8 → unique_orchestrator-2026.30.0.dev10}/unique_orchestrator/tests/test_unique_ai_persist_tool_calls.py +0 -0
- {unique_orchestrator-2026.30.0.dev8 → unique_orchestrator-2026.30.0.dev10}/unique_orchestrator/tests/test_unique_ai_plan_or_execute_include.py +0 -0
- {unique_orchestrator-2026.30.0.dev8 → unique_orchestrator-2026.30.0.dev10}/unique_orchestrator/tests/test_unique_ai_reference_order.py +0 -0
- {unique_orchestrator-2026.30.0.dev8 → unique_orchestrator-2026.30.0.dev10}/unique_orchestrator/tests/test_unique_ai_render_system_prompt_user_instructions.py +0 -0
- {unique_orchestrator-2026.30.0.dev8 → unique_orchestrator-2026.30.0.dev10}/unique_orchestrator/tests/test_unique_ai_token_usage.py +0 -0
- {unique_orchestrator-2026.30.0.dev8 → unique_orchestrator-2026.30.0.dev10}/unique_orchestrator/tests/test_utils_resolve_other_options.py +0 -0
- {unique_orchestrator-2026.30.0.dev8 → unique_orchestrator-2026.30.0.dev10}/unique_orchestrator/utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: unique-orchestrator
|
|
3
|
-
Version: 2026.30.0.
|
|
3
|
+
Version: 2026.30.0.dev10
|
|
4
4
|
Summary:
|
|
5
5
|
Author: Andreas Hauri
|
|
6
6
|
Author-email: Andreas Hauri <andreas.hauri@unique.ai>
|
|
@@ -9,15 +9,15 @@ 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.30.0.
|
|
12
|
+
Requires-Dist: unique-toolkit>=2026.30.0.dev22,<2026.30.0rc0
|
|
13
13
|
Requires-Dist: unique-stock-ticker>=2026.30.0.dev0,<2026.30.0rc0
|
|
14
14
|
Requires-Dist: unique-follow-up-questions>=2026.30.0.dev1,<2026.30.0rc0
|
|
15
15
|
Requires-Dist: unique-internal-search>=2026.30.0.dev0,<2026.30.0rc0
|
|
16
16
|
Requires-Dist: unique-deep-research>=2026.30.0.dev0,<2026.30.0rc0
|
|
17
|
-
Requires-Dist: unique-web-search>=2026.30.0.
|
|
17
|
+
Requires-Dist: unique-web-search>=2026.30.0.dev4,<2026.30.0rc0
|
|
18
18
|
Requires-Dist: unique-swot>=2026.30.0.dev0,<2026.30.0rc0
|
|
19
19
|
Requires-Dist: unique-skill-tool>=2026.30.0.dev0,<2026.30.0rc0
|
|
20
|
-
Requires-Dist: unique-user-memory>=2026.30.0.
|
|
20
|
+
Requires-Dist: unique-user-memory>=2026.30.0.dev2,<2026.30.0rc0
|
|
21
21
|
Requires-Dist: openai>=1.109.1,<3
|
|
22
22
|
Requires-Python: >=3.12, <4
|
|
23
23
|
Description-Content-Type: text/markdown
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "unique_orchestrator"
|
|
3
|
-
version = "2026.30.0.
|
|
3
|
+
version = "2026.30.0.dev10"
|
|
4
4
|
description = ""
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = { text = "Proprietary" }
|
|
@@ -13,15 +13,15 @@ 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.30.0.
|
|
16
|
+
"unique-toolkit>=2026.30.0.dev22,<2026.30.0rc0",
|
|
17
17
|
"unique-stock-ticker>=2026.30.0.dev0,<2026.30.0rc0",
|
|
18
18
|
"unique-follow-up-questions>=2026.30.0.dev1,<2026.30.0rc0",
|
|
19
19
|
"unique-internal-search>=2026.30.0.dev0,<2026.30.0rc0",
|
|
20
20
|
"unique-deep-research>=2026.30.0.dev0,<2026.30.0rc0",
|
|
21
|
-
"unique-web-search>=2026.30.0.
|
|
21
|
+
"unique-web-search>=2026.30.0.dev4,<2026.30.0rc0",
|
|
22
22
|
"unique-swot>=2026.30.0.dev0,<2026.30.0rc0",
|
|
23
23
|
"unique-skill-tool>=2026.30.0.dev0,<2026.30.0rc0",
|
|
24
|
-
"unique-user-memory>=2026.30.0.
|
|
24
|
+
"unique-user-memory>=2026.30.0.dev2,<2026.30.0rc0",
|
|
25
25
|
"openai>=1.109.1,<3",
|
|
26
26
|
]
|
|
27
27
|
|
|
@@ -301,8 +301,8 @@ class UniqueAIServices(BaseToolConfig):
|
|
|
301
301
|
)
|
|
302
302
|
|
|
303
303
|
user_memory_config: UserMemoryConfig = Field(
|
|
304
|
-
title="
|
|
305
|
-
description="Configuration for persistent
|
|
304
|
+
title="Context Memory",
|
|
305
|
+
description="Configuration for persistent context memory.",
|
|
306
306
|
default_factory=UserMemoryConfig,
|
|
307
307
|
)
|
|
308
308
|
|
|
@@ -62,6 +62,7 @@ from unique_toolkit.protocols.support import (
|
|
|
62
62
|
ResponsesSupportCompleteWithReferences,
|
|
63
63
|
SupportCompleteWithReferences,
|
|
64
64
|
)
|
|
65
|
+
from unique_user_memory.user_memory_postprocessor import UserMemoryPostprocessor
|
|
65
66
|
|
|
66
67
|
from unique_orchestrator._builders.inject_tool_reminders import (
|
|
67
68
|
inject_tool_reminders_into_user_message,
|
|
@@ -208,6 +209,9 @@ class UniqueAI:
|
|
|
208
209
|
self._current_loop_timing: dict[str, Any] = {}
|
|
209
210
|
self._loop_debug_params: list[dict[str, Any]] = []
|
|
210
211
|
self._generated_files_info: ArtifactsDebugInfo | None = None
|
|
212
|
+
# None when the user-memory postprocessor is not activated for this turn;
|
|
213
|
+
# True/False when it ran and did/didn't update the stored memory profile.
|
|
214
|
+
self._context_memory_updated: bool | None = None
|
|
211
215
|
self._invocation_stats: list[LanguageModelInvocationStats] = []
|
|
212
216
|
|
|
213
217
|
async def _on_cancellation(self, _event: CancellationEvent) -> None:
|
|
@@ -238,6 +242,7 @@ class UniqueAI:
|
|
|
238
242
|
# reaching _handle_no_tool_calls (tool takes control / empty response /
|
|
239
243
|
# cancellation) must not report the previous run's artifacts.
|
|
240
244
|
self._generated_files_info = None
|
|
245
|
+
self._context_memory_updated = None
|
|
241
246
|
self._invocation_stats = []
|
|
242
247
|
run_start = time.perf_counter()
|
|
243
248
|
|
|
@@ -409,6 +414,7 @@ class UniqueAI:
|
|
|
409
414
|
loop_iteration_count=len(self._execution_times),
|
|
410
415
|
total_time_to_answer_ms=total_time_to_answer_ms,
|
|
411
416
|
artifacts=self._generated_files_info,
|
|
417
|
+
context_memory_updated=self._context_memory_updated,
|
|
412
418
|
)
|
|
413
419
|
|
|
414
420
|
# Get current debug info from chat service and add debug info from run. Do not update if DeepResearch is in the tool names.
|
|
@@ -755,6 +761,12 @@ class UniqueAI:
|
|
|
755
761
|
DisplayCodeInterpreterFilesPostProcessor.__name__
|
|
756
762
|
),
|
|
757
763
|
)
|
|
764
|
+
# Absent key => postprocessor not activated this turn (stays None);
|
|
765
|
+
# present => bool telling whether the memory profile was updated.
|
|
766
|
+
self._context_memory_updated = cast(
|
|
767
|
+
"bool | None",
|
|
768
|
+
postprocessor_outputs.get(UserMemoryPostprocessor.__name__),
|
|
769
|
+
)
|
|
758
770
|
self._current_loop_timing["post_processing"].update(
|
|
759
771
|
self._postprocessor_manager.get_execution_times()
|
|
760
772
|
)
|
|
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
|
|
File without changes
|