@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 +1 @@
1
- {"version":3,"file":"Chat.vue.d.ts","sourceRoot":"","sources":["../../../src/views/Chat/Chat.vue"],"names":[],"mappings":";;;;;AA2QA,wBAEG"}
1
+ {"version":3,"file":"Chat.vue.d.ts","sourceRoot":"","sources":["../../../src/views/Chat/Chat.vue"],"names":[],"mappings":";;;;;AAuWA,wBAEG"}
@@ -1,7 +1,7 @@
1
1
  import _sfc_main from "./Chat.vue2.js";
2
2
  /* empty css */
3
3
  import _export_sfc from "../../_virtual/_plugin-vue_export-helper.js";
4
- const Chat = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-f1f3a3f7"]]);
4
+ const Chat = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-eb3f16fc"]]);
5
5
  export {
6
6
  Chat as default
7
7
  };
@@ -1,10 +1,11 @@
1
1
  import { defineComponent, createElementBlock, openBlock, Fragment, createElementVNode, renderList, unref, createCommentVNode, toDisplayString, createBlock, toRef, reactive, createVNode } from "vue";
2
2
  import { setCustomComponents } from "markstream-vue";
3
- import { EXECUTE_REQUEST_TOOL_NAME, GET_MINI_OPENAPI_SPEC_TOOL_NAME } from "@scalar-org/entities/agent/tools";
3
+ import { EXECUTE_REQUEST_TOOL_NAME, GET_MINI_OPENAPI_SPEC_TOOL_NAME, GET_OPENAPI_SPECS_SUMMARY_TOOL_NAME } from "@scalar-org/entities/agent/tools";
4
4
  import Endpoint from "../../components/Endpoint.vue.js";
5
5
  import { useState } from "../../state/state.js";
6
6
  import ExecuteRequestTool from "./Messages/ExecuteRequestTool.vue.js";
7
7
  import GetMiniOpenAPIDocTool from "./Messages/GetMiniOpenAPIDocTool.vue.js";
8
+ import _sfc_main$2 from "./Messages/GetOpenAPISpecsSummary.vue.js";
8
9
  import _sfc_main$1 from "./Messages/Text.vue.js";
9
10
  import PromptForm from "../PromptForm.vue.js";
10
11
  const _hoisted_1 = { class: "chat" };
@@ -42,14 +43,25 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
42
43
  key: 0,
43
44
  messagePart: toRef(part)
44
45
  }, null, 8, ["messagePart"])) : createCommentVNode("", true),
