@scalar/agent-chat 0.1.2 → 0.2.0

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 (292) hide show
  1. package/{dist/App.vue.d.ts → App.vue.d.ts} +2 -2
  2. package/App.vue.d.ts.map +1 -0
  3. package/{dist/App.vue.js → App.vue.js} +9 -3
  4. package/App.vue.js.map +1 -0
  5. package/{dist/Chat.vue.js → Chat.vue.js} +3 -3
  6. package/Chat.vue.js.map +1 -0
  7. package/components/ApprovalSection.vue.d.ts +9 -0
  8. package/components/ApprovalSection.vue.d.ts.map +1 -0
  9. package/components/ApprovalSection.vue.js +8 -0
  10. package/components/ApprovalSection.vue.js.map +1 -0
  11. package/components/ApprovalSection.vue2.js +47 -0
  12. package/components/ApprovalSection.vue2.js.map +1 -0
  13. package/components/AutosendPaused.vue.d.ts +3 -0
  14. package/components/AutosendPaused.vue.d.ts.map +1 -0
  15. package/components/AutosendPaused.vue.js +15 -0
  16. package/components/AutosendPaused.vue.js.map +1 -0
  17. package/{dist/components → components}/ContextItem.vue.d.ts.map +1 -1
  18. package/{dist/components → components}/ContextItem.vue.js +1 -1
  19. package/{dist/components → components}/ContextItem.vue2.js +1 -1
  20. package/components/ContextItem.vue2.js.map +1 -0
  21. package/components/ErrorMessage.vue.d.ts +6 -0
  22. package/components/ErrorMessage.vue.d.ts.map +1 -0
  23. package/components/ErrorMessage.vue.js +8 -0
  24. package/components/ErrorMessage.vue.js.map +1 -0
  25. package/components/ErrorMessage.vue2.js +28 -0
  26. package/components/ErrorMessage.vue2.js.map +1 -0
  27. package/{dist/components → components}/LoadingMiniOpenAPIDoc.vue.d.ts.map +1 -1
  28. package/components/LoadingMiniOpenAPIDoc.vue.js +16 -0
  29. package/components/LoadingMiniOpenAPIDoc.vue.js.map +1 -0
  30. package/components/LoadingOpenAPISpecsSummary.vue.d.ts +3 -0
  31. package/components/LoadingOpenAPISpecsSummary.vue.d.ts.map +1 -0
  32. package/components/LoadingOpenAPISpecsSummary.vue.js +16 -0
  33. package/components/LoadingOpenAPISpecsSummary.vue.js.map +1 -0
  34. package/components/RequestApproved.vue.d.ts +3 -0
  35. package/components/RequestApproved.vue.d.ts.map +1 -0
  36. package/components/RequestApproved.vue.js +15 -0
  37. package/components/RequestApproved.vue.js.map +1 -0
  38. package/components/RequestFailed.vue.d.ts +3 -0
  39. package/components/RequestFailed.vue.d.ts.map +1 -0
  40. package/components/RequestFailed.vue.js +26 -0
  41. package/components/RequestFailed.vue.js.map +1 -0
  42. package/components/RequestPreview.vue.d.ts +10 -0
  43. package/components/RequestPreview.vue.d.ts.map +1 -0
  44. package/components/RequestPreview.vue.js +9 -0
  45. package/components/RequestPreview.vue.js.map +1 -0
  46. package/components/RequestPreview.vue2.js +150 -0
  47. package/components/RequestPreview.vue2.js.map +1 -0
  48. package/components/RequestRejected.vue.d.ts +3 -0
  49. package/components/RequestRejected.vue.d.ts.map +1 -0
  50. package/components/RequestRejected.vue.js +24 -0
  51. package/components/RequestRejected.vue.js.map +1 -0
  52. package/components/RequestSuccess.vue.d.ts +3 -0
  53. package/components/RequestSuccess.vue.d.ts.map +1 -0
  54. package/components/RequestSuccess.vue.js +15 -0
  55. package/components/RequestSuccess.vue.js.map +1 -0
  56. package/components/ResponseBody/ResponseBody.vue.d.ts +15 -0
  57. package/components/ResponseBody/ResponseBody.vue.d.ts.map +1 -0
  58. package/components/ResponseBody/ResponseBody.vue.js +45 -0
  59. package/components/ResponseBody/ResponseBody.vue.js.map +1 -0
  60. package/components/ResponseBody/ResponseBody.vue2.js +5 -0
  61. package/components/ResponseBody/ResponseBody.vue2.js.map +1 -0
  62. package/components/ResponseBody/ResponseBodyInfo.vue.d.ts +13 -0
  63. package/components/ResponseBody/ResponseBodyInfo.vue.d.ts.map +1 -0
  64. package/components/ResponseBody/ResponseBodyInfo.vue.js +17 -0
  65. package/components/ResponseBody/ResponseBodyInfo.vue.js.map +1 -0
  66. package/components/ResponseBody/ResponseBodyPreview.vue.d.ts +10 -0
  67. package/components/ResponseBody/ResponseBodyPreview.vue.d.ts.map +1 -0
  68. package/components/ResponseBody/ResponseBodyPreview.vue.js +8 -0
  69. package/components/ResponseBody/ResponseBodyPreview.vue.js.map +1 -0
  70. package/components/ResponseBody/ResponseBodyPreview.vue2.js +73 -0
  71. package/components/ResponseBody/ResponseBodyPreview.vue2.js.map +1 -0
  72. package/components/ResponseBody/ResponseBodyRaw.vue.d.ts +7 -0
  73. package/components/ResponseBody/ResponseBodyRaw.vue.d.ts.map +1 -0
  74. package/components/ResponseBody/ResponseBodyRaw.vue.js +23 -0
  75. package/components/ResponseBody/ResponseBodyRaw.vue.js.map +1 -0
  76. package/components/ResponseBody/ResponseBodyRaw.vue2.js +5 -0
  77. package/components/ResponseBody/ResponseBodyRaw.vue2.js.map +1 -0
  78. package/components/ResponseBody/ResponseBodyToggle.vue.d.ts +10 -0
  79. package/components/ResponseBody/ResponseBodyToggle.vue.d.ts.map +1 -0
  80. package/components/ResponseBody/ResponseBodyToggle.vue.js +30 -0
  81. package/components/ResponseBody/ResponseBodyToggle.vue.js.map +1 -0
  82. package/components/ResponseBody/ResponseBodyToggle.vue2.js +5 -0
  83. package/components/ResponseBody/ResponseBodyToggle.vue2.js.map +1 -0
  84. package/components/ResponseBody/helpers/media-types.d.ts +15 -0
  85. package/components/ResponseBody/helpers/media-types.d.ts.map +1 -0
  86. package/components/ResponseBody/helpers/media-types.js +134 -0
  87. package/components/ResponseBody/helpers/media-types.js.map +1 -0
  88. package/components/ResponseBody/helpers/process-response-body.d.ts +10 -0
  89. package/components/ResponseBody/helpers/process-response-body.d.ts.map +1 -0
  90. package/components/ResponseBody/helpers/process-response-body.js +63 -0
  91. package/components/ResponseBody/helpers/process-response-body.js.map +1 -0
  92. package/components/SearchPopover.vue.d.ts +13 -0
  93. package/components/SearchPopover.vue.d.ts.map +1 -0
  94. package/components/SearchPopover.vue.js +8 -0
  95. package/components/SearchPopover.vue.js.map +1 -0
  96. package/components/SearchPopover.vue2.js +78 -0
  97. package/components/SearchPopover.vue2.js.map +1 -0
  98. package/{dist/components → components}/SendingRequest.vue.d.ts.map +1 -1
  99. package/{dist/components → components}/SendingRequest.vue.js +1 -1
  100. package/{dist/components → components}/SendingRequest.vue.js.map +1 -1
  101. package/{dist/components → components}/Suggestion.vue.d.ts.map +1 -1
  102. package/{dist/components → components}/Suggestion.vue.js +1 -1
  103. package/{dist/components → components}/Suggestion.vue2.js +1 -1
  104. package/{dist/components → components}/Suggestion.vue2.js.map +1 -1
  105. package/{dist/components → components}/TestRequestButton.vue2.js +1 -1
  106. package/{dist/components → components}/TestRequestButton.vue2.js.map +1 -1
  107. package/helpers.d.ts +418 -0
  108. package/helpers.d.ts.map +1 -0
  109. package/helpers.js +201 -0
  110. package/helpers.js.map +1 -0
  111. package/hooks/useChatApprovals.d.ts +24 -0
  112. package/hooks/useChatApprovals.d.ts.map +1 -0
  113. package/hooks/useChatApprovals.js +25 -0
  114. package/hooks/useChatApprovals.js.map +1 -0
  115. package/{dist/hooks → hooks}/useChatOperationBlocks.js +1 -1
  116. package/hooks/useSearch.d.ts +26 -0
  117. package/hooks/useSearch.d.ts.map +1 -0
  118. package/hooks/useSearch.js +36 -0
  119. package/hooks/useSearch.js.map +1 -0
  120. package/package.json +3 -36
  121. package/registry/add-documents-to-store.d.ts +21 -0
  122. package/registry/add-documents-to-store.d.ts.map +1 -0
  123. package/registry/add-documents-to-store.js +42 -0
  124. package/registry/add-documents-to-store.js.map +1 -0
  125. package/{dist/state → state}/state.d.ts +29 -14
  126. package/state/state.d.ts.map +1 -0
  127. package/{dist/state → state}/state.js +45 -40
  128. package/state/state.js.map +1 -0
  129. package/{dist/style.css → style.css} +686 -234
  130. package/{dist/views → views}/Chat/Chat.vue.d.ts.map +1 -1
  131. package/{dist/views → views}/Chat/Chat.vue.js +1 -1
  132. package/{dist/views → views}/Chat/Chat.vue2.js +17 -5
  133. package/views/Chat/Chat.vue2.js.map +1 -0
  134. package/{dist/views → views}/Chat/Messages/ExecuteRequestTool.vue.d.ts.map +1 -1
  135. package/{dist/views → views}/Chat/Messages/ExecuteRequestTool.vue.js +1 -1
  136. package/views/Chat/Messages/ExecuteRequestTool.vue2.js +39 -0
  137. package/views/Chat/Messages/ExecuteRequestTool.vue2.js.map +1 -0
  138. package/{dist/views → views}/Chat/Messages/GetMiniOpenAPIDocTool.vue.d.ts.map +1 -1
  139. package/{dist/views → views}/Chat/Messages/GetMiniOpenAPIDocTool.vue.js +1 -1
  140. package/{dist/views → views}/Chat/Messages/GetMiniOpenAPIDocTool.vue2.js +2 -3
  141. package/views/Chat/Messages/GetMiniOpenAPIDocTool.vue2.js.map +1 -0
  142. package/views/Chat/Messages/GetOpenAPISpecsSummary.vue.d.ts +11 -0
  143. package/views/Chat/Messages/GetOpenAPISpecsSummary.vue.d.ts.map +1 -0
  144. package/views/Chat/Messages/GetOpenAPISpecsSummary.vue.js +32 -0
  145. package/views/Chat/Messages/GetOpenAPISpecsSummary.vue.js.map +1 -0
  146. package/views/Chat/Messages/GetOpenAPISpecsSummary.vue2.js +5 -0
  147. package/views/Chat/Messages/GetOpenAPISpecsSummary.vue2.js.map +1 -0
  148. package/{dist/views → views}/Chat/Messages/Text.vue.js +1 -1
  149. package/{dist/views → views}/Chat/Messages/Text.vue.js.map +1 -1
  150. package/views/Layout.vue.d.ts.map +1 -0
  151. package/{dist/views → views}/Layout.vue.js +1 -1
  152. package/{dist/views → views}/Layout.vue2.js +0 -4
  153. package/views/Layout.vue2.js.map +1 -0
  154. package/{dist/views → views}/PromptForm.vue.d.ts.map +1 -1
  155. package/{dist/views → views}/PromptForm.vue.js +1 -1
  156. package/views/PromptForm.vue2.js +182 -0
  157. package/views/PromptForm.vue2.js.map +1 -0
  158. package/{dist/views → views/Settings}/Auth.vue.d.ts +1 -0
  159. package/views/Settings/Auth.vue.d.ts.map +1 -0
  160. package/{dist/views → views/Settings}/Auth.vue.js +21 -26
  161. package/views/Settings/Auth.vue.js.map +1 -0
  162. package/views/Settings/DocSettings.vue.d.ts +8 -0
  163. package/views/Settings/DocSettings.vue.d.ts.map +1 -0
  164. package/views/Settings/DocSettings.vue.js +8 -0
  165. package/views/Settings/DocSettings.vue.js.map +1 -0
  166. package/views/Settings/DocSettings.vue2.js +50 -0
  167. package/views/Settings/DocSettings.vue2.js.map +1 -0
  168. package/views/Settings/Settings.vue.d.ts.map +1 -0
  169. package/{dist/views → views/Settings}/Settings.vue.js +2 -2
  170. package/views/Settings/Settings.vue2.js +78 -0
  171. package/views/Settings/Settings.vue2.js.map +1 -0
  172. package/views/Start.vue.d.ts.map +1 -0
  173. package/{dist/views → views}/Start.vue.js +1 -1
  174. package/{dist/views → views}/Start.vue2.js +0 -1
  175. package/views/Start.vue2.js.map +1 -0
  176. package/dist/App.vue.d.ts.map +0 -1
  177. package/dist/App.vue.js.map +0 -1
  178. package/dist/Chat.vue.js.map +0 -1
  179. package/dist/components/ContextItem.vue2.js.map +0 -1
  180. package/dist/components/LoadingMiniOpenAPIDoc.vue.js +0 -32
  181. package/dist/components/LoadingMiniOpenAPIDoc.vue.js.map +0 -1
  182. package/dist/helpers.d.ts +0 -39
  183. package/dist/helpers.d.ts.map +0 -1
  184. package/dist/helpers.js +0 -111
  185. package/dist/helpers.js.map +0 -1
  186. package/dist/hooks/useActiveServer.d.ts +0 -2
  187. package/dist/hooks/useActiveServer.d.ts.map +0 -1
  188. package/dist/hooks/useActiveServer.js +0 -20
  189. package/dist/hooks/useActiveServer.js.map +0 -1
  190. package/dist/hooks/useSecuritySchemes.d.ts +0 -2
  191. package/dist/hooks/useSecuritySchemes.d.ts.map +0 -1
  192. package/dist/hooks/useSecuritySchemes.js +0 -29
  193. package/dist/hooks/useSecuritySchemes.js.map +0 -1
  194. package/dist/node_modules/.pnpm/zod@4.1.11/node_modules/zod/v4/core/api.js +0 -11
  195. package/dist/node_modules/.pnpm/zod@4.1.11/node_modules/zod/v4/core/api.js.map +0 -1
  196. package/dist/node_modules/.pnpm/zod@4.1.11/node_modules/zod/v4/core/core.js +0 -58
  197. package/dist/node_modules/.pnpm/zod@4.1.11/node_modules/zod/v4/core/core.js.map +0 -1
  198. package/dist/node_modules/.pnpm/zod@4.1.11/node_modules/zod/v4/core/errors.js +0 -25
  199. package/dist/node_modules/.pnpm/zod@4.1.11/node_modules/zod/v4/core/errors.js.map +0 -1
  200. package/dist/node_modules/.pnpm/zod@4.1.11/node_modules/zod/v4/core/parse.js +0 -64
  201. package/dist/node_modules/.pnpm/zod@4.1.11/node_modules/zod/v4/core/parse.js.map +0 -1
  202. package/dist/node_modules/.pnpm/zod@4.1.11/node_modules/zod/v4/core/regexes.js +0 -8
  203. package/dist/node_modules/.pnpm/zod@4.1.11/node_modules/zod/v4/core/regexes.js.map +0 -1
  204. package/dist/node_modules/.pnpm/zod@4.1.11/node_modules/zod/v4/core/schemas.js +0 -181
  205. package/dist/node_modules/.pnpm/zod@4.1.11/node_modules/zod/v4/core/schemas.js.map +0 -1
  206. package/dist/node_modules/.pnpm/zod@4.1.11/node_modules/zod/v4/core/util.js +0 -61
  207. package/dist/node_modules/.pnpm/zod@4.1.11/node_modules/zod/v4/core/util.js.map +0 -1
  208. package/dist/node_modules/.pnpm/zod@4.1.11/node_modules/zod/v4/core/versions.js +0 -9
  209. package/dist/node_modules/.pnpm/zod@4.1.11/node_modules/zod/v4/core/versions.js.map +0 -1
  210. package/dist/node_modules/.pnpm/zod@4.1.11/node_modules/zod/v4/mini/schemas.js +0 -60
  211. package/dist/node_modules/.pnpm/zod@4.1.11/node_modules/zod/v4/mini/schemas.js.map +0 -1
  212. package/dist/package.json +0 -63
  213. package/dist/registry/get-document.d.ts +0 -4
  214. package/dist/registry/get-document.d.ts.map +0 -1
  215. package/dist/registry/get-document.js +0 -23
  216. package/dist/registry/get-document.js.map +0 -1
  217. package/dist/state/state.d.ts.map +0 -1
  218. package/dist/state/state.js.map +0 -1
  219. package/dist/views/Auth.vue.d.ts.map +0 -1
  220. package/dist/views/Auth.vue.js.map +0 -1
  221. package/dist/views/Chat/Chat.vue2.js.map +0 -1
  222. package/dist/views/Chat/Messages/ExecuteRequestTool.vue2.js +0 -62
  223. package/dist/views/Chat/Messages/ExecuteRequestTool.vue2.js.map +0 -1
  224. package/dist/views/Chat/Messages/GetMiniOpenAPIDocTool.vue2.js.map +0 -1
  225. package/dist/views/Layout.vue.d.ts.map +0 -1
  226. package/dist/views/Layout.vue2.js.map +0 -1
  227. package/dist/views/PromptForm.vue2.js +0 -125
  228. package/dist/views/PromptForm.vue2.js.map +0 -1
  229. package/dist/views/Settings.vue.d.ts.map +0 -1
  230. package/dist/views/Settings.vue2.js +0 -81
  231. package/dist/views/Settings.vue2.js.map +0 -1
  232. package/dist/views/Start.vue.d.ts.map +0 -1
  233. package/dist/views/Start.vue2.js.map +0 -1
  234. /package/{dist/App.vue2.js → App.vue2.js} +0 -0
  235. /package/{dist/App.vue2.js.map → App.vue2.js.map} +0 -0
  236. /package/{dist/Chat.vue.d.ts → Chat.vue.d.ts} +0 -0
  237. /package/{dist/Chat.vue.d.ts.map → Chat.vue.d.ts.map} +0 -0
  238. /package/{dist/Chat.vue2.js → Chat.vue2.js} +0 -0
  239. /package/{dist/Chat.vue2.js.map → Chat.vue2.js.map} +0 -0
  240. /package/{dist/_virtual → _virtual}/_plugin-vue_export-helper.js +0 -0
  241. /package/{dist/_virtual → _virtual}/_plugin-vue_export-helper.js.map +0 -0
  242. /package/{dist/components → components}/ContextItem.vue.d.ts +0 -0
  243. /package/{dist/components → components}/ContextItem.vue.js.map +0 -0
  244. /package/{dist/components → components}/Endpoint.vue.d.ts +0 -0
  245. /package/{dist/components → components}/Endpoint.vue.d.ts.map +0 -0
  246. /package/{dist/components → components}/Endpoint.vue.js +0 -0
  247. /package/{dist/components → components}/Endpoint.vue.js.map +0 -0
  248. /package/{dist/components → components}/Endpoint.vue2.js +0 -0
  249. /package/{dist/components → components}/Endpoint.vue2.js.map +0 -0
  250. /package/{dist/components → components}/LoadingMiniOpenAPIDoc.vue.d.ts +0 -0
  251. /package/{dist/components → components}/Logo.vue.d.ts +0 -0
  252. /package/{dist/components → components}/Logo.vue.d.ts.map +0 -0
  253. /package/{dist/components → components}/Logo.vue.js +0 -0
  254. /package/{dist/components → components}/Logo.vue.js.map +0 -0
  255. /package/{dist/components → components}/SendingRequest.vue.d.ts +0 -0
  256. /package/{dist/components → components}/Suggestion.vue.d.ts +0 -0
  257. /package/{dist/components → components}/Suggestion.vue.js.map +0 -0
  258. /package/{dist/components → components}/TestRequestButton.vue.d.ts +0 -0
  259. /package/{dist/components → components}/TestRequestButton.vue.d.ts.map +0 -0
  260. /package/{dist/components → components}/TestRequestButton.vue.js +0 -0
  261. /package/{dist/components → components}/TestRequestButton.vue.js.map +0 -0
  262. /package/{dist/hooks → hooks}/useChatOperationBlocks.d.ts +0 -0
  263. /package/{dist/hooks → hooks}/useChatOperationBlocks.d.ts.map +0 -0
  264. /package/{dist/hooks → hooks}/useChatOperationBlocks.js.map +0 -0
  265. /package/{dist/hooks → hooks}/useChatScroll.d.ts +0 -0
  266. /package/{dist/hooks → hooks}/useChatScroll.d.ts.map +0 -0
  267. /package/{dist/hooks → hooks}/useChatScroll.js +0 -0
  268. /package/{dist/hooks → hooks}/useChatScroll.js.map +0 -0
  269. /package/{dist/index.d.ts → index.d.ts} +0 -0
  270. /package/{dist/index.d.ts.map → index.d.ts.map} +0 -0
  271. /package/{dist/index.js → index.js} +0 -0
  272. /package/{dist/index.js.map → index.js.map} +0 -0
  273. /package/{dist/views → views}/Chat/Chat.vue.d.ts +0 -0
  274. /package/{dist/views → views}/Chat/Chat.vue.js.map +0 -0
  275. /package/{dist/views → views}/Chat/Messages/ExecuteRequestTool.vue.d.ts +0 -0
  276. /package/{dist/views → views}/Chat/Messages/ExecuteRequestTool.vue.js.map +0 -0
  277. /package/{dist/views → views}/Chat/Messages/GetMiniOpenAPIDocTool.vue.d.ts +0 -0
  278. /package/{dist/views → views}/Chat/Messages/GetMiniOpenAPIDocTool.vue.js.map +0 -0
  279. /package/{dist/views → views}/Chat/Messages/Text.vue.d.ts +0 -0
  280. /package/{dist/views → views}/Chat/Messages/Text.vue.d.ts.map +0 -0
  281. /package/{dist/views → views}/Chat/Messages/Text.vue2.js +0 -0
  282. /package/{dist/views → views}/Chat/Messages/Text.vue2.js.map +0 -0
  283. /package/{dist/views → views}/Layout.vue.d.ts +0 -0
  284. /package/{dist/views → views}/Layout.vue.js.map +0 -0
  285. /package/{dist/views → views}/PromptForm.vue.d.ts +0 -0
  286. /package/{dist/views → views}/PromptForm.vue.js.map +0 -0
  287. /package/{dist/views → views/Settings}/Auth.vue2.js +0 -0
  288. /package/{dist/views → views/Settings}/Auth.vue2.js.map +0 -0
  289. /package/{dist/views → views/Settings}/Settings.vue.d.ts +0 -0
  290. /package/{dist/views → views/Settings}/Settings.vue.js.map +0 -0
  291. /package/{dist/views → views}/Start.vue.d.ts +0 -0
  292. /package/{dist/views → views}/Start.vue.js.map +0 -0
