@scalar/agent-chat 0.9.12 → 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.
Files changed (231) hide show
  1. package/dist/App.vue.d.ts +3 -3
  2. package/dist/App.vue.js +7 -0
  3. package/dist/App.vue.js.map +1 -0
  4. package/dist/App.vue.script.js +41 -0
  5. package/dist/App.vue.script.js.map +1 -0
  6. package/dist/Chat.vue.js +7 -0
  7. package/dist/Chat.vue.js.map +1 -0
  8. package/dist/Chat.vue.script.js +48 -0
  9. package/dist/Chat.vue.script.js.map +1 -0
  10. package/dist/_virtual/_plugin-vue_export-helper.js +8 -0
  11. package/dist/api.js +75 -0
  12. package/dist/api.js.map +1 -0
  13. package/dist/client-tools/execute-request.d.ts +1 -1
  14. package/dist/client-tools/execute-request.js +88 -0
  15. package/dist/client-tools/execute-request.js.map +1 -0
  16. package/dist/components/ActionsDropdown.vue.js +9 -0
  17. package/dist/components/ActionsDropdown.vue.js.map +1 -0
  18. package/dist/components/ActionsDropdown.vue.script.js +33 -0
  19. package/dist/components/ActionsDropdown.vue.script.js.map +1 -0
  20. package/dist/components/ApprovalSection.vue.js +9 -0
  21. package/dist/components/ApprovalSection.vue.js.map +1 -0
  22. package/dist/components/ApprovalSection.vue.script.js +26 -0
  23. package/dist/components/ApprovalSection.vue.script.js.map +1 -0
  24. package/dist/components/AuthenticationProvided.vue.js +13 -0
  25. package/dist/components/AuthenticationProvided.vue.js.map +1 -0
  26. package/dist/components/AuthenticationRequired.vue.js +13 -0
  27. package/dist/components/AuthenticationRequired.vue.js.map +1 -0
  28. package/dist/components/AutosendPaused.vue.js +13 -0
  29. package/dist/components/AutosendPaused.vue.js.map +1 -0
  30. package/dist/components/BuildingRequest.vue.js +19 -0
  31. package/dist/components/BuildingRequest.vue.js.map +1 -0
  32. package/dist/components/ContextItem.vue.js +9 -0
  33. package/dist/components/ContextItem.vue.js.map +1 -0
  34. package/dist/components/ContextItem.vue.script.js +13 -0
  35. package/dist/components/ContextItem.vue.script.js.map +1 -0
  36. package/dist/components/ErrorMessage.vue.d.ts +1 -1
  37. package/dist/components/ErrorMessage.vue.js +9 -0
  38. package/dist/components/ErrorMessage.vue.js.map +1 -0
  39. package/dist/components/ErrorMessage.vue.script.js +22 -0
  40. package/dist/components/ErrorMessage.vue.script.js.map +1 -0
  41. package/dist/components/FreeMessagesInfoSection.vue.js +9 -0
  42. package/dist/components/FreeMessagesInfoSection.vue.js.map +1 -0
  43. package/dist/components/FreeMessagesInfoSection.vue.script.js +43 -0
  44. package/dist/components/FreeMessagesInfoSection.vue.script.js.map +1 -0
  45. package/dist/components/LoadingMiniOpenAPIDoc.vue.js +13 -0
  46. package/dist/components/LoadingMiniOpenAPIDoc.vue.js.map +1 -0
  47. package/dist/components/LoadingOpenAPISpecsSummary.vue.js +13 -0
  48. package/dist/components/LoadingOpenAPISpecsSummary.vue.js.map +1 -0
  49. package/dist/components/Logo.vue.js +23 -0
  50. package/dist/components/Logo.vue.js.map +1 -0
  51. package/dist/components/PaymentSection.vue.js +9 -0
  52. package/dist/components/PaymentSection.vue.js.map +1 -0
  53. package/dist/components/PaymentSection.vue.script.js +22 -0
  54. package/dist/components/PaymentSection.vue.script.js.map +1 -0
  55. package/dist/components/RequestApproved.vue.js +13 -0
  56. package/dist/components/RequestApproved.vue.js.map +1 -0
  57. package/dist/components/RequestFailed.vue.js +19 -0
  58. package/dist/components/RequestFailed.vue.js.map +1 -0
  59. package/dist/components/RequestPreview.vue.d.ts +1 -1
  60. package/dist/components/RequestPreview.vue.js +9 -0
  61. package/dist/components/RequestPreview.vue.js.map +1 -0
  62. package/dist/components/RequestPreview.vue.script.js +96 -0
  63. package/dist/components/RequestPreview.vue.script.js.map +1 -0
  64. package/dist/components/RequestRejected.vue.js +19 -0
  65. package/dist/components/RequestRejected.vue.js.map +1 -0
  66. package/dist/components/RequestSuccess.vue.js +13 -0
  67. package/dist/components/RequestSuccess.vue.js.map +1 -0
  68. package/dist/components/ResponseBody/ResponseBody.vue.d.ts +1 -1
  69. package/dist/components/ResponseBody/ResponseBody.vue.js +7 -0
  70. package/dist/components/ResponseBody/ResponseBody.vue.js.map +1 -0
  71. package/dist/components/ResponseBody/ResponseBody.vue.script.js +43 -0
  72. package/dist/components/ResponseBody/ResponseBody.vue.script.js.map +1 -0
  73. package/dist/components/ResponseBody/ResponseBodyInfo.vue.js +12 -0
  74. package/dist/components/ResponseBody/ResponseBodyInfo.vue.js.map +1 -0
  75. package/dist/components/ResponseBody/ResponseBodyPreview.vue.d.ts +1 -1
  76. package/dist/components/ResponseBody/ResponseBodyPreview.vue.js +9 -0
  77. package/dist/components/ResponseBody/ResponseBodyPreview.vue.js.map +1 -0
  78. package/dist/components/ResponseBody/ResponseBodyPreview.vue.script.js +59 -0
  79. package/dist/components/ResponseBody/ResponseBodyPreview.vue.script.js.map +1 -0
  80. package/dist/components/ResponseBody/ResponseBodyRaw.vue.js +7 -0
  81. package/dist/components/ResponseBody/ResponseBodyRaw.vue.js.map +1 -0
  82. package/dist/components/ResponseBody/ResponseBodyRaw.vue.script.js +22 -0
  83. package/dist/components/ResponseBody/ResponseBodyRaw.vue.script.js.map +1 -0
  84. package/dist/components/ResponseBody/ResponseBodyToggle.vue.js +7 -0
  85. package/dist/components/ResponseBody/ResponseBodyToggle.vue.js.map +1 -0
  86. package/dist/components/ResponseBody/ResponseBodyToggle.vue.script.js +23 -0
  87. package/dist/components/ResponseBody/ResponseBodyToggle.vue.script.js.map +1 -0
  88. package/dist/components/ResponseBody/helpers/media-types.js +223 -0
  89. package/dist/components/ResponseBody/helpers/media-types.js.map +1 -0
  90. package/dist/components/ResponseBody/helpers/process-response-body.js +33 -0
  91. package/dist/components/ResponseBody/helpers/process-response-body.js.map +1 -0
  92. package/dist/components/SearchPopover.vue.js +9 -0
  93. package/dist/components/SearchPopover.vue.js.map +1 -0
  94. package/dist/components/SearchPopover.vue.script.js +53 -0
  95. package/dist/components/SearchPopover.vue.script.js.map +1 -0
  96. package/dist/components/Selector.vue.js +7 -0
  97. package/dist/components/Selector.vue.js.map +1 -0
  98. package/dist/components/Selector.vue.script.js +62 -0
  99. package/dist/components/Selector.vue.script.js.map +1 -0
  100. package/dist/components/SendingRequest.vue.js +19 -0
  101. package/dist/components/SendingRequest.vue.js.map +1 -0
  102. package/dist/components/ServerSelector.vue.js +7 -0
  103. package/dist/components/ServerSelector.vue.js.map +1 -0
  104. package/dist/components/ServerSelector.vue.script.js +60 -0
  105. package/dist/components/ServerSelector.vue.script.js.map +1 -0
  106. package/dist/components/UploadSection.vue.d.ts +1 -1
  107. package/dist/components/UploadSection.vue.js +9 -0
  108. package/dist/components/UploadSection.vue.js.map +1 -0
  109. package/dist/components/UploadSection.vue.script.js +52 -0
  110. package/dist/components/UploadSection.vue.script.js.map +1 -0
  111. package/dist/consts/urls.js +12 -0
  112. package/dist/consts/urls.js.map +1 -0
  113. package/dist/entities/error/constants.js +6 -0
  114. package/dist/entities/error/constants.js.map +1 -0
  115. package/dist/entities/error/helpers.d.ts +1 -1
  116. package/dist/entities/error/helpers.js +11 -0
  117. package/dist/entities/error/helpers.js.map +1 -0
  118. package/dist/entities/index.d.ts +9 -9
  119. package/dist/entities/index.js +10 -2
  120. package/dist/entities/prompt/constants.js +6 -0
  121. package/dist/entities/prompt/constants.js.map +1 -0
  122. package/dist/entities/registry/document.js +14 -0
  123. package/dist/entities/registry/document.js.map +1 -0
  124. package/dist/entities/tools/ask-for-authentication.js +7 -0
  125. package/dist/entities/tools/ask-for-authentication.js.map +1 -0
  126. package/dist/entities/tools/constants.js +6 -0
  127. package/dist/entities/tools/constants.js.map +1 -0
  128. package/dist/entities/tools/execute-request.d.ts +1 -1
  129. package/dist/entities/tools/execute-request.js +13 -0
  130. package/dist/entities/tools/execute-request.js.map +1 -0
  131. package/dist/entities/tools/get-mini-openapi-spec.js +7 -0
  132. package/dist/entities/tools/get-mini-openapi-spec.js.map +1 -0
  133. package/dist/entities/tools/get-openapi-spec-summary.js +6 -0
  134. package/dist/entities/tools/get-openapi-spec-summary.js.map +1 -0
  135. package/dist/helpers.js +42 -0
  136. package/dist/helpers.js.map +1 -0
  137. package/dist/hooks/use-agent-key-documents.js +24 -0
  138. package/dist/hooks/use-agent-key-documents.js.map +1 -0
  139. package/dist/hooks/use-chat-approvals.d.ts +1 -1
  140. package/dist/hooks/use-chat-approvals.js +38 -0
  141. package/dist/hooks/use-chat-approvals.js.map +1 -0
  142. package/dist/hooks/use-chat-error.js +25 -0
  143. package/dist/hooks/use-chat-error.js.map +1 -0
  144. package/dist/hooks/use-chat-pending-client-tool-parts.js +14 -0
  145. package/dist/hooks/use-chat-pending-client-tool-parts.js.map +1 -0
  146. package/dist/hooks/use-chat-scroll.js +17 -0
  147. package/dist/hooks/use-chat-scroll.js.map +1 -0
  148. package/dist/hooks/use-curated-documents.js +14 -0
  149. package/dist/hooks/use-curated-documents.js.map +1 -0
  150. package/dist/hooks/use-search.d.ts +1 -1
  151. package/dist/hooks/use-search.js +23 -0
  152. package/dist/hooks/use-search.js.map +1 -0
  153. package/dist/hooks/use-signup-link.js +17 -0
  154. package/dist/hooks/use-signup-link.js.map +1 -0
  155. package/dist/hooks/use-term-and-conditions.js +20 -0
  156. package/dist/hooks/use-term-and-conditions.js.map +1 -0
  157. package/dist/hooks/use-upload-tmp-document.js +92 -0
  158. package/dist/hooks/use-upload-tmp-document.js.map +1 -0
  159. package/dist/index.d.ts +2 -2
  160. package/dist/index.js +2 -2065
  161. package/dist/package.json +1 -1
  162. package/dist/plugins/persistance.js +16 -0
  163. package/dist/plugins/persistance.js.map +1 -0
  164. package/dist/registry/add-documents-to-store.d.ts +2 -2
  165. package/dist/registry/add-documents-to-store.js +36 -0
  166. package/dist/registry/add-documents-to-store.js.map +1 -0
  167. package/dist/registry/create-document-name.js +8 -0
  168. package/dist/registry/create-document-name.js.map +1 -0
  169. package/dist/state/state.d.ts +6 -6
  170. package/dist/state/state.js +154 -0
  171. package/dist/state/state.js.map +1 -0
  172. package/dist/views/Catalog/Catalog.vue.js +10 -0
  173. package/dist/views/Catalog/Catalog.vue.js.map +1 -0
  174. package/dist/views/Catalog/Catalog.vue.script.js +50 -0
  175. package/dist/views/Catalog/Catalog.vue.script.js.map +1 -0
  176. package/dist/views/Chat/Chat.vue.js +9 -0
  177. package/dist/views/Chat/Chat.vue.js.map +1 -0
  178. package/dist/views/Chat/Chat.vue.script.js +55 -0
  179. package/dist/views/Chat/Chat.vue.script.js.map +1 -0
  180. package/dist/views/Chat/Messages/AskForAuthentication.vue.d.ts +2 -2
  181. package/dist/views/Chat/Messages/AskForAuthentication.vue.js +9 -0
  182. package/dist/views/Chat/Messages/AskForAuthentication.vue.js.map +1 -0
  183. package/dist/views/Chat/Messages/AskForAuthentication.vue.script.js +72 -0
  184. package/dist/views/Chat/Messages/AskForAuthentication.vue.script.js.map +1 -0
  185. package/dist/views/Chat/Messages/ExecuteRequestTool.vue.d.ts +2 -2
  186. package/dist/views/Chat/Messages/ExecuteRequestTool.vue.js +9 -0
  187. package/dist/views/Chat/Messages/ExecuteRequestTool.vue.js.map +1 -0
  188. package/dist/views/Chat/Messages/ExecuteRequestTool.vue.script.js +26 -0
  189. package/dist/views/Chat/Messages/ExecuteRequestTool.vue.script.js.map +1 -0
  190. package/dist/views/Chat/Messages/GetMiniOpenAPIDocTool.vue.d.ts +2 -2
  191. package/dist/views/Chat/Messages/GetMiniOpenAPIDocTool.vue.js +9 -0
  192. package/dist/views/Chat/Messages/GetMiniOpenAPIDocTool.vue.js.map +1 -0
  193. package/dist/views/Chat/Messages/GetMiniOpenAPIDocTool.vue.script.js +39 -0
  194. package/dist/views/Chat/Messages/GetMiniOpenAPIDocTool.vue.script.js.map +1 -0
  195. package/dist/views/Chat/Messages/GetOpenAPISpecsSummary.vue.d.ts +2 -2
  196. package/dist/views/Chat/Messages/GetOpenAPISpecsSummary.vue.js +7 -0
  197. package/dist/views/Chat/Messages/GetOpenAPISpecsSummary.vue.js.map +1 -0
  198. package/dist/views/Chat/Messages/GetOpenAPISpecsSummary.vue.script.js +21 -0
  199. package/dist/views/Chat/Messages/GetOpenAPISpecsSummary.vue.script.js.map +1 -0
  200. package/dist/views/Chat/Messages/Text.vue.js +7 -0
  201. package/dist/views/Chat/Messages/Text.vue.js.map +1 -0
  202. package/dist/views/Chat/Messages/Text.vue.script.js +14 -0
  203. package/dist/views/Chat/Messages/Text.vue.script.js.map +1 -0
  204. package/dist/views/Layout.vue.js +9 -0
  205. package/dist/views/Layout.vue.js.map +1 -0
  206. package/dist/views/Layout.vue.script.js +25 -0
  207. package/dist/views/Layout.vue.script.js.map +1 -0
  208. package/dist/views/PromptForm.vue.js +9 -0
  209. package/dist/views/PromptForm.vue.js.map +1 -0
  210. package/dist/views/PromptForm.vue.script.js +202 -0
  211. package/dist/views/PromptForm.vue.script.js.map +1 -0
  212. package/dist/views/Settings/Auth.vue.js +7 -0
  213. package/dist/views/Settings/Auth.vue.js.map +1 -0
  214. package/dist/views/Settings/Auth.vue.script.js +63 -0
  215. package/dist/views/Settings/Auth.vue.script.js.map +1 -0
  216. package/dist/views/Settings/DocSettings.vue.js +9 -0
  217. package/dist/views/Settings/DocSettings.vue.js.map +1 -0
  218. package/dist/views/Settings/DocSettings.vue.script.js +48 -0
  219. package/dist/views/Settings/DocSettings.vue.script.js.map +1 -0
  220. package/dist/views/Settings/Settings.vue.js +10 -0
  221. package/dist/views/Settings/Settings.vue.js.map +1 -0
  222. package/dist/views/Settings/Settings.vue.script.js +59 -0
  223. package/dist/views/Settings/Settings.vue.script.js.map +1 -0
  224. package/dist/views/Start.vue.js +9 -0
  225. package/dist/views/Start.vue.js.map +1 -0
  226. package/dist/views/Start.vue.script.js +41 -0
  227. package/dist/views/Start.vue.script.js.map +1 -0
  228. package/package.json +7 -7
  229. package/dist/entities-NWeuOkBB.js +0 -28
  230. package/dist/entities-NWeuOkBB.js.map +0 -1
  231. package/dist/index.js.map +0 -1
