unique_orchestrator 2026.28.0.dev6__tar.gz → 2026.28.0.dev8__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.28.0.dev6 → unique_orchestrator-2026.28.0.dev8}/PKG-INFO +3 -3
- {unique_orchestrator-2026.28.0.dev6 → unique_orchestrator-2026.28.0.dev8}/pyproject.toml +3 -3
- {unique_orchestrator-2026.28.0.dev6 → unique_orchestrator-2026.28.0.dev8}/unique_orchestrator/config.py +2 -0
- {unique_orchestrator-2026.28.0.dev6 → unique_orchestrator-2026.28.0.dev8}/unique_orchestrator/prompts/system_prompt.jinja2 +1 -1
- {unique_orchestrator-2026.28.0.dev6 → unique_orchestrator-2026.28.0.dev8}/unique_orchestrator/unique_ai_builder.py +14 -2
- {unique_orchestrator-2026.28.0.dev6 → unique_orchestrator-2026.28.0.dev8}/README.md +0 -0
- {unique_orchestrator-2026.28.0.dev6 → unique_orchestrator-2026.28.0.dev8}/unique_orchestrator/__init__.py +0 -0
- {unique_orchestrator-2026.28.0.dev6 → unique_orchestrator-2026.28.0.dev8}/unique_orchestrator/_builders/__init__.py +0 -0
- {unique_orchestrator-2026.28.0.dev6 → unique_orchestrator-2026.28.0.dev8}/unique_orchestrator/_builders/inject_tool_reminders.py +0 -0
- {unique_orchestrator-2026.28.0.dev6 → unique_orchestrator-2026.28.0.dev8}/unique_orchestrator/_builders/loop_iteration_runner.py +0 -0
- {unique_orchestrator-2026.28.0.dev6 → unique_orchestrator-2026.28.0.dev8}/unique_orchestrator/_builders/open_file_setup.py +0 -0
- {unique_orchestrator-2026.28.0.dev6 → unique_orchestrator-2026.28.0.dev8}/unique_orchestrator/_builders/skill_setup.py +0 -0
- {unique_orchestrator-2026.28.0.dev6 → unique_orchestrator-2026.28.0.dev8}/unique_orchestrator/prompts/generic_reference_prompt.jinja2 +0 -0
- {unique_orchestrator-2026.28.0.dev6 → unique_orchestrator-2026.28.0.dev8}/unique_orchestrator/prompts/user_message_prompt.jinja2 +0 -0
- {unique_orchestrator-2026.28.0.dev6 → unique_orchestrator-2026.28.0.dev8}/unique_orchestrator/settings.py +0 -0
- {unique_orchestrator-2026.28.0.dev6 → unique_orchestrator-2026.28.0.dev8}/unique_orchestrator/tests/test_agent_config_rjsf_ui_schema.py +0 -0
- {unique_orchestrator-2026.28.0.dev6 → unique_orchestrator-2026.28.0.dev8}/unique_orchestrator/tests/test_build_loop_iteration_runner.py +0 -0
- {unique_orchestrator-2026.28.0.dev6 → unique_orchestrator-2026.28.0.dev8}/unique_orchestrator/tests/test_config_services_validators.py +0 -0
- {unique_orchestrator-2026.28.0.dev6 → unique_orchestrator-2026.28.0.dev8}/unique_orchestrator/tests/test_qwen_max_loop_iterations.py +0 -0
- {unique_orchestrator-2026.28.0.dev6 → unique_orchestrator-2026.28.0.dev8}/unique_orchestrator/tests/test_register_code_interpreter_postprocessors.py +0 -0
- {unique_orchestrator-2026.28.0.dev6 → unique_orchestrator-2026.28.0.dev8}/unique_orchestrator/tests/test_unique_ai_async_modify.py +0 -0
- {unique_orchestrator-2026.28.0.dev6 → unique_orchestrator-2026.28.0.dev8}/unique_orchestrator/tests/test_unique_ai_execution_timing.py +0 -0
- {unique_orchestrator-2026.28.0.dev6 → unique_orchestrator-2026.28.0.dev8}/unique_orchestrator/tests/test_unique_ai_get_filtered_user_metadata.py +0 -0
- {unique_orchestrator-2026.28.0.dev6 → unique_orchestrator-2026.28.0.dev8}/unique_orchestrator/tests/test_unique_ai_log_tool_calls.py +0 -0
- {unique_orchestrator-2026.28.0.dev6 → unique_orchestrator-2026.28.0.dev8}/unique_orchestrator/tests/test_unique_ai_loop_debug_params.py +0 -0
- {unique_orchestrator-2026.28.0.dev6 → unique_orchestrator-2026.28.0.dev8}/unique_orchestrator/tests/test_unique_ai_persist_tool_calls.py +0 -0
- {unique_orchestrator-2026.28.0.dev6 → unique_orchestrator-2026.28.0.dev8}/unique_orchestrator/tests/test_unique_ai_plan_or_execute_include.py +0 -0
- {unique_orchestrator-2026.28.0.dev6 → unique_orchestrator-2026.28.0.dev8}/unique_orchestrator/tests/test_unique_ai_reference_order.py +0 -0
- {unique_orchestrator-2026.28.0.dev6 → unique_orchestrator-2026.28.0.dev8}/unique_orchestrator/tests/test_unique_ai_render_system_prompt_user_instructions.py +0 -0
- {unique_orchestrator-2026.28.0.dev6 → unique_orchestrator-2026.28.0.dev8}/unique_orchestrator/tests/test_utils_resolve_other_options.py +0 -0
- {unique_orchestrator-2026.28.0.dev6 → unique_orchestrator-2026.28.0.dev8}/unique_orchestrator/unique_ai.py +0 -0
- {unique_orchestrator-2026.28.0.dev6 → unique_orchestrator-2026.28.0.dev8}/unique_orchestrator/utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: unique-orchestrator
|
|
3
|
-
Version: 2026.28.0.
|
|
3
|
+
Version: 2026.28.0.dev8
|
|
4
4
|
Summary:
|
|
5
5
|
Author: Andreas Hauri
|
|
6
6
|
Author-email: Andreas Hauri <andreas.hauri@unique.ai>
|
|
@@ -9,7 +9,7 @@ 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.28.0.
|
|
12
|
+
Requires-Dist: unique-toolkit>=2026.28.0.dev14,<2026.28.0rc0
|
|
13
13
|
Requires-Dist: unique-stock-ticker>=2026.28.0.dev3,<2026.28.0rc0
|
|
14
14
|
Requires-Dist: unique-follow-up-questions>=2026.28.0.dev3,<2026.28.0rc0
|
|
15
15
|
Requires-Dist: unique-internal-search>=2026.28.0.dev4,<2026.28.0rc0
|
|
@@ -17,7 +17,7 @@ Requires-Dist: unique-deep-research>=2026.28.0.dev4,<2026.28.0rc0
|
|
|
17
17
|
Requires-Dist: unique-web-search>=2026.28.0.dev5,<2026.28.0rc0
|
|
18
18
|
Requires-Dist: unique-swot>=2026.28.0.dev3,<2026.28.0rc0
|
|
19
19
|
Requires-Dist: unique-skill-tool>=2026.28.0.dev4,<2026.28.0rc0
|
|
20
|
-
Requires-Dist: unique-user-memory>=2026.28.0.
|
|
20
|
+
Requires-Dist: unique-user-memory>=2026.28.0.dev6,<2026.28.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.28.0.
|
|
3
|
+
version = "2026.28.0.dev8"
|
|
4
4
|
description = ""
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = { text = "Proprietary" }
|
|
@@ -13,7 +13,7 @@ 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.28.0.
|
|
16
|
+
"unique-toolkit>=2026.28.0.dev14,<2026.28.0rc0",
|
|
17
17
|
"unique-stock-ticker>=2026.28.0.dev3,<2026.28.0rc0",
|
|
18
18
|
"unique-follow-up-questions>=2026.28.0.dev3,<2026.28.0rc0",
|
|
19
19
|
"unique-internal-search>=2026.28.0.dev4,<2026.28.0rc0",
|
|
@@ -21,7 +21,7 @@ dependencies = [
|
|
|
21
21
|
"unique-web-search>=2026.28.0.dev5,<2026.28.0rc0",
|
|
22
22
|
"unique-swot>=2026.28.0.dev3,<2026.28.0rc0",
|
|
23
23
|
"unique-skill-tool>=2026.28.0.dev4,<2026.28.0rc0",
|
|
24
|
-
"unique-user-memory>=2026.28.0.
|
|
24
|
+
"unique-user-memory>=2026.28.0.dev6,<2026.28.0rc0",
|
|
25
25
|
"openai>=1.109.1,<3",
|
|
26
26
|
]
|
|
27
27
|
|
|
@@ -166,6 +166,8 @@ class SpaceConfigBase(BaseToolConfig, Generic[T]):
|
|
|
166
166
|
cls, tools: list[ToolBuildConfig], info: ValidationInfo
|
|
167
167
|
) -> list[ToolBuildConfig]:
|
|
168
168
|
for tool in tools:
|
|
169
|
+
if not tool.is_enabled:
|
|
170
|
+
continue
|
|
169
171
|
if tool.name in (
|
|
170
172
|
InternalSearchTool.name,
|
|
171
173
|
WebSearchTool.name,
|
|
@@ -28,7 +28,7 @@ Here is some metadata about the user, which may help you write better queries, a
|
|
|
28
28
|
{#- User Memory Section #}
|
|
29
29
|
{% if user_memory and user_memory|length > 0 %}
|
|
30
30
|
# What I know about you
|
|
31
|
-
The following profile was distilled from past conversations with this user. Treat it as durable user context: adapt your tone, examples, and depth to it
|
|
31
|
+
The following profile was distilled from past conversations with this user. Treat it as durable user context: adapt your tone, examples, and depth to it. If the user asks what you know or remember about them, you may share this memory back to them, including verbatim if they request it. Do not treat it as authoritative for facts about the world.
|
|
32
32
|
|
|
33
33
|
You can read this memory while answering. Memory updates happen only in a postprocessing step after your final answer, so do not claim that you can directly edit the memory during the main response.
|
|
34
34
|
|
|
@@ -361,16 +361,28 @@ async def _build_common(
|
|
|
361
361
|
|
|
362
362
|
user_memory_text = ""
|
|
363
363
|
if config.space.allow_user_memory:
|
|
364
|
+
user_memory_config = config.agent.services.user_memory_config
|
|
365
|
+
# The postprocessor consolidates memory with the orchestrator model or the
|
|
366
|
+
# configured one depending on this flag. Token capping at load time must use
|
|
367
|
+
# the same model so the loaded baseline matches what consolidation expects;
|
|
368
|
+
# otherwise a mismatched tokenizer can truncate memory.md differently.
|
|
369
|
+
memory_language_model = (
|
|
370
|
+
config.space.language_model
|
|
371
|
+
if user_memory_config.use_orchestrator_language_model
|
|
372
|
+
else user_memory_config.language_model
|
|
373
|
+
)
|
|
364
374
|
user_memory_state = await load_user_memory(
|
|
365
375
|
event=event,
|
|
366
|
-
config=
|
|
376
|
+
config=user_memory_config,
|
|
377
|
+
language_model=memory_language_model,
|
|
367
378
|
logger=logger,
|
|
368
379
|
)
|
|
369
380
|
if user_memory_state is not None:
|
|
370
381
|
user_memory_text = user_memory_state.text
|
|
371
382
|
postprocessor_manager.add_postprocessor(
|
|
372
383
|
UserMemoryPostprocessor(
|
|
373
|
-
config=
|
|
384
|
+
config=user_memory_config,
|
|
385
|
+
language_model=memory_language_model,
|
|
374
386
|
event=event,
|
|
375
387
|
state=user_memory_state,
|
|
376
388
|
logger=logger,
|
|
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
|