unique-sdk 2026.28.0.dev8__tar.gz → 2026.28.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.
Files changed (86) hide show
  1. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/PKG-INFO +1 -1
  2. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/pyproject.toml +1 -1
  3. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/api_resources/_space.py +30 -0
  4. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/utils/chat_in_space.py +17 -7
  5. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/README.md +0 -0
  6. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/__init__.py +0 -0
  7. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/_api_requestor.py +0 -0
  8. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/_api_resource.py +0 -0
  9. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/_api_version.py +0 -0
  10. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/_error.py +0 -0
  11. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/_http_client.py +0 -0
  12. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/_list_object.py +0 -0
  13. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/_object_classes.py +0 -0
  14. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/_request_options.py +0 -0
  15. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/_unique_object.py +0 -0
  16. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/_unique_ql.py +0 -0
  17. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/_unique_response.py +0 -0
  18. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/_util.py +0 -0
  19. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/_version.py +0 -0
  20. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/_webhook.py +0 -0
  21. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/api_resources/__init__.py +0 -0
  22. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/api_resources/_acronyms.py +0 -0
  23. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/api_resources/_agentic_table.py +0 -0
  24. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/api_resources/_analytics_order.py +0 -0
  25. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/api_resources/_benchmarking.py +0 -0
  26. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/api_resources/_briefing.py +0 -0
  27. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/api_resources/_chat_completion.py +0 -0
  28. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/api_resources/_content.py +0 -0
  29. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/api_resources/_dynamic_frontend.py +0 -0
  30. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/api_resources/_elicitation.py +0 -0
  31. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/api_resources/_embedding.py +0 -0
  32. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/api_resources/_event.py +0 -0
  33. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/api_resources/_folder.py +0 -0
  34. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/api_resources/_group.py +0 -0
  35. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/api_resources/_integrated.py +0 -0
  36. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/api_resources/_llm_models.py +0 -0
  37. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/api_resources/_mcp.py +0 -0
  38. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/api_resources/_message.py +0 -0
  39. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/api_resources/_message_assessment.py +0 -0
  40. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/api_resources/_message_execution.py +0 -0
  41. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/api_resources/_message_log.py +0 -0
  42. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/api_resources/_message_tool.py +0 -0
  43. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/api_resources/_module.py +0 -0
  44. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/api_resources/_scheduled_task.py +0 -0
  45. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/api_resources/_search.py +0 -0
  46. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/api_resources/_search_string.py +0 -0
  47. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/api_resources/_short_term_memory.py +0 -0
  48. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/api_resources/_user.py +0 -0
  49. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/api_resources/_web_search.py +0 -0
  50. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/cli/__init__.py +0 -0
  51. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/cli/__main__.py +0 -0
  52. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/cli/cli.py +0 -0
  53. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/cli/commands/__init__.py +0 -0
  54. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/cli/commands/_citation_manifest.py +0 -0
  55. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/cli/commands/cite_file.py +0 -0
  56. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/cli/commands/dynamic_frontend.py +0 -0
  57. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/cli/commands/elicitation.py +0 -0
  58. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/cli/commands/files.py +0 -0
  59. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/cli/commands/folders.py +0 -0
  60. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/cli/commands/mcp.py +0 -0
  61. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/cli/commands/navigation.py +0 -0
  62. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/cli/commands/read.py +0 -0
  63. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/cli/commands/scheduled_tasks.py +0 -0
  64. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/cli/commands/search.py +0 -0
  65. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/cli/commands/subagent.py +0 -0
  66. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/cli/commands/web_search.py +0 -0
  67. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/cli/commands/web_search_config.py +0 -0
  68. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/cli/config.py +0 -0
  69. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/cli/formatting.py +0 -0
  70. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/cli/metadata_filter.py +0 -0
  71. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/cli/shell.py +0 -0
  72. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/cli/skills/unique-cli-dynamic-frontend/SKILL.md +0 -0
  73. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/cli/skills/unique-cli-elicitation/SKILL.md +0 -0
  74. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/cli/skills/unique-cli-file-management/SKILL.md +0 -0
  75. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/cli/skills/unique-cli-mcp/SKILL.md +0 -0
  76. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/cli/skills/unique-cli-scheduled-tasks/SKILL.md +0 -0
  77. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/cli/skills/unique-cli-search/SKILL.md +0 -0
  78. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/cli/skills/unique-cli-subagent/SKILL.md +0 -0
  79. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/cli/skills/unique-cli-web-search/SKILL.md +0 -0
  80. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/cli/state.py +0 -0
  81. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/utils/analytics_order_run.py +0 -0
  82. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/utils/benchmarking_run.py +0 -0
  83. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/utils/chat_history.py +0 -0
  84. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/utils/file_io.py +0 -0
  85. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/utils/sources.py +0 -0
  86. {unique_sdk-2026.28.0.dev8 → unique_sdk-2026.28.0.dev10}/unique_sdk/utils/token.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: unique-sdk
3
- Version: 2026.28.0.dev8
3
+ Version: 2026.28.0.dev10
4
4
  Summary:
5
5
  Author: Martin Fadler, Konstantin Krauss, Andreas Hauri
6
6
  Author-email: Martin Fadler <martin.fadler@unique.ch>, Konstantin Krauss <konstantin@unique.ch>, Andreas Hauri <andreas@unique.ch>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "unique_sdk"
3
- version = "2026.28.0.dev8"
3
+ version = "2026.28.0.dev10"
4
4
  description = ""
5
5
  readme = "README.md"
6
6
  license = { text = "MIT" }
@@ -44,6 +44,15 @@ class Space(APIResource["Space"]):
44
44
  id: NotRequired[str | None]
45
45
  order: NotRequired[int | None]
