@scalar/agent-chat 0.12.45 → 0.12.46
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 +1 -1
- package/dist/App.vue.d.ts.map +1 -1
- package/dist/App.vue.js +1 -1
- package/dist/App.vue.js.map +1 -1
- package/dist/{App.vue.script.js → App.vue_vue_type_script_setup_true_lang.js} +1 -1
- package/dist/App.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/Chat.vue.js +1 -1
- package/dist/Chat.vue.js.map +1 -1
- package/dist/{Chat.vue.script.js → Chat.vue_vue_type_script_setup_true_lang.js} +1 -1
- package/dist/Chat.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/client-tools/execute-request.js +3 -2
- package/dist/client-tools/execute-request.js.map +1 -1
- package/dist/components/ActionsDropdown.vue.js +2 -2
- package/dist/components/ActionsDropdown.vue.js.map +1 -1
- package/dist/components/{ActionsDropdown.vue.script.js → ActionsDropdown.vue_vue_type_script_setup_true_lang.js} +1 -1
- package/dist/components/ActionsDropdown.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/ApprovalSection.vue.js +2 -2
- package/dist/components/ApprovalSection.vue.js.map +1 -1
- package/dist/components/{ApprovalSection.vue.script.js → ApprovalSection.vue_vue_type_script_setup_true_lang.js} +1 -1
- package/dist/components/ApprovalSection.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/AuthenticationProvided.vue.js +1 -1
- package/dist/components/AuthenticationProvided.vue.js.map +1 -1
- package/dist/components/AuthenticationRequired.vue.js +1 -1
- package/dist/components/AuthenticationRequired.vue.js.map +1 -1
- package/dist/components/AutosendPaused.vue.js +1 -1
- package/dist/components/AutosendPaused.vue.js.map +1 -1
- package/dist/components/BuildingRequest.vue.js +1 -1
- package/dist/components/BuildingRequest.vue.js.map +1 -1
- package/dist/components/ContextItem.vue.js +2 -2
- package/dist/components/ContextItem.vue.js.map +1 -1
- package/dist/components/{ContextItem.vue.script.js → ContextItem.vue_vue_type_script_setup_true_lang.js} +1 -1
- package/dist/components/ContextItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/ErrorMessage.vue.js +2 -2
- package/dist/components/ErrorMessage.vue.js.map +1 -1
- package/dist/components/{ErrorMessage.vue.script.js → ErrorMessage.vue_vue_type_script_setup_true_lang.js} +1 -1
- package/dist/components/ErrorMessage.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/FreeMessagesInfoSection.vue.js +2 -2
- package/dist/components/FreeMessagesInfoSection.vue.js.map +1 -1
- package/dist/components/{FreeMessagesInfoSection.vue.script.js → FreeMessagesInfoSection.vue_vue_type_script_setup_true_lang.js} +1 -1
- package/dist/components/FreeMessagesInfoSection.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/LoadingOpenAPISpecsSummary.vue.js +1 -1
- package/dist/components/LoadingOpenAPISpecsSummary.vue.js.map +1 -1
- package/dist/components/LoadingSearchOpenAPIOperations.vue.js +1 -1
- package/dist/components/LoadingSearchOpenAPIOperations.vue.js.map +1 -1
- package/dist/components/Logo.vue.js.map +1 -1
- package/dist/components/PaymentSection.vue.js +2 -2
- package/dist/components/PaymentSection.vue.js.map +1 -1
- package/dist/components/{PaymentSection.vue.script.js → PaymentSection.vue_vue_type_script_setup_true_lang.js} +1 -1
- package/dist/components/PaymentSection.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/RequestApproved.vue.js +1 -1
- package/dist/components/RequestApproved.vue.js.map +1 -1
- package/dist/components/RequestFailed.vue.js +1 -1
- package/dist/components/RequestFailed.vue.js.map +1 -1
- package/dist/components/RequestPreview.vue.js +2 -2
- package/dist/components/RequestPreview.vue.js.map +1 -1
- package/dist/components/{RequestPreview.vue.script.js → RequestPreview.vue_vue_type_script_setup_true_lang.js} +1 -1
- package/dist/components/RequestPreview.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/RequestRejected.vue.js +1 -1
- package/dist/components/RequestRejected.vue.js.map +1 -1
- package/dist/components/RequestSuccess.vue.js +1 -1
- package/dist/components/RequestSuccess.vue.js.map +1 -1
- package/dist/components/ResponseBody/ResponseBody.vue.d.ts +2 -2
- package/dist/components/ResponseBody/ResponseBody.vue.js +1 -1
- package/dist/components/ResponseBody/ResponseBody.vue.js.map +1 -1
- package/dist/components/ResponseBody/{ResponseBody.vue.script.js → ResponseBody.vue_vue_type_script_setup_true_lang.js} +1 -1
- package/dist/components/ResponseBody/ResponseBody.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/ResponseBody/ResponseBodyInfo.vue.js.map +1 -1
- package/dist/components/ResponseBody/ResponseBodyPreview.vue.d.ts +1 -1
- package/dist/components/ResponseBody/ResponseBodyPreview.vue.js +2 -2
- package/dist/components/ResponseBody/ResponseBodyPreview.vue.js.map +1 -1
- package/dist/components/ResponseBody/{ResponseBodyPreview.vue.script.js → ResponseBodyPreview.vue_vue_type_script_setup_true_lang.js} +1 -1
- package/dist/components/ResponseBody/ResponseBodyPreview.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/ResponseBody/ResponseBodyRaw.vue.js +1 -1
- package/dist/components/ResponseBody/ResponseBodyRaw.vue.js.map +1 -1
- package/dist/components/ResponseBody/{ResponseBodyRaw.vue.script.js → ResponseBodyRaw.vue_vue_type_script_setup_true_lang.js} +1 -1
- package/dist/components/ResponseBody/ResponseBodyRaw.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/ResponseBody/ResponseBodyToggle.vue.js +1 -1
- package/dist/components/ResponseBody/ResponseBodyToggle.vue.js.map +1 -1
- package/dist/components/ResponseBody/{ResponseBodyToggle.vue.script.js → ResponseBodyToggle.vue_vue_type_script_setup_true_lang.js} +1 -1
- package/dist/components/ResponseBody/ResponseBodyToggle.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/SearchPopover.vue.js +2 -2
- package/dist/components/SearchPopover.vue.js.map +1 -1
- package/dist/components/{SearchPopover.vue.script.js → SearchPopover.vue_vue_type_script_setup_true_lang.js} +1 -1
- package/dist/components/SearchPopover.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/Selector.vue.js +1 -1
- package/dist/components/Selector.vue.js.map +1 -1
- package/dist/components/{Selector.vue.script.js → Selector.vue_vue_type_script_setup_true_lang.js} +1 -1
- package/dist/components/Selector.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/SendingRequest.vue.js +1 -1
- package/dist/components/SendingRequest.vue.js.map +1 -1
- package/dist/components/ServerSelector.vue.js +1 -1
- package/dist/components/ServerSelector.vue.js.map +1 -1
- package/dist/components/{ServerSelector.vue.script.js → ServerSelector.vue_vue_type_script_setup_true_lang.js} +1 -1
- package/dist/components/ServerSelector.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/UploadSection.vue.js +2 -2
- package/dist/components/UploadSection.vue.js.map +1 -1
- package/dist/components/{UploadSection.vue.script.js → UploadSection.vue_vue_type_script_setup_true_lang.js} +1 -1
- package/dist/components/UploadSection.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/entities/tools/execute-request.d.ts +1 -1
- package/dist/helpers.js +4 -2
- package/dist/helpers.js.map +1 -1
- package/dist/index.js +1 -2
- package/dist/package.json +1 -1
- package/dist/state/state.d.ts +1 -1
- package/dist/style.css +58 -38
- package/dist/views/Catalog/Catalog.vue.js +3 -3
- package/dist/views/Catalog/Catalog.vue.js.map +1 -1
- package/dist/views/Catalog/{Catalog.vue.script.js → Catalog.vue_vue_type_script_setup_true_lang.js} +1 -1
- package/dist/views/Catalog/Catalog.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/views/Chat/Chat.vue.js +2 -2
- package/dist/views/Chat/Chat.vue.js.map +1 -1
- package/dist/views/Chat/{Chat.vue.script.js → Chat.vue_vue_type_script_setup_true_lang.js} +1 -1
- package/dist/views/Chat/Chat.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/views/Chat/Messages/AskForAuthentication.vue.js +2 -2
- package/dist/views/Chat/Messages/AskForAuthentication.vue.js.map +1 -1
- package/dist/views/Chat/Messages/{AskForAuthentication.vue.script.js → AskForAuthentication.vue_vue_type_script_setup_true_lang.js} +1 -1
- package/dist/views/Chat/Messages/AskForAuthentication.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/views/Chat/Messages/ExecuteRequestTool.vue.js +2 -2
- package/dist/views/Chat/Messages/ExecuteRequestTool.vue.js.map +1 -1
- package/dist/views/Chat/Messages/{ExecuteRequestTool.vue.script.js → ExecuteRequestTool.vue_vue_type_script_setup_true_lang.js} +1 -1
- package/dist/views/Chat/Messages/ExecuteRequestTool.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/views/Chat/Messages/GetOpenAPISpecsSummary.vue.js +1 -1
- package/dist/views/Chat/Messages/GetOpenAPISpecsSummary.vue.js.map +1 -1
- package/dist/views/Chat/Messages/{GetOpenAPISpecsSummary.vue.script.js → GetOpenAPISpecsSummary.vue_vue_type_script_setup_true_lang.js} +1 -1
- package/dist/views/Chat/Messages/GetOpenAPISpecsSummary.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/views/Chat/Messages/SearchOpenAPIOperationsTool.vue.js +2 -2
- package/dist/views/Chat/Messages/SearchOpenAPIOperationsTool.vue.js.map +1 -1
- package/dist/views/Chat/Messages/{SearchOpenAPIOperationsTool.vue.script.js → SearchOpenAPIOperationsTool.vue_vue_type_script_setup_true_lang.js} +1 -1
- package/dist/views/Chat/Messages/SearchOpenAPIOperationsTool.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/views/Chat/Messages/Text.vue.js +1 -1
- package/dist/views/Chat/Messages/Text.vue.js.map +1 -1
- package/dist/views/Chat/Messages/{Text.vue.script.js → Text.vue_vue_type_script_setup_true_lang.js} +1 -1
- package/dist/views/Chat/Messages/Text.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/views/Layout.vue.js +2 -2
- package/dist/views/Layout.vue.js.map +1 -1
- package/dist/views/{Layout.vue.script.js → Layout.vue_vue_type_script_setup_true_lang.js} +1 -1
- package/dist/views/Layout.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/views/PromptForm.vue.js +2 -2
- package/dist/views/PromptForm.vue.js.map +1 -1
- package/dist/views/{PromptForm.vue.script.js → PromptForm.vue_vue_type_script_setup_true_lang.js} +1 -1
- package/dist/views/PromptForm.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/views/Settings/Auth.vue.js +1 -1
- package/dist/views/Settings/Auth.vue.js.map +1 -1
- package/dist/views/Settings/{Auth.vue.script.js → Auth.vue_vue_type_script_setup_true_lang.js} +1 -1
- package/dist/views/Settings/Auth.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/views/Settings/DocSettings.vue.js +2 -2
- package/dist/views/Settings/DocSettings.vue.js.map +1 -1
- package/dist/views/Settings/{DocSettings.vue.script.js → DocSettings.vue_vue_type_script_setup_true_lang.js} +1 -1
- package/dist/views/Settings/DocSettings.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/views/Settings/Settings.vue.js +3 -3
- package/dist/views/Settings/Settings.vue.js.map +1 -1
- package/dist/views/Settings/{Settings.vue.script.js → Settings.vue_vue_type_script_setup_true_lang.js} +1 -1
- package/dist/views/Settings/Settings.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/views/Start.vue.js +2 -2
- package/dist/views/Start.vue.js.map +1 -1
- package/dist/views/{Start.vue.script.js → Start.vue_vue_type_script_setup_true_lang.js} +1 -1
- package/dist/views/Start.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/package.json +23 -23
- package/dist/App.vue.script.js.map +0 -1
- package/dist/Chat.vue.script.js.map +0 -1
- package/dist/components/ActionsDropdown.vue.script.js.map +0 -1
- package/dist/components/ApprovalSection.vue.script.js.map +0 -1
- package/dist/components/ContextItem.vue.script.js.map +0 -1
- package/dist/components/ErrorMessage.vue.script.js.map +0 -1
- package/dist/components/FreeMessagesInfoSection.vue.script.js.map +0 -1
- package/dist/components/PaymentSection.vue.script.js.map +0 -1
- package/dist/components/RequestPreview.vue.script.js.map +0 -1
- package/dist/components/ResponseBody/ResponseBody.vue.script.js.map +0 -1
- package/dist/components/ResponseBody/ResponseBodyPreview.vue.script.js.map +0 -1
- package/dist/components/ResponseBody/ResponseBodyRaw.vue.script.js.map +0 -1
- package/dist/components/ResponseBody/ResponseBodyToggle.vue.script.js.map +0 -1
- package/dist/components/SearchPopover.vue.script.js.map +0 -1
- package/dist/components/Selector.vue.script.js.map +0 -1
- package/dist/components/ServerSelector.vue.script.js.map +0 -1
- package/dist/components/UploadSection.vue.script.js.map +0 -1
- package/dist/views/Catalog/Catalog.vue.script.js.map +0 -1
- package/dist/views/Chat/Chat.vue.script.js.map +0 -1
- package/dist/views/Chat/Messages/AskForAuthentication.vue.script.js.map +0 -1
- package/dist/views/Chat/Messages/ExecuteRequestTool.vue.script.js.map +0 -1
- package/dist/views/Chat/Messages/GetOpenAPISpecsSummary.vue.script.js.map +0 -1
- package/dist/views/Chat/Messages/SearchOpenAPIOperationsTool.vue.script.js.map +0 -1
- package/dist/views/Chat/Messages/Text.vue.script.js.map +0 -1
- package/dist/views/Layout.vue.script.js.map +0 -1
- package/dist/views/PromptForm.vue.script.js.map +0 -1
- package/dist/views/Settings/Auth.vue.script.js.map +0 -1
- package/dist/views/Settings/DocSettings.vue.script.js.map +0 -1
- package/dist/views/Settings/Settings.vue.script.js.map +0 -1
- package/dist/views/Start.vue.script.js.map +0 -1
|
@@ -58,4 +58,4 @@ var UploadSection_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ de
|
|
|
58
58
|
//#endregion
|
|
59
59
|
export { UploadSection_vue_vue_type_script_setup_true_lang_default as default };
|
|
60
60
|
|
|
61
|
-
//# sourceMappingURL=UploadSection.
|
|
61
|
+
//# sourceMappingURL=UploadSection.vue_vue_type_script_setup_true_lang.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UploadSection.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_normalizeClass","_createVNode","_unref","_createCommentVNode","_createTextVNode","_toDisplayString"],"sources":["../../src/components/UploadSection.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarLoading, useLoadingState } from '@scalar/components/loading'\nimport { ScalarIconCheck, ScalarIconXCircle } from '@scalar/icons'\nimport { computed } from 'vue'\n\nimport { type UploadTmpDocumentState } from '@/hooks/use-upload-tmp-document'\n\nconst { uploadState } = defineProps<{\n uploadState: UploadTmpDocumentState\n}>()\n\nconst loadingState = useLoadingState()\n\nconst isLoading = computed(() =>\n ['uploading', 'processing', 'loading'].includes(uploadState.type),\n)\n</script>\n\n<template>\n <div\n class=\"uploadSection\"\n :class=\"{\n error: uploadState.type === 'error',\n done: uploadState.type === 'done',\n }\">\n <div\n v-if=\"isLoading\"\n class=\"flex items-center gap-1.5\">\n <ScalarLoading\n class=\"text-blue\"\n :loader=\"{\n ...loadingState,\n isLoading: true,\n }\"\n size=\"lg\" />\n <strong\n v-if=\"uploadState.type === 'loading'\"\n class=\"uploadText\">\n Loading API description…\n </strong>\n <strong\n v-else-if=\"uploadState.type === 'processing'\"\n class=\"uploadText\">\n Processing API description…\n </strong>\n <strong\n v-else\n class=\"uploadText\">\n Uploading API description…\n </strong>\n </div>\n <strong\n v-if=\"uploadState.type === 'done'\"\n class=\"uploadText flex items-center gap-1.5\">\n <ScalarIconCheck class=\"icon text-green\" />\n Your API description has been processed successfully.\n </strong>\n <strong\n v-if=\"uploadState.type === 'error'\"\n class=\"uploadText flex items-center gap-1.5\">\n <ScalarIconXCircle class=\"icon text-red\" />\n {{ uploadState.error }}\n </strong>\n </div>\n</template>\n\n<style scoped>\n.uploadSection {\n width: 100%;\n margin-bottom: -16px;\n padding: 8px 8px 24px 12px;\n position: relative;\n background: color-mix(\n in srgb,\n var(--scalar-color-blue),\n var(--scalar-background-1) 95%\n );\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n border-radius: var(--scalar-radius-3xl) var(--scalar-radius-3xl) 0 0;\n display: flex;\n align-items: center;\n justify-content: space-between;\n position: absolute;\n top: 0;\n transform: translate3d(0, calc(-100% + 16px), 0);\n}\n\n.uploadSection.error {\n background: color-mix(\n in srgb,\n var(--scalar-color-red),\n var(--scalar-background-1) 95%\n );\n}\n\n.uploadSection.done {\n background: color-mix(\n in srgb,\n var(--scalar-color-green),\n var(--scalar-background-1) 95%\n );\n}\n\n.uploadText {\n font-weight: var(--scalar-semibold);\n font-size: var(--scalar-font-size-3);\n}\n\n.icon {\n height: 20px;\n width: 20px;\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWA,MAAM,eAAe,gBAAgB;EAErC,MAAM,YAAY,eAChB;GAAC;GAAa;GAAc;EAAS,CAAC,CAAC,SAAS,QAAA,YAAY,IAAI,CAClE;;GAIE,OAAAA,UAAA,GAAAC,mBA4CM,OAAA,EA3CJ,OAAKC,eAAA,CAAC,iBAAe;IACE,OAAA,QAAA,YAAY,SAAI;IAA0B,MAAA,QAAA,YAAY,SAAI;;IAKzE,UAAA,SADRF,UAAA,GAAAC,mBAyBM,OAzBN,YAyBM,CAtBJE,YAMcC,MAAA,aAAA,GAAA;KALZ,OAAM;KACL,QAAM;MAAiB,GAAAA,MAAA,YAAA;;;KAIxB,MAAK;I,yBAEC,QAAA,YAAY,SAAI,aADxBJ,UAAA,GAAAC,mBAIS,UAJT,YAEqB,4BAErB,KAEa,QAAA,YAAY,SAAI,gBAD7BD,UAAA,GAAAC,mBAIS,UAJT,YAEqB,+BAErB,MACAD,UAAA,GAAAC,mBAIS,UAJT,YAEqB,8BAErB,E;IAGM,QAAA,YAAY,SAAI,UADxBD,UAAA,GAAAC,mBAKS,UALT,YAKS,CAFPE,YAA2CC,MAAA,eAAA,GAAA,EAA1B,OAAM,kBAAiB,CAAA,GAAG,OAAA,OAAA,OAAA,KAAAE,gBAAA,2DAE7C,EAAA,E;IAEQ,QAAA,YAAY,SAAI,WADxBN,UAAA,GAAAC,mBAKS,UALT,YAKS,CAFPE,YAA2CC,MAAA,iBAAA,GAAA,EAAxB,OAAM,gBAAe,CAAA,GAAGE,gBAAA,MAC3CC,gBAAG,QAAA,YAAY,KAAK,GAAA,CAAA,C"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type Static } from '@scalar/validation';
|
|
2
2
|
import type { Result } from 'neverpanic';
|
|
3
|
-
import type { AgentChatError } from '
|
|
3
|
+
import type { AgentChatError } from '../error/constants.js';
|
|
4
4
|
export declare const EXECUTE_CLIENT_SIDE_REQUEST_TOOL_NAME: "execute-request";
|
|
5
5
|
export declare const executeClientSideRequestToolInputSchema: import("@scalar/validation").ObjectSchema<{
|
|
6
6
|
method: import("@scalar/validation").StringSchema;
|
package/dist/helpers.js
CHANGED
|
@@ -19,8 +19,9 @@ function createDocumentSettings(workspaceStore) {
|
|
|
19
19
|
const openApiEntries = [];
|
|
20
20
|
for (const [key, document] of Object.entries(workspaceStore.workspace.documents)) if (isOpenApiDocument(document)) openApiEntries.push([key, document]);
|
|
21
21
|
return Object.fromEntries(openApiEntries.map(([key, document]) => {
|
|
22
|
+
const servers = getServers(document.servers, { documentUrl: document["x-scalar-original-source-url"] });
|
|
22
23
|
return [key, {
|
|
23
|
-
activeServer: getSelectedServer(document, null, null,
|
|
24
|
+
activeServer: getSelectedServer(document, null, null, servers),
|
|
24
25
|
securitySchemes: getSecurityFromDocument(key, document, workspaceStore.auth)
|
|
25
26
|
}];
|
|
26
27
|
}));
|
|
@@ -40,7 +41,8 @@ var authStorage = () => {
|
|
|
40
41
|
* Retrieves and coerces the authentication schemes stored in local storage.
|
|
41
42
|
*/
|
|
42
43
|
getAuth: (slug) => {
|
|
43
|
-
|
|
44
|
+
const parsed = JSON.parse(storage.getItem(getKey(slug)) ?? "{}");
|
|
45
|
+
return coerceValue(AuthSchema, parsed);
|
|
44
46
|
},
|
|
45
47
|
/**
|
|
46
48
|
* Stores the authentication schemes in local storage.
|
package/dist/helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","names":[],"sources":["../src/helpers.ts"],"sourcesContent":["import { REFERENCE_LS_KEYS, safeLocalStorage } from '@scalar/helpers/object/local-storage'\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 { SecuritySchemeObjectSecret } from '@scalar/workspace-store/request-example'\nimport {\n getSecurityRequirements,\n getSecuritySchemes,\n getSelectedSecurity,\n getSelectedServer,\n getServers,\n mergeSecurity,\n} from '@scalar/workspace-store/request-example'\nimport { isOpenApiDocument } from '@scalar/workspace-store/schemas/type-guards'\nimport { coerceValue } from '@scalar/workspace-store/schemas/typebox-coerce'\nimport type { OpenApiDocument } from '@scalar/workspace-store/schemas/v3.2/strict/openapi-document'\n\n/** Flattens all security requirements from a document */\nfunction getSecurityFromDocument(\n documentName: string,\n document: OpenApiDocument,\n authStore: AuthStore,\n): SecuritySchemeObjectSecret[] {\n const mergedSecurity = mergeSecurity(document?.components?.securitySchemes, {}, authStore, documentName)\n\n const securityRequirements = getSecurityRequirements(document.security)\n\n const selectedSecurity = getSelectedSecurity(\n authStore.getAuthSelectedSchemas({\n type: 'document',\n documentName,\n }),\n undefined,\n securityRequirements,\n )\n\n return getSecuritySchemes(mergedSecurity, selectedSecurity.selectedSchemes[selectedSecurity.selectedIndex] ?? {})\n}\n\n/** Generate document settings from workspace store. AsyncAPI docs are skipped — this feature is OpenAPI-native. */\nexport function createDocumentSettings(workspaceStore: WorkspaceStore) {\n const openApiEntries: [string, OpenApiDocument][] = []\n for (const [key, document] of Object.entries(workspaceStore.workspace.documents)) {\n if (isOpenApiDocument(document)) {\n openApiEntries.push([key, document])\n }\n }\n\n return Object.fromEntries(\n openApiEntries.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(document, null, null, servers),\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":";;;;;;;AAkBA,SAAS,wBACP,cACA,UACA,WAC8B;CAC9B,MAAM,iBAAiB,cAAc,UAAU,YAAY,iBAAiB,CAAC,GAAG,WAAW,YAAY;CAEvG,MAAM,uBAAuB,wBAAwB,SAAS,QAAQ;CAEtE,MAAM,mBAAmB,oBACvB,UAAU,uBAAuB;EAC/B,MAAM;EACN;CACF,CAAC,GACD,KAAA,GACA,oBACF;CAEA,OAAO,mBAAmB,gBAAgB,iBAAiB,gBAAgB,iBAAiB,kBAAkB,CAAC,CAAC;AAClH;;AAGA,SAAgB,uBAAuB,gBAAgC;CACrE,MAAM,iBAA8C,CAAC;CACrD,KAAK,MAAM,CAAC,KAAK,aAAa,OAAO,QAAQ,eAAe,UAAU,SAAS,GAC7E,IAAI,kBAAkB,QAAQ,GAC5B,eAAe,KAAK,CAAC,KAAK,QAAQ,CAAC;CAIvC,OAAO,OAAO,YACZ,eAAe,KAAK,CAAC,KAAK,cAAc;
|
|
1
|
+
{"version":3,"file":"helpers.js","names":[],"sources":["../src/helpers.ts"],"sourcesContent":["import { REFERENCE_LS_KEYS, safeLocalStorage } from '@scalar/helpers/object/local-storage'\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 { SecuritySchemeObjectSecret } from '@scalar/workspace-store/request-example'\nimport {\n getSecurityRequirements,\n getSecuritySchemes,\n getSelectedSecurity,\n getSelectedServer,\n getServers,\n mergeSecurity,\n} from '@scalar/workspace-store/request-example'\nimport { isOpenApiDocument } from '@scalar/workspace-store/schemas/type-guards'\nimport { coerceValue } from '@scalar/workspace-store/schemas/typebox-coerce'\nimport type { OpenApiDocument } from '@scalar/workspace-store/schemas/v3.2/strict/openapi-document'\n\n/** Flattens all security requirements from a document */\nfunction getSecurityFromDocument(\n documentName: string,\n document: OpenApiDocument,\n authStore: AuthStore,\n): SecuritySchemeObjectSecret[] {\n const mergedSecurity = mergeSecurity(document?.components?.securitySchemes, {}, authStore, documentName)\n\n const securityRequirements = getSecurityRequirements(document.security)\n\n const selectedSecurity = getSelectedSecurity(\n authStore.getAuthSelectedSchemas({\n type: 'document',\n documentName,\n }),\n undefined,\n securityRequirements,\n )\n\n return getSecuritySchemes(mergedSecurity, selectedSecurity.selectedSchemes[selectedSecurity.selectedIndex] ?? {})\n}\n\n/** Generate document settings from workspace store. AsyncAPI docs are skipped — this feature is OpenAPI-native. */\nexport function createDocumentSettings(workspaceStore: WorkspaceStore) {\n const openApiEntries: [string, OpenApiDocument][] = []\n for (const [key, document] of Object.entries(workspaceStore.workspace.documents)) {\n if (isOpenApiDocument(document)) {\n openApiEntries.push([key, document])\n }\n }\n\n return Object.fromEntries(\n openApiEntries.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(document, null, null, servers),\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":";;;;;;;AAkBA,SAAS,wBACP,cACA,UACA,WAC8B;CAC9B,MAAM,iBAAiB,cAAc,UAAU,YAAY,iBAAiB,CAAC,GAAG,WAAW,YAAY;CAEvG,MAAM,uBAAuB,wBAAwB,SAAS,QAAQ;CAEtE,MAAM,mBAAmB,oBACvB,UAAU,uBAAuB;EAC/B,MAAM;EACN;CACF,CAAC,GACD,KAAA,GACA,oBACF;CAEA,OAAO,mBAAmB,gBAAgB,iBAAiB,gBAAgB,iBAAiB,kBAAkB,CAAC,CAAC;AAClH;;AAGA,SAAgB,uBAAuB,gBAAgC;CACrE,MAAM,iBAA8C,CAAC;CACrD,KAAK,MAAM,CAAC,KAAK,aAAa,OAAO,QAAQ,eAAe,UAAU,SAAS,GAC7E,IAAI,kBAAkB,QAAQ,GAC5B,eAAe,KAAK,CAAC,KAAK,QAAQ,CAAC;CAIvC,OAAO,OAAO,YACZ,eAAe,KAAK,CAAC,KAAK,cAAc;EACtC,MAAM,UAAU,WAAW,SAAS,SAAS,EAC3C,aAAa,SAAS,gCACxB,CAAC;EAED,OAAO,CACL,KACA;GACE,cAAc,kBAAkB,UAAU,MAAM,MAAM,OAAO;GAC7D,iBAAiB,wBAAwB,KAAK,UAAU,eAAe,IAAI;EAC7E,CACF;CACF,CAAC,CACH;AACF;AAGA,IAAM,UAAU,iBAAiB;;;;;;AAOjC,IAAa,oBAAoB;CAC/B,MAAM,UAAU,SAAiB;EAC/B,OAAO,GAAG,kBAAkB,KAAK,GAAG;CACtC;CAEA,OAAO;;;;EAIL,UAAU,SAAiB;GACzB,MAAM,SAAS,KAAK,MAAM,QAAQ,QAAQ,OAAO,IAAI,CAAC,KAAK,IAAI;GAC/D,OAAO,YAAY,YAAY,MAAM;EACvC;;;;;EAKA,UAAU,MAAc,UAAgB;GACtC,QAAQ,QAAQ,OAAO,IAAI,GAAG,KAAK,UAAU,KAAK,CAAC;EACrD;CACF;AACF;;;;;;;;;;AAWA,IAAa,iCAAiC,EAC5C,cACA,qBAIU;CAEV,MAAM,OADkB,YACX,CAAA,CAAgB,QAAQ,YAAY;CACjD,eAAe,KAAK,KAAK,GAAG,eAAe,KAAK,CAAC;AACnD;AAEA,SAAgB,cAAc,OAAe;CAC3C,IAAI;EACF,OAAO,KAAK,MAAM,KAAK;CACzB,QAAQ;EACN;CACF;AACF"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { App_default as Chat };
|
|
1
|
+
export { default as Chat } from "./App.vue.js";
|
package/dist/package.json
CHANGED
package/dist/state/state.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ import { EXECUTE_CLIENT_SIDE_REQUEST_TOOL_NAME, type ExecuteClientSideRequestToo
|
|
|
12
12
|
import type { GetOpenAPISpecsSummaryToolOutput, SUMMARIZE_OPENAPI_SPECS_TOOL_NAME } from '../entities/tools/get-openapi-specs-summary.js';
|
|
13
13
|
import type { SEARCH_OPENAPI_OPERATIONS_TOOL_NAME, SearchOpenAPIOperationsToolInput, SearchOpenAPIOperationsToolOutput } from '../entities/tools/search-openapi-operations.js';
|
|
14
14
|
import { type UploadTmpDocumentState } from '../hooks/use-upload-tmp-document.js';
|
|
15
|
-
import type { ChatMode } from '../types';
|
|
15
|
+
import type { ChatMode } from '../types.js';
|
|
16
16
|
export type RegistryDocument = {
|
|
17
17
|
namespace: string;
|
|
18
18
|
slug: string;
|
package/dist/style.css
CHANGED
|
@@ -195,7 +195,7 @@
|
|
|
195
195
|
background-color: var(--scalar-background-3);
|
|
196
196
|
}
|
|
197
197
|
|
|
198
|
-
.toggle-icon-ellipse[data-v-
|
|
198
|
+
.toggle-icon-ellipse[data-v-8f507267] {
|
|
199
199
|
background: var(--scalar-background-1);
|
|
200
200
|
border-radius: 50%;
|
|
201
201
|
width: 7px;
|
|
@@ -207,7 +207,7 @@
|
|
|
207
207
|
box-shadow: inset 0 0 0 1px;
|
|
208
208
|
}
|
|
209
209
|
|
|
210
|
-
.toggle-icon-moon-mask[data-v-
|
|
210
|
+
.toggle-icon-moon-mask[data-v-8f507267] {
|
|
211
211
|
background: var(--scalar-background-1);
|
|
212
212
|
border: 1px solid;
|
|
213
213
|
border-radius: 50%;
|
|
@@ -221,7 +221,7 @@
|
|
|
221
221
|
transform: translate3d(4px, -4px, 0);
|
|
222
222
|
}
|
|
223
223
|
|
|
224
|
-
.toggle-icon-sun-ray[data-v-
|
|
224
|
+
.toggle-icon-sun-ray[data-v-8f507267] {
|
|
225
225
|
background: currentColor;
|
|
226
226
|
border-radius: 8px;
|
|
227
227
|
width: 12px;
|
|
@@ -230,30 +230,30 @@
|
|
|
230
230
|
position: absolute;
|
|
231
231
|
}
|
|
232
232
|
|
|
233
|
-
.toggle-icon-sun-ray[data-v-
|
|
233
|
+
.toggle-icon-sun-ray[data-v-8f507267]:nth-of-type(2) {
|
|
234
234
|
transform: rotate(90deg);
|
|
235
235
|
}
|
|
236
236
|
|
|
237
|
-
.toggle-icon-sun-ray[data-v-
|
|
237
|
+
.toggle-icon-sun-ray[data-v-8f507267]:nth-of-type(3) {
|
|
238
238
|
transform: rotate(45deg);
|
|
239
239
|
}
|
|
240
240
|
|
|
241
|
-
.toggle-icon-sun-ray[data-v-
|
|
241
|
+
.toggle-icon-sun-ray[data-v-8f507267]:nth-of-type(4) {
|
|
242
242
|
transform: rotate(-45deg);
|
|
243
243
|
}
|
|
244
244
|
|
|
245
|
-
.toggle-icon-dark .toggle-icon-ellipse[data-v-
|
|
245
|
+
.toggle-icon-dark .toggle-icon-ellipse[data-v-8f507267] {
|
|
246
246
|
width: 10px;
|
|
247
247
|
height: 10px;
|
|
248
248
|
-webkit-mask-image: radial-gradient(circle at 0 100%, pink 10px, #0000 12px);
|
|
249
249
|
mask-image: radial-gradient(circle at 0 100%, pink 10px, #0000 12px);
|
|
250
250
|
}
|
|
251
251
|
|
|
252
|
-
.toggle-icon-dark .toggle-icon-sun-ray[data-v-
|
|
252
|
+
.toggle-icon-dark .toggle-icon-sun-ray[data-v-8f507267] {
|
|
253
253
|
transform: scale(0);
|
|
254
254
|
}
|
|
255
255
|
|
|
256
|
-
.toggle-icon-dark .toggle-icon-moon-mask[data-v-
|
|
256
|
+
.toggle-icon-dark .toggle-icon-moon-mask[data-v-8f507267] {
|
|
257
257
|
transform: translate3d(0, 0, 0);
|
|
258
258
|
}
|
|
259
259
|
|
|
@@ -274,13 +274,13 @@
|
|
|
274
274
|
word-break: normal;
|
|
275
275
|
word-wrap: normal;
|
|
276
276
|
tab-size: 4;
|
|
277
|
-
line-height: 1.4;
|
|
278
277
|
}
|
|
279
278
|
|
|
280
279
|
.scalar-app code.hljs {
|
|
281
280
|
all: unset;
|
|
282
281
|
font-size: inherit;
|
|
283
282
|
color: var(--scalar-color-2);
|
|
283
|
+
line-height: 1.4;
|
|
284
284
|
font-family: var(--scalar-font-code);
|
|
285
285
|
counter-reset: linenumber;
|
|
286
286
|
}
|
|
@@ -1028,22 +1028,22 @@
|
|
|
1028
1028
|
display: none;
|
|
1029
1029
|
}
|
|
1030
1030
|
|
|
1031
|
-
.scalar-modal-layout[data-v-
|
|
1032
|
-
animation: .3s ease-in-out forwards fadein-layout-
|
|
1031
|
+
.scalar-modal-layout[data-v-b002945c] {
|
|
1032
|
+
animation: .3s ease-in-out forwards fadein-layout-b002945c;
|
|
1033
1033
|
}
|
|
1034
1034
|
|
|
1035
|
-
.scalar-modal[data-v-
|
|
1035
|
+
.scalar-modal[data-v-b002945c] {
|
|
1036
1036
|
box-shadow: var(--scalar-shadow-2);
|
|
1037
|
-
animation: .3s ease-in-out .1s forwards fadein-modal-
|
|
1037
|
+
animation: .3s ease-in-out .1s forwards fadein-modal-b002945c;
|
|
1038
1038
|
transform: translate3d(0, 10px, 0);
|
|
1039
1039
|
}
|
|
1040
1040
|
|
|
1041
|
-
.scalar-modal-layout-full[data-v-
|
|
1041
|
+
.scalar-modal-layout-full[data-v-b002945c] {
|
|
1042
1042
|
opacity: 1 !important;
|
|
1043
1043
|
background: none !important;
|
|
1044
1044
|
}
|
|
1045
1045
|
|
|
1046
|
-
.modal-content-search .modal-body[data-v-
|
|
1046
|
+
.modal-content-search .modal-body[data-v-b002945c] {
|
|
1047
1047
|
flex-direction: column;
|
|
1048
1048
|
max-height: 440px;
|
|
1049
1049
|
padding: 0;
|
|
@@ -1052,13 +1052,13 @@
|
|
|
1052
1052
|
}
|
|
1053
1053
|
|
|
1054
1054
|
@media (max-width: 720px) and (max-height: 480px) {
|
|
1055
|
-
.scalar-modal-layout .scalar-modal[data-v-
|
|
1055
|
+
.scalar-modal-layout .scalar-modal[data-v-b002945c] {
|
|
1056
1056
|
max-height: 90svh;
|
|
1057
1057
|
margin-top: 5svh;
|
|
1058
1058
|
}
|
|
1059
1059
|
}
|
|
1060
1060
|
|
|
1061
|
-
@keyframes fadein-layout-
|
|
1061
|
+
@keyframes fadein-layout-b002945c {
|
|
1062
1062
|
0% {
|
|
1063
1063
|
opacity: 0;
|
|
1064
1064
|
}
|
|
@@ -1068,7 +1068,7 @@
|
|
|
1068
1068
|
}
|
|
1069
1069
|
}
|
|
1070
1070
|
|
|
1071
|
-
@keyframes fadein-modal-
|
|
1071
|
+
@keyframes fadein-modal-b002945c {
|
|
1072
1072
|
0% {
|
|
1073
1073
|
opacity: 0;
|
|
1074
1074
|
transform: translate3d(0, 10px, 0);
|
|
@@ -1080,10 +1080,10 @@
|
|
|
1080
1080
|
}
|
|
1081
1081
|
}
|
|
1082
1082
|
|
|
1083
|
-
.full-size-styles[data-v-
|
|
1083
|
+
.full-size-styles[data-v-b002945c] {
|
|
1084
1084
|
margin: initial;
|
|
1085
1085
|
border-right: var(--scalar-border-width) solid var(--scalar-border-color);
|
|
1086
|
-
animation: .3s ease-in-out forwards fadein-layout-
|
|
1086
|
+
animation: .3s ease-in-out forwards fadein-layout-b002945c;
|
|
1087
1087
|
left: 0;
|
|
1088
1088
|
transform: translate3d(0, 0, 0);
|
|
1089
1089
|
background-color: var(--scalar-background-1) !important;
|
|
@@ -1095,12 +1095,12 @@
|
|
|
1095
1095
|
}
|
|
1096
1096
|
|
|
1097
1097
|
@media (min-width: 800px) {
|
|
1098
|
-
.full-size-styles[data-v-
|
|
1098
|
+
.full-size-styles[data-v-b002945c] {
|
|
1099
1099
|
width: 50dvw !important;
|
|
1100
1100
|
}
|
|
1101
1101
|
}
|
|
1102
1102
|
|
|
1103
|
-
.full-size-styles[data-v-
|
|
1103
|
+
.full-size-styles[data-v-b002945c]:after {
|
|
1104
1104
|
content: "";
|
|
1105
1105
|
width: 50dvw;
|
|
1106
1106
|
height: 100dvh;
|
|
@@ -1109,15 +1109,15 @@
|
|
|
1109
1109
|
right: -50dvw;
|
|
1110
1110
|
}
|
|
1111
1111
|
|
|
1112
|
-
.group\/item > * > .scalar-sidebar-indent .scalar-sidebar-indent-border[data-v-
|
|
1112
|
+
.group\/item > * > .scalar-sidebar-indent .scalar-sidebar-indent-border[data-v-b2388a0c] {
|
|
1113
1113
|
inset-block: -1px;
|
|
1114
1114
|
}
|
|
1115
1115
|
|
|
1116
|
-
.group\/item:first-child > * > .scalar-sidebar-indent .scalar-sidebar-indent-border[data-v-
|
|
1116
|
+
.group\/item:first-child > * > .scalar-sidebar-indent .scalar-sidebar-indent-border[data-v-b2388a0c] {
|
|
1117
1117
|
top: 0;
|
|
1118
1118
|
}
|
|
1119
1119
|
|
|
1120
|
-
.group\/item:last-child > * > .scalar-sidebar-indent .scalar-sidebar-indent-border[data-v-
|
|
1120
|
+
.group\/item:last-child > * > .scalar-sidebar-indent .scalar-sidebar-indent-border[data-v-b2388a0c] {
|
|
1121
1121
|
bottom: 0;
|
|
1122
1122
|
}
|
|
1123
1123
|
|
|
@@ -1354,22 +1354,22 @@
|
|
|
1354
1354
|
inherits: false
|
|
1355
1355
|
}
|
|
1356
1356
|
|
|
1357
|
-
.scalar-virtual-text-search-input[data-v-
|
|
1357
|
+
.scalar-virtual-text-search-input[data-v-b843dc7d]::-webkit-search-cancel-button {
|
|
1358
1358
|
display: none;
|
|
1359
1359
|
}
|
|
1360
1360
|
|
|
1361
|
-
.scalar-virtual-text[data-v-
|
|
1361
|
+
.scalar-virtual-text[data-v-50a0b01e]:focus {
|
|
1362
1362
|
outline: none;
|
|
1363
1363
|
}
|
|
1364
1364
|
|
|
1365
|
-
.scalar-virtual-text-highlight[data-v-
|
|
1365
|
+
.scalar-virtual-text-highlight[data-v-50a0b01e] {
|
|
1366
1366
|
background: var(--scalar-background-accent);
|
|
1367
1367
|
color: inherit;
|
|
1368
1368
|
border-radius: var(--scalar-radius);
|
|
1369
1369
|
padding: 1px 0;
|
|
1370
1370
|
}
|
|
1371
1371
|
|
|
1372
|
-
.scalar-virtual-text-highlight-active[data-v-
|
|
1372
|
+
.scalar-virtual-text-highlight-active[data-v-50a0b01e] {
|
|
1373
1373
|
background: var(--scalar-color-accent);
|
|
1374
1374
|
color: var(--scalar-background-1);
|
|
1375
1375
|
border-radius: var(--scalar-radius);
|
|
@@ -1943,38 +1943,38 @@ input[data-v-029a43f5]::placeholder {
|
|
|
1943
1943
|
scrollbar-width: none;
|
|
1944
1944
|
}
|
|
1945
1945
|
|
|
1946
|
-
.request-section-content[data-v-
|
|
1946
|
+
.request-section-content[data-v-87ab23d9] {
|
|
1947
1947
|
--scalar-border-width: .5px;
|
|
1948
1948
|
}
|
|
1949
1949
|
|
|
1950
|
-
.request-section-content-filter[data-v-
|
|
1950
|
+
.request-section-content-filter[data-v-87ab23d9] {
|
|
1951
1951
|
box-shadow: 0 -10px 0 10px var(--scalar-background-1);
|
|
1952
1952
|
}
|
|
1953
1953
|
|
|
1954
|
-
.request-item:focus-within .request-meta-buttons[data-v-
|
|
1954
|
+
.request-item:focus-within .request-meta-buttons[data-v-87ab23d9] {
|
|
1955
1955
|
opacity: 1;
|
|
1956
1956
|
}
|
|
1957
1957
|
|
|
1958
|
-
.group-hover-input[data-v-
|
|
1958
|
+
.group-hover-input[data-v-87ab23d9] {
|
|
1959
1959
|
border-width: var(--scalar-border-width);
|
|
1960
1960
|
border-color: #0000;
|
|
1961
1961
|
}
|
|
1962
1962
|
|
|
1963
|
-
.group:hover .group-hover-input[data-v-
|
|
1963
|
+
.group:hover .group-hover-input[data-v-87ab23d9] {
|
|
1964
1964
|
background: var(--scalar-background-1);
|
|
1965
1965
|
}
|
|
1966
1966
|
|
|
1967
1967
|
@supports (color: color-mix(in lab, red, red)) {
|
|
1968
|
-
.group:hover .group-hover-input[data-v-
|
|
1968
|
+
.group:hover .group-hover-input[data-v-87ab23d9] {
|
|
1969
1969
|
background: color-mix(in srgb, var(--scalar-background-1), var(--scalar-background-2));
|
|
1970
1970
|
}
|
|
1971
1971
|
}
|
|
1972
1972
|
|
|
1973
|
-
.group:hover .group-hover-input[data-v-
|
|
1973
|
+
.group:hover .group-hover-input[data-v-87ab23d9] {
|
|
1974
1974
|
border-color: var(--scalar-border-color);
|
|
1975
1975
|
}
|
|
1976
1976
|
|
|
1977
|
-
.group-hover-input[data-v-
|
|
1977
|
+
.group-hover-input[data-v-87ab23d9]:focus {
|
|
1978
1978
|
border-color: var(--scalar-border-color) !important;
|
|
1979
1979
|
background: none !important;
|
|
1980
1980
|
}
|
|
@@ -2658,6 +2658,10 @@ input[data-v-029a43f5]::placeholder {
|
|
|
2658
2658
|
margin-bottom: calc(var(--scalar-border-width) * -1);
|
|
2659
2659
|
}
|
|
2660
2660
|
|
|
2661
|
+
.scalar-app .-mb-px {
|
|
2662
|
+
margin-bottom: -1px;
|
|
2663
|
+
}
|
|
2664
|
+
|
|
2661
2665
|
.scalar-app .ml-auto {
|
|
2662
2666
|
margin-left: auto;
|
|
2663
2667
|
}
|
|
@@ -3123,6 +3127,10 @@ input[data-v-029a43f5]::placeholder {
|
|
|
3123
3127
|
flex-direction: row;
|
|
3124
3128
|
}
|
|
3125
3129
|
|
|
3130
|
+
.scalar-app .flex-nowrap {
|
|
3131
|
+
flex-wrap: nowrap;
|
|
3132
|
+
}
|
|
3133
|
+
|
|
3126
3134
|
.scalar-app .flex-wrap {
|
|
3127
3135
|
flex-wrap: wrap;
|
|
3128
3136
|
}
|
|
@@ -4383,11 +4391,23 @@ input[data-v-029a43f5]::placeholder {
|
|
|
4383
4391
|
-webkit-app-region: drag;
|
|
4384
4392
|
}
|
|
4385
4393
|
|
|
4394
|
+
.scalar-app .\[\&_\.scalar-card-header-title\]\:flex-1 .scalar-card-header-title {
|
|
4395
|
+
flex: 1;
|
|
4396
|
+
}
|
|
4397
|
+
|
|
4398
|
+
.scalar-app .\[\&_\.scalar-card-header-title\]\:whitespace-normal .scalar-card-header-title {
|
|
4399
|
+
white-space: normal;
|
|
4400
|
+
}
|
|
4401
|
+
|
|
4386
4402
|
.scalar-app .\[\&_svg\]\:size-\[var\(--schema-glyph-icon\,16px\)\] svg {
|
|
4387
4403
|
width: var(--schema-glyph-icon, 16px);
|
|
4388
4404
|
height: var(--schema-glyph-icon, 16px);
|
|
4389
4405
|
}
|
|
4390
4406
|
|
|
4407
|
+
.scalar-app .\[\&\>div\:last-child\]\:shrink-0 > div:last-child {
|
|
4408
|
+
flex-shrink: 0;
|
|
4409
|
+
}
|
|
4410
|
+
|
|
4391
4411
|
.scalar-app .\[\&\[hidden\=until-found\]\]\:border-s-0[hidden="until-found"] {
|
|
4392
4412
|
border-inline-start-style: var(--tw-border-style);
|
|
4393
4413
|
border-inline-start-width: 0;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _plugin_vue_export_helper_default from "../../_virtual/_plugin-vue_export-helper.js";
|
|
2
|
-
import Catalog_vue_vue_type_script_setup_true_lang_default from "./Catalog.
|
|
3
|
-
/* empty css
|
|
4
|
-
/* empty css
|
|
2
|
+
import Catalog_vue_vue_type_script_setup_true_lang_default from "./Catalog.vue_vue_type_script_setup_true_lang.js";
|
|
3
|
+
/* empty css */
|
|
4
|
+
/* empty css */
|
|
5
5
|
//#region src/views/Catalog/Catalog.vue
|
|
6
6
|
var Catalog_default = /*#__PURE__*/ _plugin_vue_export_helper_default(Catalog_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-18b2aea2"]]);
|
|
7
7
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Catalog.vue.js","names":[],"sources":["../../../src/views/Catalog/Catalog.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarIcon } from '@scalar/components/icon'\nimport { ScalarModal, type ModalState } from '@scalar/components/modal'\nimport { ScalarSearchInput } from '@scalar/components/search-input'\nimport { computed } from 'vue'\n\nimport { useSearch } from '@/hooks/use-search'\nimport { useState } from '@/state/state'\n\ndefineProps<{\n modal: ModalState\n}>()\n\nconst search = useSearch()\n\nconst state = useState()\n\nconst searchOptions = computed(() =>\n search.results.value\n .filter((r) => {\n return !state.registryDocuments.value.some(\n (d) => d.namespace === r.namespace && d.slug === r.slug,\n )\n })\n .map((result) => ({\n ...result,\n label: result.title,\n id: result.id,\n })),\n)\n</script>\n\n<template>\n <ScalarModal\n class=\"catalogModal\"\n :state=\"modal\">\n <ScalarSearchInput\n autofocus\n class=\"searchInput\"\n :modelValue=\"search.query.value\"\n @update:modelValue=\"(v) => (search.query.value = v ?? '')\" />\n <template v-if=\"searchOptions.length\">\n <div class=\"catalog custom-scroll\">\n <button\n v-for=\"option in searchOptions\"\n :key=\"option.id\"\n class=\"item\"\n type=\"button\"\n @click=\"\n () => {\n state.addDocument(option)\n modal.hide()\n }\n \">\n <div class=\"left\">\n <img\n v-if=\"option.logoUrl\"\n class=\"logo\"\n :src=\"option.logoUrl\" />\n <ScalarIcon\n v-else\n class=\"logo\"\n logo=\"Openapi\" />\n </div>\n\n <div class=\"right\">\n <div class=\"item-top\">\n <span>{{ option.title }}</span>\n\n <span class=\"version\">v{{ option.currentVersion }}</span>\n </div>\n\n <span class=\"description\">\n @{{ option.namespace }}/{{ option.slug }}\n </span>\n </div>\n </button>\n </div>\n </template>\n </ScalarModal>\n</template>\n\n<style>\n.catalogModal .scalar-modal-body {\n display: flex;\n flex-direction: column;\n}\n</style>\n\n<style scoped>\n.searchInput {\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n border-radius: var(--scalar-radius-lg);\n margin-bottom: 10px;\n}\n.catalog {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 10px;\n overflow-y: scroll;\n font-size: var(--scalar-font-size-3);\n}\n.item {\n display: flex;\n padding: 15px;\n gap: 10px;\n align-items: center;\n background-color: var(--scalar-background-2);\n border-radius: var(--scalar-radius-lg);\n transition: background-color 160ms ease;\n}\n.item:hover {\n background-color: color-mix(\n in srgb,\n var(--scalar-background-3),\n transparent 40%\n ) !important;\n}\n.left {\n align-items: center;\n}\n.right {\n display: flex;\n flex-direction: column;\n}\n.logo {\n width: 25px;\n}\n.item-top {\n display: flex;\n gap: 10px;\n}\n.version {\n background: var(--scalar-background-3);\n padding: 2px 5px;\n border-radius: var(--scalar-radius);\n font-size: var(--scalar-font-size-5);\n color: var(--scalar-color-3);\n}\n.description {\n color: var(--scalar-color-2);\n}\n</style>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"Catalog.vue.js","names":["_sfc_main"],"sources":["../../../src/views/Catalog/Catalog.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarIcon } from '@scalar/components/icon'\nimport { ScalarModal, type ModalState } from '@scalar/components/modal'\nimport { ScalarSearchInput } from '@scalar/components/search-input'\nimport { computed } from 'vue'\n\nimport { useSearch } from '@/hooks/use-search'\nimport { useState } from '@/state/state'\n\ndefineProps<{\n modal: ModalState\n}>()\n\nconst search = useSearch()\n\nconst state = useState()\n\nconst searchOptions = computed(() =>\n search.results.value\n .filter((r) => {\n return !state.registryDocuments.value.some(\n (d) => d.namespace === r.namespace && d.slug === r.slug,\n )\n })\n .map((result) => ({\n ...result,\n label: result.title,\n id: result.id,\n })),\n)\n</script>\n\n<template>\n <ScalarModal\n class=\"catalogModal\"\n :state=\"modal\">\n <ScalarSearchInput\n autofocus\n class=\"searchInput\"\n :modelValue=\"search.query.value\"\n @update:modelValue=\"(v) => (search.query.value = v ?? '')\" />\n <template v-if=\"searchOptions.length\">\n <div class=\"catalog custom-scroll\">\n <button\n v-for=\"option in searchOptions\"\n :key=\"option.id\"\n class=\"item\"\n type=\"button\"\n @click=\"\n () => {\n state.addDocument(option)\n modal.hide()\n }\n \">\n <div class=\"left\">\n <img\n v-if=\"option.logoUrl\"\n class=\"logo\"\n :src=\"option.logoUrl\" />\n <ScalarIcon\n v-else\n class=\"logo\"\n logo=\"Openapi\" />\n </div>\n\n <div class=\"right\">\n <div class=\"item-top\">\n <span>{{ option.title }}</span>\n\n <span class=\"version\">v{{ option.currentVersion }}</span>\n </div>\n\n <span class=\"description\">\n @{{ option.namespace }}/{{ option.slug }}\n </span>\n </div>\n </button>\n </div>\n </template>\n </ScalarModal>\n</template>\n\n<style>\n.catalogModal .scalar-modal-body {\n display: flex;\n flex-direction: column;\n}\n</style>\n\n<style scoped>\n.searchInput {\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n border-radius: var(--scalar-radius-lg);\n margin-bottom: 10px;\n}\n.catalog {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 10px;\n overflow-y: scroll;\n font-size: var(--scalar-font-size-3);\n}\n.item {\n display: flex;\n padding: 15px;\n gap: 10px;\n align-items: center;\n background-color: var(--scalar-background-2);\n border-radius: var(--scalar-radius-lg);\n transition: background-color 160ms ease;\n}\n.item:hover {\n background-color: color-mix(\n in srgb,\n var(--scalar-background-3),\n transparent 40%\n ) !important;\n}\n.left {\n align-items: center;\n}\n.right {\n display: flex;\n flex-direction: column;\n}\n.logo {\n width: 25px;\n}\n.item-top {\n display: flex;\n gap: 10px;\n}\n.version {\n background: var(--scalar-background-3);\n padding: 2px 5px;\n border-radius: var(--scalar-radius);\n font-size: var(--scalar-font-size-5);\n color: var(--scalar-color-3);\n}\n.description {\n color: var(--scalar-color-2);\n}\n</style>\n"],"mappings":""}
|
package/dist/views/Catalog/{Catalog.vue.script.js → Catalog.vue_vue_type_script_setup_true_lang.js}
RENAMED
|
@@ -66,4 +66,4 @@ var Catalog_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCo
|
|
|
66
66
|
//#endregion
|
|
67
67
|
export { Catalog_vue_vue_type_script_setup_true_lang_default as default };
|
|
68
68
|
|
|
69
|
-
//# sourceMappingURL=Catalog.
|
|
69
|
+
//# sourceMappingURL=Catalog.vue_vue_type_script_setup_true_lang.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Catalog.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","_unref","_withCtx","_createVNode","_createElementBlock","_Fragment","_renderList","_createElementVNode","_toDisplayString","_createCommentVNode"],"sources":["../../../src/views/Catalog/Catalog.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarIcon } from '@scalar/components/icon'\nimport { ScalarModal, type ModalState } from '@scalar/components/modal'\nimport { ScalarSearchInput } from '@scalar/components/search-input'\nimport { computed } from 'vue'\n\nimport { useSearch } from '@/hooks/use-search'\nimport { useState } from '@/state/state'\n\ndefineProps<{\n modal: ModalState\n}>()\n\nconst search = useSearch()\n\nconst state = useState()\n\nconst searchOptions = computed(() =>\n search.results.value\n .filter((r) => {\n return !state.registryDocuments.value.some(\n (d) => d.namespace === r.namespace && d.slug === r.slug,\n )\n })\n .map((result) => ({\n ...result,\n label: result.title,\n id: result.id,\n })),\n)\n</script>\n\n<template>\n <ScalarModal\n class=\"catalogModal\"\n :state=\"modal\">\n <ScalarSearchInput\n autofocus\n class=\"searchInput\"\n :modelValue=\"search.query.value\"\n @update:modelValue=\"(v) => (search.query.value = v ?? '')\" />\n <template v-if=\"searchOptions.length\">\n <div class=\"catalog custom-scroll\">\n <button\n v-for=\"option in searchOptions\"\n :key=\"option.id\"\n class=\"item\"\n type=\"button\"\n @click=\"\n () => {\n state.addDocument(option)\n modal.hide()\n }\n \">\n <div class=\"left\">\n <img\n v-if=\"option.logoUrl\"\n class=\"logo\"\n :src=\"option.logoUrl\" />\n <ScalarIcon\n v-else\n class=\"logo\"\n logo=\"Openapi\" />\n </div>\n\n <div class=\"right\">\n <div class=\"item-top\">\n <span>{{ option.title }}</span>\n\n <span class=\"version\">v{{ option.currentVersion }}</span>\n </div>\n\n <span class=\"description\">\n @{{ option.namespace }}/{{ option.slug }}\n </span>\n </div>\n </button>\n </div>\n </template>\n </ScalarModal>\n</template>\n\n<style>\n.catalogModal .scalar-modal-body {\n display: flex;\n flex-direction: column;\n}\n</style>\n\n<style scoped>\n.searchInput {\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n border-radius: var(--scalar-radius-lg);\n margin-bottom: 10px;\n}\n.catalog {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 10px;\n overflow-y: scroll;\n font-size: var(--scalar-font-size-3);\n}\n.item {\n display: flex;\n padding: 15px;\n gap: 10px;\n align-items: center;\n background-color: var(--scalar-background-2);\n border-radius: var(--scalar-radius-lg);\n transition: background-color 160ms ease;\n}\n.item:hover {\n background-color: color-mix(\n in srgb,\n var(--scalar-background-3),\n transparent 40%\n ) !important;\n}\n.left {\n align-items: center;\n}\n.right {\n display: flex;\n flex-direction: column;\n}\n.logo {\n width: 25px;\n}\n.item-top {\n display: flex;\n gap: 10px;\n}\n.version {\n background: var(--scalar-background-3);\n padding: 2px 5px;\n border-radius: var(--scalar-radius);\n font-size: var(--scalar-font-size-5);\n color: var(--scalar-color-3);\n}\n.description {\n color: var(--scalar-color-2);\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;EAaA,MAAM,SAAS,UAAU;EAEzB,MAAM,QAAQ,SAAS;EAEvB,MAAM,gBAAgB,eACpB,OAAO,QAAQ,MACZ,QAAQ,MAAM;GACb,OAAO,CAAC,MAAM,kBAAkB,MAAM,MACnC,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EAAE,IACrD;EACF,CAAC,CAAA,CACA,KAAK,YAAY;GAChB,GAAG;GACH,OAAO,OAAO;GACd,IAAI,OAAO;EACb,EAAE,CACN;;GAIE,OAAAA,UAAA,GAAAC,YA8CcC,MAAA,WAAA,GAAA;IA7CZ,OAAM;IACL,OAAO,QAAA;;IACR,SAAAC,cAI+D,CAJ/DC,YAI+DF,MAAA,iBAAA,GAAA;KAH7D,WAAA;KACA,OAAM;KACL,YAAYA,MAAA,MAAA,CAAM,CAAC,MAAM;KACzB,uBAAiB,OAAA,OAAA,OAAA,MAAG,MAAO,MAAA,MAAA,CAAM,CAAC,MAAM,QAAQ,KAAC;I,6BACpC,cAAA,MAAc,UAC5BF,UAAA,GAAAK,mBAmCM,OAnCN,YAmCM,EAlCJL,UAAA,IAAA,GAAAK,mBAiCSC,UAAA,MAAAC,WAhCU,cAAA,QAAV,WAAM;KADf,OAAAP,UAAA,GAAAK,mBAiCS,UAAA;MA/BN,KAAK,OAAO;MACb,OAAM;MACN,MAAK;MACJ,e;OAA0C,MAAA,KAAA,CAAK,CAAC,YAAY,MAAM;OAAgB,QAAA,MAAM,KAAI;;K,IAM7FG,mBASM,OATN,YASM,CAPI,OAAO,WADfR,UAAA,GAAAK,mBAG0B,OAAA;;MADxB,OAAM;MACL,KAAK,OAAO;K,4BACfL,UAAA,GAAAC,YAGmBC,MAAA,UAAA,GAAA;;MADjB,OAAM;MACN,MAAK;K,OAGTM,mBAUM,OAVN,YAUM,CATJA,mBAIM,OAJN,YAIM,CAHJA,mBAA+B,QAAA,MAAAC,gBAAtB,OAAO,KAAK,GAAA,CAAA,GAErBD,mBAAyD,QAAzD,YAAsB,MAACC,gBAAG,OAAO,cAAc,GAAA,CAAA,C,IAGjDD,mBAEO,QAFP,YAA0B,OACvBC,gBAAG,OAAO,SAAS,IAAG,MAACA,gBAAG,OAAO,IAAI,GAAA,CAAA,C"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _plugin_vue_export_helper_default from "../../_virtual/_plugin-vue_export-helper.js";
|
|
2
|
-
import Chat_vue_vue_type_script_setup_true_lang_default from "./Chat.
|
|
3
|
-
/* empty css
|
|
2
|
+
import Chat_vue_vue_type_script_setup_true_lang_default from "./Chat.vue_vue_type_script_setup_true_lang.js";
|
|
3
|
+
/* empty css */
|
|
4
4
|
//#region src/views/Chat/Chat.vue
|
|
5
5
|
var Chat_default = /*#__PURE__*/ _plugin_vue_export_helper_default(Chat_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-6573ec87"]]);
|
|
6
6
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chat.vue.js","names":[],"sources":["../../../src/views/Chat/Chat.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { reactive, toRef } from 'vue'\n\nimport { ASK_FOR_AUTHENTICATION_TOOL_NAME } from '@/entities/tools/ask-for-authentication'\nimport { EXECUTE_CLIENT_SIDE_REQUEST_TOOL_NAME } from '@/entities/tools/execute-request'\nimport { SUMMARIZE_OPENAPI_SPECS_TOOL_NAME } from '@/entities/tools/get-openapi-specs-summary'\nimport { SEARCH_OPENAPI_OPERATIONS_TOOL_NAME } from '@/entities/tools/search-openapi-operations'\nimport { useState } from '@/state/state'\nimport AskForAuthentication from '@/views/Chat/Messages/AskForAuthentication.vue'\nimport ExecuteRequestTool from '@/views/Chat/Messages/ExecuteRequestTool.vue'\nimport GetOpenAPISpecsSummary from '@/views/Chat/Messages/GetOpenAPISpecsSummary.vue'\nimport SearchOpenAPIOperationsTool from '@/views/Chat/Messages/SearchOpenAPIOperationsTool.vue'\nimport Text from '@/views/Chat/Messages/Text.vue'\nimport PromptForm from '@/views/PromptForm.vue'\n\nconst emit = defineEmits<{\n (e: 'submit'): void\n (e: 'uploadApi'): void\n}>()\n\nconst state = useState()\n</script>\n\n<template>\n <div class=\"chat\">\n <template\n v-for=\"message in state.chat.messages\"\n :key=\"message.id\">\n <template v-if=\"message.role === 'user'\">\n <div\n v-for=\"(part, index) in message.parts\"\n :key=\"`${message.id}-${index}`\"\n class=\"userMessage\">\n <p v-if=\"part.type === 'text'\">{{ part.text }}</p>\n </div>\n </template>\n <template v-if=\"message.role === 'assistant'\">\n <div\n v-for=\"(part, index) in message.parts\"\n :key=\"`${message.id}-${index}`\">\n <Text\n v-if=\"part.type === 'text'\"\n :messagePart=\"toRef(part)\" />\n <ExecuteRequestTool\n v-if=\"\n part.type ===\n (`tool-${EXECUTE_CLIENT_SIDE_REQUEST_TOOL_NAME}` as const)\n \"\n :messagePart=\"toRef(part)\" />\n <SearchOpenAPIOperationsTool\n v-if=\"\n part.type ===\n (`tool-${SEARCH_OPENAPI_OPERATIONS_TOOL_NAME}` as const)\n \"\n :message=\"reactive(message)\"\n :messagePart=\"toRef(part)\" />\n <GetOpenAPISpecsSummary\n v-if=\"\n part.type ===\n (`tool-${SUMMARIZE_OPENAPI_SPECS_TOOL_NAME}` as const)\n \"\n :message=\"reactive(message)\"\n :messagePart=\"toRef(part)\" />\n <AskForAuthentication\n v-if=\"\n part.type ===\n (`tool-${ASK_FOR_AUTHENTICATION_TOOL_NAME}` as const)\n \"\n :message=\"reactive(message)\"\n :messagePart=\"toRef(part)\" />\n </div>\n </template>\n </template>\n <div class=\"spacer\"></div>\n </div>\n <div class=\"formContainer\">\n <PromptForm\n @submit=\"emit('submit')\"\n @uploadApi=\"emit('uploadApi')\" />\n </div>\n</template>\n\n<style scoped>\n.chat {\n flex: 1;\n display: flex;\n flex-direction: column;\n width: 100%;\n padding: 24px 0;\n max-width: 744px;\n}\n\n.userMessage {\n padding-top: 6px;\n padding-bottom: 6px;\n padding-inline: 16px;\n border-radius: var(--scalar-radius-3xl);\n background: var(--scalar-background-2);\n width: fit-content;\n max-width: 80%;\n margin-left: auto;\n font-size: 16px;\n line-height: 24px;\n color: var(--scalar-color-1);\n margin-bottom: 12px;\n}\ndiv + .userMessage {\n margin-top: 64px;\n}\n.chat > :deep(div:has(.executeRequestTool)) + div:has(.executeRequestTool) {\n margin-top: -12px;\n}\n.spacer {\n min-height: 280px;\n width: 100%;\n}\n\n.formContainer {\n position: fixed;\n bottom: 20px;\n width: 100%;\n max-width: 744px;\n z-index: 1;\n}\n.chat :deep(.markdown) {\n margin-bottom: 12px;\n}\n</style>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"Chat.vue.js","names":["_sfc_main"],"sources":["../../../src/views/Chat/Chat.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { reactive, toRef } from 'vue'\n\nimport { ASK_FOR_AUTHENTICATION_TOOL_NAME } from '@/entities/tools/ask-for-authentication'\nimport { EXECUTE_CLIENT_SIDE_REQUEST_TOOL_NAME } from '@/entities/tools/execute-request'\nimport { SUMMARIZE_OPENAPI_SPECS_TOOL_NAME } from '@/entities/tools/get-openapi-specs-summary'\nimport { SEARCH_OPENAPI_OPERATIONS_TOOL_NAME } from '@/entities/tools/search-openapi-operations'\nimport { useState } from '@/state/state'\nimport AskForAuthentication from '@/views/Chat/Messages/AskForAuthentication.vue'\nimport ExecuteRequestTool from '@/views/Chat/Messages/ExecuteRequestTool.vue'\nimport GetOpenAPISpecsSummary from '@/views/Chat/Messages/GetOpenAPISpecsSummary.vue'\nimport SearchOpenAPIOperationsTool from '@/views/Chat/Messages/SearchOpenAPIOperationsTool.vue'\nimport Text from '@/views/Chat/Messages/Text.vue'\nimport PromptForm from '@/views/PromptForm.vue'\n\nconst emit = defineEmits<{\n (e: 'submit'): void\n (e: 'uploadApi'): void\n}>()\n\nconst state = useState()\n</script>\n\n<template>\n <div class=\"chat\">\n <template\n v-for=\"message in state.chat.messages\"\n :key=\"message.id\">\n <template v-if=\"message.role === 'user'\">\n <div\n v-for=\"(part, index) in message.parts\"\n :key=\"`${message.id}-${index}`\"\n class=\"userMessage\">\n <p v-if=\"part.type === 'text'\">{{ part.text }}</p>\n </div>\n </template>\n <template v-if=\"message.role === 'assistant'\">\n <div\n v-for=\"(part, index) in message.parts\"\n :key=\"`${message.id}-${index}`\">\n <Text\n v-if=\"part.type === 'text'\"\n :messagePart=\"toRef(part)\" />\n <ExecuteRequestTool\n v-if=\"\n part.type ===\n (`tool-${EXECUTE_CLIENT_SIDE_REQUEST_TOOL_NAME}` as const)\n \"\n :messagePart=\"toRef(part)\" />\n <SearchOpenAPIOperationsTool\n v-if=\"\n part.type ===\n (`tool-${SEARCH_OPENAPI_OPERATIONS_TOOL_NAME}` as const)\n \"\n :message=\"reactive(message)\"\n :messagePart=\"toRef(part)\" />\n <GetOpenAPISpecsSummary\n v-if=\"\n part.type ===\n (`tool-${SUMMARIZE_OPENAPI_SPECS_TOOL_NAME}` as const)\n \"\n :message=\"reactive(message)\"\n :messagePart=\"toRef(part)\" />\n <AskForAuthentication\n v-if=\"\n part.type ===\n (`tool-${ASK_FOR_AUTHENTICATION_TOOL_NAME}` as const)\n \"\n :message=\"reactive(message)\"\n :messagePart=\"toRef(part)\" />\n </div>\n </template>\n </template>\n <div class=\"spacer\"></div>\n </div>\n <div class=\"formContainer\">\n <PromptForm\n @submit=\"emit('submit')\"\n @uploadApi=\"emit('uploadApi')\" />\n </div>\n</template>\n\n<style scoped>\n.chat {\n flex: 1;\n display: flex;\n flex-direction: column;\n width: 100%;\n padding: 24px 0;\n max-width: 744px;\n}\n\n.userMessage {\n padding-top: 6px;\n padding-bottom: 6px;\n padding-inline: 16px;\n border-radius: var(--scalar-radius-3xl);\n background: var(--scalar-background-2);\n width: fit-content;\n max-width: 80%;\n margin-left: auto;\n font-size: 16px;\n line-height: 24px;\n color: var(--scalar-color-1);\n margin-bottom: 12px;\n}\ndiv + .userMessage {\n margin-top: 64px;\n}\n.chat > :deep(div:has(.executeRequestTool)) + div:has(.executeRequestTool) {\n margin-top: -12px;\n}\n.spacer {\n min-height: 280px;\n width: 100%;\n}\n\n.formContainer {\n position: fixed;\n bottom: 20px;\n width: 100%;\n max-width: 744px;\n z-index: 1;\n}\n.chat :deep(.markdown) {\n margin-bottom: 12px;\n}\n</style>\n"],"mappings":""}
|
|
@@ -64,4 +64,4 @@ var Chat_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCompo
|
|
|
64
64
|
//#endregion
|
|
65
65
|
export { Chat_vue_vue_type_script_setup_true_lang_default as default };
|
|
66
66
|
|
|
67
|
-
//# sourceMappingURL=Chat.
|
|
67
|
+
//# sourceMappingURL=Chat.vue_vue_type_script_setup_true_lang.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Chat.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_Fragment","_createElementVNode","_renderList","_unref","_toDisplayString","_createCommentVNode","_createBlock","Text","ExecuteRequestTool","SearchOpenAPIOperationsTool","GetOpenAPISpecsSummary","AskForAuthentication","_createVNode","PromptForm"],"sources":["../../../src/views/Chat/Chat.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { reactive, toRef } from 'vue'\n\nimport { ASK_FOR_AUTHENTICATION_TOOL_NAME } from '@/entities/tools/ask-for-authentication'\nimport { EXECUTE_CLIENT_SIDE_REQUEST_TOOL_NAME } from '@/entities/tools/execute-request'\nimport { SUMMARIZE_OPENAPI_SPECS_TOOL_NAME } from '@/entities/tools/get-openapi-specs-summary'\nimport { SEARCH_OPENAPI_OPERATIONS_TOOL_NAME } from '@/entities/tools/search-openapi-operations'\nimport { useState } from '@/state/state'\nimport AskForAuthentication from '@/views/Chat/Messages/AskForAuthentication.vue'\nimport ExecuteRequestTool from '@/views/Chat/Messages/ExecuteRequestTool.vue'\nimport GetOpenAPISpecsSummary from '@/views/Chat/Messages/GetOpenAPISpecsSummary.vue'\nimport SearchOpenAPIOperationsTool from '@/views/Chat/Messages/SearchOpenAPIOperationsTool.vue'\nimport Text from '@/views/Chat/Messages/Text.vue'\nimport PromptForm from '@/views/PromptForm.vue'\n\nconst emit = defineEmits<{\n (e: 'submit'): void\n (e: 'uploadApi'): void\n}>()\n\nconst state = useState()\n</script>\n\n<template>\n <div class=\"chat\">\n <template\n v-for=\"message in state.chat.messages\"\n :key=\"message.id\">\n <template v-if=\"message.role === 'user'\">\n <div\n v-for=\"(part, index) in message.parts\"\n :key=\"`${message.id}-${index}`\"\n class=\"userMessage\">\n <p v-if=\"part.type === 'text'\">{{ part.text }}</p>\n </div>\n </template>\n <template v-if=\"message.role === 'assistant'\">\n <div\n v-for=\"(part, index) in message.parts\"\n :key=\"`${message.id}-${index}`\">\n <Text\n v-if=\"part.type === 'text'\"\n :messagePart=\"toRef(part)\" />\n <ExecuteRequestTool\n v-if=\"\n part.type ===\n (`tool-${EXECUTE_CLIENT_SIDE_REQUEST_TOOL_NAME}` as const)\n \"\n :messagePart=\"toRef(part)\" />\n <SearchOpenAPIOperationsTool\n v-if=\"\n part.type ===\n (`tool-${SEARCH_OPENAPI_OPERATIONS_TOOL_NAME}` as const)\n \"\n :message=\"reactive(message)\"\n :messagePart=\"toRef(part)\" />\n <GetOpenAPISpecsSummary\n v-if=\"\n part.type ===\n (`tool-${SUMMARIZE_OPENAPI_SPECS_TOOL_NAME}` as const)\n \"\n :message=\"reactive(message)\"\n :messagePart=\"toRef(part)\" />\n <AskForAuthentication\n v-if=\"\n part.type ===\n (`tool-${ASK_FOR_AUTHENTICATION_TOOL_NAME}` as const)\n \"\n :message=\"reactive(message)\"\n :messagePart=\"toRef(part)\" />\n </div>\n </template>\n </template>\n <div class=\"spacer\"></div>\n </div>\n <div class=\"formContainer\">\n <PromptForm\n @submit=\"emit('submit')\"\n @uploadApi=\"emit('uploadApi')\" />\n </div>\n</template>\n\n<style scoped>\n.chat {\n flex: 1;\n display: flex;\n flex-direction: column;\n width: 100%;\n padding: 24px 0;\n max-width: 744px;\n}\n\n.userMessage {\n padding-top: 6px;\n padding-bottom: 6px;\n padding-inline: 16px;\n border-radius: var(--scalar-radius-3xl);\n background: var(--scalar-background-2);\n width: fit-content;\n max-width: 80%;\n margin-left: auto;\n font-size: 16px;\n line-height: 24px;\n color: var(--scalar-color-1);\n margin-bottom: 12px;\n}\ndiv + .userMessage {\n margin-top: 64px;\n}\n.chat > :deep(div:has(.executeRequestTool)) + div:has(.executeRequestTool) {\n margin-top: -12px;\n}\n.spacer {\n min-height: 280px;\n width: 100%;\n}\n\n.formContainer {\n position: fixed;\n bottom: 20px;\n width: 100%;\n max-width: 744px;\n z-index: 1;\n}\n.chat :deep(.markdown) {\n margin-bottom: 12px;\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;EAeA,MAAM,OAAO;EAKb,MAAM,QAAQ,SAAS;;G,wDAIrBG,mBAkDM,OAlDN,YAkDM,EAjDJH,UAAA,IAAA,GAAAC,mBA+CWC,UAAA,MAAAE,WA9CSC,MAAA,KAAA,CAAK,CAAC,KAAK,WAAtB,YAAO;I,mDACR,KAAA,QAAQ,G,IACE,QAAQ,SAAI,UAC1BL,UAAA,IAAA,GAAAC,mBAKMC,UAAA,EAAA,KAAA,EAAA,GAAAE,WAJoB,QAAQ,QAAxB,MAAM,UAAK;KADrB,OAAAJ,UAAA,GAAAC,mBAKM,OAAA;MAHH,KAAG,GAAK,QAAQ,GAAE,GAAI;MACvB,OAAM;K,IACG,KAAK,SAAI,UAAlBD,UAAA,GAAAC,mBAAkD,KAAA,YAAAK,gBAAhB,KAAK,IAAI,GAAA,CAAA,K;I,0CAG/B,QAAQ,SAAI,eAC1BN,UAAA,IAAA,GAAAC,mBAiCMC,UAAA,EAAA,KAAA,EAAA,GAAAE,WAhCoB,QAAQ,QAAxB,MAAM,UAAK;KADrB,OAAAJ,UAAA,GAAAC,mBAiCM,OAAA,EA/BH,KAAG,GAAK,QAAQ,GAAE,GAAI,Q;MAEf,KAAK,SAAI,UADjBD,UAAA,GAAAQ,YAE+BC,cAAA;;OAA5B,aAAa,MAAM,IAAI;;MAEH,KAAK,SAAgC,QAAAJ,MAAAA,iBAAA,OAD5DL,UAAA,GAAAQ,YAK+BE,4BAAA;;OAA5B,aAAa,MAAM,IAAI;;MAEH,KAAK,SAAgC,QAAAL,MAAAA,2BAAA,OAD5DL,UAAA,GAAAQ,YAM+BG,qCAAA;;OAD5B,SAAS,SAAS,OAAO;OACzB,aAAa,MAAM,IAAI;;MAEH,KAAK,SAAgC,QAAAN,MAAAA,yBAAA,OAD5DL,UAAA,GAAAQ,YAM+BI,gCAAA;;OAD5B,SAAS,SAAS,OAAO;OACzB,aAAa,MAAM,IAAI;;MAEH,KAAK,SAAgC,QAAAP,MAAAA,wBAAA,OAD5DL,UAAA,GAAAQ,YAM+BK,8BAAA;;OAD5B,SAAS,SAAS,OAAO;OACzB,aAAa,MAAM,IAAI;;;;G,WAIhC,OAAA,OAAA,OAAA,KAAAV,mBAA0B,OAAA,EAArB,OAAM,SAAQ,GAAA,MAAA,EAAA,E,IAErBA,mBAIM,OAJN,YAIM,CAHJW,YAEmCC,oBAAA;IADhC,UAAM,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,QAAA;IACZ,aAAS,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,WAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _plugin_vue_export_helper_default from "../../../_virtual/_plugin-vue_export-helper.js";
|
|
2
|
-
import AskForAuthentication_vue_vue_type_script_setup_true_lang_default from "./AskForAuthentication.
|
|
3
|
-
/* empty css
|
|
2
|
+
import AskForAuthentication_vue_vue_type_script_setup_true_lang_default from "./AskForAuthentication.vue_vue_type_script_setup_true_lang.js";
|
|
3
|
+
/* empty css */
|
|
4
4
|
//#region src/views/Chat/Messages/AskForAuthentication.vue
|
|
5
5
|
var AskForAuthentication_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AskForAuthentication_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-508e8718"]]);
|
|
6
6
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AskForAuthentication.vue.js","names":[],"sources":["../../../../src/views/Chat/Messages/AskForAuthentication.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarButton } from '@scalar/components/button'\nimport { ScalarIconArrowRight } from '@scalar/icons'\nimport {\n getActiveEnvironment,\n getSelectedServer,\n getServers,\n} from '@scalar/workspace-store/request-example'\nimport { isOpenApiDocument } from '@scalar/workspace-store/schemas/type-guards'\nimport type { ToolUIPart } from 'ai'\nimport { computed, type Ref } from 'vue'\n\nimport AuthenticationProvided from '@/components/AuthenticationProvided.vue'\nimport AuthenticationRequired from '@/components/AuthenticationRequired.vue'\nimport { ASK_FOR_AUTHENTICATION_TOOL_NAME } from '@/entities/tools/ask-for-authentication'\nimport { useState, type Tools } from '@/state/state'\nimport Auth from '@/views/Settings/Auth.vue'\n\nconst { messagePart } = defineProps<{\n messagePart: Ref<\n ToolUIPart<Pick<Tools, typeof ASK_FOR_AUTHENTICATION_TOOL_NAME>>\n >\n}>()\n\nconst { workspaceStore, eventBus, config, chat } = useState()\n\nconst documentName = computed(() => messagePart.value.input?.documentName)\n\nconst document = computed(() => {\n if (!documentName.value) {\n return\n }\n\n const doc = workspaceStore.workspace.documents[documentName.value]\n return isOpenApiDocument(doc) ? doc : undefined\n})\n\nconst environment = computed(() => {\n if (!document.value) {\n return\n }\n\n return getActiveEnvironment(workspaceStore, document.value).environment\n})\n\nconst selectedServer = computed(() => {\n if (!document.value) {\n return\n }\n\n const servers = getServers(document.value.servers, {\n documentUrl: document.value['x-scalar-original-source-url'],\n })\n\n return getSelectedServer(document.value, null, null, servers)\n})\n\nconst isAuthenticationExpanded = computed(\n () => documentName.value && environment.value && selectedServer.value,\n)\n\nasync function authorizeClicked() {\n await chat.addToolOutput({\n toolCallId: messagePart.value.toolCallId,\n output: 'Authentication provided.',\n tool: ASK_FOR_AUTHENTICATION_TOOL_NAME,\n state: 'output-available',\n })\n}\n</script>\n\n<template>\n <div\n class=\"askForAuthentication\"\n :class=\"{\n open: isAuthenticationExpanded,\n }\">\n <p\n v-if=\"messagePart.value.state === 'output-error'\"\n class=\"text-c-2 py-3\"\n role=\"status\">\n {{ messagePart.value.errorText }}\n </p>\n <div class=\"toggleButton\">\n <AuthenticationProvided\n v-if=\"messagePart.value.state === 'output-available'\" />\n <AuthenticationRequired\n v-if=\"messagePart.value.state === 'input-available'\" />\n <ScalarButton\n v-if=\"messagePart.value.state === 'input-available'\"\n class=\"authorizeButton\"\n size=\"xs\"\n @click=\"authorizeClicked\">\n Authorize\n <ScalarIconArrowRight weight=\"bold\" />\n </ScalarButton>\n </div>\n <div class=\"authContent\">\n <div class=\"authContentInner\">\n <Auth\n v-if=\"documentName && document && environment && selectedServer\"\n :authStore=\"workspaceStore.auth\"\n :document\n :environment\n :eventBus\n :name=\"documentName\"\n :options=\"config\"\n :selectedServer />\n </div>\n </div>\n </div>\n</template>\n\n<style scoped>\n.askForAuthentication {\n display: flex;\n flex-direction: column;\n width: 100%;\n position: relative;\n border-top: var(--scalar-border-width) solid var(--scalar-border-color);\n border-bottom: var(--scalar-border-width) solid var(--scalar-border-color);\n margin-bottom: 12px;\n box-shadow:\n 0 var(--scalar-border-width) 0 var(--scalar-background-1),\n 0 calc(-1 * var(--scalar-border-width)) 0 var(--scalar-background-1);\n padding: 0;\n}\n\n.authContent {\n display: grid;\n grid-template-rows: 0fr;\n min-height: 0;\n overflow: hidden;\n transition: grid-template-rows 0.2s ease-out;\n max-width: 520px;\n margin: auto;\n width: 100%;\n}\n.authContentInner :deep(> div) {\n margin: 36px 0 48px 0;\n}\n.authContent :deep(.markdown) {\n margin-bottom: 0 !important;\n}\n.askForAuthentication.open .authContent {\n grid-template-rows: 1fr;\n}\n\n.continueButton {\n align-self: flex-end;\n}\n\n.toggleButton {\n background: none;\n border: none;\n cursor: pointer;\n text-align: left;\n position: relative;\n display: flex;\n align-items: center;\n color: var(--scalar-color-3);\n justify-content: space-between;\n border-radius: var(--scalar-radius-lg);\n}\n\n.authContentInner {\n min-height: 0;\n overflow: hidden;\n}\n\n.authorizeButton {\n background: var(--scalar-color-blue) !important;\n color: white !important;\n margin: 0 !important;\n z-index: 1;\n display: flex;\n gap: 5px;\n}\n</style>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"AskForAuthentication.vue.js","names":["_sfc_main"],"sources":["../../../../src/views/Chat/Messages/AskForAuthentication.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarButton } from '@scalar/components/button'\nimport { ScalarIconArrowRight } from '@scalar/icons'\nimport {\n getActiveEnvironment,\n getSelectedServer,\n getServers,\n} from '@scalar/workspace-store/request-example'\nimport { isOpenApiDocument } from '@scalar/workspace-store/schemas/type-guards'\nimport type { ToolUIPart } from 'ai'\nimport { computed, type Ref } from 'vue'\n\nimport AuthenticationProvided from '@/components/AuthenticationProvided.vue'\nimport AuthenticationRequired from '@/components/AuthenticationRequired.vue'\nimport { ASK_FOR_AUTHENTICATION_TOOL_NAME } from '@/entities/tools/ask-for-authentication'\nimport { useState, type Tools } from '@/state/state'\nimport Auth from '@/views/Settings/Auth.vue'\n\nconst { messagePart } = defineProps<{\n messagePart: Ref<\n ToolUIPart<Pick<Tools, typeof ASK_FOR_AUTHENTICATION_TOOL_NAME>>\n >\n}>()\n\nconst { workspaceStore, eventBus, config, chat } = useState()\n\nconst documentName = computed(() => messagePart.value.input?.documentName)\n\nconst document = computed(() => {\n if (!documentName.value) {\n return\n }\n\n const doc = workspaceStore.workspace.documents[documentName.value]\n return isOpenApiDocument(doc) ? doc : undefined\n})\n\nconst environment = computed(() => {\n if (!document.value) {\n return\n }\n\n return getActiveEnvironment(workspaceStore, document.value).environment\n})\n\nconst selectedServer = computed(() => {\n if (!document.value) {\n return\n }\n\n const servers = getServers(document.value.servers, {\n documentUrl: document.value['x-scalar-original-source-url'],\n })\n\n return getSelectedServer(document.value, null, null, servers)\n})\n\nconst isAuthenticationExpanded = computed(\n () => documentName.value && environment.value && selectedServer.value,\n)\n\nasync function authorizeClicked() {\n await chat.addToolOutput({\n toolCallId: messagePart.value.toolCallId,\n output: 'Authentication provided.',\n tool: ASK_FOR_AUTHENTICATION_TOOL_NAME,\n state: 'output-available',\n })\n}\n</script>\n\n<template>\n <div\n class=\"askForAuthentication\"\n :class=\"{\n open: isAuthenticationExpanded,\n }\">\n <p\n v-if=\"messagePart.value.state === 'output-error'\"\n class=\"text-c-2 py-3\"\n role=\"status\">\n {{ messagePart.value.errorText }}\n </p>\n <div class=\"toggleButton\">\n <AuthenticationProvided\n v-if=\"messagePart.value.state === 'output-available'\" />\n <AuthenticationRequired\n v-if=\"messagePart.value.state === 'input-available'\" />\n <ScalarButton\n v-if=\"messagePart.value.state === 'input-available'\"\n class=\"authorizeButton\"\n size=\"xs\"\n @click=\"authorizeClicked\">\n Authorize\n <ScalarIconArrowRight weight=\"bold\" />\n </ScalarButton>\n </div>\n <div class=\"authContent\">\n <div class=\"authContentInner\">\n <Auth\n v-if=\"documentName && document && environment && selectedServer\"\n :authStore=\"workspaceStore.auth\"\n :document\n :environment\n :eventBus\n :name=\"documentName\"\n :options=\"config\"\n :selectedServer />\n </div>\n </div>\n </div>\n</template>\n\n<style scoped>\n.askForAuthentication {\n display: flex;\n flex-direction: column;\n width: 100%;\n position: relative;\n border-top: var(--scalar-border-width) solid var(--scalar-border-color);\n border-bottom: var(--scalar-border-width) solid var(--scalar-border-color);\n margin-bottom: 12px;\n box-shadow:\n 0 var(--scalar-border-width) 0 var(--scalar-background-1),\n 0 calc(-1 * var(--scalar-border-width)) 0 var(--scalar-background-1);\n padding: 0;\n}\n\n.authContent {\n display: grid;\n grid-template-rows: 0fr;\n min-height: 0;\n overflow: hidden;\n transition: grid-template-rows 0.2s ease-out;\n max-width: 520px;\n margin: auto;\n width: 100%;\n}\n.authContentInner :deep(> div) {\n margin: 36px 0 48px 0;\n}\n.authContent :deep(.markdown) {\n margin-bottom: 0 !important;\n}\n.askForAuthentication.open .authContent {\n grid-template-rows: 1fr;\n}\n\n.continueButton {\n align-self: flex-end;\n}\n\n.toggleButton {\n background: none;\n border: none;\n cursor: pointer;\n text-align: left;\n position: relative;\n display: flex;\n align-items: center;\n color: var(--scalar-color-3);\n justify-content: space-between;\n border-radius: var(--scalar-radius-lg);\n}\n\n.authContentInner {\n min-height: 0;\n overflow: hidden;\n}\n\n.authorizeButton {\n background: var(--scalar-color-blue) !important;\n color: white !important;\n margin: 0 !important;\n z-index: 1;\n display: flex;\n gap: 5px;\n}\n</style>\n"],"mappings":""}
|
|
@@ -87,4 +87,4 @@ var AskForAuthentication_vue_vue_type_script_setup_true_lang_default = /*@__PURE
|
|
|
87
87
|
//#endregion
|
|
88
88
|
export { AskForAuthentication_vue_vue_type_script_setup_true_lang_default as default };
|
|
89
89
|
|
|
90
|
-
//# sourceMappingURL=AskForAuthentication.
|
|
90
|
+
//# sourceMappingURL=AskForAuthentication.vue_vue_type_script_setup_true_lang.js.map
|
package/dist/views/Chat/Messages/AskForAuthentication.vue_vue_type_script_setup_true_lang.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AskForAuthentication.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_normalizeClass","_toDisplayString","_createCommentVNode","_createElementVNode","_createBlock","AuthenticationProvided","AuthenticationRequired","_unref","_withCtx","_createTextVNode","_createVNode","Auth"],"sources":["../../../../src/views/Chat/Messages/AskForAuthentication.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarButton } from '@scalar/components/button'\nimport { ScalarIconArrowRight } from '@scalar/icons'\nimport {\n getActiveEnvironment,\n getSelectedServer,\n getServers,\n} from '@scalar/workspace-store/request-example'\nimport { isOpenApiDocument } from '@scalar/workspace-store/schemas/type-guards'\nimport type { ToolUIPart } from 'ai'\nimport { computed, type Ref } from 'vue'\n\nimport AuthenticationProvided from '@/components/AuthenticationProvided.vue'\nimport AuthenticationRequired from '@/components/AuthenticationRequired.vue'\nimport { ASK_FOR_AUTHENTICATION_TOOL_NAME } from '@/entities/tools/ask-for-authentication'\nimport { useState, type Tools } from '@/state/state'\nimport Auth from '@/views/Settings/Auth.vue'\n\nconst { messagePart } = defineProps<{\n messagePart: Ref<\n ToolUIPart<Pick<Tools, typeof ASK_FOR_AUTHENTICATION_TOOL_NAME>>\n >\n}>()\n\nconst { workspaceStore, eventBus, config, chat } = useState()\n\nconst documentName = computed(() => messagePart.value.input?.documentName)\n\nconst document = computed(() => {\n if (!documentName.value) {\n return\n }\n\n const doc = workspaceStore.workspace.documents[documentName.value]\n return isOpenApiDocument(doc) ? doc : undefined\n})\n\nconst environment = computed(() => {\n if (!document.value) {\n return\n }\n\n return getActiveEnvironment(workspaceStore, document.value).environment\n})\n\nconst selectedServer = computed(() => {\n if (!document.value) {\n return\n }\n\n const servers = getServers(document.value.servers, {\n documentUrl: document.value['x-scalar-original-source-url'],\n })\n\n return getSelectedServer(document.value, null, null, servers)\n})\n\nconst isAuthenticationExpanded = computed(\n () => documentName.value && environment.value && selectedServer.value,\n)\n\nasync function authorizeClicked() {\n await chat.addToolOutput({\n toolCallId: messagePart.value.toolCallId,\n output: 'Authentication provided.',\n tool: ASK_FOR_AUTHENTICATION_TOOL_NAME,\n state: 'output-available',\n })\n}\n</script>\n\n<template>\n <div\n class=\"askForAuthentication\"\n :class=\"{\n open: isAuthenticationExpanded,\n }\">\n <p\n v-if=\"messagePart.value.state === 'output-error'\"\n class=\"text-c-2 py-3\"\n role=\"status\">\n {{ messagePart.value.errorText }}\n </p>\n <div class=\"toggleButton\">\n <AuthenticationProvided\n v-if=\"messagePart.value.state === 'output-available'\" />\n <AuthenticationRequired\n v-if=\"messagePart.value.state === 'input-available'\" />\n <ScalarButton\n v-if=\"messagePart.value.state === 'input-available'\"\n class=\"authorizeButton\"\n size=\"xs\"\n @click=\"authorizeClicked\">\n Authorize\n <ScalarIconArrowRight weight=\"bold\" />\n </ScalarButton>\n </div>\n <div class=\"authContent\">\n <div class=\"authContentInner\">\n <Auth\n v-if=\"documentName && document && environment && selectedServer\"\n :authStore=\"workspaceStore.auth\"\n :document\n :environment\n :eventBus\n :name=\"documentName\"\n :options=\"config\"\n :selectedServer />\n </div>\n </div>\n </div>\n</template>\n\n<style scoped>\n.askForAuthentication {\n display: flex;\n flex-direction: column;\n width: 100%;\n position: relative;\n border-top: var(--scalar-border-width) solid var(--scalar-border-color);\n border-bottom: var(--scalar-border-width) solid var(--scalar-border-color);\n margin-bottom: 12px;\n box-shadow:\n 0 var(--scalar-border-width) 0 var(--scalar-background-1),\n 0 calc(-1 * var(--scalar-border-width)) 0 var(--scalar-background-1);\n padding: 0;\n}\n\n.authContent {\n display: grid;\n grid-template-rows: 0fr;\n min-height: 0;\n overflow: hidden;\n transition: grid-template-rows 0.2s ease-out;\n max-width: 520px;\n margin: auto;\n width: 100%;\n}\n.authContentInner :deep(> div) {\n margin: 36px 0 48px 0;\n}\n.authContent :deep(.markdown) {\n margin-bottom: 0 !important;\n}\n.askForAuthentication.open .authContent {\n grid-template-rows: 1fr;\n}\n\n.continueButton {\n align-self: flex-end;\n}\n\n.toggleButton {\n background: none;\n border: none;\n cursor: pointer;\n text-align: left;\n position: relative;\n display: flex;\n align-items: center;\n color: var(--scalar-color-3);\n justify-content: space-between;\n border-radius: var(--scalar-radius-lg);\n}\n\n.authContentInner {\n min-height: 0;\n overflow: hidden;\n}\n\n.authorizeButton {\n background: var(--scalar-color-blue) !important;\n color: white !important;\n margin: 0 !important;\n z-index: 1;\n display: flex;\n gap: 5px;\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;EAwBA,MAAM,EAAE,gBAAgB,UAAU,QAAQ,SAAS,SAAS;EAE5D,MAAM,eAAe,eAAe,QAAA,YAAY,MAAM,OAAO,YAAY;EAEzE,MAAM,WAAW,eAAe;GAC9B,IAAI,CAAC,aAAa,OAChB;GAGF,MAAM,MAAM,eAAe,UAAU,UAAU,aAAa;GAC5D,OAAO,kBAAkB,GAAG,IAAI,MAAM,KAAA;EACxC,CAAC;EAED,MAAM,cAAc,eAAe;GACjC,IAAI,CAAC,SAAS,OACZ;GAGF,OAAO,qBAAqB,gBAAgB,SAAS,KAAK,CAAC,CAAC;EAC9D,CAAC;EAED,MAAM,iBAAiB,eAAe;GACpC,IAAI,CAAC,SAAS,OACZ;GAGF,MAAM,UAAU,WAAW,SAAS,MAAM,SAAS,EACjD,aAAa,SAAS,MAAM,gCAC9B,CAAC;GAED,OAAO,kBAAkB,SAAS,OAAO,MAAM,MAAM,OAAO;EAC9D,CAAC;EAED,MAAM,2BAA2B,eACzB,aAAa,SAAS,YAAY,SAAS,eAAe,KAClE;EAEA,eAAe,mBAAmB;GAChC,MAAM,KAAK,cAAc;IACvB,YAAY,QAAA,YAAY,MAAM;IAC9B,QAAQ;IACR,MAAM;IACN,OAAO;GACT,CAAC;EACH;;GAIE,OAAAA,UAAA,GAAAC,mBAsCM,OAAA,EArCJ,OAAKC,eAAA,CAAC,wBAAsB,EACN,MAAA,yBAAA,M;IAId,QAAA,YAAY,MAAM,UAAK,kBAD/BF,UAAA,GAAAC,mBAKI,KALJ,YAKIE,gBADC,QAAA,YAAY,MAAM,SAAS,GAAA,CAAA,K;IAEhCE,mBAaM,OAbN,YAaM;KAXI,QAAA,YAAY,MAAM,UAAK,sBAD/BL,UAAA,GAAAM,YAC0DC,gCAAA,EAAA,KAAA,EAAA,CAAA,K;KAElD,QAAA,YAAY,MAAM,UAAK,qBAD/BP,UAAA,GAAAM,YACyDE,gCAAA,EAAA,KAAA,EAAA,CAAA,K;KAEjD,QAAA,YAAY,MAAM,UAAK,qBAD/BR,UAAA,GAAAM,YAOeG,MAAA,YAAA,GAAA;;MALb,OAAM;MACN,MAAK;MACJ,SAAO;;MAAkB,SAAAC,cAE1B,CAF0B,OAAA,OAAA,OAAA,KAAAC,gBAAA,eAE1B,EAAA,IAAAC,YAAsCH,MAAA,oBAAA,GAAA,EAAhB,QAAO,OAAM,CAAA,C;;;;IAGvCJ,mBAYM,OAZN,YAYM,CAXJA,mBAUM,OAVN,YAUM,CARI,aAAA,SAAgB,SAAA,SAAY,YAAA,SAAe,eAAA,SADnDL,UAAA,GAAAM,YAQoBO,cAAA;;KANjB,WAAWJ,MAAA,cAAA,CAAc,CAAC;KAC1B,UAAA,SAAA;KACA,aAAA,YAAA;KACA,UAAAA,MAAA,QAAA;KACA,MAAM,aAAA;KACN,SAASA,MAAA,MAAA;KACT,gBAAA,eAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _plugin_vue_export_helper_default from "../../../_virtual/_plugin-vue_export-helper.js";
|
|
2
|
-
import ExecuteRequestTool_vue_vue_type_script_setup_true_lang_default from "./ExecuteRequestTool.
|
|
3
|
-
/* empty css
|
|
2
|
+
import ExecuteRequestTool_vue_vue_type_script_setup_true_lang_default from "./ExecuteRequestTool.vue_vue_type_script_setup_true_lang.js";
|
|
3
|
+
/* empty css */
|
|
4
4
|
//#region src/views/Chat/Messages/ExecuteRequestTool.vue
|
|
5
5
|
var ExecuteRequestTool_default = /*#__PURE__*/ _plugin_vue_export_helper_default(ExecuteRequestTool_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-0c85bad4"]]);
|
|
6
6
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExecuteRequestTool.vue.js","names":[],"sources":["../../../../src/views/Chat/Messages/ExecuteRequestTool.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { type ToolUIPart } from 'ai'\nimport { computed, type Ref } from 'vue'\n\nimport RequestPreview from '@/components/RequestPreview.vue'\nimport type { EXECUTE_CLIENT_SIDE_REQUEST_TOOL_NAME } from '@/entities/tools/execute-request'\nimport { requestPartRequiresApproval } from '@/hooks/use-chat-approvals'\nimport { useState, type Tools } from '@/state/state'\n\nconst { messagePart } = defineProps<{\n messagePart: Ref<\n ToolUIPart<Pick<Tools, typeof EXECUTE_CLIENT_SIDE_REQUEST_TOOL_NAME>>\n >\n}>()\n\nconst state = useState()\n\nconst requestState = computed(() => {\n if (messagePart.value.state === 'input-streaming') {\n return 'buildingRequest'\n }\n\n if (\n messagePart.value.state === 'approval-responded' &&\n state.chat.status === 'submitted'\n ) {\n return 'sendingRequest'\n }\n\n if (requestPartRequiresApproval(messagePart.value)) {\n return 'requiresApproval'\n }\n\n if (messagePart.value.state === 'output-available') {\n return messagePart.value.output.success\n ? 'requestSucceeded'\n : 'requestFailed'\n }\n\n if (messagePart.value.state === 'output-error') {\n return 'rejected'\n }\n\n return null\n})\n</script>\n\n<template>\n <div class=\"executeRequestTool\">\n <p\n v-if=\"messagePart.value.state === 'output-error'\"\n class=\"text-c-2 py-3\"\n role=\"status\">\n {{ messagePart.value.errorText }}\n </p>\n <RequestPreview\n v-else-if=\"requestState\"\n :request=\"messagePart.value.input\"\n :response=\"messagePart.value.output\"\n :state=\"requestState\" />\n </div>\n</template>\n\n<style scoped>\n.executeRequestTool {\n display: flex;\n flex-direction: column;\n gap: 10px;\n border-top: var(--scalar-border-width) solid var(--scalar-border-color);\n border-bottom: var(--scalar-border-width) solid var(--scalar-border-color);\n margin-bottom: 12px;\n /* ensures no overlapping border colors when there's two sibling execute request tools */\n box-shadow:\n 0 var(--scalar-border-width) 0 var(--scalar-background-1),\n 0 calc(-1 * var(--scalar-border-width)) 0 var(--scalar-background-1);\n}\n</style>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"ExecuteRequestTool.vue.js","names":["_sfc_main"],"sources":["../../../../src/views/Chat/Messages/ExecuteRequestTool.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { type ToolUIPart } from 'ai'\nimport { computed, type Ref } from 'vue'\n\nimport RequestPreview from '@/components/RequestPreview.vue'\nimport type { EXECUTE_CLIENT_SIDE_REQUEST_TOOL_NAME } from '@/entities/tools/execute-request'\nimport { requestPartRequiresApproval } from '@/hooks/use-chat-approvals'\nimport { useState, type Tools } from '@/state/state'\n\nconst { messagePart } = defineProps<{\n messagePart: Ref<\n ToolUIPart<Pick<Tools, typeof EXECUTE_CLIENT_SIDE_REQUEST_TOOL_NAME>>\n >\n}>()\n\nconst state = useState()\n\nconst requestState = computed(() => {\n if (messagePart.value.state === 'input-streaming') {\n return 'buildingRequest'\n }\n\n if (\n messagePart.value.state === 'approval-responded' &&\n state.chat.status === 'submitted'\n ) {\n return 'sendingRequest'\n }\n\n if (requestPartRequiresApproval(messagePart.value)) {\n return 'requiresApproval'\n }\n\n if (messagePart.value.state === 'output-available') {\n return messagePart.value.output.success\n ? 'requestSucceeded'\n : 'requestFailed'\n }\n\n if (messagePart.value.state === 'output-error') {\n return 'rejected'\n }\n\n return null\n})\n</script>\n\n<template>\n <div class=\"executeRequestTool\">\n <p\n v-if=\"messagePart.value.state === 'output-error'\"\n class=\"text-c-2 py-3\"\n role=\"status\">\n {{ messagePart.value.errorText }}\n </p>\n <RequestPreview\n v-else-if=\"requestState\"\n :request=\"messagePart.value.input\"\n :response=\"messagePart.value.output\"\n :state=\"requestState\" />\n </div>\n</template>\n\n<style scoped>\n.executeRequestTool {\n display: flex;\n flex-direction: column;\n gap: 10px;\n border-top: var(--scalar-border-width) solid var(--scalar-border-color);\n border-bottom: var(--scalar-border-width) solid var(--scalar-border-color);\n margin-bottom: 12px;\n /* ensures no overlapping border colors when there's two sibling execute request tools */\n box-shadow:\n 0 var(--scalar-border-width) 0 var(--scalar-background-1),\n 0 calc(-1 * var(--scalar-border-width)) 0 var(--scalar-background-1);\n}\n</style>\n"],"mappings":""}
|
|
@@ -39,4 +39,4 @@ var ExecuteRequestTool_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
|
|
|
39
39
|
//#endregion
|
|
40
40
|
export { ExecuteRequestTool_vue_vue_type_script_setup_true_lang_default as default };
|
|
41
41
|
|
|
42
|
-
//# sourceMappingURL=ExecuteRequestTool.
|
|
42
|
+
//# sourceMappingURL=ExecuteRequestTool.vue_vue_type_script_setup_true_lang.js.map
|