unique-sdk 2026.26.0.dev12__tar.gz → 2026.26.0.dev14__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.26.0.dev12 → unique_sdk-2026.26.0.dev14}/PKG-INFO +1 -1
  2. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/pyproject.toml +1 -1
  3. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/api_resources/_content.py +1 -0
  4. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/api_resources/_dynamic_frontend.py +1 -0
  5. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/cli/commands/dynamic_frontend.py +7 -2
  6. unique_sdk-2026.26.0.dev14/unique_sdk/cli/skills/unique-cli-dynamic-frontend/SKILL.md +105 -0
  7. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/README.md +0 -0
  8. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/__init__.py +0 -0
  9. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/_api_requestor.py +0 -0
  10. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/_api_resource.py +0 -0
  11. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/_api_version.py +0 -0
  12. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/_error.py +0 -0
  13. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/_http_client.py +0 -0
  14. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/_list_object.py +0 -0
  15. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/_object_classes.py +0 -0
  16. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/_request_options.py +0 -0
  17. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/_unique_object.py +0 -0
  18. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/_unique_ql.py +0 -0
  19. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/_unique_response.py +0 -0
  20. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/_util.py +0 -0
  21. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/_version.py +0 -0
  22. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/_webhook.py +0 -0
  23. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/api_resources/__init__.py +0 -0
  24. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/api_resources/_acronyms.py +0 -0
  25. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/api_resources/_agentic_table.py +0 -0
  26. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/api_resources/_analytics_order.py +0 -0
  27. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/api_resources/_benchmarking.py +0 -0
  28. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/api_resources/_briefing.py +0 -0
  29. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/api_resources/_chat_completion.py +0 -0
  30. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/api_resources/_elicitation.py +0 -0
  31. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/api_resources/_embedding.py +0 -0
  32. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/api_resources/_event.py +0 -0
  33. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/api_resources/_folder.py +0 -0
  34. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/api_resources/_group.py +0 -0
  35. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/api_resources/_integrated.py +0 -0
  36. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/api_resources/_llm_models.py +0 -0
  37. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/api_resources/_mcp.py +0 -0
  38. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/api_resources/_message.py +0 -0
  39. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/api_resources/_message_assessment.py +0 -0
  40. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/api_resources/_message_execution.py +0 -0
  41. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/api_resources/_message_log.py +0 -0
  42. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/api_resources/_message_tool.py +0 -0
  43. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/api_resources/_module.py +0 -0
  44. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/api_resources/_scheduled_task.py +0 -0
  45. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/api_resources/_search.py +0 -0
  46. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/api_resources/_search_string.py +0 -0
  47. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/api_resources/_short_term_memory.py +0 -0
  48. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/api_resources/_space.py +0 -0
  49. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/api_resources/_user.py +0 -0
  50. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/api_resources/_web_search.py +0 -0
  51. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/cli/__init__.py +0 -0
  52. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/cli/__main__.py +0 -0
  53. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/cli/cli.py +0 -0
  54. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/cli/commands/__init__.py +0 -0
  55. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/cli/commands/_citation_manifest.py +0 -0
  56. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/cli/commands/cite_file.py +0 -0
  57. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/cli/commands/elicitation.py +0 -0
  58. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/cli/commands/files.py +0 -0
  59. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/cli/commands/folders.py +0 -0
  60. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/cli/commands/mcp.py +0 -0
  61. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/cli/commands/navigation.py +0 -0
  62. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/cli/commands/read.py +0 -0
  63. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/cli/commands/scheduled_tasks.py +0 -0
  64. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/cli/commands/search.py +0 -0
  65. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/cli/commands/subagent.py +0 -0
  66. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/cli/commands/web_search.py +0 -0
  67. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/cli/commands/web_search_config.py +0 -0
  68. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/cli/config.py +0 -0
  69. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/cli/formatting.py +0 -0
  70. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/cli/shell.py +0 -0
  71. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/cli/skills/unique-cli-elicitation/SKILL.md +0 -0
  72. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/cli/skills/unique-cli-file-management/SKILL.md +0 -0
  73. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/cli/skills/unique-cli-mcp/SKILL.md +0 -0
  74. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/cli/skills/unique-cli-scheduled-tasks/SKILL.md +0 -0
  75. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/cli/skills/unique-cli-search/SKILL.md +0 -0
  76. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/cli/skills/unique-cli-subagent/SKILL.md +0 -0
  77. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/cli/skills/unique-cli-web-search/SKILL.md +0 -0
  78. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/cli/state.py +0 -0
  79. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/utils/analytics_order_run.py +0 -0
  80. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/utils/benchmarking_run.py +0 -0
  81. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/utils/chat_history.py +0 -0
  82. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/utils/chat_in_space.py +0 -0
  83. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/utils/file_io.py +0 -0
  84. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/unique_sdk/utils/sources.py +0 -0
  85. {unique_sdk-2026.26.0.dev12 → unique_sdk-2026.26.0.dev14}/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.26.0.dev12