package/dist/App.vue.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { type Ref } from 'vue';
2
- import { type RegistryDocument } from './state/state';
2
+ import { type RegistryDocument } from './state/state.js';
3
3
  import { type ChatMode } from './types';
4
4
  type __VLS_Props = {
5
5
  registryDocuments: RegistryDocument[];
@@ -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("./state/state").Tools>>;
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;
@@ -52,7 +52,7 @@ 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
57
  curatedDocuments: Ref<import("./entities/index.js").ApiMetadata[]>;
58
58
  getActiveDocumentJson?: () => string;
@@ -0,0 +1,7 @@
1
+ import e from "./App.vue.script.js";
2
+ //#region src/App.vue
3
+ var t = e;
4
+ //#endregion
5
+ export { t as default };
6
+
7
+ //# sourceMappingURL=App.vue.js.map
@@ -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"}
@@ -0,0 +1,7 @@
1
+ import e from "./Chat.vue.script.js";
2
+ //#region src/Chat.vue
3
+ var t = e;
4
+ //#endregion
5
+ export { t as default };
6
+
7
+ //# sourceMappingURL=Chat.vue.js.map
@@ -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"}
@@ -0,0 +1,8 @@
1
+ //#region \0plugin-vue:export-helper
2
+ var e = (e, t) => {
3
+ let n = e.__vccOpts || e;
4
+ for (let [e, r] of t) n[e] = r;
5
+ return n;
6
+ };
7
+ //#endregion
8
+ export { e as default };
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
@@ -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 '../state/state';
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
  */
@@ -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"}
@@ -0,0 +1,13 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ /* empty css */
3
+ import { createElementBlock as t, createStaticVNode as n, openBlock as r } from "vue";
4
+ //#region src/components/AuthenticationRequired.vue
5
+ var i = {}, a = { class: "authenticationRequired" };
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-d15ef40b><rect height=\"14.25\" rx=\"7.125\" width=\"14.25\" x=\"0.875\" y=\"0.875\" data-v-d15ef40b></rect><rect height=\"14.25\" rx=\"7.125\" stroke=\"currentColor\" stroke-width=\"1.5\" width=\"14.25\" x=\"0.875\" y=\"0.875\" data-v-d15ef40b></rect><g clip-path=\"url(#clip0_74_585)\" data-v-d15ef40b><path d=\"M10.75 5.5V10.5C10.75 10.6326 10.6973 10.7598 10.6036 10.8536C10.5098 10.9473 10.3826 11 10.25 11H9C8.86739 11 8.74021 10.9473 8.64645 10.8536C8.55268 10.7598 8.5 10.6326 8.5 10.5V5.5C8.5 5.36739 8.55268 5.24021 8.64645 5.14645C8.74021 5.05268 8.86739 5 9 5H10.25C10.3826 5 10.5098 5.05268 10.6036 5.14645C10.6973 5.24021 10.75 5.36739 10.75 5.5ZM7 5H5.75C5.61739 5 5.49021 5.05268 5.39645 5.14645C5.30268 5.24021 5.25 5.36739 5.25 5.5V10.5C5.25 10.6326 5.30268 10.7598 5.39645 10.8536C5.49021 10.9473 5.61739 11 5.75 11H7C7.13261 11 7.25979 10.9473 7.35355 10.8536C7.44732 10.7598 7.5 10.6326 7.5 10.5V5.5C7.5 5.36739 7.44732 5.24021 7.35355 5.14645C7.25979 5.05268 7.13261 5 7 5Z\" fill=\"currentColor\" data-v-d15ef40b></path></g><defs data-v-d15ef40b><clipPath id=\"clip0_74_585\" data-v-d15ef40b><rect height=\"8\" rx=\"4\" width=\"8\" x=\"4\" y=\"4\" data-v-d15ef40b></rect></clipPath></defs></svg> Authentication required ", 2)]]);
8
+ }
9
+ var s = /* @__PURE__ */ e(i, [["render", o], ["__scopeId", "data-v-d15ef40b"]]);
10
+ //#endregion
11
+ export { s as default };
12
+
13
+ //# sourceMappingURL=AuthenticationRequired.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthenticationRequired.vue.js","names":[],"sources":["../../src/components/AuthenticationRequired.vue"],"sourcesContent":["<template>\n <div class=\"authenticationRequired\">\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.5\"\n width=\"14.25\"\n x=\"0.875\"\n y=\"0.875\" />\n <g clip-path=\"url(#clip0_74_585)\">\n <path\n d=\"M10.75 5.5V10.5C10.75 10.6326 10.6973 10.7598 10.6036 10.8536C10.5098 10.9473 10.3826 11 10.25 11H9C8.86739 11 8.74021 10.9473 8.64645 10.8536C8.55268 10.7598 8.5 10.6326 8.5 10.5V5.5C8.5 5.36739 8.55268 5.24021 8.64645 5.14645C8.74021 5.05268 8.86739 5 9 5H10.25C10.3826 5 10.5098 5.05268 10.6036 5.14645C10.6973 5.24021 10.75 5.36739 10.75 5.5ZM7 5H5.75C5.61739 5 5.49021 5.05268 5.39645 5.14645C5.30268 5.24021 5.25 5.36739 5.25 5.5V10.5C5.25 10.6326 5.30268 10.7598 5.39645 10.8536C5.49021 10.9473 5.61739 11 5.75 11H7C7.13261 11 7.25979 10.9473 7.35355 10.8536C7.44732 10.7598 7.5 10.6326 7.5 10.5V5.5C7.5 5.36739 7.44732 5.24021 7.35355 5.14645C7.25979 5.05268 7.13261 5 7 5Z\"\n fill=\"currentColor\" />\n </g>\n <defs>\n <clipPath id=\"clip0_74_585\">\n <rect\n height=\"8\"\n rx=\"4\"\n width=\"8\"\n x=\"4\"\n y=\"4\" />\n </clipPath>\n </defs>\n </svg>\n Authentication required\n </div>\n</template>\n\n<style scoped>\n.authenticationRequired {\n display: flex;\n align-items: center;\n gap: 6px;\n color: var(--scalar-color-blue);\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,+0CAAA,EAAA,CAAA,CAAA,CAAA"}
@@ -0,0 +1,13 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ /* empty css */
3
+ import { createElementBlock as t, createStaticVNode as n, openBlock as r } from "vue";
4
+ //#region src/components/AutosendPaused.vue
5
+ var i = {}, a = { class: "autosendPaused" };
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-d08225db><rect height=\"14.25\" rx=\"7.125\" width=\"14.25\" x=\"0.875\" y=\"0.875\" data-v-d08225db></rect><rect height=\"14.25\" rx=\"7.125\" stroke=\"currentColor\" stroke-width=\"1.5\" width=\"14.25\" x=\"0.875\" y=\"0.875\" data-v-d08225db></rect><g clip-path=\"url(#clip0_74_585)\" data-v-d08225db><path d=\"M10.75 5.5V10.5C10.75 10.6326 10.6973 10.7598 10.6036 10.8536C10.5098 10.9473 10.3826 11 10.25 11H9C8.86739 11 8.74021 10.9473 8.64645 10.8536C8.55268 10.7598 8.5 10.6326 8.5 10.5V5.5C8.5 5.36739 8.55268 5.24021 8.64645 5.14645C8.74021 5.05268 8.86739 5 9 5H10.25C10.3826 5 10.5098 5.05268 10.6036 5.14645C10.6973 5.24021 10.75 5.36739 10.75 5.5ZM7 5H5.75C5.61739 5 5.49021 5.05268 5.39645 5.14645C5.30268 5.24021 5.25 5.36739 5.25 5.5V10.5C5.25 10.6326 5.30268 10.7598 5.39645 10.8536C5.49021 10.9473 5.61739 11 5.75 11H7C7.13261 11 7.25979 10.9473 7.35355 10.8536C7.44732 10.7598 7.5 10.6326 7.5 10.5V5.5C7.5 5.36739 7.44732 5.24021 7.35355 5.14645C7.25979 5.05268 7.13261 5 7 5Z\" fill=\"currentColor\" data-v-d08225db></path></g><defs data-v-d08225db><clipPath id=\"clip0_74_585\" data-v-d08225db><rect height=\"8\" rx=\"4\" width=\"8\" x=\"4\" y=\"4\" data-v-d08225db></rect></clipPath></defs></svg> Accept Request to Continue ", 2)]]);
8
+ }
9
+ var s = /* @__PURE__ */ e(i, [["render", o], ["__scopeId", "data-v-d08225db"]]);
10
+ //#endregion
11
+ export { s as default };
12
+
13
+ //# sourceMappingURL=AutosendPaused.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutosendPaused.vue.js","names":[],"sources":["../../src/components/AutosendPaused.vue"],"sourcesContent":["<template>\n <div class=\"autosendPaused\">\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.5\"\n width=\"14.25\"\n x=\"0.875\"\n y=\"0.875\" />\n <g clip-path=\"url(#clip0_74_585)\">\n <path\n d=\"M10.75 5.5V10.5C10.75 10.6326 10.6973 10.7598 10.6036 10.8536C10.5098 10.9473 10.3826 11 10.25 11H9C8.86739 11 8.74021 10.9473 8.64645 10.8536C8.55268 10.7598 8.5 10.6326 8.5 10.5V5.5C8.5 5.36739 8.55268 5.24021 8.64645 5.14645C8.74021 5.05268 8.86739 5 9 5H10.25C10.3826 5 10.5098 5.05268 10.6036 5.14645C10.6973 5.24021 10.75 5.36739 10.75 5.5ZM7 5H5.75C5.61739 5 5.49021 5.05268 5.39645 5.14645C5.30268 5.24021 5.25 5.36739 5.25 5.5V10.5C5.25 10.6326 5.30268 10.7598 5.39645 10.8536C5.49021 10.9473 5.61739 11 5.75 11H7C7.13261 11 7.25979 10.9473 7.35355 10.8536C7.44732 10.7598 7.5 10.6326 7.5 10.5V5.5C7.5 5.36739 7.44732 5.24021 7.35355 5.14645C7.25979 5.05268 7.13261 5 7 5Z\"\n fill=\"currentColor\" />\n </g>\n <defs>\n <clipPath id=\"clip0_74_585\">\n <rect\n height=\"8\"\n rx=\"4\"\n width=\"8\"\n x=\"4\"\n y=\"4\" />\n </clipPath>\n </defs>\n </svg>\n Accept Request to Continue\n </div>\n</template>\n\n<style scoped>\n.autosendPaused {\n display: flex;\n align-items: center;\n gap: 6px;\n color: var(--scalar-color-blue);\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,kBAAgB;;aAA3B,EAsCM,OAtCN,GAsCM,CAAA,GAAA,AAAA,EAAA,OAAA,CAAA,EAAA,k1CAAA,EAAA,CAAA,CAAA,CAAA"}
@@ -0,0 +1,19 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ /* empty css */
3
+ import { createElementBlock as t, createElementVNode as n, createTextVNode as r, openBlock as i } from "vue";
4
+ //#region src/components/BuildingRequest.vue
5
+ var a = {}, o = { class: "buildingRequest" };
6
+ function s(e, a) {
7
+ return i(), t("div", o, [...a[0] ||= [n("div", { class: "playIcon" }, [n("svg", {
8
+ fill: "currentColor",
9
+ height: "32",
10
+ viewBox: "0 0 256 256",
11
+ width: "32",
12
+ xmlns: "http://www.w3.org/2000/svg"
13
+ }, [n("path", { d: "M240,128a15.74,15.74,0,0,1-7.6,13.51L88.32,229.65a16,16,0,0,1-16.2.3A15.86,15.86,0,0,1,64,216.13V39.87a15.86,15.86,0,0,1,8.12-13.82,16,16,0,0,1,16.2.3L232.4,114.49A15.74,15.74,0,0,1,240,128Z" })])], -1), r(" Building Request... ", -1)]]);
14
+ }
15
+ var c = /* @__PURE__ */ e(a, [["render", s], ["__scopeId", "data-v-5749c429"]]);
16
+ //#endregion
17
+ export { c as default };
18
+
19
+ //# sourceMappingURL=BuildingRequest.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuildingRequest.vue.js","names":[],"sources":["../../src/components/BuildingRequest.vue"],"sourcesContent":["<template>\n <div class=\"buildingRequest\">\n <div class=\"playIcon\">\n <svg\n fill=\"currentColor\"\n height=\"32\"\n viewBox=\"0 0 256 256\"\n width=\"32\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M240,128a15.74,15.74,0,0,1-7.6,13.51L88.32,229.65a16,16,0,0,1-16.2.3A15.86,15.86,0,0,1,64,216.13V39.87a15.86,15.86,0,0,1,8.12-13.82,16,16,0,0,1,16.2.3L232.4,114.49A15.74,15.74,0,0,1,240,128Z\"></path>\n </svg>\n </div>\n Building Request...\n </div>\n</template>\n\n<style scoped>\n.playIcon {\n padding: 4px;\n height: 16px;\n width: 16px;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n background: var(--scalar-background-1);\n border-radius: 50%;\n}\n\n.playIcon::before {\n content: '';\n width: 16px;\n height: 16px;\n display: inline-block;\n box-sizing: border-box;\n position: absolute;\n border-width: 1.75px;\n border-style: solid;\n border-color: currentcolor currentcolor transparent;\n border-image: initial;\n border-radius: 50%;\n background: var(--scalar-background-1);\n animation: 0.42s linear 0s infinite normal none running rotation;\n}\n\n.buildingRequest {\n display: flex;\n align-items: center;\n gap: 6px;\n color: var(--scalar-color-blue);\n font-weight: var(--scalar-semibold);\n min-height: 40px;\n font-size: var(--scalar-font-size-3);\n position: relative;\n}\n\n.buildingRequest svg {\n width: 100%;\n height: 100%;\n z-index: 1;\n border-radius: 50%;\n}\n\n@keyframes rotation {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n</style>\n"],"mappings":";;;;kBACO,OAAM,mBAAiB;;aAA5B,EAaM,OAbN,GAaM,CAAA,GAAA,AAAA,EAAA,OAAA,CAZJ,EAUM,OAAA,EAVD,OAAM,YAAU,EAAA,CACnB,EAQM,OAAA;EAPJ,MAAK;EACL,QAAO;EACP,SAAQ;EACR,OAAM;EACN,OAAM;KACN,EAC4M,QAAA,EAA1M,GAAE,kMAAgM,CAAA,CAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAElM,yBAER,GAAA,CAAA,CAAA,CAAA"}
@@ -0,0 +1,9 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./ContextItem.vue.script.js";
3
+ /* empty css */
4
+ //#region src/components/ContextItem.vue
5
+ var n = /* @__PURE__ */ e(t, [["__scopeId", "data-v-b6e5aa96"]]);
6
+ //#endregion
7
+ export { n as default };
8
+
9
+ //# sourceMappingURL=ContextItem.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContextItem.vue.js","names":[],"sources":["../../src/components/ContextItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\nconst { loading } = defineProps<{ loading: boolean }>()\n</script>\n\n<template>\n <div\n class=\"contextItem\"\n :class=\"{\n shimmer: loading,\n }\">\n <slot />\n </div>\n</template>\n\n<style scoped>\n.contextItem {\n font-size: 10px;\n display: inline-block;\n color: var(--scalar-color-2);\n cursor: pointer;\n vertical-align: middle;\n padding: 1px 8px;\n border-radius: 12px;\n padding: 5px 10px;\n display: flex;\n align-items: center;\n background: color-mix(\n in srgb,\n var(--scalar-background-2),\n var(--scalar-background-1)\n );\n}\n\n.shimmer {\n background: var(--scalar-background-2);\n background-image: linear-gradient(\n 90deg,\n #202020 0%,\n var(--scalar-background-2) 40%,\n var(--scalar-background-3) 80%\n );\n background-size: 200% 100%;\n animation: shimmer 1.4s ease-in-out infinite;\n}\n\n.light-mode .shimmer {\n background: var(--scalar-background-2);\n background-image: linear-gradient(\n 90deg,\n #fafafa 0%,\n var(--scalar-background-2) 40%,\n var(--scalar-background-3) 80%\n );\n background-size: 200% 100%;\n animation: shimmer 1.4s ease-in-out infinite;\n}\n\n@keyframes shimmer {\n 0% {\n background-position: 200% 0;\n }\n 100% {\n background-position: -200% 0;\n }\n}\n</style>\n"],"mappings":""}