unique-sdk 2026.40.0.dev2__tar.gz → 2026.40.0.dev4__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 (91) hide show
  1. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/PKG-INFO +1 -1
  2. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/pyproject.toml +1 -1
  3. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/api_resources/_message.py +61 -0
  4. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/api_resources/_message_log.py +1 -1
  5. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/api_resources/_space.py +54 -0
  6. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/README.md +0 -0
  7. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/__init__.py +0 -0
  8. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/_api_requestor.py +0 -0
  9. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/_api_resource.py +0 -0
  10. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/_api_version.py +0 -0
  11. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/_error.py +0 -0
  12. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/_http_client.py +0 -0
  13. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/_list_object.py +0 -0
  14. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/_object_classes.py +0 -0
  15. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/_request_options.py +0 -0
  16. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/_unique_object.py +0 -0
  17. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/_unique_ql.py +0 -0
  18. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/_unique_response.py +0 -0
  19. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/_util.py +0 -0
  20. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/_version.py +0 -0
  21. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/_webhook.py +0 -0
  22. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/api_resources/__init__.py +0 -0
  23. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/api_resources/_acronyms.py +0 -0
  24. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/api_resources/_agentic_table.py +0 -0
  25. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/api_resources/_analytics_order.py +0 -0
  26. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/api_resources/_benchmarking.py +0 -0
  27. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/api_resources/_briefing.py +0 -0
  28. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/api_resources/_chat_completion.py +0 -0
  29. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/api_resources/_content.py +0 -0
  30. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/api_resources/_context_memory.py +0 -0
  31. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/api_resources/_elicitation.py +0 -0
  32. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/api_resources/_embedding.py +0 -0
  33. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/api_resources/_event.py +0 -0
  34. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/api_resources/_folder.py +0 -0
  35. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/api_resources/_group.py +0 -0
  36. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/api_resources/_integrated.py +0 -0
  37. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/api_resources/_llm_models.py +0 -0
  38. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/api_resources/_mcp.py +0 -0
  39. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/api_resources/_message_assessment.py +0 -0
  40. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/api_resources/_message_execution.py +0 -0
  41. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/api_resources/_message_tool.py +0 -0
  42. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/api_resources/_module.py +0 -0
  43. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/api_resources/_scheduled_task.py +0 -0
  44. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/api_resources/_search.py +0 -0
  45. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/api_resources/_search_string.py +0 -0
  46. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/api_resources/_short_term_memory.py +0 -0
  47. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/api_resources/_user.py +0 -0
  48. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/api_resources/_web_search.py +0 -0
  49. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/cli/__init__.py +0 -0
  50. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/cli/__main__.py +0 -0
  51. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/cli/cli.py +0 -0
  52. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/cli/commands/__init__.py +0 -0
  53. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/cli/commands/_citation_manifest.py +0 -0
  54. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/cli/commands/agentic_table.py +0 -0
  55. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/cli/commands/agentic_table_write.py +0 -0
  56. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/cli/commands/browser.py +0 -0
  57. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/cli/commands/cite_file.py +0 -0
  58. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/cli/commands/elicitation.py +0 -0
  59. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/cli/commands/files.py +0 -0
  60. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/cli/commands/folders.py +0 -0
  61. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/cli/commands/mcp.py +0 -0
  62. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/cli/commands/navigation.py +0 -0
  63. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/cli/commands/read.py +0 -0
  64. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/cli/commands/scheduled_tasks.py +0 -0
  65. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/cli/commands/search.py +0 -0
  66. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/cli/commands/subagent.py +0 -0
  67. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/cli/commands/web_search.py +0 -0
  68. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/cli/commands/web_search_config.py +0 -0
  69. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/cli/config.py +0 -0
  70. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/cli/formatting.py +0 -0
  71. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/cli/identity.py +0 -0
  72. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/cli/metadata_filter.py +0 -0
  73. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/cli/shell.py +0 -0
  74. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/cli/skills/unique-cli-agentic-table/SKILL.md +0 -0
  75. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/cli/skills/unique-cli-elicitation/SKILL.md +0 -0
  76. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/cli/skills/unique-cli-file-management/SKILL.md +0 -0
  77. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/cli/skills/unique-cli-mcp/SKILL.md +0 -0
  78. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/cli/skills/unique-cli-scheduled-tasks/SKILL.md +0 -0
  79. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/cli/skills/unique-cli-search/SKILL.md +0 -0
  80. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/cli/skills/unique-cli-subagent/SKILL.md +0 -0
  81. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/cli/skills/unique-cli-uploaded-search/SKILL.md +0 -0
  82. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/cli/skills/unique-cli-web-search/SKILL.md +0 -0
  83. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/cli/state.py +0 -0
  84. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/cli/workspace.py +0 -0
  85. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/utils/analytics_order_run.py +0 -0
  86. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/utils/benchmarking_run.py +0 -0
  87. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/utils/chat_history.py +0 -0
  88. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/utils/chat_in_space.py +0 -0
  89. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/utils/file_io.py +0 -0
  90. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/unique_sdk/utils/sources.py +0 -0
  91. {unique_sdk-2026.40.0.dev2 → unique_sdk-2026.40.0.dev4}/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.40.0.dev2
3
+ Version: 2026.40.0.dev4
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.40.0.dev2"
3
+ version = "2026.40.0.dev4"
4
4
  description = ""
5
5
  readme = "README.md"