3
+ Version: 2026.26.0.dev14
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.26.0.dev12"
3
+ version = "2026.26.0.dev14"
4
4
  description = ""
5
5
  readme = "README.md"
6
6
  license = { text = "MIT" }
@@ -219,6 +219,7 @@ class Content(APIResource["Content"]):
219
219
  contentId: NotRequired[str]
220
220
  filePath: NotRequired[str]
221
221
  ownerId: NotRequired[str]
222
+ ownerType: NotRequired[Literal["CHAT"]]
222
223
  parentFolderPath: NotRequired[str]
223
224
  title: NotRequired[str]
224
225
  metadata: NotRequired[dict[str, str | None]]
@@ -16,6 +16,7 @@ class DynamicFrontend(APIResource["DynamicFrontend"]):
16
16
  spaceId: str
17
17
  name: str
18
18
  contentId: str
19
+ url: str | None
19
20
  status: dict[str, object] | None
20
21
 
21
22
  class CreateParams(RequestOptions):
@@ -36,10 +36,10 @@ def _format_space(space: object) -> str:
36
36
  content_id = getattr(space, "contentId", "")
37
37
  status = getattr(space, "status", None)
38
38
  phase = ""
39
- url = ""
39
+ url = str(getattr(space, "url", "") or "")
40
40
  if isinstance(status, dict):
41
41
  phase = str(status.get("phase") or "")
42
- url = str(status.get("url") or "")
42
+ url = url or str(status.get("url") or "")
43
43
  return "\t".join(
44
44
  part for part in [str(space_id), str(name), str(content_id), phase, url] if part
45
45
  )
