unique-sdk 2026.26.0.dev14__tar.gz → 2026.26.0.dev15__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.dev14 → unique_sdk-2026.26.0.dev15}/PKG-INFO +1 -1
  2. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/pyproject.toml +1 -1
  3. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/api_resources/_dynamic_frontend.py +1 -0
  4. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/cli/commands/dynamic_frontend.py +11 -1
  5. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/cli/skills/unique-cli-dynamic-frontend/SKILL.md +29 -7
  6. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/README.md +0 -0
  7. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/__init__.py +0 -0
  8. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/_api_requestor.py +0 -0
  9. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/_api_resource.py +0 -0
  10. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/_api_version.py +0 -0
  11. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/_error.py +0 -0
  12. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/_http_client.py +0 -0
  13. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/_list_object.py +0 -0
  14. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/_object_classes.py +0 -0
  15. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/_request_options.py +0 -0
  16. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/_unique_object.py +0 -0
  17. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/_unique_ql.py +0 -0
  18. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/_unique_response.py +0 -0
  19. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/_util.py +0 -0
  20. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/_version.py +0 -0
  21. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/_webhook.py +0 -0
  22. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/api_resources/__init__.py +0 -0
  23. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/api_resources/_acronyms.py +0 -0
  24. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/api_resources/_agentic_table.py +0 -0
  25. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/api_resources/_analytics_order.py +0 -0
  26. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/api_resources/_benchmarking.py +0 -0
  27. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/api_resources/_briefing.py +0 -0
  28. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/api_resources/_chat_completion.py +0 -0
  29. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/api_resources/_content.py +0 -0
  30. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/api_resources/_elicitation.py +0 -0
  31. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/api_resources/_embedding.py +0 -0
  32. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/api_resources/_event.py +0 -0
  33. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/api_resources/_folder.py +0 -0
  34. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/api_resources/_group.py +0 -0
  35. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/api_resources/_integrated.py +0 -0
  36. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/api_resources/_llm_models.py +0 -0
  37. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/api_resources/_mcp.py +0 -0
  38. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/api_resources/_message.py +0 -0
  39. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/api_resources/_message_assessment.py +0 -0
  40. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/api_resources/_message_execution.py +0 -0
  41. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/api_resources/_message_log.py +0 -0
  42. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/api_resources/_message_tool.py +0 -0
  43. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/api_resources/_module.py +0 -0
  44. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/api_resources/_scheduled_task.py +0 -0
  45. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/api_resources/_search.py +0 -0
  46. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/api_resources/_search_string.py +0 -0
  47. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/api_resources/_short_term_memory.py +0 -0
  48. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/api_resources/_space.py +0 -0
  49. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/api_resources/_user.py +0 -0
  50. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/api_resources/_web_search.py +0 -0
  51. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/cli/__init__.py +0 -0
  52. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/cli/__main__.py +0 -0
  53. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/cli/cli.py +0 -0
  54. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/cli/commands/__init__.py +0 -0
  55. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/cli/commands/_citation_manifest.py +0 -0
  56. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/cli/commands/cite_file.py +0 -0
  57. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/cli/commands/elicitation.py +0 -0
  58. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/cli/commands/files.py +0 -0
  59. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/cli/commands/folders.py +0 -0
  60. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/cli/commands/mcp.py +0 -0
  61. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/cli/commands/navigation.py +0 -0
  62. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/cli/commands/read.py +0 -0
  63. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/cli/commands/scheduled_tasks.py +0 -0
  64. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/cli/commands/search.py +0 -0
  65. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/cli/commands/subagent.py +0 -0
  66. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/cli/commands/web_search.py +0 -0
  67. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/cli/commands/web_search_config.py +0 -0
  68. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/cli/config.py +0 -0
  69. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/cli/formatting.py +0 -0
  70. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/cli/shell.py +0 -0
  71. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/cli/skills/unique-cli-elicitation/SKILL.md +0 -0
  72. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/cli/skills/unique-cli-file-management/SKILL.md +0 -0
  73. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/cli/skills/unique-cli-mcp/SKILL.md +0 -0
  74. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/cli/skills/unique-cli-scheduled-tasks/SKILL.md +0 -0
  75. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/cli/skills/unique-cli-search/SKILL.md +0 -0
  76. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/cli/skills/unique-cli-subagent/SKILL.md +0 -0
  77. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/cli/skills/unique-cli-web-search/SKILL.md +0 -0
  78. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/cli/state.py +0 -0
  79. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/utils/analytics_order_run.py +0 -0
  80. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/utils/benchmarking_run.py +0 -0
  81. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/utils/chat_history.py +0 -0
  82. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/utils/chat_in_space.py +0 -0
  83. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/utils/file_io.py +0 -0
  84. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/unique_sdk/utils/sources.py +0 -0
  85. {unique_sdk-2026.26.0.dev14 → unique_sdk-2026.26.0.dev15}/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.dev14
3
+ Version: 2026.26.0.dev15
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.dev14"
3
+ version = "2026.26.0.dev15"
4
4
  description = ""
5
5
  readme = "README.md"
