unique_orchestrator 2026.28.0.dev7__tar.gz → 2026.28.0.dev9__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.dev7 → unique_orchestrator-2026.28.0.dev9}/PKG-INFO +4 -4
- {unique_orchestrator-2026.28.0.dev7 → unique_orchestrator-2026.28.0.dev9}/pyproject.toml +4 -4
- {unique_orchestrator-2026.28.0.dev7 → unique_orchestrator-2026.28.0.dev9}/unique_orchestrator/prompts/system_prompt.jinja2 +1 -1
- {unique_orchestrator-2026.28.0.dev7 → unique_orchestrator-2026.28.0.dev9}/unique_orchestrator/unique_ai_builder.py +22 -2
- {unique_orchestrator-2026.28.0.dev7 → unique_orchestrator-2026.28.0.dev9}/README.md +0 -0
- {unique_orchestrator-2026.28.0.dev7 → unique_orchestrator-2026.28.0.dev9}/unique_orchestrator/__init__.py +0 -0
- {unique_orchestrator-2026.28.0.dev7 → unique_orchestrator-2026.28.0.dev9}/unique_orchestrator/_builders/__init__.py +0 -0
- {unique_orchestrator-2026.28.0.dev7 → unique_orchestrator-2026.28.0.dev9}/unique_orchestrator/_builders/inject_tool_reminders.py +0 -0
- {unique_orchestrator-2026.28.0.dev7 → unique_orchestrator-2026.28.0.dev9}/unique_orchestrator/_builders/loop_iteration_runner.py +0 -0
- {unique_orchestrator-2026.28.0.dev7 → unique_orchestrator-2026.28.0.dev9}/unique_orchestrator/_builders/open_file_setup.py +0 -0
- {unique_orchestrator-2026.28.0.dev7 → unique_orchestrator-2026.28.0.dev9}/unique_orchestrator/_builders/skill_setup.py +0 -0
- {unique_orchestrator-2026.28.0.dev7 → unique_orchestrator-2026.28.0.dev9}/unique_orchestrator/config.py +0 -0
- {unique_orchestrator-2026.28.0.dev7 → unique_orchestrator-2026.28.0.dev9}/unique_orchestrator/prompts/generic_reference_prompt.jinja2 +0 -0
- {unique_orchestrator-2026.28.0.dev7 → unique_orchestrator-2026.28.0.dev9}/unique_orchestrator/prompts/user_message_prompt.jinja2 +0 -0
- {unique_orchestrator-2026.28.0.dev7 → unique_orchestrator-2026.28.0.dev9}/unique_orchestrator/settings.py +0 -0
- {unique_orchestrator-2026.28.0.dev7 → unique_orchestrator-2026.28.0.dev9}/unique_orchestrator/tests/test_agent_config_rjsf_ui_schema.py +0 -0
- {unique_orchestrator-2026.28.0.dev7 → unique_orchestrator-2026.28.0.dev9}/unique_orchestrator/tests/test_build_loop_iteration_runner.py +0 -0
- {unique_orchestrator-2026.28.0.dev7 → unique_orchestrator-2026.28.0.dev9}/unique_orchestrator/tests/test_config_services_validators.py +0 -0
- {unique_orchestrator-2026.28.0.dev7 → unique_orchestrator-2026.28.0.dev9}/unique_orchestrator/tests/test_qwen_max_loop_iterations.py +0 -0
- {unique_orchestrator-2026.28.0.dev7 → unique_orchestrator-2026.28.0.dev9}/unique_orchestrator/tests/test_register_code_interpreter_postprocessors.py +0 -0
- {unique_orchestrator-2026.28.0.dev7 → unique_orchestrator-2026.28.0.dev9}/unique_orchestrator/tests/test_unique_ai_async_modify.py +0 -0
- {unique_orchestrator-2026.28.0.dev7 → unique_orchestrator-2026.28.0.dev9}/unique_orchestrator/tests/test_unique_ai_execution_timing.py +0 -0
- {unique_orchestrator-2026.28.0.dev7 → unique_orchestrator-2026.28.0.dev9}/unique_orchestrator/tests/test_unique_ai_get_filtered_user_metadata.py +0 -0
- {unique_orchestrator-2026.28.0.dev7 → unique_orchestrator-2026.28.0.dev9}/unique_orchestrator/tests/test_unique_ai_log_tool_calls.py +0 -0
- {unique_orchestrator-2026.28.0.dev7 → unique_orchestrator-2026.28.0.dev9}/unique_orchestrator/tests/test_unique_ai_loop_debug_params.py +0 -0
- {unique_orchestrator-2026.28.0.dev7 → unique_orchestrator-2026.28.0.dev9}/unique_orchestrator/tests/test_unique_ai_persist_tool_calls.py +0 -0
- {unique_orchestrator-2026.28.0.dev7 → unique_orchestrator-2026.28.0.dev9}/unique_orchestrator/tests/test_unique_ai_plan_or_execute_include.py +0 -0
- {unique_orchestrator-2026.28.0.dev7 → unique_orchestrator-2026.28.0.dev9}/unique_orchestrator/tests/test_unique_ai_reference_order.py +0 -0
- {unique_orchestrator-2026.28.0.dev7 → unique_orchestrator-2026.28.0.dev9}/unique_orchestrator/tests/test_unique_ai_render_system_prompt_user_instructions.py +0 -0
- {unique_orchestrator-2026.28.0.dev7 → unique_orchestrator-2026.28.0.dev9}/unique_orchestrator/tests/test_utils_resolve_other_options.py +0 -0
- {unique_orchestrator-2026.28.0.dev7 → unique_orchestrator-2026.28.0.dev9}/unique_orchestrator/unique_ai.py +0 -0
- {unique_orchestrator-2026.28.0.dev7 → unique_orchestrator-2026.28.0.dev9}/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.dev9
|
|
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.28.0.
|
|
12
|
+
Requires-Dist: unique-toolkit>=2026.28.0.dev18,<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
|
|
16
|
-
Requires-Dist: unique-deep-research>=2026.28.0.
|
|
16
|
+
Requires-Dist: unique-deep-research>=2026.28.0.dev5,<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.dev9"
|
|
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.28.0.
|
|
16
|
+
"unique-toolkit>=2026.28.0.dev18,<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",
|
|
20
|
-
"unique-deep-research>=2026.28.0.
|
|
20
|
+
"unique-deep-research>=2026.28.0.dev5,<2026.28.0rc0",
|
|
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
|
|
|
@@ -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
|
|
|
@@ -319,11 +319,15 @@ async def _build_common(
|
|
|
319
319
|
mcp_servers=event.payload.mcp_servers,
|
|
320
320
|
event=event,
|
|
321
321
|
tool_progress_reporter=tool_progress_reporter,
|
|
322
|
+
chat_service=chat_service,
|
|
323
|
+
language_model_service=llm_service,
|
|
322
324
|
)
|
|
323
325
|
a2a_manager = A2AManager(
|
|
324
326
|
logger=logger,
|
|
325
327
|
tool_progress_reporter=tool_progress_reporter,
|
|
326
328
|
response_watcher=response_watcher,
|
|
329
|
+
chat_service=chat_service,
|
|
330
|
+
language_model_service=llm_service,
|
|
327
331
|
)
|
|
328
332
|
|
|
329
333
|
tool_manager_config = ToolManagerConfig(
|
|
@@ -361,16 +365,28 @@ async def _build_common(
|
|
|
361
365
|
|
|
362
366
|
user_memory_text = ""
|
|
363
367
|
if config.space.allow_user_memory:
|
|
368
|
+
user_memory_config = config.agent.services.user_memory_config
|
|
369
|
+
# The postprocessor consolidates memory with the orchestrator model or the
|
|
370
|
+
# configured one depending on this flag. Token capping at load time must use
|
|
371
|
+
# the same model so the loaded baseline matches what consolidation expects;
|
|
372
|
+
# otherwise a mismatched tokenizer can truncate memory.md differently.
|
|
373
|
+
memory_language_model = (
|
|
374
|
+
config.space.language_model
|
|
375
|
+
if user_memory_config.use_orchestrator_language_model
|
|
376
|
+
else user_memory_config.language_model
|
|
377
|
+
)
|
|
364
378
|
user_memory_state = await load_user_memory(
|
|
365
379
|
event=event,
|
|
366
|
-
config=
|
|
380
|
+
config=user_memory_config,
|
|
381
|
+
language_model=memory_language_model,
|
|
367
382
|
logger=logger,
|
|
368
383
|
)
|
|
369
384
|
if user_memory_state is not None:
|
|
370
385
|
user_memory_text = user_memory_state.text
|
|
371
386
|
postprocessor_manager.add_postprocessor(
|
|
372
387
|
UserMemoryPostprocessor(
|
|
373
|
-
config=
|
|
388
|
+
config=user_memory_config,
|
|
389
|
+
language_model=memory_language_model,
|
|
374
390
|
event=event,
|
|
375
391
|
state=user_memory_state,
|
|
376
392
|
logger=logger,
|
|
@@ -516,6 +532,8 @@ async def _build_responses(
|
|
|
516
532
|
mcp_manager=common_components.mcp_manager,
|
|
517
533
|
a2a_manager=common_components.a2a_manager,
|
|
518
534
|
builtin_tool_manager=builtin_tool_manager,
|
|
535
|
+
chat_service=common_components.chat_service,
|
|
536
|
+
language_model_service=common_components.llm_service,
|
|
519
537
|
)
|
|
520
538
|
if (
|
|
521
539
|
not config.agent.experimental.open_file_tool_config.enabled
|
|
@@ -617,6 +635,8 @@ async def _build_completions(
|
|
|
617
635
|
tool_progress_reporter=common_components.tool_progress_reporter,
|
|
618
636
|
mcp_manager=common_components.mcp_manager,
|
|
619
637
|
a2a_manager=common_components.a2a_manager,
|
|
638
|
+
chat_service=common_components.chat_service,
|
|
639
|
+
language_model_service=common_components.llm_service,
|
|
620
640
|
)
|
|
621
641
|
if force_uploaded_search:
|
|
622
642
|
tool_manager.add_forced_tool(UploadedSearchTool.name)
|
|
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
|