@scalar/agent-chat 0.1.2 → 0.2.1

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 (224) hide show
  1. package/dist/App.vue.d.ts +2 -2
  2. package/dist/App.vue.d.ts.map +1 -1
  3. package/dist/App.vue.js +9 -3
  4. package/dist/App.vue.js.map +1 -1
  5. package/dist/Chat.vue.js +3 -3
  6. package/dist/Chat.vue.js.map +1 -1
  7. package/dist/components/ApprovalSection.vue.d.ts +9 -0
  8. package/dist/components/ApprovalSection.vue.d.ts.map +1 -0
  9. package/dist/components/ApprovalSection.vue.js +8 -0
  10. package/dist/components/ApprovalSection.vue.js.map +1 -0
  11. package/dist/components/ApprovalSection.vue2.js +47 -0
  12. package/dist/components/ApprovalSection.vue2.js.map +1 -0
  13. package/dist/components/AutosendPaused.vue.d.ts +3 -0
  14. package/dist/components/AutosendPaused.vue.d.ts.map +1 -0
  15. package/dist/components/AutosendPaused.vue.js +15 -0
  16. package/dist/components/AutosendPaused.vue.js.map +1 -0
  17. package/dist/components/ContextItem.vue.d.ts.map +1 -1
  18. package/dist/components/ContextItem.vue.js +1 -1
  19. package/dist/components/ContextItem.vue2.js +1 -1
  20. package/dist/components/ContextItem.vue2.js.map +1 -1
  21. package/dist/components/ErrorMessage.vue.d.ts +6 -0
  22. package/dist/components/ErrorMessage.vue.d.ts.map +1 -0
  23. package/dist/components/ErrorMessage.vue.js +8 -0
  24. package/dist/components/ErrorMessage.vue.js.map +1 -0
  25. package/dist/components/ErrorMessage.vue2.js +28 -0
  26. package/dist/components/ErrorMessage.vue2.js.map +1 -0
  27. package/dist/components/LoadingMiniOpenAPIDoc.vue.d.ts.map +1 -1
  28. package/dist/components/LoadingMiniOpenAPIDoc.vue.js +2 -18
  29. package/dist/components/LoadingMiniOpenAPIDoc.vue.js.map +1 -1
  30. package/dist/components/LoadingOpenAPISpecsSummary.vue.d.ts +3 -0
  31. package/dist/components/LoadingOpenAPISpecsSummary.vue.d.ts.map +1 -0
  32. package/dist/components/LoadingOpenAPISpecsSummary.vue.js +16 -0
  33. package/dist/components/LoadingOpenAPISpecsSummary.vue.js.map +1 -0
  34. package/dist/components/RequestApproved.vue.d.ts +3 -0
  35. package/dist/components/RequestApproved.vue.d.ts.map +1 -0
  36. package/dist/components/RequestApproved.vue.js +15 -0
  37. package/dist/components/RequestApproved.vue.js.map +1 -0
  38. package/dist/components/RequestFailed.vue.d.ts +3 -0
  39. package/dist/components/RequestFailed.vue.d.ts.map +1 -0
  40. package/dist/components/RequestFailed.vue.js +26 -0
  41. package/dist/components/RequestFailed.vue.js.map +1 -0
  42. package/dist/components/RequestPreview.vue.d.ts +10 -0
  43. package/dist/components/RequestPreview.vue.d.ts.map +1 -0
  44. package/dist/components/RequestPreview.vue.js +9 -0
  45. package/dist/components/RequestPreview.vue.js.map +1 -0
  46. package/dist/components/RequestPreview.vue2.js +150 -0
  47. package/dist/components/RequestPreview.vue2.js.map +1 -0
  48. package/dist/components/RequestRejected.vue.d.ts +3 -0
  49. package/dist/components/RequestRejected.vue.d.ts.map +1 -0
  50. package/dist/components/RequestRejected.vue.js +24 -0
  51. package/dist/components/RequestRejected.vue.js.map +1 -0
  52. package/dist/components/RequestSuccess.vue.d.ts +3 -0
  53. package/dist/components/RequestSuccess.vue.d.ts.map +1 -0
  54. package/dist/components/RequestSuccess.vue.js +15 -0
  55. package/dist/components/RequestSuccess.vue.js.map +1 -0
  56. package/dist/components/ResponseBody/ResponseBody.vue.d.ts +15 -0
  57. package/dist/components/ResponseBody/ResponseBody.vue.d.ts.map +1 -0
  58. package/dist/components/ResponseBody/ResponseBody.vue.js +45 -0
  59. package/dist/components/ResponseBody/ResponseBody.vue.js.map +1 -0
  60. package/dist/components/ResponseBody/ResponseBody.vue2.js +5 -0
  61. package/dist/components/ResponseBody/ResponseBody.vue2.js.map +1 -0
  62. package/dist/components/ResponseBody/ResponseBodyInfo.vue.d.ts +13 -0
  63. package/dist/components/ResponseBody/ResponseBodyInfo.vue.d.ts.map +1 -0
  64. package/dist/components/ResponseBody/ResponseBodyInfo.vue.js +17 -0
  65. package/dist/components/ResponseBody/ResponseBodyInfo.vue.js.map +1 -0
  66. package/dist/components/ResponseBody/ResponseBodyPreview.vue.d.ts +10 -0
  67. package/dist/components/ResponseBody/ResponseBodyPreview.vue.d.ts.map +1 -0
  68. package/dist/components/ResponseBody/ResponseBodyPreview.vue.js +8 -0
  69. package/dist/components/ResponseBody/ResponseBodyPreview.vue.js.map +1 -0
  70. package/dist/components/ResponseBody/ResponseBodyPreview.vue2.js +73 -0
  71. package/dist/components/ResponseBody/ResponseBodyPreview.vue2.js.map +1 -0
  72. package/dist/components/ResponseBody/ResponseBodyRaw.vue.d.ts +7 -0
  73. package/dist/components/ResponseBody/ResponseBodyRaw.vue.d.ts.map +1 -0
  74. package/dist/components/ResponseBody/ResponseBodyRaw.vue.js +23 -0
  75. package/dist/components/ResponseBody/ResponseBodyRaw.vue.js.map +1 -0
  76. package/dist/components/ResponseBody/ResponseBodyRaw.vue2.js +5 -0
  77. package/dist/components/ResponseBody/ResponseBodyRaw.vue2.js.map +1 -0
  78. package/dist/components/ResponseBody/ResponseBodyToggle.vue.d.ts +10 -0
  79. package/dist/components/ResponseBody/ResponseBodyToggle.vue.d.ts.map +1 -0
  80. package/dist/components/ResponseBody/ResponseBodyToggle.vue.js +30 -0
  81. package/dist/components/ResponseBody/ResponseBodyToggle.vue.js.map +1 -0
  82. package/dist/components/ResponseBody/ResponseBodyToggle.vue2.js +5 -0
  83. package/dist/components/ResponseBody/ResponseBodyToggle.vue2.js.map +1 -0
  84. package/dist/components/ResponseBody/helpers/media-types.d.ts +15 -0
  85. package/dist/components/ResponseBody/helpers/media-types.d.ts.map +1 -0
  86. package/dist/components/ResponseBody/helpers/media-types.js +134 -0
  87. package/dist/components/ResponseBody/helpers/media-types.js.map +1 -0
  88. package/dist/components/ResponseBody/helpers/process-response-body.d.ts +10 -0
  89. package/dist/components/ResponseBody/helpers/process-response-body.d.ts.map +1 -0
  90. package/dist/components/ResponseBody/helpers/process-response-body.js +63 -0
  91. package/dist/components/ResponseBody/helpers/process-response-body.js.map +1 -0
  92. package/dist/components/SearchPopover.vue.d.ts +13 -0
  93. package/dist/components/SearchPopover.vue.d.ts.map +1 -0
  94. package/dist/components/SearchPopover.vue.js +8 -0
  95. package/dist/components/SearchPopover.vue.js.map +1 -0
  96. package/dist/components/SearchPopover.vue2.js +78 -0
  97. package/dist/components/SearchPopover.vue2.js.map +1 -0
  98. package/dist/components/SendingRequest.vue.d.ts.map +1 -1
  99. package/dist/components/SendingRequest.vue.js +1 -1
  100. package/dist/components/SendingRequest.vue.js.map +1 -1
  101. package/dist/components/Suggestion.vue.d.ts.map +1 -1
  102. package/dist/components/Suggestion.vue.js +1 -1
  103. package/dist/components/Suggestion.vue2.js +1 -1
  104. package/dist/components/Suggestion.vue2.js.map +1 -1
  105. package/dist/components/TestRequestButton.vue2.js +1 -1
  106. package/dist/components/TestRequestButton.vue2.js.map +1 -1
  107. package/dist/helpers.d.ts +379 -0
  108. package/dist/helpers.d.ts.map +1 -1
  109. package/dist/helpers.js +135 -45
  110. package/dist/helpers.js.map +1 -1
  111. package/dist/hooks/useChatApprovals.d.ts +24 -0
  112. package/dist/hooks/useChatApprovals.d.ts.map +1 -0
  113. package/dist/hooks/useChatApprovals.js +25 -0
  114. package/dist/hooks/useChatApprovals.js.map +1 -0
  115. package/dist/hooks/useChatOperationBlocks.js +1 -1
  116. package/dist/hooks/useSearch.d.ts +26 -0
  117. package/dist/hooks/useSearch.d.ts.map +1 -0
  118. package/dist/hooks/useSearch.js +36 -0
  119. package/dist/hooks/useSearch.js.map +1 -0
  120. package/dist/node_modules/.pnpm/{zod@4.1.11 → zod@4.3.5}/node_modules/zod/v4/core/api.js +1 -0
  121. package/dist/node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/core/api.js.map +1 -0
  122. package/dist/node_modules/.pnpm/{zod@4.1.11 → zod@4.3.5}/node_modules/zod/v4/core/core.js +20 -11
  123. package/dist/node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/core/core.js.map +1 -0
  124. package/dist/node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/core/errors.js.map +1 -0
  125. package/dist/node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/core/parse.js.map +1 -0
  126. package/dist/node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/core/regexes.js.map +1 -0
  127. package/dist/node_modules/.pnpm/{zod@4.1.11 → zod@4.3.5}/node_modules/zod/v4/core/schemas.js +3 -3
  128. package/dist/node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/core/schemas.js.map +1 -0
  129. package/dist/node_modules/.pnpm/{zod@4.1.11 → zod@4.3.5}/node_modules/zod/v4/core/util.js +24 -0
  130. package/dist/node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/core/util.js.map +1 -0
  131. package/dist/node_modules/.pnpm/{zod@4.1.11 → zod@4.3.5}/node_modules/zod/v4/core/versions.js +2 -2
  132. package/dist/node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/core/versions.js.map +1 -0
  133. package/dist/node_modules/.pnpm/{zod@4.1.11 → zod@4.3.5}/node_modules/zod/v4/mini/schemas.js +12 -11
  134. package/dist/node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/mini/schemas.js.map +1 -0
  135. package/dist/package.json +9 -5
  136. package/dist/registry/add-documents-to-store.d.ts +21 -0
  137. package/dist/registry/add-documents-to-store.d.ts.map +1 -0
  138. package/dist/registry/add-documents-to-store.js +42 -0
  139. package/dist/registry/add-documents-to-store.js.map +1 -0
  140. package/dist/state/state.d.ts +29 -14
  141. package/dist/state/state.d.ts.map +1 -1
  142. package/dist/state/state.js +45 -40
  143. package/dist/state/state.js.map +1 -1
  144. package/dist/style.css +686 -234
  145. package/dist/views/Chat/Chat.vue.d.ts.map +1 -1
  146. package/dist/views/Chat/Chat.vue.js +1 -1
  147. package/dist/views/Chat/Chat.vue2.js +17 -5
  148. package/dist/views/Chat/Chat.vue2.js.map +1 -1
  149. package/dist/views/Chat/Messages/ExecuteRequestTool.vue.d.ts.map +1 -1
  150. package/dist/views/Chat/Messages/ExecuteRequestTool.vue.js +1 -1
  151. package/dist/views/Chat/Messages/ExecuteRequestTool.vue2.js +20 -43
  152. package/dist/views/Chat/Messages/ExecuteRequestTool.vue2.js.map +1 -1
  153. package/dist/views/Chat/Messages/GetMiniOpenAPIDocTool.vue.d.ts.map +1 -1
  154. package/dist/views/Chat/Messages/GetMiniOpenAPIDocTool.vue.js +1 -1
  155. package/dist/views/Chat/Messages/GetMiniOpenAPIDocTool.vue2.js +2 -3
  156. package/dist/views/Chat/Messages/GetMiniOpenAPIDocTool.vue2.js.map +1 -1
  157. package/dist/views/Chat/Messages/GetOpenAPISpecsSummary.vue.d.ts +11 -0
  158. package/dist/views/Chat/Messages/GetOpenAPISpecsSummary.vue.d.ts.map +1 -0
  159. package/dist/views/Chat/Messages/GetOpenAPISpecsSummary.vue.js +32 -0
  160. package/dist/views/Chat/Messages/GetOpenAPISpecsSummary.vue.js.map +1 -0
  161. package/dist/views/Chat/Messages/GetOpenAPISpecsSummary.vue2.js +5 -0
  162. package/dist/views/Chat/Messages/GetOpenAPISpecsSummary.vue2.js.map +1 -0
  163. package/dist/views/Chat/Messages/Text.vue.js +1 -1
  164. package/dist/views/Chat/Messages/Text.vue.js.map +1 -1
  165. package/dist/views/Layout.vue.d.ts.map +1 -1
  166. package/dist/views/Layout.vue.js +1 -1
  167. package/dist/views/Layout.vue2.js +0 -4
  168. package/dist/views/Layout.vue2.js.map +1 -1
  169. package/dist/views/PromptForm.vue.d.ts.map +1 -1
  170. package/dist/views/PromptForm.vue.js +1 -1
  171. package/dist/views/PromptForm.vue2.js +129 -72
  172. package/dist/views/PromptForm.vue2.js.map +1 -1
  173. package/dist/views/{Auth.vue.d.ts → Settings/Auth.vue.d.ts} +1 -0
  174. package/dist/views/Settings/Auth.vue.d.ts.map +1 -0
  175. package/dist/views/{Auth.vue.js → Settings/Auth.vue.js} +21 -26
  176. package/dist/views/Settings/Auth.vue.js.map +1 -0
  177. package/dist/views/Settings/DocSettings.vue.d.ts +8 -0
  178. package/dist/views/Settings/DocSettings.vue.d.ts.map +1 -0
  179. package/dist/views/Settings/DocSettings.vue.js +8 -0
  180. package/dist/views/Settings/DocSettings.vue.js.map +1 -0
  181. package/dist/views/Settings/DocSettings.vue2.js +50 -0
  182. package/dist/views/Settings/DocSettings.vue2.js.map +1 -0
  183. package/dist/views/Settings/Settings.vue.d.ts.map +1 -0
  184. package/dist/views/{Settings.vue.js → Settings/Settings.vue.js} +2 -2
  185. package/dist/views/Settings/Settings.vue2.js +78 -0
  186. package/dist/views/Settings/Settings.vue2.js.map +1 -0
  187. package/dist/views/Start.vue.d.ts.map +1 -1
  188. package/dist/views/Start.vue.js +1 -1
  189. package/dist/views/Start.vue2.js +0 -1
  190. package/dist/views/Start.vue2.js.map +1 -1
  191. package/package.json +3 -33
  192. package/dist/hooks/useActiveServer.d.ts +0 -2
  193. package/dist/hooks/useActiveServer.d.ts.map +0 -1
  194. package/dist/hooks/useActiveServer.js +0 -20
  195. package/dist/hooks/useActiveServer.js.map +0 -1
  196. package/dist/hooks/useSecuritySchemes.d.ts +0 -2
  197. package/dist/hooks/useSecuritySchemes.d.ts.map +0 -1
  198. package/dist/hooks/useSecuritySchemes.js +0 -29
  199. package/dist/hooks/useSecuritySchemes.js.map +0 -1
  200. package/dist/node_modules/.pnpm/zod@4.1.11/node_modules/zod/v4/core/api.js.map +0 -1
  201. package/dist/node_modules/.pnpm/zod@4.1.11/node_modules/zod/v4/core/core.js.map +0 -1
  202. package/dist/node_modules/.pnpm/zod@4.1.11/node_modules/zod/v4/core/errors.js.map +0 -1
  203. package/dist/node_modules/.pnpm/zod@4.1.11/node_modules/zod/v4/core/parse.js.map +0 -1
  204. package/dist/node_modules/.pnpm/zod@4.1.11/node_modules/zod/v4/core/regexes.js.map +0 -1
  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.map +0 -1
  207. package/dist/node_modules/.pnpm/zod@4.1.11/node_modules/zod/v4/core/versions.js.map +0 -1
  208. package/dist/node_modules/.pnpm/zod@4.1.11/node_modules/zod/v4/mini/schemas.js.map +0 -1
  209. package/dist/registry/get-document.d.ts +0 -4
  210. package/dist/registry/get-document.d.ts.map +0 -1
  211. package/dist/registry/get-document.js +0 -23
  212. package/dist/registry/get-document.js.map +0 -1
  213. package/dist/views/Auth.vue.d.ts.map +0 -1
  214. package/dist/views/Auth.vue.js.map +0 -1
  215. package/dist/views/Settings.vue.d.ts.map +0 -1
  216. package/dist/views/Settings.vue2.js +0 -81
  217. package/dist/views/Settings.vue2.js.map +0 -1
  218. /package/dist/node_modules/.pnpm/{zod@4.1.11 → zod@4.3.5}/node_modules/zod/v4/core/errors.js +0 -0
  219. /package/dist/node_modules/.pnpm/{zod@4.1.11 → zod@4.3.5}/node_modules/zod/v4/core/parse.js +0 -0
  220. /package/dist/node_modules/.pnpm/{zod@4.1.11 → zod@4.3.5}/node_modules/zod/v4/core/regexes.js +0 -0
  221. /package/dist/views/{Auth.vue2.js → Settings/Auth.vue2.js} +0 -0
  222. /package/dist/views/{Auth.vue2.js.map → Settings/Auth.vue2.js.map} +0 -0
  223. /package/dist/views/{Settings.vue.d.ts → Settings/Settings.vue.d.ts} +0 -0
  224. /package/dist/views/{Settings.vue.js.map → Settings/Settings.vue.js.map} +0 -0