46
46
 
47
+ class SubAgentSettings(TypedDict):
48
+ icon: str
49
+ name: str
50
+ displayName: str
51
+ selectionPolicy: str
52
+ isUserInitiatedOnly: NotRequired[bool | None]
53
+ isExclusive: bool
54
+ configuration: dict[str, Any]
55
+
47
56
  class CreateSpaceParams(RequestOptions):
48
57
  name: str
49
58
  fallbackModule: str
@@ -57,6 +66,9 @@ class Space(APIResource["Space"]):
57
66
  uiType: NotRequired["Space.UiType | None"]
58
67
  settings: NotRequired[dict[str, Any] | None]
59
68
  assistantPrompts: NotRequired[list["Space.AssistantPromptParams"] | None]
69
+ isSubAgent: NotRequired[bool | None]
70
+ subAgentSettings: NotRequired["Space.SubAgentSettings | None"]
71
+ subAgentIds: NotRequired[list[str] | None]
60
72
 
61
73
  class UpdateParams(RequestOptions):
62
74
  name: NotRequired[str | None]
@@ -71,6 +83,9 @@ class Space(APIResource["Space"]):
71
83
  allowEndUserSpace: NotRequired[bool | None]
72
84
  uiType: NotRequired["Space.UiType | None"]
73
85
  assistantPrompts: NotRequired[list["Space.AssistantPromptParams"] | None]
86
+ isSubAgent: NotRequired[bool | None]
87
+ subAgentSettings: NotRequired["Space.SubAgentSettings | None"]
88
+ subAgentIds: NotRequired[list[str] | None]
74
89
 
75
90
  class AccessEntry(TypedDict):
76
91
  entityId: str
@@ -100,6 +115,7 @@ class Space(APIResource["Space"]):
100
115
  skillChoices: NotRequired[list[dict[str, Any]]]
101
116
  scopeRules: NotRequired[dict[str, Any] | None]
102
117
  correlation: NotRequired["Space.Correlation | None"]
118
+ autoApproveElicitation: NotRequired[bool | None]
103
119
 
104
120
  class GetChatMessagesParams(RequestOptions):
105
121
  """
@@ -255,6 +271,17 @@ class Space(APIResource["Space"]):
255
271
  createdAt: str
256
272
  updatedAt: str
257
273
 
274
+ SubAgentSettingsOverride: TypeAlias = SubAgentSettings
275
+
276
+ class SubAgent(TypedDict):
277
+ id: str
278
+ name: str
279
+ title: NotRequired[str | None]
280
+ subtitle: NotRequired[str | None]
281
+ explanation: NotRequired[str | None]
282
+ isSubAgent: bool
283
+ settingsOverride: NotRequired["Space.SubAgentSettingsOverride | None"]
284
+
258
285
  class Access(TypedDict):
259
286
  id: str
260
287
  entityId: str
@@ -286,8 +313,11 @@ class Space(APIResource["Space"]):
286
313
  access: list[str]
287
314
  isExternal: bool
288
315
  isPinned: bool
316
+ isSubAgent: bool | None
317
+ subAgentSettings: SubAgentSettings | None
289
318
  uiType: str
290
319
  settings: dict[str, Any] | None
320
+ subAgents: list["Space.SubAgent"] | None
291
321
  assistantMcpServers: list["Space.McpServer"]
292
322
  modules: list["Space.Module"]
293
323
  scopeRules: list["Space.ScopeRule"]
@@ -24,6 +24,7 @@ async def send_message_and_wait_for_completion(
24
24
  max_wait: float = 60.0,
25
25
  stop_condition: Literal["stoppedStreamingAt", "completedAt"] = "stoppedStreamingAt",
26
26
  correlation: "Space.Correlation | None" = None,
27
+ auto_approve_elicitation: bool | None = None,
27
28
  on_message_update: Callable[["Space.Message"], Awaitable[None]] | None = None,
28
29
  ) -> "Space.Message":
29
30
  """
@@ -43,22 +44,31 @@ async def send_message_and_wait_for_completion(
43
44
  stop_condition: Defines when to expect a response back, when the assistant stop streaming or when it completes the message. (default: "stoppedStreamingAt")
44
45
  correlation: Optional correlation data to link this message to a parent message in another chat.
45
46
  Should contain: parentMessageId, parentChatId, parentAssistantId.
47
+ auto_approve_elicitation: When True, automatically approves elicitation requests during
48
+ the assistant run. Use for non-interactive automation where no user is present.
46
49
  on_message_update: Optional async callback called whenever the latest assistant
47
50
  message changes while waiting for completion.
48
51
 
49
52
  Returns:
50
53
  The completed Space.Message.
51
54
  """
55
+ create_message_params: Space.CreateMessageParams = {
56
+ "assistantId": assistant_id,
57
+ "text": text,
58
+ "toolChoices": tool_choices,
59
+ "skillChoices": list(skill_choices),
60
+ "scopeRules": scope_rules,
61
+ "correlation": correlation,
62
+ }
63
+ if chat_id is not None:
64
+ create_message_params["chatId"] = chat_id
65
+ if auto_approve_elicitation is not None:
66
+ create_message_params["autoApproveElicitation"] = auto_approve_elicitation
67
+
52
68
  response = await Space.create_message_async(
53
69
  user_id=user_id,
54
70
  company_id=company_id,
55
- assistantId=assistant_id,
56
- chatId=chat_id,
57
- text=text,
58
- toolChoices=tool_choices,
59
- skillChoices=list(skill_choices),
60
- scopeRules=scope_rules,
61
- correlation=correlation,
71
+ **create_message_params,
62
72
  )
63
73
  chat_id = response.get("chatId")
64
74
  message_id = response.get("id")