@fias/arche-sdk 1.9.0 → 1.12.0

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.
package/dist/index.mjs CHANGED
@@ -497,6 +497,60 @@ function useImageGeneration() {
497
497
  );
498
498
  return { generate, isLoading, result, error };
499
499
  }
500
+ function useAudioGeneration() {
501
+ const bridge = useBridge();
502
+ const [isLoading, setIsLoading] = useState2(false);
503
+ const [result, setResult] = useState2(null);
504
+ const [error, setError] = useState2(null);
505
+ const generate = useCallback(
506
+ async (params) => {
507
+ setIsLoading(true);
508
+ setError(null);
509
+ try {
510
+ const res = await bridge.request("audio_generate", params, 18e4);
511
+ setResult(res);
512
+ return res;
513
+ } catch (err) {
514
+ const e = err instanceof Error ? err : new Error(String(err));
515
+ setError(e);
516
+ throw e;
517
+ } finally {
518
+ setIsLoading(false);
519
+ }
520
+ },
521
+ [bridge]
522
+ );
523
+ return { generate, isLoading, result, error };
524
+ }
525
+ function useSurface(surfaceKey, timeoutMs = 18e4) {
526
+ const bridge = useBridge();
527
+ const [isLoading, setIsLoading] = useState2(false);
528
+ const [result, setResult] = useState2(null);
529
+ const [error, setError] = useState2(null);
530
+ const invoke = useCallback(
531
+ async (params) => {
532
+ setIsLoading(true);
533
+ setError(null);
534
+ try {
535
+ const res = await bridge.request(
536
+ "surface_invoke",
537
+ { surfaceKey, params },
538
+ timeoutMs
539
+ );
540
+ setResult(res);
541
+ return res;
542
+ } catch (err) {
543
+ const e = err instanceof Error ? err : new Error(String(err));
544
+ setError(e);
545
+ throw e;
546
+ } finally {
547
+ setIsLoading(false);
548
+ }
549
+ },
550
+ [bridge, surfaceKey, timeoutMs]
551
+ );
552
+ return { invoke, isLoading, result, error };
553
+ }
500
554
  function useFiasNavigation() {
501
555
  const bridge = useBridge();
502
556
  const [currentPath, setCurrentPath] = useState2(bridge.getCurrentPath());
@@ -760,32 +814,44 @@ function useFiasStore() {
760
814
  ]
761
815
  );
762
816
  }
763
- var FILES_DOWNLOAD_URL_REFRESH_BUFFER_MS = 6e4;
817
+ var DOWNLOAD_URL_REFRESH_BUFFER_MS = 6e4;
764
818
  var downloadUrlCache = /* @__PURE__ */ new Map();
765
819
  var downloadUrlInflight = /* @__PURE__ */ new Map();
