@scalar/agent-chat 0.5.18 → 0.7.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 (52) hide show
  1. package/dist/App.vue.d.ts +2 -1
  2. package/dist/App.vue.d.ts.map +1 -1
  3. package/dist/api.d.ts +3 -1
  4. package/dist/api.d.ts.map +1 -1
  5. package/dist/api.js +54 -53
  6. package/dist/client-tools/execute-request.d.ts +1 -0
  7. package/dist/client-tools/execute-request.d.ts.map +1 -1
  8. package/dist/client-tools/execute-request.js +33 -27
  9. package/dist/components/FreeMessagesInfoSection.vue.d.ts.map +1 -1
  10. package/dist/components/FreeMessagesInfoSection.vue.js +1 -1
  11. package/dist/components/FreeMessagesInfoSection.vue2.js +27 -25
  12. package/dist/components/PaymentSection.vue.d.ts.map +1 -1
  13. package/dist/components/PaymentSection.vue.js +1 -1
  14. package/dist/components/PaymentSection.vue2.js +16 -20
  15. package/dist/components/ServerSelector.vue.d.ts.map +1 -1
  16. package/dist/components/ServerSelector.vue.js +27 -21
  17. package/dist/components/UploadSection.vue.js +2 -2
  18. package/dist/components/UploadSection.vue2.js +13 -13
  19. package/dist/consts/urls.d.ts +8 -0
  20. package/dist/consts/urls.d.ts.map +1 -0
  21. package/dist/consts/urls.js +10 -0
  22. package/dist/helpers.d.ts +4 -10
  23. package/dist/helpers.d.ts.map +1 -1
  24. package/dist/helpers.js +34 -45
  25. package/dist/hooks/use-agent-key-documents.js +6 -6
  26. package/dist/hooks/use-chat-approvals.d.ts.map +1 -1
  27. package/dist/hooks/use-chat-approvals.js +7 -6
  28. package/dist/hooks/use-signup-link.d.ts +12 -0
  29. package/dist/hooks/use-signup-link.d.ts.map +1 -0
  30. package/dist/hooks/use-signup-link.js +12 -0
  31. package/dist/hooks/use-upload-tmp-document.d.ts +3 -0
  32. package/dist/hooks/use-upload-tmp-document.d.ts.map +1 -1
  33. package/dist/hooks/use-upload-tmp-document.js +31 -28
  34. package/dist/package.json +1 -1
  35. package/dist/state/state.d.ts +2 -1
  36. package/dist/state/state.d.ts.map +1 -1
  37. package/dist/state/state.js +134 -127
  38. package/dist/style.css +1 -1
  39. package/dist/views/Chat/Messages/AskForAuthentication.vue.js +1 -1
  40. package/dist/views/Chat/Messages/AskForAuthentication.vue2.js +12 -12
  41. package/dist/views/PromptForm.vue.d.ts.map +1 -1
  42. package/dist/views/PromptForm.vue.js +2 -2
  43. package/dist/views/PromptForm.vue2.js +100 -93
  44. package/dist/views/Settings/DocSettings.vue.js +1 -1
  45. package/dist/views/Settings/DocSettings.vue2.js +10 -10
  46. package/dist/views/Settings/Settings.vue.d.ts.map +1 -1
  47. package/dist/views/Settings/Settings.vue.js +2 -2
  48. package/dist/views/Settings/Settings.vue2.js +53 -43
  49. package/dist/views/Start.vue.d.ts.map +1 -1
  50. package/dist/views/Start.vue.js +1 -1
  51. package/dist/views/Start.vue2.js +28 -27
  52. package/package.json +8 -8
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as i, computed as u, createElementBlock as t, openBlock as o, normalizeClass as p, createCommentVNode as n, createVNode as s, unref as a, createTextVNode as d, toDisplayString as g } from "vue";
2
2
  import { useLoadingState as m, ScalarLoading as S } from "@scalar/components";
