supermemory 3.7.0__py3-none-any.whl → 3.19.0__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.
Files changed (53) hide show
  1. supermemory/_base_client.py +140 -11
  2. supermemory/_client.py +226 -52
  3. supermemory/_models.py +16 -1
  4. supermemory/_streaming.py +12 -10
  5. supermemory/_types.py +12 -2
  6. supermemory/_version.py +1 -1
  7. supermemory/resources/connections.py +219 -29
  8. supermemory/resources/documents.py +306 -2
  9. supermemory/resources/memories.py +270 -1
  10. supermemory/resources/search.py +14 -0
  11. supermemory/resources/settings.py +12 -0
  12. supermemory/types/__init__.py +15 -2
  13. supermemory/types/client_profile_params.py +6 -0
  14. supermemory/types/connection_configure_params.py +12 -0
  15. supermemory/types/connection_configure_response.py +17 -0
  16. supermemory/types/connection_get_by_id_response.py +3 -1
  17. supermemory/types/{connection_get_by_tags_params.py → connection_get_by_tag_params.py} +2 -2
  18. supermemory/types/{connection_get_by_tags_response.py → connection_get_by_tag_response.py} +5 -3
  19. supermemory/types/connection_list_response.py +2 -0
  20. supermemory/types/connection_resources_params.py +13 -0
  21. supermemory/types/connection_resources_response.py +13 -0
  22. supermemory/types/document_batch_add_params.py +84 -0
  23. supermemory/types/document_batch_add_response.py +19 -0
  24. supermemory/types/document_delete_bulk_params.py +18 -0
  25. supermemory/types/document_delete_bulk_response.py +37 -0
  26. supermemory/types/document_get_response.py +7 -0
  27. supermemory/types/document_list_params.py +3790 -3
  28. supermemory/types/document_list_processing_response.py +75 -0
  29. supermemory/types/document_list_response.py +5 -0
  30. supermemory/types/document_upload_file_params.py +8 -0
  31. supermemory/types/memory_forget_params.py +26 -0
  32. supermemory/types/memory_forget_response.py +15 -0
  33. supermemory/types/memory_get_response.py +7 -0
  34. supermemory/types/memory_list_params.py +3790 -3
  35. supermemory/types/memory_list_response.py +5 -0
  36. supermemory/types/memory_update_memory_params.py +31 -0
  37. supermemory/types/memory_update_memory_response.py +31 -0
  38. supermemory/types/memory_upload_file_params.py +8 -0
  39. supermemory/types/profile_response.py +2 -0
  40. supermemory/types/search_documents_params.py +3791 -4
  41. supermemory/types/search_documents_response.py +2 -0
  42. supermemory/types/search_execute_params.py +3791 -4
  43. supermemory/types/search_execute_response.py +2 -0
  44. supermemory/types/search_memories_params.py +3809 -8
  45. supermemory/types/search_memories_response.py +33 -5
  46. supermemory/types/setting_get_response.py +6 -0
  47. supermemory/types/setting_update_params.py +6 -0
  48. supermemory/types/setting_update_response.py +6 -0
  49. {supermemory-3.7.0.dist-info → supermemory-3.19.0.dist-info}/METADATA +12 -2
  50. supermemory-3.19.0.dist-info/RECORD +97 -0
  51. {supermemory-3.7.0.dist-info → supermemory-3.19.0.dist-info}/licenses/LICENSE +1 -1
  52. supermemory-3.7.0.dist-info/RECORD +0 -84
  53. {supermemory-3.7.0.dist-info → supermemory-3.19.0.dist-info}/WHEEL +0 -0
@@ -2,12 +2,19 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import Dict, Union, Mapping, cast
5
+ from typing import Dict, Union, Mapping, Iterable, cast
6
6
  from typing_extensions import Literal
7
7
 
8
8
  import httpx
9
9
 
10
- from ..types import document_add_params, document_list_params, document_update_params, document_upload_file_params
10
+ from ..types import (
11
+ document_add_params,
12
+ document_list_params,
13
+ document_update_params,
14
+ document_batch_add_params,
15
+ document_delete_bulk_params,
16
+ document_upload_file_params,
17
+ )
11
18
  from .._types import Body, Omit, Query, Headers, NoneType, NotGiven, FileTypes, SequenceNotStr, omit, not_given