45
- part.type === `tool-${unref(EXECUTE_REQUEST_TOOL_NAME)}` ? (openBlock(), createBlock(ExecuteRequestTool, {
46
+ part.type.endsWith(unref(EXECUTE_REQUEST_TOOL_NAME)) ? (openBlock(), createBlock(ExecuteRequestTool, {
46
47
  key: 1,
47
- messagePart: toRef(part)
48
+ messagePart: toRef(
49
+ part
50
+ )
48
51
  }, null, 8, ["messagePart"])) : createCommentVNode("", true),
49
- part.type === `tool-${unref(GET_MINI_OPENAPI_SPEC_TOOL_NAME)}` ? (openBlock(), createBlock(GetMiniOpenAPIDocTool, {
52
+ part.type.endsWith(unref(GET_MINI_OPENAPI_SPEC_TOOL_NAME)) ? (openBlock(), createBlock(GetMiniOpenAPIDocTool, {
50
53
  key: 2,
51
54
  message: reactive(message),
52
- messagePart: toRef(part)
55
+ messagePart: toRef(
56
+ part
57
+ )
58
+ }, null, 8, ["message", "messagePart"])) : createCommentVNode("", true),
59
+ part.type.endsWith(unref(GET_OPENAPI_SPECS_SUMMARY_TOOL_NAME)) ? (openBlock(), createBlock(_sfc_main$2, {
60
+ key: 3,
61
+ message: reactive(message),
62
+ messagePart: toRef(
63
+ part
64
+ )
53
65
  }, null, 8, ["message", "messagePart"])) : createCommentVNode("", true)
54
66
  ]);
55
67
  }), 128)) : createCommentVNode("", true)
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Chat.vue2.js","sources":["../../../src/views/Chat/Chat.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ToolUIPart } from 'ai'\nimport { setCustomComponents } from 'markstream-vue'\nimport { reactive, toRef } from 'vue'\n\nimport {\n EXECUTE_REQUEST_TOOL_NAME,\n GET_MINI_OPENAPI_SPEC_TOOL_NAME,\n GET_OPENAPI_SPECS_SUMMARY_TOOL_NAME,\n} from '@scalar-org/entities/agent/tools'\n\nimport Endpoint from '@/components/Endpoint.vue'\nimport { type Tools, useState } from '@/state/state'\nimport ExecuteRequestTool from '@/views/Chat/Messages/ExecuteRequestTool.vue'\nimport GetMiniOpenAPIDocTool from '@/views/Chat/Messages/GetMiniOpenAPIDocTool.vue'\nimport GetOpenAPISpecsSummary from '@/views/Chat/Messages/GetOpenAPISpecsSummary.vue'\nimport Text from '@/views/Chat/Messages/Text.vue'\nimport PromptForm from '@/views/PromptForm.vue'\n\nconst emit = defineEmits<{\n (e: 'submit'): void\n}>()\n\nconst state = useState()\n\nsetCustomComponents({\n operation: Endpoint,\n})\n</script>\n\n<template>\n <div class=\"chat\">\n <template\n v-for=\"message in state.chat.messages\"\n :key=\"message.id\">\n <template v-if=\"message.role === 'user'\">\n <div\n v-for=\"(part, index) in message.parts\"\n :key=\"`${message.id}-${index}`\"\n class=\"userMessage\">\n <p v-if=\"part.type === 'text'\">{{ part.text }}</p>\n </div>\n </template>\n <template v-if=\"message.role === 'assistant'\">\n <div\n v-for=\"(part, index) in message.parts\"\n :key=\"`${message.id}-${index}`\">\n <Text\n v-if=\"part.type === 'text'\"\n :messagePart=\"toRef(part)\" />\n <ExecuteRequestTool\n v-if=\"part.type.endsWith(EXECUTE_REQUEST_TOOL_NAME)\"\n :messagePart=\"\n toRef(\n part as ToolUIPart<\n Pick<Tools, typeof EXECUTE_REQUEST_TOOL_NAME>\n >,\n )\n \" />\n <GetMiniOpenAPIDocTool\n v-if=\"part.type.endsWith(GET_MINI_OPENAPI_SPEC_TOOL_NAME)\"\n :message=\"reactive(message)\"\n :messagePart=\"\n toRef(\n part as ToolUIPart<\n Pick<Tools, typeof GET_MINI_OPENAPI_SPEC_TOOL_NAME>\n >,\n )\n \" />\n <GetOpenAPISpecsSummary\n v-if=\"part.type.endsWith(GET_OPENAPI_SPECS_SUMMARY_TOOL_NAME)\"\n :message=\"reactive(message)\"\n :messagePart=\"\n toRef(\n part as ToolUIPart<\n Pick<Tools, typeof GET_OPENAPI_SPECS_SUMMARY_TOOL_NAME>\n >,\n )\n \" />\n </div>\n </template>\n </template>\n <div class=\"spacer\"></div>\n </div>\n <div class=\"formContainer\">\n <PromptForm @submit=\"emit('submit')\" />\n </div>\n</template>\n\n<style scoped>\n.chat {\n flex: 1;\n display: flex;\n flex-direction: column;\n width: 100%;\n padding: 36px 0;\n max-width: 744px;\n}\n\n.userMessage {\n padding-top: 6px;\n padding-bottom: 6px;\n padding-inline: 16px;\n border-radius: 18px;\n background: var(--scalar-background-2);\n width: fit-content;\n max-width: 80%;\n margin-left: auto;\n font-size: 16px;\n line-height: 24px;\n color: var(--scalar-color-1);\n margin-bottom: 12px;\n}\ndiv + .userMessage {\n margin-top: 64px;\n}\n.spacer {\n min-height: 180px;\n width: 100%;\n}\n\n.formContainer {\n position: fixed;\n bottom: 20px;\n width: 100%;\n max-width: 744px;\n z-index: 1;\n}\n.chat:deep(.markdown) {\n margin: 12px 0;\n}\n</style>\n"],"names":["_createElementVNode","_openBlock","_createElementBlock","_Fragment","_unref","_toDisplayString","_createBlock","Text","GetOpenAPISpecsSummary","_createVNode"],"mappings":";;;;;;;;;;;;;;;;;AAmBA,UAAM,OAAO;AAIb,UAAM,QAAQ,SAAA;AAEd,wBAAoB;AAAA,MAClB,WAAW;AAAA,IAAA,CACZ;;;QAICA,mBAoDM,OApDN,YAoDM;AAAA,WAnDJC,UAAA,IAAA,GAAAC,mBAiDWC,2BAhDSC,MAAA,KAAA,EAAM,KAAK,WAAtB,YAAO;;cACR,KAAA,QAAQ;AAAA,YAAA;cACE,QAAQ,SAAI,UAC1BH,UAAA,IAAA,GAAAC,mBAKMC,iCAJoB,QAAQ,OAAK,CAA7B,MAAM,UAAK;oCADrBD,mBAKM,OAAA;AAAA,kBAHH,KAAG,GAAK,QAAQ,EAAE,IAAI,KAAK;AAAA,kBAC5B,OAAM;AAAA,gBAAA;kBACG,KAAK,SAAI,uBAAlBA,mBAAkD,KAAA,YAAAG,gBAAhB,KAAK,IAAI,GAAA,CAAA;;;cAG/B,QAAQ,SAAI,eAC1BJ,UAAA,IAAA,GAAAC,mBAmCMC,iCAlCoB,QAAQ,OAAK,CAA7B,MAAM,UAAK;oCADrBD,mBAmCM,OAAA;AAAA,kBAjCH,KAAG,GAAK,QAAQ,EAAE,IAAI,KAAK;AAAA,gBAAA;kBAEpB,KAAK,SAAI,uBADjBI,YAE+BC,aAAA;AAAA;oBAA5B,aAAa,MAAM,IAAI;AAAA,kBAAA;kBAElB,KAAK,KAAK,SAASH,MAAA,yBAAA,CAAyB,kBADpDE,YAQM,oBAAA;AAAA;oBANH,aAA4B;AAAA,sBAAuB;AAAA,oBAAA;AAAA;kBAQ9C,KAAK,KAAK,SAASF,MAAA,+BAAA,CAA+B,kBAD1DE,YASM,uBAAA;AAAA;oBAPH,SAAS,SAAS,OAAO;AAAA,oBACzB,aAA4B;AAAA,sBAAuB;AAAA,oBAAA;AAAA;kBAQ9C,KAAK,KAAK,SAASF,MAAA,mCAAA,CAAmC,kBAD9DE,YASME,aAAA;AAAA;oBAPH,SAAS,SAAS,OAAO;AAAA,oBACzB,aAA4B;AAAA,sBAAuB;AAAA,oBAAA;AAAA;;;;;oCAU5DR,mBAA0B,OAAA,EAArB,OAAM,YAAQ,MAAA,EAAA;AAAA,QAAA;QAErBA,mBAEM,OAFN,YAEM;AAAA,UADJS,YAAuC,YAAA;AAAA,YAA1B,gDAAQ,KAAI,QAAA;AAAA,UAAA;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ExecuteRequestTool.vue.d.ts","sourceRoot":"","sources":["../../../../src/views/Chat/Messages/ExecuteRequestTool.vue"],"names":[],"mappings":"AA2EA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,IAAI,CAAA;AACpC,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,KAAK,CAAA;AAG9B,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,kCAAkC,CAAA;AAGjF,OAAO,EAAE,KAAK,KAAK,EAAY,MAAM,eAAe,CAAA;AAEpD,KAAK,WAAW,GAAG;IACjB,WAAW,EAAE,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,yBAAyB,CAAC,CAAC,CAAC,CAAA;CAC5E,CAAC;;AAsIF,wBAEG"}
1
+ {"version":3,"file":"ExecuteRequestTool.vue.d.ts","sourceRoot":"","sources":["../../../../src/views/Chat/Messages/ExecuteRequestTool.vue"],"names":[],"mappings":"AAuEA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,IAAI,CAAA;AACpC,OAAO,EAAY,KAAK,GAAG,EAAE,MAAM,KAAK,CAAA;AAExC,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,kCAAkC,CAAA;AAGjF,OAAO,EAAE,KAAK,KAAK,EAAY,MAAM,eAAe,CAAA;AAEpD,KAAK,WAAW,GAAG;IACjB,WAAW,EAAE,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,yBAAyB,CAAC,CAAC,CAAC,CAAA;CAC5E,CAAC;;AAmFF,wBAEG"}
@@ -1,7 +1,7 @@
1
1
  import _sfc_main from "./ExecuteRequestTool.vue2.js";
2
2
  /* empty css */
3
3
  import _export_sfc from "../../../_virtual/_plugin-vue_export-helper.js";
4
- const ExecuteRequestTool = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-9b181e19"]]);
4
+ const ExecuteRequestTool = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-8cae021e"]]);
5
5
  export {
6
6
  ExecuteRequestTool as default
7
7
  };
