unique-sdk 2026.44.0.dev0__tar.gz → 2026.44.0.dev1__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.44.0.dev0 → unique_sdk-2026.44.0.dev1}/PKG-INFO +1 -1
  2. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/pyproject.toml +1 -1
  3. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/cli/cli.py +4 -1
  4. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/cli/commands/folders.py +11 -1
  5. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/README.md +0 -0
  6. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/__init__.py +0 -0
  7. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/_api_requestor.py +0 -0
  8. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/_api_resource.py +0 -0
  9. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/_api_version.py +0 -0
  10. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/_error.py +0 -0
  11. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/_http_client.py +0 -0
  12. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/_list_object.py +0 -0
  13. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/_object_classes.py +0 -0
  14. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/_request_options.py +0 -0
  15. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/_unique_object.py +0 -0
  16. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/_unique_ql.py +0 -0
  17. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/_unique_response.py +0 -0
  18. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/_util.py +0 -0
  19. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/_version.py +0 -0
  20. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/_webhook.py +0 -0
  21. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/api_resources/__init__.py +0 -0
  22. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/api_resources/_acronyms.py +0 -0
  23. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/api_resources/_agentic_table.py +0 -0
  24. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/api_resources/_analytics_order.py +0 -0
  25. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/api_resources/_benchmarking.py +0 -0
  26. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/api_resources/_briefing.py +0 -0
  27. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/api_resources/_chat_completion.py +0 -0
  28. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/api_resources/_content.py +0 -0
  29. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/api_resources/_context_memory.py +0 -0
  30. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/api_resources/_elicitation.py +0 -0
  31. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/api_resources/_embedding.py +0 -0
  32. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/api_resources/_event.py +0 -0
  33. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/api_resources/_folder.py +0 -0
  34. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/api_resources/_group.py +0 -0
  35. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/api_resources/_integrated.py +0 -0
  36. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/api_resources/_llm_models.py +0 -0
  37. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/api_resources/_mcp.py +0 -0
  38. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/api_resources/_message.py +0 -0
  39. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/api_resources/_message_assessment.py +0 -0
  40. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/api_resources/_message_execution.py +0 -0
  41. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/api_resources/_message_log.py +0 -0
  42. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/api_resources/_message_tool.py +0 -0
  43. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/api_resources/_module.py +0 -0
  44. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/api_resources/_scheduled_task.py +0 -0
  45. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/api_resources/_search.py +0 -0
  46. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/api_resources/_search_string.py +0 -0
  47. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/api_resources/_short_term_memory.py +0 -0
  48. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/api_resources/_space.py +0 -0
  49. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/api_resources/_user.py +0 -0
  50. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/api_resources/_web_search.py +0 -0
  51. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/cli/__init__.py +0 -0
  52. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/cli/__main__.py +0 -0
  53. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/cli/commands/__init__.py +0 -0
  54. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/cli/commands/_citation_manifest.py +0 -0
  55. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/cli/commands/agentic_table.py +0 -0
  56. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/cli/commands/agentic_table_write.py +0 -0
  57. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/cli/commands/browser.py +0 -0
  58. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/cli/commands/cite_file.py +0 -0
  59. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/cli/commands/elicitation.py +0 -0
  60. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/cli/commands/files.py +0 -0
  61. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/cli/commands/mcp.py +0 -0
  62. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/cli/commands/navigation.py +0 -0
  63. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/cli/commands/read.py +0 -0
  64. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/cli/commands/scheduled_tasks.py +0 -0
  65. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/cli/commands/search.py +0 -0
  66. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/cli/commands/subagent.py +0 -0
  67. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/cli/commands/web_search.py +0 -0
  68. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/cli/commands/web_search_config.py +0 -0
  69. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/cli/config.py +0 -0
  70. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/cli/formatting.py +0 -0
  71. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/cli/identity.py +0 -0
  72. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/cli/metadata_filter.py +0 -0
  73. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/cli/shell.py +0 -0
  74. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/cli/skills/unique-cli-agentic-table/SKILL.md +0 -0
  75. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/cli/skills/unique-cli-elicitation/SKILL.md +0 -0
  76. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/cli/skills/unique-cli-file-management/SKILL.md +0 -0
  77. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/cli/skills/unique-cli-mcp/SKILL.md +0 -0
  78. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/cli/skills/unique-cli-scheduled-tasks/SKILL.md +0 -0
  79. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/cli/skills/unique-cli-search/SKILL.md +0 -0
  80. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/cli/skills/unique-cli-subagent/SKILL.md +0 -0
  81. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/cli/skills/unique-cli-uploaded-search/SKILL.md +0 -0
  82. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/cli/skills/unique-cli-web-search/SKILL.md +0 -0
  83. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/cli/state.py +0 -0
  84. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/cli/workspace.py +0 -0
  85. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/utils/analytics_order_run.py +0 -0
  86. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/utils/benchmarking_run.py +0 -0
  87. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/utils/chat_history.py +0 -0
  88. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/utils/chat_in_space.py +0 -0
  89. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/utils/file_io.py +0 -0
  90. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/unique_sdk/utils/sources.py +0 -0
  91. {unique_sdk-2026.44.0.dev0 → unique_sdk-2026.44.0.dev1}/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.44.0.dev0
