unique_sdk 0.10.25__py3-none-any.whl → 0.10.26__py3-none-any.whl
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/api_resources/_content.py +21 -15
- unique_sdk/api_resources/_folder.py +24 -20
- unique_sdk/api_resources/_message_execution.py +6 -6
- unique_sdk/api_resources/_message_log.py +9 -9
- unique_sdk/api_resources/_space.py +16 -5
- unique_sdk/utils/chat_in_space.py +3 -3
- unique_sdk/utils/file_io.py +5 -1
- {unique_sdk-0.10.25.dist-info → unique_sdk-0.10.26.dist-info}/METADATA +4 -1
- {unique_sdk-0.10.25.dist-info → unique_sdk-0.10.26.dist-info}/RECORD +11 -11
- {unique_sdk-0.10.25.dist-info → unique_sdk-0.10.26.dist-info}/LICENSE +0 -0
- {unique_sdk-0.10.25.dist-info → unique_sdk-0.10.26.dist-info}/WHEEL +0 -0
|
@@ -73,7 +73,7 @@ class Content(APIResource["Content"]):
|
|
|
73
73
|
|
|
74
74
|
class SearchParams(RequestOptions):
|
|
75
75
|
where: "Content.ContentWhereInput"
|
|
76
|
-
chatId: NotRequired[str]
|
|
76
|
+
chatId: NotRequired[str | None]
|
|
77
77
|
includeFailedContent: NotRequired[bool]
|
|
78
78
|
|
|
79
79
|
class ContentInfoParams(TypedDict):
|
|
@@ -82,10 +82,10 @@ class Content(APIResource["Content"]):
|
|
|
82
82
|
This is used to retrieve information about content based on various filters.
|
|
83
83
|
"""
|
|
84
84
|
|
|
85
|
-
metadataFilter: NotRequired[dict]
|
|
86
|
-
skip: NotRequired[int]
|
|
87
|
-
take: NotRequired[int]
|
|
88
|
-
filePath: NotRequired[str]
|
|
85
|
+
metadataFilter: NotRequired[dict[str, Any] | None]
|
|
86
|
+
skip: NotRequired[int | None]
|
|
87
|
+
take: NotRequired[int | None]
|
|
88
|
+
filePath: NotRequired[str | None]
|
|
89
89
|
|
|
90
90
|
class CustomApiOptions(TypedDict):
|
|
91
91
|
apiIdentifier: str
|
|
@@ -114,19 +114,19 @@ class Content(APIResource["Content"]):
|
|
|
114
114
|
key: str
|
|
115
115
|
title: Optional[str]
|
|
116
116
|
mimeType: str
|
|
117
|
-
ownerType: str
|
|
118
|
-
ownerId: str
|
|
119
|
-
byteSize:
|
|
120
|
-
ingestionConfig: "Content.IngestionConfig"
|
|
121
|
-
metadata: NotRequired[dict[str,
|
|
117
|
+
ownerType: NotRequired[str | None]
|
|
118
|
+
ownerId: NotRequired[str | None]
|
|
119
|
+
byteSize: NotRequired[int | None]
|
|
120
|
+
ingestionConfig: NotRequired["Content.IngestionConfig | None"]
|
|
121
|
+
metadata: NotRequired[dict[str, Any] | None]
|
|
122
122
|
|
|
123
123
|
class UpsertParams(RequestOptions):
|
|
124
124
|
input: "Content.Input"
|
|
125
|
-
scopeId:
|
|
126
|
-
chatId:
|
|
127
|
-
sourceOwnerType: str
|
|
128
|
-
storeInternally: bool
|
|
129
|
-
fileUrl:
|
|
125
|
+
scopeId: NotRequired[str | None]
|
|
126
|
+
chatId: NotRequired[str | None]
|
|
127
|
+
sourceOwnerType: NotRequired[str | None]
|
|
128
|
+
storeInternally: NotRequired[bool | None]
|
|
129
|
+
fileUrl: NotRequired[str | None]
|
|
130
130
|
|
|
131
131
|
class UpdateParams(RequestOptions):
|
|
132
132
|
contentId: NotRequired[str]
|
|
@@ -186,6 +186,8 @@ class Content(APIResource["Content"]):
|
|
|
186
186
|
updatedAt: str
|
|
187
187
|
chunks: List[Chunk]
|
|
188
188
|
metadata: Optional[Dict[str, Any]]
|
|
189
|
+
writeUrl: str
|
|
190
|
+
readUrl: str
|
|
189
191
|
|
|
190
192
|
class MagicTableSheetTableColumn(TypedDict):
|
|
191
193
|
columnId: str
|
|
@@ -547,6 +549,10 @@ class Content(APIResource["Content"]):
|
|
|
547
549
|
"""
|
|
548
550
|
Returns the contentId to use: if content_id is provided, returns it;
|
|
549
551
|
if not, but file_path is provided, resolves and returns the id for that file path.
|
|
552
|
+
|
|
553
|
+
Returns:
|
|
554
|
+
str: The resolved content ID.
|
|
555
|
+
None: Failed to resolve a content ID (e.g., file_path not found or not provided).
|
|
550
556
|
"""
|
|
551
557
|
if content_id:
|
|
552
558
|
return content_id
|
|
@@ -44,19 +44,19 @@ class Folder(APIResource["Folder"]):
|
|
|
44
44
|
languageModel: str | None
|
|
45
45
|
|
|
46
46
|
class IngestionConfig(TypedDict):
|
|
47
|
-
chunkMaxTokens: int | None
|
|
48
|
-
chunkMaxTokensOnePager: int | None
|
|
49
|
-
chunkMinTokens: int | None
|
|
50
|
-
chunkStrategy: str | None
|
|
51
|
-
customApiOptions: List["Folder.CustomApiOptions"] | None
|
|
52
|
-
documentMinTokens: int | None
|
|
53
|
-
excelReadMode: str | None
|
|
54
|
-
jpgReadMode: str | None
|
|
55
|
-
pdfReadMode: str | None
|
|
56
|
-
pptReadMode: str | None
|
|
47
|
+
chunkMaxTokens: NotRequired[int | None]
|
|
48
|
+
chunkMaxTokensOnePager: NotRequired[int | None]
|
|
49
|
+
chunkMinTokens: NotRequired[int | None]
|
|
50
|
+
chunkStrategy: NotRequired[str | None]
|
|
51
|
+
customApiOptions: NotRequired[List["Folder.CustomApiOptions"] | None]
|
|
52
|
+
documentMinTokens: NotRequired[int | None]
|
|
53
|
+
excelReadMode: NotRequired[str | None]
|
|
54
|
+
jpgReadMode: NotRequired[str | None]
|
|
55
|
+
pdfReadMode: NotRequired[str | None]
|
|
56
|
+
pptReadMode: NotRequired[str | None]
|
|
57
57
|
uniqueIngestionMode: str
|
|
58
|
-
vttConfig:
|
|
59
|
-
wordReadMode: str | None
|
|
58
|
+
vttConfig: NotRequired["Folder.VttConfig | None"]
|
|
59
|
+
wordReadMode: NotRequired[str | None]
|
|
60
60
|
|
|
61
61
|
class CreatedFolder(TypedDict):
|
|
62
62
|
id: str
|
|
@@ -93,8 +93,8 @@ class Folder(APIResource["Folder"]):
|
|
|
93
93
|
Parameters for updating folder ingestion config.
|
|
94
94
|
"""
|
|
95
95
|
|
|
96
|
-
scopeId: str | None
|
|
97
|
-
folderPath: str | None
|
|
96
|
+
scopeId: NotRequired[str | None]
|
|
97
|
+
folderPath: NotRequired[str | None]
|
|
98
98
|
ingestionConfig: "Folder.IngestionConfig"
|
|
99
99
|
applyToSubScopes: bool
|
|
100
100
|
|
|
@@ -103,8 +103,8 @@ class Folder(APIResource["Folder"]):
|
|
|
103
103
|
Parameters for adding access to a folder.
|
|
104
104
|
"""
|
|
105
105
|
|
|
106
|
-
scopeId: str | None
|
|
107
|
-
folderPath: str | None
|
|
106
|
+
scopeId: NotRequired[str | None]
|
|
107
|
+
folderPath: NotRequired[str | None]
|
|
108
108
|
scopeAccesses: List["Folder.ScopeAccess"]
|
|
109
109
|
applyToSubScopes: bool
|
|
110
110
|
|
|
@@ -113,8 +113,8 @@ class Folder(APIResource["Folder"]):
|
|
|
113
113
|
Parameters for removing access from a folder.
|
|
114
114
|
"""
|
|
115
115
|
|
|
116
|
-
scopeId: str | None
|
|
117
|
-
folderPath: str | None
|
|
116
|
+
scopeId: NotRequired[str | None]
|
|
117
|
+
folderPath: NotRequired[str | None]
|
|
118
118
|
scopeAccesses: List["Folder.ScopeAccess"]
|
|
119
119
|
applyToSubScopes: bool
|
|
120
120
|
|
|
@@ -250,7 +250,7 @@ class Folder(APIResource["Folder"]):
|
|
|
250
250
|
cls, user_id: str, company_id: str, **params: Unpack["Folder.CreateParams"]
|
|
251
251
|
) -> "Folder.CreateFolderStructureResponse":
|
|
252
252
|
return cast(
|
|
253
|
-
"Folder",
|
|
253
|
+
"Folder.CreateFolderStructureResponse",
|
|
254
254
|
cls._static_request(
|
|
255
255
|
"post",
|
|
256
256
|
cls.RESOURCE_URL,
|
|
@@ -265,7 +265,7 @@ class Folder(APIResource["Folder"]):
|
|
|
265
265
|
cls, user_id: str, company_id: str, **params: Unpack["Folder.CreateParams"]
|
|
266
266
|
) -> "Folder.CreateFolderStructureResponse":
|
|
267
267
|
return cast(
|
|
268
|
-
"Folder",
|
|
268
|
+
"Folder.CreateFolderStructureResponse",
|
|
269
269
|
await cls._static_request_async(
|
|
270
270
|
"post",
|
|
271
271
|
cls.RESOURCE_URL,
|
|
@@ -545,6 +545,10 @@ class Folder(APIResource["Folder"]):
|
|
|
545
545
|
"""
|
|
546
546
|
Returns the scopeId to use: if scope_id is provided, returns it;
|
|
547
547
|
if not, but folder_path is provided, resolves and returns the id for that folder path.
|
|
548
|
+
|
|
549
|
+
Returns:
|
|
550
|
+
str: The resolved folder ID.
|
|
551
|
+
None: Failed to resolve a folder ID (e.g., folder_path not found or not provided).
|
|
548
552
|
"""
|
|
549
553
|
if scope_id:
|
|
550
554
|
return scope_id
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import ClassVar, Literal, Unpack, cast
|
|
1
|
+
from typing import ClassVar, Literal, NotRequired, Unpack, cast
|
|
2
2
|
|
|
3
3
|
from unique_sdk._api_resource import APIResource
|
|
4
4
|
from unique_sdk._request_options import RequestOptions
|
|
@@ -15,9 +15,9 @@ class MessageExecution(APIResource["MessageExecution"]):
|
|
|
15
15
|
|
|
16
16
|
messageId: str
|
|
17
17
|
chatId: str
|
|
18
|
-
type: Literal["DEEP_RESEARCH"]
|
|
19
|
-
secondsRemaining: int | None
|
|
20
|
-
percentageCompleted: int | None
|
|
18
|
+
type: Literal["DEEP_RESEARCH"]
|
|
19
|
+
secondsRemaining: NotRequired[int | None]
|
|
20
|
+
percentageCompleted: NotRequired[int | None]
|
|
21
21
|
|
|
22
22
|
class GetMessageExecutionParams(RequestOptions):
|
|
23
23
|
"""
|
|
@@ -33,8 +33,8 @@ class MessageExecution(APIResource["MessageExecution"]):
|
|
|
33
33
|
|
|
34
34
|
messageId: str
|
|
35
35
|
status: Literal["COMPLETED", "FAILED"]
|
|
36
|
-
secondsRemaining: int | None
|
|
37
|
-
percentageCompleted: int | None
|
|
36
|
+
secondsRemaining: NotRequired[int | None]
|
|
37
|
+
percentageCompleted: NotRequired[int | None]
|
|
38
38
|
|
|
39
39
|
messageExecutionId: str | None
|
|
40
40
|
messageId: str | None
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import ClassVar, Literal, TypedDict, Unpack, cast
|
|
1
|
+
from typing import ClassVar, Literal, NotRequired, TypedDict, Unpack, cast
|
|
2
2
|
|
|
3
3
|
from unique_sdk._api_resource import APIResource
|
|
4
4
|
from unique_sdk._request_options import RequestOptions
|
|
@@ -25,21 +25,21 @@ class MessageLog(APIResource["MessageLog"]):
|
|
|
25
25
|
text: str
|
|
26
26
|
status: Literal["RUNNING", "COMPLETED", "FAILED"]
|
|
27
27
|
order: int
|
|
28
|
-
details: dict | None
|
|
29
|
-
uncitedReferences: dict | None
|
|
30
|
-
references: list["MessageLog.Reference"] | None
|
|
28
|
+
details: NotRequired[dict | None]
|
|
29
|
+
uncitedReferences: NotRequired[dict | None]
|
|
30
|
+
references: NotRequired[list["MessageLog.Reference"] | None]
|
|
31
31
|
|
|
32
32
|
class UpdateMessageLogParams(RequestOptions):
|
|
33
33
|
"""
|
|
34
34
|
Parameters for updating a message log.
|
|
35
35
|
"""
|
|
36
36
|
|
|
37
|
-
text: str | None
|
|
38
|
-
status: Literal["RUNNING", "COMPLETED", "FAILED"] | None
|
|
37
|
+
text: NotRequired[str | None]
|
|
38
|
+
status: NotRequired[Literal["RUNNING", "COMPLETED", "FAILED"] | None]
|
|
39
39
|
order: int
|
|
40
|
-
details: dict | None
|
|
41
|
-
uncitedReferences: dict | None
|
|
42
|
-
references: list["MessageLog.Reference"] | None
|
|
40
|
+
details: NotRequired[dict | None]
|
|
41
|
+
uncitedReferences: NotRequired[dict | None]
|
|
42
|
+
references: NotRequired[list["MessageLog.Reference"] | None]
|
|
43
43
|
|
|
44
44
|
messageLogId: str | None
|
|
45
45
|
messageId: str | None
|
|
@@ -1,4 +1,15 @@
|
|
|
1
|
-
from typing import
|
|
1
|
+
from typing import (
|
|
2
|
+
Any,
|
|
3
|
+
ClassVar,
|
|
4
|
+
Dict,
|
|
5
|
+
List,
|
|
6
|
+
Literal,
|
|
7
|
+
NotRequired,
|
|
8
|
+
Optional,
|
|
9
|
+
TypedDict,
|
|
10
|
+
Unpack,
|
|
11
|
+
cast,
|
|
12
|
+
)
|
|
2
13
|
|
|
3
14
|
from unique_sdk._api_resource import APIResource
|
|
4
15
|
from unique_sdk._request_options import RequestOptions
|
|
@@ -12,11 +23,11 @@ class Space(APIResource["Space"]):
|
|
|
12
23
|
Parameters for querying the assistant for a message.
|
|
13
24
|
"""
|
|
14
25
|
|
|
15
|
-
chatId: str | None
|
|
26
|
+
chatId: NotRequired[str | None]
|
|
16
27
|
assistantId: str
|
|
17
|
-
text: str | None
|
|
18
|
-
toolChoices: List[str]
|
|
19
|
-
scopeRules: dict | None
|
|
28
|
+
text: NotRequired[str | None]
|
|
29
|
+
toolChoices: NotRequired[List[str] | None]
|
|
30
|
+
scopeRules: NotRequired[dict | None]
|
|
20
31
|
|
|
21
32
|
class Reference(TypedDict):
|
|
22
33
|
"""
|
|
@@ -12,9 +12,9 @@ async def send_message_and_wait_for_completion(
|
|
|
12
12
|
company_id: str,
|
|
13
13
|
assistant_id: str,
|
|
14
14
|
text: str,
|
|
15
|
-
tool_choices: List[str] = None,
|
|
15
|
+
tool_choices: List[str] | None = None,
|
|
16
16
|
scope_rules: dict | None = None,
|
|
17
|
-
chat_id: str = None,
|
|
17
|
+
chat_id: str | None = None,
|
|
18
18
|
poll_interval: float = 1.0,
|
|
19
19
|
max_wait: float = 60.0,
|
|
20
20
|
stop_condition: Literal["stoppedStreamingAt", "completedAt"] = "stoppedStreamingAt",
|
|
@@ -152,7 +152,7 @@ async def wait_for_ingestion_completion(
|
|
|
152
152
|
user_id: str,
|
|
153
153
|
company_id: str,
|
|
154
154
|
content_id: str,
|
|
155
|
-
chat_id: str = None,
|
|
155
|
+
chat_id: str | None = None,
|
|
156
156
|
poll_interval: float = 1.0,
|
|
157
157
|
max_wait: float = 60.0,
|
|
158
158
|
):
|
unique_sdk/utils/file_io.py
CHANGED
|
@@ -110,7 +110,11 @@ def upload_file(
|
|
|
110
110
|
|
|
111
111
|
|
|
112
112
|
def download_content(
|
|
113
|
-
companyId: str,
|
|
113
|
+
companyId: str,
|
|
114
|
+
userId: str,
|
|
115
|
+
content_id: str,
|
|
116
|
+
filename: str,
|
|
117
|
+
chat_id: str | None = None,
|
|
114
118
|
):
|
|
115
119
|
# Ensure the URL is a valid string
|
|
116
120
|
if not isinstance(content_id, str):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: unique_sdk
|
|
3
|
-
Version: 0.10.
|
|
3
|
+
Version: 0.10.26
|
|
4
4
|
Summary:
|
|
5
5
|
License: MIT
|
|
6
6
|
Author: Martin Fadler
|
|
@@ -1662,6 +1662,9 @@ All notable changes to this project will be documented in this file.
|
|
|
1662
1662
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
1663
1663
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
1664
1664
|
|
|
1665
|
+
## [0.10.26] - 2025-09-22
|
|
1666
|
+
- Improve typing.
|
|
1667
|
+
|
|
1665
1668
|
## [0.10.25] - 2025-09-18
|
|
1666
1669
|
- Add support for udpate and delete files by file or folder path.
|
|
1667
1670
|
|
|
@@ -17,26 +17,26 @@ unique_sdk/api_resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZ
|
|
|
17
17
|
unique_sdk/api_resources/_acronyms.py,sha256=GIU1XH1flGWQYcpsFqTYwg4ioIGxVmb15tux84nmhEg,891
|
|
18
18
|
unique_sdk/api_resources/_agentic_table.py,sha256=8-_f7t-m_iiiOj2835iESoxz91YRxl4-tkxpzQbgdcI,9958
|
|
19
19
|
unique_sdk/api_resources/_chat_completion.py,sha256=ILCAffxkbkfh2iV9L4KKnfe80gZmT9pWfkNmf3mq68U,2172
|
|
20
|
-
unique_sdk/api_resources/_content.py,sha256=
|
|
20
|
+
unique_sdk/api_resources/_content.py,sha256=XKIm5F6MnFGa0B8aTc4okFfBtAJAqtUmKB8-1tXLmrM,16651
|
|
21
21
|
unique_sdk/api_resources/_embedding.py,sha256=C6qak7cCUBMBINfPhgH8taCJZ9n6w1MUElqDJJ8dG10,1281
|
|
22
22
|
unique_sdk/api_resources/_event.py,sha256=bpWF9vstdoAWbUzr-iiGP713ceP0zPk77GJXiImf9zg,374
|
|
23
|
-
unique_sdk/api_resources/_folder.py,sha256=
|
|
23
|
+
unique_sdk/api_resources/_folder.py,sha256=mEKN3llhgi2Zyg-aVyz_LUU55V5ZGOKhgKytlyxBVF8,15679
|
|
24
24
|
unique_sdk/api_resources/_integrated.py,sha256=O8e673z-RB7FRFMQYn_YEuHijebr5W7KJxkUnymbBZk,6164
|
|
25
25
|
unique_sdk/api_resources/_mcp.py,sha256=zKh0dyn0QnkKk57N2zlGVN_GQoxEp5T2CS38vVm6jQY,3341
|
|
26
26
|
unique_sdk/api_resources/_message.py,sha256=gEDIzg3METZU2k7m69meAuf0IWmZxnYOjbBKPRMwPYE,7688
|
|
27
27
|
unique_sdk/api_resources/_message_assessment.py,sha256=SSfx6eW7zb_GKe8cFJzCqW-t-_eWEXxKP5cnIb0DhIc,2276
|
|
28
|
-
unique_sdk/api_resources/_message_execution.py,sha256=
|
|
29
|
-
unique_sdk/api_resources/_message_log.py,sha256=
|
|
28
|
+
unique_sdk/api_resources/_message_execution.py,sha256=qQH9NS8sdWLr55Yzc8pvPpYdfpewtSh6fy2alJjEoZk,4444
|
|
29
|
+
unique_sdk/api_resources/_message_log.py,sha256=gV8hhzR_fgS28Ofpir6BjzuSyH6hXZgm8Pt3u0Onv2M,3658
|
|
30
30
|
unique_sdk/api_resources/_search.py,sha256=GQItZKoGNOVZfkLLltBmsRZYBIreRKU0lGW8Kgpj1_Q,1959
|
|
31
31
|
unique_sdk/api_resources/_search_string.py,sha256=4Idw6exgZdA8qksz9WkiA68k1hTU-7yFkgT_OLU_GkE,1662
|
|
32
32
|
unique_sdk/api_resources/_short_term_memory.py,sha256=vPRN-Y0WPx74E6y-A3LocGc0TxJdzT-xGL66WzZwKRg,2820
|
|
33
|
-
unique_sdk/api_resources/_space.py,sha256=
|
|
33
|
+
unique_sdk/api_resources/_space.py,sha256=Z84k8blttHS5OjHIahZdddTL-HvYZGBolfCANwETaDE,4994
|
|
34
34
|
unique_sdk/utils/chat_history.py,sha256=5UqL9hF1O9pV7skbNOlEibF5rHdYsmG3m5-YEPUowOs,3037
|
|
35
|
-
unique_sdk/utils/chat_in_space.py,sha256=
|
|
36
|
-
unique_sdk/utils/file_io.py,sha256=
|
|
35
|
+
unique_sdk/utils/chat_in_space.py,sha256=CsrGGDRR-OUDjqKi4fjH2MGPcWta2pVpRnLUHvgT5vw,5970
|
|
36
|
+
unique_sdk/utils/file_io.py,sha256=sJS-dJLjogG65mLukDO9pGDpKVTP4LhIgiZASnCvjNI,4330
|
|
37
37
|
unique_sdk/utils/sources.py,sha256=DoxxhMLcLhmDfNarjXa41H4JD2GSSDywr71hiC-4pYc,4952
|
|
38
38
|
unique_sdk/utils/token.py,sha256=AzKuAA1AwBtnvSFxGcsHLpxXr_wWE5Mj4jYBbOz2ljA,1740
|
|
39
|
-
unique_sdk-0.10.
|
|
40
|
-
unique_sdk-0.10.
|
|
41
|
-
unique_sdk-0.10.
|
|
42
|
-
unique_sdk-0.10.
|
|
39
|
+
unique_sdk-0.10.26.dist-info/LICENSE,sha256=EJCWoHgrXVBUb47PnjeV4MFIEOR71MAdCOIgv61J-4k,1065
|
|
40
|
+
unique_sdk-0.10.26.dist-info/METADATA,sha256=Fn0Q9GliTYJrJHoBtYZ15ELJRrKUUFEl_S0P4qikuZQ,57656
|
|
41
|
+
unique_sdk-0.10.26.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
42
|
+
unique_sdk-0.10.26.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|