@@ -0,0 +1,39 @@
1
+ import { defineComponent, computed, createElementBlock, openBlock, createBlock, createCommentVNode } from "vue";
2
+ import RequestPreview from "../../../components/RequestPreview.vue.js";
3
+ import { useState } from "../../../state/state.js";
4
+ const _hoisted_1 = { class: "executeRequestTool" };
5
+ const _sfc_main = /* @__PURE__ */ defineComponent({
6
+ __name: "ExecuteRequestTool",
7
+ props: {
8
+ messagePart: {}
9
+ },
10
+ setup(__props) {
11
+ const state = useState();
12
+ const requestState = computed(() => {
13
+ if (__props.messagePart.value.state === "input-available" && state.chat.status === "streaming" || __props.messagePart.value.state === "approval-responded" && state.chat.status === "submitted")
14
+ return "sendingRequest";
15
+ if (__props.messagePart.value.state === "approval-requested")
16
+ return "requiresApproval";
17
+ if (__props.messagePart.value.state === "output-available") {
18
+ return __props.messagePart.value.output.isError ? "requestFailed" : "requestSucceeded";
19
+ }
20
+ if (__props.messagePart.value.state === "approval-responded") return "approved";
21
+ if (__props.messagePart.value.state === "output-denied") return "rejected";
22
+ return null;
23
+ });
24
+ return (_ctx, _cache) => {
25
+ return openBlock(), createElementBlock("div", _hoisted_1, [
26
+ requestState.value ? (openBlock(), createBlock(RequestPreview, {
27
+ key: 0,
28
+ request: __props.messagePart.value.input,
29
+ response: __props.messagePart.value.output,
30
+ state: requestState.value
31
+ }, null, 8, ["request", "response", "state"])) : createCommentVNode("", true)
32
+ ]);
33
+ };
34
+ }
35
+ });
36
+ export {
37
+ _sfc_main as default
38
+ };
39
+ //# sourceMappingURL=ExecuteRequestTool.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExecuteRequestTool.vue2.js","sources":["../../../../src/views/Chat/Messages/ExecuteRequestTool.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { type ToolUIPart } from 'ai'\nimport { computed, type Ref } from 'vue'\n\nimport { type EXECUTE_REQUEST_TOOL_NAME } from '@scalar-org/entities/agent/tools'\n\nimport RequestPreview from '@/components/RequestPreview.vue'\nimport { type Tools, useState } from '@/state/state'\n\nconst { messagePart } = defineProps<{\n messagePart: Ref<ToolUIPart<Pick<Tools, typeof EXECUTE_REQUEST_TOOL_NAME>>>\n}>()\n\nconst state = useState()\n\nconst requestState = computed(() => {\n if (\n (messagePart.value.state === 'input-available' &&\n state.chat.status === 'streaming') ||\n (messagePart.value.state === 'approval-responded' &&\n state.chat.status === 'submitted')\n )\n return 'sendingRequest'\n\n if (messagePart.value.state === 'approval-requested')\n return 'requiresApproval'\n\n if (messagePart.value.state === 'output-available') {\n return messagePart.value.output.isError\n ? 'requestFailed'\n : 'requestSucceeded'\n }\n\n if (messagePart.value.state === 'approval-responded') return 'approved'\n if (messagePart.value.state === 'output-denied') return 'rejected'\n\n return null\n})\n</script>\n\n<template>\n <div class=\"executeRequestTool\">\n <RequestPreview\n v-if=\"requestState\"\n :request=\"messagePart.value.input\"\n :response=\"messagePart.value.output\"\n :state=\"requestState\" />\n </div>\n</template>\n\n<style scoped>\n.executeRequestTool {\n display: flex;\n flex-direction: column;\n gap: 10px;\n border-top: var(--scalar-border-width) solid var(--scalar-border-color);\n border-bottom: var(--scalar-border-width) solid var(--scalar-border-color);\n /* ensures no overlapping border colors when there's two sibling execute request tools */\n box-shadow:\n 0 var(--scalar-border-width) 0 var(--scalar-background-1),\n 0 calc(-1 * var(--scalar-border-width)) 0 var(--scalar-background-1);\n}\n.tool {\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n padding: 15px;\n border-radius: 15px;\n margin-bottom: 20px;\n}\n</style>\n"],"names":["_openBlock","_createElementBlock","_createBlock"],"mappings":";;;;;;;;;;AAaA,UAAM,QAAQ,SAAA;AAEd,UAAM,eAAe,SAAS,MAAM;AAClC,UACG,QAAA,YAAY,MAAM,UAAU,qBAC3B,MAAM,KAAK,WAAW,eACvB,QAAA,YAAY,MAAM,UAAU,wBAC3B,MAAM,KAAK,WAAW;AAExB,eAAO;AAET,UAAI,QAAA,YAAY,MAAM,UAAU;AAC9B,eAAO;AAET,UAAI,QAAA,YAAY,MAAM,UAAU,oBAAoB;AAClD,eAAO,QAAA,YAAY,MAAM,OAAO,UAC5B,kBACA;AAAA,MACN;AAEA,UAAI,QAAA,YAAY,MAAM,UAAU,qBAAsB,QAAO;AAC7D,UAAI,oBAAY,MAAM,UAAU,gBAAiB,QAAO;AAExD,aAAO;AAAA,IACT,CAAC;;AAIC,aAAAA,UAAA,GAAAC,mBAMM,OANN,YAMM;AAAA,QAJI,aAAA,sBADRC,YAI0B,gBAAA;AAAA;UAFvB,SAAS,QAAA,YAAY,MAAM;AAAA,UAC3B,UAAU,QAAA,YAAY,MAAM;AAAA,UAC5B,OAAO,aAAA;AAAA,QAAA;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"GetMiniOpenAPIDocTool.vue.d.ts","sourceRoot":"","sources":["../../../../src/views/Chat/Messages/GetMiniOpenAPIDocTool.vue"],"names":[],"mappings":"AAoFA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,IAAI,CAAA;AACpD,OAAO,EAAY,KAAK,QAAQ,EAAE,KAAK,GAAG,EAAc,MAAM,KAAK,CAAA;AAEnE,OAAO,EAAE,KAAK,+BAA+B,EAAE,MAAM,kCAAkC,CAAA;AAKvF,OAAO,EAAE,KAAK,KAAK,EAAY,MAAM,eAAe,CAAA;AAEpD,KAAK,WAAW,GAAG;IACjB,WAAW,EAAE,GAAG,CACd,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,+BAA+B,CAAC,CAAC,CAChE,CAAA;IACD,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAA;CAC7B,CAAC;;AAkHF,wBAEG"}
1
+ {"version":3,"file":"GetMiniOpenAPIDocTool.vue.d.ts","sourceRoot":"","sources":["../../../../src/views/Chat/Messages/GetMiniOpenAPIDocTool.vue"],"names":[],"mappings":"AAuFA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,IAAI,CAAA;AACpD,OAAO,EAAY,KAAK,QAAQ,EAAE,KAAK,GAAG,EAAc,MAAM,KAAK,CAAA;AAEnE,OAAO,EAAE,KAAK,+BAA+B,EAAE,MAAM,kCAAkC,CAAA;AAKvF,OAAO,EAAE,KAAK,KAAK,EAAY,MAAM,eAAe,CAAA;AAEpD,KAAK,WAAW,GAAG;IACjB,WAAW,EAAE,GAAG,CACd,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,+BAA+B,CAAC,CAAC,CAChE,CAAA;IACD,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAA;CAC7B,CAAC;;AAkHF,wBAEG"}
@@ -1,7 +1,7 @@
1
1
  import _sfc_main from "./GetMiniOpenAPIDocTool.vue2.js";
2
2
  /* empty css */
3
3
  import _export_sfc from "../../../_virtual/_plugin-vue_export-helper.js";
4
- const GetMiniOpenAPIDocTool = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-ee54c474"]]);
4
+ const GetMiniOpenAPIDocTool = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-3b3caf92"]]);
5
5
  export {
6
6
  GetMiniOpenAPIDocTool as default
7
7
  };
@@ -23,8 +23,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
23
23
  const index = parts.findIndex(
24
24
  (part) => "toolCallId" in part && part.toolCallId === __props.messagePart.value.toolCallId
25
25
  );
26
- const nextPart = parts[index + 1];
27
- messageFinished.value = nextPart?.type === "step-start";
26
+ messageFinished.value = Boolean(parts[index + 1]);
28
27
  }
29
28
  );
