librechat-data-provider 0.3.4 → 0.3.6
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.es.js +1 -1
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/react-query/index.es.js +1 -1
- package/dist/react-query/index.es.js.map +1 -1
- package/package.json +1 -1
- package/src/api-endpoints.ts +2 -0
- package/src/config.ts +214 -0
- package/src/createPayload.ts +8 -5
- package/src/data-service.ts +9 -1
- package/src/index.ts +6 -1
- package/src/keys.ts +2 -0
- package/src/parsers.ts +225 -0
- package/src/schemas.ts +104 -267
- package/src/types/files.ts +28 -5
- package/src/types.ts +26 -7
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useQueryClient as n,useMutation as e,useQuery as t,useInfiniteQuery as r}from"@tanstack/react-query";import o from"axios";var u=function(){return u=Object.assign||function(n){for(var e,t=1,r=arguments.length;t<r;t++)for(var o in e=arguments[t])Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=e[o]);return n},u.apply(this,arguments)};function i(n,e,t,r){return new(t||(t=Promise))((function(o,u){function i(n){try{a(r.next(n))}catch(n){u(n)}}function c(n){try{a(r.throw(n))}catch(n){u(n)}}function a(n){var e;n.done?o(n.value):(e=n.value,e instanceof t?e:new t((function(n){n(e)}))).then(i,c)}a((r=r.apply(n,e||[])).next())}))}function c(n,e){var t,r,o,u,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return u={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(u[Symbol.iterator]=function(){return this}),u;function c(c){return function(a){return function(c){if(t)throw new TypeError("Generator is already executing.");for(;u&&(u=0,c[0]&&(i=0)),i;)try{if(t=1,r&&(o=2&c[0]?r.return:c[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,c[1])).done)return o;switch(r=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return i.label++,{value:c[1],done:!1};case 5:i.label++,r=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==c[0]&&2!==c[0])){i=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){i.label=c[1];break}if(6===c[0]&&i.label<o[1]){i.label=o[1],o=c;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(c);break}o[2]&&i.ops.pop(),i.trys.pop();continue}c=e.call(n,i)}catch(n){c=[6,n],r=0}finally{t=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,a])}}}"function"==typeof SuppressedError&&SuppressedError;var a=function(n,e){return"/api/messages/".concat(n).concat(e?"/".concat(e):"")},s="/api/keys",f=function(n,e){return"/api/search?q=".concat(n,"&pageNumber=").concat(e)},l=function(n){return"/api/assistants".concat(n?"/".concat(n):"")};function d(n,e){return i(this,void 0,void 0,(function(){return c(this,(function(t){switch(t.label){case 0:return[4,o.post(n,JSON.stringify(e),{headers:{"Content-Type":"application/json"}})];case 1:return[2,t.sent().data]}}))}))}var v=!1,p=[],h=function(n){return d(function(n){return"/api/auth/refresh".concat(n?"?retry=true":"")}(n))},g=function(n,e){void 0===e&&(e=null),p.forEach((function(t){n?t.reject(n):t.resolve(e)})),p=[]};o.interceptors.response.use((function(n){return n}),(function(n){return i(void 0,void 0,void 0,(function(){var e,t,r,u,i;return c(this,(function(c){switch(c.label){case 0:if(e=n.config,401!==n.response.status||e._retry)return[3,13];if(e._retry=!0,!v)return[3,5];c.label=1;case 1:return c.trys.push([1,4,,5]),[4,new Promise((function(n,e){p.push({resolve:n,reject:e})}))];case 2:return r=c.sent(),e.headers.Authorization="Bearer "+r,[4,o(e)];case 3:return[2,c.sent()];case 4:return t=c.sent(),[2,Promise.reject(t)];case 5:v=!0,c.label=6;case 6:return c.trys.push([6,11,12,13]),[4,h(!!(null===(i=e.url)||void 0===i?void 0:i.includes("api/auth/refresh")))];case 7:return(r=c.sent().token)?(e.headers.Authorization="Bearer "+r,function(n){o.defaults.headers.common.Authorization="Bearer "+n}(r),window.dispatchEvent(new CustomEvent("tokenUpdated",{detail:r})),g(null,r),[4,o(e)]):[3,9];case 8:return[2,c.sent()];case 9:window.location.href="/login",c.label=10;case 10:return[3,13];case 11:return u=c.sent(),g(u,null),[2,Promise.reject(u)];case 12:return v=!1,[7];case 13:return[2,Promise.reject(n)]}}))}))}));var m={get:function(n,e){return i(this,void 0,void 0,(function(){return c(this,(function(t){switch(t.label){case 0:return[4,o.get(n,u({},e))];case 1:return[2,t.sent().data]}}))}))},post:d,postMultiPart:function(n,e,t){return i(this,void 0,void 0,(function(){return c(this,(function(r){switch(r.label){case 0:return[4,o.post(n,e,u(u({},t),{headers:{"Content-Type":"multipart/form-data"}}))];case 1:return[2,r.sent().data]}}))}))},put:function(n,e){return i(this,void 0,void 0,(function(){return c(this,(function(t){switch(t.label){case 0:return[4,o.put(n,JSON.stringify(e),{headers:{"Content-Type":"application/json"}})];case 1:return[2,t.sent().data]}}))}))},delete:function(n){return i(this,void 0,void 0,(function(){return c(this,(function(e){switch(e.label){case 0:return[4,o.delete(n)];case 1:return[2,e.sent().data]}}))}))},deleteWithOptions:function(n,e){return i(this,void 0,void 0,(function(){return c(this,(function(t){switch(t.label){case 0:return[4,o.delete(n,u({},e))];case 1:return[2,t.sent().data]}}))}))},patch:function(n,e){return i(this,void 0,void 0,(function(){return c(this,(function(t){switch(t.label){case 0:return[4,o.patch(n,JSON.stringify(e),{headers:{"Content-Type":"application/json"}})];case 1:return[2,t.sent().data]}}))}))},refreshToken:h};function O(n){return m.delete(function(n){return"".concat(s,"/").concat(n)}(n))}function b(){return m.delete("".concat(s,"?all=true"))}function w(n){return m.get(function(n){return"/api/convos/".concat(n)}(n))}function y(n){if(!n.value)throw new Error("value is required");return m.put(s,n)}var S,Q,C=function(n){return m.get(function(n){return"".concat(s,"?name=").concat(n)}(n))},P=function(n){return m.get(l(),{params:n})};!function(n){n.messages="messages",n.allConversations="allConversations",n.conversation="conversation",n.searchEnabled="searchEnabled",n.user="user",n.name="name",n.models="models",n.balance="balance",n.endpoints="endpoints",n.presets="presets",n.searchResults="searchResults",n.tokenCount="tokenCount",n.availablePlugins="availablePlugins",n.startupConfig="startupConfig",n.assistants="assistants",n.assistant="assistant",n.endpointsConfigOverride="endpointsConfigOverride"}(S||(S={})),function(n){n.imageUpload="imageUpload",n.fileDelete="fileDelete",n.updatePreset="updatePreset",n.deletePreset="deletePreset",n.logoutUser="logoutUser"}(Q||(Q={}));var M=function(){var t=n();return e((function(n){return function(n,e,t){return m.post(function(n){return"/api/ask/".concat(n,"/abort")}(n),{arg:{abortKey:e,message:t}})}(n.endpoint,n.abortKey,n.message)}),{onSuccess:function(){t.invalidateQueries([S.balance])}})},R=function(n){return t([S.user],(function(){return m.get("/api/user")}),u({refetchOnWindowFocus:!1,refetchOnReconnect:!1,refetchOnMount:!1,retry:!1},n))},k=function(n,e){return t([S.messages,n],(function(){return"new"===(e=n)?Promise.resolve([]):m.get(a(e));var e}),u({refetchOnWindowFocus:!1,refetchOnReconnect:!1,refetchOnMount:!1},e))},W=function(n){return t([S.balance],(function(){return m.get("/api/balance")}),u({refetchOnWindowFocus:!0,refetchOnReconnect:!0,refetchOnMount:!0},n))},F=function(n,e){return t([S.conversation,n],(function(){return w(n)}),u({refetchOnWindowFocus:!1,refetchOnReconnect:!1,refetchOnMount:!1},e))},x=function(e,r){var o=n();return t([S.conversation,e],(function(){var n,t=function(){return w(e)},r=[S.allConversations,{pageNumber:"1",active:!0}],u=o.getQueryData(r);if(!u)return t();var i=null===(n=u.conversations)||void 0===n?void 0:n.find((function(n){return n.conversationId===e}));return i||t()}),u({refetchOnWindowFocus:!1,refetchOnReconnect:!1,refetchOnMount:!1},r))},E=function(t){var r=n();return e((function(){return w(t)}),{onSuccess:function(){r.invalidateQueries([S.conversation,t])}})},T=function(t){var r=n();return e((function(n){return function(n){return m.post("/api/convos/update",{arg:n})}(n)}),{onSuccess:function(){r.invalidateQueries([S.conversation,t]),r.invalidateQueries([S.allConversations])}})},j=function(t){var r=n();return e((function(n){return function(n){var e=n.conversationId,t=n.messageId,r=n.text;if(!e)throw new Error("conversationId is required");return m.put(a(e,t),{text:r})}(n)}),{onSuccess:function(){r.invalidateQueries([S.messages,t])}})},I=function(){var t=n();return e((function(n){return y(n)}),{onSuccess:function(){t.invalidateQueries([S.name])}})},N=function(t){var r=n();return e((function(n){return function(n){return m.post("/api/convos/clear",{arg:n})}(n)}),{onSuccess:function(){r.invalidateQueries([S.conversation,t]),r.invalidateQueries([S.allConversations])}})},_=function(){var t=n();return e((function(){return m.post("/api/convos/clear",{arg:{}})}),{onSuccess:function(){t.invalidateQueries([S.allConversations])}})},q=function(t){var r=n();return e((function(){return O(t)}),{onSuccess:function(){r.invalidateQueries([S.name])}})},A=function(){var t=n();return e((function(){return b()}),{onSuccess:function(){t.invalidateQueries([S.name])}})},U=function(n,e){return t([S.allConversations,{pageNumber:n,active:!0}],(function(){return function(n){return m.get(function(n){return"/api/convos?pageNumber=".concat(n)}(n))}(n)}),u({refetchOnReconnect:!1,refetchOnMount:!1,retry:1},e))},z=function(n){return t([S.searchEnabled],(function(){return m.get("/api/search/enable")}),u({refetchOnWindowFocus:!1,refetchOnReconnect:!1,refetchOnMount:!1},n))},D=function(n){return t([S.endpoints],(function(){return m.get("/api/endpoints")}),u({staleTime:1/0,refetchOnWindowFocus:!1,refetchOnReconnect:!1,refetchOnMount:!1},n))},B=function(n){return t([S.models],(function(){return i(void 0,void 0,void 0,(function(){return c(this,(function(n){return[2,m.get("/api/models")]}))}))}),u({staleTime:1/0,refetchOnWindowFocus:!1,refetchOnReconnect:!1,refetchOnMount:!1},n))},J=function(){var t=n();return e((function(n){return function(n){return m.post("/api/presets",n)}(n)}),{onSuccess:function(){t.invalidateQueries([S.presets])}})},K=function(){var t=n();return e((function(n){return e=n,m.post("/api/presets/delete",e);var e}),{onSuccess:function(){t.invalidateQueries([S.presets])}})},G=function(n,e,r){return t([S.searchResults,e,n],(function(){return function(n,e){return i(void 0,void 0,void 0,(function(){return c(this,(function(t){return[2,m.get(f(n,e))]}))}))}(n,e)}),u({refetchOnWindowFocus:!1,refetchOnReconnect:!1,refetchOnMount:!1},r))},L=function(){var t=n();return e((function(n){return function(n){return m.post("/api/tokenizer",{arg:n})}(n.text)}),{onSuccess:function(){t.invalidateQueries([S.tokenCount])}})},H=function(){var t=n();return e((function(n){return function(n){return m.post("/api/auth/login",n)}(n)}),{onMutate:function(){t.removeQueries(),localStorage.removeItem("lastConversationSetup"),localStorage.removeItem("lastSelectedModel"),localStorage.removeItem("lastSelectedTools"),localStorage.removeItem("filesToDelete"),localStorage.removeItem("lastAssistant")}})},V=function(){var t=n();return e((function(n){return function(n){return m.post("/api/auth/register",n)}(n)}),{onSuccess:function(){t.invalidateQueries([S.user])}})},X=function(){var t=n();return e((function(){return m.refreshToken()}),{onMutate:function(){t.removeQueries()}})},Y=function(n,e){return t([S.name,n],(function(){return n?C(n):Promise.resolve({expiresAt:""})}),u({refetchOnWindowFocus:!1,refetchOnReconnect:!1,refetchOnMount:!1,retry:!1},e))},Z=function(){return e((function(n){return function(n){return m.post("/api/auth/requestPasswordReset",n)}(n)}))},$=function(){return e((function(n){return function(n){return m.post("/api/auth/resetPassword",n)}(n)}))},nn=function(){return t([S.availablePlugins],(function(){return m.get("/api/plugins")}),{refetchOnWindowFocus:!1,refetchOnReconnect:!1,refetchOnMount:!1})},en=function(){var t=n();return e((function(n){return function(n){return m.post("/api/user/plugins",n)}(n)}),{onSuccess:function(){t.invalidateQueries([S.user])}})},tn=function(){return t([S.startupConfig],(function(){return m.get("/api/config")}),{refetchOnWindowFocus:!1,refetchOnReconnect:!1,refetchOnMount:!1})},rn=function(n,e){return t([S.assistants,n],(function(){return P(n)}),u({refetchOnWindowFocus:!1,refetchOnReconnect:!1,refetchOnMount:!1,retry:!1},e))},on=function(n,e){return r(["assistantsList",n],(function(e){var t=e.pageParam,r=void 0===t?"":t;return P(u(u({},n),{after:r}))}),u({getNextPageParam:function(n){if(n.has_more)return n.last_id}},e))},un=function(){var t=n();return e((function(n){return e=n,m.post(l(),e);var e}),{onSuccess:function(){t.invalidateQueries([S.assistants])}})},cn=function(n,e){return t([S.assistant,n],(function(){return function(n){return m.get(l(n))}(n)}),u({enabled:!!n,refetchOnWindowFocus:!1,refetchOnReconnect:!1,refetchOnMount:!1,retry:!1},e))},an=function(){var t=n();return e((function(n){return function(n,e){return m.patch(l(n),e)}(n.assistant_id,n.data)}),{onSuccess:function(n,e){var r=e.assistant_id;t.invalidateQueries([S.assistant,r]),t.invalidateQueries([S.assistants])}})},sn=function(){var t=n();return e((function(n){return function(n){return m.delete(l(n))}(n.assistant_id)}),{onSuccess:function(){t.invalidateQueries([S.assistants])}})};export{M as useAbortRequestWithMessage,nn as useAvailablePluginsQuery,_ as useClearConversationsMutation,un as useCreateAssistantMutation,J as useCreatePresetMutation,sn as useDeleteAssistantMutation,N as useDeleteConversationMutation,K as useDeletePresetMutation,cn as useGetAssistantByIdQuery,E as useGetConversationByIdMutation,F as useGetConversationByIdQuery,U as useGetConversationsQuery,x as useGetConvoIdQuery,D as useGetEndpointsQuery,k as useGetMessagesByConvoId,B as useGetModelsQuery,z as useGetSearchEnabledQuery,tn as useGetStartupConfig,W as useGetUserBalance,R as useGetUserQuery,on as useListAssistantsInfiniteQuery,rn as useListAssistantsQuery,H as useLoginUserMutation,X as useRefreshTokenMutation,V as useRegisterUserMutation,Z as useRequestPasswordResetMutation,$ as useResetPasswordMutation,A as useRevokeAllUserKeysMutation,q as useRevokeUserKeyMutation,G as useSearchQuery,an as useUpdateAssistantMutation,T as useUpdateConversationMutation,j as useUpdateMessageMutation,L as useUpdateTokenCountMutation,I as useUpdateUserKeysMutation,en as useUpdateUserPluginsMutation,Y as useUserKeyQuery};
|
|
1
|
+
import{useQueryClient as n,useMutation as e,useQuery as t,useInfiniteQuery as r}from"@tanstack/react-query";import o from"axios";var u=function(){return u=Object.assign||function(n){for(var e,t=1,r=arguments.length;t<r;t++)for(var o in e=arguments[t])Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=e[o]);return n},u.apply(this,arguments)};function i(n,e,t,r){return new(t||(t=Promise))((function(o,u){function i(n){try{a(r.next(n))}catch(n){u(n)}}function c(n){try{a(r.throw(n))}catch(n){u(n)}}function a(n){var e;n.done?o(n.value):(e=n.value,e instanceof t?e:new t((function(n){n(e)}))).then(i,c)}a((r=r.apply(n,e||[])).next())}))}function c(n,e){var t,r,o,u,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return u={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(u[Symbol.iterator]=function(){return this}),u;function c(c){return function(a){return function(c){if(t)throw new TypeError("Generator is already executing.");for(;u&&(u=0,c[0]&&(i=0)),i;)try{if(t=1,r&&(o=2&c[0]?r.return:c[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,c[1])).done)return o;switch(r=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return i.label++,{value:c[1],done:!1};case 5:i.label++,r=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==c[0]&&2!==c[0])){i=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){i.label=c[1];break}if(6===c[0]&&i.label<o[1]){i.label=o[1],o=c;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(c);break}o[2]&&i.ops.pop(),i.trys.pop();continue}c=e.call(n,i)}catch(n){c=[6,n],r=0}finally{t=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,a])}}}"function"==typeof SuppressedError&&SuppressedError;var a=function(n,e){return"/api/messages/".concat(n).concat(e?"/".concat(e):"")},s="/api/keys",f=function(n,e){return"/api/search?q=".concat(n,"&pageNumber=").concat(e)},l=function(n){return"/api/assistants".concat(n?"/".concat(n):"")};function d(n,e){return i(this,void 0,void 0,(function(){return c(this,(function(t){switch(t.label){case 0:return[4,o.post(n,JSON.stringify(e),{headers:{"Content-Type":"application/json"}})];case 1:return[2,t.sent().data]}}))}))}var v=!1,p=[],h=function(n){return d(function(n){return"/api/auth/refresh".concat(n?"?retry=true":"")}(n))},g=function(n,e){void 0===e&&(e=null),p.forEach((function(t){n?t.reject(n):t.resolve(e)})),p=[]};o.interceptors.response.use((function(n){return n}),(function(n){return i(void 0,void 0,void 0,(function(){var e,t,r,u,i;return c(this,(function(c){switch(c.label){case 0:if(e=n.config,401!==n.response.status||e._retry)return[3,13];if(e._retry=!0,!v)return[3,5];c.label=1;case 1:return c.trys.push([1,4,,5]),[4,new Promise((function(n,e){p.push({resolve:n,reject:e})}))];case 2:return r=c.sent(),e.headers.Authorization="Bearer "+r,[4,o(e)];case 3:return[2,c.sent()];case 4:return t=c.sent(),[2,Promise.reject(t)];case 5:v=!0,c.label=6;case 6:return c.trys.push([6,11,12,13]),[4,h(!!(null===(i=e.url)||void 0===i?void 0:i.includes("api/auth/refresh")))];case 7:return(r=c.sent().token)?(e.headers.Authorization="Bearer "+r,function(n){o.defaults.headers.common.Authorization="Bearer "+n}(r),window.dispatchEvent(new CustomEvent("tokenUpdated",{detail:r})),g(null,r),[4,o(e)]):[3,9];case 8:return[2,c.sent()];case 9:window.location.href="/login",c.label=10;case 10:return[3,13];case 11:return u=c.sent(),g(u,null),[2,Promise.reject(u)];case 12:return v=!1,[7];case 13:return[2,Promise.reject(n)]}}))}))}));var m={get:function(n,e){return i(this,void 0,void 0,(function(){return c(this,(function(t){switch(t.label){case 0:return[4,o.get(n,u({},e))];case 1:return[2,t.sent().data]}}))}))},post:d,postMultiPart:function(n,e,t){return i(this,void 0,void 0,(function(){return c(this,(function(r){switch(r.label){case 0:return[4,o.post(n,e,u(u({},t),{headers:{"Content-Type":"multipart/form-data"}}))];case 1:return[2,r.sent().data]}}))}))},put:function(n,e){return i(this,void 0,void 0,(function(){return c(this,(function(t){switch(t.label){case 0:return[4,o.put(n,JSON.stringify(e),{headers:{"Content-Type":"application/json"}})];case 1:return[2,t.sent().data]}}))}))},delete:function(n){return i(this,void 0,void 0,(function(){return c(this,(function(e){switch(e.label){case 0:return[4,o.delete(n)];case 1:return[2,e.sent().data]}}))}))},deleteWithOptions:function(n,e){return i(this,void 0,void 0,(function(){return c(this,(function(t){switch(t.label){case 0:return[4,o.delete(n,u({},e))];case 1:return[2,t.sent().data]}}))}))},patch:function(n,e){return i(this,void 0,void 0,(function(){return c(this,(function(t){switch(t.label){case 0:return[4,o.patch(n,JSON.stringify(e),{headers:{"Content-Type":"application/json"}})];case 1:return[2,t.sent().data]}}))}))},refreshToken:h};function O(n){return m.delete(function(n){return"".concat(s,"/").concat(n)}(n))}function b(){return m.delete("".concat(s,"?all=true"))}function w(n){return m.get(function(n){return"/api/convos/".concat(n)}(n))}function y(n){if(!n.value)throw new Error("value is required");return m.put(s,n)}var S,Q,C=function(n){return m.get(function(n){return"".concat(s,"?name=").concat(n)}(n))},P=function(n){return m.get(l(),{params:n})};!function(n){n.messages="messages",n.allConversations="allConversations",n.conversation="conversation",n.searchEnabled="searchEnabled",n.user="user",n.name="name",n.models="models",n.balance="balance",n.endpoints="endpoints",n.presets="presets",n.searchResults="searchResults",n.tokenCount="tokenCount",n.availablePlugins="availablePlugins",n.startupConfig="startupConfig",n.assistants="assistants",n.assistant="assistant",n.endpointsConfigOverride="endpointsConfigOverride",n.files="files"}(S||(S={})),function(n){n.imageUpload="imageUpload",n.fileDelete="fileDelete",n.updatePreset="updatePreset",n.deletePreset="deletePreset",n.logoutUser="logoutUser",n.avatarUpload="avatarUpload"}(Q||(Q={}));var M=function(){var t=n();return e((function(n){return function(n,e,t){return m.post(function(n){return"/api/ask/".concat(n,"/abort")}(n),{arg:{abortKey:e,message:t}})}(n.endpoint,n.abortKey,n.message)}),{onSuccess:function(){t.invalidateQueries([S.balance])}})},R=function(n){return t([S.user],(function(){return m.get("/api/user")}),u({refetchOnWindowFocus:!1,refetchOnReconnect:!1,refetchOnMount:!1,retry:!1},n))},k=function(n,e){return t([S.messages,n],(function(){return"new"===(e=n)?Promise.resolve([]):m.get(a(e));var e}),u({refetchOnWindowFocus:!1,refetchOnReconnect:!1,refetchOnMount:!1},e))},W=function(n){return t([S.balance],(function(){return m.get("/api/balance")}),u({refetchOnWindowFocus:!0,refetchOnReconnect:!0,refetchOnMount:!0},n))},F=function(n,e){return t([S.conversation,n],(function(){return w(n)}),u({refetchOnWindowFocus:!1,refetchOnReconnect:!1,refetchOnMount:!1},e))},x=function(e,r){var o=n();return t([S.conversation,e],(function(){var n,t=function(){return w(e)},r=[S.allConversations,{pageNumber:"1",active:!0}],u=o.getQueryData(r);if(!u)return t();var i=null===(n=u.conversations)||void 0===n?void 0:n.find((function(n){return n.conversationId===e}));return i||t()}),u({refetchOnWindowFocus:!1,refetchOnReconnect:!1,refetchOnMount:!1},r))},E=function(t){var r=n();return e((function(){return w(t)}),{onSuccess:function(){r.invalidateQueries([S.conversation,t])}})},T=function(t){var r=n();return e((function(n){return function(n){return m.post("/api/convos/update",{arg:n})}(n)}),{onSuccess:function(){r.invalidateQueries([S.conversation,t]),r.invalidateQueries([S.allConversations])}})},j=function(t){var r=n();return e((function(n){return function(n){var e=n.conversationId,t=n.messageId,r=n.text;if(!e)throw new Error("conversationId is required");return m.put(a(e,t),{text:r})}(n)}),{onSuccess:function(){r.invalidateQueries([S.messages,t])}})},I=function(){var t=n();return e((function(n){return y(n)}),{onSuccess:function(){t.invalidateQueries([S.name])}})},N=function(t){var r=n();return e((function(n){return function(n){return m.post("/api/convos/clear",{arg:n})}(n)}),{onSuccess:function(){r.invalidateQueries([S.conversation,t]),r.invalidateQueries([S.allConversations])}})},U=function(){var t=n();return e((function(){return m.post("/api/convos/clear",{arg:{}})}),{onSuccess:function(){t.invalidateQueries([S.allConversations])}})},_=function(t){var r=n();return e((function(){return O(t)}),{onSuccess:function(){r.invalidateQueries([S.name])}})},q=function(){var t=n();return e((function(){return b()}),{onSuccess:function(){t.invalidateQueries([S.name])}})},A=function(n,e){return t([S.allConversations,{pageNumber:n,active:!0}],(function(){return function(n){return m.get(function(n){return"/api/convos?pageNumber=".concat(n)}(n))}(n)}),u({refetchOnReconnect:!1,refetchOnMount:!1,retry:1},e))},z=function(n){return t([S.searchEnabled],(function(){return m.get("/api/search/enable")}),u({refetchOnWindowFocus:!1,refetchOnReconnect:!1,refetchOnMount:!1},n))},D=function(n){return t([S.endpoints],(function(){return m.get("/api/endpoints")}),u({staleTime:1/0,refetchOnWindowFocus:!1,refetchOnReconnect:!1,refetchOnMount:!1},n))},B=function(n){return t([S.models],(function(){return i(void 0,void 0,void 0,(function(){return c(this,(function(n){return[2,m.get("/api/models")]}))}))}),u({staleTime:1/0,refetchOnWindowFocus:!1,refetchOnReconnect:!1,refetchOnMount:!1},n))},J=function(){var t=n();return e((function(n){return function(n){return m.post("/api/presets",n)}(n)}),{onSuccess:function(){t.invalidateQueries([S.presets])}})},K=function(){var t=n();return e((function(n){return e=n,m.post("/api/presets/delete",e);var e}),{onSuccess:function(){t.invalidateQueries([S.presets])}})},G=function(n,e,r){return t([S.searchResults,e,n],(function(){return function(n,e){return i(void 0,void 0,void 0,(function(){return c(this,(function(t){return[2,m.get(f(n,e))]}))}))}(n,e)}),u({refetchOnWindowFocus:!1,refetchOnReconnect:!1,refetchOnMount:!1},r))},L=function(){var t=n();return e((function(n){return function(n){return m.post("/api/tokenizer",{arg:n})}(n.text)}),{onSuccess:function(){t.invalidateQueries([S.tokenCount])}})},H=function(){var t=n();return e((function(n){return function(n){return m.post("/api/auth/login",n)}(n)}),{onMutate:function(){t.removeQueries(),localStorage.removeItem("lastConversationSetup"),localStorage.removeItem("lastSelectedModel"),localStorage.removeItem("lastSelectedTools"),localStorage.removeItem("filesToDelete"),localStorage.removeItem("lastAssistant")}})},V=function(){var t=n();return e((function(n){return function(n){return m.post("/api/auth/register",n)}(n)}),{onSuccess:function(){t.invalidateQueries([S.user])}})},X=function(){var t=n();return e((function(){return m.refreshToken()}),{onMutate:function(){t.removeQueries()}})},Y=function(n,e){return t([S.name,n],(function(){return n?C(n):Promise.resolve({expiresAt:""})}),u({refetchOnWindowFocus:!1,refetchOnReconnect:!1,refetchOnMount:!1,retry:!1},e))},Z=function(){return e((function(n){return function(n){return m.post("/api/auth/requestPasswordReset",n)}(n)}))},$=function(){return e((function(n){return function(n){return m.post("/api/auth/resetPassword",n)}(n)}))},nn=function(){return t([S.availablePlugins],(function(){return m.get("/api/plugins")}),{refetchOnWindowFocus:!1,refetchOnReconnect:!1,refetchOnMount:!1})},en=function(){var t=n();return e((function(n){return function(n){return m.post("/api/user/plugins",n)}(n)}),{onSuccess:function(){t.invalidateQueries([S.user])}})},tn=function(){return t([S.startupConfig],(function(){return m.get("/api/config")}),{refetchOnWindowFocus:!1,refetchOnReconnect:!1,refetchOnMount:!1})},rn=function(n,e){return t([S.assistants,n],(function(){return P(n)}),u({refetchOnWindowFocus:!1,refetchOnReconnect:!1,refetchOnMount:!1,retry:!1},e))},on=function(n,e){return r(["assistantsList",n],(function(e){var t=e.pageParam,r=void 0===t?"":t;return P(u(u({},n),{after:r}))}),u({getNextPageParam:function(n){if(n.has_more)return n.last_id}},e))},un=function(){var t=n();return e((function(n){return e=n,m.post(l(),e);var e}),{onSuccess:function(){t.invalidateQueries([S.assistants])}})},cn=function(n,e){return t([S.assistant,n],(function(){return function(n){return m.get(l(n))}(n)}),u({enabled:!!n,refetchOnWindowFocus:!1,refetchOnReconnect:!1,refetchOnMount:!1,retry:!1},e))},an=function(){var t=n();return e((function(n){return function(n,e){return m.patch(l(n),e)}(n.assistant_id,n.data)}),{onSuccess:function(n,e){var r=e.assistant_id;t.invalidateQueries([S.assistant,r]),t.invalidateQueries([S.assistants])}})},sn=function(){var t=n();return e((function(n){return function(n){return m.delete(l(n))}(n.assistant_id)}),{onSuccess:function(){t.invalidateQueries([S.assistants])}})};export{M as useAbortRequestWithMessage,nn as useAvailablePluginsQuery,U as useClearConversationsMutation,un as useCreateAssistantMutation,J as useCreatePresetMutation,sn as useDeleteAssistantMutation,N as useDeleteConversationMutation,K as useDeletePresetMutation,cn as useGetAssistantByIdQuery,E as useGetConversationByIdMutation,F as useGetConversationByIdQuery,A as useGetConversationsQuery,x as useGetConvoIdQuery,D as useGetEndpointsQuery,k as useGetMessagesByConvoId,B as useGetModelsQuery,z as useGetSearchEnabledQuery,tn as useGetStartupConfig,W as useGetUserBalance,R as useGetUserQuery,on as useListAssistantsInfiniteQuery,rn as useListAssistantsQuery,H as useLoginUserMutation,X as useRefreshTokenMutation,V as useRegisterUserMutation,Z as useRequestPasswordResetMutation,$ as useResetPasswordMutation,q as useRevokeAllUserKeysMutation,_ as useRevokeUserKeyMutation,G as useSearchQuery,an as useUpdateAssistantMutation,T as useUpdateConversationMutation,j as useUpdateMessageMutation,L as useUpdateTokenCountMutation,I as useUpdateUserKeysMutation,en as useUpdateUserPluginsMutation,Y as useUserKeyQuery};
|
|
2
2
|
//# sourceMappingURL=index.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../../src/api-endpoints.ts","../../src/request.ts","../../src/headers-helpers.ts","../../src/data-service.ts","../../src/keys.ts","../../src/react-query/react-query-service.ts","../../src/react-query/assistants.ts"],"sourcesContent":["export const user = () => '/api/user';\n\nexport const balance = () => '/api/balance';\n\nexport const userPlugins = () => '/api/user/plugins';\n\nexport const messages = (conversationId: string, messageId?: string) =>\n `/api/messages/${conversationId}${messageId ? `/${messageId}` : ''}`;\n\nconst keysEndpoint = '/api/keys';\n\nexport const keys = () => keysEndpoint;\n\nexport const userKeyQuery = (name: string) => `${keysEndpoint}?name=${name}`;\n\nexport const revokeUserKey = (name: string) => `${keysEndpoint}/${name}`;\n\nexport const revokeAllUserKeys = () => `${keysEndpoint}?all=true`;\n\nexport const abortRequest = (endpoint: string) => `/api/ask/${endpoint}/abort`;\n\nexport const conversations = (pageNumber: string) => `/api/convos?pageNumber=${pageNumber}`;\n\nexport const conversationById = (id: string) => `/api/convos/${id}`;\n\nexport const updateConversation = () => '/api/convos/update';\n\nexport const deleteConversation = () => '/api/convos/clear';\n\nexport const search = (q: string, pageNumber: string) =>\n `/api/search?q=${q}&pageNumber=${pageNumber}`;\n\nexport const searchEnabled = () => '/api/search/enable';\n\nexport const presets = () => '/api/presets';\n\nexport const deletePreset = () => '/api/presets/delete';\n\nexport const aiEndpoints = () => '/api/endpoints';\n\nexport const endpointsConfigOverride = () => '/api/endpoints/config/override';\n\nexport const models = () => '/api/models';\n\nexport const tokenizer = () => '/api/tokenizer';\n\nexport const login = () => '/api/auth/login';\n\nexport const logout = () => '/api/auth/logout';\n\nexport const register = () => '/api/auth/register';\n\nexport const loginFacebook = () => '/api/auth/facebook';\n\nexport const loginGoogle = () => '/api/auth/google';\n\nexport const refreshToken = (retry?: boolean) => `/api/auth/refresh${retry ? '?retry=true' : ''}`;\n\nexport const requestPasswordReset = () => '/api/auth/requestPasswordReset';\n\nexport const resetPassword = () => '/api/auth/resetPassword';\n\nexport const plugins = () => '/api/plugins';\n\nexport const config = () => '/api/config';\n\nexport const assistants = (id?: string) => `/api/assistants${id ? `/${id}` : ''}`;\n\nexport const files = () => '/api/files';\n\nexport const images = () => `${files()}/images`;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport axios, { AxiosRequestConfig, AxiosError } from 'axios';\nimport { setTokenHeader } from './headers-helpers';\nimport * as endpoints from './api-endpoints';\n\nasync function _get<T>(url: string, options?: AxiosRequestConfig): Promise<T> {\n const response = await axios.get(url, { ...options });\n return response.data;\n}\n\nasync function _post(url: string, data?: any) {\n const response = await axios.post(url, JSON.stringify(data), {\n headers: { 'Content-Type': 'application/json' },\n });\n return response.data;\n}\n\nasync function _postMultiPart(url: string, formData: FormData, options?: AxiosRequestConfig) {\n const response = await axios.post(url, formData, {\n ...options,\n headers: { 'Content-Type': 'multipart/form-data' },\n });\n return response.data;\n}\n\nasync function _put(url: string, data?: any) {\n const response = await axios.put(url, JSON.stringify(data), {\n headers: { 'Content-Type': 'application/json' },\n });\n return response.data;\n}\n\nasync function _delete<T>(url: string): Promise<T> {\n const response = await axios.delete(url);\n return response.data;\n}\n\nasync function _deleteWithOptions<T>(url: string, options?: AxiosRequestConfig): Promise<T> {\n const response = await axios.delete(url, { ...options });\n return response.data;\n}\n\nasync function _patch(url: string, data?: any) {\n const response = await axios.patch(url, JSON.stringify(data), {\n headers: { 'Content-Type': 'application/json' },\n });\n return response.data;\n}\n\nlet isRefreshing = false;\nlet failedQueue: { resolve: (value?: any) => void; reject: (reason?: any) => void }[] = [];\n\nconst refreshToken = (retry?: boolean) => _post(endpoints.refreshToken(retry));\n\nconst processQueue = (error: AxiosError | null, token: string | null = null) => {\n failedQueue.forEach((prom) => {\n if (error) {\n prom.reject(error);\n } else {\n prom.resolve(token);\n }\n });\n failedQueue = [];\n};\n\naxios.interceptors.response.use(\n (response) => response,\n async (error) => {\n const originalRequest = error.config;\n\n if (error.response.status === 401 && !originalRequest._retry) {\n originalRequest._retry = true;\n\n if (isRefreshing) {\n try {\n const token = await new Promise((resolve, reject) => {\n failedQueue.push({ resolve, reject });\n });\n originalRequest.headers['Authorization'] = 'Bearer ' + token;\n return await axios(originalRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n }\n\n isRefreshing = true;\n\n try {\n const { token } = await refreshToken(\n // Handle edge case where we get a blank screen if the initial 401 error is from a refresh token request\n originalRequest.url?.includes('api/auth/refresh') ? true : false,\n );\n\n if (token) {\n originalRequest.headers['Authorization'] = 'Bearer ' + token;\n setTokenHeader(token);\n window.dispatchEvent(new CustomEvent('tokenUpdated', { detail: token }));\n processQueue(null, token);\n return await axios(originalRequest);\n } else {\n window.location.href = '/login';\n }\n } catch (err) {\n processQueue(err as AxiosError, null);\n return Promise.reject(err);\n } finally {\n isRefreshing = false;\n }\n }\n\n return Promise.reject(error);\n },\n);\n\nexport default {\n get: _get,\n post: _post,\n postMultiPart: _postMultiPart,\n put: _put,\n delete: _delete,\n deleteWithOptions: _deleteWithOptions,\n patch: _patch,\n refreshToken,\n};\n","import axios from 'axios';\n\nexport function setAcceptLanguageHeader(value: string): void {\n axios.defaults.headers.common['Accept-Language'] = value;\n}\n\nexport function setTokenHeader(token: string) {\n axios.defaults.headers.common['Authorization'] = 'Bearer ' + token;\n}\n","import * as f from './types/files';\nimport * as m from './types/mutations';\nimport * as a from './types/assistants';\nimport * as t from './types';\nimport * as s from './schemas';\nimport request from './request';\nimport * as endpoints from './api-endpoints';\n\nexport function getConversations(pageNumber: string): Promise<t.TGetConversationsResponse> {\n return request.get(endpoints.conversations(pageNumber));\n}\n\nexport function abortRequestWithMessage(\n endpoint: string,\n abortKey: string,\n message: string,\n): Promise<void> {\n return request.post(endpoints.abortRequest(endpoint), { arg: { abortKey, message } });\n}\n\nexport function deleteConversation(payload: t.TDeleteConversationRequest) {\n //todo: this should be a DELETE request\n return request.post(endpoints.deleteConversation(), { arg: payload });\n}\n\nexport function clearAllConversations(): Promise<unknown> {\n return request.post(endpoints.deleteConversation(), { arg: {} });\n}\n\nexport function revokeUserKey(name: string): Promise<unknown> {\n return request.delete(endpoints.revokeUserKey(name));\n}\n\nexport function revokeAllUserKeys(): Promise<unknown> {\n return request.delete(endpoints.revokeAllUserKeys());\n}\n\nexport function getMessagesByConvoId(conversationId: string): Promise<s.TMessage[]> {\n if (conversationId === 'new') {\n return Promise.resolve([]);\n }\n return request.get(endpoints.messages(conversationId));\n}\n\nexport function getConversationById(id: string): Promise<s.TConversation> {\n return request.get(endpoints.conversationById(id));\n}\n\nexport function updateConversation(\n payload: t.TUpdateConversationRequest,\n): Promise<t.TUpdateConversationResponse> {\n return request.post(endpoints.updateConversation(), { arg: payload });\n}\n\nexport function updateMessage(payload: t.TUpdateMessageRequest): Promise<unknown> {\n const { conversationId, messageId, text } = payload;\n if (!conversationId) {\n throw new Error('conversationId is required');\n }\n\n return request.put(endpoints.messages(conversationId, messageId), { text });\n}\n\nexport function updateUserKey(payload: t.TUpdateUserKeyRequest) {\n const { value } = payload;\n if (!value) {\n throw new Error('value is required');\n }\n\n return request.put(endpoints.keys(), payload);\n}\n\nexport function getPresets(): Promise<s.TPreset[]> {\n return request.get(endpoints.presets());\n}\n\nexport function createPreset(payload: s.TPreset): Promise<s.TPreset> {\n return request.post(endpoints.presets(), payload);\n}\n\nexport function updatePreset(payload: s.TPreset): Promise<s.TPreset> {\n return request.post(endpoints.presets(), payload);\n}\n\nexport function deletePreset(arg: s.TPreset | undefined): Promise<m.PresetDeleteResponse> {\n return request.post(endpoints.deletePreset(), arg);\n}\n\nexport function getSearchEnabled(): Promise<boolean> {\n return request.get(endpoints.searchEnabled());\n}\n\nexport function getUser(): Promise<t.TUser> {\n return request.get(endpoints.user());\n}\n\nexport function getUserBalance(): Promise<string> {\n return request.get(endpoints.balance());\n}\n\nexport const searchConversations = async (\n q: string,\n pageNumber: string,\n): Promise<t.TSearchResults> => {\n return request.get(endpoints.search(q, pageNumber));\n};\n\nexport const updateTokenCount = (text: string) => {\n return request.post(endpoints.tokenizer(), { arg: text });\n};\n\nexport const login = (payload: t.TLoginUser) => {\n return request.post(endpoints.login(), payload);\n};\n\nexport const logout = () => {\n return request.post(endpoints.logout());\n};\n\nexport const register = (payload: t.TRegisterUser) => {\n return request.post(endpoints.register(), payload);\n};\n\nexport const userKeyQuery = (name: string): Promise<t.TCheckUserKeyResponse> =>\n request.get(endpoints.userKeyQuery(name));\n\nexport const getLoginGoogle = () => {\n return request.get(endpoints.loginGoogle());\n};\n\nexport const requestPasswordReset = (\n payload: t.TRequestPasswordReset,\n): Promise<t.TRequestPasswordResetResponse> => {\n return request.post(endpoints.requestPasswordReset(), payload);\n};\n\nexport const resetPassword = (payload: t.TResetPassword) => {\n return request.post(endpoints.resetPassword(), payload);\n};\n\nexport const getAvailablePlugins = (): Promise<s.TPlugin[]> => {\n return request.get(endpoints.plugins());\n};\n\nexport const updateUserPlugins = (payload: t.TUpdateUserPlugins) => {\n return request.post(endpoints.userPlugins(), payload);\n};\n\n/* Config */\n\nexport const getStartupConfig = (): Promise<t.TStartupConfig> => {\n return request.get(endpoints.config());\n};\n\nexport const getAIEndpoints = (): Promise<t.TEndpointsConfig> => {\n return request.get(endpoints.aiEndpoints());\n};\n\nexport const getModels = async (): Promise<t.TModelsConfig> => {\n return request.get(endpoints.models());\n};\n\nexport const getEndpointsConfigOverride = (): Promise<unknown | boolean> => {\n return request.get(endpoints.endpointsConfigOverride());\n};\n\n/* Assistants */\n\nexport const createAssistant = (data: a.AssistantCreateParams): Promise<a.Assistant> => {\n return request.post(endpoints.assistants(), data);\n};\n\nexport const getAssistantById = (assistant_id: string): Promise<a.Assistant> => {\n return request.get(endpoints.assistants(assistant_id));\n};\n\nexport const updateAssistant = (\n assistant_id: string,\n data: a.AssistantUpdateParams,\n): Promise<a.Assistant> => {\n return request.patch(endpoints.assistants(assistant_id), data);\n};\n\nexport const deleteAssistant = (assistant_id: string): Promise<void> => {\n return request.delete(endpoints.assistants(assistant_id));\n};\n\nexport const listAssistants = (\n params?: a.AssistantListParams,\n): Promise<a.AssistantListResponse> => {\n return request.get(endpoints.assistants(), { params });\n};\n\n/* Files */\n\nexport const uploadImage = (data: FormData): Promise<f.FileUploadResponse> => {\n return request.postMultiPart(endpoints.images(), data);\n};\n\nexport const deleteFiles = async (files: f.BatchFile[]): Promise<f.DeleteFilesResponse> =>\n request.deleteWithOptions(endpoints.files(), {\n data: { files },\n });\n","export enum QueryKeys {\n messages = 'messages',\n allConversations = 'allConversations',\n conversation = 'conversation',\n searchEnabled = 'searchEnabled',\n user = 'user',\n name = 'name', // user key name\n models = 'models',\n balance = 'balance',\n endpoints = 'endpoints',\n presets = 'presets',\n searchResults = 'searchResults',\n tokenCount = 'tokenCount',\n availablePlugins = 'availablePlugins',\n startupConfig = 'startupConfig',\n assistants = 'assistants',\n assistant = 'assistant',\n endpointsConfigOverride = 'endpointsConfigOverride',\n}\n\nexport enum MutationKeys {\n imageUpload = 'imageUpload',\n fileDelete = 'fileDelete',\n updatePreset = 'updatePreset',\n deletePreset = 'deletePreset',\n logoutUser = 'logoutUser',\n}\n","import {\n UseQueryOptions,\n useQuery,\n useMutation,\n useQueryClient,\n UseMutationResult,\n QueryObserverResult,\n} from '@tanstack/react-query';\nimport * as t from '../types';\nimport * as s from '../schemas';\nimport * as m from '../types/mutations';\nimport * as dataService from '../data-service';\nimport request from '../request';\nimport { QueryKeys } from '../keys';\n\nexport const useAbortRequestWithMessage = (): UseMutationResult<\n void,\n Error,\n { endpoint: string; abortKey: string; message: string }\n> => {\n const queryClient = useQueryClient();\n return useMutation(\n ({ endpoint, abortKey, message }) =>\n dataService.abortRequestWithMessage(endpoint, abortKey, message),\n {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.balance]);\n },\n },\n );\n};\n\nexport const useGetUserQuery = (\n config?: UseQueryOptions<t.TUser>,\n): QueryObserverResult<t.TUser> => {\n return useQuery<t.TUser>([QueryKeys.user], () => dataService.getUser(), {\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n retry: false,\n ...config,\n });\n};\n\nexport const useGetMessagesByConvoId = <TData = s.TMessage[]>(\n id: string,\n config?: UseQueryOptions<s.TMessage[], unknown, TData>,\n): QueryObserverResult<TData> => {\n return useQuery<s.TMessage[], unknown, TData>(\n [QueryKeys.messages, id],\n () => dataService.getMessagesByConvoId(id),\n {\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n ...config,\n },\n );\n};\n\nexport const useGetUserBalance = (\n config?: UseQueryOptions<string>,\n): QueryObserverResult<string> => {\n return useQuery<string>([QueryKeys.balance], () => dataService.getUserBalance(), {\n refetchOnWindowFocus: true,\n refetchOnReconnect: true,\n refetchOnMount: true,\n ...config,\n });\n};\n\nexport const useGetConversationByIdQuery = (\n id: string,\n config?: UseQueryOptions<s.TConversation>,\n): QueryObserverResult<s.TConversation> => {\n return useQuery<s.TConversation>(\n [QueryKeys.conversation, id],\n () => dataService.getConversationById(id),\n {\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n ...config,\n },\n );\n};\n\n/* like above, but first try the convos query data */\nexport const useGetConvoIdQuery = (\n id: string,\n config?: UseQueryOptions<s.TConversation>,\n): QueryObserverResult<s.TConversation> => {\n const queryClient = useQueryClient();\n return useQuery<s.TConversation>(\n [QueryKeys.conversation, id],\n () => {\n const defaultQuery = () => dataService.getConversationById(id);\n\n const convosQueryKey = [QueryKeys.allConversations, { pageNumber: '1', active: true }];\n const convosQuery = queryClient.getQueryData<t.TGetConversationsResponse>(convosQueryKey);\n\n if (!convosQuery) {\n return defaultQuery();\n }\n\n const convo = convosQuery.conversations?.find((c) => c.conversationId === id);\n if (convo) {\n return convo;\n }\n\n return defaultQuery();\n },\n {\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n ...config,\n },\n );\n};\n\n//This isn't ideal because its just a query and we're using mutation, but it was the only way\n//to make it work with how the Chat component is structured\nexport const useGetConversationByIdMutation = (id: string): UseMutationResult<s.TConversation> => {\n const queryClient = useQueryClient();\n return useMutation(() => dataService.getConversationById(id), {\n // onSuccess: (res: s.TConversation) => {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.conversation, id]);\n },\n });\n};\n\nexport const useUpdateConversationMutation = (\n id: string,\n): UseMutationResult<\n t.TUpdateConversationResponse,\n unknown,\n t.TUpdateConversationRequest,\n unknown\n> => {\n const queryClient = useQueryClient();\n return useMutation(\n (payload: t.TUpdateConversationRequest) => dataService.updateConversation(payload),\n {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.conversation, id]);\n queryClient.invalidateQueries([QueryKeys.allConversations]);\n },\n },\n );\n};\n\nexport const useUpdateMessageMutation = (\n id: string,\n): UseMutationResult<unknown, unknown, t.TUpdateMessageRequest, unknown> => {\n const queryClient = useQueryClient();\n return useMutation((payload: t.TUpdateMessageRequest) => dataService.updateMessage(payload), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.messages, id]);\n },\n });\n};\n\nexport const useUpdateUserKeysMutation = (): UseMutationResult<\n t.TUser,\n unknown,\n t.TUpdateUserKeyRequest,\n unknown\n> => {\n const queryClient = useQueryClient();\n return useMutation((payload: t.TUpdateUserKeyRequest) => dataService.updateUserKey(payload), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.name]);\n },\n });\n};\n\nexport const useDeleteConversationMutation = (\n id?: string,\n): UseMutationResult<\n t.TDeleteConversationResponse,\n unknown,\n t.TDeleteConversationRequest,\n unknown\n> => {\n const queryClient = useQueryClient();\n return useMutation(\n (payload: t.TDeleteConversationRequest) => dataService.deleteConversation(payload),\n {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.conversation, id]);\n queryClient.invalidateQueries([QueryKeys.allConversations]);\n },\n },\n );\n};\n\nexport const useClearConversationsMutation = (): UseMutationResult<unknown> => {\n const queryClient = useQueryClient();\n return useMutation(() => dataService.clearAllConversations(), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.allConversations]);\n },\n });\n};\n\nexport const useRevokeUserKeyMutation = (name: string): UseMutationResult<unknown> => {\n const queryClient = useQueryClient();\n return useMutation(() => dataService.revokeUserKey(name), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.name]);\n },\n });\n};\n\nexport const useRevokeAllUserKeysMutation = (): UseMutationResult<unknown> => {\n const queryClient = useQueryClient();\n return useMutation(() => dataService.revokeAllUserKeys(), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.name]);\n },\n });\n};\n\nexport const useGetConversationsQuery = (\n pageNumber: string,\n config?: UseQueryOptions<t.TGetConversationsResponse>,\n): QueryObserverResult<t.TGetConversationsResponse> => {\n return useQuery<t.TGetConversationsResponse>(\n [QueryKeys.allConversations, { pageNumber, active: true }],\n () => dataService.getConversations(pageNumber),\n {\n refetchOnReconnect: false,\n refetchOnMount: false,\n retry: 1,\n ...config,\n },\n );\n};\n\nexport const useGetSearchEnabledQuery = (\n config?: UseQueryOptions<boolean>,\n): QueryObserverResult<boolean> => {\n return useQuery<boolean>([QueryKeys.searchEnabled], () => dataService.getSearchEnabled(), {\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n ...config,\n });\n};\n\nexport const useGetEndpointsQuery = <TData = t.TEndpointsConfig>(\n config?: UseQueryOptions<t.TEndpointsConfig, unknown, TData>,\n): QueryObserverResult<TData> => {\n return useQuery<t.TEndpointsConfig, unknown, TData>(\n [QueryKeys.endpoints],\n () => dataService.getAIEndpoints(),\n {\n staleTime: Infinity,\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n ...config,\n },\n );\n};\n\nexport const useGetModelsQuery = (\n config?: UseQueryOptions<t.TModelsConfig>,\n): QueryObserverResult<t.TModelsConfig> => {\n return useQuery<t.TModelsConfig>([QueryKeys.models], () => dataService.getModels(), {\n staleTime: Infinity,\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n ...config,\n });\n};\n\nexport const useCreatePresetMutation = (): UseMutationResult<\n s.TPreset,\n unknown,\n s.TPreset,\n unknown\n> => {\n const queryClient = useQueryClient();\n return useMutation((payload: s.TPreset) => dataService.createPreset(payload), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.presets]);\n },\n });\n};\n\nexport const useDeletePresetMutation = (): UseMutationResult<\n m.PresetDeleteResponse,\n unknown,\n s.TPreset | undefined,\n unknown\n> => {\n const queryClient = useQueryClient();\n return useMutation((payload: s.TPreset | undefined) => dataService.deletePreset(payload), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.presets]);\n },\n });\n};\n\nexport const useSearchQuery = (\n searchQuery: string,\n pageNumber: string,\n config?: UseQueryOptions<t.TSearchResults>,\n): QueryObserverResult<t.TSearchResults> => {\n return useQuery<t.TSearchResults>(\n [QueryKeys.searchResults, pageNumber, searchQuery],\n () => dataService.searchConversations(searchQuery, pageNumber),\n {\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n ...config,\n },\n );\n};\n\nexport const useUpdateTokenCountMutation = (): UseMutationResult<\n t.TUpdateTokenCountResponse,\n unknown,\n { text: string },\n unknown\n> => {\n const queryClient = useQueryClient();\n return useMutation(({ text }: { text: string }) => dataService.updateTokenCount(text), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.tokenCount]);\n },\n });\n};\n\nexport const useLoginUserMutation = (): UseMutationResult<\n t.TLoginResponse,\n unknown,\n t.TLoginUser,\n unknown\n> => {\n const queryClient = useQueryClient();\n return useMutation((payload: t.TLoginUser) => dataService.login(payload), {\n onMutate: () => {\n queryClient.removeQueries();\n localStorage.removeItem('lastConversationSetup');\n localStorage.removeItem('lastSelectedModel');\n localStorage.removeItem('lastSelectedTools');\n localStorage.removeItem('filesToDelete');\n localStorage.removeItem('lastAssistant');\n },\n });\n};\n\nexport const useRegisterUserMutation = (): UseMutationResult<\n unknown,\n unknown,\n t.TRegisterUser,\n unknown\n> => {\n const queryClient = useQueryClient();\n return useMutation((payload: t.TRegisterUser) => dataService.register(payload), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.user]);\n },\n });\n};\n\nexport const useRefreshTokenMutation = (): UseMutationResult<\n t.TRefreshTokenResponse,\n unknown,\n unknown,\n unknown\n> => {\n const queryClient = useQueryClient();\n return useMutation(() => request.refreshToken(), {\n onMutate: () => {\n queryClient.removeQueries();\n },\n });\n};\n\nexport const useUserKeyQuery = (\n name: string,\n config?: UseQueryOptions<t.TCheckUserKeyResponse>,\n): QueryObserverResult<t.TCheckUserKeyResponse> => {\n return useQuery<t.TCheckUserKeyResponse>(\n [QueryKeys.name, name],\n () => {\n if (!name) {\n return Promise.resolve({ expiresAt: '' });\n }\n return dataService.userKeyQuery(name);\n },\n {\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n retry: false,\n ...config,\n },\n );\n};\n\nexport const useRequestPasswordResetMutation = (): UseMutationResult<\n t.TRequestPasswordResetResponse,\n unknown,\n t.TRequestPasswordReset,\n unknown\n> => {\n return useMutation((payload: t.TRequestPasswordReset) =>\n dataService.requestPasswordReset(payload),\n );\n};\n\nexport const useResetPasswordMutation = (): UseMutationResult<\n unknown,\n unknown,\n t.TResetPassword,\n unknown\n> => {\n return useMutation((payload: t.TResetPassword) => dataService.resetPassword(payload));\n};\n\nexport const useAvailablePluginsQuery = (): QueryObserverResult<s.TPlugin[]> => {\n return useQuery<s.TPlugin[]>(\n [QueryKeys.availablePlugins],\n () => dataService.getAvailablePlugins(),\n {\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n },\n );\n};\n\nexport const useUpdateUserPluginsMutation = (): UseMutationResult<\n t.TUser,\n unknown,\n t.TUpdateUserPlugins,\n unknown\n> => {\n const queryClient = useQueryClient();\n return useMutation((payload: t.TUpdateUserPlugins) => dataService.updateUserPlugins(payload), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.user]);\n },\n });\n};\n\nexport const useGetStartupConfig = (): QueryObserverResult<t.TStartupConfig> => {\n return useQuery<t.TStartupConfig>(\n [QueryKeys.startupConfig],\n () => dataService.getStartupConfig(),\n {\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n },\n );\n};\n","import { useQuery, useMutation, useQueryClient, useInfiniteQuery } from '@tanstack/react-query';\nimport type {\n UseQueryOptions,\n UseMutationResult,\n QueryObserverResult,\n UseInfiniteQueryOptions,\n} from '@tanstack/react-query';\nimport * as t from '../types/assistants';\nimport * as dataService from '../data-service';\nimport { QueryKeys } from '../keys';\n\n/**\n * Hook for listing all assistants, with optional parameters provided for pagination and sorting\n */\nexport const useListAssistantsQuery = <TData = t.AssistantListResponse>(\n params?: t.AssistantListParams,\n config?: UseQueryOptions<t.AssistantListResponse, unknown, TData>,\n): QueryObserverResult<TData> => {\n return useQuery<t.AssistantListResponse, unknown, TData>(\n [QueryKeys.assistants, params],\n () => dataService.listAssistants(params),\n {\n // Example selector to sort them by created_at\n // select: (res) => {\n // return res.data.sort((a, b) => a.created_at - b.created_at);\n // },\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n retry: false,\n ...config,\n },\n );\n};\n\nexport const useListAssistantsInfiniteQuery = (\n params?: t.AssistantListParams,\n config?: UseInfiniteQueryOptions<t.AssistantListResponse, Error>,\n) => {\n return useInfiniteQuery<t.AssistantListResponse, Error>(\n ['assistantsList', params],\n ({ pageParam = '' }) => dataService.listAssistants({ ...params, after: pageParam }),\n {\n getNextPageParam: (lastPage) => {\n // lastPage is of type AssistantListResponse, you can use the has_more and last_id from it directly\n if (lastPage.has_more) {\n return lastPage.last_id;\n }\n return undefined;\n },\n ...config,\n },\n );\n};\n\n/**\n * Hook for creating a new assistant\n */\nexport const useCreateAssistantMutation = (): UseMutationResult<\n t.Assistant,\n Error,\n t.AssistantCreateParams\n> => {\n const queryClient = useQueryClient();\n return useMutation(\n (newAssistantData: t.AssistantCreateParams) => dataService.createAssistant(newAssistantData),\n {\n onSuccess: () => {\n // Invalidate and refetch assistants query to update list\n queryClient.invalidateQueries([QueryKeys.assistants]);\n },\n },\n );\n};\n\n/**\n * Hook for retrieving details about a single assistant\n */\nexport const useGetAssistantByIdQuery = (\n assistant_id: string,\n config?: UseQueryOptions<t.Assistant>,\n): QueryObserverResult<t.Assistant> => {\n return useQuery<t.Assistant>(\n [QueryKeys.assistant, assistant_id],\n () => dataService.getAssistantById(assistant_id),\n {\n enabled: !!assistant_id, // Query will not execute until the assistant_id exists\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n retry: false,\n ...config,\n },\n );\n};\n\n/**\n * Hook for updating an assistant\n */\nexport const useUpdateAssistantMutation = (): UseMutationResult<\n t.Assistant,\n Error,\n { assistant_id: string; data: t.AssistantUpdateParams }\n> => {\n const queryClient = useQueryClient();\n return useMutation(\n ({ assistant_id, data }: { assistant_id: string; data: t.AssistantUpdateParams }) =>\n dataService.updateAssistant(assistant_id, data),\n {\n onSuccess: (_, { assistant_id }) => {\n // Invalidate and refetch assistant details query\n queryClient.invalidateQueries([QueryKeys.assistant, assistant_id]);\n // Optionally invalidate and refetch list of assistants\n queryClient.invalidateQueries([QueryKeys.assistants]);\n },\n },\n );\n};\n\n/**\n * Hook for deleting an assistant\n */\nexport const useDeleteAssistantMutation = (): UseMutationResult<\n void,\n Error,\n { assistant_id: string }\n> => {\n const queryClient = useQueryClient();\n return useMutation(\n ({ assistant_id }: { assistant_id: string }) => dataService.deleteAssistant(assistant_id),\n {\n onSuccess: () => {\n // Invalidate and refetch assistant list query\n queryClient.invalidateQueries([QueryKeys.assistants]);\n },\n },\n );\n};\n"],"names":["messages","conversationId","messageId","concat","keysEndpoint","search","q","pageNumber","assistants","id","_post","url","data","axios","post","JSON","stringify","headers","_a","sent","isRefreshing","failedQueue","refreshToken","retry","endpoints.refreshToken","processQueue","error","token","forEach","prom","reject","resolve","interceptors","response","use","__awaiter","originalRequest","config","status","_retry","Promise","push","_b","err_1","includes","defaults","common","setTokenHeader","window","dispatchEvent","CustomEvent","detail","location","href","err_2","request","get","options","__assign","postMultiPart","formData","put","delete","deleteWithOptions","patch","revokeUserKey","name","endpoints.revokeUserKey","revokeAllUserKeys","getConversationById","endpoints.conversationById","updateUserKey","payload","value","Error","QueryKeys","MutationKeys","userKeyQuery","endpoints.userKeyQuery","listAssistants","params","endpoints.assistants","useAbortRequestWithMessage","queryClient","useQueryClient","useMutation","endpoint","abortKey","message","endpoints.abortRequest","arg","dataService.abortRequestWithMessage","onSuccess","invalidateQueries","balance","useGetUserQuery","useQuery","user","refetchOnWindowFocus","refetchOnReconnect","refetchOnMount","useGetMessagesByConvoId","endpoints.messages","useGetUserBalance","useGetConversationByIdQuery","conversation","dataService.getConversationById","useGetConvoIdQuery","defaultQuery","convosQueryKey","allConversations","active","convosQuery","getQueryData","convo","conversations","find","c","useGetConversationByIdMutation","useUpdateConversationMutation","dataService.updateConversation","useUpdateMessageMutation","text","dataService.updateMessage","useUpdateUserKeysMutation","dataService.updateUserKey","useDeleteConversationMutation","dataService.deleteConversation","useClearConversationsMutation","useRevokeUserKeyMutation","dataService.revokeUserKey","useRevokeAllUserKeysMutation","dataService.revokeAllUserKeys","useGetConversationsQuery","endpoints.conversations","dataService.getConversations","useGetSearchEnabledQuery","searchEnabled","useGetEndpointsQuery","endpoints","staleTime","Infinity","useGetModelsQuery","models","useCreatePresetMutation","dataService.createPreset","presets","useDeletePresetMutation","useSearchQuery","searchQuery","searchResults","endpoints.search","dataService.searchConversations","useUpdateTokenCountMutation","dataService.updateTokenCount","tokenCount","useLoginUserMutation","dataService.login","onMutate","removeQueries","localStorage","removeItem","useRegisterUserMutation","dataService.register","useRefreshTokenMutation","useUserKeyQuery","dataService.userKeyQuery","expiresAt","useRequestPasswordResetMutation","dataService.requestPasswordReset","useResetPasswordMutation","dataService.resetPassword","useAvailablePluginsQuery","availablePlugins","useUpdateUserPluginsMutation","dataService.updateUserPlugins","useGetStartupConfig","startupConfig","useListAssistantsQuery","dataService.listAssistants","useListAssistantsInfiniteQuery","useInfiniteQuery","pageParam","after","getNextPageParam","lastPage","has_more","last_id","useCreateAssistantMutation","newAssistantData","useGetAssistantByIdQuery","assistant_id","assistant","dataService.getAssistantById","enabled","useUpdateAssistantMutation","dataService.updateAssistant","_","useDeleteAssistantMutation","dataService.deleteAssistant"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../src/api-endpoints.ts","../../src/request.ts","../../src/headers-helpers.ts","../../src/data-service.ts","../../src/keys.ts","../../src/react-query/react-query-service.ts","../../src/react-query/assistants.ts"],"sourcesContent":["export const user = () => '/api/user';\n\nexport const balance = () => '/api/balance';\n\nexport const userPlugins = () => '/api/user/plugins';\n\nexport const messages = (conversationId: string, messageId?: string) =>\n `/api/messages/${conversationId}${messageId ? `/${messageId}` : ''}`;\n\nconst keysEndpoint = '/api/keys';\n\nexport const keys = () => keysEndpoint;\n\nexport const userKeyQuery = (name: string) => `${keysEndpoint}?name=${name}`;\n\nexport const revokeUserKey = (name: string) => `${keysEndpoint}/${name}`;\n\nexport const revokeAllUserKeys = () => `${keysEndpoint}?all=true`;\n\nexport const abortRequest = (endpoint: string) => `/api/ask/${endpoint}/abort`;\n\nexport const conversations = (pageNumber: string) => `/api/convos?pageNumber=${pageNumber}`;\n\nexport const conversationById = (id: string) => `/api/convos/${id}`;\n\nexport const updateConversation = () => '/api/convos/update';\n\nexport const deleteConversation = () => '/api/convos/clear';\n\nexport const search = (q: string, pageNumber: string) =>\n `/api/search?q=${q}&pageNumber=${pageNumber}`;\n\nexport const searchEnabled = () => '/api/search/enable';\n\nexport const presets = () => '/api/presets';\n\nexport const deletePreset = () => '/api/presets/delete';\n\nexport const aiEndpoints = () => '/api/endpoints';\n\nexport const endpointsConfigOverride = () => '/api/endpoints/config/override';\n\nexport const models = () => '/api/models';\n\nexport const tokenizer = () => '/api/tokenizer';\n\nexport const login = () => '/api/auth/login';\n\nexport const logout = () => '/api/auth/logout';\n\nexport const register = () => '/api/auth/register';\n\nexport const loginFacebook = () => '/api/auth/facebook';\n\nexport const loginGoogle = () => '/api/auth/google';\n\nexport const refreshToken = (retry?: boolean) => `/api/auth/refresh${retry ? '?retry=true' : ''}`;\n\nexport const requestPasswordReset = () => '/api/auth/requestPasswordReset';\n\nexport const resetPassword = () => '/api/auth/resetPassword';\n\nexport const plugins = () => '/api/plugins';\n\nexport const config = () => '/api/config';\n\nexport const assistants = (id?: string) => `/api/assistants${id ? `/${id}` : ''}`;\n\nexport const files = () => '/api/files';\n\nexport const images = () => `${files()}/images`;\n\nexport const avatar = () => `${images()}/avatar`;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport axios, { AxiosRequestConfig, AxiosError } from 'axios';\nimport { setTokenHeader } from './headers-helpers';\nimport * as endpoints from './api-endpoints';\n\nasync function _get<T>(url: string, options?: AxiosRequestConfig): Promise<T> {\n const response = await axios.get(url, { ...options });\n return response.data;\n}\n\nasync function _post(url: string, data?: any) {\n const response = await axios.post(url, JSON.stringify(data), {\n headers: { 'Content-Type': 'application/json' },\n });\n return response.data;\n}\n\nasync function _postMultiPart(url: string, formData: FormData, options?: AxiosRequestConfig) {\n const response = await axios.post(url, formData, {\n ...options,\n headers: { 'Content-Type': 'multipart/form-data' },\n });\n return response.data;\n}\n\nasync function _put(url: string, data?: any) {\n const response = await axios.put(url, JSON.stringify(data), {\n headers: { 'Content-Type': 'application/json' },\n });\n return response.data;\n}\n\nasync function _delete<T>(url: string): Promise<T> {\n const response = await axios.delete(url);\n return response.data;\n}\n\nasync function _deleteWithOptions<T>(url: string, options?: AxiosRequestConfig): Promise<T> {\n const response = await axios.delete(url, { ...options });\n return response.data;\n}\n\nasync function _patch(url: string, data?: any) {\n const response = await axios.patch(url, JSON.stringify(data), {\n headers: { 'Content-Type': 'application/json' },\n });\n return response.data;\n}\n\nlet isRefreshing = false;\nlet failedQueue: { resolve: (value?: any) => void; reject: (reason?: any) => void }[] = [];\n\nconst refreshToken = (retry?: boolean) => _post(endpoints.refreshToken(retry));\n\nconst processQueue = (error: AxiosError | null, token: string | null = null) => {\n failedQueue.forEach((prom) => {\n if (error) {\n prom.reject(error);\n } else {\n prom.resolve(token);\n }\n });\n failedQueue = [];\n};\n\naxios.interceptors.response.use(\n (response) => response,\n async (error) => {\n const originalRequest = error.config;\n\n if (error.response.status === 401 && !originalRequest._retry) {\n originalRequest._retry = true;\n\n if (isRefreshing) {\n try {\n const token = await new Promise((resolve, reject) => {\n failedQueue.push({ resolve, reject });\n });\n originalRequest.headers['Authorization'] = 'Bearer ' + token;\n return await axios(originalRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n }\n\n isRefreshing = true;\n\n try {\n const { token } = await refreshToken(\n // Handle edge case where we get a blank screen if the initial 401 error is from a refresh token request\n originalRequest.url?.includes('api/auth/refresh') ? true : false,\n );\n\n if (token) {\n originalRequest.headers['Authorization'] = 'Bearer ' + token;\n setTokenHeader(token);\n window.dispatchEvent(new CustomEvent('tokenUpdated', { detail: token }));\n processQueue(null, token);\n return await axios(originalRequest);\n } else {\n window.location.href = '/login';\n }\n } catch (err) {\n processQueue(err as AxiosError, null);\n return Promise.reject(err);\n } finally {\n isRefreshing = false;\n }\n }\n\n return Promise.reject(error);\n },\n);\n\nexport default {\n get: _get,\n post: _post,\n postMultiPart: _postMultiPart,\n put: _put,\n delete: _delete,\n deleteWithOptions: _deleteWithOptions,\n patch: _patch,\n refreshToken,\n};\n","import axios from 'axios';\n\nexport function setAcceptLanguageHeader(value: string): void {\n axios.defaults.headers.common['Accept-Language'] = value;\n}\n\nexport function setTokenHeader(token: string) {\n axios.defaults.headers.common['Authorization'] = 'Bearer ' + token;\n}\n","import * as f from './types/files';\nimport * as m from './types/mutations';\nimport * as a from './types/assistants';\nimport * as t from './types';\nimport * as s from './schemas';\nimport request from './request';\nimport * as endpoints from './api-endpoints';\n\nexport function getConversations(pageNumber: string): Promise<t.TGetConversationsResponse> {\n return request.get(endpoints.conversations(pageNumber));\n}\n\nexport function abortRequestWithMessage(\n endpoint: string,\n abortKey: string,\n message: string,\n): Promise<void> {\n return request.post(endpoints.abortRequest(endpoint), { arg: { abortKey, message } });\n}\n\nexport function deleteConversation(payload: t.TDeleteConversationRequest) {\n //todo: this should be a DELETE request\n return request.post(endpoints.deleteConversation(), { arg: payload });\n}\n\nexport function clearAllConversations(): Promise<unknown> {\n return request.post(endpoints.deleteConversation(), { arg: {} });\n}\n\nexport function revokeUserKey(name: string): Promise<unknown> {\n return request.delete(endpoints.revokeUserKey(name));\n}\n\nexport function revokeAllUserKeys(): Promise<unknown> {\n return request.delete(endpoints.revokeAllUserKeys());\n}\n\nexport function getMessagesByConvoId(conversationId: string): Promise<s.TMessage[]> {\n if (conversationId === 'new') {\n return Promise.resolve([]);\n }\n return request.get(endpoints.messages(conversationId));\n}\n\nexport function getConversationById(id: string): Promise<s.TConversation> {\n return request.get(endpoints.conversationById(id));\n}\n\nexport function updateConversation(\n payload: t.TUpdateConversationRequest,\n): Promise<t.TUpdateConversationResponse> {\n return request.post(endpoints.updateConversation(), { arg: payload });\n}\n\nexport function updateMessage(payload: t.TUpdateMessageRequest): Promise<unknown> {\n const { conversationId, messageId, text } = payload;\n if (!conversationId) {\n throw new Error('conversationId is required');\n }\n\n return request.put(endpoints.messages(conversationId, messageId), { text });\n}\n\nexport function updateUserKey(payload: t.TUpdateUserKeyRequest) {\n const { value } = payload;\n if (!value) {\n throw new Error('value is required');\n }\n\n return request.put(endpoints.keys(), payload);\n}\n\nexport function getPresets(): Promise<s.TPreset[]> {\n return request.get(endpoints.presets());\n}\n\nexport function createPreset(payload: s.TPreset): Promise<s.TPreset> {\n return request.post(endpoints.presets(), payload);\n}\n\nexport function updatePreset(payload: s.TPreset): Promise<s.TPreset> {\n return request.post(endpoints.presets(), payload);\n}\n\nexport function deletePreset(arg: s.TPreset | undefined): Promise<m.PresetDeleteResponse> {\n return request.post(endpoints.deletePreset(), arg);\n}\n\nexport function getSearchEnabled(): Promise<boolean> {\n return request.get(endpoints.searchEnabled());\n}\n\nexport function getUser(): Promise<t.TUser> {\n return request.get(endpoints.user());\n}\n\nexport function getUserBalance(): Promise<string> {\n return request.get(endpoints.balance());\n}\n\nexport const searchConversations = async (\n q: string,\n pageNumber: string,\n): Promise<t.TSearchResults> => {\n return request.get(endpoints.search(q, pageNumber));\n};\n\nexport const updateTokenCount = (text: string) => {\n return request.post(endpoints.tokenizer(), { arg: text });\n};\n\nexport const login = (payload: t.TLoginUser) => {\n return request.post(endpoints.login(), payload);\n};\n\nexport const logout = () => {\n return request.post(endpoints.logout());\n};\n\nexport const register = (payload: t.TRegisterUser) => {\n return request.post(endpoints.register(), payload);\n};\n\nexport const userKeyQuery = (name: string): Promise<t.TCheckUserKeyResponse> =>\n request.get(endpoints.userKeyQuery(name));\n\nexport const getLoginGoogle = () => {\n return request.get(endpoints.loginGoogle());\n};\n\nexport const requestPasswordReset = (\n payload: t.TRequestPasswordReset,\n): Promise<t.TRequestPasswordResetResponse> => {\n return request.post(endpoints.requestPasswordReset(), payload);\n};\n\nexport const resetPassword = (payload: t.TResetPassword) => {\n return request.post(endpoints.resetPassword(), payload);\n};\n\nexport const getAvailablePlugins = (): Promise<s.TPlugin[]> => {\n return request.get(endpoints.plugins());\n};\n\nexport const updateUserPlugins = (payload: t.TUpdateUserPlugins) => {\n return request.post(endpoints.userPlugins(), payload);\n};\n\n/* Config */\n\nexport const getStartupConfig = (): Promise<t.TStartupConfig> => {\n return request.get(endpoints.config());\n};\n\nexport const getAIEndpoints = (): Promise<t.TEndpointsConfig> => {\n return request.get(endpoints.aiEndpoints());\n};\n\nexport const getModels = async (): Promise<t.TModelsConfig> => {\n return request.get(endpoints.models());\n};\n\nexport const getEndpointsConfigOverride = (): Promise<unknown | boolean> => {\n return request.get(endpoints.endpointsConfigOverride());\n};\n\n/* Assistants */\n\nexport const createAssistant = (data: a.AssistantCreateParams): Promise<a.Assistant> => {\n return request.post(endpoints.assistants(), data);\n};\n\nexport const getAssistantById = (assistant_id: string): Promise<a.Assistant> => {\n return request.get(endpoints.assistants(assistant_id));\n};\n\nexport const updateAssistant = (\n assistant_id: string,\n data: a.AssistantUpdateParams,\n): Promise<a.Assistant> => {\n return request.patch(endpoints.assistants(assistant_id), data);\n};\n\nexport const deleteAssistant = (assistant_id: string): Promise<void> => {\n return request.delete(endpoints.assistants(assistant_id));\n};\n\nexport const listAssistants = (\n params?: a.AssistantListParams,\n): Promise<a.AssistantListResponse> => {\n return request.get(endpoints.assistants(), { params });\n};\n\n/* Files */\n\nexport const getFiles = (): Promise<f.TFile[]> => {\n return request.get(endpoints.files());\n};\n\nexport const uploadImage = (data: FormData): Promise<f.TFileUpload> => {\n return request.postMultiPart(endpoints.images(), data);\n};\n\nexport const uploadAvatar = (data: FormData): Promise<f.AvatarUploadResponse> => {\n return request.postMultiPart(endpoints.avatar(), data);\n};\n\nexport const deleteFiles = async (files: f.BatchFile[]): Promise<f.DeleteFilesResponse> =>\n request.deleteWithOptions(endpoints.files(), {\n data: { files },\n });\n","export enum QueryKeys {\n messages = 'messages',\n allConversations = 'allConversations',\n conversation = 'conversation',\n searchEnabled = 'searchEnabled',\n user = 'user',\n name = 'name', // user key name\n models = 'models',\n balance = 'balance',\n endpoints = 'endpoints',\n presets = 'presets',\n searchResults = 'searchResults',\n tokenCount = 'tokenCount',\n availablePlugins = 'availablePlugins',\n startupConfig = 'startupConfig',\n assistants = 'assistants',\n assistant = 'assistant',\n endpointsConfigOverride = 'endpointsConfigOverride',\n files = 'files',\n}\n\nexport enum MutationKeys {\n imageUpload = 'imageUpload',\n fileDelete = 'fileDelete',\n updatePreset = 'updatePreset',\n deletePreset = 'deletePreset',\n logoutUser = 'logoutUser',\n avatarUpload = 'avatarUpload',\n}\n","import {\n UseQueryOptions,\n useQuery,\n useMutation,\n useQueryClient,\n UseMutationResult,\n QueryObserverResult,\n} from '@tanstack/react-query';\nimport * as t from '../types';\nimport * as s from '../schemas';\nimport * as m from '../types/mutations';\nimport * as dataService from '../data-service';\nimport request from '../request';\nimport { QueryKeys } from '../keys';\n\nexport const useAbortRequestWithMessage = (): UseMutationResult<\n void,\n Error,\n { endpoint: string; abortKey: string; message: string }\n> => {\n const queryClient = useQueryClient();\n return useMutation(\n ({ endpoint, abortKey, message }) =>\n dataService.abortRequestWithMessage(endpoint, abortKey, message),\n {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.balance]);\n },\n },\n );\n};\n\nexport const useGetUserQuery = (\n config?: UseQueryOptions<t.TUser>,\n): QueryObserverResult<t.TUser> => {\n return useQuery<t.TUser>([QueryKeys.user], () => dataService.getUser(), {\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n retry: false,\n ...config,\n });\n};\n\nexport const useGetMessagesByConvoId = <TData = s.TMessage[]>(\n id: string,\n config?: UseQueryOptions<s.TMessage[], unknown, TData>,\n): QueryObserverResult<TData> => {\n return useQuery<s.TMessage[], unknown, TData>(\n [QueryKeys.messages, id],\n () => dataService.getMessagesByConvoId(id),\n {\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n ...config,\n },\n );\n};\n\nexport const useGetUserBalance = (\n config?: UseQueryOptions<string>,\n): QueryObserverResult<string> => {\n return useQuery<string>([QueryKeys.balance], () => dataService.getUserBalance(), {\n refetchOnWindowFocus: true,\n refetchOnReconnect: true,\n refetchOnMount: true,\n ...config,\n });\n};\n\nexport const useGetConversationByIdQuery = (\n id: string,\n config?: UseQueryOptions<s.TConversation>,\n): QueryObserverResult<s.TConversation> => {\n return useQuery<s.TConversation>(\n [QueryKeys.conversation, id],\n () => dataService.getConversationById(id),\n {\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n ...config,\n },\n );\n};\n\n/* like above, but first try the convos query data */\nexport const useGetConvoIdQuery = (\n id: string,\n config?: UseQueryOptions<s.TConversation>,\n): QueryObserverResult<s.TConversation> => {\n const queryClient = useQueryClient();\n return useQuery<s.TConversation>(\n [QueryKeys.conversation, id],\n () => {\n const defaultQuery = () => dataService.getConversationById(id);\n\n const convosQueryKey = [QueryKeys.allConversations, { pageNumber: '1', active: true }];\n const convosQuery = queryClient.getQueryData<t.TGetConversationsResponse>(convosQueryKey);\n\n if (!convosQuery) {\n return defaultQuery();\n }\n\n const convo = convosQuery.conversations?.find((c) => c.conversationId === id);\n if (convo) {\n return convo;\n }\n\n return defaultQuery();\n },\n {\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n ...config,\n },\n );\n};\n\n//This isn't ideal because its just a query and we're using mutation, but it was the only way\n//to make it work with how the Chat component is structured\nexport const useGetConversationByIdMutation = (id: string): UseMutationResult<s.TConversation> => {\n const queryClient = useQueryClient();\n return useMutation(() => dataService.getConversationById(id), {\n // onSuccess: (res: s.TConversation) => {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.conversation, id]);\n },\n });\n};\n\nexport const useUpdateConversationMutation = (\n id: string,\n): UseMutationResult<\n t.TUpdateConversationResponse,\n unknown,\n t.TUpdateConversationRequest,\n unknown\n> => {\n const queryClient = useQueryClient();\n return useMutation(\n (payload: t.TUpdateConversationRequest) => dataService.updateConversation(payload),\n {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.conversation, id]);\n queryClient.invalidateQueries([QueryKeys.allConversations]);\n },\n },\n );\n};\n\nexport const useUpdateMessageMutation = (\n id: string,\n): UseMutationResult<unknown, unknown, t.TUpdateMessageRequest, unknown> => {\n const queryClient = useQueryClient();\n return useMutation((payload: t.TUpdateMessageRequest) => dataService.updateMessage(payload), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.messages, id]);\n },\n });\n};\n\nexport const useUpdateUserKeysMutation = (): UseMutationResult<\n t.TUser,\n unknown,\n t.TUpdateUserKeyRequest,\n unknown\n> => {\n const queryClient = useQueryClient();\n return useMutation((payload: t.TUpdateUserKeyRequest) => dataService.updateUserKey(payload), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.name]);\n },\n });\n};\n\nexport const useDeleteConversationMutation = (\n id?: string,\n): UseMutationResult<\n t.TDeleteConversationResponse,\n unknown,\n t.TDeleteConversationRequest,\n unknown\n> => {\n const queryClient = useQueryClient();\n return useMutation(\n (payload: t.TDeleteConversationRequest) => dataService.deleteConversation(payload),\n {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.conversation, id]);\n queryClient.invalidateQueries([QueryKeys.allConversations]);\n },\n },\n );\n};\n\nexport const useClearConversationsMutation = (): UseMutationResult<unknown> => {\n const queryClient = useQueryClient();\n return useMutation(() => dataService.clearAllConversations(), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.allConversations]);\n },\n });\n};\n\nexport const useRevokeUserKeyMutation = (name: string): UseMutationResult<unknown> => {\n const queryClient = useQueryClient();\n return useMutation(() => dataService.revokeUserKey(name), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.name]);\n },\n });\n};\n\nexport const useRevokeAllUserKeysMutation = (): UseMutationResult<unknown> => {\n const queryClient = useQueryClient();\n return useMutation(() => dataService.revokeAllUserKeys(), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.name]);\n },\n });\n};\n\nexport const useGetConversationsQuery = (\n pageNumber: string,\n config?: UseQueryOptions<t.TGetConversationsResponse>,\n): QueryObserverResult<t.TGetConversationsResponse> => {\n return useQuery<t.TGetConversationsResponse>(\n [QueryKeys.allConversations, { pageNumber, active: true }],\n () => dataService.getConversations(pageNumber),\n {\n refetchOnReconnect: false,\n refetchOnMount: false,\n retry: 1,\n ...config,\n },\n );\n};\n\nexport const useGetSearchEnabledQuery = (\n config?: UseQueryOptions<boolean>,\n): QueryObserverResult<boolean> => {\n return useQuery<boolean>([QueryKeys.searchEnabled], () => dataService.getSearchEnabled(), {\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n ...config,\n });\n};\n\nexport const useGetEndpointsQuery = <TData = t.TEndpointsConfig>(\n config?: UseQueryOptions<t.TEndpointsConfig, unknown, TData>,\n): QueryObserverResult<TData> => {\n return useQuery<t.TEndpointsConfig, unknown, TData>(\n [QueryKeys.endpoints],\n () => dataService.getAIEndpoints(),\n {\n staleTime: Infinity,\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n ...config,\n },\n );\n};\n\nexport const useGetModelsQuery = (\n config?: UseQueryOptions<t.TModelsConfig>,\n): QueryObserverResult<t.TModelsConfig> => {\n return useQuery<t.TModelsConfig>([QueryKeys.models], () => dataService.getModels(), {\n staleTime: Infinity,\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n ...config,\n });\n};\n\nexport const useCreatePresetMutation = (): UseMutationResult<\n s.TPreset,\n unknown,\n s.TPreset,\n unknown\n> => {\n const queryClient = useQueryClient();\n return useMutation((payload: s.TPreset) => dataService.createPreset(payload), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.presets]);\n },\n });\n};\n\nexport const useDeletePresetMutation = (): UseMutationResult<\n m.PresetDeleteResponse,\n unknown,\n s.TPreset | undefined,\n unknown\n> => {\n const queryClient = useQueryClient();\n return useMutation((payload: s.TPreset | undefined) => dataService.deletePreset(payload), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.presets]);\n },\n });\n};\n\nexport const useSearchQuery = (\n searchQuery: string,\n pageNumber: string,\n config?: UseQueryOptions<t.TSearchResults>,\n): QueryObserverResult<t.TSearchResults> => {\n return useQuery<t.TSearchResults>(\n [QueryKeys.searchResults, pageNumber, searchQuery],\n () => dataService.searchConversations(searchQuery, pageNumber),\n {\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n ...config,\n },\n );\n};\n\nexport const useUpdateTokenCountMutation = (): UseMutationResult<\n t.TUpdateTokenCountResponse,\n unknown,\n { text: string },\n unknown\n> => {\n const queryClient = useQueryClient();\n return useMutation(({ text }: { text: string }) => dataService.updateTokenCount(text), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.tokenCount]);\n },\n });\n};\n\nexport const useLoginUserMutation = (): UseMutationResult<\n t.TLoginResponse,\n unknown,\n t.TLoginUser,\n unknown\n> => {\n const queryClient = useQueryClient();\n return useMutation((payload: t.TLoginUser) => dataService.login(payload), {\n onMutate: () => {\n queryClient.removeQueries();\n localStorage.removeItem('lastConversationSetup');\n localStorage.removeItem('lastSelectedModel');\n localStorage.removeItem('lastSelectedTools');\n localStorage.removeItem('filesToDelete');\n localStorage.removeItem('lastAssistant');\n },\n });\n};\n\nexport const useRegisterUserMutation = (): UseMutationResult<\n unknown,\n unknown,\n t.TRegisterUser,\n unknown\n> => {\n const queryClient = useQueryClient();\n return useMutation((payload: t.TRegisterUser) => dataService.register(payload), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.user]);\n },\n });\n};\n\nexport const useRefreshTokenMutation = (): UseMutationResult<\n t.TRefreshTokenResponse,\n unknown,\n unknown,\n unknown\n> => {\n const queryClient = useQueryClient();\n return useMutation(() => request.refreshToken(), {\n onMutate: () => {\n queryClient.removeQueries();\n },\n });\n};\n\nexport const useUserKeyQuery = (\n name: string,\n config?: UseQueryOptions<t.TCheckUserKeyResponse>,\n): QueryObserverResult<t.TCheckUserKeyResponse> => {\n return useQuery<t.TCheckUserKeyResponse>(\n [QueryKeys.name, name],\n () => {\n if (!name) {\n return Promise.resolve({ expiresAt: '' });\n }\n return dataService.userKeyQuery(name);\n },\n {\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n retry: false,\n ...config,\n },\n );\n};\n\nexport const useRequestPasswordResetMutation = (): UseMutationResult<\n t.TRequestPasswordResetResponse,\n unknown,\n t.TRequestPasswordReset,\n unknown\n> => {\n return useMutation((payload: t.TRequestPasswordReset) =>\n dataService.requestPasswordReset(payload),\n );\n};\n\nexport const useResetPasswordMutation = (): UseMutationResult<\n unknown,\n unknown,\n t.TResetPassword,\n unknown\n> => {\n return useMutation((payload: t.TResetPassword) => dataService.resetPassword(payload));\n};\n\nexport const useAvailablePluginsQuery = (): QueryObserverResult<s.TPlugin[]> => {\n return useQuery<s.TPlugin[]>(\n [QueryKeys.availablePlugins],\n () => dataService.getAvailablePlugins(),\n {\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n },\n );\n};\n\nexport const useUpdateUserPluginsMutation = (): UseMutationResult<\n t.TUser,\n unknown,\n t.TUpdateUserPlugins,\n unknown\n> => {\n const queryClient = useQueryClient();\n return useMutation((payload: t.TUpdateUserPlugins) => dataService.updateUserPlugins(payload), {\n onSuccess: () => {\n queryClient.invalidateQueries([QueryKeys.user]);\n },\n });\n};\n\nexport const useGetStartupConfig = (): QueryObserverResult<t.TStartupConfig> => {\n return useQuery<t.TStartupConfig>(\n [QueryKeys.startupConfig],\n () => dataService.getStartupConfig(),\n {\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n },\n );\n};\n","import { useQuery, useMutation, useQueryClient, useInfiniteQuery } from '@tanstack/react-query';\nimport type {\n UseQueryOptions,\n UseMutationResult,\n QueryObserverResult,\n UseInfiniteQueryOptions,\n} from '@tanstack/react-query';\nimport * as t from '../types/assistants';\nimport * as dataService from '../data-service';\nimport { QueryKeys } from '../keys';\n\n/**\n * Hook for listing all assistants, with optional parameters provided for pagination and sorting\n */\nexport const useListAssistantsQuery = <TData = t.AssistantListResponse>(\n params?: t.AssistantListParams,\n config?: UseQueryOptions<t.AssistantListResponse, unknown, TData>,\n): QueryObserverResult<TData> => {\n return useQuery<t.AssistantListResponse, unknown, TData>(\n [QueryKeys.assistants, params],\n () => dataService.listAssistants(params),\n {\n // Example selector to sort them by created_at\n // select: (res) => {\n // return res.data.sort((a, b) => a.created_at - b.created_at);\n // },\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n retry: false,\n ...config,\n },\n );\n};\n\nexport const useListAssistantsInfiniteQuery = (\n params?: t.AssistantListParams,\n config?: UseInfiniteQueryOptions<t.AssistantListResponse, Error>,\n) => {\n return useInfiniteQuery<t.AssistantListResponse, Error>(\n ['assistantsList', params],\n ({ pageParam = '' }) => dataService.listAssistants({ ...params, after: pageParam }),\n {\n getNextPageParam: (lastPage) => {\n // lastPage is of type AssistantListResponse, you can use the has_more and last_id from it directly\n if (lastPage.has_more) {\n return lastPage.last_id;\n }\n return undefined;\n },\n ...config,\n },\n );\n};\n\n/**\n * Hook for creating a new assistant\n */\nexport const useCreateAssistantMutation = (): UseMutationResult<\n t.Assistant,\n Error,\n t.AssistantCreateParams\n> => {\n const queryClient = useQueryClient();\n return useMutation(\n (newAssistantData: t.AssistantCreateParams) => dataService.createAssistant(newAssistantData),\n {\n onSuccess: () => {\n // Invalidate and refetch assistants query to update list\n queryClient.invalidateQueries([QueryKeys.assistants]);\n },\n },\n );\n};\n\n/**\n * Hook for retrieving details about a single assistant\n */\nexport const useGetAssistantByIdQuery = (\n assistant_id: string,\n config?: UseQueryOptions<t.Assistant>,\n): QueryObserverResult<t.Assistant> => {\n return useQuery<t.Assistant>(\n [QueryKeys.assistant, assistant_id],\n () => dataService.getAssistantById(assistant_id),\n {\n enabled: !!assistant_id, // Query will not execute until the assistant_id exists\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n retry: false,\n ...config,\n },\n );\n};\n\n/**\n * Hook for updating an assistant\n */\nexport const useUpdateAssistantMutation = (): UseMutationResult<\n t.Assistant,\n Error,\n { assistant_id: string; data: t.AssistantUpdateParams }\n> => {\n const queryClient = useQueryClient();\n return useMutation(\n ({ assistant_id, data }: { assistant_id: string; data: t.AssistantUpdateParams }) =>\n dataService.updateAssistant(assistant_id, data),\n {\n onSuccess: (_, { assistant_id }) => {\n // Invalidate and refetch assistant details query\n queryClient.invalidateQueries([QueryKeys.assistant, assistant_id]);\n // Optionally invalidate and refetch list of assistants\n queryClient.invalidateQueries([QueryKeys.assistants]);\n },\n },\n );\n};\n\n/**\n * Hook for deleting an assistant\n */\nexport const useDeleteAssistantMutation = (): UseMutationResult<\n void,\n Error,\n { assistant_id: string }\n> => {\n const queryClient = useQueryClient();\n return useMutation(\n ({ assistant_id }: { assistant_id: string }) => dataService.deleteAssistant(assistant_id),\n {\n onSuccess: () => {\n // Invalidate and refetch assistant list query\n queryClient.invalidateQueries([QueryKeys.assistants]);\n },\n },\n );\n};\n"],"names":["messages","conversationId","messageId","concat","keysEndpoint","search","q","pageNumber","assistants","id","_post","url","data","axios","post","JSON","stringify","headers","_a","sent","isRefreshing","failedQueue","refreshToken","retry","endpoints.refreshToken","processQueue","error","token","forEach","prom","reject","resolve","interceptors","response","use","__awaiter","originalRequest","config","status","_retry","Promise","push","_b","err_1","includes","defaults","common","setTokenHeader","window","dispatchEvent","CustomEvent","detail","location","href","err_2","request","get","options","__assign","postMultiPart","formData","put","delete","deleteWithOptions","patch","revokeUserKey","name","endpoints.revokeUserKey","revokeAllUserKeys","getConversationById","endpoints.conversationById","updateUserKey","payload","value","Error","QueryKeys","MutationKeys","userKeyQuery","endpoints.userKeyQuery","listAssistants","params","endpoints.assistants","useAbortRequestWithMessage","queryClient","useQueryClient","useMutation","endpoint","abortKey","message","endpoints.abortRequest","arg","dataService.abortRequestWithMessage","onSuccess","invalidateQueries","balance","useGetUserQuery","useQuery","user","refetchOnWindowFocus","refetchOnReconnect","refetchOnMount","useGetMessagesByConvoId","endpoints.messages","useGetUserBalance","useGetConversationByIdQuery","conversation","dataService.getConversationById","useGetConvoIdQuery","defaultQuery","convosQueryKey","allConversations","active","convosQuery","getQueryData","convo","conversations","find","c","useGetConversationByIdMutation","useUpdateConversationMutation","dataService.updateConversation","useUpdateMessageMutation","text","dataService.updateMessage","useUpdateUserKeysMutation","dataService.updateUserKey","useDeleteConversationMutation","dataService.deleteConversation","useClearConversationsMutation","useRevokeUserKeyMutation","dataService.revokeUserKey","useRevokeAllUserKeysMutation","dataService.revokeAllUserKeys","useGetConversationsQuery","endpoints.conversations","dataService.getConversations","useGetSearchEnabledQuery","searchEnabled","useGetEndpointsQuery","endpoints","staleTime","Infinity","useGetModelsQuery","models","useCreatePresetMutation","dataService.createPreset","presets","useDeletePresetMutation","useSearchQuery","searchQuery","searchResults","endpoints.search","dataService.searchConversations","useUpdateTokenCountMutation","dataService.updateTokenCount","tokenCount","useLoginUserMutation","dataService.login","onMutate","removeQueries","localStorage","removeItem","useRegisterUserMutation","dataService.register","useRefreshTokenMutation","useUserKeyQuery","dataService.userKeyQuery","expiresAt","useRequestPasswordResetMutation","dataService.requestPasswordReset","useResetPasswordMutation","dataService.resetPassword","useAvailablePluginsQuery","availablePlugins","useUpdateUserPluginsMutation","dataService.updateUserPlugins","useGetStartupConfig","startupConfig","useListAssistantsQuery","dataService.listAssistants","useListAssistantsInfiniteQuery","useInfiniteQuery","pageParam","after","getNextPageParam","lastPage","has_more","last_id","useCreateAssistantMutation","newAssistantData","useGetAssistantByIdQuery","assistant_id","assistant","dataService.getAssistantById","enabled","useUpdateAssistantMutation","dataService.updateAssistant","_","useDeleteAssistantMutation","dataService.deleteAssistant"],"mappings":"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"}
|
package/package.json
CHANGED
package/src/api-endpoints.ts
CHANGED
package/src/config.ts
ADDED
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { EModelEndpoint, eModelEndpointSchema } from './schemas';
|
|
3
|
+
import { FileSources } from './types/files';
|
|
4
|
+
|
|
5
|
+
export const fileSourceSchema = z.nativeEnum(FileSources);
|
|
6
|
+
|
|
7
|
+
export const endpointSchema = z.object({
|
|
8
|
+
name: z.string().refine((value) => !eModelEndpointSchema.safeParse(value).success, {
|
|
9
|
+
message: `Value cannot be one of the default endpoint (EModelEndpoint) values: ${Object.values(
|
|
10
|
+
EModelEndpoint,
|
|
11
|
+
).join(', ')}`,
|
|
12
|
+
}),
|
|
13
|
+
apiKey: z.string(),
|
|
14
|
+
baseURL: z.string(),
|
|
15
|
+
models: z.object({
|
|
16
|
+
default: z.array(z.string()).min(1),
|
|
17
|
+
fetch: z.boolean().optional(),
|
|
18
|
+
}),
|
|
19
|
+
titleConvo: z.boolean().optional(),
|
|
20
|
+
titleMethod: z.union([z.literal('completion'), z.literal('functions')]).optional(),
|
|
21
|
+
titleModel: z.string().optional(),
|
|
22
|
+
summarize: z.boolean().optional(),
|
|
23
|
+
summaryModel: z.string().optional(),
|
|
24
|
+
forcePrompt: z.boolean().optional(),
|
|
25
|
+
modelDisplayLabel: z.string().optional(),
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
export const configSchema = z.object({
|
|
29
|
+
version: z.string(),
|
|
30
|
+
cache: z.boolean(),
|
|
31
|
+
fileStrategy: fileSourceSchema.optional(),
|
|
32
|
+
endpoints: z
|
|
33
|
+
.object({
|
|
34
|
+
custom: z.array(endpointSchema.partial()),
|
|
35
|
+
})
|
|
36
|
+
.strict(),
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
export enum KnownEndpoints {
|
|
40
|
+
mistral = 'mistral',
|
|
41
|
+
openrouter = 'openrouter',
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export const defaultEndpoints: EModelEndpoint[] = [
|
|
45
|
+
EModelEndpoint.openAI,
|
|
46
|
+
EModelEndpoint.assistant,
|
|
47
|
+
EModelEndpoint.azureOpenAI,
|
|
48
|
+
EModelEndpoint.bingAI,
|
|
49
|
+
EModelEndpoint.chatGPTBrowser,
|
|
50
|
+
EModelEndpoint.gptPlugins,
|
|
51
|
+
EModelEndpoint.google,
|
|
52
|
+
EModelEndpoint.anthropic,
|
|
53
|
+
EModelEndpoint.custom,
|
|
54
|
+
];
|
|
55
|
+
|
|
56
|
+
export const alternateName = {
|
|
57
|
+
[EModelEndpoint.openAI]: 'OpenAI',
|
|
58
|
+
[EModelEndpoint.assistant]: 'Assistants',
|
|
59
|
+
[EModelEndpoint.azureOpenAI]: 'Azure OpenAI',
|
|
60
|
+
[EModelEndpoint.bingAI]: 'Bing',
|
|
61
|
+
[EModelEndpoint.chatGPTBrowser]: 'ChatGPT',
|
|
62
|
+
[EModelEndpoint.gptPlugins]: 'Plugins',
|
|
63
|
+
[EModelEndpoint.google]: 'Google',
|
|
64
|
+
[EModelEndpoint.anthropic]: 'Anthropic',
|
|
65
|
+
[EModelEndpoint.custom]: 'Custom',
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
export const defaultModels = {
|
|
69
|
+
[EModelEndpoint.google]: [
|
|
70
|
+
'gemini-pro',
|
|
71
|
+
'gemini-pro-vision',
|
|
72
|
+
'chat-bison',
|
|
73
|
+
'chat-bison-32k',
|
|
74
|
+
'codechat-bison',
|
|
75
|
+
'codechat-bison-32k',
|
|
76
|
+
'text-bison',
|
|
77
|
+
'text-bison-32k',
|
|
78
|
+
'text-unicorn',
|
|
79
|
+
'code-gecko',
|
|
80
|
+
'code-bison',
|
|
81
|
+
'code-bison-32k',
|
|
82
|
+
],
|
|
83
|
+
[EModelEndpoint.anthropic]: [
|
|
84
|
+
'claude-2.1',
|
|
85
|
+
'claude-2',
|
|
86
|
+
'claude-1.2',
|
|
87
|
+
'claude-1',
|
|
88
|
+
'claude-1-100k',
|
|
89
|
+
'claude-instant-1',
|
|
90
|
+
'claude-instant-1-100k',
|
|
91
|
+
],
|
|
92
|
+
[EModelEndpoint.openAI]: [
|
|
93
|
+
'gpt-3.5-turbo-16k-0613',
|
|
94
|
+
'gpt-3.5-turbo-16k',
|
|
95
|
+
'gpt-4-1106-preview',
|
|
96
|
+
'gpt-3.5-turbo',
|
|
97
|
+
'gpt-3.5-turbo-1106',
|
|
98
|
+
'gpt-4-vision-preview',
|
|
99
|
+
'gpt-4',
|
|
100
|
+
'gpt-3.5-turbo-instruct-0914',
|
|
101
|
+
'gpt-3.5-turbo-0613',
|
|
102
|
+
'gpt-3.5-turbo-0301',
|
|
103
|
+
'gpt-3.5-turbo-instruct',
|
|
104
|
+
'gpt-4-0613',
|
|
105
|
+
'text-davinci-003',
|
|
106
|
+
'gpt-4-0314',
|
|
107
|
+
],
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
export const EndpointURLs: { [key in EModelEndpoint]: string } = {
|
|
111
|
+
[EModelEndpoint.openAI]: `/api/ask/${EModelEndpoint.openAI}`,
|
|
112
|
+
[EModelEndpoint.bingAI]: `/api/ask/${EModelEndpoint.bingAI}`,
|
|
113
|
+
[EModelEndpoint.google]: `/api/ask/${EModelEndpoint.google}`,
|
|
114
|
+
[EModelEndpoint.custom]: `/api/ask/${EModelEndpoint.custom}`,
|
|
115
|
+
[EModelEndpoint.anthropic]: `/api/ask/${EModelEndpoint.anthropic}`,
|
|
116
|
+
[EModelEndpoint.gptPlugins]: `/api/ask/${EModelEndpoint.gptPlugins}`,
|
|
117
|
+
[EModelEndpoint.azureOpenAI]: `/api/ask/${EModelEndpoint.azureOpenAI}`,
|
|
118
|
+
[EModelEndpoint.chatGPTBrowser]: `/api/ask/${EModelEndpoint.chatGPTBrowser}`,
|
|
119
|
+
[EModelEndpoint.assistant]: '/api/assistants/chat',
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
export const modularEndpoints = new Set<EModelEndpoint | string>([
|
|
123
|
+
EModelEndpoint.gptPlugins,
|
|
124
|
+
EModelEndpoint.anthropic,
|
|
125
|
+
EModelEndpoint.google,
|
|
126
|
+
EModelEndpoint.openAI,
|
|
127
|
+
EModelEndpoint.azureOpenAI,
|
|
128
|
+
EModelEndpoint.custom,
|
|
129
|
+
]);
|
|
130
|
+
|
|
131
|
+
export const supportsFiles = {
|
|
132
|
+
[EModelEndpoint.openAI]: true,
|
|
133
|
+
[EModelEndpoint.google]: true,
|
|
134
|
+
[EModelEndpoint.assistant]: true,
|
|
135
|
+
[EModelEndpoint.azureOpenAI]: true,
|
|
136
|
+
[EModelEndpoint.custom]: true,
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
export const supportsBalanceCheck = {
|
|
140
|
+
[EModelEndpoint.openAI]: true,
|
|
141
|
+
[EModelEndpoint.azureOpenAI]: true,
|
|
142
|
+
[EModelEndpoint.gptPlugins]: true,
|
|
143
|
+
[EModelEndpoint.custom]: true,
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
export const visionModels = ['gpt-4-vision', 'llava-13b', 'gemini-pro-vision'];
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Enum for cache keys.
|
|
150
|
+
*/
|
|
151
|
+
export enum CacheKeys {
|
|
152
|
+
/**
|
|
153
|
+
* Key for the config store namespace.
|
|
154
|
+
*/
|
|
155
|
+
CONFIG_STORE = 'configStore',
|
|
156
|
+
/**
|
|
157
|
+
* Key for the plugins cache.
|
|
158
|
+
*/
|
|
159
|
+
PLUGINS = 'plugins',
|
|
160
|
+
/**
|
|
161
|
+
* Key for the model config cache.
|
|
162
|
+
*/
|
|
163
|
+
MODELS_CONFIG = 'modelsConfig',
|
|
164
|
+
/**
|
|
165
|
+
* Key for the default endpoint config cache.
|
|
166
|
+
*/
|
|
167
|
+
ENDPOINT_CONFIG = 'endpointsConfig',
|
|
168
|
+
/**
|
|
169
|
+
* Key for the custom config cache.
|
|
170
|
+
*/
|
|
171
|
+
CUSTOM_CONFIG = 'customConfig',
|
|
172
|
+
/**
|
|
173
|
+
* Key for the override config cache.
|
|
174
|
+
*/
|
|
175
|
+
OVERRIDE_CONFIG = 'overrideConfig',
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Enum for authentication keys.
|
|
180
|
+
*/
|
|
181
|
+
export enum AuthKeys {
|
|
182
|
+
/**
|
|
183
|
+
* Key for the Service Account to use Vertex AI.
|
|
184
|
+
*/
|
|
185
|
+
GOOGLE_SERVICE_KEY = 'GOOGLE_SERVICE_KEY',
|
|
186
|
+
/**
|
|
187
|
+
* API key to use Google Generative AI.
|
|
188
|
+
*/
|
|
189
|
+
GOOGLE_API_KEY = 'GOOGLE_API_KEY',
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* Enum for Image Detail Cost.
|
|
194
|
+
*
|
|
195
|
+
* **Low Res Fixed Cost:** `85`
|
|
196
|
+
*
|
|
197
|
+
* **High Res Calculation:**
|
|
198
|
+
*
|
|
199
|
+
* Number of `512px` Tiles * `170` + `85` (Additional Cost)
|
|
200
|
+
*/
|
|
201
|
+
export enum ImageDetailCost {
|
|
202
|
+
/**
|
|
203
|
+
* Low resolution is a fixed value.
|
|
204
|
+
*/
|
|
205
|
+
LOW = 85,
|
|
206
|
+
/**
|
|
207
|
+
* High resolution Cost Per Tile
|
|
208
|
+
*/
|
|
209
|
+
HIGH = 170,
|
|
210
|
+
/**
|
|
211
|
+
* Additional Cost added to High Resolution Total Cost
|
|
212
|
+
*/
|
|
213
|
+
ADDITIONAL = 85,
|
|
214
|
+
}
|
package/src/createPayload.ts
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
import { tConversationSchema } from './schemas';
|
|
2
1
|
import type { TSubmission, TMessage, TEndpointOption } from './types';
|
|
3
|
-
import {
|
|
2
|
+
import { tConvoUpdateSchema, EModelEndpoint } from './schemas';
|
|
3
|
+
import { EndpointURLs } from './config';
|
|
4
4
|
|
|
5
5
|
export default function createPayload(submission: TSubmission) {
|
|
6
6
|
const { conversation, message, messages, endpointOption, isEdited, isContinued } = submission;
|
|
7
|
-
const { conversationId } =
|
|
8
|
-
const { endpoint } = endpointOption as {
|
|
7
|
+
const { conversationId } = tConvoUpdateSchema.parse(conversation);
|
|
8
|
+
const { endpoint, endpointType } = endpointOption as {
|
|
9
|
+
endpoint: EModelEndpoint;
|
|
10
|
+
endpointType?: EModelEndpoint;
|
|
11
|
+
};
|
|
9
12
|
|
|
10
|
-
let server = EndpointURLs[endpoint];
|
|
13
|
+
let server = EndpointURLs[endpointType ?? endpoint];
|
|
11
14
|
|
|
12
15
|
if (isEdited && endpoint === EModelEndpoint.assistant) {
|
|
13
16
|
server += '/modify';
|
package/src/data-service.ts
CHANGED
|
@@ -193,10 +193,18 @@ export const listAssistants = (
|
|
|
193
193
|
|
|
194
194
|
/* Files */
|
|
195
195
|
|
|
196
|
-
export const
|
|
196
|
+
export const getFiles = (): Promise<f.TFile[]> => {
|
|
197
|
+
return request.get(endpoints.files());
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
export const uploadImage = (data: FormData): Promise<f.TFileUpload> => {
|
|
197
201
|
return request.postMultiPart(endpoints.images(), data);
|
|
198
202
|
};
|
|
199
203
|
|
|
204
|
+
export const uploadAvatar = (data: FormData): Promise<f.AvatarUploadResponse> => {
|
|
205
|
+
return request.postMultiPart(endpoints.avatar(), data);
|
|
206
|
+
};
|
|
207
|
+
|
|
200
208
|
export const deleteFiles = async (files: f.BatchFile[]): Promise<f.DeleteFilesResponse> =>
|
|
201
209
|
request.deleteWithOptions(endpoints.files(), {
|
|
202
210
|
data: { files },
|
package/src/index.ts
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
/*
|
|
1
|
+
/* config */
|
|
2
|
+
export * from './config';
|
|
3
|
+
/* schema helpers */
|
|
4
|
+
export * from './parsers';
|
|
5
|
+
/* types (exports schemas from `./types` as they contain needed in other defs) */
|
|
2
6
|
export * from './types';
|
|
3
7
|
export * from './types/assistants';
|
|
4
8
|
export * from './types/files';
|
|
5
9
|
export * from './types/mutations';
|
|
10
|
+
/* query/mutation keys */
|
|
6
11
|
export * from './keys';
|
|
7
12
|
/* api call helpers */
|
|
8
13
|
export * from './headers-helpers';
|
package/src/keys.ts
CHANGED
|
@@ -16,6 +16,7 @@ export enum QueryKeys {
|
|
|
16
16
|
assistants = 'assistants',
|
|
17
17
|
assistant = 'assistant',
|
|
18
18
|
endpointsConfigOverride = 'endpointsConfigOverride',
|
|
19
|
+
files = 'files',
|
|
19
20
|
}
|
|
20
21
|
|
|
21
22
|
export enum MutationKeys {
|
|
@@ -24,4 +25,5 @@ export enum MutationKeys {
|
|
|
24
25
|
updatePreset = 'updatePreset',
|
|
25
26
|
deletePreset = 'deletePreset',
|
|
26
27
|
logoutUser = 'logoutUser',
|
|
28
|
+
avatarUpload = 'avatarUpload',
|
|
27
29
|
}
|