12
19
  from .._utils import extract_files, maybe_transform, deepcopy_minimal, async_maybe_transform
13
20
  from .._compat import cached_property
@@ -23,7 +30,10 @@ from ..types.document_add_response import DocumentAddResponse
23
30
  from ..types.document_get_response import DocumentGetResponse
24
31
  from ..types.document_list_response import DocumentListResponse
25
32
  from ..types.document_update_response import DocumentUpdateResponse
33
+ from ..types.document_batch_add_response import DocumentBatchAddResponse
34
+ from ..types.document_delete_bulk_response import DocumentDeleteBulkResponse
26
35
  from ..types.document_upload_file_response import DocumentUploadFileResponse
36
+ from ..types.document_list_processing_response import DocumentListProcessingResponse
27
37
 
28
38
  __all__ = ["DocumentsResource", "AsyncDocumentsResource"]
29
39
 
@@ -278,6 +288,110 @@ class DocumentsResource(SyncAPIResource):
278
288
  cast_to=DocumentAddResponse,
279
289
  )
280
290
 
291
+ def batch_add(
292
+ self,
293
+ *,
294
+ documents: Union[Iterable[document_batch_add_params.DocumentsUnionMember0], SequenceNotStr[str]],
295
+ container_tag: str | Omit = omit,
296
+ container_tags: SequenceNotStr[str] | Omit = omit,
297
+ content: None | Omit = omit,
298
+ metadata: Dict[str, Union[str, float, bool, SequenceNotStr[str]]] | Omit = omit,
299
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
300
+ # The extra values given here take precedence over values defined on the client or passed to this method.
301
+ extra_headers: Headers | None = None,
302
+ extra_query: Query | None = None,
303
+ extra_body: Body | None = None,
304
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
305
+ ) -> DocumentBatchAddResponse:
306
+ """Add multiple documents in a single request.
307
+
308
+ Each document can have any content
309
+ type (text, url, file, etc.) and metadata
310
+
311
+ Args:
312
+ container_tag: Optional tag this document should be containerized by. This can be an ID for
313
+ your user, a project ID, or any other identifier you wish to use to group
314
+ documents.
315
+
316
+ container_tags: (DEPRECATED: Use containerTag instead) Optional tags this document should be
317
+ containerized by. This can be an ID for your user, a project ID, or any other
318
+ identifier you wish to use to group documents.
319
+
320
+ metadata: Optional metadata for the document. This is used to store additional information
321
+ about the document. You can use this to store any additional information you
322
+ need about the document. Metadata can be filtered through. Keys must be strings
323
+ and are case sensitive. Values can be strings, numbers, or booleans. You cannot
324
+ nest objects.
325
+
326
+ extra_headers: Send extra headers
327
+
328
+ extra_query: Add additional query parameters to the request
329
+
330
+ extra_body: Add additional JSON properties to the request
331
+
332
+ timeout: Override the client-level default timeout for this request, in seconds
333
+ """
334
+ return self._post(
335
+ "/v3/documents/batch",
336
+ body=maybe_transform(
337
+ {
338
+ "documents": documents,
339
+ "container_tag": container_tag,
340
+ "container_tags": container_tags,
341
+ "content": content,
342
+ "metadata": metadata,
343
+ },
344
+ document_batch_add_params.DocumentBatchAddParams,
345
+ ),
346
+ options=make_request_options(
347
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
348
+ ),
349
+ cast_to=DocumentBatchAddResponse,
350
+ )
351
+
352
+ def delete_bulk(
353
+ self,
354
+ *,
355
+ container_tags: SequenceNotStr[str] | Omit = omit,
356
+ ids: SequenceNotStr[str] | Omit = omit,
357
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
358
+ # The extra values given here take precedence over values defined on the client or passed to this method.
359
+ extra_headers: Headers | None = None,
360
+ extra_query: Query | None = None,
361
+ extra_body: Body | None = None,
362
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
363
+ ) -> DocumentDeleteBulkResponse:
364
+ """
365
+ Bulk delete documents by IDs or container tags
366
+
367
+ Args:
368
+ container_tags: Array of container tags - all documents in these containers will be deleted
369
+
370
+ ids: Array of document IDs to delete (max 100 at once)
371
+
372
+ extra_headers: Send extra headers
373
+
374
+ extra_query: Add additional query parameters to the request
375
+
376
+ extra_body: Add additional JSON properties to the request
377
+
378
+ timeout: Override the client-level default timeout for this request, in seconds
379
+ """
380
+ return self._delete(
381
+ "/v3/documents/bulk",
382
+ body=maybe_transform(
383
+ {
384
+ "container_tags": container_tags,
385
+ "ids": ids,
386
+ },
387
+ document_delete_bulk_params.DocumentDeleteBulkParams,
388
+ ),
389
+ options=make_request_options(
390
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
391
+ ),
392
+ cast_to=DocumentDeleteBulkResponse,
393
+ )
394
+
281
395
  def get(
282
396
  self,
283
397
  id: str,
@@ -311,6 +425,25 @@ class DocumentsResource(SyncAPIResource):
311
425
  cast_to=DocumentGetResponse,
312
426
  )