@@ -93,9 +93,14 @@ def cmd_dynamic_frontend_deploy(
93
93
 
94
94
  space_id_value = getattr(space, "spaceId", None) or getattr(space, "id", "")
95
95
  name_value = getattr(space, "name", name or "")
96
+ url_value = getattr(space, "url", None)
97
+ url_line = (
98
+ f"\nURL: {url_value}" if isinstance(url_value, str) and url_value else ""
99
+ )
96
100
  return (
97
101
  f'{action} Dynamic Frontend space "{name_value}" ({space_id_value})\n'
98
102
  f"Content: {resolved_content_id}"
103
+ f"{url_line}"
99
104
  )
100
105
  except (ValueError, unique_sdk.APIError, OSError) as e:
101
106
  return f"dynamic-frontend deploy: {e}"
@@ -0,0 +1,105 @@
1
+ ---
2
+ name: unique-cli-dynamic-frontend
3
+ description: >-
4
+ Create, update, and list Unique Dynamic Frontend Spaces using the
5
+ `unique-cli dynamic-frontend` command. Use when deploying a generated
6
+ Dynamic Frontend ZIP, updating an existing Dynamic Frontend Space bundle,
7
+ listing manageable Dynamic Frontend Spaces, or when the user mentions
8
+ Dynamic Frontend Space deployment through the CLI.
9
+ ---
10
+
11
+ # Unique CLI -- Dynamic Frontend Spaces
12
+
13
+ Use `unique-cli dynamic-frontend` to create or update Dynamic Frontend Spaces
14
+ from upload-ready ZIP bundles or existing Knowledge Base content IDs.
15
+
16
+ The CLI is installed via `pip install unique-sdk` and uses the same
17
+ `UNIQUE_USER_ID`, `UNIQUE_COMPANY_ID`, `UNIQUE_API_KEY`, `UNIQUE_APP_ID`, and
18
+ `UNIQUE_API_BASE` environment variables as the rest of `unique-cli`.
19
+
20
+ ## Create a New Space
21
+
22
+ To upload a ZIP and create a new Dynamic Frontend Space:
23
+
24
+ ```bash
25
+ unique-cli cd /Apps
26
+ unique-cli dynamic-frontend deploy \
27
+ --file ./revenue-dashboard.zip \
28
+ --name "Revenue Dashboard"
29
+ ```
30
+
31
+ To create from an already uploaded KB content ID:
32
+
33
+ ```bash
34
+ unique-cli dynamic-frontend deploy \
35
+ --content-id cont_abc123 \
36
+ --name "Revenue Dashboard"
37
+ ```
38
+
39
+ The command prints the created `spaceId`, `contentId`, and direct `URL` when the
40
+ API returns it:
41
+
42
+ ```text
43
+ Created Dynamic Frontend space "Revenue Dashboard" (space_abc123)
44
+ Content: cont_abc123
45
+ URL: https://chat.example.com/space/space_abc123
46
+ ```
47
+
48
+ ## Update an Existing Space
49
+
50
+ Use `--space-id` to update an existing Dynamic Frontend Space instead of
51
+ creating a new one.
52
+
53
+ Upload a new ZIP and point the existing Space at it:
54
+
55
+ ```bash
56
+ unique-cli cd /Apps
57
+ unique-cli dynamic-frontend deploy \
58
+ --space-id space_abc123 \
59
+ --file ./revenue-dashboard-1.0.1.zip
60
+ ```
61
+
62
+ Update from an already uploaded KB content ID:
63
+
64
+ ```bash
65
+ unique-cli dynamic-frontend deploy \
66
+ --space-id space_abc123 \
67
+ --content-id cont_newbundle123
68
+ ```
69
+
70
+ Rename while updating the bundle:
71
+
72
+ ```bash
73
+ unique-cli dynamic-frontend deploy \
74
+ --space-id space_abc123 \
75
+ --file ./revenue-dashboard-1.0.1.zip \
76
+ --name "Revenue Dashboard"
77
+ ```
78
+
79
+ The update command prints the same `spaceId`, `contentId`, and direct `URL`
80
+ fields as create.
81
+
82
+ ## List Spaces
83
+
84
+ List Dynamic Frontend Spaces the current user can manage:
85
+
86
+ ```bash
87
+ unique-cli dynamic-frontend list
88
+ ```
89
+
90
+ Use JSON output for scripts:
91
+
92
+ ```bash
93
+ unique-cli dynamic-frontend list --json
94
+ unique-cli dynamic-frontend deploy --space-id space_abc123 --file ./app.zip --json
95
+ ```
96
+
97
+ ## Rules
98
+
99
+ - For `--file`, first `unique-cli cd` into the KB folder where the ZIP should be
100
+ uploaded; uploading to root is rejected.
101
+ - Use `--space-id` for updates. Without `--space-id`, `deploy` creates a new
102
+ Dynamic Frontend Space and requires `--name`.
103
+ - `--file` and `--content-id` are mutually exclusive.
104
+ - After create or update, return the CLI output to the user, especially the
105
+ direct `URL`.