@@ -1,14 +1,17 @@
1
1
  import { Chat } from '@ai-sdk/vue';
2
2
  import { type UIDataTypes, type UIMessage } from 'ai';
3
3
  import { type ComputedRef, type InjectionKey, type Ref } from 'vue';
4
+ import type z from 'zod';
4
5
  import { type ModalState } from '@scalar/components';
5
- import type { OpenAPI } from '@scalar/openapi-types';
6
6
  import { type ApiReferenceConfigurationRaw } from '@scalar/types';
7
7
  import { type WorkspaceStore } from '@scalar/workspace-store/client';
8
8
  import { type WorkspaceEventBus } from '@scalar/workspace-store/events';
9
- import type { SecuritySchemeObject } from '@scalar/workspace-store/schemas/v3.1/strict/security-scheme';
10
- import type { ServerObject } from '@scalar/workspace-store/schemas/v3.1/strict/server';
11
- import { EXECUTE_REQUEST_TOOL_NAME, type ExecuteRequestToolInput, type ExecuteRequestToolOutput, GET_MINI_OPENAPI_SPEC_TOOL_NAME, type GetMiniOpenAPIDocToolInput, type GetMiniOpenAPIDocToolOutput } from '@scalar-org/entities/agent/tools';
9
+ import type { agentRoutes } from '@scalar-org/entities/agent';
10
+ import { EXECUTE_REQUEST_TOOL_NAME, type ExecuteRequestToolInput, type ExecuteRequestToolOutput, GET_MINI_OPENAPI_SPEC_TOOL_NAME, GET_OPENAPI_SPECS_SUMMARY_TOOL_NAME, type GetMiniOpenAPIDocToolInput, type GetMiniOpenAPIDocToolOutput, type GetOpenAPISpecsSummaryToolOutput } from '@scalar-org/entities/agent/tools';
11
+ export type RegistryDocument = {
12
+ namespace: string;
13
+ slug: string;
14
+ };
12
15
  export type Tools = {
13
16
  [GET_MINI_OPENAPI_SPEC_TOOL_NAME]: {
14
17
  input: GetMiniOpenAPIDocToolInput;
@@ -18,29 +21,41 @@ export type Tools = {
18
21
  input: ExecuteRequestToolInput;
19
22
  output: ExecuteRequestToolOutput;
20
23
  };
24
+ [GET_OPENAPI_SPECS_SUMMARY_TOOL_NAME]: {
25
+ input: object;
26
+ output: GetOpenAPISpecsSummaryToolOutput;
27
+ };
21
28
  };
29
+ export declare const STATE_SYMBOL: InjectionKey<State>;
30
+ export type ApiMetadata = z.output<typeof agentRoutes.registry.search.responseSchema>['results'][number];
22
31
  type State = {
23
- mode: Ref<'search' | 'agent'>;
24
32
  prompt: Ref<string>;
25
33
  chat: Chat<UIMessage<unknown, UIDataTypes, Tools>>;
26
34
  workspaceStore: WorkspaceStore;
27
- dereferencedDocument: Ref<OpenAPI.Document | null>;
28
35
  loading: ComputedRef<boolean>;
29
36
  settingsModal: ModalState;
30
- securitySchemes: Ref<SecuritySchemeObject[]>;
31
- activeServer: Ref<ServerObject | undefined>;
32
- proxyUrl: Ref<string | undefined>;
33
37
  eventBus: WorkspaceEventBus;
34
- config: Ref<ApiReferenceConfigurationRaw>;
38
+ proxyUrl: Ref<string | undefined>;
39
+ config: ComputedRef<ApiReferenceConfigurationRaw>;
35
40
  registryUrl: string;
36
41
  baseUrl: string;
42
+ registryDocuments: Ref<ApiMetadata[]>;
43
+ addDocument: (document: {
44
+ namespace: string;
45
+ slug: string;
46
+ }) => void;
47
+ removeDocument: (document: {
48
+ namespace: string;
49
+ slug: string;
50
+ }) => void;
37
51
  };
38
- export declare const STATE_SYMBOL: InjectionKey<State>;
39
- export declare function createState({ registryUrl, baseUrl, namespace, slug, }: {
52
+ export declare function createState({ initialRegistryDocuments, registryUrl, baseUrl, }: {
53
+ initialRegistryDocuments: {
54
+ namespace: string;
55
+ slug: string;
56
+ }[];
40
57
  registryUrl: string;
41
58
  baseUrl: string;
42
- namespace: string;
43
- slug: string;
44
59
  }): State;
45
60
  export declare function useState(): State;
46
61
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/state/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAClC,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,SAAS,EACf,MAAM,IAAI,CAAA;AACX,OAAO,EACL,KAAK,WAAW,EAEhB,KAAK,YAAY,EAEjB,KAAK,GAAG,EAGT,MAAM,KAAK,CAAA;AAEZ,OAAO,EAAE,KAAK,UAAU,EAAY,MAAM,oBAAoB,CAAA;AAC9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EACL,KAAK,4BAA4B,EAElC,MAAM,eAAe,CAAA;AACtB,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,gCAAgC,CAAA;AACvC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6DAA6D,CAAA;AACvG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oDAAoD,CAAA;AACtF,OAAO,EACL,yBAAyB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,+BAA+B,EAC/B,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EACjC,MAAM,kCAAkC,CAAA;AAIzC,MAAM,MAAM,KAAK,GAAG;IAClB,CAAC,+BAA+B,CAAC,EAAE;QACjC,KAAK,EAAE,0BAA0B,CAAA;QACjC,MAAM,EAAE,2BAA2B,CAAA;KACpC,CAAA;IACD,CAAC,yBAAyB,CAAC,EAAE;QAC3B,KAAK,EAAE,uBAAuB,CAAA;QAC9B,MAAM,EAAE,wBAAwB,CAAA;KACjC,CAAA;CACF,CAAA;AAED,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAA;IAC7B,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACnB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAA;IAClD,cAAc,EAAE,cAAc,CAAA;IAC9B,oBAAoB,EAAE,GAAG,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAA;IAClD,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IAC7B,aAAa,EAAE,UAAU,CAAA;IACzB,eAAe,EAAE,GAAG,CAAC,oBAAoB,EAAE,CAAC,CAAA;IAC5C,YAAY,EAAE,GAAG,CAAC,YAAY,GAAG,SAAS,CAAC,CAAA;IAC3C,QAAQ,EAAE,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IACjC,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,MAAM,EAAE,GAAG,CAAC,4BAA4B,CAAC,CAAA;IACzC,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,YAAY,CAAC,KAAK,CAA0B,CAAA;AAqCvE,wBAAgB,WAAW,CAAC,EAC1B,WAAW,EACX,OAAO,EACP,SAAS,EACT,IAAI,GACL,EAAE;IACD,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;CACb,GAAG,KAAK,CAkER;AAED,wBAAgB,QAAQ,UAKvB"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/state/state.ts"],"names":[],"mappings":"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"}
@@ -5,15 +5,12 @@ import { useModal } from "@scalar/components";
5
5
  import { apiReferenceConfigurationSchema } from "@scalar/types";
6
6
  import { createWorkspaceStore } from "@scalar/workspace-store/client";
7
7
  import { createWorkspaceEventBus } from "@scalar/workspace-store/events";
8
- import { getDocument } from "../registry/get-document.js";
8
+ import { createDocumentSettings } from "../helpers.js";
9
+ import { loadDocument } from "../registry/add-documents-to-store.js";
9
10
  const STATE_SYMBOL = Symbol("STATE_SYMBOL");
10
11
  function createChat({
11
- securitySchemes,
12
- mode,
13
- activeServer,
14
- namespace,
15
- proxyUrl,
16
- slug,
12
+ registryDocuments,
13
+ workspaceStore,
17
14
  baseUrl
18
15
  }) {
19
16
  return new Chat({
@@ -21,31 +18,21 @@ function createChat({
21
18
  transport: new DefaultChatTransport({
22
19
  api: `${baseUrl}/vector/openapi/chat`,
23
20
  body: () => ({
24
- namespace,
25
- slug,
26
- securitySchemes: securitySchemes.value,
27
- activeServerUrl: activeServer.value?.url,
28
- mode: mode.value,
29
- ...proxyUrl.value && {
30
- proxyUrl: proxyUrl.value
31
- }
21
+ registryDocuments: registryDocuments.value,
22
+ documentSettings: createDocumentSettings(workspaceStore)
32
23
  })
33
24
  })
34
25
  });
35
26
  }
36
27
  function createState({
28
+ initialRegistryDocuments,
37
29
  registryUrl,
38
- baseUrl,
39
- namespace,
40
- slug
30
+ baseUrl
41
31
  }) {
42
- const mode = ref("search");
43
32
  const prompt = ref("");
44
- const dereferencedDocument = ref(null);
45
- const securitySchemes = ref([]);
46
- const activeServer = ref();
47
- const proxyUrl = ref("https://proxy.scalar.com");
48
33
  const eventBus = createWorkspaceEventBus();
34
+ const registryDocuments = ref([]);
35
+ const proxyUrl = ref("https://proxy.scalar.com");
49
36
  const config = computed(
50
37
  () => apiReferenceConfigurationSchema.parse({
51
38
  proxyUrl: proxyUrl.value,
@@ -54,19 +41,10 @@ function createState({
54
41
  );
55
42
  const workspaceStore = createWorkspaceStore();
56
43
  const chat = createChat({
57
- securitySchemes,
58
- mode,
59
- namespace,
60
- slug,
61
- activeServer,
62
- proxyUrl,
44
+ registryDocuments,
45
+ workspaceStore,
63
46
  baseUrl
64
47
  });
65
- getDocument(workspaceStore, namespace, slug, config.value, registryUrl).then(
66
- (schema) => {
67
- if (schema) dereferencedDocument.value = schema;
68
- }
69
- );
70
48
  const loading = computed(
71
49
  () => chat.status === "submitted" || chat.status === "streaming" && !chat.lastMessage?.parts.some((part) => part.type === "text")
72
50
  );
@@ -77,21 +55,48 @@ function createState({
77
55
  }
78
56
  );
79
57
  const settingsModal = useModal();
58
+ function addDocument({
59
+ namespace,
60
+ slug
61
+ }) {
62
+ const matchingDoc = registryDocuments.value.find(
63
+ (doc) => doc.namespace === namespace && doc.slug === slug
64
+ );
65
+ if (matchingDoc) return;
66
+ loadDocument({
67
+ namespace,
68
+ slug,
69
+ baseUrl,
70
+ workspaceStore,
71
+ registryUrl,
72
+ registryDocuments,
73
+ config: config.value
74
+ });
75
+ }
76
+ function removeDocument({
77
+ namespace,
78
+ slug
79
+ }) {
80
+ registryDocuments.value = registryDocuments.value.filter(
81
+ (doc) => !(doc.namespace === namespace && doc.slug === slug)
82
+ );
83
+ workspaceStore.deleteDocument(`${namespace}/${slug}`);
84
+ }
85
+ initialRegistryDocuments.forEach(addDocument);
80
86
  return {
81
- mode,
82
87
  prompt,
83
88
  chat,
84
89
  workspaceStore,
85
- dereferencedDocument,
86
90
  loading,
87
91
  settingsModal,
88
- securitySchemes,
89
- activeServer,
90
- proxyUrl,
91
92
  eventBus,
92
93
  config,
93
94
  registryUrl,
94
- baseUrl
95
+ baseUrl,
96
+ registryDocuments,
97
+ addDocument,
98
+ removeDocument,
99
+ proxyUrl
95
100
  };
96
101
  }
97
102
  function useState() {
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sources":["../../src/state/state.ts"],"sourcesContent":["import { Chat } from '@ai-sdk/vue'\nimport {\n DefaultChatTransport,\n lastAssistantMessageIsCompleteWithApprovalResponses,\n type UIDataTypes,\n type UIMessage,\n} from 'ai'\nimport {\n type ComputedRef,\n computed,\n type InjectionKey,\n inject,\n type Ref,\n ref,\n watch,\n} from 'vue'\n\nimport { type ModalState, useModal } from '@scalar/components'\nimport type { OpenAPI } from '@scalar/openapi-types'\nimport {\n type ApiReferenceConfigurationRaw,\n apiReferenceConfigurationSchema,\n} from '@scalar/types'\nimport {\n createWorkspaceStore,\n type WorkspaceStore,\n} from '@scalar/workspace-store/client'\nimport {\n createWorkspaceEventBus,\n type WorkspaceEventBus,\n} from '@scalar/workspace-store/events'\nimport type { SecuritySchemeObject } from '@scalar/workspace-store/schemas/v3.1/strict/security-scheme'\nimport type { ServerObject } from '@scalar/workspace-store/schemas/v3.1/strict/server'\nimport {\n EXECUTE_REQUEST_TOOL_NAME,\n type ExecuteRequestToolInput,\n type ExecuteRequestToolOutput,\n GET_MINI_OPENAPI_SPEC_TOOL_NAME,\n type GetMiniOpenAPIDocToolInput,\n type GetMiniOpenAPIDocToolOutput,\n} from '@scalar-org/entities/agent/tools'\n\nimport { getDocument } from '@/registry/get-document'\n\nexport type Tools = {\n [GET_MINI_OPENAPI_SPEC_TOOL_NAME]: {\n input: GetMiniOpenAPIDocToolInput\n output: GetMiniOpenAPIDocToolOutput\n }\n [EXECUTE_REQUEST_TOOL_NAME]: {\n input: ExecuteRequestToolInput\n output: ExecuteRequestToolOutput\n }\n}\n\ntype State = {\n mode: Ref<'search' | 'agent'>\n prompt: Ref<string>\n chat: Chat<UIMessage<unknown, UIDataTypes, Tools>>\n workspaceStore: WorkspaceStore\n dereferencedDocument: Ref<OpenAPI.Document | null>\n loading: ComputedRef<boolean>\n settingsModal: ModalState\n securitySchemes: Ref<SecuritySchemeObject[]>\n activeServer: Ref<ServerObject | undefined>\n proxyUrl: Ref<string | undefined>\n eventBus: WorkspaceEventBus\n config: Ref<ApiReferenceConfigurationRaw>\n registryUrl: string\n baseUrl: string\n}\n\nexport const STATE_SYMBOL: InjectionKey<State> = Symbol('STATE_SYMBOL')\n\nfunction createChat({\n securitySchemes,\n mode,\n activeServer,\n namespace,\n proxyUrl,\n slug,\n baseUrl,\n}: {\n securitySchemes: State['securitySchemes']\n mode: State['mode']\n activeServer: State['activeServer']\n proxyUrl: State['proxyUrl']\n namespace: string\n slug: string\n baseUrl: string\n}) {\n return new Chat<UIMessage<unknown, UIDataTypes, Tools>>({\n sendAutomaticallyWhen: lastAssistantMessageIsCompleteWithApprovalResponses,\n transport: new DefaultChatTransport({\n api: `${baseUrl}/vector/openapi/chat`,\n body: () => ({\n namespace,\n slug,\n securitySchemes: securitySchemes.value,\n activeServerUrl: activeServer.value?.url,\n mode: mode.value,\n ...(proxyUrl.value && {\n proxyUrl: proxyUrl.value,\n }),\n }),\n }),\n })\n}\n\nexport function createState({\n registryUrl,\n baseUrl,\n namespace,\n slug,\n}: {\n registryUrl: string\n baseUrl: string\n namespace: string\n slug: string\n}): State {\n const mode = ref<State['mode']['value']>('search')\n const prompt = ref<State['prompt']['value']>('')\n const dereferencedDocument = ref<OpenAPI.Document | null>(null)\n const securitySchemes = ref<State['securitySchemes']['value']>([])\n const activeServer = ref<State['activeServer']['value']>()\n const proxyUrl = ref<State['proxyUrl']['value']>('https://proxy.scalar.com')\n const eventBus = createWorkspaceEventBus()\n\n const config = computed(() =>\n apiReferenceConfigurationSchema.parse({\n proxyUrl: proxyUrl.value,\n persistAuth: true,\n }),\n )\n\n const workspaceStore = createWorkspaceStore()\n\n const chat = createChat({\n securitySchemes,\n mode,\n namespace,\n slug,\n activeServer,\n proxyUrl,\n baseUrl,\n })\n\n getDocument(workspaceStore, namespace, slug, config.value, registryUrl).then(\n (schema) => {\n if (schema) dereferencedDocument.value = schema\n },\n )\n\n const loading = computed(\n () =>\n chat.status === 'submitted' ||\n (chat.status === 'streaming' &&\n !chat.lastMessage?.parts.some((part) => part.type === 'text')),\n )\n\n watch(\n () => chat.status,\n () => {\n if (chat.status === 'streaming') prompt.value = ''\n },\n )\n\n const settingsModal = useModal()\n\n return {\n mode,\n prompt,\n chat,\n workspaceStore,\n dereferencedDocument,\n loading,\n settingsModal,\n securitySchemes,\n activeServer,\n proxyUrl,\n eventBus,\n config,\n registryUrl,\n baseUrl,\n }\n}\n\nexport function useState() {\n const state = inject(STATE_SYMBOL)\n if (!state) throw new Error('No state provided.')\n\n return state\n}\n"],"names":[],"mappings":";;;;;;;;AAwEO,MAAM,eAAoC,OAAO,cAAc;AAEtE,SAAS,WAAW;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAQG;AACD,SAAO,IAAI,KAA6C;AAAA,IACtD,uBAAuB;AAAA,IACvB,WAAW,IAAI,qBAAqB;AAAA,MAClC,KAAK,GAAG,OAAO;AAAA,MACf,MAAM,OAAO;AAAA,QACX;AAAA,QACA;AAAA,QACA,iBAAiB,gBAAgB;AAAA,QACjC,iBAAiB,aAAa,OAAO;AAAA,QACrC,MAAM,KAAK;AAAA,QACX,GAAI,SAAS,SAAS;AAAA,UACpB,UAAU,SAAS;AAAA,QAAA;AAAA,MACrB;AAAA,IACF,CACD;AAAA,EAAA,CACF;AACH;AAEO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAKU;AACR,QAAM,OAAO,IAA4B,QAAQ;AACjD,QAAM,SAAS,IAA8B,EAAE;AAC/C,QAAM,uBAAuB,IAA6B,IAAI;AAC9D,QAAM,kBAAkB,IAAuC,EAAE;AACjE,QAAM,eAAe,IAAA;AACrB,QAAM,WAAW,IAAgC,0BAA0B;AAC3E,QAAM,WAAW,wBAAA;AAEjB,QAAM,SAAS;AAAA,IAAS,MACtB,gCAAgC,MAAM;AAAA,MACpC,UAAU,SAAS;AAAA,MACnB,aAAa;AAAA,IAAA,CACd;AAAA,EAAA;AAGH,QAAM,iBAAiB,qBAAA;AAEvB,QAAM,OAAO,WAAW;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACD;AAED,cAAY,gBAAgB,WAAW,MAAM,OAAO,OAAO,WAAW,EAAE;AAAA,IACtE,CAAC,WAAW;AACV,UAAI,6BAA6B,QAAQ;AAAA,IAC3C;AAAA,EAAA;AAGF,QAAM,UAAU;AAAA,IACd,MACE,KAAK,WAAW,eACf,KAAK,WAAW,eACf,CAAC,KAAK,aAAa,MAAM,KAAK,CAAC,SAAS,KAAK,SAAS,MAAM;AAAA,EAAA;AAGlE;AAAA,IACE,MAAM,KAAK;AAAA,IACX,MAAM;AACJ,UAAI,KAAK,WAAW,YAAa,QAAO,QAAQ;AAAA,IAClD;AAAA,EAAA;AAGF,QAAM,gBAAgB,SAAA;AAEtB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAEO,SAAS,WAAW;AACzB,QAAM,QAAQ,OAAO,YAAY;AACjC,MAAI,CAAC,MAAO,OAAM,IAAI,MAAM,oBAAoB;AAEhD,SAAO;AACT;"}
1
+ {"version":3,"file":"state.js","sources":["../../src/state/state.ts"],"sourcesContent":["import { Chat } from '@ai-sdk/vue'\nimport {\n DefaultChatTransport,\n lastAssistantMessageIsCompleteWithApprovalResponses,\n type UIDataTypes,\n type UIMessage,\n} from 'ai'\nimport {\n type ComputedRef,\n computed,\n type InjectionKey,\n inject,\n type Ref,\n ref,\n watch,\n} from 'vue'\nimport type z from 'zod'\n\nimport { type ModalState, useModal } from '@scalar/components'\nimport {\n type ApiReferenceConfigurationRaw,\n apiReferenceConfigurationSchema,\n} from '@scalar/types'\nimport {\n createWorkspaceStore,\n type WorkspaceStore,\n} from '@scalar/workspace-store/client'\nimport {\n createWorkspaceEventBus,\n type WorkspaceEventBus,\n} from '@scalar/workspace-store/events'\nimport type { agentRoutes } from '@scalar-org/entities/agent'\nimport {\n EXECUTE_REQUEST_TOOL_NAME,\n type ExecuteRequestToolInput,\n type ExecuteRequestToolOutput,\n GET_MINI_OPENAPI_SPEC_TOOL_NAME,\n GET_OPENAPI_SPECS_SUMMARY_TOOL_NAME,\n type GetMiniOpenAPIDocToolInput,\n type GetMiniOpenAPIDocToolOutput,\n type GetOpenAPISpecsSummaryToolOutput,\n} from '@scalar-org/entities/agent/tools'\n\nimport { createDocumentSettings } from '@/helpers'\nimport { loadDocument } from '@/registry/add-documents-to-store'\n\nexport type RegistryDocument = {\n namespace: string\n slug: string\n}\n\nexport type Tools = {\n [GET_MINI_OPENAPI_SPEC_TOOL_NAME]: {\n input: GetMiniOpenAPIDocToolInput\n output: GetMiniOpenAPIDocToolOutput\n }\n [EXECUTE_REQUEST_TOOL_NAME]: {\n input: ExecuteRequestToolInput\n output: ExecuteRequestToolOutput\n }\n [GET_OPENAPI_SPECS_SUMMARY_TOOL_NAME]: {\n input: object\n output: GetOpenAPISpecsSummaryToolOutput\n }\n}\n\nexport const STATE_SYMBOL: InjectionKey<State> = Symbol('STATE_SYMBOL')\n\nexport type ApiMetadata = z.output<\n typeof agentRoutes.registry.search.responseSchema\n>['results'][number]\n\ntype State = {\n prompt: Ref<string>\n chat: Chat<UIMessage<unknown, UIDataTypes, Tools>>\n workspaceStore: WorkspaceStore\n loading: ComputedRef<boolean>\n settingsModal: ModalState\n eventBus: WorkspaceEventBus\n proxyUrl: Ref<string | undefined>\n config: ComputedRef<ApiReferenceConfigurationRaw>\n registryUrl: string\n baseUrl: string\n registryDocuments: Ref<ApiMetadata[]>\n addDocument: (document: { namespace: string; slug: string }) => void\n removeDocument: (document: { namespace: string; slug: string }) => void\n}\n\nfunction createChat({\n registryDocuments,\n workspaceStore,\n baseUrl,\n}: {\n registryDocuments: Ref<ApiMetadata[]>\n workspaceStore: WorkspaceStore\n baseUrl: string\n}) {\n return new Chat<UIMessage<unknown, UIDataTypes, Tools>>({\n sendAutomaticallyWhen: lastAssistantMessageIsCompleteWithApprovalResponses,\n transport: new DefaultChatTransport({\n api: `${baseUrl}/vector/openapi/chat`,\n body: () => ({\n registryDocuments: registryDocuments.value,\n documentSettings: createDocumentSettings(workspaceStore),\n }),\n }),\n })\n}\n\nexport function createState({\n initialRegistryDocuments,\n registryUrl,\n baseUrl,\n}: {\n initialRegistryDocuments: { namespace: string; slug: string }[]\n registryUrl: string\n baseUrl: string\n}): State {\n const prompt = ref<State['prompt']['value']>('')\n const eventBus = createWorkspaceEventBus()\n const registryDocuments = ref<ApiMetadata[]>([])\n const proxyUrl = ref<State['proxyUrl']['value']>('https://proxy.scalar.com')\n\n const config = computed(() =>\n apiReferenceConfigurationSchema.parse({\n proxyUrl: proxyUrl.value,\n persistAuth: true,\n }),\n )\n\n const workspaceStore = createWorkspaceStore()\n\n const chat = createChat({\n registryDocuments,\n workspaceStore,\n baseUrl,\n })\n\n const loading = computed(\n () =>\n chat.status === 'submitted' ||\n (chat.status === 'streaming' &&\n !chat.lastMessage?.parts.some((part) => part.type === 'text')),\n )\n\n watch(\n () => chat.status,\n () => {\n if (chat.status === 'streaming') prompt.value = ''\n },\n )\n\n const settingsModal = useModal()\n\n function addDocument({\n namespace,\n slug,\n }: {\n namespace: string\n slug: string\n }) {\n const matchingDoc = registryDocuments.value.find(\n (doc) => doc.namespace === namespace && doc.slug === slug,\n )\n\n if (matchingDoc) return\n\n loadDocument({\n namespace,\n slug,\n baseUrl,\n workspaceStore,\n registryUrl,\n registryDocuments,\n config: config.value,\n })\n }\n\n function removeDocument({\n namespace,\n slug,\n }: {\n namespace: string\n slug: string\n }) {\n registryDocuments.value = registryDocuments.value.filter(\n (doc) => !(doc.namespace === namespace && doc.slug === slug),\n )\n\n workspaceStore.deleteDocument(`${namespace}/${slug}`)\n }\n\n initialRegistryDocuments.forEach(addDocument)\n\n return {\n prompt,\n chat,\n workspaceStore,\n loading,\n settingsModal,\n eventBus,\n config,\n registryUrl,\n baseUrl,\n registryDocuments,\n addDocument,\n removeDocument,\n proxyUrl,\n }\n}\n\nexport function useState() {\n const state = inject(STATE_SYMBOL)\n if (!state) throw new Error('No state provided.')\n\n return state\n}\n"],"names":[],"mappings":";;;;;;;;;AAkEO,MAAM,eAAoC,OAAO,cAAc;AAsBtE,SAAS,WAAW;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,SAAO,IAAI,KAA6C;AAAA,IACtD,uBAAuB;AAAA,IACvB,WAAW,IAAI,qBAAqB;AAAA,MAClC,KAAK,GAAG,OAAO;AAAA,MACf,MAAM,OAAO;AAAA,QACX,mBAAmB,kBAAkB;AAAA,QACrC,kBAAkB,uBAAuB,cAAc;AAAA,MAAA;AAAA,IACzD,CACD;AAAA,EAAA,CACF;AACH;AAEO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AACF,GAIU;AACR,QAAM,SAAS,IAA8B,EAAE;AAC/C,QAAM,WAAW,wBAAA;AACjB,QAAM,oBAAoB,IAAmB,EAAE;AAC/C,QAAM,WAAW,IAAgC,0BAA0B;AAE3E,QAAM,SAAS;AAAA,IAAS,MACtB,gCAAgC,MAAM;AAAA,MACpC,UAAU,SAAS;AAAA,MACnB,aAAa;AAAA,IAAA,CACd;AAAA,EAAA;AAGH,QAAM,iBAAiB,qBAAA;AAEvB,QAAM,OAAO,WAAW;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACD;AAED,QAAM,UAAU;AAAA,IACd,MACE,KAAK,WAAW,eACf,KAAK,WAAW,eACf,CAAC,KAAK,aAAa,MAAM,KAAK,CAAC,SAAS,KAAK,SAAS,MAAM;AAAA,EAAA;AAGlE;AAAA,IACE,MAAM,KAAK;AAAA,IACX,MAAM;AACJ,UAAI,KAAK,WAAW,YAAa,QAAO,QAAQ;AAAA,IAClD;AAAA,EAAA;AAGF,QAAM,gBAAgB,SAAA;AAEtB,WAAS,YAAY;AAAA,IACnB;AAAA,IACA;AAAA,EAAA,GAIC;AACD,UAAM,cAAc,kBAAkB,MAAM;AAAA,MAC1C,CAAC,QAAQ,IAAI,cAAc,aAAa,IAAI,SAAS;AAAA,IAAA;AAGvD,QAAI,YAAa;AAEjB,iBAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQ,OAAO;AAAA,IAAA,CAChB;AAAA,EACH;AAEA,WAAS,eAAe;AAAA,IACtB;AAAA,IACA;AAAA,EAAA,GAIC;AACD,sBAAkB,QAAQ,kBAAkB,MAAM;AAAA,MAChD,CAAC,QAAQ,EAAE,IAAI,cAAc,aAAa,IAAI,SAAS;AAAA,IAAA;AAGzD,mBAAe,eAAe,GAAG,SAAS,IAAI,IAAI,EAAE;AAAA,EACtD;AAEA,2BAAyB,QAAQ,WAAW;AAE5C,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAEO,SAAS,WAAW;AACzB,QAAM,QAAQ,OAAO,YAAY;AACjC,MAAI,CAAC,MAAO,OAAM,IAAI,MAAM,oBAAoB;AAEhD,SAAO;AACT;"}