313
427
 
428
+ def list_processing(
429
+ self,
430
+ *,
431
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
432
+ # The extra values given here take precedence over values defined on the client or passed to this method.
433
+ extra_headers: Headers | None = None,
434
+ extra_query: Query | None = None,
435
+ extra_body: Body | None = None,
436
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
437
+ ) -> DocumentListProcessingResponse:
438
+ """Get documents that are currently being processed"""
439
+ return self._get(
440
+ "/v3/documents/processing",
441
+ options=make_request_options(
442
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
443
+ ),
444
+ cast_to=DocumentListProcessingResponse,
445
+ )
446
+
314
447
  def upload_file(
315
448
  self,
316
449
  *,
@@ -319,6 +452,7 @@ class DocumentsResource(SyncAPIResource):
319
452
  file_type: str | Omit = omit,
320
453
  metadata: str | Omit = omit,
321
454
  mime_type: str | Omit = omit,
455
+ use_advanced_processing: str | Omit = omit,
322
456
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
323
457
  # The extra values given here take precedence over values defined on the client or passed to this method.
324
458
  extra_headers: Headers | None = None,
@@ -348,6 +482,10 @@ class DocumentsResource(SyncAPIResource):
348
482
  mime_type: Required when fileType is 'image' or 'video'. Specifies the exact MIME type to
349
483
  use (e.g., 'image/png', 'image/jpeg', 'video/mp4', 'video/webm')
350
484
 
485
+ use_advanced_processing: DEPRECATED: This field is no longer used. Advanced PDF processing is now
486
+ automatic with our hybrid Mistral OCR + Gemini pipeline. This parameter will be
487
+ accepted but ignored for backwards compatibility.
488
+
351
489
  extra_headers: Send extra headers
352
490
 
353
491
  extra_query: Add additional query parameters to the request
@@ -363,6 +501,7 @@ class DocumentsResource(SyncAPIResource):
363
501
  "file_type": file_type,
364
502
  "metadata": metadata,
365
503
  "mime_type": mime_type,
504
+ "use_advanced_processing": use_advanced_processing,
366
505
  }
367
506
  )
368
507
  files = extract_files(cast(Mapping[str, object], body), paths=[["file"]])
@@ -631,6 +770,110 @@ class AsyncDocumentsResource(AsyncAPIResource):
631
770
  cast_to=DocumentAddResponse,
632
771
  )
633
772
 