766
- async function fetchFileDownloadUrl(fileId) {
820
+ async function fetchVaultDocumentDownloadUrl(documentId) {
767
821
  const now = Date.now();
768
- const cached = downloadUrlCache.get(fileId);
769
- if (cached && now < cached.expiresAt - FILES_DOWNLOAD_URL_REFRESH_BUFFER_MS) {
770
- return { url: cached.url, expiresAt: cached.expiresAt };
822
+ const cached = downloadUrlCache.get(documentId);
823
+ if (cached && now < cached.expiresAt - DOWNLOAD_URL_REFRESH_BUFFER_MS) {
824
+ return { url: cached.url, expiresAt: cached.expiresAt, contentType: cached.contentType };
771
825
  }
772
- const inflight = downloadUrlInflight.get(fileId);
826
+ const inflight = downloadUrlInflight.get(documentId);
773
827
  if (inflight) return inflight;
774
828
  const bridge = getBridge();
775
- const promise = bridge.request("files_download_url", { fileId }).then((result) => {
776
- downloadUrlCache.set(fileId, { url: result.url, expiresAt: result.expiresAt });
777
- return result;
829
+ const promise = bridge.request(
830
+ "vault_documents_download_url",
831
+ { documentId }
832
+ ).then((result) => {
833
+ const normalized = {
834
+ url: result.url,
835
+ expiresAt: new Date(result.expiresAt).getTime(),
836
+ contentType: result.contentType
837
+ };
838
+ downloadUrlCache.set(documentId, {
839
+ url: normalized.url,
840
+ expiresAt: normalized.expiresAt,
841
+ contentType: normalized.contentType
842
+ });
843
+ return normalized;
778
844
  }).finally(() => {
779
- downloadUrlInflight.delete(fileId);
845
+ downloadUrlInflight.delete(documentId);
780
846
  });
781
- downloadUrlInflight.set(fileId, promise);
847
+ downloadUrlInflight.set(documentId, promise);
782
848
  return promise;
783
849
  }
784
- function useFiasFiles() {
850
+ function useVaultDocuments() {
785
851
  const bridge = useBridge();
786
852
  const list = useCallback(
787
853
  async (options) => {
788
- return bridge.request("files_list", {
854
+ return bridge.request("vault_documents_list", {
789
855
  search: options?.search,
790
856
  limit: options?.limit,
791
857
  cursor: options?.cursor
@@ -794,13 +860,15 @@ function useFiasFiles() {
794
860
  [bridge]
795
861
  );
796
862
  const read = useCallback(
797
- async (fileId) => {
798
- return bridge.request("files_read", { fileId });
863
+ async (documentId) => {
864
+ return bridge.request("vault_documents_read", {
865
+ documentId
866
+ });
799
867
  },
800
868
  [bridge]
801
869
  );
802
870
  const getDownloadUrl = useCallback(
803
- (fileId) => fetchFileDownloadUrl(fileId),
871
+ (documentId) => fetchVaultDocumentDownloadUrl(documentId),
804
872
  // The hook closes over the React context's bridge, but the resolver
805
873
  // uses the singleton — they are the same instance in practice. Keeping
806
874
  // `bridge` in the deps for symmetry with other hooks that do go through
@@ -809,34 +877,115 @@ function useFiasFiles() {
809
877
  );
810
878
  const write = useCallback(
811
879
  async (params) => {
812
- return bridge.request("files_write", {
880
+ return bridge.request("vault_documents_write", {
813
881
  name: params.name,
814
882
  content: params.content,
815
883
  contentType: params.contentType,
816
- tags: params.tags
884
+ tags: params.tags,
885
+ sensitivity: params.sensitivity,
886
+ folderPath: params.folderPath,
887
+ replacesDocumentId: params.replacesDocumentId
817
888
  });
818
889
  },
819
890
  [bridge]
820
891
  );
821
892
  const update = useCallback(
822
- async (fileId, params) => {
823
- await bridge.request("files_update", {
824
- fileId,
893
+ async (documentId, params) => {
894
+ await bridge.request("vault_documents_update", {
895
+ documentId,
825
896
  name: params.name,
826
897
  tags: params.tags
827
898
  });
828
- downloadUrlCache.delete(fileId);
899
+ downloadUrlCache.delete(documentId);
829
900
  },
830
901
  [bridge]
831
902
  );
832
- const deleteFile = useCallback(
833
- async (fileId) => {
834
- await bridge.request("files_delete", { fileId });
835
- downloadUrlCache.delete(fileId);
836
- downloadUrlInflight.delete(fileId);
903
+ const deleteDocument = useCallback(
904
+ async (documentId) => {
905
+ await bridge.request("vault_documents_delete", { documentId });
906
+ downloadUrlCache.delete(documentId);
907
+ downloadUrlInflight.delete(documentId);
908
+ },
909
+ [bridge]
910
+ );
911
+ const search = useCallback(
912
+ async (query, options) => {
913
+ return bridge.request("vault_documents_search", {
914
+ query,
915
+ topK: options?.topK,
916
+ minSimilarity: options?.minSimilarity,
917
+ includeContent: options?.includeContent
918
+ });
919
+ },
920
+ [bridge]
921
+ );
922
+ const attach = useCallback(
923
+ async (documentId, target) => {
924
+ return bridge.request("vault_documents_attach", {
925
+ documentId,
926
+ regardingType: target.regardingType,
927
+ regardingId: target.regardingId
928
+ });
837
929
  },
838
930
  [bridge]
839
931
  );
932
+ const detach = useCallback(
933
+ async (documentId, referenceId) => {
934
+ await bridge.request("vault_documents_detach", { documentId, referenceId });
935
+ },
936
+ [bridge]
937
+ );
938
+ const uploadInit = useCallback(
939
+ async (params) => {
940
+ return bridge.request("vault_documents_upload_init", {
941
+ name: params.name,
942
+ mimeType: params.mimeType,
943
+ sizeBytes: params.sizeBytes,
944
+ checksumSha256: params.checksumSha256,
945
+ tags: params.tags,
946
+ sensitivity: params.sensitivity,
947
+ folderPath: params.folderPath,
948
+ replacesDocumentId: params.replacesDocumentId
949
+ });
950
+ },
951
+ [bridge]
952
+ );
953
+ const uploadFinalize = useCallback(
954
+ async (params) => {
955
+ return bridge.request("vault_documents_upload_finalize", {
956
+ documentId: params.documentId,
957
+ checksumSha256: params.checksumSha256
958
+ });
959
+ },
960
+ [bridge]
961
+ );
962
+ const upload = useCallback(
963
+ async (bytes, params) => {
964
+ const src = bytes instanceof Uint8Array ? bytes : new Uint8Array(bytes);
965
+ const u8 = new Uint8Array(src.byteLength);
966
+ u8.set(src);
967
+ const sizeBytes = u8.byteLength;
968
+ const digest = await crypto.subtle.digest("SHA-256", u8);
969
+ const checksumHex = bytesToHex(new Uint8Array(digest));
970
+ const init = await uploadInit({ ...params, sizeBytes, checksumSha256: checksumHex });
971
+ const browserHeaders = Object.fromEntries(
972
+ Object.entries(init.requiredHeaders).filter(([k]) => k.toLowerCase() !== "content-length")
973
+ );
974
+ const putResp = await fetch(init.uploadUrl, {
975
+ method: "PUT",
976
+ body: u8,
977
+ headers: browserHeaders
978
+ });
979
+ if (!putResp.ok) {
980
+ const text = await putResp.text().catch(() => "");
981
+ throw new Error(
982
+ `Vault upload PUT failed (${putResp.status}): ${text || putResp.statusText}`
983
+ );
984
+ }
985
+ return uploadFinalize({ documentId: init.documentId, checksumSha256: checksumHex });
986
+ },
987
+ [uploadInit, uploadFinalize]
988
+ );
840
989
  return useMemo2(
841
990
  () => ({
842
991
  list,
@@ -844,11 +993,102 @@ function useFiasFiles() {
844
993
  getDownloadUrl,
845
994
  write,
846
995
  update,
847
- delete: deleteFile
996
+ delete: deleteDocument,
997
+ search,
998
+ attach,
999
+ detach,
1000
+ upload,
1001
+ uploadInit,
1002
+ uploadFinalize
848
1003
  }),
849
- [list, read, getDownloadUrl, write, update, deleteFile]
1004
+ [
1005
+ list,
1006
+ read,
1007
+ getDownloadUrl,
1008
+ write,
1009
+ update,
1010
+ deleteDocument,
1011
+ search,
1012
+ attach,
1013
+ detach,
1014
+ upload,
1015
+ uploadInit,
1016
+ uploadFinalize
1017
+ ]
850
1018
  );
851
1019
  }
1020
+ function bytesToHex(bytes) {
1021
+ let out = "";
1022
+ for (let i = 0; i < bytes.length; i++) {
1023
+ out += bytes[i].toString(16).padStart(2, "0");
1024
+ }
1025
+ return out;
1026
+ }
1027
+ function useArcheAssets() {
1028
+ const bridge = useBridge();
1029
+ const list = useCallback(
1030
+ async (options) => {
1031
+ return bridge.request("arche_assets_list", {
1032
+ cursor: options?.cursor,
1033
+ limit: options?.limit
1034
+ });
1035
+ },
1036
+ [bridge]
1037
+ );
1038
+ const getUrl = useCallback(
1039
+ async (assetId) => {
1040
+ return bridge.request("arche_assets_get_url", { assetId });
1041
+ },
1042
+ [bridge]
1043
+ );
1044
+ return useMemo2(() => ({ list, getUrl }), [list, getUrl]);
1045
+ }
1046
+
1047
+ // src/generated/surfaces.ts
1048
+ var AUDIO_AUDIO_ISOLATION_SURFACE_KEY = "audio.audio-isolation";
1049
+ var useElevenLabsAudioIsolation = () => useSurface(
1050
+ AUDIO_AUDIO_ISOLATION_SURFACE_KEY
1051
+ );
1052
+ var AUDIO_FORCED_ALIGNMENT_SURFACE_KEY = "audio.forced-alignment";
1053
+ var useElevenLabsForcedAlignment = () => useSurface(
1054
+ AUDIO_FORCED_ALIGNMENT_SURFACE_KEY
1055
+ );
1056
+ var AUDIO_LYRIA_MUSIC_SURFACE_KEY = "audio.lyria-music";
1057
+ var useLyriaMusic = () => useSurface(AUDIO_LYRIA_MUSIC_SURFACE_KEY);
1058
+ var AUDIO_MUSIC_SURFACE_KEY = "audio.music";
1059
+ var useElevenLabsMusic = () => useSurface(AUDIO_MUSIC_SURFACE_KEY);
1060
+ var AUDIO_SOUND_EFFECTS_SURFACE_KEY = "audio.sound-effects";
1061
+ var useElevenLabsSfx = () => useSurface(AUDIO_SOUND_EFFECTS_SURFACE_KEY);
1062
+ var AUDIO_SPEECH_TO_TEXT_SURFACE_KEY = "audio.speech-to-text";
1063
+ var useElevenLabsStt = () => useSurface(AUDIO_SPEECH_TO_TEXT_SURFACE_KEY);
1064
+ var AUDIO_TTS_SURFACE_KEY = "audio.tts";
1065
+ var useElevenLabsTts = () => useSurface(AUDIO_TTS_SURFACE_KEY);
1066
+ var AUDIO_VOICE_CHANGER_SURFACE_KEY = "audio.voice-changer";
1067
+ var useElevenLabsVoiceChanger = () => useSurface(
1068
+ AUDIO_VOICE_CHANGER_SURFACE_KEY
1069
+ );
1070
+ var AUDIO_VOICE_DESIGN_SURFACE_KEY = "audio.voice-design";
1071
+ var useElevenLabsVoiceDesign = () => useSurface(
1072
+ AUDIO_VOICE_DESIGN_SURFACE_KEY
1073
+ );
1074
+
1075
+ // src/generated/permissions.ts
1076
+ var VALID_PLUGIN_PERMISSIONS = [
1077
+ "assets:read",
1078
+ "data:store",
1079
+ "entities:audio_generate",
1080
+ "entities:image_generate",
1081
+ "entities:invoke",
1082
+ "storage:sandbox",
1083
+ "store:purchase",
1084
+ "theme:read",
1085
+ "user:profile:read",
1086
+ "vault:documents:read",
1087
+ "vault:documents:write"
1088
+ ];
1089
+ function isValidPluginPermission(perm) {
1090
+ return VALID_PLUGIN_PERMISSIONS.includes(perm);
1091
+ }
852
1092
 
853
1093
  // src/fias.ts
854
1094
  var fias = {
@@ -2703,28 +2943,51 @@ function getFontPairingById(id) {
2703
2943
  return FONT_PAIRINGS.find((f) => f.id === id) ?? FONT_PAIRINGS[0];
2704
2944
  }
2705
2945
  export {
2946
+ AUDIO_AUDIO_ISOLATION_SURFACE_KEY,
2947
+ AUDIO_FORCED_ALIGNMENT_SURFACE_KEY,
2948
+ AUDIO_LYRIA_MUSIC_SURFACE_KEY,
2949
+ AUDIO_MUSIC_SURFACE_KEY,
2950
+ AUDIO_SOUND_EFFECTS_SURFACE_KEY,
2951
+ AUDIO_SPEECH_TO_TEXT_SURFACE_KEY,
2952
+ AUDIO_TTS_SURFACE_KEY,
2953
+ AUDIO_VOICE_CHANGER_SURFACE_KEY,
2954
+ AUDIO_VOICE_DESIGN_SURFACE_KEY,
2706
2955
  DARK_THEME,
2707
2956
  FONT_PAIRINGS,
2708
2957
  FiasBridge,
2709
2958
  FiasProvider,
2710
2959
  LIGHT_THEME,
2711
2960
  THEME_CATALOG,
2712
- fetchFileDownloadUrl,
2961
+ VALID_PLUGIN_PERMISSIONS,
2962
+ fetchVaultDocumentDownloadUrl,
2713
2963
  fias,
2714
2964
  getBridge,
2715
2965
  getDefaultTheme,
2716
2966
  getFontPairingById,
2717
2967
  getThemeById,
2968
+ isValidPluginPermission,
2718
2969
  resetBridge,
2970
+ useArcheAssets,
2971
+ useAudioGeneration,
2972
+ useElevenLabsAudioIsolation,
2973
+ useElevenLabsForcedAlignment,
2974
+ useElevenLabsMusic,
2975
+ useElevenLabsSfx,
2976
+ useElevenLabsStt,
2977
+ useElevenLabsTts,
2978
+ useElevenLabsVoiceChanger,
2979
+ useElevenLabsVoiceDesign,
2719
2980
  useEntityInvocation,
2720
2981
  useFiasDataStore,
2721
- useFiasFiles,
2722
2982
  useFiasNavigation,
2723
2983
  useFiasStorage,
2724
2984
  useFiasStore,
2725
2985
  useFiasTheme,
2726
2986
  useFiasUser,
2727
2987
  useImageGeneration,
2988
+ useLyriaMusic,
2728
2989
  usePersistentState,
2729
- useStepNavigation
2990
+ useStepNavigation,
2991
+ useSurface,
2992
+ useVaultDocuments
2730
2993
  };