6
6
  license = { text = "MIT" }
@@ -17,6 +17,7 @@ class DynamicFrontend(APIResource["DynamicFrontend"]):
17
17
  name: str
18
18
  contentId: str
19
19
  url: str | None
20
+ configUrl: str | None
20
21
  status: dict[str, object] | None
21
22
 
22
23
  class CreateParams(RequestOptions):
@@ -37,11 +37,14 @@ def _format_space(space: object) -> str:
37
37
  status = getattr(space, "status", None)
38
38
  phase = ""
39
39
  url = str(getattr(space, "url", "") or "")
40
+ config_url = str(getattr(space, "configUrl", "") or "")
40
41
  if isinstance(status, dict):
41
42
  phase = str(status.get("phase") or "")
42
43
  url = url or str(status.get("url") or "")
43
44
  return "\t".join(
44
- part for part in [str(space_id), str(name), str(content_id), phase, url] if part
45
+ part
46
+ for part in [str(space_id), str(name), str(content_id), phase, url, config_url]
47
+ if part
45
48
  )
46
49
 
47
50
 
@@ -94,13 +97,20 @@ def cmd_dynamic_frontend_deploy(
94
97
  space_id_value = getattr(space, "spaceId", None) or getattr(space, "id", "")
95
98
  name_value = getattr(space, "name", name or "")
96
99
  url_value = getattr(space, "url", None)
100
+ config_url_value = getattr(space, "configUrl", None)
97
101
  url_line = (
98
102
  f"\nURL: {url_value}" if isinstance(url_value, str) and url_value else ""
99
103
  )
104
+ config_url_line = (
105
+ f"\nConfig URL: {config_url_value}"
106
+ if isinstance(config_url_value, str) and config_url_value
107
+ else ""
108
+ )
100
109
  return (
101
110
  f'{action} Dynamic Frontend space "{name_value}" ({space_id_value})\n'
102
111
  f"Content: {resolved_content_id}"
103
112
  f"{url_line}"
113
+ f"{config_url_line}"
104
114
  )
105
115
  except (ValueError, unique_sdk.APIError, OSError) as e:
106
116
  return f"dynamic-frontend deploy: {e}"
@@ -36,13 +36,32 @@ unique-cli dynamic-frontend deploy \
36
36
  --name "Revenue Dashboard"
37
37
  ```
38
38
 
39
- The command prints the created `spaceId`, `contentId`, and direct `URL` when the
40
- API returns it:
39
+ The command prints the created `spaceId`, `contentId`, and **two** URLs when the
40
+ API returns them — the user-facing view `URL` (jump into the Space in the chat
41
+ app) and the `Config URL` (configure and share the Space in the admin app):
41
42
 
42
43
  ```text
43
44
  Created Dynamic Frontend space "Revenue Dashboard" (space_abc123)
44
45
  Content: cont_abc123
45
- URL: https://chat.example.com/space/space_abc123
46
+ URL: https://next.qa.unique.app/chat/space/space_abc123
47
+ Config URL: https://next.qa.unique.app/admin/dynamic-frontend-space/space_abc123
48
+ ```
49
+
50
+ If the installed SDK/CLI version does not print one of these URLs yet, construct
51
+ it from the known frontend base URLs and `spaceId`:
52
+
53
+ ```text
54
+ # View URL (chat app)
55
+ <chat-frontend-url>/space/<spaceId>
56
+ # Config/share URL (admin app)
57
+ <admin-frontend-url>/dynamic-frontend-space/<spaceId>
58
+ ```
59
+
60
+ On QA, those are:
61
+
62
+ ```text
63
+ https://next.qa.unique.app/chat/space/<spaceId>
64
+ https://next.qa.unique.app/admin/dynamic-frontend-space/<spaceId>
46
65
  ```
47
66
 
48
67
  ## Update an Existing Space
@@ -76,8 +95,8 @@ unique-cli dynamic-frontend deploy \
76
95
  --name "Revenue Dashboard"
77
96
  ```
78
97
 
79
- The update command prints the same `spaceId`, `contentId`, and direct `URL`
80
- fields as create.
98
+ The update command prints the same `spaceId`, `contentId`, view `URL`, and
99
+ `Config URL` fields as create.
81
100
 
82
101
  ## List Spaces
83
102
 
@@ -101,5 +120,8 @@ unique-cli dynamic-frontend deploy --space-id space_abc123 --file ./app.zip --js
101
120
  - Use `--space-id` for updates. Without `--space-id`, `deploy` creates a new
102
121
  Dynamic Frontend Space and requires `--name`.
103
122
  - `--file` and `--content-id` are mutually exclusive.
104
- - After create or update, return the CLI output to the user, especially the
105
- direct `URL`.
123
+ - After create or update, return the CLI output to the user, especially both the
124
+ view `URL` (jump to the Space) and the `Config URL` (configure/share the Space).
125
+ - Never report the BYOC iframe runtime URL
126
+ (`https://byoc.../serve/df-assistant-...`) as the Space URL; it is an
127
+ internal iframe launch URL, not the navigation link users need.