@@ -1,11 +1,13 @@
1
1
  import { defineComponent, computed, watch, createBlock, createCommentVNode, openBlock, unref } from "vue";
2
2
  import { AuthSelector } from "@scalar/api-client/v2/blocks/scalar-auth-selector-block";
3
3
  import { getSecurityRequirements, getSelectedSecurity } from "@scalar/api-client/v2/features/operation";
4
- import { getDefaultSecurity } from "../helpers.js";
4
+ import { useState } from "../../state/state.js";
5
+ import { authStorage, restoreAuthSecretsFromStorage } from "../../helpers.js";
5
6
  const _sfc_main = /* @__PURE__ */ defineComponent({
6
7
  __name: "Auth",
7
8
  props: {
8
9
  options: {},
10
+ name: {},
9
11
  document: {},
10
12
  eventBus: {},
11
13
  securitySchemes: {},
@@ -13,6 +15,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
13
15
  environment: {}
14
16
  },
15
17
  setup(__props) {
18
+ const { workspaceStore } = useState();
16
19
  const securityRequirements = computed(
17
20
  () => getSecurityRequirements(__props.document?.security)
18
21
  );
@@ -24,42 +27,34 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
24
27
  )
25
28
  );
26
29
  watch(
27
- () => __props.document?.["x-scalar-selected-security"],
28
- (documentSelectedSecurity) => {
29
- if (typeof documentSelectedSecurity !== "undefined") {
30
- return;
30
+ [() => selectedSecurity, () => __props.securitySchemes],
31
+ () => {
32
+ const authPersistence = authStorage();
33
+ authPersistence.setSchemas(__props.name, __props.securitySchemes);
34
+ if (selectedSecurity.value) {
35
+ authPersistence.setSelectedSchemes(__props.name, {
36
+ "x-scalar-selected-security": selectedSecurity.value
37
+ });
31
38
  }
32
- const defaultSecurity = getDefaultSecurity(
33
- securityRequirements.value,
34
- __props.options.authentication?.preferredSecurityScheme,
35
- __props.securitySchemes
36
- );
37
- if (!defaultSecurity) {
38
- return;
39
- }
40
- __props.eventBus.emit("auth:update:selected-security-schemes", {
41
- selectedRequirements: [defaultSecurity],
42
- newSchemes: [],
43
- meta: { type: "document" }
44
- });
39
+ restoreAuthSecretsFromStorage({ documentName: __props.name, workspaceStore });
45
40
  },
46
- { immediate: true }
41
+ { deep: true }
47
42
  );
48
43
  return (_ctx, _cache) => {
49
- return Object.keys(_ctx.securitySchemes).length ? (openBlock(), createBlock(unref(AuthSelector), {
44
+ return Object.keys(__props.securitySchemes).length ? (openBlock(), createBlock(unref(AuthSelector), {
50
45
  key: 0,
51
- environment: _ctx.environment,
52
- eventBus: _ctx.eventBus,
46
+ environment: __props.environment,
47
+ eventBus: __props.eventBus,
53
48
  isReadOnly: "",
54
49
  isStatic: "",
55
50
  layout: "reference",
56
51
  meta: { type: "document" },
57
- persistAuth: _ctx.options.persistAuth,
58
- proxyUrl: _ctx.options.proxyUrl ?? "",
52
+ persistAuth: __props.options.persistAuth,
53
+ proxyUrl: __props.options.proxyUrl ?? "",
59
54
  securityRequirements: securityRequirements.value,
60
- securitySchemes: _ctx.securitySchemes,
55
+ securitySchemes: __props.securitySchemes,
61
56
  selectedSecurity: selectedSecurity.value,
62
- server: _ctx.selectedServer,
57
+ server: __props.selectedServer,
63
58
  title: "Authentication"
64
59
  }, null, 8, ["environment", "eventBus", "persistAuth", "proxyUrl", "securityRequirements", "securitySchemes", "selectedSecurity", "server"])) : createCommentVNode("", true);
65
60
  };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Auth.vue.js","sources":["../../../src/views/Settings/Auth.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, watch } from 'vue'\n\nimport {\n AuthSelector,\n type MergedSecuritySchemes,\n} from '@scalar/api-client/v2/blocks/scalar-auth-selector-block'\nimport {\n getSecurityRequirements,\n getSelectedSecurity,\n} from '@scalar/api-client/v2/features/operation'\nimport type { ApiReferenceConfigurationRaw } from '@scalar/types/api-reference'\nimport type { WorkspaceEventBus } from '@scalar/workspace-store/events'\nimport type { XScalarEnvironment } from '@scalar/workspace-store/schemas/extensions/document/x-scalar-environments'\nimport type { ServerObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport type { WorkspaceDocument } from '@scalar/workspace-store/schemas/workspace'\n\nimport { useState } from '@/state/state'\n\nimport { authStorage, restoreAuthSecretsFromStorage } from '../../helpers'\n\nconst { document, name, environment, eventBus, options, securitySchemes } =\n defineProps<{\n options: Pick<\n ApiReferenceConfigurationRaw,\n 'authentication' | 'persistAuth' | 'proxyUrl'\n >\n name: string\n document: WorkspaceDocument | undefined\n eventBus: WorkspaceEventBus\n securitySchemes: MergedSecuritySchemes\n selectedServer: ServerObject | null\n environment: XScalarEnvironment\n }>()\n\nconst { workspaceStore } = useState()\n\n/** Compute what the security requirements should be for the document */\nconst securityRequirements = computed(() =>\n getSecurityRequirements(document?.security),\n)\n\n/** The selected security keys for the document */\nconst selectedSecurity = computed(() =>\n getSelectedSecurity(\n document?.['x-scalar-selected-security'],\n undefined,\n securityRequirements.value,\n ),\n)\n\nwatch(\n [() => selectedSecurity, () => securitySchemes],\n () => {\n const authPersistence = authStorage()\n\n authPersistence.setSchemas(name, securitySchemes)\n\n if (selectedSecurity.value) {\n authPersistence.setSelectedSchemes(name, {\n 'x-scalar-selected-security': selectedSecurity.value,\n })\n }\n\n restoreAuthSecretsFromStorage({ documentName: name, workspaceStore })\n },\n { deep: true },\n)\n</script>\n<template>\n <AuthSelector\n v-if=\"Object.keys(securitySchemes).length\"\n :environment\n :eventBus\n isReadOnly\n isStatic\n layout=\"reference\"\n :meta=\"{ type: 'document' }\"\n :persistAuth=\"options.persistAuth\"\n :proxyUrl=\"options.proxyUrl ?? ''\"\n :securityRequirements\n :securitySchemes\n :selectedSecurity\n :server=\"selectedServer\"\n title=\"Authentication\" />\n</template>\n"],"names":["_createBlock","_unref"],"mappings":";;;;;;;;;;;;;;;;;AAmCA,UAAM,EAAE,eAAA,IAAmB,SAAA;AAG3B,UAAM,uBAAuB;AAAA,MAAS,MACpC,wBAAwB,kBAAU,QAAQ;AAAA,IAAA;AAI5C,UAAM,mBAAmB;AAAA,MAAS,MAChC;AAAA,QACE,QAAA,WAAW,4BAA4B;AAAA,QACvC;AAAA,QACA,qBAAqB;AAAA,MAAA;AAAA,IACvB;AAGF;AAAA,MACE,CAAC,MAAM,kBAAkB,MAAM,uBAAe;AAAA,MAC9C,MAAM;AACJ,cAAM,kBAAkB,YAAA;AAExB,wBAAgB,WAAW,QAAA,MAAM,QAAA,eAAe;AAEhD,YAAI,iBAAiB,OAAO;AAC1B,0BAAgB,mBAAmB,QAAA,MAAM;AAAA,YACvC,8BAA8B,iBAAiB;AAAA,UAAA,CAChD;AAAA,QACH;AAEA,sCAA8B,EAAE,cAAc,QAAA,MAAM,gBAAgB;AAAA,MACtE;AAAA,MACA,EAAE,MAAM,KAAA;AAAA,IAAK;;AAKL,aAAA,OAAO,KAAK,QAAA,eAAe,EAAE,uBADrCA,YAc2BC,MAAA,YAAA,GAAA;AAAA;QAZxB,aAAA,QAAA;AAAA,QACA,UAAA,QAAA;AAAA,QACD,YAAA;AAAA,QACA,UAAA;AAAA,QACA,QAAO;AAAA,QACN,MAAM,EAAA,MAAA,WAAA;AAAA,QACN,aAAa,QAAA,QAAQ;AAAA,QACrB,UAAU,QAAA,QAAQ,YAAQ;AAAA,QAC1B,sBAAA,qBAAA;AAAA,QACA,iBAAA,QAAA;AAAA,QACA,kBAAA,iBAAA;AAAA,QACA,QAAQ,QAAA;AAAA,QACT,OAAM;AAAA,MAAA;;;;"}
@@ -0,0 +1,8 @@
1
+ import { type WorkspaceDocument } from '@scalar/workspace-store/schemas/workspace';
2
+ type __VLS_Props = {
3
+ document: WorkspaceDocument;
4
+ name: string;
5
+ };
6
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
7
+ export default _default;
8
+ //# sourceMappingURL=DocSettings.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocSettings.vue.d.ts","sourceRoot":"","sources":["../../../src/views/Settings/DocSettings.vue"],"names":[],"mappings":"AAwEA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,2CAA2C,CAAA;AAKlF,KAAK,WAAW,GAAG;IACjB,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,IAAI,EAAE,MAAM,CAAA;CACb,CAAC;;AAmGF,wBAEG"}
@@ -0,0 +1,8 @@
1
+ import _sfc_main from "./DocSettings.vue2.js";
2
+ /* empty css */
3
+ import _export_sfc from "../../_virtual/_plugin-vue_export-helper.js";
4
+ const DocSettings = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-7e19eeee"]]);
5
+ export {
6
+ DocSettings as default
7
+ };
8
+ //# sourceMappingURL=DocSettings.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocSettings.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,50 @@
1
+ import { defineComponent, computed, createElementBlock, openBlock, createElementVNode, createVNode, unref } from "vue";
2
+ import { getSelectedServer } from "@scalar/api-client/v2/features/operation";
3
+ import { getActiveEnvironment } from "@scalar/api-client/v2/helpers";
4
+ import { ServerSelector } from "@scalar/api-reference/blocks";
5
+ import { useState } from "../../state/state.js";
6
+ import _sfc_main$1 from "./Auth.vue.js";
7
+ const _hoisted_1 = { class: "docSettings" };
8
+ const _sfc_main = /* @__PURE__ */ defineComponent({
9
+ __name: "DocSettings",
10
+ props: {
11
+ document: {},
12
+ name: {}
13
+ },
14
+ setup(__props) {
15
+ const { workspaceStore, config, eventBus } = useState();
16
+ const environment = computed(
17
+ () => getActiveEnvironment(workspaceStore, __props.document)
18
+ );
19
+ const selectedServer = computed(() => getSelectedServer(__props.document));
20
+ const securitySchemes = computed(
21
+ () => __props.document.components?.securitySchemes ?? {}
22
+ );
23
+ return (_ctx, _cache) => {
24
+ return openBlock(), createElementBlock("div", _hoisted_1, [
25
+ createElementVNode("div", null, [
26
+ createVNode(unref(ServerSelector), {
27
+ eventBus: unref(eventBus),
28
+ selectedServer: selectedServer.value,
29
+ servers: __props.document.servers ?? []
30
+ }, null, 8, ["eventBus", "selectedServer", "servers"])
31
+ ]),
32
+ createElementVNode("div", null, [
33
+ createVNode(_sfc_main$1, {
34
+ document: __props.document,
35
+ environment: environment.value,
36
+ eventBus: unref(eventBus),
37
+ name: __props.name,
38
+ options: unref(config),
39
+ securitySchemes: securitySchemes.value,
40
+ selectedServer: selectedServer.value
41
+ }, null, 8, ["document", "environment", "eventBus", "name", "options", "securitySchemes", "selectedServer"])
42
+ ])
43
+ ]);
44
+ };
45
+ }
46
+ });
47
+ export {
48
+ _sfc_main as default
49
+ };
50
+ //# sourceMappingURL=DocSettings.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocSettings.vue2.js","sources":["../../../src/views/Settings/DocSettings.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\n\nimport { getSelectedServer } from '@scalar/api-client/v2/features/operation'\nimport { getActiveEnvironment } from '@scalar/api-client/v2/helpers'\nimport { ServerSelector } from '@scalar/api-reference/blocks'\nimport { type WorkspaceDocument } from '@scalar/workspace-store/schemas/workspace'\n\nimport { useState } from '@/state/state'\nimport Auth from '@/views/Settings/Auth.vue'\n\nconst { document, name } = defineProps<{\n document: WorkspaceDocument\n name: string\n}>()\n\nconst { workspaceStore, config, eventBus } = useState()\n\nconst environment = computed(() =>\n getActiveEnvironment(workspaceStore, document),\n)\n\nconst selectedServer = computed(() => getSelectedServer(document))\n\nconst securitySchemes = computed(\n () => document.components?.securitySchemes ?? {},\n)\n</script>\n\n<template>\n <div class=\"docSettings\">\n <div>\n <ServerSelector\n :eventBus\n :selectedServer\n :servers=\"document.servers ?? []\" />\n </div>\n <div>\n <Auth\n :document\n :environment\n :eventBus\n :name\n :options=\"config\"\n :securitySchemes\n :selectedServer />\n </div>\n </div>\n</template>\n\n<style scoped>\n.docSettings {\n padding: 10px;\n display: flex;\n flex-direction: column;\n gap: 10px;\n font-size: var(--scalar-font-size-3);\n max-height: 600px;\n overflow-y: scroll;\n}\n\n.documentName {\n font-weight: var(--font-weight-bold);\n}\n</style>\n"],"names":["_openBlock","_createElementBlock","_createElementVNode","_createVNode","_unref","Auth"],"mappings":";;;;;;;;;;;;;;AAgBA,UAAM,EAAE,gBAAgB,QAAQ,SAAA,IAAa,SAAA;AAE7C,UAAM,cAAc;AAAA,MAAS,MAC3B,qBAAqB,gBAAgB,gBAAQ;AAAA,IAAA;AAG/C,UAAM,iBAAiB,SAAS,MAAM,kBAAkB,QAAA,QAAQ,CAAC;AAEjE,UAAM,kBAAkB;AAAA,MACtB,MAAM,QAAA,SAAS,YAAY,mBAAmB,CAAA;AAAA,IAAC;;AAK/C,aAAAA,UAAA,GAAAC,mBAiBM,OAjBN,YAiBM;AAAA,QAhBJC,mBAKM,OAAA,MAAA;AAAA,UAJJC,YAGsCC,MAAA,cAAA,GAAA;AAAA,YAFnC,UAAAA,MAAA,QAAA;AAAA,YACA,gBAAA,eAAA;AAAA,YACA,SAAS,QAAA,SAAS,WAAO,CAAA;AAAA,UAAA;;QAE9BF,mBASM,OAAA,MAAA;AAAA,UARJC,YAOoBE,aAAA;AAAA,YANjB,UAAA,QAAA;AAAA,YACA,aAAA,YAAA;AAAA,YACA,UAAAD,MAAA,QAAA;AAAA,YACA,MAAA,QAAA;AAAA,YACA,SAASA,MAAA,MAAA;AAAA,YACT,iBAAA,gBAAA;AAAA,YACA,gBAAA,eAAA;AAAA,UAAA;;;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Settings.vue.d.ts","sourceRoot":"","sources":["../../../src/views/Settings/Settings.vue"],"names":[],"mappings":"AAwIA,OAAO,EACL,KAAK,UAAU,EAIhB,MAAM,oBAAoB,CAAA;AAM3B,KAAK,WAAW,GAAG;IACjB,UAAU,EAAE,UAAU,CAAA;CACvB,CAAC;;AAoMF,wBAEG"}
@@ -1,8 +1,8 @@
1
1
  import _sfc_main from "./Settings.vue2.js";
2
2
  /* empty css */
3
3
  /* empty css */
4
- import _export_sfc from "../_virtual/_plugin-vue_export-helper.js";
5
- const Settings = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-87a83fbb"]]);
4
+ import _export_sfc from "../../_virtual/_plugin-vue_export-helper.js";
5
+ const Settings = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-e1a5892c"]]);
6
6
  export {
7
7
  Settings as default
8
8
  };
@@ -0,0 +1,78 @@
1
+ import { defineComponent, createBlock, openBlock, unref, withCtx, createElementVNode, createVNode, createElementBlock, Fragment, renderList, createCommentVNode, normalizeClass, createTextVNode, toDisplayString, isRef } from "vue";
2
+ import { ScalarModal, ScalarColorModeToggle, ScalarTextInput } from "@scalar/components";
3
+ import { ScalarIconCaretDown, ScalarIconCaretRight } from "@scalar/icons";
4
+ import { useState } from "../../state/state.js";
5
+ import DocSettings from "./DocSettings.vue.js";
6
+ const _hoisted_1 = { class: "settingsHeading" };
7
+ const _hoisted_2 = { class: "documentList" };
8
+ const _hoisted_3 = ["onClick"];
9
+ const _hoisted_4 = { key: 0 };
10
+ const _hoisted_5 = {
11
+ key: 1,
12
+ class: "noDocuments"
13
+ };
14
+ const _hoisted_6 = { class: "proxyUrlContainer" };
15
+ const _sfc_main = /* @__PURE__ */ defineComponent({
16
+ __name: "Settings",
17
+ props: {
18
+ modalState: {}
19
+ },
20
+ setup(__props) {
21
+ const { workspaceStore, proxyUrl } = useState();
22
+ function selectDocument(name) {
23
+ workspaceStore.update("x-scalar-active-document", name);
24
+ }
25
+ return (_ctx, _cache) => {
26
+ return openBlock(), createBlock(unref(ScalarModal), { state: __props.modalState }, {
27
+ default: withCtx(() => [
28
+ createElementVNode("div", _hoisted_1, [
29
+ _cache[1] || (_cache[1] = createElementVNode("h1", null, "Settings", -1)),
30
+ createVNode(unref(ScalarColorModeToggle), { class: "colorToggle ml-auto" })
31
+ ]),
32
+ createElementVNode("div", _hoisted_2, [
33
+ _cache[2] || (_cache[2] = createElementVNode("label", null, " APIs ", -1)),
34
+ Object.entries(unref(workspaceStore).workspace.documents).length ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(Object.entries(
35
+ unref(workspaceStore).workspace.documents
36
+ ), ([name, document]) => {
37
+ return openBlock(), createElementBlock("div", {
38
+ key: name,
39
+ class: "document"
40
+ }, [
41
+ createElementVNode("button", {
42
+ class: normalizeClass(["documentName", {
43
+ documentNameActive: unref(workspaceStore).workspace.activeDocument === document
44
+ }]),
45
+ type: "button",
46
+ onClick: ($event) => selectDocument(name)
47
+ }, [
48
+ unref(workspaceStore).workspace.activeDocument === document ? (openBlock(), createBlock(unref(ScalarIconCaretDown), { key: 0 })) : (openBlock(), createBlock(unref(ScalarIconCaretRight), { key: 1 })),
49
+ createTextVNode(" @" + toDisplayString(name), 1)
50
+ ], 10, _hoisted_3),
51
+ unref(workspaceStore).workspace.activeDocument === document ? (openBlock(), createElementBlock("div", _hoisted_4, [
52
+ createVNode(DocSettings, {
53
+ document,
54
+ name
55
+ }, null, 8, ["document", "name"])
56
+ ])) : createCommentVNode("", true)
57
+ ]);
58
+ }), 128)) : (openBlock(), createElementBlock("div", _hoisted_5, " No APIs selected. Use + to add context. "))
59
+ ]),
60
+ createElementVNode("div", _hoisted_6, [
61
+ _cache[3] || (_cache[3] = createElementVNode("label", { for: "proxyUrl" }, "Proxy URL", -1)),
62
+ createVNode(unref(ScalarTextInput), {
63
+ id: "proxyUrl",
64
+ modelValue: unref(proxyUrl),
65
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(proxyUrl) ? proxyUrl.value = $event : null),
66
+ placeholder: "https://proxy.scalar.com"
67
+ }, null, 8, ["modelValue"])
68
+ ])
69
+ ]),
70
+ _: 1
71
+ }, 8, ["state"]);
72
+ };
73
+ }
74
+ });
75
+ export {
76
+ _sfc_main as default
77
+ };
78
+ //# sourceMappingURL=Settings.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Settings.vue2.js","sources":["../../../src/views/Settings/Settings.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n type ModalState,\n ScalarColorModeToggle,\n ScalarModal,\n ScalarTextInput,\n} from '@scalar/components'\nimport { ScalarIconCaretDown, ScalarIconCaretRight } from '@scalar/icons'\n\nimport { useState } from '@/state/state'\nimport DocSettings from '@/views/Settings/DocSettings.vue'\n\nconst { modalState } = defineProps<{\n modalState: ModalState\n}>()\n\nconst { workspaceStore, proxyUrl } = useState()\n\nfunction selectDocument(name: string) {\n workspaceStore.update('x-scalar-active-document', name)\n}\n</script>\n\n<template>\n <ScalarModal :state=\"modalState\">\n <div class=\"settingsHeading\">\n <h1>Settings</h1>\n <ScalarColorModeToggle class=\"colorToggle ml-auto\" />\n </div>\n <div class=\"documentList\">\n <label> APIs </label>\n\n <template\n v-if=\"Object.entries(workspaceStore.workspace.documents).length\">\n <div\n v-for=\"[name, document] of Object.entries(\n workspaceStore.workspace.documents,\n )\"\n :key=\"name\"\n class=\"document\">\n <button\n class=\"documentName\"\n :class=\"{\n documentNameActive:\n workspaceStore.workspace.activeDocument === document,\n }\"\n type=\"button\"\n @click=\"selectDocument(name)\">\n <ScalarIconCaretDown\n v-if=\"workspaceStore.workspace.activeDocument === document\" />\n <ScalarIconCaretRight v-else />\n @{{ name }}\n </button>\n <div v-if=\"workspaceStore.workspace.activeDocument === document\">\n <DocSettings\n :document\n :name />\n </div>\n </div>\n </template>\n <div\n v-else\n class=\"noDocuments\">\n No APIs selected. Use + to add context.\n </div>\n </div>\n\n <div class=\"proxyUrlContainer\">\n <label for=\"proxyUrl\">Proxy URL</label>\n <ScalarTextInput\n id=\"proxyUrl\"\n v-model=\"proxyUrl\"\n placeholder=\"https://proxy.scalar.com\" />\n </div>\n </ScalarModal>\n</template>\n\n<style>\n.scalar-modal-layout {\n z-index: 1000 !important;\n}\n</style>\n\n<style scoped>\n.documentList {\n display: flex;\n flex-direction: column;\n gap: 15px;\n margin-bottom: 10px;\n font-size: var(--scalar-font-size-3);\n}\n\n.document {\n display: flex;\n flex-direction: column;\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n border-radius: var(--scalar-radius-xl);\n}\n\n.documentName {\n background: var(--scalar-background-2);\n padding: 5px 10px;\n border-radius: var(--scalar-radius);\n color: var(--scalar-color-3);\n display: flex;\n align-items: center;\n gap: 5px;\n font-size: var(--scalar-font-size-3);\n}\n\n.documentNameActive {\n color: var(--scalar-color-1);\n}\n\n.settingsHeading {\n font-size: 19px;\n margin-bottom: 15px;\n display: flex;\n gap: 5px;\n align-items: center;\n}\n\n.proxyUrlContainer {\n font-size: var(--scalar-font-size-3);\n display: flex;\n gap: 5px;\n flex-direction: column;\n}\n\n.noDocuments {\n color: var(--scalar-color-2);\n margin-bottom: 10px;\n}\n</style>\n"],"names":["_createBlock","_unref","_createElementVNode","_createVNode","_createElementBlock","_Fragment","_renderList","_createTextVNode"],"mappings":";;;;;;;;;;;;;;;;;;;;AAgBA,UAAM,EAAE,gBAAgB,SAAA,IAAa,SAAA;AAErC,aAAS,eAAe,MAAc;AACpC,qBAAe,OAAO,4BAA4B,IAAI;AAAA,IACxD;;0BAIEA,YAkDcC,MAAA,WAAA,GAAA,EAlDA,OAAO,QAAA,cAAU;AAAA,yBAC7B,MAGM;AAAA,UAHNC,mBAGM,OAHN,YAGM;AAAA,YAFJ,OAAA,CAAA,MAAA,OAAA,CAAA,IAAAA,mBAAiB,YAAb,YAAQ,EAAA;AAAA,YACZC,YAAqDF,MAAA,qBAAA,GAAA,EAA9B,OAAM,uBAAqB;AAAA,UAAA;UAEpDC,mBAoCM,OApCN,YAoCM;AAAA,YAnCJ,OAAA,CAAA,MAAA,OAAA,CAAA,IAAAA,mBAAqB,eAAd,UAAM,EAAA;AAAA,YAGL,OAAO,QAAQD,MAAA,cAAA,EAAe,UAAU,SAAS,EAAE,2BACzDG,mBAwBMC,UAAA,EAAA,KAAA,KAAAC,WAvBuB,OAAO;AAAA,cAAqBL,MAAA,cAAA,EAAe,UAAU;AAAA,YAAA,GAAxE,CAAA,CAAA,MAAM,QAAQ,MAAA;kCADxBG,mBAwBM,OAAA;AAAA,gBApBH,KAAK;AAAA,gBACN,OAAM;AAAA,cAAA;gBACNF,mBAYS,UAAA;AAAA,kBAXP,uBAAM,gBAAc;AAAA,wCACwCD,MAAA,cAAA,EAAe,UAAU,mBAAmB;AAAA,kBAAA;kBAIxG,MAAK;AAAA,kBACJ,SAAK,CAAA,WAAE,eAAe,IAAI;AAAA,gBAAA;kBAEnBA,MAAA,cAAA,EAAe,UAAU,mBAAmB,yBADpDD,YACgEC,MAAA,mBAAA,GAAA,EAAA,KAAA,GAAA,mBAChED,YAA+BC,MAAA,oBAAA,GAAA,EAAA,KAAA,EAAA,CAAA;AAAA,kBAAAM,gBAAA,uBAC3B,IAAI,GAAA,CAAA;AAAA,gBAAA;gBAECN,MAAA,cAAA,EAAe,UAAU,mBAAmB,yBAAvDG,mBAIM,OAAA,YAAA;AAAA,kBAHJD,YAEU,aAAA;AAAA,oBADP;AAAA,oBACA;AAAA,kBAAA;;;sCAITC,mBAIM,OAJN,YAEsB,2CAEtB;AAAA,UAAA;UAGFF,mBAMM,OANN,YAMM;AAAA,YALJ,OAAA,CAAA,MAAA,OAAA,CAAA,IAAAA,mBAAuC,SAAA,EAAhC,KAAI,WAAA,GAAW,aAAS,EAAA;AAAA,YAC/BC,YAG2CF,MAAA,eAAA,GAAA;AAAA,cAFzC,IAAG;AAAA,0BACMA,MAAA,QAAA;AAAA,6FAAA,SAAQ,QAAA,SAAA;AAAA,cACjB,aAAY;AAAA,YAAA;;;;;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Start.vue.d.ts","sourceRoot":"","sources":["../../src/views/Start.vue"],"names":[],"mappings":";;;;;AA8QA,wBAEG"}
@@ -1,7 +1,7 @@
1
1
  import _sfc_main from "./Start.vue2.js";
2
2
  /* empty css */
3
3
  import _export_sfc from "../_virtual/_plugin-vue_export-helper.js";
4
- const Start = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-824d38a8"]]);
4
+ const Start = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-0334ed64"]]);
5
5
  export {
6
6
  Start as default
7
7
  };
@@ -16,7 +16,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
16
16
  _cache[4] || (_cache[4] = createElementVNode("h1", { class: "heading" }, "How can I help you today?", -1)),
17
17
  createVNode(PromptForm, {
18
18
  ref: "promptRef",
19
- loading: false,
20
19
  onSubmit: _cache[0] || (_cache[0] = ($event) => emit("submit"))
21
20
  }, null, 512),
22
21
  createElementVNode("div", _hoisted_2, [
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Start.vue2.js","sources":["../../src/views/Start.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useTemplateRef } from 'vue'\n\nimport Logo from '@/components/Logo.vue'\nimport Suggestion from '@/components/Suggestion.vue'\nimport PromptForm from '@/views/PromptForm.vue'\n\nconst emit = defineEmits<{\n (e: 'submit'): void\n}>()\n\nconst textFieldRef =\n useTemplateRef<InstanceType<typeof PromptForm>>('promptRef')\n</script>\n\n<template>\n <div class=\"startContainer\">\n <Logo class=\"agentLogo\" />\n <h1 class=\"heading\">How can I help you today?</h1>\n <PromptForm\n ref=\"promptRef\"\n @submit=\"emit('submit')\" />\n <div class=\"suggestionsContainer\">\n <Suggestion\n text=\"Can you generate an example OpenAPI spec for me?\"\n @click=\"textFieldRef?.focusPrompt()\" />\n <Suggestion\n text=\"What are the most popular APIs this week?\"\n @click=\"textFieldRef?.focusPrompt()\" />\n <Suggestion\n text=\"Explain to me how Agent Scalar works\"\n @click=\"textFieldRef?.focusPrompt()\" />\n </div>\n <p class=\"disclaimerText\">\n By messaging Agent Scalar, you agree to our\n <a\n class=\"disclaimerLink\"\n href=\"https://scalar.com/legal/terms-and-conditions\"\n target=\"_blank\"\n >Terms</a\n >\n and\n <a\n class=\"disclaimerLink\"\n href=\"https://scalar.com/legal/privacy-policy\"\n target=\"_blank\"\n >Privacy Policy</a\n >\n </p>\n </div>\n</template>\n\n<style scoped>\n.agentLogo {\n margin-bottom: 15px;\n}\n\n.startContainer {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n max-width: 720px;\n}\n\n.heading {\n font-size: 1.5rem;\n font-weight: var(--scalar-font-bold);\n margin-bottom: 30px;\n}\n\n.suggestionsContainer {\n display: flex;\n justify-content: center;\n gap: 10px;\n flex-wrap: wrap;\n margin: 25px 0;\n}\n\n.disclaimerText {\n text-align: center;\n color: var(--scalar-color-3);\n font-size: var(--scalar-font-size-3);\n}\n\n.disclaimerLink {\n text-decoration: underline;\n}\n</style>\n"],"names":["_openBlock","_createElementBlock","_createVNode","_createElementVNode"],"mappings":";;;;;;;;;;AAOA,UAAM,OAAO;AAIb,UAAM,eACJ,eAAgD,WAAW;;AAI3D,aAAAA,UAAA,GAAAC,mBAiCM,OAjCN,YAiCM;AAAA,QAhCJC,YAA0B,MAAA,EAApB,OAAM,aAAW;AAAA,QACvB,OAAA,CAAA,MAAA,OAAA,CAAA,IAAAC,mBAAkD,MAAA,EAA9C,OAAM,UAAA,GAAU,6BAAyB,EAAA;AAAA,QAC7CD,YAE6B,YAAA;AAAA,UAD3B,KAAI;AAAA,UACH,gDAAQ,KAAI,QAAA;AAAA,QAAA;QACfC,mBAUM,OAVN,YAUM;AAAA,UATJD,YAEyC,YAAA;AAAA,YADvC,MAAK;AAAA,YACJ,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAE,aAAA,OAAc,YAAA;AAAA,UAAW;UACnCA,YAEyC,YAAA;AAAA,YADvC,MAAK;AAAA,YACJ,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAE,aAAA,OAAc,YAAA;AAAA,UAAW;UACnCA,YAEyC,YAAA;AAAA,YADvC,MAAK;AAAA,YACJ,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAE,aAAA,OAAc,YAAA;AAAA,UAAW;;kCAErCC,mBAeI,KAAA,EAfD,OAAM,oBAAgB;AAAA,0BAAC,+CAExB;AAAA,UAAAA,mBAKC,KAAA;AAAA,YAJC,OAAM;AAAA,YACN,MAAK;AAAA,YACL,QAAO;AAAA,UAAA,GACN,OAAK;AAAA,0BACP,OAED;AAAA,UAAAA,mBAKC,KAAA;AAAA,YAJC,OAAM;AAAA,YACN,MAAK;AAAA,YACL,QAAO;AAAA,UAAA,GACN,gBAAc;AAAA,QAAA;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"App.vue.d.ts","sourceRoot":"","sources":["../src/App.vue"],"names":[],"mappings":"AAyBA,OAAO,aAAa,CAAA;AAOpB,KAAK,WAAW,GAAG;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAC;;AA0CF,wBAEG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"App.vue.js","sources":["../src/App.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport './index.css'\n\nimport { provide } from 'vue'\n\nimport Chat from '@/Chat.vue'\nimport { createState, STATE_SYMBOL } from '@/state/state'\n\nconst { namespace, slug, registryUrl, baseUrl } = defineProps<{\n namespace: string\n slug: string\n registryUrl: string\n baseUrl: string\n}>()\n\nprovide(STATE_SYMBOL, createState({ namespace, slug, registryUrl, baseUrl }))\n</script>\n\n<template>\n <Chat />\n</template>\n\n<style scoped></style>\n"],"names":["_createBlock","Chat"],"mappings":";;;;;;;;;;;;;AAeA,YAAQ,cAAc,YAAY,EAAE,8BAAW,MAAG,QAAA,MAAG,aAAU,QAAA,aAAG,SAAM,QAAA,QAAA,CAAG,CAAC;;0BAI1EA,YAAQC,WAAA;AAAA;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Chat.vue.js","sources":["../src/Chat.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { onBeforeUnmount, onMounted, provide, ref, useTemplateRef } from 'vue'\n\nimport {\n type ApiClientModal,\n createApiClientModal,\n} from '@scalar/api-client/v2/features/modal'\nimport {\n createPluginManager,\n PLUGIN_MANAGER_SYMBOL,\n} from '@scalar/api-reference/plugins'\nimport { createWorkspaceEventBus } from '@scalar/workspace-store/events'\n\nimport { useChatOperationBlocks } from '@/hooks/useChatOperationBlocks'\nimport { useChatScroll } from '@/hooks/useChatScroll'\nimport { useState } from '@/state/state'\nimport Layout from '@/views/Layout.vue'\nimport Settings from '@/views/Settings.vue'\n\nconst { workspaceStore, eventBus, config, chat, prompt, settingsModal } =\n useState()\n\nconst clientModalRef = useTemplateRef<HTMLElement>('clientModal')\n\ncreateWorkspaceEventBus({ debug: false })\n\nuseChatOperationBlocks(workspaceStore)\n\nconst apiClient = ref<ApiClientModal | null>(null)\n\nonMounted(() => {\n if (!clientModalRef.value) {\n return\n }\n\n apiClient.value = createApiClientModal({\n el: clientModalRef.value,\n eventBus,\n workspaceStore,\n options: config,\n })\n})\n\nonBeforeUnmount(() => {\n apiClient.value?.app.unmount()\n})\n\nuseChatScroll()\n\nprovide(\n PLUGIN_MANAGER_SYMBOL,\n createPluginManager({\n plugins: [],\n }),\n)\n\nfunction handleSubmit() {\n chat.sendMessage({ text: prompt.value })\n}\n</script>\n\n<template>\n <Layout @submit=\"handleSubmit\" />\n <div ref=\"clientModal\" />\n <Settings :modalState=\"settingsModal\" />\n</template>\n"],"names":["_createVNode","_createElementVNode","_unref"],"mappings":";;;;;;;;;;;;;AAmBA,UAAM,EAAE,gBAAgB,UAAU,QAAQ,MAAM,QAAQ,cAAA,IACtD,SAAA;AAEF,UAAM,iBAAiB,eAA4B,aAAa;AAEhE,4BAAwB,EAAE,OAAO,OAAO;AAExC,2BAAuB,cAAc;AAErC,UAAM,YAAY,IAA2B,IAAI;AAEjD,cAAU,MAAM;AACd,UAAI,CAAC,eAAe,OAAO;AACzB;AAAA,MACF;AAEA,gBAAU,QAAQ,qBAAqB;AAAA,QACrC,IAAI,eAAe;AAAA,QACnB;AAAA,QACA;AAAA,QACA,SAAS;AAAA,MAAA,CACV;AAAA,IACH,CAAC;AAED,oBAAgB,MAAM;AACpB,gBAAU,OAAO,IAAI,QAAA;AAAA,IACvB,CAAC;AAED,kBAAA;AAEA;AAAA,MACE;AAAA,MACA,oBAAoB;AAAA,QAClB,SAAS,CAAA;AAAA,MAAC,CACX;AAAA,IAAA;AAGH,aAAS,eAAe;AACtB,WAAK,YAAY,EAAE,MAAM,OAAO,OAAO;AAAA,IACzC;;;QAIEA,YAAiC,QAAA,EAAxB,UAAQ,cAAY;AAAA,QAC7BC,mBAAyB,OAAzB,YAAyB,MAAA,GAAA;AAAA,QACzBD,YAAwC,UAAA,EAA7B,YAAYE,MAAA,aAAA,EAAA,GAAa,MAAA,GAAA,CAAA,YAAA,CAAA;AAAA,MAAA;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ContextItem.vue2.js","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 padding: 5px 12px;\n border-radius: 30px;\n width: max-content;\n font-size: var(--scalar-font-size-3);\n background: var(--scalar-background-3);\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"],"names":["_createElementBlock","loading","_renderSlot"],"mappings":";;;;;;;;0BAKEA,mBAMM,OAAA;AAAA,QALJ,uBAAM,eAAa;AAAA,mBACMC,KAAAA;AAAAA,QAAAA;;QAGzBC,WAAQ,KAAA,QAAA,WAAA,CAAA,GAAA,QAAA,IAAA;AAAA,MAAA;;;;"}
@@ -1,32 +0,0 @@
1
- import { createElementBlock, openBlock, createElementVNode, createTextVNode } from "vue";
2
- /* empty css */
3
- import _export_sfc from "../_virtual/_plugin-vue_export-helper.js";
4
- const _sfc_main = {};
5
- const _hoisted_1 = { class: "sendingRequest" };
6
- function _sfc_render(_ctx, _cache) {
7
- return openBlock(), createElementBlock("div", _hoisted_1, [..._cache[0] || (_cache[0] = [
8
- createElementVNode("div", { class: "playIcon" }, [
9
- createElementVNode("svg", {
10
- fill: "currentColor",
11
- height: "32",
12
- viewBox: "0 0 256 256",
13
- width: "32",
14
- xmlns: "http://www.w3.org/2000/svg"
15
- }, [
16
- createElementVNode("path", {
17
- d: "M232.49,215.51,185,168a92.12,92.12,0,1,0-17,17l47.53,47.54a12,12,0,0,0,17-17ZM44,112a68,68,0,1,1,68,68A68.07,68.07,0,0,1,44,112Z",
18
- stroke: "currentColor",
19
- "stroke-linecap": "round",
20
- "stroke-linejoin": "round",
21
- "stroke-width": "16"
22
- })
23
- ])
24
- ], -1),
25
- createTextVNode(" Retrieving relevant information... ", -1)
26
- ])]);
27
- }
28
- const LoadingMiniOpenAPIDoc = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-67c1097c"]]);
29
- export {
30
- LoadingMiniOpenAPIDoc as default
31
- };
32
- //# sourceMappingURL=LoadingMiniOpenAPIDoc.vue.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LoadingMiniOpenAPIDoc.vue.js","sources":["../../src/components/LoadingMiniOpenAPIDoc.vue"],"sourcesContent":["<template>\n <div class=\"sendingRequest\">\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=\"M232.49,215.51,185,168a92.12,92.12,0,1,0-17,17l47.53,47.54a12,12,0,0,0,17-17ZM44,112a68,68,0,1,1,68,68A68.07,68.07,0,0,1,44,112Z\"\n stroke=\"currentColor\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"16\" />\n </svg>\n </div>\n Retrieving relevant information...\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.sendingRequest {\n display: flex;\n align-items: center;\n gap: 10px;\n color: var(--scalar-color-2);\n font-weight: var(--scalar-semibold);\n}\n\n.sendingRequest 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"],"names":["_openBlock","_createElementBlock","_createElementVNode"],"mappings":";;;;AACO,MAAA,aAAA,EAAA,OAAM,iBAAgB;;AAA3B,SAAAA,UAAA,GAAAC,mBAiBM,OAjBN,YAiBM,CAAA,GAAA,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA;AAAA,IAhBJC,mBAcM,OAAA,EAdD,OAAM,WAAU,GAAA;AAAA,MACnBA,mBAYM,OAAA;AAAA,QAXJ,MAAK;AAAA,QACL,QAAO;AAAA,QACP,SAAQ;AAAA,QACR,OAAM;AAAA,QACN,OAAM;AAAA;QACNA,mBAKsB,QAAA;AAAA,UAJpB,GAAE;AAAA,UACF,QAAO;AAAA,UACP,kBAAe;AAAA,UACf,mBAAgB;AAAA,UAChB,gBAAa;AAAA;;;oBAEb,wCAER,EAAA;AAAA;;;"}
package/dist/helpers.d.ts DELETED
@@ -1,39 +0,0 @@
1
- import type { ToolUIPart, UIDataTypes, UIMessagePart } from 'ai';
2
- import type { MergedSecuritySchemes } from '@scalar/api-client/v2/blocks/scalar-auth-selector-block';
3
- import type { OpenAPIV3_1 } from '@scalar/openapi-types';
4
- import type { AuthenticationConfiguration } from '@scalar/types/api-reference';
5
- import type { OpenApiDocument, OperationObject, ParameterObject, PathItemObject, SecurityRequirementObject, SecuritySchemeObject, ServerObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document';
6
- import type { Tools } from './state/state.js';
7
- /** Combine pathItem and operation parameters into a single, dereferenced parameter array */
8
- export declare const combineParams: (pathParams?: PathItemObject["parameters"], operationParams?: OperationObject["parameters"]) => ParameterObject[];
9
- /**
10
- * Iterate through all available servers and pick the first one
11
- *
12
- * @example
13
- * getFirstServer([operation.servers, pathItem.servers, server])
14
- */
15
- export declare function getFirstServer(...availableServers: (ServerObject[] | ServerObject | undefined | null)[]): ServerObject | undefined;
16
- /** Determine if a message part is a tool */
17
- export declare function isToolPart(part: UIMessagePart<UIDataTypes, Tools>): part is ToolUIPart<Tools>;
18
- /**
19
- * Extracts the default scopes for a security scheme.
20
- * Only OAuth2 schemes can have default scopes via the x-default-scopes extension.
21
- */
22
- export declare const getDefaultScopes: (scheme: SecuritySchemeObject | undefined) => string[];
23
- /**
24
- * Determines the default security scheme to use for an operation.
25
- *
26
- * Priority order:
27
- * 1. User-configured preferred security scheme (if provided)
28
- * 2. First security requirement from the OpenAPI spec
29
- * 3. null (no security required)
30
- */
31
- export declare const getDefaultSecurity: (securityRequirements: SecurityRequirementObject[], preferredSecurityScheme: AuthenticationConfiguration["preferredSecurityScheme"], securitySchemes: MergedSecuritySchemes) => SecurityRequirementObject | null;
32
- /**
33
- * Find the intersection between which security is selected on the document and what this operation requires
34
- *
35
- * If there is no overlap, we return the first requirement
36
- */
37
- export declare const filterSelectedSecurity: (document: OpenApiDocument, operation: OperationObject | null, securitySchemes?: MergedSecuritySchemes) => SecuritySchemeObject[];
38
- export declare function getOperations(doc: Partial<OpenAPIV3_1.Document>): OperationObject[];
39
- //# sourceMappingURL=helpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,IAAI,CAAA;AAGhE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yDAAyD,CAAA;AAGpG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAA;AAG9E,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,eAAe,EACf,cAAc,EACd,yBAAyB,EACzB,oBAAoB,EACpB,YAAY,EACb,MAAM,8DAA8D,CAAA;AAErE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAE1C,4FAA4F;AAC5F,eAAO,MAAM,aAAa,GACxB,aAAY,cAAc,CAAC,YAAY,CAAM,EAC7C,kBAAiB,eAAe,CAAC,YAAY,CAAM,KAClD,eAAe,EAgBjB,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,GAAG,gBAAgB,EAAE,CAAC,YAAY,EAAE,GAAG,YAAY,GAAG,SAAS,GAAG,IAAI,CAAC,EAAE,GACxE,YAAY,GAAG,SAAS,CAyB1B;AAED,4CAA4C;AAC5C,wBAAgB,UAAU,CACxB,IAAI,EAAE,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,GACtC,IAAI,IAAI,UAAU,CAAC,KAAK,CAAC,CAE3B;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAC3B,QAAQ,oBAAoB,GAAG,SAAS,KACvC,MAAM,EAMR,CAAA;AA2CD;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAC7B,sBAAsB,yBAAyB,EAAE,EACjD,yBAAyB,2BAA2B,CAAC,yBAAyB,CAAC,EAC/E,iBAAiB,qBAAqB,KACrC,yBAAyB,GAAG,IAc9B,CAAA;AAMD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GACjC,UAAU,eAAe,EACzB,WAAW,eAAe,GAAG,IAAI,EACjC,kBAAiB,qBAA0B,KAC1C,oBAAoB,EAsCtB,CAAA;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,GAGzD,eAAe,EAAE,CACvB"}
package/dist/helpers.js DELETED
@@ -1,111 +0,0 @@
1
- import { getSecuritySchemes } from "@scalar/api-client/v2/blocks/operation-block";
2
- import { getSelectedSecurity } from "@scalar/api-client/v2/features/operation";
3
- import { isDefined } from "@scalar/helpers/array/is-defined";
4
- import { getResolvedRef } from "@scalar/workspace-store/helpers/get-resolved-ref";
5
- import { unpackProxyObject } from "@scalar/workspace-store/helpers/unpack-proxy";
6
- const combineParams = (pathParams = [], operationParams = []) => {
7
- const allParams = [...pathParams, ...operationParams].map((param) => getResolvedRef(param)).filter((e) => isDefined(e) && e.name);
8
- const uniqueParams = /* @__PURE__ */ new Map();
9
- for (const param of allParams) {
10
- const key = `${param.in}:${param.name}`;
11
- uniqueParams.set(key, param);
12
- }
13
- return Array.from(uniqueParams.values());
14
- };
15
- function getFirstServer(...availableServers) {
16
- for (const serverSource of availableServers) {
17
- if (!serverSource) {
18
- continue;
19
- }
20
- if (!Array.isArray(serverSource)) {
21
- const resolvedServer = getResolvedRef(serverSource);
22
- if (resolvedServer?.url) {
23
- return resolvedServer;
24
- }
25
- continue;
26
- }
27
- for (const server of serverSource) {
28
- const resolvedServer = getResolvedRef(server);
29
- if (resolvedServer?.url) {
30
- return resolvedServer;
31
- }
32
- }
33
- }
34
- return void 0;
35
- }
36
- const getDefaultScopes = (scheme) => {
37
- if (!scheme || scheme.type !== "oauth2") {
38
- return [];
39
- }
40
- return scheme["x-default-scopes"] ?? [];
41
- };
42
- const addSchemeToRequirement = (acc, schemeName, securitySchemes) => {
43
- const scheme = getResolvedRef(securitySchemes[schemeName]);
44
- acc[schemeName] = getDefaultScopes(scheme);
45
- };
46
- const buildSecurityRequirementFromPreferred = (preferredSecurityScheme, securitySchemes) => {
47
- if (!Array.isArray(preferredSecurityScheme)) {
48
- const scheme = getResolvedRef(securitySchemes[preferredSecurityScheme]);
49
- return { [preferredSecurityScheme]: getDefaultScopes(scheme) };
50
- }
51
- const requirement = {};
52
- for (const item of preferredSecurityScheme) {
53
- if (Array.isArray(item)) {
54
- for (const schemeName of item) {
55
- addSchemeToRequirement(requirement, schemeName, securitySchemes);
56
- }
57
- } else {
58
- addSchemeToRequirement(requirement, item, securitySchemes);
59
- }
60
- }
61
- return requirement;
62
- };
63
- const getDefaultSecurity = (securityRequirements, preferredSecurityScheme, securitySchemes) => {
64
- if (preferredSecurityScheme) {
65
- return buildSecurityRequirementFromPreferred(
66
- preferredSecurityScheme,
67
- securitySchemes
68
- );
69
- }
70
- const firstRequirement = securityRequirements[0];
71
- if (firstRequirement) {
72
- return unpackProxyObject(firstRequirement, { depth: 1 });
73
- }
74
- return null;
75
- };
76
- const getKey = (requirement) => Object.keys(requirement).sort().join(",");
77
- const filterSelectedSecurity = (document, operation, securitySchemes = {}) => {
78
- const securityRequirements = operation?.security ?? document.security ?? [];
79
- const selectedSecurity = getSelectedSecurity(
80
- document?.["x-scalar-selected-security"],
81
- operation?.["x-scalar-selected-security"]
82
- );
83
- const requirementSet = new Set(securityRequirements.map((r) => getKey(r)));
84
- const selectedRequirement = selectedSecurity.selectedSchemes[selectedSecurity.selectedIndex];
85
- if (selectedRequirement && requirementSet.has(getKey(selectedRequirement))) {
86
- return getSecuritySchemes(securitySchemes, [selectedRequirement]);
87
- }
88
- for (const selected of selectedSecurity.selectedSchemes) {
89
- if (requirementSet.has(getKey(selected))) {
90
- return getSecuritySchemes(securitySchemes, [selected]);
91
- }
92
- }
93
- if (operation?.security?.length && !document?.["x-scalar-set-operation-security"]) {
94
- return getSecuritySchemes(securitySchemes, securityRequirements.slice(0, 1));
95
- }
96
- return [];
97
- };
98
- function getOperations(doc) {
99
- return Object.values(doc.paths ?? {}).flatMap(
100
- (path) => Object.values(path ?? {})
101
- );
102
- }
103
- export {
104
- combineParams,
105
- filterSelectedSecurity,
106
- getDefaultScopes,
107
- getDefaultSecurity,
108
- getFirstServer,
109
- getOperations
110
- };
111
- //# sourceMappingURL=helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.js","sources":["../src/helpers.ts"],"sourcesContent":["import type { ToolUIPart, UIDataTypes, UIMessagePart } from 'ai'\n\nimport { getSecuritySchemes } from '@scalar/api-client/v2/blocks/operation-block'\nimport type { MergedSecuritySchemes } from '@scalar/api-client/v2/blocks/scalar-auth-selector-block'\nimport { getSelectedSecurity } from '@scalar/api-client/v2/features/operation'\nimport { isDefined } from '@scalar/helpers/array/is-defined'\nimport type { OpenAPIV3_1 } from '@scalar/openapi-types'\nimport type { AuthenticationConfiguration } from '@scalar/types/api-reference'\nimport { getResolvedRef } from '@scalar/workspace-store/helpers/get-resolved-ref'\nimport { unpackProxyObject } from '@scalar/workspace-store/helpers/unpack-proxy'\nimport type {\n OpenApiDocument,\n OperationObject,\n ParameterObject,\n PathItemObject,\n SecurityRequirementObject,\n SecuritySchemeObject,\n ServerObject,\n} from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\n\nimport type { Tools } from '@/state/state'\n\n/** Combine pathItem and operation parameters into a single, dereferenced parameter array */\nexport const combineParams = (\n pathParams: PathItemObject['parameters'] = [],\n operationParams: OperationObject['parameters'] = [],\n): ParameterObject[] => {\n const allParams = [...pathParams, ...operationParams]\n .map((param) => getResolvedRef(param))\n // For unresolved params, coercion is going to generate a template object with an empty name, we don't want to include those\n .filter((e) => isDefined(e) && e.name)\n\n // Use a Map to ensure unique in+name combinations\n // Operation parameters take precedence over path parameters\n const uniqueParams = new Map<string, ParameterObject>()\n\n for (const param of allParams) {\n const key = `${param.in}:${param.name}`\n uniqueParams.set(key, param)\n }\n\n return Array.from(uniqueParams.values())\n}\n\n/**\n * Iterate through all available servers and pick the first one\n *\n * @example\n * getFirstServer([operation.servers, pathItem.servers, server])\n */\nexport function getFirstServer(\n ...availableServers: (ServerObject[] | ServerObject | undefined | null)[]\n): ServerObject | undefined {\n for (const serverSource of availableServers) {\n if (!serverSource) {\n continue\n }\n\n // Handle single server object\n if (!Array.isArray(serverSource)) {\n const resolvedServer = getResolvedRef(serverSource) as ServerObject\n if (resolvedServer?.url) {\n return resolvedServer\n }\n continue\n }\n\n // Handle array of servers, pick the first one with a URL\n for (const server of serverSource) {\n const resolvedServer = getResolvedRef(server) as ServerObject\n if (resolvedServer?.url) {\n return resolvedServer\n }\n }\n }\n\n return undefined\n}\n\n/** Determine if a message part is a tool */\nexport function isToolPart(\n part: UIMessagePart<UIDataTypes, Tools>,\n): part is ToolUIPart<Tools> {\n return part.type.startsWith('tool-')\n}\n\n/**\n * Extracts the default scopes for a security scheme.\n * Only OAuth2 schemes can have default scopes via the x-default-scopes extension.\n */\nexport const getDefaultScopes = (\n scheme: SecuritySchemeObject | undefined,\n): string[] => {\n if (!scheme || scheme.type !== 'oauth2') {\n return []\n }\n\n return scheme['x-default-scopes'] ?? []\n}\n\n/**\n * Processes a single scheme name and adds it to the accumulator with its default scopes.\n */\nconst addSchemeToRequirement = (\n acc: SecurityRequirementObject,\n schemeName: string,\n securitySchemes: MergedSecuritySchemes,\n): void => {\n const scheme = getResolvedRef(securitySchemes[schemeName])\n acc[schemeName] = getDefaultScopes(scheme)\n}\n\n/**\n * Converts the preferred security scheme configuration into a SecurityRequirementObject.\n * Handles both flat arrays and nested arrays (for complex auth scenarios).\n */\nconst buildSecurityRequirementFromPreferred = (\n preferredSecurityScheme: string | (string | string[])[],\n securitySchemes: MergedSecuritySchemes,\n): SecurityRequirementObject => {\n if (!Array.isArray(preferredSecurityScheme)) {\n const scheme = getResolvedRef(securitySchemes[preferredSecurityScheme])\n return { [preferredSecurityScheme]: getDefaultScopes(scheme) }\n }\n\n const requirement: SecurityRequirementObject = {}\n\n for (const item of preferredSecurityScheme) {\n if (Array.isArray(item)) {\n // Handle nested arrays for complex auth (e.g., [['oauth2', 'apiKey'], 'basic'])\n for (const schemeName of item) {\n addSchemeToRequirement(requirement, schemeName, securitySchemes)\n }\n } else {\n addSchemeToRequirement(requirement, item, securitySchemes)\n }\n }\n\n return requirement\n}\n\n/**\n * Determines the default security scheme to use for an operation.\n *\n * Priority order:\n * 1. User-configured preferred security scheme (if provided)\n * 2. First security requirement from the OpenAPI spec\n * 3. null (no security required)\n */\nexport const getDefaultSecurity = (\n securityRequirements: SecurityRequirementObject[],\n preferredSecurityScheme: AuthenticationConfiguration['preferredSecurityScheme'],\n securitySchemes: MergedSecuritySchemes,\n): SecurityRequirementObject | null => {\n if (preferredSecurityScheme) {\n return buildSecurityRequirementFromPreferred(\n preferredSecurityScheme,\n securitySchemes,\n )\n }\n\n const firstRequirement = securityRequirements[0]\n if (firstRequirement) {\n return unpackProxyObject(firstRequirement, { depth: 1 })\n }\n\n return null\n}\n\n/** Builds a quick cache key from the sorted object keys */\nconst getKey = (requirement: SecurityRequirementObject) =>\n Object.keys(requirement).sort().join(',')\n\n/**\n * Find the intersection between which security is selected on the document and what this operation requires\n *\n * If there is no overlap, we return the first requirement\n */\nexport const filterSelectedSecurity = (\n document: OpenApiDocument,\n operation: OperationObject | null,\n securitySchemes: MergedSecuritySchemes = {},\n): SecuritySchemeObject[] => {\n const securityRequirements = operation?.security ?? document.security ?? []\n\n /** The selected security keys for the document */\n const selectedSecurity = getSelectedSecurity(\n document?.['x-scalar-selected-security'],\n operation?.['x-scalar-selected-security'],\n )\n\n /** Build a set for O(1) lookup */\n const requirementSet = new Set(securityRequirements.map((r) => getKey(r)))\n\n // Lets check the selectedIndex first\n const selectedRequirement =\n selectedSecurity.selectedSchemes[selectedSecurity.selectedIndex]\n if (selectedRequirement && requirementSet.has(getKey(selectedRequirement))) {\n return getSecuritySchemes(securitySchemes, [selectedRequirement])\n }\n\n // Otherwise lets loop over all selected\n for (const selected of selectedSecurity.selectedSchemes) {\n if (requirementSet.has(getKey(selected))) {\n return getSecuritySchemes(securitySchemes, [selected])\n }\n }\n\n /**\n * If we are selected security on the document,\n * we should show the first requirement of the operation to show auth is required\n */\n if (\n operation?.security?.length &&\n !document?.['x-scalar-set-operation-security']\n ) {\n return getSecuritySchemes(securitySchemes, securityRequirements.slice(0, 1))\n }\n\n return []\n}\n\nexport function getOperations(doc: Partial<OpenAPIV3_1.Document>) {\n return Object.values(doc.paths ?? {}).flatMap((path) =>\n Object.values(path ?? {}),\n ) as OperationObject[]\n}\n"],"names":[],"mappings":";;;;;AAuBO,MAAM,gBAAgB,CAC3B,aAA2C,IAC3C,kBAAiD,CAAA,MAC3B;AACtB,QAAM,YAAY,CAAC,GAAG,YAAY,GAAG,eAAe,EACjD,IAAI,CAAC,UAAU,eAAe,KAAK,CAAC,EAEpC,OAAO,CAAC,MAAM,UAAU,CAAC,KAAK,EAAE,IAAI;AAIvC,QAAM,mCAAmB,IAAA;AAEzB,aAAW,SAAS,WAAW;AAC7B,UAAM,MAAM,GAAG,MAAM,EAAE,IAAI,MAAM,IAAI;AACrC,iBAAa,IAAI,KAAK,KAAK;AAAA,EAC7B;AAEA,SAAO,MAAM,KAAK,aAAa,OAAA,CAAQ;AACzC;AAQO,SAAS,kBACX,kBACuB;AAC1B,aAAW,gBAAgB,kBAAkB;AAC3C,QAAI,CAAC,cAAc;AACjB;AAAA,IACF;AAGA,QAAI,CAAC,MAAM,QAAQ,YAAY,GAAG;AAChC,YAAM,iBAAiB,eAAe,YAAY;AAClD,UAAI,gBAAgB,KAAK;AACvB,eAAO;AAAA,MACT;AACA;AAAA,IACF;AAGA,eAAW,UAAU,cAAc;AACjC,YAAM,iBAAiB,eAAe,MAAM;AAC5C,UAAI,gBAAgB,KAAK;AACvB,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAaO,MAAM,mBAAmB,CAC9B,WACa;AACb,MAAI,CAAC,UAAU,OAAO,SAAS,UAAU;AACvC,WAAO,CAAA;AAAA,EACT;AAEA,SAAO,OAAO,kBAAkB,KAAK,CAAA;AACvC;AAKA,MAAM,yBAAyB,CAC7B,KACA,YACA,oBACS;AACT,QAAM,SAAS,eAAe,gBAAgB,UAAU,CAAC;AACzD,MAAI,UAAU,IAAI,iBAAiB,MAAM;AAC3C;AAMA,MAAM,wCAAwC,CAC5C,yBACA,oBAC8B;AAC9B,MAAI,CAAC,MAAM,QAAQ,uBAAuB,GAAG;AAC3C,UAAM,SAAS,eAAe,gBAAgB,uBAAuB,CAAC;AACtE,WAAO,EAAE,CAAC,uBAAuB,GAAG,iBAAiB,MAAM,EAAA;AAAA,EAC7D;AAEA,QAAM,cAAyC,CAAA;AAE/C,aAAW,QAAQ,yBAAyB;AAC1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AAEvB,iBAAW,cAAc,MAAM;AAC7B,+BAAuB,aAAa,YAAY,eAAe;AAAA,MACjE;AAAA,IACF,OAAO;AACL,6BAAuB,aAAa,MAAM,eAAe;AAAA,IAC3D;AAAA,EACF;AAEA,SAAO;AACT;AAUO,MAAM,qBAAqB,CAChC,sBACA,yBACA,oBACqC;AACrC,MAAI,yBAAyB;AAC3B,WAAO;AAAA,MACL;AAAA,MACA;AAAA,IAAA;AAAA,EAEJ;AAEA,QAAM,mBAAmB,qBAAqB,CAAC;AAC/C,MAAI,kBAAkB;AACpB,WAAO,kBAAkB,kBAAkB,EAAE,OAAO,GAAG;AAAA,EACzD;AAEA,SAAO;AACT;AAGA,MAAM,SAAS,CAAC,gBACd,OAAO,KAAK,WAAW,EAAE,KAAA,EAAO,KAAK,GAAG;AAOnC,MAAM,yBAAyB,CACpC,UACA,WACA,kBAAyC,CAAA,MACd;AAC3B,QAAM,uBAAuB,WAAW,YAAY,SAAS,YAAY,CAAA;AAGzE,QAAM,mBAAmB;AAAA,IACvB,WAAW,4BAA4B;AAAA,IACvC,YAAY,4BAA4B;AAAA,EAAA;AAI1C,QAAM,iBAAiB,IAAI,IAAI,qBAAqB,IAAI,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC;AAGzE,QAAM,sBACJ,iBAAiB,gBAAgB,iBAAiB,aAAa;AACjE,MAAI,uBAAuB,eAAe,IAAI,OAAO,mBAAmB,CAAC,GAAG;AAC1E,WAAO,mBAAmB,iBAAiB,CAAC,mBAAmB,CAAC;AAAA,EAClE;AAGA,aAAW,YAAY,iBAAiB,iBAAiB;AACvD,QAAI,eAAe,IAAI,OAAO,QAAQ,CAAC,GAAG;AACxC,aAAO,mBAAmB,iBAAiB,CAAC,QAAQ,CAAC;AAAA,IACvD;AAAA,EACF;AAMA,MACE,WAAW,UAAU,UACrB,CAAC,WAAW,iCAAiC,GAC7C;AACA,WAAO,mBAAmB,iBAAiB,qBAAqB,MAAM,GAAG,CAAC,CAAC;AAAA,EAC7E;AAEA,SAAO,CAAA;AACT;AAEO,SAAS,cAAc,KAAoC;AAChE,SAAO,OAAO,OAAO,IAAI,SAAS,CAAA,CAAE,EAAE;AAAA,IAAQ,CAAC,SAC7C,OAAO,OAAO,QAAQ,CAAA,CAAE;AAAA,EAAA;AAE5B;"}
@@ -1,2 +0,0 @@
1
- export declare function useActiveServer(): void;
2
- //# sourceMappingURL=useActiveServer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useActiveServer.d.ts","sourceRoot":"","sources":["../../src/hooks/useActiveServer.ts"],"names":[],"mappings":"AAMA,wBAAgB,eAAe,SAe9B"}
@@ -1,20 +0,0 @@
1
- import { computed, watch } from "vue";
2
- import { getSelectedServer } from "@scalar/api-client/v2/features/operation";
3
- import { useState } from "../state/state.js";
4
- function useActiveServer() {
5
- const state = useState();
6
- const server = computed(
7
- () => getSelectedServer(state.workspaceStore.workspace.activeDocument ?? null)
8
- );
9
- watch(
10
- server,
11
- () => {
12
- if (server.value) state.activeServer.value = server.value;
13
- },
14
- { immediate: true }
15
- );
16
- }
17
- export {
18
- useActiveServer
19
- };
20
- //# sourceMappingURL=useActiveServer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useActiveServer.js","sources":["../../src/hooks/useActiveServer.ts"],"sourcesContent":["import { computed, watch } from 'vue'\n\nimport { getSelectedServer } from '@scalar/api-client/v2/features/operation'\n\nimport { useState } from '@/state/state'\n\nexport function useActiveServer() {\n const state = useState()\n\n /** Compute the selected server for the document only (for now) */\n const server = computed(() =>\n getSelectedServer(state.workspaceStore.workspace.activeDocument ?? null),\n )\n\n watch(\n server,\n () => {\n if (server.value) state.activeServer.value = server.value\n },\n { immediate: true },\n )\n}\n"],"names":[],"mappings":";;;AAMO,SAAS,kBAAkB;AAChC,QAAM,QAAQ,SAAA;AAGd,QAAM,SAAS;AAAA,IAAS,MACtB,kBAAkB,MAAM,eAAe,UAAU,kBAAkB,IAAI;AAAA,EAAA;AAGzE;AAAA,IACE;AAAA,IACA,MAAM;AACJ,UAAI,OAAO,MAAO,OAAM,aAAa,QAAQ,OAAO;AAAA,IACtD;AAAA,IACA,EAAE,WAAW,KAAA;AAAA,EAAK;AAEtB;"}
@@ -1,2 +0,0 @@
1
- export declare function useSecuritySchemes(): void;
2
- //# sourceMappingURL=useSecuritySchemes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useSecuritySchemes.d.ts","sourceRoot":"","sources":["../../src/hooks/useSecuritySchemes.ts"],"names":[],"mappings":"AAOA,wBAAgB,kBAAkB,SAuBjC"}