unique-sdk 2026.28.0.dev2__tar.gz → 2026.28.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.
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/PKG-INFO +1 -1
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/pyproject.toml +1 -1
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/cli/commands/files.py +20 -3
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/README.md +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/__init__.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/_api_requestor.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/_api_resource.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/_api_version.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/_error.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/_http_client.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/_list_object.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/_object_classes.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/_request_options.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/_unique_object.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/_unique_ql.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/_unique_response.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/_util.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/_version.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/_webhook.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/__init__.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_acronyms.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_agentic_table.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_analytics_order.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_benchmarking.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_briefing.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_chat_completion.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_content.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_dynamic_frontend.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_elicitation.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_embedding.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_event.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_folder.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_group.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_integrated.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_llm_models.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_mcp.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_message.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_message_assessment.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_message_execution.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_message_log.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_message_tool.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_module.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_scheduled_task.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_search.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_search_string.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_short_term_memory.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_space.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_user.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_web_search.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/cli/__init__.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/cli/__main__.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/cli/cli.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/cli/commands/__init__.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/cli/commands/_citation_manifest.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/cli/commands/cite_file.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/cli/commands/dynamic_frontend.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/cli/commands/elicitation.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/cli/commands/folders.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/cli/commands/mcp.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/cli/commands/navigation.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/cli/commands/read.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/cli/commands/scheduled_tasks.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/cli/commands/search.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/cli/commands/subagent.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/cli/commands/web_search.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/cli/commands/web_search_config.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/cli/config.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/cli/formatting.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/cli/shell.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/cli/skills/unique-cli-dynamic-frontend/SKILL.md +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/cli/skills/unique-cli-elicitation/SKILL.md +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/cli/skills/unique-cli-file-management/SKILL.md +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/cli/skills/unique-cli-mcp/SKILL.md +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/cli/skills/unique-cli-scheduled-tasks/SKILL.md +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/cli/skills/unique-cli-search/SKILL.md +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/cli/skills/unique-cli-subagent/SKILL.md +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/cli/skills/unique-cli-web-search/SKILL.md +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/cli/state.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/utils/analytics_order_run.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/utils/benchmarking_run.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/utils/chat_history.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/utils/chat_in_space.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/utils/file_io.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/utils/sources.py +0 -0
- {unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.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.28.0.
|
|
3
|
+
Version: 2026.28.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>
|
|
@@ -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
|
|
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,
|
|
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
|
{unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/__init__.py
RENAMED
|
File without changes
|
{unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_acronyms.py
RENAMED
|
File without changes
|
{unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_agentic_table.py
RENAMED
|
File without changes
|
{unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_analytics_order.py
RENAMED
|
File without changes
|
{unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_benchmarking.py
RENAMED
|
File without changes
|
{unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_briefing.py
RENAMED
|
File without changes
|
{unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_chat_completion.py
RENAMED
|
File without changes
|
{unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_content.py
RENAMED
|
File without changes
|
|
File without changes
|
{unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_elicitation.py
RENAMED
|
File without changes
|
{unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_embedding.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_integrated.py
RENAMED
|
File without changes
|
{unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_llm_models.py
RENAMED
|
File without changes
|
|
File without changes
|
{unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_message.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_message_log.py
RENAMED
|
File without changes
|
{unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_message_tool.py
RENAMED
|
File without changes
|
|
File without changes
|
{unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_scheduled_task.py
RENAMED
|
File without changes
|
|
File without changes
|
{unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_search_string.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/api_resources/_web_search.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/cli/commands/cite_file.py
RENAMED
|
File without changes
|
{unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/cli/commands/dynamic_frontend.py
RENAMED
|
File without changes
|
{unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/cli/commands/elicitation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/cli/commands/navigation.py
RENAMED
|
File without changes
|
|
File without changes
|
{unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/cli/commands/scheduled_tasks.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/cli/commands/web_search.py
RENAMED
|
File without changes
|
{unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/cli/commands/web_search_config.py
RENAMED
|
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
|
{unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/utils/analytics_order_run.py
RENAMED
|
File without changes
|
{unique_sdk-2026.28.0.dev2 → unique_sdk-2026.28.0.dev4}/unique_sdk/utils/benchmarking_run.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|