@scalar/agent-chat 0.9.11 → 0.9.13
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 +6 -6
- package/dist/App.vue.js +7 -0
- package/dist/App.vue.js.map +1 -0
- package/dist/App.vue.script.js +41 -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 +8 -8
- package/dist/api.js +75 -0
- package/dist/api.js.map +1 -0
- package/dist/client-tools/execute-request.d.ts +7 -7
- 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 +2 -2
- package/dist/plugins/persistance.js +16 -0
- package/dist/plugins/persistance.js.map +1 -0
- package/dist/registry/add-documents-to-store.d.ts +5 -5
- 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 +7 -7
- package/dist/state/state.js +154 -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
package/dist/App.vue.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type Ref } from 'vue';
|
|
2
|
-
import { type RegistryDocument } from '
|
|
3
|
-
import { type ChatMode } from '
|
|
2
|
+
import { type RegistryDocument } from './state/state.js';
|
|
3
|
+
import { type ChatMode } from './types';
|
|
4
4
|
type __VLS_Props = {
|
|
5
5
|
registryDocuments: RegistryDocument[];
|
|
6
6
|
registryUrl: string;
|
|
@@ -16,7 +16,7 @@ type __VLS_Props = {
|
|
|
16
16
|
};
|
|
17
17
|
declare const state: {
|
|
18
18
|
prompt: Ref<string>;
|
|
19
|
-
chat: import("@ai-sdk/vue").Chat<import("ai").UIMessage<unknown, import("ai").UIDataTypes, import("
|
|
19
|
+
chat: import("@ai-sdk/vue").Chat<import("ai").UIMessage<unknown, import("ai").UIDataTypes, import("./state/state.js").Tools>>;
|
|
20
20
|
workspaceStore: import("@scalar/workspace-store/client").WorkspaceStore;
|
|
21
21
|
loading: import("vue").ComputedRef<boolean>;
|
|
22
22
|
settingsModal: import("@scalar/components").ModalState;
|
|
@@ -28,7 +28,7 @@ declare const state: {
|
|
|
28
28
|
dashboardUrl: string;
|
|
29
29
|
baseUrl: string;
|
|
30
30
|
isLoggedIn?: Ref<boolean>;
|
|
31
|
-
registryDocuments: Ref<import("./entities").ApiMetadata[]>;
|
|
31
|
+
registryDocuments: Ref<import("./entities/index.js").ApiMetadata[]>;
|
|
32
32
|
pendingDocuments: Record<string, boolean>;
|
|
33
33
|
mode: ChatMode;
|
|
34
34
|
terms: {
|
|
@@ -52,9 +52,9 @@ declare const state: {
|
|
|
52
52
|
}) => void;
|
|
53
53
|
getAccessToken?: () => string;
|
|
54
54
|
getAgentKey?: () => string;
|
|
55
|
-
api: import("./api").Api;
|
|
55
|
+
api: import("./api.js").Api;
|
|
56
56
|
uploadedTmpDocumentUrl: Ref<string | undefined>;
|
|
57
|
-
curatedDocuments: Ref<import("./entities").ApiMetadata[]>;
|
|
57
|
+
curatedDocuments: Ref<import("./entities/index.js").ApiMetadata[]>;
|
|
58
58
|
getActiveDocumentJson?: () => string;
|
|
59
59
|
hideAddApi?: boolean;
|
|
60
60
|
};
|
package/dist/App.vue.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"App.vue.js","names":[],"sources":["../src/App.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { provide, type Ref } from 'vue'\n\nimport Chat from '@/Chat.vue'\nimport { createState, STATE_SYMBOL, type RegistryDocument } from '@/state/state'\nimport { type ChatMode } from '@/types'\n\nconst {\n dashboardUrl,\n registryDocuments,\n registryUrl,\n baseUrl,\n mode = 'full',\n getAccessToken,\n getAgentKey,\n getActiveDocumentJson,\n isLoggedIn,\n prefilledMessage,\n hideAddApi,\n} = defineProps<{\n registryDocuments: RegistryDocument[]\n registryUrl: string\n dashboardUrl: string\n baseUrl: string\n mode?: ChatMode\n getAccessToken?: () => string\n getAgentKey?: () => string\n getActiveDocumentJson?: () => string\n isLoggedIn?: Ref<boolean>\n prefilledMessage?: Ref<string>\n hideAddApi?: boolean\n}>()\n\ndefineEmits<{\n (e: 'uploadApi'): void\n}>()\n\nconst state = createState({\n getActiveDocumentJson,\n initialRegistryDocuments: registryDocuments,\n prefilledMessageRef: prefilledMessage,\n registryUrl,\n baseUrl,\n mode,\n getAccessToken,\n getAgentKey,\n isLoggedIn,\n dashboardUrl,\n hideAddApi,\n})\n\nprovide(STATE_SYMBOL, state)\n\nexport type ChatExposed = {\n addDocumentAsync: typeof state.addDocumentAsync\n}\n\ndefineExpose<ChatExposed>({\n addDocumentAsync: state.addDocumentAsync,\n})\n</script>\n\n<template>\n <Chat @uploadApi=\"$emit('uploadApi')\" />\n</template>\n\n<style scoped></style>\n"],"mappings":""}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { STATE_SYMBOL as e, createState as t } from "./state/state.js";
|
|
2
|
+
import n from "./Chat.vue.js";
|
|
3
|
+
import { createBlock as r, defineComponent as i, openBlock as a, provide as o } from "vue";
|
|
4
|
+
//#region src/App.vue?vue&type=script&setup=true&lang.ts
|
|
5
|
+
var s = /* @__PURE__ */ i({
|
|
6
|
+
__name: "App",
|
|
7
|
+
props: {
|
|
8
|
+
registryDocuments: {},
|
|
9
|
+
registryUrl: {},
|
|
10
|
+
dashboardUrl: {},
|
|
11
|
+
baseUrl: {},
|
|
12
|
+
mode: { default: "full" },
|
|
13
|
+
getAccessToken: { type: Function },
|
|
14
|
+
getAgentKey: { type: Function },
|
|
15
|
+
getActiveDocumentJson: { type: Function },
|
|
16
|
+
isLoggedIn: {},
|
|
17
|
+
prefilledMessage: {},
|
|
18
|
+
hideAddApi: { type: Boolean }
|
|
19
|
+
},
|
|
20
|
+
emits: ["uploadApi"],
|
|
21
|
+
setup(i, { expose: s }) {
|
|
22
|
+
let c = t({
|
|
23
|
+
getActiveDocumentJson: i.getActiveDocumentJson,
|
|
24
|
+
initialRegistryDocuments: i.registryDocuments,
|
|
25
|
+
prefilledMessageRef: i.prefilledMessage,
|
|
26
|
+
registryUrl: i.registryUrl,
|
|
27
|
+
baseUrl: i.baseUrl,
|
|
28
|
+
mode: i.mode,
|
|
29
|
+
getAccessToken: i.getAccessToken,
|
|
30
|
+
getAgentKey: i.getAgentKey,
|
|
31
|
+
isLoggedIn: i.isLoggedIn,
|
|
32
|
+
dashboardUrl: i.dashboardUrl,
|
|
33
|
+
hideAddApi: i.hideAddApi
|
|
34
|
+
});
|
|
35
|
+
return o(e, c), s({ addDocumentAsync: c.addDocumentAsync }), (e, t) => (a(), r(n, { onUploadApi: t[0] ||= (t) => e.$emit("uploadApi") }));
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
//#endregion
|
|
39
|
+
export { s as default };
|
|
40
|
+
|
|
41
|
+
//# sourceMappingURL=App.vue.script.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"App.vue.script.js","names":["$emit"],"sources":["../src/App.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { provide, type Ref } from 'vue'\n\nimport Chat from '@/Chat.vue'\nimport { createState, STATE_SYMBOL, type RegistryDocument } from '@/state/state'\nimport { type ChatMode } from '@/types'\n\nconst {\n dashboardUrl,\n registryDocuments,\n registryUrl,\n baseUrl,\n mode = 'full',\n getAccessToken,\n getAgentKey,\n getActiveDocumentJson,\n isLoggedIn,\n prefilledMessage,\n hideAddApi,\n} = defineProps<{\n registryDocuments: RegistryDocument[]\n registryUrl: string\n dashboardUrl: string\n baseUrl: string\n mode?: ChatMode\n getAccessToken?: () => string\n getAgentKey?: () => string\n getActiveDocumentJson?: () => string\n isLoggedIn?: Ref<boolean>\n prefilledMessage?: Ref<string>\n hideAddApi?: boolean\n}>()\n\ndefineEmits<{\n (e: 'uploadApi'): void\n}>()\n\nconst state = createState({\n getActiveDocumentJson,\n initialRegistryDocuments: registryDocuments,\n prefilledMessageRef: prefilledMessage,\n registryUrl,\n baseUrl,\n mode,\n getAccessToken,\n getAgentKey,\n isLoggedIn,\n dashboardUrl,\n hideAddApi,\n})\n\nprovide(STATE_SYMBOL, state)\n\nexport type ChatExposed = {\n addDocumentAsync: typeof state.addDocumentAsync\n}\n\ndefineExpose<ChatExposed>({\n addDocumentAsync: state.addDocumentAsync,\n})\n</script>\n\n<template>\n <Chat @uploadApi=\"$emit('uploadApi')\" />\n</template>\n\n<style scoped></style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;EAqCA,IAAM,IAAQ,EAAY;GACxB,uBAAoB,EAAA;GACpB,0BAA0B,EAAA;GAC1B,qBAAqB,EAAA;GACrB,aAAU,EAAA;GACV,SAAM,EAAA;GACN,MAAG,EAAA;GACH,gBAAa,EAAA;GACb,aAAU,EAAA;GACV,YAAS,EAAA;GACT,cAAW,EAAA;GACX,YAAS,EAAA;GACV,CAAA;SAED,EAAQ,GAAc,EAAK,EAM3B,EAA0B,EACxB,kBAAkB,EAAM,kBACzB,CAAA,kBAIC,EAAwC,GAAA,EAAjC,aAAS,AAAA,EAAA,QAAA,MAAEA,EAAAA,MAAK,YAAA,EAAA,CAAA"}
|
package/dist/Chat.vue.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Chat.vue.js","names":[],"sources":["../src/Chat.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n createApiClientModal,\n type ApiClientModal,\n} from '@scalar/api-client/v2/features/modal'\nimport { onBeforeUnmount, onMounted, ref, useTemplateRef } from 'vue'\n\nimport { useAgentKeyDocuments } from '@/hooks/use-agent-key-documents'\nimport { useChatScroll } from '@/hooks/use-chat-scroll'\nimport { useCuratedDocuments } from '@/hooks/use-curated-documents'\nimport { getTmpDocFromLocalStorage } from '@/hooks/use-upload-tmp-document'\nimport { useState } from '@/state/state'\nimport Layout from '@/views/Layout.vue'\nimport Settings from '@/views/Settings/Settings.vue'\n\ndefineEmits<{\n (e: 'uploadApi'): void\n}>()\n\nconst {\n chat,\n prompt,\n settingsModal,\n eventBus,\n workspaceStore,\n config,\n mode,\n addDocument,\n} = useState()\n\nconst clientModalRef = useTemplateRef<HTMLElement>('clientModal')\nconst apiClient = ref<ApiClientModal | null>(null)\n\nonMounted(async () => {\n const tmpDoc = getTmpDocFromLocalStorage()\n\n if (mode === 'preview' && tmpDoc) {\n await addDocument({\n namespace: tmpDoc.namespace,\n slug: tmpDoc.slug,\n removable: false,\n tmp: true,\n })\n }\n\n if (!clientModalRef.value) {\n return\n }\n\n apiClient.value = createApiClientModal({\n el: clientModalRef.value,\n options: config,\n eventBus,\n workspaceStore,\n })\n})\n\nonBeforeUnmount(() => {\n apiClient.value?.app.unmount()\n})\n\nuseChatScroll()\nuseAgentKeyDocuments()\nuseCuratedDocuments()\n\nasync function handleSubmit() {\n await chat.sendMessage({ text: prompt.value })\n}\n</script>\n\n<template>\n <div ref=\"clientModal\" />\n <Layout\n @submit=\"handleSubmit\"\n @uploadApi=\"$emit('uploadApi')\" />\n <Settings :modalState=\"settingsModal\" />\n</template>\n"],"mappings":""}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { getTmpDocFromLocalStorage as e } from "./hooks/use-upload-tmp-document.js";
|
|
2
|
+
import { useState as t } from "./state/state.js";
|
|
3
|
+
import { useAgentKeyDocuments as n } from "./hooks/use-agent-key-documents.js";
|
|
4
|
+
import { useChatScroll as r } from "./hooks/use-chat-scroll.js";
|
|
5
|
+
import { useCuratedDocuments as i } from "./hooks/use-curated-documents.js";
|
|
6
|
+
import a from "./views/Layout.vue.js";
|
|
7
|
+
import o from "./views/Settings/Settings.vue.js";
|
|
8
|
+
import { Fragment as s, createElementBlock as c, createElementVNode as l, createVNode as u, defineComponent as d, onBeforeUnmount as f, onMounted as p, openBlock as m, ref as h, unref as g, useTemplateRef as _ } from "vue";
|
|
9
|
+
import { createApiClientModal as v } from "@scalar/api-client/v2/features/modal";
|
|
10
|
+
//#region src/Chat.vue?vue&type=script&setup=true&lang.ts
|
|
11
|
+
var y = { ref: "clientModal" }, b = /* @__PURE__ */ d({
|
|
12
|
+
__name: "Chat",
|
|
13
|
+
emits: ["uploadApi"],
|
|
14
|
+
setup(d) {
|
|
15
|
+
let { chat: b, prompt: x, settingsModal: S, eventBus: C, workspaceStore: w, config: T, mode: E, addDocument: D } = t(), O = _("clientModal"), k = h(null);
|
|
16
|
+
p(async () => {
|
|
17
|
+
let t = e();
|
|
18
|
+
E === "preview" && t && await D({
|
|
19
|
+
namespace: t.namespace,
|
|
20
|
+
slug: t.slug,
|
|
21
|
+
removable: !1,
|
|
22
|
+
tmp: !0
|
|
23
|
+
}), O.value && (k.value = v({
|
|
24
|
+
el: O.value,
|
|
25
|
+
options: T,
|
|
26
|
+
eventBus: C,
|
|
27
|
+
workspaceStore: w
|
|
28
|
+
}));
|
|
29
|
+
}), f(() => {
|
|
30
|
+
k.value?.app.unmount();
|
|
31
|
+
}), r(), n(), i();
|
|
32
|
+
async function A() {
|
|
33
|
+
await b.sendMessage({ text: x.value });
|
|
34
|
+
}
|
|
35
|
+
return (e, t) => (m(), c(s, null, [
|
|
36
|
+
l("div", y, null, 512),
|
|
37
|
+
u(a, {
|
|
38
|
+
onSubmit: A,
|
|
39
|
+
onUploadApi: t[0] ||= (t) => e.$emit("uploadApi")
|
|
40
|
+
}),
|
|
41
|
+
u(o, { modalState: g(S) }, null, 8, ["modalState"])
|
|
42
|
+
], 64));
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
//#endregion
|
|
46
|
+
export { b as default };
|
|
47
|
+
|
|
48
|
+
//# sourceMappingURL=Chat.vue.script.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Chat.vue.script.js","names":["$emit"],"sources":["../src/Chat.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n createApiClientModal,\n type ApiClientModal,\n} from '@scalar/api-client/v2/features/modal'\nimport { onBeforeUnmount, onMounted, ref, useTemplateRef } from 'vue'\n\nimport { useAgentKeyDocuments } from '@/hooks/use-agent-key-documents'\nimport { useChatScroll } from '@/hooks/use-chat-scroll'\nimport { useCuratedDocuments } from '@/hooks/use-curated-documents'\nimport { getTmpDocFromLocalStorage } from '@/hooks/use-upload-tmp-document'\nimport { useState } from '@/state/state'\nimport Layout from '@/views/Layout.vue'\nimport Settings from '@/views/Settings/Settings.vue'\n\ndefineEmits<{\n (e: 'uploadApi'): void\n}>()\n\nconst {\n chat,\n prompt,\n settingsModal,\n eventBus,\n workspaceStore,\n config,\n mode,\n addDocument,\n} = useState()\n\nconst clientModalRef = useTemplateRef<HTMLElement>('clientModal')\nconst apiClient = ref<ApiClientModal | null>(null)\n\nonMounted(async () => {\n const tmpDoc = getTmpDocFromLocalStorage()\n\n if (mode === 'preview' && tmpDoc) {\n await addDocument({\n namespace: tmpDoc.namespace,\n slug: tmpDoc.slug,\n removable: false,\n tmp: true,\n })\n }\n\n if (!clientModalRef.value) {\n return\n }\n\n apiClient.value = createApiClientModal({\n el: clientModalRef.value,\n options: config,\n eventBus,\n workspaceStore,\n })\n})\n\nonBeforeUnmount(() => {\n apiClient.value?.app.unmount()\n})\n\nuseChatScroll()\nuseAgentKeyDocuments()\nuseCuratedDocuments()\n\nasync function handleSubmit() {\n await chat.sendMessage({ text: prompt.value })\n}\n</script>\n\n<template>\n <div ref=\"clientModal\" />\n <Layout\n @submit=\"handleSubmit\"\n @uploadApi=\"$emit('uploadApi')\" />\n <Settings :modalState=\"settingsModal\" />\n</template>\n"],"mappings":";;;;;;;;;;;;;;EAmBA,IAAM,EACJ,SACA,WACA,kBACA,aACA,mBACA,WACA,SACA,mBACE,GAAS,EAEP,IAAiB,EAA4B,cAAa,EAC1D,IAAY,EAA2B,KAAI;AAgCjD,EA9BA,EAAU,YAAY;GACpB,IAAM,IAAS,GAA0B;AAEzC,GAAI,MAAS,aAAa,KACxB,MAAM,EAAY;IAChB,WAAW,EAAO;IAClB,MAAM,EAAO;IACb,WAAW;IACX,KAAK;IACN,CAAA,EAGE,EAAe,UAIpB,EAAU,QAAQ,EAAqB;IACrC,IAAI,EAAe;IACnB,SAAS;IACT;IACA;IACD,CAAA;IACF,EAED,QAAsB;AACpB,KAAU,OAAO,IAAI,SAAQ;IAC9B,EAED,GAAc,EACd,GAAqB,EACrB,GAAoB;EAEpB,eAAe,IAAe;AAC5B,SAAM,EAAK,YAAY,EAAE,MAAM,EAAO,OAAO,CAAA;;;GAK7C,EAAyB,OAAzB,GAAyB,MAAA,IAAA;GACzB,EAEoC,GAAA;IADjC,UAAQ;IACR,aAAS,AAAA,EAAA,QAAA,MAAEA,EAAAA,MAAK,YAAA;;GACnB,EAAwC,GAAA,EAA7B,YAAY,EAAA,EAAa,EAAA,EAAA,MAAA,GAAA,CAAA,aAAA,CAAA"}
|
package/dist/api.d.ts
CHANGED
|
@@ -15,10 +15,10 @@ export declare function createApi({ baseUrl, proxyUrl, getAccessToken, getAgentK
|
|
|
15
15
|
}): {
|
|
16
16
|
search: (query: string) => Promise<{
|
|
17
17
|
success: false;
|
|
18
|
-
error: import("./entities").AgentChatError<"FAILED_TO_FETCH", unknown>;
|
|
18
|
+
error: import("./entities/index.js").AgentChatError<"FAILED_TO_FETCH", unknown>;
|
|
19
19
|
} | import("neverpanic").Result<never, null> | {
|
|
20
20
|
success: false;
|
|
21
|
-
error: import("./entities").AgentChatError<string, string>;
|
|
21
|
+
error: import("./entities/index.js").AgentChatError<string, string>;
|
|
22
22
|
data?: undefined;
|
|
23
23
|
} | {
|
|
24
24
|
success: true;
|
|
@@ -39,10 +39,10 @@ export declare function createApi({ baseUrl, proxyUrl, getAccessToken, getAgentK
|
|
|
39
39
|
slug: string;
|
|
40
40
|
}) => Promise<{
|
|
41
41
|
success: false;
|
|
42
|
-
error: import("./entities").AgentChatError<"FAILED_TO_FETCH", unknown>;
|
|
42
|
+
error: import("./entities/index.js").AgentChatError<"FAILED_TO_FETCH", unknown>;
|
|
43
43
|
} | import("neverpanic").Result<never, null> | {
|
|
44
44
|
success: false;
|
|
45
|
-
error: import("./entities").AgentChatError<string, string>;
|
|
45
|
+
error: import("./entities/index.js").AgentChatError<string, string>;
|
|
46
46
|
data?: undefined;
|
|
47
47
|
} | {
|
|
48
48
|
success: true;
|
|
@@ -58,10 +58,10 @@ export declare function createApi({ baseUrl, proxyUrl, getAccessToken, getAgentK
|
|
|
58
58
|
}>;
|
|
59
59
|
getKeyDocuments: () => Promise<{
|
|
60
60
|
success: false;
|
|
61
|
-
error: import("./entities").AgentChatError<"FAILED_TO_FETCH", unknown>;
|
|
61
|
+
error: import("./entities/index.js").AgentChatError<"FAILED_TO_FETCH", unknown>;
|
|
62
62
|
} | import("neverpanic").Result<never, null> | {
|
|
63
63
|
success: false;
|
|
64
|
-
error: import("./entities").AgentChatError<string, string>;
|
|
64
|
+
error: import("./entities/index.js").AgentChatError<string, string>;
|
|
65
65
|
data?: undefined;
|
|
66
66
|
} | {
|
|
67
67
|
success: true;
|
|
@@ -79,10 +79,10 @@ export declare function createApi({ baseUrl, proxyUrl, getAccessToken, getAgentK
|
|
|
79
79
|
}>;
|
|
80
80
|
getCuratedDocuments: () => Promise<{
|
|
81
81
|
success: false;
|
|
82
|
-
error: import("./entities").AgentChatError<"FAILED_TO_FETCH", unknown>;
|
|
82
|
+
error: import("./entities/index.js").AgentChatError<"FAILED_TO_FETCH", unknown>;
|
|
83
83
|
} | import("neverpanic").Result<never, null> | {
|
|
84
84
|
success: false;
|
|
85
|
-
error: import("./entities").AgentChatError<string, string>;
|
|
85
|
+
error: import("./entities/index.js").AgentChatError<string, string>;
|
|
86
86
|
data?: undefined;
|
|
87
87
|
} | {
|
|
88
88
|
success: true;
|
package/dist/api.js
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { createError as e } from "./entities/error/helpers.js";
|
|
2
|
+
import { registryApiMetadata as t } from "./entities/registry/document.js";
|
|
3
|
+
import { redirectToProxy as n } from "@scalar/helpers/url/redirect-to-proxy";
|
|
4
|
+
import { n as r } from "neverpanic";
|
|
5
|
+
import i from "zod";
|
|
6
|
+
//#region src/api.ts
|
|
7
|
+
function a({ getAccessToken: e, getAgentKey: t }) {
|
|
8
|
+
let n = e?.(), r = t?.();
|
|
9
|
+
return {
|
|
10
|
+
...n && { Authorization: `Bearer ${n}` },
|
|
11
|
+
...r && { "x-scalar-agent-key": r }
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
function o({ baseUrl: o, proxyUrl: s, getAccessToken: c, getAgentKey: l }) {
|
|
15
|
+
let u = r.safeFn(async ({ path: t, method: u = "get", query: d, body: f, responseSchema: p }) => {
|
|
16
|
+
let m = `${o}${t}${d ? `?${new URLSearchParams(d)}` : ""}`, h = await r.fromUnsafe(async () => fetch(n(s.value, m), {
|
|
17
|
+
method: u,
|
|
18
|
+
...f && { body: JSON.stringify(f) },
|
|
19
|
+
headers: { ...a({
|
|
20
|
+
getAccessToken: c,
|
|
21
|
+
getAgentKey: l
|
|
22
|
+
}) }
|
|
23
|
+
}), (t) => e("FAILED_TO_FETCH", t));
|
|
24
|
+
if (!h.success) return h;
|
|
25
|
+
let g = await r.fromUnsafe(async () => h.data.json(), (t) => e("FAILED_TO_FETCH_DATA", t));
|
|
26
|
+
if (!g.success) return {
|
|
27
|
+
success: !1,
|
|
28
|
+
error: e("UNKNOWN_ERROR", "Unknown error occurred. Please contact support.")
|
|
29
|
+
};
|
|
30
|
+
if (!h.data.ok) {
|
|
31
|
+
let t = i.object({
|
|
32
|
+
message: i.string(),
|
|
33
|
+
code: i.string()
|
|
34
|
+
}).safeParse(g.data);
|
|
35
|
+
return t.success ? {
|
|
36
|
+
success: !1,
|
|
37
|
+
error: e(t.data.code, t.data.message)
|
|
38
|
+
} : {
|
|
39
|
+
success: !1,
|
|
40
|
+
error: e("UNKNOWN_ERROR", "Unknown error occurred. Please contact support.")
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
let _ = p.safeParse(g.data);
|
|
44
|
+
return _.success ? {
|
|
45
|
+
success: !0,
|
|
46
|
+
data: _.data
|
|
47
|
+
} : {
|
|
48
|
+
success: !1,
|
|
49
|
+
error: e("INVALID_RESPONSE", "Invalid response. Please contact support")
|
|
50
|
+
};
|
|
51
|
+
});
|
|
52
|
+
return {
|
|
53
|
+
search: async (e) => u({
|
|
54
|
+
path: "/vector/registry/search",
|
|
55
|
+
query: { query: e },
|
|
56
|
+
responseSchema: i.object({ results: t.array() })
|
|
57
|
+
}),
|
|
58
|
+
getDocument: async (e) => u({
|
|
59
|
+
path: `/vector/registry/document/${e.namespace}/${e.slug}`,
|
|
60
|
+
responseSchema: t
|
|
61
|
+
}),
|
|
62
|
+
getKeyDocuments: async () => u({
|
|
63
|
+
path: "/vector/registry/documents",
|
|
64
|
+
responseSchema: i.object({ documents: t.array() })
|
|
65
|
+
}),
|
|
66
|
+
getCuratedDocuments: async () => u({
|
|
67
|
+
path: "/vector/registry/curated",
|
|
68
|
+
responseSchema: i.object({ results: t.array() })
|
|
69
|
+
})
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
//#endregion
|
|
73
|
+
export { o as createApi, a as createAuthorizationHeaders };
|
|
74
|
+
|
|
75
|
+
//# sourceMappingURL=api.js.map
|
package/dist/api.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","names":[],"sources":["../src/api.ts"],"sourcesContent":["import { redirectToProxy } from '@scalar/helpers/url/redirect-to-proxy'\nimport { n } from 'neverpanic'\nimport type { Ref } from 'vue'\nimport z from 'zod'\n\nimport { createError } from '@/entities/error/helpers'\nimport { registryApiMetadata } from '@/entities/registry/document'\n\nexport function createAuthorizationHeaders({\n getAccessToken,\n getAgentKey,\n}: {\n getAccessToken?: () => string\n getAgentKey?: () => string\n}) {\n const token = getAccessToken?.()\n const agentKey = getAgentKey?.()\n\n return {\n ...(token && {\n Authorization: `Bearer ${token}`,\n }),\n ...(agentKey && {\n 'x-scalar-agent-key': agentKey,\n }),\n }\n}\n\n/** Minimal set of API requests needed for agent chat */\nexport function createApi({\n baseUrl,\n proxyUrl,\n getAccessToken,\n getAgentKey,\n}: {\n baseUrl: string\n proxyUrl: Ref<string>\n getAccessToken?: () => string\n getAgentKey?: () => string\n}) {\n const request = n.safeFn(\n async <T extends z.ZodType>({\n path,\n method = 'get',\n query,\n body,\n responseSchema,\n }: {\n path: string\n method?: string\n query?: Record<string, string>\n body?: object\n responseSchema: T\n }) => {\n const url = `${baseUrl}${path}${query ? `?${new URLSearchParams(query)}` : ''}`\n\n const fetchResult = await n.fromUnsafe(\n async () =>\n fetch(redirectToProxy(proxyUrl.value, url), {\n method,\n ...(body && { body: JSON.stringify(body) }),\n headers: {\n ...createAuthorizationHeaders({ getAccessToken, getAgentKey }),\n },\n }),\n (originalError) => createError('FAILED_TO_FETCH', originalError),\n )\n\n if (!fetchResult.success) {\n return fetchResult\n }\n\n const fetchDataResult = await n.fromUnsafe(\n async () => fetchResult.data.json(),\n (originalError) => createError('FAILED_TO_FETCH_DATA', originalError),\n )\n\n if (!fetchDataResult.success) {\n return {\n success: false,\n error: createError('UNKNOWN_ERROR', 'Unknown error occurred. Please contact support.'),\n }\n }\n\n if (!fetchResult.data.ok) {\n const serviceError = z.object({ message: z.string(), code: z.string() }).safeParse(fetchDataResult.data)\n\n if (!serviceError.success) {\n return {\n success: false,\n error: createError('UNKNOWN_ERROR', 'Unknown error occurred. Please contact support.'),\n }\n }\n\n return {\n success: false,\n error: createError(serviceError.data.code, serviceError.data.message),\n }\n }\n\n const serviceData = responseSchema.safeParse(fetchDataResult.data)\n\n if (!serviceData.success) {\n return {\n success: false,\n error: createError('INVALID_RESPONSE', 'Invalid response. Please contact support'),\n }\n }\n\n return { success: true, data: serviceData.data }\n },\n )\n\n const search = async (query: string) =>\n request({\n path: '/vector/registry/search',\n query: { query },\n responseSchema: z.object({\n results: registryApiMetadata.array(),\n }),\n })\n\n const getDocument = async (params: { namespace: string; slug: string }) =>\n request({\n path: `/vector/registry/document/${params.namespace}/${params.slug}`,\n responseSchema: registryApiMetadata,\n })\n\n const getKeyDocuments = async () =>\n request({\n path: '/vector/registry/documents',\n responseSchema: z.object({ documents: registryApiMetadata.array() }),\n })\n\n const getCuratedDocuments = async () =>\n request({\n path: '/vector/registry/curated',\n responseSchema: z.object({\n results: registryApiMetadata.array(),\n }),\n })\n\n return {\n search,\n getDocument,\n getKeyDocuments,\n getCuratedDocuments,\n }\n}\n\nexport type Api = ReturnType<typeof createApi>\n"],"mappings":";;;;;;AAQA,SAAgB,EAA2B,EACzC,mBACA,kBAIC;CACD,IAAM,IAAQ,KAAkB,EAC1B,IAAW,KAAe;AAEhC,QAAO;EACL,GAAI,KAAS,EACX,eAAe,UAAU,KAC1B;EACD,GAAI,KAAY,EACd,sBAAsB,GACvB;EACF;;AAIH,SAAgB,EAAU,EACxB,YACA,aACA,mBACA,kBAMC;CACD,IAAM,IAAU,EAAE,OAChB,OAA4B,EAC1B,SACA,YAAS,OACT,UACA,SACA,wBAOI;EACJ,IAAM,IAAM,GAAG,IAAU,IAAO,IAAQ,IAAI,IAAI,gBAAgB,EAAM,KAAK,MAErE,IAAc,MAAM,EAAE,WAC1B,YACE,MAAM,EAAgB,EAAS,OAAO,EAAI,EAAE;GAC1C;GACA,GAAI,KAAQ,EAAE,MAAM,KAAK,UAAU,EAAK,EAAE;GAC1C,SAAS,EACP,GAAG,EAA2B;IAAE;IAAgB;IAAa,CAAC,EAC/D;GACF,CAAC,GACH,MAAkB,EAAY,mBAAmB,EAAc,CACjE;AAED,MAAI,CAAC,EAAY,QACf,QAAO;EAGT,IAAM,IAAkB,MAAM,EAAE,WAC9B,YAAY,EAAY,KAAK,MAAM,GAClC,MAAkB,EAAY,wBAAwB,EAAc,CACtE;AAED,MAAI,CAAC,EAAgB,QACnB,QAAO;GACL,SAAS;GACT,OAAO,EAAY,iBAAiB,kDAAkD;GACvF;AAGH,MAAI,CAAC,EAAY,KAAK,IAAI;GACxB,IAAM,IAAe,EAAE,OAAO;IAAE,SAAS,EAAE,QAAQ;IAAE,MAAM,EAAE,QAAQ;IAAE,CAAC,CAAC,UAAU,EAAgB,KAAK;AASxG,UAPK,EAAa,UAOX;IACL,SAAS;IACT,OAAO,EAAY,EAAa,KAAK,MAAM,EAAa,KAAK,QAAQ;IACtE,GATQ;IACL,SAAS;IACT,OAAO,EAAY,iBAAiB,kDAAkD;IACvF;;EASL,IAAM,IAAc,EAAe,UAAU,EAAgB,KAAK;AASlE,SAPK,EAAY,UAOV;GAAE,SAAS;GAAM,MAAM,EAAY;GAAM,GANvC;GACL,SAAS;GACT,OAAO,EAAY,oBAAoB,2CAA2C;GACnF;GAKN;AA+BD,QAAO;EACL,QA9Ba,OAAO,MACpB,EAAQ;GACN,MAAM;GACN,OAAO,EAAE,UAAO;GAChB,gBAAgB,EAAE,OAAO,EACvB,SAAS,EAAoB,OAAO,EACrC,CAAC;GACH,CAAC;EAwBF,aAtBkB,OAAO,MACzB,EAAQ;GACN,MAAM,6BAA6B,EAAO,UAAU,GAAG,EAAO;GAC9D,gBAAgB;GACjB,CAAC;EAmBF,iBAjBsB,YACtB,EAAQ;GACN,MAAM;GACN,gBAAgB,EAAE,OAAO,EAAE,WAAW,EAAoB,OAAO,EAAE,CAAC;GACrE,CAAC;EAcF,qBAZ0B,YAC1B,EAAQ;GACN,MAAM;GACN,gBAAgB,EAAE,OAAO,EACvB,SAAS,EAAoB,OAAO,EACrC,CAAC;GACH,CAAC;EAOH"}
|
|
@@ -2,7 +2,7 @@ import type { Chat } from '@ai-sdk/vue';
|
|
|
2
2
|
import type { SecuritySchemeObjectSecret } from '@scalar/api-client/v2/blocks/scalar-auth-selector-block';
|
|
3
3
|
import type { ServerObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document';
|
|
4
4
|
import type { UIDataTypes, UIMessage } from 'ai';
|
|
5
|
-
import type { Tools } from '
|
|
5
|
+
import type { Tools } from '../state/state.js';
|
|
6
6
|
/**
|
|
7
7
|
* Executes an HTTP request with the specified options, including method, path, headers, and security schemes, and returns the processed response.
|
|
8
8
|
*/
|
|
@@ -26,12 +26,12 @@ export declare const executeRequestTool: (args_0: {
|
|
|
26
26
|
data: never;
|
|
27
27
|
} | {
|
|
28
28
|
success: false;
|
|
29
|
-
error: import("
|
|
29
|
+
error: import("../entities/index.js").AgentChatError<"FAILED_TO_PARSE_RESPONSE_BODY", {
|
|
30
30
|
originalError: unknown;
|
|
31
31
|
}>;
|
|
32
32
|
} | {
|
|
33
33
|
success: false;
|
|
34
|
-
error: import("
|
|
34
|
+
error: import("../entities/index.js").AgentChatError<"REQUEST_NOT_OK", {
|
|
35
35
|
status: number;
|
|
36
36
|
url: string;
|
|
37
37
|
responseBody: any;
|
|
@@ -52,22 +52,22 @@ export declare const executeRequestTool: (args_0: {
|
|
|
52
52
|
error?: undefined;
|
|
53
53
|
} | {
|
|
54
54
|
success: false;
|
|
55
|
-
error: import("
|
|
55
|
+
error: import("../entities/index.js").AgentChatError<"FAILED_TO_FETCH", {
|
|
56
56
|
originalError: unknown;
|
|
57
57
|
}>;
|
|
58
58
|
} | {
|
|
59
59
|
success: false;
|
|
60
|
-
error: import("
|
|
60
|
+
error: import("../entities/index.js").AgentChatError<"FAILED_TO_DETERMINE_DOCUMENT", {
|
|
61
61
|
namespace: string | undefined;
|
|
62
62
|
slug: string | undefined;
|
|
63
63
|
documentIdentifier: string;
|
|
64
64
|
}>;
|
|
65
65
|
} | {
|
|
66
66
|
success: false;
|
|
67
|
-
error: import("
|
|
67
|
+
error: import("../entities/index.js").AgentChatError<"DOCUMENT_SETTINGS_COULD_NOT_BE_DETERMINED", {
|
|
68
68
|
documentName: string;
|
|
69
69
|
namespace: string;
|
|
70
70
|
slug: string;
|
|
71
71
|
}>;
|
|
72
|
-
}> | import("neverpanic").Result<never, import("
|
|
72
|
+
}> | import("neverpanic").Result<never, import("../entities/index.js").AgentChatError<"FAILED_TO_EXECUTE_REQUEST", unknown>>;
|
|
73
73
|
//# sourceMappingURL=execute-request.d.ts.map
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { createError as e } from "../entities/error/helpers.js";
|
|
2
|
+
import "../entities/tools/constants.js";
|
|
3
|
+
import { EXECUTE_CLIENT_SIDE_REQUEST_TOOL_NAME as t } from "../entities/tools/execute-request.js";
|
|
4
|
+
import { createDocumentName as n } from "../registry/create-document-name.js";
|
|
5
|
+
import { redirectToProxy as r } from "@scalar/helpers/url/redirect-to-proxy";
|
|
6
|
+
import { n as i } from "neverpanic";
|
|
7
|
+
import { buildRequestSecurity as a, getResolvedUrl as o } from "@scalar/api-client/v2/blocks/operation-block";
|
|
8
|
+
import s from "truncate-json";
|
|
9
|
+
//#region src/client-tools/execute-request.ts
|
|
10
|
+
var c = 5e4, l = i.safeFn(async (e) => e.headers.get("content-type") === "application/json" ? {
|
|
11
|
+
success: !0,
|
|
12
|
+
data: await e.json()
|
|
13
|
+
} : {
|
|
14
|
+
success: !0,
|
|
15
|
+
data: await e.text()
|
|
16
|
+
}, (t) => e("FAILED_TO_PARSE_RESPONSE_BODY", { originalError: t })), u = (e) => JSON.parse(s(JSON.stringify(e), c).jsonString), d = i.safeFn(async (t, n) => {
|
|
17
|
+
let r = await fetch(t, n), i = await l(r);
|
|
18
|
+
return r.ok ? i.success ? {
|
|
19
|
+
success: !0,
|
|
20
|
+
data: {
|
|
21
|
+
status: r.status,
|
|
22
|
+
responseBody: u(i.data),
|
|
23
|
+
headers: Object.fromEntries(r.headers.entries())
|
|
24
|
+
}
|
|
25
|
+
} : i : {
|
|
26
|
+
success: !1,
|
|
27
|
+
error: e("REQUEST_NOT_OK", {
|
|
28
|
+
status: r.status,
|
|
29
|
+
url: r.url,
|
|
30
|
+
responseBody: u(i.success ? i.data : void 0),
|
|
31
|
+
headers: Object.fromEntries(r.headers.entries())
|
|
32
|
+
})
|
|
33
|
+
};
|
|
34
|
+
}, (t) => e("FAILED_TO_FETCH", { originalError: t }));
|
|
35
|
+
function f({ path: e, activeServer: t, proxyUrl: n }) {
|
|
36
|
+
return r(n, o({
|
|
37
|
+
path: e,
|
|
38
|
+
server: t,
|
|
39
|
+
pathVariables: {},
|
|
40
|
+
environment: {
|
|
41
|
+
color: "",
|
|
42
|
+
variables: []
|
|
43
|
+
}
|
|
44
|
+
}));
|
|
45
|
+
}
|
|
46
|
+
var p = i.safeFn(async ({ documentSettings: r, toolCallId: i, chat: o, proxyUrl: s, input: { method: c, path: l, body: u, headers: p, documentIdentifier: m } }) => {
|
|
47
|
+
let [h, g] = m.split("---");
|
|
48
|
+
if (!h || !g) return {
|
|
49
|
+
success: !1,
|
|
50
|
+
error: e("FAILED_TO_DETERMINE_DOCUMENT", {
|
|
51
|
+
namespace: h,
|
|
52
|
+
slug: g,
|
|
53
|
+
documentIdentifier: m
|
|
54
|
+
})
|
|
55
|
+
};
|
|
56
|
+
let _ = n(h, g), v = r[_];
|
|
57
|
+
if (!v) return {
|
|
58
|
+
success: !1,
|
|
59
|
+
error: e("DOCUMENT_SETTINGS_COULD_NOT_BE_DETERMINED", {
|
|
60
|
+
documentName: _,
|
|
61
|
+
namespace: h,
|
|
62
|
+
slug: g
|
|
63
|
+
})
|
|
64
|
+
};
|
|
65
|
+
let y = a(v.securitySchemes), b = {
|
|
66
|
+
method: c,
|
|
67
|
+
body: u,
|
|
68
|
+
...y,
|
|
69
|
+
headers: {
|
|
70
|
+
...p,
|
|
71
|
+
...y.headers
|
|
72
|
+
}
|
|
73
|
+
}, x = await d(f({
|
|
74
|
+
path: l,
|
|
75
|
+
activeServer: v.activeServer,
|
|
76
|
+
proxyUrl: s
|
|
77
|
+
}), b);
|
|
78
|
+
return o.addToolOutput({
|
|
79
|
+
tool: t,
|
|
80
|
+
toolCallId: i,
|
|
81
|
+
output: x,
|
|
82
|
+
state: "output-available"
|
|
83
|
+
}), x;
|
|
84
|
+
}, (t) => e("FAILED_TO_EXECUTE_REQUEST", t));
|
|
85
|
+
//#endregion
|
|
86
|
+
export { p as executeRequestTool };
|
|
87
|
+
|
|
88
|
+
//# sourceMappingURL=execute-request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute-request.js","names":[],"sources":["../../src/client-tools/execute-request.ts"],"sourcesContent":["import type { Chat } from '@ai-sdk/vue'\nimport { buildRequestSecurity, getResolvedUrl } from '@scalar/api-client/v2/blocks/operation-block'\nimport type { SecuritySchemeObjectSecret } from '@scalar/api-client/v2/blocks/scalar-auth-selector-block'\nimport { redirectToProxy } from '@scalar/helpers/url/redirect-to-proxy'\nimport type { ServerObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport type { UIDataTypes, UIMessage } from 'ai'\nimport { n } from 'neverpanic'\nimport truncateJson from 'truncate-json'\n\nimport { EXECUTE_CLIENT_SIDE_REQUEST_TOOL_NAME, TOOL_NAMESPACE_SLUG_DELIMITER } from '@/entities'\nimport { createError } from '@/entities/error/helpers'\nimport { createDocumentName } from '@/registry/create-document-name'\nimport type { Tools } from '@/state/state'\n\n// The maximum number of bytes the requests response can be.\nconst MAX_RESPONSE_SIZE = 50_000\n\nconst getBody = n.safeFn(\n async (response: Response) => {\n const contentType = response.headers.get('content-type')\n\n if (contentType === 'application/json') {\n return { success: true, data: await response.json() }\n }\n\n return { success: true, data: await response.text() }\n },\n (originalError) => createError('FAILED_TO_PARSE_RESPONSE_BODY', { originalError }),\n)\n\nconst truncateResponse = (response: unknown) =>\n JSON.parse(truncateJson(JSON.stringify(response), MAX_RESPONSE_SIZE).jsonString)\n\n/* Result type wrapper for fetch */\nconst safeFetch = n.safeFn(\n async (url: string, init: RequestInit) => {\n const response = await fetch(url, init)\n\n const responseBodyResult = await getBody(response)\n\n if (!response.ok) {\n return {\n success: false,\n error: createError('REQUEST_NOT_OK', {\n status: response.status,\n url: response.url,\n responseBody: truncateResponse(responseBodyResult.success ? responseBodyResult.data : undefined),\n headers: Object.fromEntries(response.headers.entries()),\n }),\n }\n }\n\n if (!responseBodyResult.success) {\n return responseBodyResult\n }\n\n return {\n success: true,\n data: {\n status: response.status,\n responseBody: truncateResponse(responseBodyResult.data),\n headers: Object.fromEntries(response.headers.entries()),\n },\n }\n },\n (originalError) => createError('FAILED_TO_FETCH', { originalError }),\n)\n\nfunction createUrl({\n path,\n activeServer,\n proxyUrl,\n}: {\n path: string\n activeServer: ServerObject | null\n proxyUrl: string\n}) {\n const resolvedUrl = getResolvedUrl({\n path,\n server: activeServer,\n pathVariables: {},\n environment: {\n color: '',\n variables: [],\n },\n })\n\n return redirectToProxy(proxyUrl, resolvedUrl)\n}\n\n/**\n * Executes an HTTP request with the specified options, including method, path, headers, and security schemes, and returns the processed response.\n */\nexport const executeRequestTool = n.safeFn(\n async ({\n documentSettings,\n toolCallId,\n chat,\n proxyUrl,\n input: { method, path, body, headers, documentIdentifier },\n }: {\n documentSettings: Record<\n string,\n { activeServer: ServerObject | null; securitySchemes: SecuritySchemeObjectSecret[] }\n >\n toolCallId: string\n chat: Chat<UIMessage<unknown, UIDataTypes, Tools>>\n proxyUrl: string\n input: {\n method: string\n path: string\n headers?: Record<string, string>\n body?: string\n documentIdentifier: string\n }\n }) => {\n const [namespace, slug] = documentIdentifier.split(TOOL_NAMESPACE_SLUG_DELIMITER)\n if (!namespace || !slug) {\n return {\n success: false,\n error: createError('FAILED_TO_DETERMINE_DOCUMENT', { namespace, slug, documentIdentifier }),\n }\n }\n\n const documentName = createDocumentName(namespace, slug)\n const settings = documentSettings[documentName]\n\n if (!settings) {\n return {\n success: false,\n error: createError('DOCUMENT_SETTINGS_COULD_NOT_BE_DETERMINED', {\n documentName,\n namespace,\n slug,\n }),\n }\n }\n\n const requestSecurityOptions = buildRequestSecurity(settings.securitySchemes)\n\n const fetchOptions = {\n method,\n body,\n ...requestSecurityOptions,\n headers: {\n ...headers,\n ...requestSecurityOptions.headers,\n },\n }\n\n const url = createUrl({\n path,\n activeServer: settings.activeServer,\n proxyUrl,\n })\n\n const result = await safeFetch(url, fetchOptions)\n\n chat.addToolOutput({\n tool: EXECUTE_CLIENT_SIDE_REQUEST_TOOL_NAME,\n toolCallId,\n output: result,\n state: 'output-available',\n })\n\n return result\n },\n (originalError) => createError('FAILED_TO_EXECUTE_REQUEST', originalError),\n)\n"],"mappings":";;;;;;;;;AAeA,IAAM,IAAoB,KAEpB,IAAU,EAAE,OAChB,OAAO,MACe,EAAS,QAAQ,IAAI,eAAe,KAEpC,qBACX;CAAE,SAAS;CAAM,MAAM,MAAM,EAAS,MAAM;CAAE,GAGhD;CAAE,SAAS;CAAM,MAAM,MAAM,EAAS,MAAM;CAAE,GAEtD,MAAkB,EAAY,iCAAiC,EAAE,kBAAe,CAAC,CACnF,EAEK,KAAoB,MACxB,KAAK,MAAM,EAAa,KAAK,UAAU,EAAS,EAAE,EAAkB,CAAC,WAAW,EAG5E,IAAY,EAAE,OAClB,OAAO,GAAa,MAAsB;CACxC,IAAM,IAAW,MAAM,MAAM,GAAK,EAAK,EAEjC,IAAqB,MAAM,EAAQ,EAAS;AAkBlD,QAhBK,EAAS,KAYT,EAAmB,UAIjB;EACL,SAAS;EACT,MAAM;GACJ,QAAQ,EAAS;GACjB,cAAc,EAAiB,EAAmB,KAAK;GACvD,SAAS,OAAO,YAAY,EAAS,QAAQ,SAAS,CAAC;GACxD;EACF,GAVQ,IAZA;EACL,SAAS;EACT,OAAO,EAAY,kBAAkB;GACnC,QAAQ,EAAS;GACjB,KAAK,EAAS;GACd,cAAc,EAAiB,EAAmB,UAAU,EAAmB,OAAO,KAAA,EAAU;GAChG,SAAS,OAAO,YAAY,EAAS,QAAQ,SAAS,CAAC;GACxD,CAAC;EACH;IAgBJ,MAAkB,EAAY,mBAAmB,EAAE,kBAAe,CAAC,CACrE;AAED,SAAS,EAAU,EACjB,SACA,iBACA,eAKC;AAWD,QAAO,EAAgB,GAVH,EAAe;EACjC;EACA,QAAQ;EACR,eAAe,EAAE;EACjB,aAAa;GACX,OAAO;GACP,WAAW,EAAE;GACd;EACF,CAAC,CAE2C;;AAM/C,IAAa,IAAqB,EAAE,OAClC,OAAO,EACL,qBACA,eACA,SACA,aACA,OAAO,EAAE,WAAQ,SAAM,SAAM,YAAS,8BAgBlC;CACJ,IAAM,CAAC,GAAW,KAAQ,EAAmB,MAAA,MAAoC;AACjF,KAAI,CAAC,KAAa,CAAC,EACjB,QAAO;EACL,SAAS;EACT,OAAO,EAAY,gCAAgC;GAAE;GAAW;GAAM;GAAoB,CAAC;EAC5F;CAGH,IAAM,IAAe,EAAmB,GAAW,EAAK,EAClD,IAAW,EAAiB;AAElC,KAAI,CAAC,EACH,QAAO;EACL,SAAS;EACT,OAAO,EAAY,6CAA6C;GAC9D;GACA;GACA;GACD,CAAC;EACH;CAGH,IAAM,IAAyB,EAAqB,EAAS,gBAAgB,EAEvE,IAAe;EACnB;EACA;EACA,GAAG;EACH,SAAS;GACP,GAAG;GACH,GAAG,EAAuB;GAC3B;EACF,EAQK,IAAS,MAAM,EANT,EAAU;EACpB;EACA,cAAc,EAAS;EACvB;EACD,CAAC,EAEkC,EAAa;AASjD,QAPA,EAAK,cAAc;EACjB,MAAM;EACN;EACA,QAAQ;EACR,OAAO;EACR,CAAC,EAEK;IAER,MAAkB,EAAY,6BAA6B,EAAc,CAC3E"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import e from "../_virtual/_plugin-vue_export-helper.js";
|
|
2
|
+
import t from "./ActionsDropdown.vue.script.js";
|
|
3
|
+
/* empty css */
|
|
4
|
+
//#region src/components/ActionsDropdown.vue
|
|
5
|
+
var n = /* @__PURE__ */ e(t, [["__scopeId", "data-v-2d142bb5"]]);
|
|
6
|
+
//#endregion
|
|
7
|
+
export { n as default };
|
|
8
|
+
|
|
9
|
+
//# sourceMappingURL=ActionsDropdown.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActionsDropdown.vue.js","names":[],"sources":["../../src/components/ActionsDropdown.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n ScalarDropdown,\n ScalarDropdownItem,\n useModal,\n} from '@scalar/components'\nimport { ScalarIconMagnifyingGlass, ScalarIconUpload } from '@scalar/icons'\n\nimport Catalog from '@/views/Catalog/Catalog.vue'\n\ndefineEmits<{\n (e: 'uploadApi'): void\n}>()\n\nconst catalogModal = useModal()\n</script>\n\n<template>\n <ScalarDropdown :offset=\"{ crossAxis: -5, mainAxis: 5 }\">\n <slot />\n\n <template #items>\n <ScalarDropdownItem @click=\"$emit('uploadApi')\">\n <div class=\"dropdown-item\">\n <ScalarIconUpload />\n Upload API\n </div>\n </ScalarDropdownItem>\n\n <ScalarDropdownItem @click=\"catalogModal.show()\">\n <div class=\"dropdown-item\">\n <ScalarIconMagnifyingGlass />\n Search Catalog\n </div>\n </ScalarDropdownItem>\n </template>\n </ScalarDropdown>\n\n <Catalog\n v-if=\"catalogModal.open\"\n :modal=\"catalogModal\" />\n</template>\n\n<style scoped>\n.dropdown-item {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n</style>\n"],"mappings":""}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import e from "../views/Catalog/Catalog.vue.js";
|
|
2
|
+
import { Fragment as t, createBlock as n, createCommentVNode as r, createElementBlock as i, createElementVNode as a, createTextVNode as o, createVNode as s, defineComponent as c, openBlock as l, renderSlot as u, unref as d, withCtx as f } from "vue";
|
|
3
|
+
import { ScalarDropdown as p, ScalarDropdownItem as m, useModal as h } from "@scalar/components";
|
|
4
|
+
import { ScalarIconMagnifyingGlass as g, ScalarIconUpload as _ } from "@scalar/icons";
|
|
5
|
+
//#region src/components/ActionsDropdown.vue?vue&type=script&setup=true&lang.ts
|
|
6
|
+
var v = { class: "dropdown-item" }, y = { class: "dropdown-item" }, b = /* @__PURE__ */ c({
|
|
7
|
+
__name: "ActionsDropdown",
|
|
8
|
+
emits: ["uploadApi"],
|
|
9
|
+
setup(c) {
|
|
10
|
+
let b = h();
|
|
11
|
+
return (c, h) => (l(), i(t, null, [s(d(p), { offset: {
|
|
12
|
+
crossAxis: -5,
|
|
13
|
+
mainAxis: 5
|
|
14
|
+
} }, {
|
|
15
|
+
items: f(() => [s(d(m), { onClick: h[0] ||= (e) => c.$emit("uploadApi") }, {
|
|
16
|
+
default: f(() => [a("div", v, [s(d(_)), h[2] ||= o(" Upload API ", -1)])]),
|
|
17
|
+
_: 1
|
|
18
|
+
}), s(d(m), { onClick: h[1] ||= (e) => d(b).show() }, {
|
|
19
|
+
default: f(() => [a("div", y, [s(d(g)), h[3] ||= o(" Search Catalog ", -1)])]),
|
|
20
|
+
_: 1
|
|
21
|
+
})]),
|
|
22
|
+
default: f(() => [u(c.$slots, "default", {}, void 0, !0)]),
|
|
23
|
+
_: 3
|
|
24
|
+
}), d(b).open ? (l(), n(e, {
|
|
25
|
+
key: 0,
|
|
26
|
+
modal: d(b)
|
|
27
|
+
}, null, 8, ["modal"])) : r("", !0)], 64));
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
//#endregion
|
|
31
|
+
export { b as default };
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=ActionsDropdown.vue.script.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActionsDropdown.vue.script.js","names":["$emit"],"sources":["../../src/components/ActionsDropdown.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n ScalarDropdown,\n ScalarDropdownItem,\n useModal,\n} from '@scalar/components'\nimport { ScalarIconMagnifyingGlass, ScalarIconUpload } from '@scalar/icons'\n\nimport Catalog from '@/views/Catalog/Catalog.vue'\n\ndefineEmits<{\n (e: 'uploadApi'): void\n}>()\n\nconst catalogModal = useModal()\n</script>\n\n<template>\n <ScalarDropdown :offset=\"{ crossAxis: -5, mainAxis: 5 }\">\n <slot />\n\n <template #items>\n <ScalarDropdownItem @click=\"$emit('uploadApi')\">\n <div class=\"dropdown-item\">\n <ScalarIconUpload />\n Upload API\n </div>\n </ScalarDropdownItem>\n\n <ScalarDropdownItem @click=\"catalogModal.show()\">\n <div class=\"dropdown-item\">\n <ScalarIconMagnifyingGlass />\n Search Catalog\n </div>\n </ScalarDropdownItem>\n </template>\n </ScalarDropdown>\n\n <Catalog\n v-if=\"catalogModal.open\"\n :modal=\"catalogModal\" />\n</template>\n\n<style scoped>\n.dropdown-item {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n</style>\n"],"mappings":";;;;;;;;;EAcA,IAAM,IAAe,GAAS;qCAI5B,EAkBiB,EAAA,EAAA,EAAA,EAlBA,QAAQ;GAAA,WAAA;GAAA,UAAA;GAA8B,EAAA,EAAA;GAG1C,OAAK,QAMO,CALrB,EAKqB,EAAA,EAAA,EAAA,EALA,SAAK,AAAA,EAAA,QAAA,MAAEA,EAAAA,MAAK,YAAA,EAAA,EAAA;qBAIzB,CAHN,EAGM,OAHN,GAGM,CAFJ,EAAoB,EAAA,EAAA,CAAA,EAAA,AAAA,EAAA,OAAA,EAAA,gBAEtB,GAAA,CAAA,CAAA,CAAA,CAAA;;OAGF,EAKqB,EAAA,EAAA,EAAA,EALA,SAAK,AAAA,EAAA,QAAA,MAAE,EAAA,EAAY,CAAC,MAAI,EAAA,EAAA;qBAIrC,CAHN,EAGM,OAHN,GAGM,CAFJ,EAA6B,EAAA,EAAA,CAAA,EAAA,AAAA,EAAA,OAAA,EAAA,oBAE/B,GAAA,CAAA,CAAA,CAAA,CAAA;;;oBAdI,CAAR,EAAQ,EAAA,QAAA,WAAA,EAAA,EAAA,KAAA,GAAA,GAAA,CAAA,CAAA;;MAoBF,EAAA,EAAY,CAAC,QAAA,GAAA,EADrB,EAE0B,GAAA;;GAAvB,OAAO,EAAA,EAAY"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import e from "../_virtual/_plugin-vue_export-helper.js";
|
|
2
|
+
import t from "./ApprovalSection.vue.script.js";
|
|
3
|
+
/* empty css */
|
|
4
|
+
//#region src/components/ApprovalSection.vue
|
|
5
|
+
var n = /* @__PURE__ */ e(t, [["__scopeId", "data-v-a7e6c699"]]);
|
|
6
|
+
//#endregion
|
|
7
|
+
export { n as default };
|
|
8
|
+
|
|
9
|
+
//# sourceMappingURL=ApprovalSection.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApprovalSection.vue.js","names":[],"sources":["../../src/components/ApprovalSection.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarIconInfo } from '@scalar/icons'\n\nconst emit = defineEmits<{\n (e: 'approve'): void\n (e: 'reject'): void\n}>()\n</script>\n\n<template>\n <div class=\"approvalSection\">\n <strong class=\"approvalText flex items-center gap-1.5\">\n <ScalarIconInfo\n class=\"text-blue size-4\"\n weight=\"bold\" />\n One or more requests require approval.\n </strong>\n <div class=\"approveContainer\">\n <button\n type=\"button\"\n class=\"actionButton rejectButton\"\n @click=\"emit('reject')\">\n Reject\n </button>\n <button\n type=\"button\"\n class=\"actionButton approveButton\"\n @click=\"emit('approve')\">\n Approve\n </button>\n </div>\n </div>\n</template>\n\n<style scoped>\n.approvalSection {\n width: 100%;\n margin-bottom: -16px;\n padding: 8px 8px 24px 12px;\n\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: 16px 16px 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.approvalText {\n font-weight: var(--scalar-semibold);\n font-size: var(--scalar-font-size-3);\n}\n\n.approveContainer {\n display: flex;\n gap: 5px;\n}\n\n.actionButton {\n display: flex;\n align-items: center;\n font-weight: var(--scalar-semibold);\n border-radius: 50px;\n padding: 6px 12px;\n font-size: var(--scalar-font-size-3);\n}\n\n.rejectButton {\n color: white;\n background: var(--scalar-color-red);\n}\n.rejectButton:hover,\n.rejectButton:active {\n background: color-mix(\n in srgb,\n var(--scalar-color-red),\n var(--scalar-background-1) 10%\n );\n color: white !important;\n}\n\n.approveButton {\n color: white;\n background: var(--scalar-color-blue);\n}\n.approveButton:hover,\n.approveButton:active {\n background: color-mix(\n in srgb,\n var(--scalar-color-blue),\n var(--scalar-background-1) 10%\n );\n color: white !important;\n}\n</style>\n"],"mappings":""}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { createElementBlock as e, createElementVNode as t, createTextVNode as n, createVNode as r, defineComponent as i, openBlock as a, unref as o } from "vue";
|
|
2
|
+
import { ScalarIconInfo as s } from "@scalar/icons";
|
|
3
|
+
//#region src/components/ApprovalSection.vue?vue&type=script&setup=true&lang.ts
|
|
4
|
+
var c = { class: "approvalSection" }, l = { class: "approvalText flex items-center gap-1.5" }, u = { class: "approveContainer" }, d = /* @__PURE__ */ i({
|
|
5
|
+
__name: "ApprovalSection",
|
|
6
|
+
emits: ["approve", "reject"],
|
|
7
|
+
setup(i, { emit: d }) {
|
|
8
|
+
let f = d;
|
|
9
|
+
return (i, d) => (a(), e("div", c, [t("strong", l, [r(o(s), {
|
|
10
|
+
class: "text-blue size-4",
|
|
11
|
+
weight: "bold"
|
|
12
|
+
}), d[2] ||= n(" One or more requests require approval. ", -1)]), t("div", u, [t("button", {
|
|
13
|
+
type: "button",
|
|
14
|
+
class: "actionButton rejectButton",
|
|
15
|
+
onClick: d[0] ||= (e) => f("reject")
|
|
16
|
+
}, " Reject "), t("button", {
|
|
17
|
+
type: "button",
|
|
18
|
+
class: "actionButton approveButton",
|
|
19
|
+
onClick: d[1] ||= (e) => f("approve")
|
|
20
|
+
}, " Approve ")])]));
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
//#endregion
|
|
24
|
+
export { d as default };
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=ApprovalSection.vue.script.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApprovalSection.vue.script.js","names":[],"sources":["../../src/components/ApprovalSection.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarIconInfo } from '@scalar/icons'\n\nconst emit = defineEmits<{\n (e: 'approve'): void\n (e: 'reject'): void\n}>()\n</script>\n\n<template>\n <div class=\"approvalSection\">\n <strong class=\"approvalText flex items-center gap-1.5\">\n <ScalarIconInfo\n class=\"text-blue size-4\"\n weight=\"bold\" />\n One or more requests require approval.\n </strong>\n <div class=\"approveContainer\">\n <button\n type=\"button\"\n class=\"actionButton rejectButton\"\n @click=\"emit('reject')\">\n Reject\n </button>\n <button\n type=\"button\"\n class=\"actionButton approveButton\"\n @click=\"emit('approve')\">\n Approve\n </button>\n </div>\n </div>\n</template>\n\n<style scoped>\n.approvalSection {\n width: 100%;\n margin-bottom: -16px;\n padding: 8px 8px 24px 12px;\n\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: 16px 16px 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.approvalText {\n font-weight: var(--scalar-semibold);\n font-size: var(--scalar-font-size-3);\n}\n\n.approveContainer {\n display: flex;\n gap: 5px;\n}\n\n.actionButton {\n display: flex;\n align-items: center;\n font-weight: var(--scalar-semibold);\n border-radius: 50px;\n padding: 6px 12px;\n font-size: var(--scalar-font-size-3);\n}\n\n.rejectButton {\n color: white;\n background: var(--scalar-color-red);\n}\n.rejectButton:hover,\n.rejectButton:active {\n background: color-mix(\n in srgb,\n var(--scalar-color-red),\n var(--scalar-background-1) 10%\n );\n color: white !important;\n}\n\n.approveButton {\n color: white;\n background: var(--scalar-color-blue);\n}\n.approveButton:hover,\n.approveButton:active {\n background: color-mix(\n in srgb,\n var(--scalar-color-blue),\n var(--scalar-background-1) 10%\n );\n color: white !important;\n}\n</style>\n"],"mappings":";;;;;;;EAGA,IAAM,IAAO;yBAOX,EAqBM,OArBN,GAqBM,CApBJ,EAKS,UALT,GAKS,CAJP,EAEkB,EAAA,EAAA,EAAA;GADhB,OAAM;GACN,QAAO;iBAAS,4CAEpB,GAAA,CAAA,CAAA,EACA,EAaM,OAbN,GAaM,CAZJ,EAKS,UAAA;GAJP,MAAK;GACL,OAAM;GACL,SAAK,AAAA,EAAA,QAAA,MAAE,EAAI,SAAA;KAAY,WAE1B,EACA,EAKS,UAAA;GAJP,MAAK;GACL,OAAM;GACL,SAAK,AAAA,EAAA,QAAA,MAAE,EAAI,UAAA;KAAa,YAE3B,CAAA,CAAA,CAAA,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/* empty css */
|
|
2
|
+
import e from "../_virtual/_plugin-vue_export-helper.js";
|
|
3
|
+
import { createElementBlock as t, createStaticVNode as n, openBlock as r } from "vue";
|
|
4
|
+
//#region src/components/AuthenticationProvided.vue
|
|
5
|
+
var i = {}, a = { class: "authenticationProvided" };
|
|
6
|
+
function o(e, i) {
|
|
7
|
+
return r(), t("div", a, [...i[0] ||= [n("<svg fill=\"none\" height=\"16\" viewBox=\"0 0 16 16\" width=\"16\" xmlns=\"http://www.w3.org/2000/svg\" data-v-e3416cd5><rect height=\"14.25\" rx=\"7.125\" width=\"14.25\" x=\"0.875\" y=\"0.875\" data-v-e3416cd5></rect><rect height=\"14.25\" rx=\"7.125\" stroke=\"currentColor\" stroke-width=\"1.75\" width=\"14.25\" x=\"0.875\" y=\"0.875\" data-v-e3416cd5></rect><g clip-path=\"url(#clip0_74_840)\" data-v-e3416cd5><path d=\"M11.6037 6.841L7.59117 10.8535C7.49742 10.9472 7.37029 10.9998 7.23774 10.9998C7.10519 10.9998 6.97806 10.9472 6.8843 10.8535L4.64617 8.6035C4.55257 8.50975 4.5 8.38269 4.5 8.25022C4.5 8.11774 4.55257 7.99068 4.64617 7.89694L5.27117 7.27194C5.36488 7.17862 5.49174 7.12623 5.62399 7.12623C5.75623 7.12623 5.88309 7.17862 5.9768 7.27194L7.25024 8.50694L10.274 5.52037C10.3677 5.42696 10.4946 5.37451 10.627 5.37451C10.7593 5.37451 10.8862 5.42696 10.9799 5.52037L11.6034 6.131C11.6502 6.17746 11.6875 6.23274 11.7129 6.29366C11.7383 6.35458 11.7514 6.41993 11.7514 6.48593C11.7514 6.55194 11.7384 6.6173 11.713 6.67824C11.6877 6.73918 11.6505 6.7945 11.6037 6.841Z\" fill=\"currentColor\" data-v-e3416cd5></path></g><defs data-v-e3416cd5><clipPath id=\"clip0_74_840\" data-v-e3416cd5><rect height=\"8\" rx=\"4\" width=\"8\" x=\"4\" y=\"4\" data-v-e3416cd5></rect></clipPath></defs></svg> Authorized ", 2)]]);
|
|
8
|
+
}
|
|
9
|
+
var s = /* @__PURE__ */ e(i, [["render", o], ["__scopeId", "data-v-e3416cd5"]]);
|
|
10
|
+
//#endregion
|
|
11
|
+
export { s as default };
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=AuthenticationProvided.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthenticationProvided.vue.js","names":[],"sources":["../../src/components/AuthenticationProvided.vue"],"sourcesContent":["<template>\n <div class=\"authenticationProvided\">\n <svg\n fill=\"none\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <rect\n height=\"14.25\"\n rx=\"7.125\"\n width=\"14.25\"\n x=\"0.875\"\n y=\"0.875\" />\n <rect\n height=\"14.25\"\n rx=\"7.125\"\n stroke=\"currentColor\"\n stroke-width=\"1.75\"\n width=\"14.25\"\n x=\"0.875\"\n y=\"0.875\" />\n <g clip-path=\"url(#clip0_74_840)\">\n <path\n d=\"M11.6037 6.841L7.59117 10.8535C7.49742 10.9472 7.37029 10.9998 7.23774 10.9998C7.10519 10.9998 6.97806 10.9472 6.8843 10.8535L4.64617 8.6035C4.55257 8.50975 4.5 8.38269 4.5 8.25022C4.5 8.11774 4.55257 7.99068 4.64617 7.89694L5.27117 7.27194C5.36488 7.17862 5.49174 7.12623 5.62399 7.12623C5.75623 7.12623 5.88309 7.17862 5.9768 7.27194L7.25024 8.50694L10.274 5.52037C10.3677 5.42696 10.4946 5.37451 10.627 5.37451C10.7593 5.37451 10.8862 5.42696 10.9799 5.52037L11.6034 6.131C11.6502 6.17746 11.6875 6.23274 11.7129 6.29366C11.7383 6.35458 11.7514 6.41993 11.7514 6.48593C11.7514 6.55194 11.7384 6.6173 11.713 6.67824C11.6877 6.73918 11.6505 6.7945 11.6037 6.841Z\"\n fill=\"currentColor\" />\n </g>\n <defs>\n <clipPath id=\"clip0_74_840\">\n <rect\n height=\"8\"\n rx=\"4\"\n width=\"8\"\n x=\"4\"\n y=\"4\" />\n </clipPath>\n </defs>\n </svg>\n Authorized\n </div>\n</template>\n\n<style scoped>\n.authenticationProvided {\n display: flex;\n align-items: center;\n gap: 6px;\n color: var(--scalar-color-1);\n font-weight: var(--scalar-semibold);\n min-height: 40px;\n font-size: var(--scalar-font-size-3);\n position: relative;\n}\n</style>\n"],"mappings":";;;;kBACO,OAAM,0BAAwB;;aAAnC,EAsCM,OAtCN,GAsCM,CAAA,GAAA,AAAA,EAAA,OAAA,CAAA,EAAA,izCAAA,EAAA,CAAA,CAAA,CAAA"}
|