6
6
  license = { text = "MIT" }
@@ -68,6 +68,9 @@ class Message(APIResource["Message"]):
68
68
  Literal["PROCESS", "PREFACE", "ELICITATION", "ANSWER"] | None
69
69
  ]
70
70
 
71
+ class MarkTurnSystemInterruptedParams(RequestOptions):
72
+ chatId: str
73
+
71
74
  class DeleteParams(RequestOptions):
72
75
  chatId: str
73
76
 
@@ -280,6 +283,64 @@ class Message(APIResource["Message"]):
280
283
  ),
281
284
  )
282
285
 
286
+ @classmethod
287
+ def mark_turn_system_interrupted(
288
+ cls,
289
+ user_id: str,
290
+ company_id: str,
291
+ id: str,
292
+ **params: Unpack["Message.MarkTurnSystemInterruptedParams"],
293
+ ) -> "Message":
294
+ """
295
+ Marks the turn anchored on the given USER message as system-interrupted.
296
+
297
+ Persists ``turnInterruptionReason = SYSTEM_INTERRUPTED`` on the USER
298
+ message via a dedicated service-authenticated endpoint. The endpoint is
299
+ idempotent and never overwrites a user-initiated stop (``userAbortedAt``
300
+ wins if both race). The reason is fixed server-side semantics and is
301
+ intentionally not parameterizable.
302
+ """
303
+ url = "%s/%s/turn-interruption" % (cls.class_url(), quote_plus(id))
304
+ return cast(
305
+ "Message",
306
+ cls._static_request(
307
+ "post",
308
+ url,
309
+ user_id,
310
+ company_id,
311
+ {**params, "reason": "SYSTEM_INTERRUPTED"},
312
+ ),
313
+ )
314
+
315
+ @classmethod
316
+ async def mark_turn_system_interrupted_async(
317
+ cls,
318
+ user_id: str,
319
+ company_id: str,
320
+ id: str,
321
+ **params: Unpack["Message.MarkTurnSystemInterruptedParams"],
322
+ ) -> "Message":
323
+ """
324
+ Marks the turn anchored on the given USER message as system-interrupted.
325
+
326
+ Persists ``turnInterruptionReason = SYSTEM_INTERRUPTED`` on the USER
327
+ message via a dedicated service-authenticated endpoint. The endpoint is
328
+ idempotent and never overwrites a user-initiated stop (``userAbortedAt``
329
+ wins if both race). The reason is fixed server-side semantics and is
330
+ intentionally not parameterizable.
331
+ """
332
+ url = "%s/%s/turn-interruption" % (cls.class_url(), quote_plus(id))
333
+ return cast(
334
+ "Message",
335
+ await cls._static_request_async(
336
+ "post",
337
+ url,
338
+ user_id,
339
+ company_id,
340
+ {**params, "reason": "SYSTEM_INTERRUPTED"},
341
+ ),
342
+ )
343
+
283
344
  @classmethod
284
345
  def _cls_delete(
285
346
  cls,
@@ -19,7 +19,7 @@ class MessageLog(APIResource["MessageLog"]):
19
19
 
20
20
  RESOURCE_URL = "/message-log"
21
21
 
22
- StatusLiteral = Literal["RUNNING", "COMPLETED", "FAILED"]
22
+ StatusLiteral = Literal["RUNNING", "COMPLETED", "FAILED", "CANCELLED"]
23
23
 
24
24
  class Reference(TypedDict):
25
25
  name: str
@@ -238,6 +238,16 @@ class Space(APIResource["Space"]):
238
238
  title: str
239
239
  assistantId: str
240
240
 
241
+ class UpdateChatParams(RequestOptions):
242
+ """
243
+ Parameters for renaming a chat.
244
+
245
+ Attributes:
246
+ title: New chat title. Must be a non-empty string.
247
+ """
248
+
249
+ title: str
250
+
241
251
  class ChatResult(TypedDict):
242
252
  id: str
243
253
  title: str | None
@@ -434,6 +444,50 @@ class Space(APIResource["Space"]):
434
444
  ),
435
445
  )
436
446
 
447
+ @classmethod
448
+ def update_chat(
449
+ cls,
450
+ user_id: str,
451
+ company_id: str,
452
+ chat_id: str,
453
+ **params: Unpack["Space.UpdateChatParams"],
454
+ ) -> "Space.ChatResult":
455
+ """
456
+ Rename a chat in a space.
457
+ """
458
+ return cast(
459
+ "Space.ChatResult",
460
+ cls._static_request(
461
+ "patch",
462
+ f"/space/chat/{chat_id}",
463
+ user_id,
464
+ company_id,
465
+ params=params,
466
+ ),
467
+ )
468
+
469
+ @classmethod
470
+ async def update_chat_async(
471
+ cls,
472
+ user_id: str,
473
+ company_id: str,
474
+ chat_id: str,
475
+ **params: Unpack["Space.UpdateChatParams"],
476
+ ) -> "Space.ChatResult":
477
+ """
478
+ Async rename a chat in a space.
479
+ """
480
+ return cast(
481
+ "Space.ChatResult",
482
+ await cls._static_request_async(
483
+ "patch",
484
+ f"/space/chat/{chat_id}",
485
+ user_id,
486
+ company_id,
487
+ params=params,
488
+ ),
489
+ )
490
+
437
491
  @classmethod
438
492
  def get_chat_messages(
439
493
  cls,