unique-sdk 2026.28.0.dev2__tar.gz → 2026.28.0.dev3__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 (85) hide show
  1. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/PKG-INFO +1 -1
  2. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/pyproject.toml +1 -1
  3. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/cli/commands/files.py +20 -3
  4. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/README.md +0 -0
  5. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/__init__.py +0 -0
  6. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/_api_requestor.py +0 -0
  7. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/_api_resource.py +0 -0
  8. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/_api_version.py +0 -0
  9. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/_error.py +0 -0
  10. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/_http_client.py +0 -0
  11. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/_list_object.py +0 -0
  12. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/_object_classes.py +0 -0
  13. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/_request_options.py +0 -0
  14. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/_unique_object.py +0 -0
  15. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/_unique_ql.py +0 -0
  16. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/_unique_response.py +0 -0
  17. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/_util.py +0 -0
  18. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/_version.py +0 -0
  19. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/_webhook.py +0 -0
  20. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/api_resources/__init__.py +0 -0
  21. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/api_resources/_acronyms.py +0 -0
  22. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/api_resources/_agentic_table.py +0 -0
  23. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/api_resources/_analytics_order.py +0 -0
  24. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/api_resources/_benchmarking.py +0 -0
  25. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/api_resources/_briefing.py +0 -0
  26. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/api_resources/_chat_completion.py +0 -0
  27. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/api_resources/_content.py +0 -0
  28. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/api_resources/_dynamic_frontend.py +0 -0
  29. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/api_resources/_elicitation.py +0 -0
  30. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/api_resources/_embedding.py +0 -0
  31. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/api_resources/_event.py +0 -0
  32. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/api_resources/_folder.py +0 -0
  33. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/api_resources/_group.py +0 -0
  34. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/api_resources/_integrated.py +0 -0
  35. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/api_resources/_llm_models.py +0 -0
  36. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/api_resources/_mcp.py +0 -0
  37. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/api_resources/_message.py +0 -0
  38. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/api_resources/_message_assessment.py +0 -0
  39. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/api_resources/_message_execution.py +0 -0
  40. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/api_resources/_message_log.py +0 -0
  41. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/api_resources/_message_tool.py +0 -0
  42. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/api_resources/_module.py +0 -0
  43. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/api_resources/_scheduled_task.py +0 -0
  44. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/api_resources/_search.py +0 -0
  45. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/api_resources/_search_string.py +0 -0
  46. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/api_resources/_short_term_memory.py +0 -0
  47. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/api_resources/_space.py +0 -0
  48. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/api_resources/_user.py +0 -0
  49. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/api_resources/_web_search.py +0 -0
  50. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/cli/__init__.py +0 -0
  51. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/cli/__main__.py +0 -0
  52. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/cli/cli.py +0 -0
  53. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/cli/commands/__init__.py +0 -0
  54. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/cli/commands/_citation_manifest.py +0 -0
  55. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/cli/commands/cite_file.py +0 -0
  56. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/cli/commands/dynamic_frontend.py +0 -0
  57. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/cli/commands/elicitation.py +0 -0
  58. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/cli/commands/folders.py +0 -0
  59. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/cli/commands/mcp.py +0 -0
  60. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/cli/commands/navigation.py +0 -0
  61. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/cli/commands/read.py +0 -0
  62. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/cli/commands/scheduled_tasks.py +0 -0
  63. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/cli/commands/search.py +0 -0
  64. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/cli/commands/subagent.py +0 -0
  65. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/cli/commands/web_search.py +0 -0
  66. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/cli/commands/web_search_config.py +0 -0
  67. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/cli/config.py +0 -0
  68. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/cli/formatting.py +0 -0
  69. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/cli/shell.py +0 -0
  70. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/cli/skills/unique-cli-dynamic-frontend/SKILL.md +0 -0
  71. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/cli/skills/unique-cli-elicitation/SKILL.md +0 -0
  72. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/cli/skills/unique-cli-file-management/SKILL.md +0 -0
  73. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/cli/skills/unique-cli-mcp/SKILL.md +0 -0
  74. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/cli/skills/unique-cli-scheduled-tasks/SKILL.md +0 -0
  75. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/cli/skills/unique-cli-search/SKILL.md +0 -0
  76. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/cli/skills/unique-cli-subagent/SKILL.md +0 -0
  77. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/cli/skills/unique-cli-web-search/SKILL.md +0 -0
  78. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/cli/state.py +0 -0
  79. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/utils/analytics_order_run.py +0 -0
  80. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/utils/benchmarking_run.py +0 -0
  81. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/utils/chat_history.py +0 -0
  82. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/utils/chat_in_space.py +0 -0
  83. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/utils/file_io.py +0 -0
  84. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/unique_sdk/utils/sources.py +0 -0
  85. {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev3}/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.dev2
3
+ Version: 2026.28.0.dev3
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.dev2"
3
+ version = "2026.28.0.dev3"
4
4
  description = ""
5
5
  readme = "README.md"
6
6
  license = { text = "MIT" }
@@ -13,6 +13,16 @@ from unique_sdk.cli.formatting import format_content_info
13
13
  from unique_sdk.cli.state import ShellState
14
14
  from unique_sdk.utils.file_io import download_content, upload_file
15
15
 
16
+ _SUPPORTED_UPLOAD_MIME_TYPES = {
17
+ ".pdf": "application/pdf",
18
+ ".docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
19
+ ".xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
20
+ ".pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
21
+ ".txt": "text/plain",
22
+ ".html": "text/html",
23
+ ".md": "text/markdown",
24
+ }
25
+
16
26
 
17
27
  def _normalize_unique_file_path(cwd: str, path: str) -> str:
18
28
  """Normalize a Unique file path without allowing traversal above root."""
@@ -95,6 +105,15 @@ def _resolve_content_id(state: ShellState, name_or_id: str) -> tuple[str, str]:
95
105
  raise ValueError(f"File not found: {name_or_id}")
96
106
 
97
107
 
108
+ def _detect_upload_mime_type(path: Path) -> str:
109
+ mime_type = _SUPPORTED_UPLOAD_MIME_TYPES.get(path.suffix.lower())
110
+ if mime_type:
111
+ return mime_type
112
+
113
+ mime_type, _ = mimetypes.guess_type(str(path))
114
+ return mime_type or "application/octet-stream"
115
+
116
+
98
117
  def _format_version_value(value: Any) -> str:
99
118
  if value is None:
100
119
  return ""
@@ -215,9 +234,7 @@ def cmd_upload(
215
234
  destination,
216
235
  )
217
236
 
218
- mime_type, _ = mimetypes.guess_type(str(path))
219
- if not mime_type:
220
- mime_type = "application/octet-stream"
237
+ mime_type = _detect_upload_mime_type(path)
221
238
 
222
239
  result = upload_file(
223
240
  userId=state.config.user_id,