@scalar/agent-chat 0.9.12 → 0.9.14
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/App.vue.d.ts +5 -3
- package/dist/App.vue.d.ts.map +1 -1
- package/dist/App.vue.js +7 -0
- package/dist/App.vue.js.map +1 -0
- package/dist/App.vue.script.js +43 -0
- package/dist/App.vue.script.js.map +1 -0
- package/dist/Chat.vue.js +7 -0
- package/dist/Chat.vue.js.map +1 -0
- package/dist/Chat.vue.script.js +48 -0
- package/dist/Chat.vue.script.js.map +1 -0
- package/dist/_virtual/_plugin-vue_export-helper.js +8 -0
- package/dist/api.d.ts +1 -3
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +74 -0
- package/dist/api.js.map +1 -0
- package/dist/client-tools/execute-request.d.ts +1 -1
- package/dist/client-tools/execute-request.js +88 -0
- package/dist/client-tools/execute-request.js.map +1 -0
- package/dist/components/ActionsDropdown.vue.js +9 -0
- package/dist/components/ActionsDropdown.vue.js.map +1 -0
- package/dist/components/ActionsDropdown.vue.script.js +33 -0
- package/dist/components/ActionsDropdown.vue.script.js.map +1 -0
- package/dist/components/ApprovalSection.vue.js +9 -0
- package/dist/components/ApprovalSection.vue.js.map +1 -0
- package/dist/components/ApprovalSection.vue.script.js +26 -0
- package/dist/components/ApprovalSection.vue.script.js.map +1 -0
- package/dist/components/AuthenticationProvided.vue.js +13 -0
- package/dist/components/AuthenticationProvided.vue.js.map +1 -0
- package/dist/components/AuthenticationRequired.vue.js +13 -0
- package/dist/components/AuthenticationRequired.vue.js.map +1 -0
- package/dist/components/AutosendPaused.vue.js +13 -0
- package/dist/components/AutosendPaused.vue.js.map +1 -0
- package/dist/components/BuildingRequest.vue.js +19 -0
- package/dist/components/BuildingRequest.vue.js.map +1 -0
- package/dist/components/ContextItem.vue.js +9 -0
- package/dist/components/ContextItem.vue.js.map +1 -0
- package/dist/components/ContextItem.vue.script.js +13 -0
- package/dist/components/ContextItem.vue.script.js.map +1 -0
- package/dist/components/ErrorMessage.vue.d.ts +1 -1
- package/dist/components/ErrorMessage.vue.js +9 -0
- package/dist/components/ErrorMessage.vue.js.map +1 -0
- package/dist/components/ErrorMessage.vue.script.js +22 -0
- package/dist/components/ErrorMessage.vue.script.js.map +1 -0
- package/dist/components/FreeMessagesInfoSection.vue.js +9 -0
- package/dist/components/FreeMessagesInfoSection.vue.js.map +1 -0
- package/dist/components/FreeMessagesInfoSection.vue.script.js +43 -0
- package/dist/components/FreeMessagesInfoSection.vue.script.js.map +1 -0
- package/dist/components/LoadingMiniOpenAPIDoc.vue.js +13 -0
- package/dist/components/LoadingMiniOpenAPIDoc.vue.js.map +1 -0
- package/dist/components/LoadingOpenAPISpecsSummary.vue.js +13 -0
- package/dist/components/LoadingOpenAPISpecsSummary.vue.js.map +1 -0
- package/dist/components/Logo.vue.js +23 -0
- package/dist/components/Logo.vue.js.map +1 -0
- package/dist/components/PaymentSection.vue.js +9 -0
- package/dist/components/PaymentSection.vue.js.map +1 -0
- package/dist/components/PaymentSection.vue.script.js +22 -0
- package/dist/components/PaymentSection.vue.script.js.map +1 -0
- package/dist/components/RequestApproved.vue.js +13 -0
- package/dist/components/RequestApproved.vue.js.map +1 -0
- package/dist/components/RequestFailed.vue.js +19 -0
- package/dist/components/RequestFailed.vue.js.map +1 -0
- package/dist/components/RequestPreview.vue.d.ts +1 -1
- package/dist/components/RequestPreview.vue.js +9 -0
- package/dist/components/RequestPreview.vue.js.map +1 -0
- package/dist/components/RequestPreview.vue.script.js +96 -0
- package/dist/components/RequestPreview.vue.script.js.map +1 -0
- package/dist/components/RequestRejected.vue.js +19 -0
- package/dist/components/RequestRejected.vue.js.map +1 -0
- package/dist/components/RequestSuccess.vue.js +13 -0
- package/dist/components/RequestSuccess.vue.js.map +1 -0
- package/dist/components/ResponseBody/ResponseBody.vue.d.ts +1 -1
- package/dist/components/ResponseBody/ResponseBody.vue.js +7 -0
- package/dist/components/ResponseBody/ResponseBody.vue.js.map +1 -0
- package/dist/components/ResponseBody/ResponseBody.vue.script.js +43 -0
- package/dist/components/ResponseBody/ResponseBody.vue.script.js.map +1 -0
- package/dist/components/ResponseBody/ResponseBodyInfo.vue.js +12 -0
- package/dist/components/ResponseBody/ResponseBodyInfo.vue.js.map +1 -0
- package/dist/components/ResponseBody/ResponseBodyPreview.vue.d.ts +1 -1
- package/dist/components/ResponseBody/ResponseBodyPreview.vue.js +9 -0
- package/dist/components/ResponseBody/ResponseBodyPreview.vue.js.map +1 -0
- package/dist/components/ResponseBody/ResponseBodyPreview.vue.script.js +59 -0
- package/dist/components/ResponseBody/ResponseBodyPreview.vue.script.js.map +1 -0
- package/dist/components/ResponseBody/ResponseBodyRaw.vue.js +7 -0
- package/dist/components/ResponseBody/ResponseBodyRaw.vue.js.map +1 -0
- package/dist/components/ResponseBody/ResponseBodyRaw.vue.script.js +22 -0
- package/dist/components/ResponseBody/ResponseBodyRaw.vue.script.js.map +1 -0
- package/dist/components/ResponseBody/ResponseBodyToggle.vue.js +7 -0
- package/dist/components/ResponseBody/ResponseBodyToggle.vue.js.map +1 -0
- package/dist/components/ResponseBody/ResponseBodyToggle.vue.script.js +23 -0
- package/dist/components/ResponseBody/ResponseBodyToggle.vue.script.js.map +1 -0
- package/dist/components/ResponseBody/helpers/media-types.js +223 -0
- package/dist/components/ResponseBody/helpers/media-types.js.map +1 -0
- package/dist/components/ResponseBody/helpers/process-response-body.js +33 -0
- package/dist/components/ResponseBody/helpers/process-response-body.js.map +1 -0
- package/dist/components/SearchPopover.vue.js +9 -0
- package/dist/components/SearchPopover.vue.js.map +1 -0
- package/dist/components/SearchPopover.vue.script.js +53 -0
- package/dist/components/SearchPopover.vue.script.js.map +1 -0
- package/dist/components/Selector.vue.js +7 -0
- package/dist/components/Selector.vue.js.map +1 -0
- package/dist/components/Selector.vue.script.js +62 -0
- package/dist/components/Selector.vue.script.js.map +1 -0
- package/dist/components/SendingRequest.vue.js +19 -0
- package/dist/components/SendingRequest.vue.js.map +1 -0
- package/dist/components/ServerSelector.vue.js +7 -0
- package/dist/components/ServerSelector.vue.js.map +1 -0
- package/dist/components/ServerSelector.vue.script.js +60 -0
- package/dist/components/ServerSelector.vue.script.js.map +1 -0
- package/dist/components/UploadSection.vue.d.ts +1 -1
- package/dist/components/UploadSection.vue.js +9 -0
- package/dist/components/UploadSection.vue.js.map +1 -0
- package/dist/components/UploadSection.vue.script.js +52 -0
- package/dist/components/UploadSection.vue.script.js.map +1 -0
- package/dist/consts/urls.js +12 -0
- package/dist/consts/urls.js.map +1 -0
- package/dist/entities/error/constants.js +6 -0
- package/dist/entities/error/constants.js.map +1 -0
- package/dist/entities/error/helpers.d.ts +1 -1
- package/dist/entities/error/helpers.js +11 -0
- package/dist/entities/error/helpers.js.map +1 -0
- package/dist/entities/index.d.ts +9 -9
- package/dist/entities/index.js +10 -2
- package/dist/entities/prompt/constants.js +6 -0
- package/dist/entities/prompt/constants.js.map +1 -0
- package/dist/entities/registry/document.js +14 -0
- package/dist/entities/registry/document.js.map +1 -0
- package/dist/entities/tools/ask-for-authentication.js +7 -0
- package/dist/entities/tools/ask-for-authentication.js.map +1 -0
- package/dist/entities/tools/constants.js +6 -0
- package/dist/entities/tools/constants.js.map +1 -0
- package/dist/entities/tools/execute-request.d.ts +1 -1
- package/dist/entities/tools/execute-request.js +13 -0
- package/dist/entities/tools/execute-request.js.map +1 -0
- package/dist/entities/tools/get-mini-openapi-spec.js +7 -0
- package/dist/entities/tools/get-mini-openapi-spec.js.map +1 -0
- package/dist/entities/tools/get-openapi-spec-summary.js +6 -0
- package/dist/entities/tools/get-openapi-spec-summary.js.map +1 -0
- package/dist/helpers.js +42 -0
- package/dist/helpers.js.map +1 -0
- package/dist/hooks/use-agent-key-documents.js +24 -0
- package/dist/hooks/use-agent-key-documents.js.map +1 -0
- package/dist/hooks/use-chat-approvals.d.ts +1 -1
- package/dist/hooks/use-chat-approvals.js +38 -0
- package/dist/hooks/use-chat-approvals.js.map +1 -0
- package/dist/hooks/use-chat-error.js +25 -0
- package/dist/hooks/use-chat-error.js.map +1 -0
- package/dist/hooks/use-chat-pending-client-tool-parts.js +14 -0
- package/dist/hooks/use-chat-pending-client-tool-parts.js.map +1 -0
- package/dist/hooks/use-chat-scroll.js +17 -0
- package/dist/hooks/use-chat-scroll.js.map +1 -0
- package/dist/hooks/use-curated-documents.js +14 -0
- package/dist/hooks/use-curated-documents.js.map +1 -0
- package/dist/hooks/use-search.d.ts +1 -1
- package/dist/hooks/use-search.js +23 -0
- package/dist/hooks/use-search.js.map +1 -0
- package/dist/hooks/use-signup-link.js +17 -0
- package/dist/hooks/use-signup-link.js.map +1 -0
- package/dist/hooks/use-term-and-conditions.js +20 -0
- package/dist/hooks/use-term-and-conditions.js.map +1 -0
- package/dist/hooks/use-upload-tmp-document.js +92 -0
- package/dist/hooks/use-upload-tmp-document.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2065
- package/dist/package.json +1 -1
- package/dist/plugins/persistance.js +16 -0
- package/dist/plugins/persistance.js.map +1 -0
- package/dist/registry/add-documents-to-store.d.ts +2 -2
- package/dist/registry/add-documents-to-store.js +36 -0
- package/dist/registry/add-documents-to-store.js.map +1 -0
- package/dist/registry/create-document-name.js +8 -0
- package/dist/registry/create-document-name.js.map +1 -0
- package/dist/state/state.d.ts +9 -7
- package/dist/state/state.d.ts.map +1 -1
- package/dist/state/state.js +153 -0
- package/dist/state/state.js.map +1 -0
- package/dist/views/Catalog/Catalog.vue.js +10 -0
- package/dist/views/Catalog/Catalog.vue.js.map +1 -0
- package/dist/views/Catalog/Catalog.vue.script.js +50 -0
- package/dist/views/Catalog/Catalog.vue.script.js.map +1 -0
- package/dist/views/Chat/Chat.vue.js +9 -0
- package/dist/views/Chat/Chat.vue.js.map +1 -0
- package/dist/views/Chat/Chat.vue.script.js +55 -0
- package/dist/views/Chat/Chat.vue.script.js.map +1 -0
- package/dist/views/Chat/Messages/AskForAuthentication.vue.d.ts +2 -2
- package/dist/views/Chat/Messages/AskForAuthentication.vue.js +9 -0
- package/dist/views/Chat/Messages/AskForAuthentication.vue.js.map +1 -0
- package/dist/views/Chat/Messages/AskForAuthentication.vue.script.js +72 -0
- package/dist/views/Chat/Messages/AskForAuthentication.vue.script.js.map +1 -0
- package/dist/views/Chat/Messages/ExecuteRequestTool.vue.d.ts +2 -2
- package/dist/views/Chat/Messages/ExecuteRequestTool.vue.js +9 -0
- package/dist/views/Chat/Messages/ExecuteRequestTool.vue.js.map +1 -0
- package/dist/views/Chat/Messages/ExecuteRequestTool.vue.script.js +26 -0
- package/dist/views/Chat/Messages/ExecuteRequestTool.vue.script.js.map +1 -0
- package/dist/views/Chat/Messages/GetMiniOpenAPIDocTool.vue.d.ts +2 -2
- package/dist/views/Chat/Messages/GetMiniOpenAPIDocTool.vue.js +9 -0
- package/dist/views/Chat/Messages/GetMiniOpenAPIDocTool.vue.js.map +1 -0
- package/dist/views/Chat/Messages/GetMiniOpenAPIDocTool.vue.script.js +39 -0
- package/dist/views/Chat/Messages/GetMiniOpenAPIDocTool.vue.script.js.map +1 -0
- package/dist/views/Chat/Messages/GetOpenAPISpecsSummary.vue.d.ts +2 -2
- package/dist/views/Chat/Messages/GetOpenAPISpecsSummary.vue.js +7 -0
- package/dist/views/Chat/Messages/GetOpenAPISpecsSummary.vue.js.map +1 -0
- package/dist/views/Chat/Messages/GetOpenAPISpecsSummary.vue.script.js +21 -0
- package/dist/views/Chat/Messages/GetOpenAPISpecsSummary.vue.script.js.map +1 -0
- package/dist/views/Chat/Messages/Text.vue.js +7 -0
- package/dist/views/Chat/Messages/Text.vue.js.map +1 -0
- package/dist/views/Chat/Messages/Text.vue.script.js +14 -0
- package/dist/views/Chat/Messages/Text.vue.script.js.map +1 -0
- package/dist/views/Layout.vue.js +9 -0
- package/dist/views/Layout.vue.js.map +1 -0
- package/dist/views/Layout.vue.script.js +25 -0
- package/dist/views/Layout.vue.script.js.map +1 -0
- package/dist/views/PromptForm.vue.js +9 -0
- package/dist/views/PromptForm.vue.js.map +1 -0
- package/dist/views/PromptForm.vue.script.js +202 -0
- package/dist/views/PromptForm.vue.script.js.map +1 -0
- package/dist/views/Settings/Auth.vue.js +7 -0
- package/dist/views/Settings/Auth.vue.js.map +1 -0
- package/dist/views/Settings/Auth.vue.script.js +63 -0
- package/dist/views/Settings/Auth.vue.script.js.map +1 -0
- package/dist/views/Settings/DocSettings.vue.js +9 -0
- package/dist/views/Settings/DocSettings.vue.js.map +1 -0
- package/dist/views/Settings/DocSettings.vue.script.js +48 -0
- package/dist/views/Settings/DocSettings.vue.script.js.map +1 -0
- package/dist/views/Settings/Settings.vue.js +10 -0
- package/dist/views/Settings/Settings.vue.js.map +1 -0
- package/dist/views/Settings/Settings.vue.script.js +59 -0
- package/dist/views/Settings/Settings.vue.script.js.map +1 -0
- package/dist/views/Start.vue.js +9 -0
- package/dist/views/Start.vue.js.map +1 -0
- package/dist/views/Start.vue.script.js +41 -0
- package/dist/views/Start.vue.script.js.map +1 -0
- package/package.json +9 -9
- package/dist/entities-NWeuOkBB.js +0 -28
- package/dist/entities-NWeuOkBB.js.map +0 -1
- package/dist/index.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","names":[],"sources":["../src/helpers.ts"],"sourcesContent":["import { mergeSecurity } from '@scalar/api-client/v2/blocks/scalar-auth-selector-block'\nimport { getSelectedServer } from '@scalar/api-client/v2/features/operation'\nimport { getServers } from '@scalar/api-client/v2/helpers'\nimport { REFERENCE_LS_KEYS, safeLocalStorage } from '@scalar/helpers/object/local-storage'\nimport type { OpenAPIV3_1 } from '@scalar/openapi-types'\nimport type { WorkspaceStore } from '@scalar/workspace-store/client'\nimport type { AuthStore } from '@scalar/workspace-store/entities/auth'\nimport { type Auth, AuthSchema } from '@scalar/workspace-store/entities/auth'\nimport type { WorkspaceDocument } from '@scalar/workspace-store/schemas'\nimport { coerceValue } from '@scalar/workspace-store/schemas/typebox-coerce'\nimport type { OperationObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\n\nexport function getOperations(doc: Partial<OpenAPIV3_1.Document>) {\n return Object.values(doc.paths ?? {}).flatMap((path) => Object.values(path ?? {})) as OperationObject[]\n}\n\n/** Flattens all security requirements from a document */\nfunction getSecurityFromDocument(documentName: string, document: WorkspaceDocument, authStore: AuthStore) {\n return Object.values(mergeSecurity(document?.components?.securitySchemes, {}, authStore, documentName))\n}\n\n/** Generate document settings from workspace store */\nexport function createDocumentSettings(workspaceStore: WorkspaceStore) {\n return Object.fromEntries(\n Object.entries(workspaceStore.workspace.documents).map(([key, document]) => {\n const servers = getServers(document.servers, {\n documentUrl: document?.['x-scalar-original-source-url'],\n })\n\n return [\n key,\n {\n activeServer: getSelectedServer(servers, document['x-scalar-selected-server']),\n securitySchemes: getSecurityFromDocument(key, document, workspaceStore.auth),\n },\n ]\n }),\n )\n}\n\n// Local storage helper instance, safely wrapped.\nconst storage = safeLocalStorage()\n\n/**\n * Provides an interface to store and retrieve authentication scheme\n * information in local storage, including both the available schemes and\n * the user's selected schemes.\n */\nexport const authStorage = () => {\n const getKey = (slug: string) => {\n return `${REFERENCE_LS_KEYS.AUTH}-${slug}`\n }\n\n return {\n /**\n * Retrieves and coerces the authentication schemes stored in local storage.\n */\n getAuth: (slug: string) => {\n const parsed = JSON.parse(storage.getItem(getKey(slug)) ?? '{}')\n return coerceValue(AuthSchema, parsed)\n },\n /**\n * Stores the authentication schemes in local storage.\n * @param value The Auth object to stringify and store.\n */\n setAuth: (slug: string, value: Auth) => {\n storage.setItem(getKey(slug), JSON.stringify(value))\n },\n }\n}\n\n/**\n * Restores authentication secrets from local storage to the workspace store.\n *\n * This function iterates through stored authentication schemes and restores\n * any secret values (keys starting with x-scalar-secret-) to the active\n * document's security schemes. It uses the current security schemes as the\n * source of truth, only restoring secrets for structures that exist in the\n * current document.\n */\nexport const restoreAuthSecretsFromStorage = ({\n documentName,\n workspaceStore,\n}: {\n documentName: string\n workspaceStore: WorkspaceStore\n}): void => {\n const authPersistence = authStorage()\n const auth = authPersistence.getAuth(documentName)\n workspaceStore.auth.load({ [documentName]: auth })\n}\n\nexport function safeParseJson(value: string) {\n try {\n return JSON.parse(value)\n } catch {\n return\n }\n}\n"],"mappings":";;;;;;;AAYA,SAAgB,EAAc,GAAoC;AAChE,QAAO,OAAO,OAAO,EAAI,SAAS,EAAE,CAAC,CAAC,SAAS,MAAS,OAAO,OAAO,KAAQ,EAAE,CAAC,CAAC;;AAIpF,SAAS,EAAwB,GAAsB,GAA6B,GAAsB;AACxG,QAAO,OAAO,OAAO,EAAc,GAAU,YAAY,iBAAiB,EAAE,EAAE,GAAW,EAAa,CAAC;;AAIzG,SAAgB,EAAuB,GAAgC;AACrE,QAAO,OAAO,YACZ,OAAO,QAAQ,EAAe,UAAU,UAAU,CAAC,KAAK,CAAC,GAAK,OAKrD,CACL,GACA;EACE,cAAc,EAPF,EAAW,EAAS,SAAS,EAC3C,aAAa,IAAW,iCACzB,CAAC,EAK2C,EAAS,4BAA4B;EAC9E,iBAAiB,EAAwB,GAAK,GAAU,EAAe,KAAK;EAC7E,CACF,CACD,CACH;;AAIH,IAAM,IAAU,GAAkB,EAOrB,UAAoB;CAC/B,IAAM,KAAU,MACP,GAAG,EAAkB,KAAK,GAAG;AAGtC,QAAO;EAIL,UAAU,MAED,EAAY,GADJ,KAAK,MAAM,EAAQ,QAAQ,EAAO,EAAK,CAAC,IAAI,KAAK,CAC1B;EAMxC,UAAU,GAAc,MAAgB;AACtC,KAAQ,QAAQ,EAAO,EAAK,EAAE,KAAK,UAAU,EAAM,CAAC;;EAEvD;GAYU,KAAiC,EAC5C,iBACA,wBAIU;CAEV,IAAM,IADkB,GAAa,CACR,QAAQ,EAAa;AAClD,GAAe,KAAK,KAAK,GAAG,IAAe,GAAM,CAAC;;AAGpD,SAAgB,EAAc,GAAe;AAC3C,KAAI;AACF,SAAO,KAAK,MAAM,EAAM;SAClB;AACN"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { useState as e } from "../state/state.js";
|
|
2
|
+
import { onMounted as t } from "vue";
|
|
3
|
+
import { useToasts as n } from "@scalar/use-toasts";
|
|
4
|
+
//#region src/hooks/use-agent-key-documents.ts
|
|
5
|
+
function r() {
|
|
6
|
+
let { api: r, addDocument: i, mode: a, getAgentKey: o } = e(), { toast: s } = n();
|
|
7
|
+
t(async () => {
|
|
8
|
+
if (a !== "full" || !o) return;
|
|
9
|
+
let e = await r.getKeyDocuments();
|
|
10
|
+
if (!e.success) {
|
|
11
|
+
s("Failed to fetch your OpenAPI document. The Agent key may be invalid.", "error");
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
e.data.documents.forEach(({ namespace: e, slug: t }) => i({
|
|
15
|
+
namespace: e,
|
|
16
|
+
slug: t,
|
|
17
|
+
removable: !1
|
|
18
|
+
}));
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
22
|
+
export { r as useAgentKeyDocuments };
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=use-agent-key-documents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-agent-key-documents.js","names":[],"sources":["../../src/hooks/use-agent-key-documents.ts"],"sourcesContent":["import { useToasts } from '@scalar/use-toasts'\nimport { onMounted } from 'vue'\n\nimport { useState } from '@/state/state'\n\nexport function useAgentKeyDocuments() {\n const { api, addDocument, mode, getAgentKey } = useState()\n const { toast } = useToasts()\n\n onMounted(async () => {\n if (mode !== 'full' || !getAgentKey) {\n return\n }\n\n const keyDocumentsResult = await api.getKeyDocuments()\n\n if (!keyDocumentsResult.success) {\n toast('Failed to fetch your OpenAPI document. The Agent key may be invalid.', 'error')\n return\n }\n\n keyDocumentsResult.data.documents.forEach(({ namespace, slug }) =>\n addDocument({ namespace, slug, removable: false }),\n )\n })\n}\n"],"mappings":";;;;AAKA,SAAgB,IAAuB;CACrC,IAAM,EAAE,QAAK,gBAAa,SAAM,mBAAgB,GAAU,EACpD,EAAE,aAAU,GAAW;AAE7B,GAAU,YAAY;AACpB,MAAI,MAAS,UAAU,CAAC,EACtB;EAGF,IAAM,IAAqB,MAAM,EAAI,iBAAiB;AAEtD,MAAI,CAAC,EAAmB,SAAS;AAC/B,KAAM,wEAAwE,QAAQ;AACtF;;AAGF,IAAmB,KAAK,UAAU,SAAS,EAAE,cAAW,cACtD,EAAY;GAAE;GAAW;GAAM,WAAW;GAAO,CAAC,CACnD;GACD"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { EXECUTE_CLIENT_SIDE_REQUEST_TOOL_NAME as e } from "../entities/tools/execute-request.js";
|
|
2
|
+
import { executeRequestTool as t } from "../client-tools/execute-request.js";
|
|
3
|
+
import { createDocumentSettings as n } from "../helpers.js";
|
|
4
|
+
import { useState as r } from "../state/state.js";
|
|
5
|
+
import { computed as i } from "vue";
|
|
6
|
+
//#region src/hooks/use-chat-approvals.ts
|
|
7
|
+
function a(e) {
|
|
8
|
+
return e.type === "tool-execute-request" && e.state === "input-available" && e.input?.method?.toLowerCase() !== "get";
|
|
9
|
+
}
|
|
10
|
+
function o() {
|
|
11
|
+
let o = r(), s = i(() => o.chat.messages.filter((e) => e.parts.some(a)).flatMap((e) => e.parts).filter(a));
|
|
12
|
+
async function c(r) {
|
|
13
|
+
let i = s.value.map(async (i) => {
|
|
14
|
+
if (!r) return await o.chat.addToolOutput({
|
|
15
|
+
tool: e,
|
|
16
|
+
toolCallId: i.toolCallId,
|
|
17
|
+
state: "output-error",
|
|
18
|
+
errorText: "The user denied the request."
|
|
19
|
+
});
|
|
20
|
+
await t({
|
|
21
|
+
documentSettings: n(o.workspaceStore),
|
|
22
|
+
proxyUrl: o.proxyUrl.value,
|
|
23
|
+
input: i.input,
|
|
24
|
+
toolCallId: i.toolCallId,
|
|
25
|
+
chat: o.chat
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
await Promise.all(i);
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
approvalRequiredParts: s,
|
|
32
|
+
respondToRequestApprovals: c
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
//#endregion
|
|
36
|
+
export { a as requestPartRequiresApproval, o as useRequestApprovals };
|
|
37
|
+
|
|
38
|
+
//# sourceMappingURL=use-chat-approvals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-chat-approvals.js","names":[],"sources":["../../src/hooks/use-chat-approvals.ts"],"sourcesContent":["import type { ToolUIPart, UIMessagePart } from 'ai'\nimport { computed } from 'vue'\n\nimport { executeRequestTool } from '@/client-tools/execute-request'\nimport { EXECUTE_CLIENT_SIDE_REQUEST_TOOL_NAME } from '@/entities'\nimport { createDocumentSettings } from '@/helpers'\nimport { type Tools, useState } from '@/state/state'\n\ntype RequestToolPart = ToolUIPart & {\n type: 'tool-execute-request'\n state: 'input-available'\n input: Tools['execute-request']['input']\n}\n\nexport function requestPartRequiresApproval(part: UIMessagePart<any, Tools>): part is RequestToolPart {\n return (\n part.type === (`tool-${EXECUTE_CLIENT_SIDE_REQUEST_TOOL_NAME}` as const) &&\n part.state === 'input-available' &&\n part.input?.method?.toLowerCase() !== 'get'\n )\n}\n\nexport function useRequestApprovals() {\n const state = useState()\n\n const approvalRequiredParts = computed(() => {\n return state.chat.messages\n .filter((message) => message.parts.some(requestPartRequiresApproval))\n .flatMap((message) => message.parts)\n .filter(requestPartRequiresApproval) as RequestToolPart[]\n })\n\n async function respondToRequestApprovals(approved: boolean) {\n const approvalPromises = approvalRequiredParts.value.map(async (toolPart) => {\n if (!approved) {\n return await state.chat.addToolOutput({\n tool: EXECUTE_CLIENT_SIDE_REQUEST_TOOL_NAME,\n toolCallId: toolPart.toolCallId,\n state: 'output-error',\n errorText: 'The user denied the request.',\n })\n }\n\n await executeRequestTool({\n documentSettings: createDocumentSettings(state.workspaceStore),\n proxyUrl: state.proxyUrl.value,\n input: toolPart.input,\n toolCallId: toolPart.toolCallId,\n chat: state.chat,\n })\n })\n\n await Promise.all(approvalPromises)\n }\n\n return { approvalRequiredParts, respondToRequestApprovals }\n}\n"],"mappings":";;;;;;AAcA,SAAgB,EAA4B,GAA0D;AACpG,QACE,EAAK,SAAU,0BACf,EAAK,UAAU,qBACf,EAAK,OAAO,QAAQ,aAAa,KAAK;;AAI1C,SAAgB,IAAsB;CACpC,IAAM,IAAQ,GAAU,EAElB,IAAwB,QACrB,EAAM,KAAK,SACf,QAAQ,MAAY,EAAQ,MAAM,KAAK,EAA4B,CAAC,CACpE,SAAS,MAAY,EAAQ,MAAM,CACnC,OAAO,EAA4B,CACtC;CAEF,eAAe,EAA0B,GAAmB;EAC1D,IAAM,IAAmB,EAAsB,MAAM,IAAI,OAAO,MAAa;AAC3E,OAAI,CAAC,EACH,QAAO,MAAM,EAAM,KAAK,cAAc;IACpC,MAAM;IACN,YAAY,EAAS;IACrB,OAAO;IACP,WAAW;IACZ,CAAC;AAGJ,SAAM,EAAmB;IACvB,kBAAkB,EAAuB,EAAM,eAAe;IAC9D,UAAU,EAAM,SAAS;IACzB,OAAO,EAAS;IAChB,YAAY,EAAS;IACrB,MAAM,EAAM;IACb,CAAC;IACF;AAEF,QAAM,QAAQ,IAAI,EAAiB;;AAGrC,QAAO;EAAE;EAAuB;EAA2B"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { safeParseJson as e } from "../helpers.js";
|
|
2
|
+
import { useState as t } from "../state/state.js";
|
|
3
|
+
import { computed as n } from "vue";
|
|
4
|
+
import { z as r } from "zod/mini";
|
|
5
|
+
//#region src/hooks/use-chat-error.ts
|
|
6
|
+
var i = r.object({
|
|
7
|
+
message: r.string(),
|
|
8
|
+
code: r.string(),
|
|
9
|
+
status: r.optional(r.number())
|
|
10
|
+
});
|
|
11
|
+
function a() {
|
|
12
|
+
let { chat: r } = t();
|
|
13
|
+
return n(() => {
|
|
14
|
+
if (!r.error) return;
|
|
15
|
+
let t = e(r.error.message), n = i.safeParse(t);
|
|
16
|
+
return !t || !n.success ? {
|
|
17
|
+
message: r.error.message,
|
|
18
|
+
code: "UNKNOWN_ERROR"
|
|
19
|
+
} : n.data;
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
//#endregion
|
|
23
|
+
export { a as useChatError };
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=use-chat-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-chat-error.js","names":[],"sources":["../../src/hooks/use-chat-error.ts"],"sourcesContent":["import { computed } from 'vue'\nimport { z } from 'zod/mini'\n\nimport { safeParseJson } from '@/helpers'\nimport { useState } from '@/state/state'\n\nconst chatErrorSchema = z.object({\n message: z.string(),\n code: z.string(),\n status: z.optional(z.number()),\n})\nexport type ChatError = z.infer<typeof chatErrorSchema>\n\nexport function useChatError() {\n const { chat } = useState()\n\n return computed(() => {\n if (!chat.error) return\n\n const errorJson = safeParseJson(chat.error.message)\n const parsedError = chatErrorSchema.safeParse(errorJson)\n\n if (!errorJson || !parsedError.success)\n return {\n message: chat.error.message,\n code: 'UNKNOWN_ERROR',\n }\n\n return parsedError.data\n })\n}\n"],"mappings":";;;;;AAMA,IAAM,IAAkB,EAAE,OAAO;CAC/B,SAAS,EAAE,QAAQ;CACnB,MAAM,EAAE,QAAQ;CAChB,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC;CAC/B,CAAC;AAGF,SAAgB,IAAe;CAC7B,IAAM,EAAE,YAAS,GAAU;AAE3B,QAAO,QAAe;AACpB,MAAI,CAAC,EAAK,MAAO;EAEjB,IAAM,IAAY,EAAc,EAAK,MAAM,QAAQ,EAC7C,IAAc,EAAgB,UAAU,EAAU;AAQxD,SANI,CAAC,KAAa,CAAC,EAAY,UACtB;GACL,SAAS,EAAK,MAAM;GACpB,MAAM;GACP,GAEI,EAAY;GACnB"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { useState as e } from "../state/state.js";
|
|
2
|
+
import { computed as t } from "vue";
|
|
3
|
+
//#region src/hooks/use-chat-pending-client-tool-parts.ts
|
|
4
|
+
function n(e) {
|
|
5
|
+
return e.type.startsWith("tool") && e.state === "input-available";
|
|
6
|
+
}
|
|
7
|
+
function r() {
|
|
8
|
+
let r = e();
|
|
9
|
+
return { pendingClientToolParts: t(() => r.chat.messages.filter((e) => e.parts.some(n)).flatMap((e) => e.parts).filter(n)) };
|
|
10
|
+
}
|
|
11
|
+
//#endregion
|
|
12
|
+
export { r as useChatPendingClientToolParts };
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=use-chat-pending-client-tool-parts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-chat-pending-client-tool-parts.js","names":[],"sources":["../../src/hooks/use-chat-pending-client-tool-parts.ts"],"sourcesContent":["import type { ToolUIPart, UIMessagePart, UITools } from 'ai'\nimport { computed } from 'vue'\n\nimport { useState } from '@/state/state'\n\ntype PendingClientToolPart = ToolUIPart & { state: 'input-available' }\n\nfunction isPendingClientToolPart(part: UIMessagePart<any, UITools>): part is PendingClientToolPart {\n return part.type.startsWith('tool') && (part as ToolUIPart).state === 'input-available'\n}\n\nexport function useChatPendingClientToolParts() {\n const state = useState()\n\n const pendingClientToolParts = computed(() => {\n return state.chat.messages\n .filter((message) => message.parts.some(isPendingClientToolPart))\n .flatMap((message) => message.parts)\n .filter(isPendingClientToolPart) as PendingClientToolPart[]\n })\n\n return { pendingClientToolParts }\n}\n"],"mappings":";;;AAOA,SAAS,EAAwB,GAAkE;AACjG,QAAO,EAAK,KAAK,WAAW,OAAO,IAAK,EAAoB,UAAU;;AAGxE,SAAgB,IAAgC;CAC9C,IAAM,IAAQ,GAAU;AASxB,QAAO,EAAE,wBAPsB,QACtB,EAAM,KAAK,SACf,QAAQ,MAAY,EAAQ,MAAM,KAAK,EAAwB,CAAC,CAChE,SAAS,MAAY,EAAQ,MAAM,CACnC,OAAO,EAAwB,CAClC,EAE+B"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { useState as e } from "../state/state.js";
|
|
2
|
+
import { nextTick as t, watch as n } from "vue";
|
|
3
|
+
//#region src/hooks/use-chat-scroll.ts
|
|
4
|
+
function r() {
|
|
5
|
+
let r = e();
|
|
6
|
+
function i(e) {
|
|
7
|
+
let t = e?.parts.at(-1);
|
|
8
|
+
if (t && t.type === "text") return t.text;
|
|
9
|
+
}
|
|
10
|
+
n([() => r.chat.status, () => i(r.chat.lastMessage)], async () => {
|
|
11
|
+
await t(), window.scrollTo(0, document.body.scrollHeight);
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
//#endregion
|
|
15
|
+
export { r as useChatScroll };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=use-chat-scroll.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-chat-scroll.js","names":[],"sources":["../../src/hooks/use-chat-scroll.ts"],"sourcesContent":["import type { UIMessage } from 'ai'\nimport { nextTick, watch } from 'vue'\n\nimport { useState } from '@/state/state'\n\nexport function useChatScroll() {\n const state = useState()\n\n function getMsgContent(msg?: UIMessage) {\n const lastPart = msg?.parts.at(-1)\n if (!lastPart) return\n\n if (lastPart.type !== 'text') return\n\n return lastPart.text\n }\n\n watch([() => state.chat.status, () => getMsgContent(state.chat.lastMessage)], async () => {\n await nextTick()\n window.scrollTo(0, document.body.scrollHeight)\n })\n}\n"],"mappings":";;;AAKA,SAAgB,IAAgB;CAC9B,IAAM,IAAQ,GAAU;CAExB,SAAS,EAAc,GAAiB;EACtC,IAAM,IAAW,GAAK,MAAM,GAAG,GAAG;AAC7B,WAED,EAAS,SAAS,OAEtB,QAAO,EAAS;;AAGlB,GAAM,OAAO,EAAM,KAAK,cAAc,EAAc,EAAM,KAAK,YAAY,CAAC,EAAE,YAAY;AAExF,EADA,MAAM,GAAU,EAChB,OAAO,SAAS,GAAG,SAAS,KAAK,aAAa;GAC9C"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { useState as e } from "../state/state.js";
|
|
2
|
+
import { onMounted as t } from "vue";
|
|
3
|
+
//#region src/hooks/use-curated-documents.ts
|
|
4
|
+
function n() {
|
|
5
|
+
let { api: n, curatedDocuments: r } = e();
|
|
6
|
+
t(async () => {
|
|
7
|
+
let e = await n.getCuratedDocuments();
|
|
8
|
+
e.success && (r.value = e.data.results);
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
//#endregion
|
|
12
|
+
export { n as useCuratedDocuments };
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=use-curated-documents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-curated-documents.js","names":[],"sources":["../../src/hooks/use-curated-documents.ts"],"sourcesContent":["import { onMounted } from 'vue'\n\nimport { useState } from '@/state/state'\n\nexport function useCuratedDocuments() {\n const { api, curatedDocuments } = useState()\n\n onMounted(async () => {\n const getCuratedDocumentsResult = await api.getCuratedDocuments()\n\n if (!getCuratedDocumentsResult.success) {\n return\n }\n\n curatedDocuments.value = getCuratedDocumentsResult.data.results\n })\n}\n"],"mappings":";;;AAIA,SAAgB,IAAsB;CACpC,IAAM,EAAE,QAAK,wBAAqB,GAAU;AAE5C,GAAU,YAAY;EACpB,IAAM,IAA4B,MAAM,EAAI,qBAAqB;AAE5D,IAA0B,YAI/B,EAAiB,QAAQ,EAA0B,KAAK;GACxD"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { useState as e } from "../state/state.js";
|
|
2
|
+
import { computed as t, ref as n } from "vue";
|
|
3
|
+
import { useDebounceFn as r } from "@vueuse/core";
|
|
4
|
+
//#region src/hooks/use-search.ts
|
|
5
|
+
function i() {
|
|
6
|
+
let { api: i } = e(), a = n(""), o = r(async (e) => {
|
|
7
|
+
let t = await i.search(e);
|
|
8
|
+
t.success && (c.value = t.data.results);
|
|
9
|
+
}, 200), s = t({
|
|
10
|
+
get: () => a.value,
|
|
11
|
+
set: (e) => {
|
|
12
|
+
o(e), a.value = e;
|
|
13
|
+
}
|
|
14
|
+
}), c = n([]);
|
|
15
|
+
return o(""), {
|
|
16
|
+
query: s,
|
|
17
|
+
results: c
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
//#endregion
|
|
21
|
+
export { i as useSearch };
|
|
22
|
+
|
|
23
|
+
//# sourceMappingURL=use-search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-search.js","names":[],"sources":["../../src/hooks/use-search.ts"],"sourcesContent":["import { useDebounceFn } from '@vueuse/core'\nimport { computed, ref } from 'vue'\n\nimport type { ApiMetadata } from '@/entities/registry/document'\nimport { useState } from '@/state/state'\n\nexport function useSearch() {\n const { api } = useState()\n\n const queryRef = ref('')\n\n const search = useDebounceFn(async (q) => {\n const searchResponse = await api.search(q)\n\n if (!searchResponse.success) {\n return\n }\n\n results.value = searchResponse.data.results\n }, 200)\n\n const query = computed({\n get: () => {\n return queryRef.value\n },\n set: (v) => {\n search(v)\n queryRef.value = v\n },\n })\n\n const results = ref<ApiMetadata[]>([])\n\n search('')\n\n return {\n query,\n results,\n }\n}\n"],"mappings":";;;;AAMA,SAAgB,IAAY;CAC1B,IAAM,EAAE,WAAQ,GAAU,EAEpB,IAAW,EAAI,GAAG,EAElB,IAAS,EAAc,OAAO,MAAM;EACxC,IAAM,IAAiB,MAAM,EAAI,OAAO,EAAE;AAErC,IAAe,YAIpB,EAAQ,QAAQ,EAAe,KAAK;IACnC,IAAI,EAED,IAAQ,EAAS;EACrB,WACS,EAAS;EAElB,MAAM,MAAM;AAEV,GADA,EAAO,EAAE,EACT,EAAS,QAAQ;;EAEpB,CAAC,EAEI,IAAU,EAAmB,EAAE,CAAC;AAItC,QAFA,EAAO,GAAG,EAEH;EACL;EACA;EACD"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { useState as e } from "../state/state.js";
|
|
2
|
+
import { computed as t } from "vue";
|
|
3
|
+
//#region src/hooks/use-signup-link.ts
|
|
4
|
+
function n() {
|
|
5
|
+
let { dashboardUrl: n, mode: r, uploadedTmpDocumentUrl: i } = e(), a = t(() => r === "full" ? n : i.value ? `${n}/register?flow=oss-agent&docUrl=${i.value}` : n);
|
|
6
|
+
function o() {
|
|
7
|
+
window.location.assign(a.value);
|
|
8
|
+
}
|
|
9
|
+
return {
|
|
10
|
+
signupLink: a,
|
|
11
|
+
navigateToSignup: o
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
//#endregion
|
|
15
|
+
export { n as useSignupLink };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=use-signup-link.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-signup-link.js","names":[],"sources":["../../src/hooks/use-signup-link.ts"],"sourcesContent":["import type { ComputedRef } from 'vue'\nimport { computed } from 'vue'\n\nimport { useState } from '@/state/state'\n\n/**\n * Agent Scalar signup/upgrade URL for both full (agent.scalar.com) and embedded\n * (@scalar/api-reference) modes.\n *\n * In embedded mode, includes register flow and optional docUrl when a temporary document was uploaded.\n */\nexport function useSignupLink(): {\n signupLink: ComputedRef<string>\n navigateToSignup: () => void\n} {\n const { dashboardUrl, mode, uploadedTmpDocumentUrl } = useState()\n\n const signupLink = computed(() => {\n // we use mode 'full' on agent.scalar.com\n if (mode === 'full') {\n return dashboardUrl\n }\n\n // we use mode 'preview' in @scalar/api-reference\n return uploadedTmpDocumentUrl.value\n ? `${dashboardUrl}/register?flow=oss-agent&docUrl=${uploadedTmpDocumentUrl.value}`\n : dashboardUrl\n })\n\n function navigateToSignup() {\n window.location.assign(signupLink.value)\n }\n\n return { signupLink, navigateToSignup }\n}\n"],"mappings":";;;AAWA,SAAgB,IAGd;CACA,IAAM,EAAE,iBAAc,SAAM,8BAA2B,GAAU,EAE3D,IAAa,QAEb,MAAS,SACJ,IAIF,EAAuB,QAC1B,GAAG,EAAa,kCAAkC,EAAuB,UACzE,EACJ;CAEF,SAAS,IAAmB;AAC1B,SAAO,SAAS,OAAO,EAAW,MAAM;;AAG1C,QAAO;EAAE;EAAY;EAAkB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { onMounted as e, ref as t } from "vue";
|
|
2
|
+
//#region src/hooks/use-term-and-conditions.ts
|
|
3
|
+
var n = "scalar/agent-terms-accepted";
|
|
4
|
+
function r() {
|
|
5
|
+
let r = t(!1);
|
|
6
|
+
e(() => {
|
|
7
|
+
r.value = localStorage.getItem(n) === "true";
|
|
8
|
+
});
|
|
9
|
+
function i() {
|
|
10
|
+
r.value = !0, localStorage.setItem(n, "true");
|
|
11
|
+
}
|
|
12
|
+
return {
|
|
13
|
+
accepted: r,
|
|
14
|
+
accept: i
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
export { r as useTermsAndConditions };
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=use-term-and-conditions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-term-and-conditions.js","names":[],"sources":["../../src/hooks/use-term-and-conditions.ts"],"sourcesContent":["import { onMounted, ref } from 'vue'\n\nconst TERMS_AND_CONDITIONS_LS_KEY = 'scalar/agent-terms-accepted'\n\nexport function useTermsAndConditions() {\n const accepted = ref(false)\n\n onMounted(() => {\n accepted.value = localStorage.getItem(TERMS_AND_CONDITIONS_LS_KEY) === 'true'\n })\n\n function accept() {\n accepted.value = true\n localStorage.setItem(TERMS_AND_CONDITIONS_LS_KEY, 'true')\n }\n\n return { accepted, accept }\n}\n"],"mappings":";;AAEA,IAAM,IAA8B;AAEpC,SAAgB,IAAwB;CACtC,IAAM,IAAW,EAAI,GAAM;AAE3B,SAAgB;AACd,IAAS,QAAQ,aAAa,QAAQ,EAA4B,KAAK;GACvE;CAEF,SAAS,IAAS;AAEhB,EADA,EAAS,QAAQ,IACjB,aAAa,QAAQ,GAA6B,OAAO;;AAG3D,QAAO;EAAE;EAAU;EAAQ"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { useState as e } from "../state/state.js";
|
|
2
|
+
import { ref as t } from "vue";
|
|
3
|
+
import { redirectToProxy as n } from "@scalar/helpers/url/redirect-to-proxy";
|
|
4
|
+
import { z as r } from "zod/mini";
|
|
5
|
+
//#region src/hooks/use-upload-tmp-document.ts
|
|
6
|
+
var i = 5e3, a = "scalar-tmp-doc";
|
|
7
|
+
function o({ namespace: e, slug: t }) {
|
|
8
|
+
localStorage.setItem(a, JSON.stringify({
|
|
9
|
+
namespace: e,
|
|
10
|
+
slug: t
|
|
11
|
+
}));
|
|
12
|
+
}
|
|
13
|
+
function s() {
|
|
14
|
+
let e = localStorage.getItem(a);
|
|
15
|
+
if (e) return r.object({
|
|
16
|
+
namespace: r.string(),
|
|
17
|
+
slug: r.string()
|
|
18
|
+
}).parse(JSON.parse(e));
|
|
19
|
+
}
|
|
20
|
+
function c() {
|
|
21
|
+
localStorage.getItem(a) && localStorage.removeItem(a);
|
|
22
|
+
}
|
|
23
|
+
function l() {
|
|
24
|
+
let a = e(), s = t();
|
|
25
|
+
function c(e) {
|
|
26
|
+
let t = `${a.baseUrl}${e}`;
|
|
27
|
+
return n(a.platformProxyUrl, t);
|
|
28
|
+
}
|
|
29
|
+
async function l(e, t = !1) {
|
|
30
|
+
try {
|
|
31
|
+
s.value = { type: "uploading" };
|
|
32
|
+
let n = await fetch(c(`/core/share/upload/apis${t ? "?source=agent" : ""}`), {
|
|
33
|
+
method: "POST",
|
|
34
|
+
headers: { "Content-Type": "application/json" },
|
|
35
|
+
body: JSON.stringify({ document: e })
|
|
36
|
+
});
|
|
37
|
+
if (!n.ok) {
|
|
38
|
+
s.value = {
|
|
39
|
+
type: "error",
|
|
40
|
+
error: "Failed to upload your OpenAPI document."
|
|
41
|
+
};
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
let l = await n.json(), { success: u, data: d } = r.object({
|
|
45
|
+
url: r.string(),
|
|
46
|
+
namespace: r.string(),
|
|
47
|
+
slug: r.string()
|
|
48
|
+
}).safeParse(l);
|
|
49
|
+
if (!u) {
|
|
50
|
+
s.value = {
|
|
51
|
+
type: "error",
|
|
52
|
+
error: "Failed to process document."
|
|
53
|
+
};
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
s.value = { type: "processing" };
|
|
57
|
+
let f = await fetch(c(`/vector/registry/embeddings/${d.namespace}/${d.slug}`), { method: "GET" });
|
|
58
|
+
if (o({
|
|
59
|
+
namespace: d.namespace,
|
|
60
|
+
slug: d.slug
|
|
61
|
+
}), await a.addDocument({
|
|
62
|
+
namespace: d.namespace,
|
|
63
|
+
slug: d.slug,
|
|
64
|
+
removable: !1,
|
|
65
|
+
tmp: !0
|
|
66
|
+
}), !f.ok) {
|
|
67
|
+
s.value = {
|
|
68
|
+
type: "error",
|
|
69
|
+
error: "Failed to embed document."
|
|
70
|
+
};
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
return s.value = { type: "done" }, a.uploadedTmpDocumentUrl.value = d.url, setTimeout(() => {
|
|
74
|
+
s.value = void 0;
|
|
75
|
+
}, i), d;
|
|
76
|
+
} catch {
|
|
77
|
+
s.value = {
|
|
78
|
+
type: "error",
|
|
79
|
+
error: "Failed to upload your OpenAPI document."
|
|
80
|
+
};
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
uploadTempDocument: l,
|
|
86
|
+
uploadState: s
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
//#endregion
|
|
90
|
+
export { s as getTmpDocFromLocalStorage, c as removeTmpDocFromLocalStorage, l as useUploadTmpDocument };
|
|
91
|
+
|
|
92
|
+
//# sourceMappingURL=use-upload-tmp-document.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-upload-tmp-document.js","names":[],"sources":["../../src/hooks/use-upload-tmp-document.ts"],"sourcesContent":["import { redirectToProxy } from '@scalar/helpers/url/redirect-to-proxy'\nimport { ref } from 'vue'\nimport { z } from 'zod/mini'\n\nimport { useState } from '@/state/state'\n\nconst SHOW_UPLOAD_SUCCESS_DELAY = 5_000 // 5 seconds\n\nexport type UploadTmpDocumentState =\n | { type: 'error'; error: unknown }\n | { type: 'uploading' }\n | { type: 'processing' }\n | { type: 'loading' }\n | { type: 'done' }\n\nconst TMP_DOC_LS_KEY = 'scalar-tmp-doc'\n\nfunction saveTmpDocumentInLocalStorage({ namespace, slug }: { namespace: string; slug: string }) {\n localStorage.setItem(TMP_DOC_LS_KEY, JSON.stringify({ namespace, slug }))\n}\n\nexport function getTmpDocFromLocalStorage() {\n const tmpDoc = localStorage.getItem(TMP_DOC_LS_KEY)\n if (!tmpDoc) {\n return\n }\n\n return z\n .object({\n namespace: z.string(),\n slug: z.string(),\n })\n .parse(JSON.parse(tmpDoc))\n}\n\nexport function removeTmpDocFromLocalStorage() {\n const tmpDoc = localStorage.getItem(TMP_DOC_LS_KEY)\n if (!tmpDoc) {\n return\n }\n\n localStorage.removeItem(TMP_DOC_LS_KEY)\n}\n\n/**\n * Handle uploading a temporary OpenAPI document.\n */\nexport function useUploadTmpDocument() {\n const state = useState()\n const uploadState = ref<UploadTmpDocumentState>()\n\n function createUrl(path: string) {\n const fullUrl = `${state.baseUrl}${path}`\n return redirectToProxy(state.platformProxyUrl, fullUrl)\n }\n\n async function uploadTempDocument(document: string, isAgent = false) {\n try {\n uploadState.value = {\n type: 'uploading',\n }\n\n const response = await fetch(createUrl(`/core/share/upload/apis${isAgent ? '?source=agent' : ''}`), {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({ document }),\n })\n\n if (!response.ok) {\n uploadState.value = {\n type: 'error',\n error: 'Failed to upload your OpenAPI document.',\n }\n\n return\n }\n\n const json = await response.json()\n\n const { success, data } = z.object({ url: z.string(), namespace: z.string(), slug: z.string() }).safeParse(json)\n\n if (!success) {\n uploadState.value = {\n type: 'error',\n error: 'Failed to process document.',\n }\n return\n }\n\n uploadState.value = {\n type: 'processing',\n }\n const embeddingStatusResponse = await fetch(\n createUrl(`/vector/registry/embeddings/${data.namespace}/${data.slug}`),\n {\n method: 'GET',\n },\n )\n\n saveTmpDocumentInLocalStorage({\n namespace: data.namespace,\n slug: data.slug,\n })\n\n await state.addDocument({\n namespace: data.namespace,\n slug: data.slug,\n removable: false,\n tmp: true,\n })\n\n if (!embeddingStatusResponse.ok) {\n uploadState.value = {\n type: 'error',\n error: 'Failed to embed document.',\n }\n return\n }\n\n uploadState.value = { type: 'done' }\n state.uploadedTmpDocumentUrl.value = data.url\n\n setTimeout(() => {\n uploadState.value = undefined\n }, SHOW_UPLOAD_SUCCESS_DELAY)\n\n return data\n } catch {\n uploadState.value = { type: 'error', error: 'Failed to upload your OpenAPI document.' }\n return\n }\n }\n\n return {\n uploadTempDocument,\n uploadState,\n }\n}\n"],"mappings":";;;;;AAMA,IAAM,IAA4B,KAS5B,IAAiB;AAEvB,SAAS,EAA8B,EAAE,cAAW,WAA6C;AAC/F,cAAa,QAAQ,GAAgB,KAAK,UAAU;EAAE;EAAW;EAAM,CAAC,CAAC;;AAG3E,SAAgB,IAA4B;CAC1C,IAAM,IAAS,aAAa,QAAQ,EAAe;AAC9C,OAIL,QAAO,EACJ,OAAO;EACN,WAAW,EAAE,QAAQ;EACrB,MAAM,EAAE,QAAQ;EACjB,CAAC,CACD,MAAM,KAAK,MAAM,EAAO,CAAC;;AAG9B,SAAgB,IAA+B;AAC9B,cAAa,QAAQ,EAAe,IAKnD,aAAa,WAAW,EAAe;;AAMzC,SAAgB,IAAuB;CACrC,IAAM,IAAQ,GAAU,EAClB,IAAc,GAA6B;CAEjD,SAAS,EAAU,GAAc;EAC/B,IAAM,IAAU,GAAG,EAAM,UAAU;AACnC,SAAO,EAAgB,EAAM,kBAAkB,EAAQ;;CAGzD,eAAe,EAAmB,GAAkB,IAAU,IAAO;AACnE,MAAI;AACF,KAAY,QAAQ,EAClB,MAAM,aACP;GAED,IAAM,IAAW,MAAM,MAAM,EAAU,0BAA0B,IAAU,kBAAkB,KAAK,EAAE;IAClG,QAAQ;IACR,SAAS,EACP,gBAAgB,oBACjB;IACD,MAAM,KAAK,UAAU,EAAE,aAAU,CAAC;IACnC,CAAC;AAEF,OAAI,CAAC,EAAS,IAAI;AAChB,MAAY,QAAQ;KAClB,MAAM;KACN,OAAO;KACR;AAED;;GAGF,IAAM,IAAO,MAAM,EAAS,MAAM,EAE5B,EAAE,YAAS,YAAS,EAAE,OAAO;IAAE,KAAK,EAAE,QAAQ;IAAE,WAAW,EAAE,QAAQ;IAAE,MAAM,EAAE,QAAQ;IAAE,CAAC,CAAC,UAAU,EAAK;AAEhH,OAAI,CAAC,GAAS;AACZ,MAAY,QAAQ;KAClB,MAAM;KACN,OAAO;KACR;AACD;;AAGF,KAAY,QAAQ,EAClB,MAAM,cACP;GACD,IAAM,IAA0B,MAAM,MACpC,EAAU,+BAA+B,EAAK,UAAU,GAAG,EAAK,OAAO,EACvE,EACE,QAAQ,OACT,CACF;AAcD,OAZA,EAA8B;IAC5B,WAAW,EAAK;IAChB,MAAM,EAAK;IACZ,CAAC,EAEF,MAAM,EAAM,YAAY;IACtB,WAAW,EAAK;IAChB,MAAM,EAAK;IACX,WAAW;IACX,KAAK;IACN,CAAC,EAEE,CAAC,EAAwB,IAAI;AAC/B,MAAY,QAAQ;KAClB,MAAM;KACN,OAAO;KACR;AACD;;AAUF,UAPA,EAAY,QAAQ,EAAE,MAAM,QAAQ,EACpC,EAAM,uBAAuB,QAAQ,EAAK,KAE1C,iBAAiB;AACf,MAAY,QAAQ,KAAA;MACnB,EAA0B,EAEtB;UACD;AACN,KAAY,QAAQ;IAAE,MAAM;IAAS,OAAO;IAA2C;AACvF;;;AAIJ,QAAO;EACL;EACA;EACD"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export type { ChatExposed } from './App.vue';
|
|
2
|
-
export { default as Chat } from './App.vue';
|
|
1
|
+
export type { ChatExposed } from './App.vue.js';
|
|
2
|
+
export { default as Chat } from './App.vue.js';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|