3
- import { ScalarIconCheck as x, ScalarIconXCircle as y } from "@scalar/icons";
3
+ import { ScalarIconCheck as y, ScalarIconXCircle as x } from "@scalar/icons";
4
4
  const f = {
5
5
  key: 0,
6
6
  class: "flex items-center gap-1.5"
@@ -10,16 +10,16 @@ const f = {
10
10
  }, h = {
11
11
  key: 1,
12
12
  class: "uploadText"
13
- }, T = {
13
+ }, I = {
14
14
  key: 2,
15
15
  class: "uploadText"
16
- }, C = {
16
+ }, T = {
17
17
  key: 1,
18
18
  class: "uploadText flex items-center gap-1.5"
19
- }, L = {
19
+ }, C = {
20
20
  key: 2,
21
21
  class: "uploadText flex items-center gap-1.5"
22
- }, B = /* @__PURE__ */ i({
22
+ }, v = /* @__PURE__ */ i({
23
23
  __name: "UploadSection",
24
24
  props: {
25
25
  uploadState: {}
@@ -28,7 +28,7 @@ const f = {
28
28
  const c = m(), r = u(
29
29
  () => ["uploading", "processing", "loading"].includes(e.uploadState.type)
30
30
  );
31
- return (v, l) => (o(), t("div", {
31
+ return (L, l) => (o(), t("div", {
32
32
  class: p(["uploadSection", {
33
33
  error: e.uploadState.type === "error",
34
34
  done: e.uploadState.type === "done"
@@ -43,19 +43,19 @@ const f = {
43
43
  },
44
44
  size: "lg"
45
45
  }, null, 8, ["loader"]),
46
- e.uploadState.type === "loading" ? (o(), t("strong", k, " Loading document... ")) : e.uploadState.type === "processing" ? (o(), t("strong", h, " Processing document... ")) : (o(), t("strong", T, " Uploading document... "))
46
+ e.uploadState.type === "loading" ? (o(), t("strong", k, " Loading OpenAPI document ")) : e.uploadState.type === "processing" ? (o(), t("strong", h, " Processing OpenAPI document ")) : (o(), t("strong", I, " Uploading OpenAPI document "))
47
47
  ])) : n("", !0),
48
- e.uploadState.type === "done" ? (o(), t("strong", C, [
49
- s(a(x), { class: "icon text-green" }),
50
- l[0] || (l[0] = d(" Document processed ", -1))
48
+ e.uploadState.type === "done" ? (o(), t("strong", T, [
49
+ s(a(y), { class: "icon text-green" }),
50
+ l[0] || (l[0] = d(" Your OpenAPI document has been processed successfully. ", -1))
51
51
  ])) : n("", !0),
52
- e.uploadState.type === "error" ? (o(), t("strong", L, [
53
- s(a(y), { class: "icon text-red" }),
52
+ e.uploadState.type === "error" ? (o(), t("strong", C, [
53
+ s(a(x), { class: "icon text-red" }),
54
54
  d(" " + g(e.uploadState.error), 1)
55
55
  ])) : n("", !0)
56
56
  ], 2));
57
57
  }
58
58
  });
59
59
  export {
60
- B as default
60
+ v as default
61
61
  };
@@ -0,0 +1,8 @@
1
+ export declare const URLS: {
2
+ readonly DEFAULT_PROXY_URL: "https://proxy.scalar.com";
3
+ readonly PRIVACY_POLICY: "https://scalar.com/legal/privacy-policy";
4
+ readonly TERMS_AND_CONDITIONS: "https://scalar.com/legal/terms-and-conditions";
5
+ readonly AGENT_SCALAR_DOCUMENTATION: "https://scalar.com/products/agent/getting-started";
6
+ readonly PROXY_SOURCE_CODE: "https://github.com/scalar/scalar/tree/main/projects/proxy-scalar-com";
7
+ };
8
+ //# sourceMappingURL=urls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"urls.d.ts","sourceRoot":"","sources":["../../src/consts/urls.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI;;;;;;CAMP,CAAA"}
@@ -0,0 +1,10 @@
1
+ const t = {
2
+ DEFAULT_PROXY_URL: "https://proxy.scalar.com",
3
+ PRIVACY_POLICY: "https://scalar.com/legal/privacy-policy",
4
+ TERMS_AND_CONDITIONS: "https://scalar.com/legal/terms-and-conditions",
5
+ AGENT_SCALAR_DOCUMENTATION: "https://scalar.com/products/agent/getting-started",
6
+ PROXY_SOURCE_CODE: "https://github.com/scalar/scalar/tree/main/projects/proxy-scalar-com"
7
+ };
8
+ export {
9
+ t as URLS
10
+ };
package/dist/helpers.d.ts CHANGED
@@ -195,10 +195,6 @@ export declare const authStorage: () => {
195
195
  };
196
196
  };
197
197
  selected: {
198
- document?: {
199
- selectedIndex: number;
200
- selectedSchemes: {}[];
201
- } | undefined;
202
198
  path?: {
203
199
  [x: string]: {
204
200
  [x: string]: {
@@ -207,6 +203,10 @@ export declare const authStorage: () => {
207
203
  };
208
204
  };
209
205
  } | undefined;
206
+ document?: {
207
+ selectedIndex: number;
208
+ selectedSchemes: {}[];
209
+ } | undefined;
210
210
  };
211
211
  };
212
212
  /**
@@ -229,10 +229,4 @@ export declare const restoreAuthSecretsFromStorage: ({ documentName, workspaceSt
229
229
  workspaceStore: WorkspaceStore;
230
230
  }) => void;
231
231
  export declare function safeParseJson(value: string): any;
232
- /**
233
- * Wrap url with Scalar Proxy
234
- *
235
- * Skips wrapping if the url is localhost
236
- */
237
- export declare function makeScalarProxyUrl(url: string): string;
238
232
  //# sourceMappingURL=helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAEpE,OAAO,EAAE,KAAK,IAAI,EAAc,MAAM,uCAAuC,CAAA;AAG7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8DAA8D,CAAA;AAEnG,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,GACwB,eAAe,EAAE,CACxG;AAOD,sDAAsD;AACtD,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,cAAc;;;;;EAgBpE;AAKD;;;;GAIG;AACH,eAAO,MAAM,WAAW;IAMpB;;OAEG;oBACa,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAItB;;;OAGG;oBACa,MAAM,SAAS,IAAI;CAItC,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,6BAA6B,GAAI,mCAG3C;IACD,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,cAAc,CAAA;CAC/B,KAAG,IAIH,CAAA;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,OAM1C;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,UAmB7C"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAEpE,OAAO,EAAE,KAAK,IAAI,EAAc,MAAM,uCAAuC,CAAA;AAG7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8DAA8D,CAAA;AAEnG,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,GACwB,eAAe,EAAE,CACxG;AAOD,sDAAsD;AACtD,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,cAAc;;;;;EAgBpE;AAKD;;;;GAIG;AACH,eAAO,MAAM,WAAW;IAMpB;;OAEG;oBACa,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAItB;;;OAGG;oBACa,MAAM,SAAS,IAAI;CAItC,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,6BAA6B,GAAI,mCAG3C;IACD,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,cAAc,CAAA;CAC/B,KAAG,IAIH,CAAA;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,OAM1C"}
package/dist/helpers.js CHANGED
@@ -1,78 +1,67 @@
1
- import { mergeSecurity as a } from "@scalar/api-client/v2/blocks/scalar-auth-selector-block";
2
- import { getSelectedServer as c } from "@scalar/api-client/v2/features/operation";
3
- import { getServers as n } from "@scalar/api-client/v2/helpers";
1
+ import { mergeSecurity as c } from "@scalar/api-client/v2/blocks/scalar-auth-selector-block";
2
+ import { getSelectedServer as n } from "@scalar/api-client/v2/features/operation";
3
+ import { getServers as a } from "@scalar/api-client/v2/helpers";
4
4
  import { safeLocalStorage as u, REFERENCE_LS_KEYS as i } from "@scalar/helpers/object/local-storage";
5
5
  import { AuthSchema as m } from "@scalar/workspace-store/entities/auth";
6
- import { coerceValue as h } from "@scalar/workspace-store/schemas/typebox-coerce";
7
- function U(t) {
8
- return Object.values(t.paths ?? {}).flatMap((r) => Object.values(r ?? {}));
6
+ import { coerceValue as S } from "@scalar/workspace-store/schemas/typebox-coerce";
7
+ function A(e) {
8
+ return Object.values(e.paths ?? {}).flatMap((t) => Object.values(t ?? {}));
9
9
  }
10
- function p(t, r, e) {
11
- return Object.values(a(r?.components?.securitySchemes, {}, e, t));
10
+ function g(e, t, r) {
11
+ return Object.values(c(t?.components?.securitySchemes, {}, r, e));
12
12
  }
13
- function x(t) {
13
+ function E(e) {
14
14
  return Object.fromEntries(
15
- Object.entries(t.workspace.documents).map(([r, e]) => {
16
- const s = n(e.servers, {
17
- documentUrl: e?.["x-scalar-original-source-url"]
15
+ Object.entries(e.workspace.documents).map(([t, r]) => {
16
+ const s = a(r.servers, {
17
+ documentUrl: r?.["x-scalar-original-source-url"]
18
18
  });
19
19
  return [
20
- r,
20
+ t,
21
21
  {
22
- activeServer: c(e, s),
23
- securitySchemes: p(r, e, t.auth)
22
+ activeServer: n(s, r["x-scalar-selected-server"]),
23
+ securitySchemes: g(t, r, e.auth)
24
24
  }
25
25
  ];
26
26
  })
27
27
  );
28
28
  }
29
- const o = u(), S = () => {
30
- const t = (r) => `${i.AUTH}-${r}`;
29
+ const o = u(), h = () => {
30
+ const e = (t) => `${i.AUTH}-${t}`;
31
31
  return {
32
32
  /**
33
33
  * Retrieves and coerces the authentication schemes stored in local storage.
34
34
  */
35
- getAuth: (r) => {
36
- const e = JSON.parse(o.getItem(t(r)) ?? "{}");
37
- return h(m, e);
35
+ getAuth: (t) => {
36
+ const r = JSON.parse(o.getItem(e(t)) ?? "{}");
37
+ return S(m, r);
38
38
  },
39
39
  /**
40
40
  * Stores the authentication schemes in local storage.
41
41
  * @param value The Auth object to stringify and store.
42
42
  */
43
- setAuth: (r, e) => {
44
- o.setItem(t(r), JSON.stringify(e));
43
+ setAuth: (t, r) => {
44
+ o.setItem(e(t), JSON.stringify(r));
45
45
  }
46
46
  };
47
- }, A = ({
48
- documentName: t,
49
- workspaceStore: r
47
+ }, b = ({
48
+ documentName: e,
49
+ workspaceStore: t
50
50
  }) => {
51
- const s = S().getAuth(t);
52
- r.auth.load({ [t]: s });
51
+ const s = h().getAuth(e);
52
+ t.auth.load({ [e]: s });
53
53
  };
54
- function E(t) {
54
+ function j(e) {
55
55
  try {
56
- return JSON.parse(t);
56
+ return JSON.parse(e);
57
57
  } catch {
58
58
  return;
59
59
  }
60
60
  }
61
- function b(t) {
62
- try {
63
- if (t.startsWith("/") || t.startsWith("http://localhost"))
64
- return t;
65
- const r = new URLSearchParams({ scalar_url: t });
66
- return new URL(`https://proxy.scalar.com/?${r}`).toString();
67
- } catch {
68
- return console.error(`Invalid URL provided: ${t}`), t;
69
- }
70
- }
71
61
  export {
72
- S as authStorage,
73
- x as createDocumentSettings,
74
- U as getOperations,
75
- b as makeScalarProxyUrl,
76
- A as restoreAuthSecretsFromStorage,
77
- E as safeParseJson
62
+ h as authStorage,
63
+ E as createDocumentSettings,
64
+ A as getOperations,
65
+ b as restoreAuthSecretsFromStorage,
66
+ j as safeParseJson
78
67
  };
@@ -1,18 +1,18 @@
1
- import { useToasts as a } from "@scalar/use-toasts";
1
+ import { useToasts as c } from "@scalar/use-toasts";
2
2
  import { onMounted as m } from "vue";
3
- import { useState as f } from "../state/state.js";
3
+ import { useState as i } from "../state/state.js";
4
4
  function l() {
5
- const { api: t, addDocument: o, mode: s, getAgentKey: r } = f(), { toast: n } = a();
5
+ const { api: t, addDocument: o, mode: n, getAgentKey: s } = i(), { toast: r } = c();
6
6
  m(async () => {
7
- if (s !== "full" || !r)
7
+ if (n !== "full" || !s)
8
8
  return;
9
9
  const e = await t.getKeyDocuments();
10
10
  if (!e.success) {
11
- n("Unable to fetch registry documents for the provided key", "error");
11
+ r("Failed to fetch your OpenAPI document. The Agent key may be invalid.", "error");
12
12
  return;
13
13
  }
14
14
  e.data.documents.forEach(
15
- ({ namespace: u, slug: c }) => o({ namespace: u, slug: c, removable: !1 })
15
+ ({ namespace: u, slug: a }) => o({ namespace: u, slug: a, removable: !1 })
16
16
  );
17
17
  });
18
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"use-chat-approvals.d.ts","sourceRoot":"","sources":["../../src/hooks/use-chat-approvals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,IAAI,CAAA;AAMnD,OAAO,EAAE,KAAK,KAAK,EAAY,MAAM,eAAe,CAAA;AAEpD,KAAK,eAAe,GAAG,UAAU,GAAG;IAClC,IAAI,EAAE,sBAAsB,CAAA;IAC5B,KAAK,EAAE,iBAAiB,CAAA;IACxB,KAAK,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAA;CACzC,CAAA;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,IAAI,eAAe,CAMpG;AAED,wBAAgB,mBAAmB;;;;;;;;;;;;;;;cAb3B,sBAAsB;eACrB,iBAAiB;eACjB,KAAK,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC;;0CAqBW,OAAO;EAuB3D"}
1
+ {"version":3,"file":"use-chat-approvals.d.ts","sourceRoot":"","sources":["../../src/hooks/use-chat-approvals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,IAAI,CAAA;AAMnD,OAAO,EAAE,KAAK,KAAK,EAAY,MAAM,eAAe,CAAA;AAEpD,KAAK,eAAe,GAAG,UAAU,GAAG;IAClC,IAAI,EAAE,sBAAsB,CAAA;IAC5B,KAAK,EAAE,iBAAiB,CAAA;IACxB,KAAK,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAA;CACzC,CAAA;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,IAAI,eAAe,CAMpG;AAED,wBAAgB,mBAAmB;;;;;;;;;;;;;;;cAb3B,sBAAsB;eACrB,iBAAiB;eACjB,KAAK,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC;;0CAqBW,OAAO;EAwB3D"}
@@ -1,4 +1,4 @@
1
- import { computed as l } from "vue";
1
+ import { computed as p } from "vue";
2
2
  import { executeRequestTool as i } from "../client-tools/execute-request.js";
3
3
  import { createDocumentSettings as n } from "../helpers.js";
4
4
  import { useState as m } from "../state/state.js";
@@ -6,10 +6,10 @@ import { EXECUTE_CLIENT_SIDE_REQUEST_TOOL_NAME as s } from "../entities/tools/ex
6
6
  function a(t) {
7
7
  return t.type === `tool-${s}` && t.state === "input-available" && t.input?.method?.toLowerCase() !== "get";
8
8
  }
9
- function h() {
10
- const t = m(), r = l(() => t.chat.messages.filter((e) => e.parts.some(a)).flatMap((e) => e.parts).filter(a));
9
+ function E() {
10
+ const t = m(), r = p(() => t.chat.messages.filter((e) => e.parts.some(a)).flatMap((e) => e.parts).filter(a));
11
11
  async function u(e) {
12
- const p = r.value.map(async (o) => {
12
+ const l = r.value.map(async (o) => {
13
13
  if (!e)
14
14
  return await t.chat.addToolOutput({
15
15
  tool: s,
@@ -19,16 +19,17 @@ function h() {
19
19
  });
20
20
  await i({
21
21
  documentSettings: n(t.workspaceStore),
22
+ proxyUrl: t.proxyUrl.value,
22
23
  input: o.input,
23
24
  toolCallId: o.toolCallId,
24
25
  chat: t.chat
25
26
  });
26
27
  });
27
- await Promise.all(p);
28
+ await Promise.all(l);
28
29
  }
29
30
  return { approvalRequiredParts: r, respondToRequestApprovals: u };
30
31
  }
31
32
  export {
32
33
  a as requestPartRequiresApproval,
33
- h as useRequestApprovals
34
+ E as useRequestApprovals
34
35
  };
@@ -0,0 +1,12 @@
1
+ import type { ComputedRef } from 'vue';
2
+ /**
3
+ * Agent Scalar signup/upgrade URL for both full (agent.scalar.com) and embedded
4
+ * (@scalar/api-reference) modes.
5
+ *
6
+ * In embedded mode, includes register flow and optional docUrl when a temporary document was uploaded.
7
+ */
8
+ export declare function useSignupLink(): {
9
+ signupLink: ComputedRef<string>;
10
+ navigateToSignup: () => void;
11
+ };
12
+ //# sourceMappingURL=use-signup-link.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-signup-link.d.ts","sourceRoot":"","sources":["../../src/hooks/use-signup-link.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,KAAK,CAAA;AAKtC;;;;;GAKG;AACH,wBAAgB,aAAa,IAAI;IAC/B,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC/B,gBAAgB,EAAE,MAAM,IAAI,CAAA;CAC7B,CAoBA"}
@@ -0,0 +1,12 @@
1
+ import { computed as u } from "vue";
2
+ import { useState as i } from "../state/state.js";
3
+ function s() {
4
+ const { dashboardUrl: o, mode: t, uploadedTmpDocumentUrl: n } = i(), e = u(() => t === "full" ? o : n.value ? `${o}/register?flow=oss-agent&docUrl=${n.value}` : o);
5
+ function r() {
6
+ window.location.assign(e.value);
7
+ }
8
+ return { signupLink: e, navigateToSignup: r };
9
+ }
10
+ export {
11
+ s as useSignupLink
12
+ };
@@ -14,6 +14,9 @@ export declare function getTmpDocFromLocalStorage(): {
14
14
  namespace: string;
15
15
  slug: string;
16
16
  } | undefined;
17
+ /**
18
+ * Handle uploading a temporary OpenAPI document.
19
+ */
17
20
  export declare function useUploadTmpDocument(): {
18
21
  uploadTempDocument: (document: string, isAgent?: boolean) => Promise<{
19
22
  url: string;
@@ -1 +1 @@
1
- {"version":3,"file":"use-upload-tmp-document.d.ts","sourceRoot":"","sources":["../../src/hooks/use-upload-tmp-document.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,sBAAsB,GAC9B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAQpB,wBAAgB,yBAAyB;;;cAYxC;AAED,wBAAgB,oBAAoB;mCAeU,MAAM;;;;;;EA4EnD"}
1
+ {"version":3,"file":"use-upload-tmp-document.d.ts","sourceRoot":"","sources":["../../src/hooks/use-upload-tmp-document.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,sBAAsB,GAC9B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAQpB,wBAAgB,yBAAyB;;;cAYxC;AAED;;GAEG;AACH,wBAAgB,oBAAoB;mCASU,MAAM;;;;;;EAkFnD"}
@@ -1,42 +1,45 @@
1
- import { ref as d } from "vue";
1
+ import { redirectToProxy as d } from "@scalar/helpers/url/redirect-to-proxy";
2
+ import { ref as g } from "vue";
2
3
  import { z as o } from "zod/mini";
3
- import { useState as g } from "../state/state.js";
4
- const u = "scalar-tmp-doc";
5
- function f({ namespace: t, slug: e }) {
6
- localStorage.setItem(u, JSON.stringify({ namespace: t, slug: e }));
4
+ import { useState as f } from "../state/state.js";
5
+ const y = 5e3, c = "scalar-tmp-doc";
6
+ function S({ namespace: t, slug: e }) {
7
+ localStorage.setItem(c, JSON.stringify({ namespace: t, slug: e }));
7
8
  }
8
- function h() {
9
- const t = localStorage.getItem(u);
9
+ function b() {
10
+ const t = localStorage.getItem(c);
10
11
  if (t)
11
12
  return o.object({
12
13
  namespace: o.string(),
13
14
  slug: o.string()
14
15
  }).parse(JSON.parse(t));
15
16
  }
16
- function T() {
17
- const t = g(), e = d();
18
- function c(n) {
19
- const a = `${t.baseUrl}${n}`;
20
- if (a.startsWith("/")) return a;
21
- const s = new URLSearchParams({ scalar_url: a.toString() });
22
- return new URL(`https://proxy.scalar.com/?${s}`);
17
+ function U() {
18
+ const t = f(), e = g();
19
+ function s(a) {
20
+ const n = `${t.baseUrl}${a}`;
21
+ return d(t.proxyUrl.value, n);
23
22
  }
24
- async function l(n, a = !1) {
23
+ async function l(a, n = !1) {
25
24
  try {
26
- e.value = { type: "uploading" };
27
- const s = await fetch(c(`/core/share/upload/apis${a ? "?source=agent" : ""}`), {
25
+ e.value = {
26
+ type: "uploading"
27
+ };
28
+ const u = await fetch(s(`/core/share/upload/apis${n ? "?source=agent" : ""}`), {
28
29
  method: "POST",
29
- headers: { "Content-Type": "application/json" },
30
- body: JSON.stringify({ document: n })
30
+ headers: {
31
+ "Content-Type": "application/json"
32
+ },
33
+ body: JSON.stringify({ document: a })
31
34
  });
32
- if (!s.ok) {
35
+ if (!u.ok) {
33
36
  e.value = {
34
37
  type: "error",
35
- error: "Failed to upload document."
38
+ error: "Failed to upload your OpenAPI document."
36
39
  };
37
40
  return;
38
41
  }
39
- const p = await s.json(), { success: i, data: r } = o.object({ url: o.string(), namespace: o.string(), slug: o.string() }).safeParse(p);
42
+ const p = await u.json(), { success: i, data: r } = o.object({ url: o.string(), namespace: o.string(), slug: o.string() }).safeParse(p);
40
43
  if (!i) {
41
44
  e.value = {
42
45
  type: "error",
@@ -48,12 +51,12 @@ function T() {
48
51
  type: "processing"
49
52
  };
50
53
  const m = await fetch(
51
- c(`/vector/registry/embeddings/${r.namespace}/${r.slug}`),
54
+ s(`/vector/registry/embeddings/${r.namespace}/${r.slug}`),
52
55
  {
53
56
  method: "GET"
54
57
  }
55
58
  );
56
- if (f({
59
+ if (S({
57
60
  namespace: r.namespace,
58
61
  slug: r.slug
59
62
  }), await t.addDocument({
@@ -69,9 +72,9 @@ function T() {
69
72
  }
70
73
  return e.value = { type: "done" }, t.uploadedTmpDocumentUrl.value = r.url, setTimeout(() => {
71
74
  e.value = void 0;
72
- }, 2e3), r;
75
+ }, y), r;
73
76
  } catch {
74
- e.value = { type: "error", error: "Failed to upload document." };
77
+ e.value = { type: "error", error: "Failed to upload your OpenAPI document." };
75
78
  return;
76
79
  }
77
80
  }
@@ -81,6 +84,6 @@ function T() {
81
84
  };
82
85
  }
83
86
  export {
84
- h as getTmpDocFromLocalStorage,
85
- T as useUploadTmpDocument
87
+ b as getTmpDocFromLocalStorage,
88
+ U as useUploadTmpDocument
86
89
  };
package/dist/package.json CHANGED
@@ -10,7 +10,7 @@
10
10
  "url": "git+https://github.com/scalar/scalar.git",
11
11
  "directory": "packages/agent-chat"
12
12
  },
13
- "version": "0.5.18",
13
+ "version": "0.7.0",
14
14
  "engines": {
15
15
  "node": ">=20"
16
16
  },
@@ -42,7 +42,8 @@ type State = {
42
42
  loading: ComputedRef<boolean>;
43
43
  settingsModal: ModalState;
44
44
  eventBus: WorkspaceEventBus;
45
- proxyUrl: Ref<string | undefined>;
45
+ proxyUrl: ComputedRef<string>;
46
+ proxyUrlRaw: Ref<string | undefined>;
46
47
  config: ComputedRef<ApiReferenceConfigurationRaw>;
47
48
  registryUrl: string;
48
49
  dashboardUrl: string;
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/state/state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/state/state.ts"],"names":[],"mappings":"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"}