3
+ Version: 2026.44.0.dev1
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.44.0.dev0"
3
+ version = "2026.44.0.dev1"
4
4
  description = ""
5
5
  readme = "README.md"
6
6
  license = { text = "MIT" }
@@ -59,6 +59,9 @@ from unique_sdk.cli.commands.files import (
59
59
  is_permission_denied_output as _is_permission_denied_output,
60
60
  )
61
61
  from unique_sdk.cli.commands.folders import cmd_mkdir, cmd_mvdir, cmd_rmdir
62
+ from unique_sdk.cli.commands.folders import (
63
+ is_mkdir_error_output as _is_mkdir_error_output,
64
+ )
62
65
  from unique_sdk.cli.commands.mcp import cmd_mcp
63
66
  from unique_sdk.cli.commands.navigation import cmd_cd, cmd_ls, cmd_pwd
64
67
  from unique_sdk.cli.commands.read import cmd_read
@@ -335,7 +338,7 @@ def mkdir(ctx: click.Context, name: str) -> None:
335
338
  unique-cli mkdir "2025/Q1"
336
339
  """
337
340
  output = cmd_mkdir(LazyState.get(ctx), name)
338
- emit(output)
341
+ emit(output, is_error=_is_mkdir_error_output)
339
342
 
340
343
 
341
344
  @main.command()
@@ -53,7 +53,8 @@ def cmd_mkdir(state: ShellState, name: str) -> str:
53
53
  # Resolve the destination (collapsing any `..`) and gate the *path*, not
54
54
  # just the current scope id: `mkdir ../../Other/X` would otherwise pass a
55
55
  # cwd-only check and create structure outside the per-message task scope.
56
- full_path = os.path.normpath(f"{state.cwd.rstrip('/')}/{name}")
56
+ path = name if name.startswith("/") else f"{state.cwd.rstrip('/')}/{name}"
57
+ full_path = os.path.normpath(path)
57
58
  if not state.folder_path_allowed_by_metadata_filter(full_path):
58
59
  return (
59
60
  "mkdir: permission denied: destination is outside your task scope "
@@ -74,6 +75,15 @@ def cmd_mkdir(state: ShellState, name: str) -> str:
74
75
  return f"mkdir: {e}"
75
76
 
76
77
 
78
+ def is_mkdir_error_output(output: str) -> bool:
79
+ """Return True when *output* is a ``cmd_mkdir`` error.
80
+
81
+ Success text is ``Created: ...``. Scope denials and API failures both
82
+ start with ``mkdir:`` and must exit non-zero from the one-shot CLI.
83
+ """
84
+ return output.startswith("mkdir:")
85
+
86
+
77
87
  def cmd_rmdir(state: ShellState, target: str, recursive: bool = False) -> str:
78
88
  """Delete a folder by path or scope ID."""
79
89
  # An active per-message filter replaces the static scopeIds, so skip the