773
+ async def batch_add(
774
+ self,
775
+ *,
776
+ documents: Union[Iterable[document_batch_add_params.DocumentsUnionMember0], SequenceNotStr[str]],
777
+ container_tag: str | Omit = omit,
778
+ container_tags: SequenceNotStr[str] | Omit = omit,
779
+ content: None | Omit = omit,
780
+ metadata: Dict[str, Union[str, float, bool, SequenceNotStr[str]]] | Omit = omit,
781
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
782
+ # The extra values given here take precedence over values defined on the client or passed to this method.
783
+ extra_headers: Headers | None = None,
784
+ extra_query: Query | None = None,
785
+ extra_body: Body | None = None,
786
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
787
+ ) -> DocumentBatchAddResponse:
788
+ """Add multiple documents in a single request.
789
+
790
+ Each document can have any content
791
+ type (text, url, file, etc.) and metadata
792
+
793
+ Args:
794
+ container_tag: Optional tag this document should be containerized by. This can be an ID for
795
+ your user, a project ID, or any other identifier you wish to use to group
796
+ documents.
797
+
798
+ container_tags: (DEPRECATED: Use containerTag instead) Optional tags this document should be
799
+ containerized by. This can be an ID for your user, a project ID, or any other
800
+ identifier you wish to use to group documents.
801
+
802
+ metadata: Optional metadata for the document. This is used to store additional information
803
+ about the document. You can use this to store any additional information you
804
+ need about the document. Metadata can be filtered through. Keys must be strings
805
+ and are case sensitive. Values can be strings, numbers, or booleans. You cannot
806
+ nest objects.
807
+
808
+ extra_headers: Send extra headers
809
+
810
+ extra_query: Add additional query parameters to the request
811
+
812
+ extra_body: Add additional JSON properties to the request
813
+
814
+ timeout: Override the client-level default timeout for this request, in seconds
815
+ """
816
+ return await self._post(
817
+ "/v3/documents/batch",
818
+ body=await async_maybe_transform(
819
+ {
820
+ "documents": documents,
821
+ "container_tag": container_tag,
822
+ "container_tags": container_tags,
823
+ "content": content,
824
+ "metadata": metadata,
825
+ },
826
+ document_batch_add_params.DocumentBatchAddParams,
827
+ ),
828
+ options=make_request_options(
829
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
830
+ ),
831
+ cast_to=DocumentBatchAddResponse,
832
+ )
833
+
834
+ async def delete_bulk(
835
+ self,
836
+ *,
837
+ container_tags: SequenceNotStr[str] | Omit = omit,
838
+ ids: SequenceNotStr[str] | Omit = omit,
839
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
840
+ # The extra values given here take precedence over values defined on the client or passed to this method.
841
+ extra_headers: Headers | None = None,
842
+ extra_query: Query | None = None,
843
+ extra_body: Body | None = None,
844
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
845
+ ) -> DocumentDeleteBulkResponse:
846
+ """
847
+ Bulk delete documents by IDs or container tags
848
+
849
+ Args:
850
+ container_tags: Array of container tags - all documents in these containers will be deleted
851
+
852
+ ids: Array of document IDs to delete (max 100 at once)
853
+
854
+ extra_headers: Send extra headers
855
+
856
+ extra_query: Add additional query parameters to the request
857
+
858
+ extra_body: Add additional JSON properties to the request
859
+
860
+ timeout: Override the client-level default timeout for this request, in seconds
861
+ """
862
+ return await self._delete(
863
+ "/v3/documents/bulk",
864
+ body=await async_maybe_transform(
865
+ {
866
+ "container_tags": container_tags,
867
+ "ids": ids,
868
+ },
869
+ document_delete_bulk_params.DocumentDeleteBulkParams,
870
+ ),
871
+ options=make_request_options(
872
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
873
+ ),
874
+ cast_to=DocumentDeleteBulkResponse,
875
+ )
876
+
634
877
  async def get(
635
878
  self,
636
879
  id: str,
@@ -664,6 +907,25 @@ class AsyncDocumentsResource(AsyncAPIResource):
664
907
  cast_to=DocumentGetResponse,
665
908
  )
666
909
 
910
+ async def list_processing(
911
+ self,
912
+ *,
913
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
914
+ # The extra values given here take precedence over values defined on the client or passed to this method.
915
+ extra_headers: Headers | None = None,
916
+ extra_query: Query | None = None,
917
+ extra_body: Body | None = None,
918
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
919
+ ) -> DocumentListProcessingResponse:
920
+ """Get documents that are currently being processed"""
921
+ return await self._get(
922
+ "/v3/documents/processing",
923
+ options=make_request_options(
924
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
925
+ ),
926
+ cast_to=DocumentListProcessingResponse,
927
+ )
928
+
667
929
  async def upload_file(
668
930
  self,
669
931
  *,
@@ -672,6 +934,7 @@ class AsyncDocumentsResource(AsyncAPIResource):
672
934
  file_type: str | Omit = omit,
673
935
  metadata: str | Omit = omit,
674
936
  mime_type: str | Omit = omit,
937
+ use_advanced_processing: str | Omit = omit,
675
938
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
676
939
  # The extra values given here take precedence over values defined on the client or passed to this method.
677
940
  extra_headers: Headers | None = None,
@@ -701,6 +964,10 @@ class AsyncDocumentsResource(AsyncAPIResource):
701
964
  mime_type: Required when fileType is 'image' or 'video'. Specifies the exact MIME type to
702
965
  use (e.g., 'image/png', 'image/jpeg', 'video/mp4', 'video/webm')
703
966
 
967
+ use_advanced_processing: DEPRECATED: This field is no longer used. Advanced PDF processing is now
968
+ automatic with our hybrid Mistral OCR + Gemini pipeline. This parameter will be
969
+ accepted but ignored for backwards compatibility.
970
+
704
971
  extra_headers: Send extra headers
705
972
 
706
973
  extra_query: Add additional query parameters to the request
@@ -716,6 +983,7 @@ class AsyncDocumentsResource(AsyncAPIResource):
716
983
  "file_type": file_type,
717
984
  "metadata": metadata,
718
985
  "mime_type": mime_type,
986
+ "use_advanced_processing": use_advanced_processing,
719
987
  }