30
29
  const operations = computed(() => {
@@ -40,7 +39,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
40
39
  const state = useState();
41
40
  return (_ctx, _cache) => {
42
41
  return openBlock(), createElementBlock(Fragment, null, [
43
- _ctx.messagePart.value.state === "input-available" && unref(state).chat.status === "streaming" ? (openBlock(), createElementBlock("div", _hoisted_1, [
42
+ __props.messagePart.value.state === "input-available" && unref(state).chat.status === "streaming" ? (openBlock(), createElementBlock("div", _hoisted_1, [
44
43
  createVNode(LoadingMiniOpenAPIDoc)
45
44
  ])) : createCommentVNode("", true),
46
45
  operations.value ? (openBlock(), createElementBlock("div", _hoisted_2, [
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GetMiniOpenAPIDocTool.vue2.js","sources":["../../../../src/views/Chat/Messages/GetMiniOpenAPIDocTool.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { type ToolUIPart, type UIMessage } from 'ai'\nimport { computed, type Reactive, type Ref, ref, watch } from 'vue'\n\nimport { type GET_MINI_OPENAPI_SPEC_TOOL_NAME } from '@scalar-org/entities/agent/tools'\n\nimport ContextItem from '@/components/ContextItem.vue'\nimport LoadingMiniOpenAPIDoc from '@/components/LoadingMiniOpenAPIDoc.vue'\nimport { getOperations } from '@/helpers'\nimport { type Tools, useState } from '@/state/state'\n\nconst { messagePart, message } = defineProps<{\n messagePart: Ref<\n ToolUIPart<Pick<Tools, typeof GET_MINI_OPENAPI_SPEC_TOOL_NAME>>\n >\n message: Reactive<UIMessage>\n}>()\n\nconst messageFinished = ref(false)\n\nwatch(\n () => message,\n () => {\n const parts = message.parts\n\n const index = parts.findIndex(\n (part) =>\n 'toolCallId' in part &&\n part.toolCallId === messagePart.value.toolCallId,\n )\n\n messageFinished.value = Boolean(parts[index + 1])\n },\n)\n\nconst operations = computed(() => {\n if (!messagePart.value.output?.structuredContent) return\n\n const title = messagePart.value.output?.structuredContent?.info?.title\n\n const documentOperations = getOperations(\n messagePart.value.output?.structuredContent,\n )\n\n return documentOperations\n .map(\n (operation) => `${title ? `${title} - ` : ''}${operation.summary ?? ''}`,\n )\n .filter(Boolean)\n})\n\nconst state = useState()\n</script>\n\n<template>\n <div\n v-if=\"\n messagePart.value.state === 'input-available' &&\n state.chat.status === 'streaming'\n \">\n <LoadingMiniOpenAPIDoc />\n </div>\n <div\n v-if=\"operations\"\n class=\"operations\">\n <ContextItem\n v-for=\"operation of operations\"\n :key=\"operation\"\n :loading=\"!messageFinished\"\n >{{ operation }}</ContextItem\n >\n </div>\n</template>\n\n<style scoped>\n.operations {\n display: flex;\n gap: 5px;\n align-items: center;\n margin-bottom: 10px;\n}\n.operations:empty {\n margin-bottom: -12px;\n}\n</style>\n"],"names":["_unref","_createElementBlock","_createVNode","_openBlock","_Fragment","_renderList","_createBlock"],"mappings":";;;;;;;;;;;;;;;;;AAkBA,UAAM,kBAAkB,IAAI,KAAK;AAEjC;AAAA,MACE,MAAM,QAAA;AAAA,MACN,MAAM;AACJ,cAAM,QAAQ,gBAAQ;AAEtB,cAAM,QAAQ,MAAM;AAAA,UAClB,CAAC,SACC,gBAAgB,QAChB,KAAK,eAAe,QAAA,YAAY,MAAM;AAAA,QAAA;AAG1C,wBAAgB,QAAQ,QAAQ,MAAM,QAAQ,CAAC,CAAC;AAAA,MAClD;AAAA,IAAA;AAGF,UAAM,aAAa,SAAS,MAAM;AAChC,UAAI,CAAC,QAAA,YAAY,MAAM,QAAQ,kBAAmB;AAElD,YAAM,QAAQ,QAAA,YAAY,MAAM,QAAQ,mBAAmB,MAAM;AAEjE,YAAM,qBAAqB;AAAA,QACzB,QAAA,YAAY,MAAM,QAAQ;AAAA,MAAA;AAG5B,aAAO,mBACJ;AAAA,QACC,CAAC,cAAc,GAAG,QAAQ,GAAG,KAAK,QAAQ,EAAE,GAAG,UAAU,WAAW,EAAE;AAAA,MAAA,EAEvE,OAAO,OAAO;AAAA,IACnB,CAAC;AAED,UAAM,QAAQ,SAAA;;;QAKG,QAAA,YAAY,MAAM,UAAK,qBAAgCA,MAAA,KAAA,EAAM,KAAK,WAAM,4BADvFC,mBAMM,OAAA,YAAA;AAAA,UADJC,YAAyB,qBAAA;AAAA,QAAA;QAGnB,WAAA,SADRC,UAAA,GAAAF,mBASM,OATN,YASM;AAAA,4BANJA,mBAKCG,UAAA,MAAAC,WAJqB,WAAA,OAAU,CAAvB,cAAS;gCADlBC,YAKC,aAAA;AAAA,cAHE,KAAK;AAAA,cACL,UAAU,gBAAA;AAAA,YAAA;+BACV,MAAe;AAAA,gDAAZ,SAAS,GAAA,CAAA;AAAA,cAAA;;;;;;;;;"}
@@ -0,0 +1,11 @@
1
+ import type { ToolUIPart, UIMessage } from 'ai';
2
+ import { type Reactive, type Ref } from 'vue';
3
+ import { type GET_OPENAPI_SPECS_SUMMARY_TOOL_NAME } from '@scalar-org/entities/agent/tools';
4
+ import { type Tools } from '../../../state/state.js';
5
+ type __VLS_Props = {
6
+ messagePart: Ref<ToolUIPart<Pick<Tools, typeof GET_OPENAPI_SPECS_SUMMARY_TOOL_NAME>>>;
7
+ message: Reactive<UIMessage>;
8
+ };
9
+ 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>;
10
+ export default _default;
11
+ //# sourceMappingURL=GetOpenAPISpecsSummary.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GetOpenAPISpecsSummary.vue.d.ts","sourceRoot":"","sources":["../../../../src/views/Chat/Messages/GetOpenAPISpecsSummary.vue"],"names":[],"mappings":"AA2CA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAA;AAC/C,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,GAAG,EAAc,MAAM,KAAK,CAAA;AAEzD,OAAO,EAAE,KAAK,mCAAmC,EAAE,MAAM,kCAAkC,CAAA;AAG3F,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,eAAe,CAAA;AAE1C,KAAK,WAAW,GAAG;IACjB,WAAW,EAAE,GAAG,CACd,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,mCAAmC,CAAC,CAAC,CACpE,CAAA;IACD,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAA;CAC7B,CAAC;;AA8DF,wBAEG"}
@@ -0,0 +1,32 @@
1
+ import { defineComponent, ref, watch, createElementBlock, createCommentVNode, openBlock, createVNode } from "vue";
2
+ import LoadingOpenAPISpecsSummary from "../../../components/LoadingOpenAPISpecsSummary.vue.js";
3
+ const _hoisted_1 = { key: 0 };
4
+ const _sfc_main = /* @__PURE__ */ defineComponent({
5
+ __name: "GetOpenAPISpecsSummary",
6
+ props: {
7
+ messagePart: {},
8
+ message: {}
9
+ },
10
+ setup(__props) {
11
+ const messageFinished = ref(false);
12
+ watch(
13
+ () => __props.message,
14
+ () => {
15
+ const parts = __props.message.parts;
16
+ const index = parts.findIndex(
17
+ (part) => "toolCallId" in part && part.toolCallId === __props.messagePart.value.toolCallId
18
+ );
19
+ messageFinished.value = Boolean(parts[index + 1]);
20
+ }
21
+ );
22
+ return (_ctx, _cache) => {
23
+ return !messageFinished.value ? (openBlock(), createElementBlock("div", _hoisted_1, [
24
+ createVNode(LoadingOpenAPISpecsSummary)
25
+ ])) : createCommentVNode("", true);
26
+ };
27
+ }
28
+ });
29
+ export {
30
+ _sfc_main as default
31
+ };
32
+ //# sourceMappingURL=GetOpenAPISpecsSummary.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GetOpenAPISpecsSummary.vue.js","sources":["../../../../src/views/Chat/Messages/GetOpenAPISpecsSummary.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ToolUIPart, UIMessage } from 'ai'\nimport { type Reactive, type Ref, ref, watch } from 'vue'\n\nimport { type GET_OPENAPI_SPECS_SUMMARY_TOOL_NAME } from '@scalar-org/entities/agent/tools'\n\nimport LoadingOpenAPISpecsSummary from '@/components/LoadingOpenAPISpecsSummary.vue'\nimport { type Tools } from '@/state/state'\n\nconst { messagePart, message } = defineProps<{\n messagePart: Ref<\n ToolUIPart<Pick<Tools, typeof GET_OPENAPI_SPECS_SUMMARY_TOOL_NAME>>\n >\n message: Reactive<UIMessage>\n}>()\n\nconst messageFinished = ref(false)\n\nwatch(\n () => message,\n () => {\n const parts = message.parts\n\n const index = parts.findIndex(\n (part) =>\n 'toolCallId' in part &&\n part.toolCallId === messagePart.value.toolCallId,\n )\n\n messageFinished.value = Boolean(parts[index + 1])\n },\n)\n</script>\n\n<template>\n <div v-if=\"!messageFinished\">\n <LoadingOpenAPISpecsSummary />\n </div>\n</template>\n\n<style scoped></style>\n"],"names":["_createElementBlock","_createVNode"],"mappings":";;;;;;;;;;AAgBA,UAAM,kBAAkB,IAAI,KAAK;AAEjC;AAAA,MACE,MAAM,QAAA;AAAA,MACN,MAAM;AACJ,cAAM,QAAQ,gBAAQ;AAEtB,cAAM,QAAQ,MAAM;AAAA,UAClB,CAAC,SACC,gBAAgB,QAChB,KAAK,eAAe,QAAA,YAAY,MAAM;AAAA,QAAA;AAG1C,wBAAgB,QAAQ,QAAQ,MAAM,QAAQ,CAAC,CAAC;AAAA,MAClD;AAAA,IAAA;;cAKY,gBAAA,sBAAZA,mBAEM,OAAA,YAAA;AAAA,QADJC,YAA8B,0BAAA;AAAA,MAAA;;;;"}
@@ -0,0 +1,5 @@
1
+ import _sfc_main from "./GetOpenAPISpecsSummary.vue.js";
2
+ export {
3
+ _sfc_main as default
4
+ };
5
+ //# sourceMappingURL=GetOpenAPISpecsSummary.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GetOpenAPISpecsSummary.vue2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -9,7 +9,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
9
9
  return (_ctx, _cache) => {
10
10
  return openBlock(), createBlock(unref(MarkdownRender), {
11
11
  class: "markdown",
12
- content: _ctx.messagePart.value.text,
12
+ content: __props.messagePart.value.text,
13
13
  customHtmlTags: ["operation"]
14
14
  }, null, 8, ["content"]);
15
15
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Text.vue.js","sources":["../../../../src/views/Chat/Messages/Text.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { type TextUIPart } from 'ai'\nimport { MarkdownRender } from 'markstream-vue'\nimport { type Ref } from 'vue'\n\nconst { messagePart } = defineProps<{\n messagePart: Ref<TextUIPart>\n}>()\n</script>\n\n<template>\n <MarkdownRender\n class=\"markdown\"\n :content=\"messagePart.value.text\"\n :customHtmlTags=\"['operation']\" />\n</template>\n"],"names":["_createBlock","_unref","messagePart"],"mappings":";;;;;;;;;0BAWEA,YAGoCC,MAAA,cAAA,GAAA;AAAA,QAFlC,OAAM;AAAA,QACL,SAASC,KAAAA,YAAY,MAAM;AAAA,QAC3B,gBAAgB,CAAA,WAAA;AAAA,MAAA;;;;"}
1
+ {"version":3,"file":"Text.vue.js","sources":["../../../../src/views/Chat/Messages/Text.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { type TextUIPart } from 'ai'\nimport { MarkdownRender } from 'markstream-vue'\nimport { type Ref } from 'vue'\n\nconst { messagePart } = defineProps<{\n messagePart: Ref<TextUIPart>\n}>()\n</script>\n\n<template>\n <MarkdownRender\n class=\"markdown\"\n :content=\"messagePart.value.text\"\n :customHtmlTags=\"['operation']\" />\n</template>\n"],"names":["_createBlock","_unref"],"mappings":";;;;;;;;;0BAWEA,YAGoCC,MAAA,cAAA,GAAA;AAAA,QAFlC,OAAM;AAAA,QACL,SAAS,QAAA,YAAY,MAAM;AAAA,QAC3B,gBAAgB,CAAA,WAAA;AAAA,MAAA;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Layout.vue.d.ts","sourceRoot":"","sources":["../../src/views/Layout.vue"],"names":[],"mappings":";;;;;AA0IA,wBAEG"}
@@ -1,7 +1,7 @@
1
1
  import _sfc_main from "./Layout.vue2.js";
2
2
  /* empty css */
3
3
  import _export_sfc from "../_virtual/_plugin-vue_export-helper.js";
4
- const Layout = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-6af81051"]]);
4
+ const Layout = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-df02b46b"]]);
5
5
  export {
6
6
  Layout as default
7
7
  };
@@ -1,6 +1,4 @@
1
1
  import { defineComponent, createElementBlock, openBlock, createBlock, unref } from "vue";
2
- import { useActiveServer } from "../hooks/useActiveServer.js";
3
- import { useSecuritySchemes } from "../hooks/useSecuritySchemes.js";
4
2
  import { useState } from "../state/state.js";
5
3
  import Chat from "./Chat/Chat.vue.js";
6
4
  import Start from "./Start.vue.js";
@@ -11,8 +9,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
11
9
  setup(__props, { emit: __emit }) {
12
10
  const emit = __emit;
13
11
  const { chat } = useState();
14
- useSecuritySchemes();
15
- useActiveServer();
16
12
  return (_ctx, _cache) => {
17
13
  return openBlock(), createElementBlock("div", _hoisted_1, [
18
14
  unref(chat).messages.length && (unref(chat).messages.length > 1 || unref(chat).status !== "submitted") ? (openBlock(), createBlock(Chat, {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Layout.vue2.js","sources":["../../src/views/Layout.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useState } from '@/state/state'\nimport Chat from '@/views/Chat/Chat.vue'\nimport Start from '@/views/Start.vue'\n\nconst emit = defineEmits<{\n (e: 'submit'): void\n}>()\n\nconst { chat } = useState()\n</script>\n\n<template>\n <div class=\"wrapper\">\n <Chat\n v-if=\"\n chat.messages.length &&\n (chat.messages.length > 1 || chat.status !== 'submitted')\n \"\n @submit=\"emit('submit')\" />\n <Start\n v-else\n @submit=\"emit('submit')\" />\n </div>\n</template>\n\n<style scoped>\n.wrapper {\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 100%;\n width: 100%;\n}\n</style>\n"],"names":["_openBlock","_createElementBlock","_unref","_createBlock"],"mappings":";;;;;;;;;AAKA,UAAM,OAAO;AAIb,UAAM,EAAE,KAAA,IAAS,SAAA;;AAIf,aAAAA,UAAA,GAAAC,mBAUM,OAVN,YAUM;AAAA,QARaC,MAAA,IAAA,EAAK,SAAS,WAAmBA,MAAA,IAAA,EAAK,SAAS,SAAM,KAAQA,MAAA,IAAA,EAAK,WAAM,6BADzFC,YAK6B,MAAA;AAAA;UAA1B,gDAAQ,KAAI,QAAA;AAAA,QAAA,oBACfA,YAE6B,OAAA;AAAA;UAA1B,gDAAQ,KAAI,QAAA;AAAA,QAAA;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"PromptForm.vue.d.ts","sourceRoot":"","sources":["../../src/views/PromptForm.vue"],"names":[],"mappings":"AAkTA,iBAAS,WAAW,SAEnB;;;;;;;;AA6MD,wBAGG"}
1
+ {"version":3,"file":"PromptForm.vue.d.ts","sourceRoot":"","sources":["../../src/views/PromptForm.vue"],"names":[],"mappings":"AA+aA,iBAAS,WAAW,SAEnB;;;;;;;;AAyWD,wBAGG"}
@@ -1,7 +1,7 @@
1
1
  import _sfc_main from "./PromptForm.vue2.js";
2
2
  /* empty css */
3
3
  import _export_sfc from "../_virtual/_plugin-vue_export-helper.js";
4
- const PromptForm = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-1170b22b"]]);
4
+ const PromptForm = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-b0457a1a"]]);
5
5
  export {
6
6
  PromptForm as default
7
7
  };
@@ -0,0 +1,182 @@
1
+ import { defineComponent, useTemplateRef, computed, watch, createElementBlock, openBlock, Fragment, createBlock, createCommentVNode, createElementVNode, unref, withModifiers, withDirectives, vModelText, createVNode, withCtx, renderList, createTextVNode, toDisplayString } from "vue";
2
+ import { ScalarIconButton, ScalarLoading } from "@scalar/components";
3
+ import { ScalarIconPlus, ScalarIconX, ScalarIconLockSimple, ScalarIconArrowUp } from "@scalar/icons";
4
+ import { MAX_PROMPT_SIZE } from "@scalar-org/entities/agent";
5
+ import ApprovalSection from "../components/ApprovalSection.vue.js";
6
+ import ErrorMessageMessage from "../components/ErrorMessage.vue.js";
7
+ import SearchPopover from "../components/SearchPopover.vue.js";
8
+ import { useChatApprovals } from "../hooks/useChatApprovals.js";
9
+ import { useState } from "../state/state.js";
10
+ const _hoisted_1 = { class: "actionContainer" };
11
+ const _hoisted_2 = ["disabled"];
12
+ const _hoisted_3 = { class: "inputActionsContainer" };
13
+ const _hoisted_4 = { class: "inputActionsLeft" };
14
+ const _hoisted_5 = {
15
+ class: "addAPIButton",
16
+ type: "button"
17
+ };
18
+ const _hoisted_6 = ["src"];
19
+ const _hoisted_7 = ["onClick"];
20
+ const _hoisted_8 = { class: "inputActionsRight" };
21
+ const _sfc_main = /* @__PURE__ */ defineComponent({
22
+ __name: "PromptForm",
23
+ emits: ["submit"],
24
+ setup(__props, { expose: __expose, emit: __emit }) {
25
+ const emit = __emit;
26
+ __expose({ focusPrompt });
27
+ const promptRef = useTemplateRef("prompt");
28
+ const state = useState();
29
+ const inputHasContent = computed(() => state.prompt.value.trim().length > 0);
30
+ const promptTooLarge = computed(
31
+ () => state.prompt.value.trim().length > MAX_PROMPT_SIZE
32
+ );
33
+ watch(state.prompt, () => {
34
+ if (!promptRef?.value) return;
35
+ if (!state.prompt.value.length) {
36
+ promptRef.value.style.height = "0px";
37
+ return;
38
+ }
39
+ promptRef.value.style.height = "auto";
40
+ promptRef.value.style.height = promptRef.value.scrollHeight + "px";
41
+ });
42
+ function handleSubmit() {
43
+ if (!inputHasContent.value) return;
44
+ emit("submit");
45
+ }
46
+ function handlePromptKeydown(e) {
47
+ if (state.loading.value) return;
48
+ if (e.key === "Enter" && !e.shiftKey) {
49
+ e.preventDefault();
50
+ handleSubmit();
51
+ window.scrollTo(0, document.body.scrollHeight);
52
+ }
53
+ }
54
+ function focusPrompt() {
55
+ promptRef.value?.focus();
56
+ }
57
+ watch(
58
+ () => state.chat.status,
59
+ (status) => {
60
+ if (status === "ready" || status === "error") promptRef.value?.focus();
61
+ }
62
+ );
63
+ const { respondToToolCalls, approvalRequestedParts } = useChatApprovals();
64
+ return (_ctx, _cache) => {
65
+ return openBlock(), createElementBlock(Fragment, null, [
66
+ unref(state).chat.error ? (openBlock(), createBlock(ErrorMessageMessage, {
67
+ key: 0,
68
+ error: unref(state).chat.error
69
+ }, null, 8, ["error"])) : createCommentVNode("", true),
70
+ unref(approvalRequestedParts).length ? (openBlock(), createBlock(ApprovalSection, {
71
+ key: 1,
72
+ onApprove: _cache[0] || (_cache[0] = ($event) => unref(respondToToolCalls)(true)),
73
+ onReject: _cache[1] || (_cache[1] = ($event) => unref(respondToToolCalls)(false))
74
+ })) : createCommentVNode("", true),
75
+ createElementVNode("div", _hoisted_1, [
76
+ createElementVNode("form", {
77
+ class: "promptForm",
78
+ onSubmit: withModifiers(handleSubmit, ["prevent"])
79
+ }, [
80
+ _cache[4] || (_cache[4] = createElementVNode("label", {
81
+ class: "agentLabel",
82
+ for: "agentTextarea"
83
+ }, " Type a Request To get Started ", -1)),
84
+ withDirectives(createElementVNode("textarea", {
85
+ id: "agentTextarea",
86
+ ref: "prompt",
87
+ "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => unref(state).prompt.value = $event),
88
+ class: "prompt custom-scroll",
89
+ disabled: unref(state).loading.value,
90
+ name: "prompt",
91
+ placeholder: "Ask me anything...",
92
+ onKeydown: handlePromptKeydown
93
+ }, null, 40, _hoisted_2), [
94
+ [vModelText, unref(state).prompt.value]
95
+ ]),
96
+ createElementVNode("div", _hoisted_3, [
97
+ createElementVNode("div", _hoisted_4, [
98
+ createVNode(SearchPopover, null, {
99
+ default: withCtx(() => [
100
+ createElementVNode("button", _hoisted_5, [
101
+ createVNode(unref(ScalarIconPlus), {
102
+ class: "size-4",
103
+ weight: "bold"
104
+ })
105
+ ])
106
+ ]),
107
+ _: 1
108
+ }),
109
+ (openBlock(true), createElementBlock(Fragment, null, renderList(unref(state).registryDocuments.value, (document2) => {
110
+ return openBlock(), createElementBlock("div", {
111
+ key: document2.id,
112
+ class: "apiPill"
113
+ }, [
114
+ document2.logoUrl ? (openBlock(), createElementBlock("img", {
115
+ key: 0,
116
+ class: "apiPillLogo",
117
+ src: document2.logoUrl
118
+ }, null, 8, _hoisted_6)) : createCommentVNode("", true),
119
+ createTextVNode(" " + toDisplayString(document2.title) + " ", 1),
120
+ createElementVNode("button", {
121
+ class: "apiPillRemove",
122
+ type: "button",
123
+ onClick: ($event) => unref(state).removeDocument(document2)
124
+ }, [
125
+ createVNode(unref(ScalarIconX), {
126
+ class: "size-4",
127
+ weight: "bold"
128
+ })
129
+ ], 8, _hoisted_7)
130
+ ]);
131
+ }), 128))
132
+ ]),
133
+ createElementVNode("div", _hoisted_8, [
134
+ !unref(state).loading.value ? (openBlock(), createBlock(unref(ScalarIconButton), {
135
+ key: 0,
136
+ class: "settingsButton h-7 w-7 p-1.5",
137
+ icon: unref(ScalarIconLockSimple),
138
+ label: "Scalar",
139
+ size: "md",
140
+ weight: "bold",
141
+ onClick: _cache[3] || (_cache[3] = ($event) => unref(state).settingsModal.show())
142
+ }, null, 8, ["icon"])) : createCommentVNode("", true),
143
+ !unref(state).loading.value ? (openBlock(), createBlock(unref(ScalarIconButton), {
144
+ key: 1,
145
+ class: "sendButton h-7 w-7 p-1.5",
146
+ disabled: !inputHasContent.value || promptTooLarge.value,
147
+ icon: unref(ScalarIconArrowUp),
148
+ label: "Scalar",
149
+ size: "md",
150
+ type: "submit",
151
+ weight: "bold"
152
+ }, null, 8, ["disabled", "icon"])) : (openBlock(), createBlock(unref(ScalarLoading), {
153
+ key: 2,
154
+ class: "loader h-7 w-7",
155
+ loader: {
156
+ isLoading: unref(state).loading.value,
157
+ isValid: false,
158
+ clear: async () => {
159
+ },
160
+ invalidate: async () => {
161
+ },
162
+ isInvalid: false,
163
+ isActive: false,
164
+ validate: async () => {
165
+ },
166
+ start: () => {
167
+ }
168
+ },
169
+ size: "2xl"
170
+ }, null, 8, ["loader"]))
171
+ ])
172
+ ])
173
+ ], 32)
174
+ ])
175
+ ], 64);
176
+ };
177
+ }
178
+ });
179
+ export {
180
+ _sfc_main as default
181
+ };
182
+ //# sourceMappingURL=PromptForm.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PromptForm.vue2.js","sources":["../../src/views/PromptForm.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, useTemplateRef, watch } from 'vue'\n\nimport { ScalarIconButton, ScalarLoading } from '@scalar/components'\nimport {\n ScalarIconArrowUp,\n ScalarIconLockSimple,\n ScalarIconPlus,\n ScalarIconX,\n} from '@scalar/icons'\nimport { MAX_PROMPT_SIZE } from '@scalar-org/entities/agent'\n\nimport ApprovalSection from '@/components/ApprovalSection.vue'\nimport ErrorMessageMessage from '@/components/ErrorMessage.vue'\nimport SearchPopover from '@/components/SearchPopover.vue'\nimport { useChatApprovals } from '@/hooks/useChatApprovals'\nimport { useState } from '@/state/state'\n\nconst emit = defineEmits<{\n (e: 'submit'): void\n}>()\n\ndefineExpose({ focusPrompt })\n\nconst promptRef = useTemplateRef<HTMLTextAreaElement>('prompt')\n\nconst state = useState()\n\nconst inputHasContent = computed(() => state.prompt.value.trim().length > 0)\nconst promptTooLarge = computed(\n () => state.prompt.value.trim().length > MAX_PROMPT_SIZE,\n)\n\nwatch(state.prompt, () => {\n if (!promptRef?.value) return\n\n if (!state.prompt.value.length) {\n promptRef.value.style.height = '0px'\n return\n }\n\n promptRef.value.style.height = 'auto'\n promptRef.value.style.height = promptRef.value.scrollHeight + 'px'\n})\n\nfunction handleSubmit() {\n if (!inputHasContent.value) return\n\n emit('submit')\n}\n\nfunction handlePromptKeydown(e: KeyboardEvent) {\n if (state.loading.value) return\n\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault()\n handleSubmit()\n window.scrollTo(0, document.body.scrollHeight)\n }\n}\n\nfunction focusPrompt() {\n promptRef.value?.focus()\n}\n\nwatch(\n () => state.chat.status,\n (status) => {\n if (status === 'ready' || status === 'error') promptRef.value?.focus()\n },\n)\n\nconst { respondToToolCalls, approvalRequestedParts } = useChatApprovals()\n</script>\n\n<template>\n <ErrorMessageMessage\n v-if=\"state.chat.error\"\n :error=\"state.chat.error\" />\n <ApprovalSection\n v-if=\"approvalRequestedParts.length\"\n @approve=\"respondToToolCalls(true)\"\n @reject=\"respondToToolCalls(false)\" />\n <div class=\"actionContainer\">\n <form\n class=\"promptForm\"\n @submit.prevent=\"handleSubmit\">\n <label\n class=\"agentLabel\"\n for=\"agentTextarea\">\n Type a Request To get Started\n </label>\n <textarea\n id=\"agentTextarea\"\n ref=\"prompt\"\n v-model=\"state.prompt.value\"\n class=\"prompt custom-scroll\"\n :disabled=\"state.loading.value\"\n name=\"prompt\"\n placeholder=\"Ask me anything...\"\n @keydown=\"handlePromptKeydown\" />\n <div class=\"inputActionsContainer\">\n <div class=\"inputActionsLeft\">\n <SearchPopover>\n <button\n class=\"addAPIButton\"\n type=\"button\">\n <ScalarIconPlus\n class=\"size-4\"\n weight=\"bold\" />\n </button>\n </SearchPopover>\n <div\n v-for=\"document in state.registryDocuments.value\"\n :key=\"document.id\"\n class=\"apiPill\">\n <img\n v-if=\"document.logoUrl\"\n class=\"apiPillLogo\"\n :src=\"document.logoUrl\" />\n {{ document.title }}\n <button\n class=\"apiPillRemove\"\n type=\"button\"\n @click=\"state.removeDocument(document)\">\n <ScalarIconX\n class=\"size-4\"\n weight=\"bold\" />\n </button>\n </div>\n </div>\n\n <div class=\"inputActionsRight\">\n <ScalarIconButton\n v-if=\"!state.loading.value\"\n class=\"settingsButton h-7 w-7 p-1.5\"\n :icon=\"ScalarIconLockSimple\"\n label=\"Scalar\"\n size=\"md\"\n weight=\"bold\"\n @click=\"state.settingsModal.show()\" />\n\n <ScalarIconButton\n v-if=\"!state.loading.value\"\n class=\"sendButton h-7 w-7 p-1.5\"\n :disabled=\"!inputHasContent || promptTooLarge\"\n :icon=\"ScalarIconArrowUp\"\n label=\"Scalar\"\n size=\"md\"\n type=\"submit\"\n weight=\"bold\" />\n <ScalarLoading\n v-else\n class=\"loader h-7 w-7\"\n :loader=\"{\n isLoading: state.loading.value,\n isValid: false,\n clear: async () => {},\n invalidate: async () => {},\n isInvalid: false,\n isActive: false,\n validate: async () => {},\n start: () => {},\n }\"\n size=\"2xl\" />\n </div>\n </div>\n </form>\n </div>\n</template>\n\n<style scoped>\n.actionContainer {\n background: color-mix(\n in srgb,\n var(--scalar-background-2),\n var(--scalar-background-1)\n );\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n border-radius: 16px;\n width: 100%;\n /* visually hides overflowing text below */\n box-shadow: 0 50px 0 2px var(--scalar-background-1);\n}\n.promptForm {\n width: 100%;\n position: relative;\n display: flex;\n flex-direction: column;\n background: var(--scalar-background-1);\n box-shadow: var(--scalar-shadow-1);\n border-radius: 16px;\n}\n\n.inputActionsContainer {\n display: flex;\n justify-content: space-between;\n padding: 0 8px 8px 8px;\n}\n\n.inputActionsLeft {\n display: flex;\n flex-wrap: wrap; /* key: allows pills to go to next line */\n align-items: center;\n gap: 5px; /* spacing between pills */\n}\n\n.inputActionsRight {\n display: flex;\n gap: 5px;\n}\n\n.apiPill {\n font-size: var(--scalar-font-size-3);\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n color: var(--scalar-color-2);\n font-weight: var(--scalar-semibold);\n height: 28px;\n align-items: center;\n display: flex;\n border-radius: 16px;\n padding: 0 8px;\n pointer-events: all;\n z-index: 1;\n gap: 4px;\n}\n.apiPillLogo {\n width: 15px;\n}\n\n.apiPillRemove {\n width: 24px;\n height: 24px;\n margin-right: -6px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.apiPill:hover .apiPillRemove {\n background: var(--scalar-background-2);\n}\n.dark-mode .apiPill:hover .apiPillRemove {\n background: var(--scalar-background-3);\n}\n\n.apiPillRemove:hover {\n color: var(--scalar-color-1);\n}\n\n.prompt {\n width: 100%;\n outline: none;\n border: none;\n resize: none;\n field-sizing: content;\n min-height: 64px;\n z-index: 1;\n max-height: 250px;\n max-width: 100%;\n overflow-y: auto;\n scrollbar-width: thin;\n word-wrap: break-word;\n font-family: var(--scalar-font);\n font-size: 16px;\n padding: 12px 12px 14px 12px;\n}\n.dark-mode .promptForm {\n background: var(--scalar-background-2);\n}\n\n.prompt:disabled {\n color: var(--scalar-color-3);\n}\n\n.addAPIButton {\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--scalar-color-2);\n font-size: var(--scalar-font-size-3);\n height: 28px;\n width: 28px;\n font-weight: var(--scalar-bold);\n border-radius: 100%;\n display: flex;\n align-items: center;\n gap: 4px;\n pointer-events: all;\n z-index: 1;\n box-shadow: 0 0 0 var(--scalar-border-width) var(--scalar-border-color);\n}\n.addAPIButton:hover {\n background: color-mix(\n in srgb,\n var(--scalar-background-2),\n var(--scalar-background-1)\n );\n box-shadow: 0 0 0 var(--scalar-border-width) var(--scalar-border-color);\n}\n.dark-mode .addAPIButton:hover {\n background: var(--scalar-background-3);\n}\n\n.settingsButton {\n color: var(--scalar-color-3) !important;\n color: white;\n border-radius: 50% !important;\n margin: 0 !important;\n z-index: 1;\n}\n.settingsButton[aria-disabled='true'] {\n background: var(--scalar-background-2);\n}\n.dark-mode .settingsButton:hover {\n background: var(--scalar-background-3);\n}\n\n.sendButton {\n background: var(--scalar-agent-blue) !important;\n color: white;\n border-radius: 50% !important;\n margin: 0 !important;\n z-index: 1;\n}\n.sendButton:not([aria-disabled='true']):hover {\n color: white !important;\n}\n\n.sendButton[aria-disabled='true'] {\n background: var(--scalar-background-2) !important;\n color: var(--scalar-color-3);\n}\n\n.dark-mode .sendButton[aria-disabled='true'] {\n background: var(--scalar-background-3) !important;\n}\n.contextContainer {\n display: flex;\n width: 100%;\n padding: 10px 12px 12px 12px;\n color: var(--scalar-color-2);\n font-size: var(--scalar-font-size-3);\n user-select: none;\n justify-content: space-between;\n}\n\n.settingsButton {\n font-weight: var(--scalar-semibold);\n border-radius: var(--scalar-radius-lg);\n padding: 4px 6px;\n margin: -4px -6px;\n}\n.settingsButton:hover {\n background: var(--scalar-background-2);\n box-shadow: 0 0 var(--scalar-border-width) 0 var(--scalar-border-color);\n cursor: pointer;\n}\n\n.agentLabel {\n font-size: 0px;\n position: absolute;\n width: 100%;\n height: 100%;\n cursor: text;\n}\n</style>\n"],"names":["_unref","_createBlock","_createElementVNode","_createVNode","_openBlock","_createElementBlock","_Fragment","document","_createTextVNode","_toDisplayString"],"mappings":"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"}
@@ -6,6 +6,7 @@ import type { ServerObject } from '@scalar/workspace-store/schemas/v3.1/strict/o
6
6
  import type { WorkspaceDocument } from '@scalar/workspace-store/schemas/workspace';
7
7
  type __VLS_Props = {
8
8
  options: Pick<ApiReferenceConfigurationRaw, 'authentication' | 'persistAuth' | 'proxyUrl'>;
9
+ name: string;
9
10
  document: WorkspaceDocument | undefined;
10
11
  eventBus: WorkspaceEventBus;
11
12
  securitySchemes: MergedSecuritySchemes;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Auth.vue.d.ts","sourceRoot":"","sources":["../../../src/views/Settings/Auth.vue"],"names":[],"mappings":"AA0FA,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,yDAAyD,CAAA;AAKhE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAA;AAC/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AACvE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2EAA2E,CAAA;AACnH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8DAA8D,CAAA;AAChG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAA;AAMlF,KAAK,WAAW,GAAG;IACf,OAAO,EAAE,IAAI,CACX,4BAA4B,EAC5B,gBAAgB,GAAG,aAAa,GAAG,UAAU,CAC9C,CAAA;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,iBAAiB,GAAG,SAAS,CAAA;IACvC,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,eAAe,EAAE,qBAAqB,CAAA;IACtC,cAAc,EAAE,YAAY,GAAG,IAAI,CAAA;IACnC,WAAW,EAAE,kBAAkB,CAAA;CAChC,CAAC;;AA2GJ,wBAEG"}