720
988
  )
721
989
  files = extract_files(cast(Mapping[str, object], body), paths=[["file"]])
@@ -750,9 +1018,18 @@ class DocumentsResourceWithRawResponse:
750
1018
  self.add = to_raw_response_wrapper(
751
1019
  documents.add,
752
1020
  )
1021
+ self.batch_add = to_raw_response_wrapper(
1022
+ documents.batch_add,
1023
+ )
1024
+ self.delete_bulk = to_raw_response_wrapper(
1025
+ documents.delete_bulk,
1026
+ )
753
1027
  self.get = to_raw_response_wrapper(
754
1028
  documents.get,
755
1029
  )
1030
+ self.list_processing = to_raw_response_wrapper(
1031
+ documents.list_processing,
1032
+ )
756
1033
  self.upload_file = to_raw_response_wrapper(
757
1034
  documents.upload_file,
758
1035
  )
@@ -774,9 +1051,18 @@ class AsyncDocumentsResourceWithRawResponse:
774
1051
  self.add = async_to_raw_response_wrapper(
775
1052
  documents.add,
776
1053
  )
1054
+ self.batch_add = async_to_raw_response_wrapper(
1055
+ documents.batch_add,
1056
+ )
1057
+ self.delete_bulk = async_to_raw_response_wrapper(
1058
+ documents.delete_bulk,
1059
+ )
777
1060
  self.get = async_to_raw_response_wrapper(
778
1061
  documents.get,
779
1062
  )
1063
+ self.list_processing = async_to_raw_response_wrapper(
1064
+ documents.list_processing,
1065
+ )
780
1066
  self.upload_file = async_to_raw_response_wrapper(
781
1067
  documents.upload_file,
782
1068
  )
@@ -798,9 +1084,18 @@ class DocumentsResourceWithStreamingResponse:
798
1084
  self.add = to_streamed_response_wrapper(
799
1085
  documents.add,
800
1086
  )
1087
+ self.batch_add = to_streamed_response_wrapper(
1088
+ documents.batch_add,
1089
+ )
1090
+ self.delete_bulk = to_streamed_response_wrapper(
1091
+ documents.delete_bulk,
1092
+ )
801
1093
  self.get = to_streamed_response_wrapper(
802
1094
  documents.get,
803
1095
  )
1096
+ self.list_processing = to_streamed_response_wrapper(
1097
+ documents.list_processing,
1098
+ )
804
1099
  self.upload_file = to_streamed_response_wrapper(
805
1100
  documents.upload_file,
806
1101
  )
@@ -822,9 +1117,18 @@ class AsyncDocumentsResourceWithStreamingResponse:
822
1117
  self.add = async_to_streamed_response_wrapper(
823
1118
  documents.add,
824
1119
  )
1120
+ self.batch_add = async_to_streamed_response_wrapper(
1121
+ documents.batch_add,
1122
+ )
1123
+ self.delete_bulk = async_to_streamed_response_wrapper(
1124
+ documents.delete_bulk,
1125
+ )
825
1126
  self.get = async_to_streamed_response_wrapper(
826
1127
  documents.get,
827
1128
  )
1129
+ self.list_processing = async_to_streamed_response_wrapper(
1130
+ documents.list_processing,
1131
+ )
828
1132
  self.upload_file = async_to_streamed_response_wrapper(
829
1133
  documents.upload_file,
830
1134
  )