@scalar/agent-chat 0.12.43 → 0.12.44

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.
@@ -2,7 +2,7 @@ import _plugin_vue_export_helper_default from "../_virtual/_plugin-vue_export-he
2
2
  import ApprovalSection_vue_vue_type_script_setup_true_lang_default from "./ApprovalSection.vue.script.js";
3
3
  /* empty css */
4
4
  //#region src/components/ApprovalSection.vue
5
- var ApprovalSection_default = /*#__PURE__*/ _plugin_vue_export_helper_default(ApprovalSection_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-fb5102df"]]);
5
+ var ApprovalSection_default = /*#__PURE__*/ _plugin_vue_export_helper_default(ApprovalSection_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-f493d089"]]);
6
6
  //#endregion
7
7
  export { ApprovalSection_default as default };
8
8
 
@@ -1 +1 @@
1
- {"version":3,"file":"ApprovalSection.vue.js","names":[],"sources":["../../src/components/ApprovalSection.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarIconInfo } from '@scalar/icons'\n\nconst emit = defineEmits<{\n (e: 'approve'): void\n (e: 'reject'): void\n}>()\n</script>\n\n<template>\n <div class=\"approvalSection\">\n <strong class=\"approvalText flex items-center gap-1.5\">\n <ScalarIconInfo\n class=\"text-blue size-4\"\n weight=\"bold\" />\n One or more requests require approval.\n </strong>\n <div class=\"approveContainer\">\n <button\n type=\"button\"\n class=\"actionButton rejectButton\"\n @click=\"emit('reject')\">\n Reject\n </button>\n <button\n type=\"button\"\n class=\"actionButton approveButton\"\n @click=\"emit('approve')\">\n Approve\n </button>\n </div>\n </div>\n</template>\n\n<style scoped>\n.approvalSection {\n width: 100%;\n margin-bottom: -16px;\n padding: 8px 8px 24px 12px;\n\n background: color-mix(\n in srgb,\n var(--scalar-color-blue),\n var(--scalar-background-1) 95%\n );\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n border-radius: var(--scalar-radius-3xl) var(--scalar-radius-3xl) 0 0;\n display: flex;\n align-items: center;\n justify-content: space-between;\n position: absolute;\n top: 0;\n transform: translate3d(0, calc(-100% + 16px), 0);\n}\n\n.approvalText {\n font-weight: var(--scalar-semibold);\n font-size: var(--scalar-font-size-3);\n}\n\n.approveContainer {\n display: flex;\n gap: 5px;\n}\n\n.actionButton {\n display: flex;\n align-items: center;\n font-weight: var(--scalar-semibold);\n border-radius: var(--scalar-radius-full);\n padding: 6px 12px;\n font-size: var(--scalar-font-size-3);\n}\n\n.rejectButton {\n color: white;\n background: var(--scalar-color-red);\n}\n.rejectButton:hover,\n.rejectButton:active {\n background: color-mix(\n in srgb,\n var(--scalar-color-red),\n var(--scalar-background-1) 10%\n );\n color: white !important;\n}\n\n.approveButton {\n color: white;\n background: var(--scalar-color-blue);\n}\n.approveButton:hover,\n.approveButton:active {\n background: color-mix(\n in srgb,\n var(--scalar-color-blue),\n var(--scalar-background-1) 10%\n );\n color: white !important;\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"ApprovalSection.vue.js","names":[],"sources":["../../src/components/ApprovalSection.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarIconInfo } from '@scalar/icons'\n\nconst emit = defineEmits<{\n (e: 'approve'): void\n (e: 'reject'): void\n}>()\n</script>\n\n<template>\n <div class=\"approvalSection\">\n <strong class=\"approvalText flex items-center gap-1.5\">\n <ScalarIconInfo\n class=\"text-blue size-4\"\n weight=\"bold\" />\n One or more requests require approval.\n </strong>\n <div class=\"approveContainer\">\n <button\n class=\"actionButton rejectButton\"\n type=\"button\"\n @click=\"emit('reject')\">\n Reject\n </button>\n <button\n class=\"actionButton approveButton\"\n type=\"button\"\n @click=\"emit('approve')\">\n Approve\n </button>\n </div>\n </div>\n</template>\n\n<style scoped>\n.approvalSection {\n width: 100%;\n margin-bottom: -16px;\n padding: 8px 8px 24px 12px;\n\n background: color-mix(\n in srgb,\n var(--scalar-color-blue),\n var(--scalar-background-1) 95%\n );\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n border-radius: var(--scalar-radius-3xl) var(--scalar-radius-3xl) 0 0;\n display: flex;\n align-items: center;\n justify-content: space-between;\n position: absolute;\n top: 0;\n transform: translate3d(0, calc(-100% + 16px), 0);\n}\n\n.approvalText {\n font-weight: var(--scalar-semibold);\n font-size: var(--scalar-font-size-3);\n}\n\n.approveContainer {\n display: flex;\n gap: 5px;\n}\n\n.actionButton {\n display: flex;\n align-items: center;\n font-weight: var(--scalar-semibold);\n border-radius: var(--scalar-radius-full);\n padding: 6px 12px;\n font-size: var(--scalar-font-size-3);\n}\n\n.rejectButton {\n color: white;\n background: var(--scalar-color-red);\n}\n.rejectButton:hover,\n.rejectButton:active {\n background: color-mix(\n in srgb,\n var(--scalar-color-red),\n var(--scalar-background-1) 10%\n );\n color: white !important;\n}\n\n.approveButton {\n color: white;\n background: var(--scalar-color-blue);\n}\n.approveButton:hover,\n.approveButton:active {\n background: color-mix(\n in srgb,\n var(--scalar-color-blue),\n var(--scalar-background-1) 10%\n );\n color: white !important;\n}\n</style>\n"],"mappings":""}
@@ -14,12 +14,12 @@ var ApprovalSection_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
14
14
  class: "text-blue size-4",
15
15
  weight: "bold"
16
16
  }), _cache[2] || (_cache[2] = createTextVNode(" One or more requests require approval. ", -1))]), createElementVNode("div", _hoisted_3, [createElementVNode("button", {
17
- type: "button",
18
17
  class: "actionButton rejectButton",
18
+ type: "button",
19
19
  onClick: _cache[0] || (_cache[0] = ($event) => emit("reject"))
20
20
  }, " Reject "), createElementVNode("button", {
21
- type: "button",
22
21
  class: "actionButton approveButton",
22
+ type: "button",
23
23
  onClick: _cache[1] || (_cache[1] = ($event) => emit("approve"))
24
24
  }, " Approve ")])]);
25
25
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ApprovalSection.vue.script.js","names":[],"sources":["../../src/components/ApprovalSection.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarIconInfo } from '@scalar/icons'\n\nconst emit = defineEmits<{\n (e: 'approve'): void\n (e: 'reject'): void\n}>()\n</script>\n\n<template>\n <div class=\"approvalSection\">\n <strong class=\"approvalText flex items-center gap-1.5\">\n <ScalarIconInfo\n class=\"text-blue size-4\"\n weight=\"bold\" />\n One or more requests require approval.\n </strong>\n <div class=\"approveContainer\">\n <button\n type=\"button\"\n class=\"actionButton rejectButton\"\n @click=\"emit('reject')\">\n Reject\n </button>\n <button\n type=\"button\"\n class=\"actionButton approveButton\"\n @click=\"emit('approve')\">\n Approve\n </button>\n </div>\n </div>\n</template>\n\n<style scoped>\n.approvalSection {\n width: 100%;\n margin-bottom: -16px;\n padding: 8px 8px 24px 12px;\n\n background: color-mix(\n in srgb,\n var(--scalar-color-blue),\n var(--scalar-background-1) 95%\n );\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n border-radius: var(--scalar-radius-3xl) var(--scalar-radius-3xl) 0 0;\n display: flex;\n align-items: center;\n justify-content: space-between;\n position: absolute;\n top: 0;\n transform: translate3d(0, calc(-100% + 16px), 0);\n}\n\n.approvalText {\n font-weight: var(--scalar-semibold);\n font-size: var(--scalar-font-size-3);\n}\n\n.approveContainer {\n display: flex;\n gap: 5px;\n}\n\n.actionButton {\n display: flex;\n align-items: center;\n font-weight: var(--scalar-semibold);\n border-radius: var(--scalar-radius-full);\n padding: 6px 12px;\n font-size: var(--scalar-font-size-3);\n}\n\n.rejectButton {\n color: white;\n background: var(--scalar-color-red);\n}\n.rejectButton:hover,\n.rejectButton:active {\n background: color-mix(\n in srgb,\n var(--scalar-color-red),\n var(--scalar-background-1) 10%\n );\n color: white !important;\n}\n\n.approveButton {\n color: white;\n background: var(--scalar-color-blue);\n}\n.approveButton:hover,\n.approveButton:active {\n background: color-mix(\n in srgb,\n var(--scalar-color-blue),\n var(--scalar-background-1) 10%\n );\n color: white !important;\n}\n</style>\n"],"mappings":";;;;;;;;;;EAGA,MAAM,OAAO;;uBAOX,mBAqBM,OArBN,YAqBM,CApBJ,mBAKS,UALT,YAKS,CAJP,YAEkB,MAAA,cAAA,GAAA;IADhB,OAAM;IACN,QAAO;iDAAS,4CAEpB,EAAA,EAAA,CAAA,GACA,mBAaM,OAbN,YAaM,CAZJ,mBAKS,UAAA;IAJP,MAAK;IACL,OAAM;IACL,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,QAAA;MAAY,UAE1B,GACA,mBAKS,UAAA;IAJP,MAAK;IACL,OAAM;IACL,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,SAAA;MAAa,WAE3B,CAAA,CAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"ApprovalSection.vue.script.js","names":[],"sources":["../../src/components/ApprovalSection.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ScalarIconInfo } from '@scalar/icons'\n\nconst emit = defineEmits<{\n (e: 'approve'): void\n (e: 'reject'): void\n}>()\n</script>\n\n<template>\n <div class=\"approvalSection\">\n <strong class=\"approvalText flex items-center gap-1.5\">\n <ScalarIconInfo\n class=\"text-blue size-4\"\n weight=\"bold\" />\n One or more requests require approval.\n </strong>\n <div class=\"approveContainer\">\n <button\n class=\"actionButton rejectButton\"\n type=\"button\"\n @click=\"emit('reject')\">\n Reject\n </button>\n <button\n class=\"actionButton approveButton\"\n type=\"button\"\n @click=\"emit('approve')\">\n Approve\n </button>\n </div>\n </div>\n</template>\n\n<style scoped>\n.approvalSection {\n width: 100%;\n margin-bottom: -16px;\n padding: 8px 8px 24px 12px;\n\n background: color-mix(\n in srgb,\n var(--scalar-color-blue),\n var(--scalar-background-1) 95%\n );\n border: var(--scalar-border-width) solid var(--scalar-border-color);\n border-radius: var(--scalar-radius-3xl) var(--scalar-radius-3xl) 0 0;\n display: flex;\n align-items: center;\n justify-content: space-between;\n position: absolute;\n top: 0;\n transform: translate3d(0, calc(-100% + 16px), 0);\n}\n\n.approvalText {\n font-weight: var(--scalar-semibold);\n font-size: var(--scalar-font-size-3);\n}\n\n.approveContainer {\n display: flex;\n gap: 5px;\n}\n\n.actionButton {\n display: flex;\n align-items: center;\n font-weight: var(--scalar-semibold);\n border-radius: var(--scalar-radius-full);\n padding: 6px 12px;\n font-size: var(--scalar-font-size-3);\n}\n\n.rejectButton {\n color: white;\n background: var(--scalar-color-red);\n}\n.rejectButton:hover,\n.rejectButton:active {\n background: color-mix(\n in srgb,\n var(--scalar-color-red),\n var(--scalar-background-1) 10%\n );\n color: white !important;\n}\n\n.approveButton {\n color: white;\n background: var(--scalar-color-blue);\n}\n.approveButton:hover,\n.approveButton:active {\n background: color-mix(\n in srgb,\n var(--scalar-color-blue),\n var(--scalar-background-1) 10%\n );\n color: white !important;\n}\n</style>\n"],"mappings":";;;;;;;;;;EAGA,MAAM,OAAO;;uBAOX,mBAqBM,OArBN,YAqBM,CApBJ,mBAKS,UALT,YAKS,CAJP,YAEkB,MAAA,cAAA,GAAA;IADhB,OAAM;IACN,QAAO;iDAAS,4CAEpB,EAAA,EAAA,CAAA,GACA,mBAaM,OAbN,YAaM,CAZJ,mBAKS,UAAA;IAJP,OAAM;IACN,MAAK;IACJ,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,QAAA;MAAY,UAE1B,GACA,mBAKS,UAAA;IAJP,OAAM;IACN,MAAK;IACJ,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,SAAA;MAAa,WAE3B,CAAA,CAAA,CAAA,CAAA"}
package/dist/helpers.d.ts CHANGED
@@ -23,6 +23,7 @@ export declare const authStorage: () => {
23
23
  getAuth: (slug: string) => {
24
24
  secrets: {
25
25
  [x: string]: ({
26
+ name?: string | undefined;
26
27
  type: "apiKey";
27
28
  } & {
28
29
  'x-scalar-secret-token': string;
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AACA,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;AAC7E,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAA;AAWzF,OAAO,KAAK,EAAmB,eAAe,EAAE,MAAM,8DAA8D,CAAA;AAEpH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,GACwB,eAAe,EAAE,CACxG;AAwBD,mHAAmH;AACnH,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,cAAc;;;;;EAuBpE;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"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AACA,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;AAC7E,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAA;AAWzF,OAAO,KAAK,EAAmB,eAAe,EAAE,MAAM,8DAA8D,CAAA;AAEpH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,GACwB,eAAe,EAAE,CACxG;AAwBD,mHAAmH;AACnH,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,cAAc;;;;;EAuBpE;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"}
@@ -1,4 +1,5 @@
1
1
  import type { ToolUIPart, UIMessagePart } from 'ai';
2
+ import { type ComputedRef } from 'vue';
2
3
  import { type Tools } from '../state/state.js';
3
4
  type RequestToolPart = ToolUIPart & {
4
5
  type: 'tool-execute-request';
@@ -6,25 +7,9 @@ type RequestToolPart = ToolUIPart & {
6
7
  input: Tools['execute-request']['input'];
7
8
  };
8
9
  export declare function requestPartRequiresApproval(part: UIMessagePart<any, Tools>): part is RequestToolPart;
10
+ /** Exposes pending request approvals without leaking SDK implementation types. */
9
11
  export declare function useRequestApprovals(): {
10
- approvalRequiredParts: import("vue").ComputedRef<({
11
- type: `tool-${string}`;
12
- } & {
13
- toolCallId: string;
14
- title?: string;
15
- providerExecuted?: boolean;
16
- } & {
17
- state: "input-available";
18
- input: unknown;
19
- output?: never;
20
- errorText?: never;
21
- callProviderMetadata?: import("ai").ProviderMetadata;
22
- approval?: never;
23
- } & {
24
- type: "tool-execute-request";
25
- state: "input-available";
26
- input: Tools["execute-request"]["input"];
27
- })[]>;
12
+ approvalRequiredParts: ComputedRef<RequestToolPart[]>;
28
13
  respondToRequestApprovals: (approved: boolean) => Promise<void>;
29
14
  };
30
15
  export {};
@@ -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;EAwB3D"}
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;AACnD,OAAO,EAAE,KAAK,WAAW,EAAY,MAAM,KAAK,CAAA;AAKhD,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,kFAAkF;AAClF,wBAAgB,mBAAmB,IAAI;IACrC,qBAAqB,EAAE,WAAW,CAAC,eAAe,EAAE,CAAC,CAAA;IACrD,yBAAyB,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAChE,CAkCA"}
@@ -7,6 +7,7 @@ import { computed } from "vue";
7
7
  function requestPartRequiresApproval(part) {
8
8
  return part.type === `tool-execute-request` && part.state === "input-available" && part.input?.method?.toLowerCase() !== "get";
9
9
  }
10
+ /** Exposes pending request approvals without leaking SDK implementation types. */
10
11
  function useRequestApprovals() {
11
12
  const state = useState();
12
13
  const approvalRequiredParts = computed(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"use-chat-approvals.js","names":[],"sources":["../../src/hooks/use-chat-approvals.ts"],"sourcesContent":["import type { ToolUIPart, UIMessagePart } from 'ai'\nimport { computed } from 'vue'\n\nimport { executeRequestTool } from '@/client-tools/execute-request'\nimport { EXECUTE_CLIENT_SIDE_REQUEST_TOOL_NAME } from '@/entities'\nimport { createDocumentSettings } from '@/helpers'\nimport { type Tools, useState } from '@/state/state'\n\ntype RequestToolPart = ToolUIPart & {\n type: 'tool-execute-request'\n state: 'input-available'\n input: Tools['execute-request']['input']\n}\n\nexport function requestPartRequiresApproval(part: UIMessagePart<any, Tools>): part is RequestToolPart {\n return (\n part.type === (`tool-${EXECUTE_CLIENT_SIDE_REQUEST_TOOL_NAME}` as const) &&\n part.state === 'input-available' &&\n part.input?.method?.toLowerCase() !== 'get'\n )\n}\n\nexport function useRequestApprovals() {\n const state = useState()\n\n const approvalRequiredParts = computed(() => {\n return state.chat.messages\n .filter((message) => message.parts.some(requestPartRequiresApproval))\n .flatMap((message) => message.parts)\n .filter(requestPartRequiresApproval) as RequestToolPart[]\n })\n\n async function respondToRequestApprovals(approved: boolean) {\n const approvalPromises = approvalRequiredParts.value.map(async (toolPart) => {\n if (!approved) {\n return await state.chat.addToolOutput({\n tool: EXECUTE_CLIENT_SIDE_REQUEST_TOOL_NAME,\n toolCallId: toolPart.toolCallId,\n state: 'output-error',\n errorText: 'The user denied the request.',\n })\n }\n\n await executeRequestTool({\n documentSettings: createDocumentSettings(state.workspaceStore),\n proxyUrl: state.proxyUrl.value,\n input: toolPart.input,\n toolCallId: toolPart.toolCallId,\n chat: state.chat,\n })\n })\n\n await Promise.all(approvalPromises)\n }\n\n return { approvalRequiredParts, respondToRequestApprovals }\n}\n"],"mappings":";;;;;;AAcA,SAAgB,4BAA4B,MAA0D;CACpG,OACE,KAAK,SAAU,0BACf,KAAK,UAAU,qBACf,KAAK,OAAO,QAAQ,YAAY,MAAM;AAE1C;AAEA,SAAgB,sBAAsB;CACpC,MAAM,QAAQ,SAAS;CAEvB,MAAM,wBAAwB,eAAe;EAC3C,OAAO,MAAM,KAAK,SACf,QAAQ,YAAY,QAAQ,MAAM,KAAK,2BAA2B,CAAC,CAAC,CACpE,SAAS,YAAY,QAAQ,KAAK,CAAC,CACnC,OAAO,2BAA2B;CACvC,CAAC;CAED,eAAe,0BAA0B,UAAmB;EAC1D,MAAM,mBAAmB,sBAAsB,MAAM,IAAI,OAAO,aAAa;GAC3E,IAAI,CAAC,UACH,OAAO,MAAM,MAAM,KAAK,cAAc;IACpC,MAAM;IACN,YAAY,SAAS;IACrB,OAAO;IACP,WAAW;GACb,CAAC;GAGH,MAAM,mBAAmB;IACvB,kBAAkB,uBAAuB,MAAM,cAAc;IAC7D,UAAU,MAAM,SAAS;IACzB,OAAO,SAAS;IAChB,YAAY,SAAS;IACrB,MAAM,MAAM;GACd,CAAC;EACH,CAAC;EAED,MAAM,QAAQ,IAAI,gBAAgB;CACpC;CAEA,OAAO;EAAE;EAAuB;CAA0B;AAC5D"}
1
+ {"version":3,"file":"use-chat-approvals.js","names":[],"sources":["../../src/hooks/use-chat-approvals.ts"],"sourcesContent":["import type { ToolUIPart, UIMessagePart } from 'ai'\nimport { type ComputedRef, computed } from 'vue'\n\nimport { executeRequestTool } from '@/client-tools/execute-request'\nimport { EXECUTE_CLIENT_SIDE_REQUEST_TOOL_NAME } from '@/entities'\nimport { createDocumentSettings } from '@/helpers'\nimport { type Tools, useState } from '@/state/state'\n\ntype RequestToolPart = ToolUIPart & {\n type: 'tool-execute-request'\n state: 'input-available'\n input: Tools['execute-request']['input']\n}\n\nexport function requestPartRequiresApproval(part: UIMessagePart<any, Tools>): part is RequestToolPart {\n return (\n part.type === (`tool-${EXECUTE_CLIENT_SIDE_REQUEST_TOOL_NAME}` as const) &&\n part.state === 'input-available' &&\n part.input?.method?.toLowerCase() !== 'get'\n )\n}\n\n/** Exposes pending request approvals without leaking SDK implementation types. */\nexport function useRequestApprovals(): {\n approvalRequiredParts: ComputedRef<RequestToolPart[]>\n respondToRequestApprovals: (approved: boolean) => Promise<void>\n} {\n const state = useState()\n\n const approvalRequiredParts = computed(() => {\n return state.chat.messages\n .filter((message) => message.parts.some(requestPartRequiresApproval))\n .flatMap((message) => message.parts)\n .filter(requestPartRequiresApproval) as RequestToolPart[]\n })\n\n async function respondToRequestApprovals(approved: boolean) {\n const approvalPromises = approvalRequiredParts.value.map(async (toolPart) => {\n if (!approved) {\n return await state.chat.addToolOutput({\n tool: EXECUTE_CLIENT_SIDE_REQUEST_TOOL_NAME,\n toolCallId: toolPart.toolCallId,\n state: 'output-error',\n errorText: 'The user denied the request.',\n })\n }\n\n await executeRequestTool({\n documentSettings: createDocumentSettings(state.workspaceStore),\n proxyUrl: state.proxyUrl.value,\n input: toolPart.input,\n toolCallId: toolPart.toolCallId,\n chat: state.chat,\n })\n })\n\n await Promise.all(approvalPromises)\n }\n\n return { approvalRequiredParts, respondToRequestApprovals }\n}\n"],"mappings":";;;;;;AAcA,SAAgB,4BAA4B,MAA0D;CACpG,OACE,KAAK,SAAU,0BACf,KAAK,UAAU,qBACf,KAAK,OAAO,QAAQ,YAAY,MAAM;AAE1C;;AAGA,SAAgB,sBAGd;CACA,MAAM,QAAQ,SAAS;CAEvB,MAAM,wBAAwB,eAAe;EAC3C,OAAO,MAAM,KAAK,SACf,QAAQ,YAAY,QAAQ,MAAM,KAAK,2BAA2B,CAAC,CAAC,CACpE,SAAS,YAAY,QAAQ,KAAK,CAAC,CACnC,OAAO,2BAA2B;CACvC,CAAC;CAED,eAAe,0BAA0B,UAAmB;EAC1D,MAAM,mBAAmB,sBAAsB,MAAM,IAAI,OAAO,aAAa;GAC3E,IAAI,CAAC,UACH,OAAO,MAAM,MAAM,KAAK,cAAc;IACpC,MAAM;IACN,YAAY,SAAS;IACrB,OAAO;IACP,WAAW;GACb,CAAC;GAGH,MAAM,mBAAmB;IACvB,kBAAkB,uBAAuB,MAAM,cAAc;IAC7D,UAAU,MAAM,SAAS;IACzB,OAAO,SAAS;IAChB,YAAY,SAAS;IACrB,MAAM,MAAM;GACd,CAAC;EACH,CAAC;EAED,MAAM,QAAQ,IAAI,gBAAgB;CACpC;CAEA,OAAO;EAAE;EAAuB;CAA0B;AAC5D"}
@@ -1,19 +1,11 @@
1
+ import type { ToolUIPart } from 'ai';
2
+ import { type ComputedRef } from 'vue';
3
+ type PendingClientToolPart = ToolUIPart & {
4
+ state: 'input-available';
5
+ };
6
+ /** Exposes pending client tools without leaking SDK implementation types. */
1
7
  export declare function useChatPendingClientToolParts(): {
2
- pendingClientToolParts: import("vue").ComputedRef<({
3
- type: `tool-${string}`;
4
- } & {
5
- toolCallId: string;
6
- title?: string;
7
- providerExecuted?: boolean;
8
- } & {
9
- state: "input-available";
10
- input: unknown;
11
- output?: never;
12
- errorText?: never;
13
- callProviderMetadata?: import("ai").ProviderMetadata;
14
- approval?: never;
15
- } & {
16
- state: "input-available";
17
- })[]>;
8
+ pendingClientToolParts: ComputedRef<PendingClientToolPart[]>;
18
9
  };
10
+ export {};
19
11
  //# sourceMappingURL=use-chat-pending-client-tool-parts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-chat-pending-client-tool-parts.d.ts","sourceRoot":"","sources":["../../src/hooks/use-chat-pending-client-tool-parts.ts"],"names":[],"mappings":"AAWA,wBAAgB,6BAA6B;;;;;;;;;;;;;;;eANM,iBAAiB;;EAiBnE"}
1
+ {"version":3,"file":"use-chat-pending-client-tool-parts.d.ts","sourceRoot":"","sources":["../../src/hooks/use-chat-pending-client-tool-parts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAA0B,MAAM,IAAI,CAAA;AAC5D,OAAO,EAAE,KAAK,WAAW,EAAY,MAAM,KAAK,CAAA;AAIhD,KAAK,qBAAqB,GAAG,UAAU,GAAG;IAAE,KAAK,EAAE,iBAAiB,CAAA;CAAE,CAAA;AAMtE,6EAA6E;AAC7E,wBAAgB,6BAA6B,IAAI;IAC/C,sBAAsB,EAAE,WAAW,CAAC,qBAAqB,EAAE,CAAC,CAAA;CAC7D,CAWA"}
@@ -4,6 +4,7 @@ import { computed } from "vue";
4
4
  function isPendingClientToolPart(part) {
5
5
  return part.type.startsWith("tool") && part.state === "input-available";
6
6
  }
7
+ /** Exposes pending client tools without leaking SDK implementation types. */
7
8
  function useChatPendingClientToolParts() {
8
9
  const state = useState();
9
10
  return { pendingClientToolParts: computed(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"use-chat-pending-client-tool-parts.js","names":[],"sources":["../../src/hooks/use-chat-pending-client-tool-parts.ts"],"sourcesContent":["import type { ToolUIPart, UIMessagePart, UITools } from 'ai'\nimport { computed } from 'vue'\n\nimport { useState } from '@/state/state'\n\ntype PendingClientToolPart = ToolUIPart & { state: 'input-available' }\n\nfunction isPendingClientToolPart(part: UIMessagePart<any, UITools>): part is PendingClientToolPart {\n return part.type.startsWith('tool') && (part as ToolUIPart).state === 'input-available'\n}\n\nexport function useChatPendingClientToolParts() {\n const state = useState()\n\n const pendingClientToolParts = computed(() => {\n return state.chat.messages\n .filter((message) => message.parts.some(isPendingClientToolPart))\n .flatMap((message) => message.parts)\n .filter(isPendingClientToolPart) as PendingClientToolPart[]\n })\n\n return { pendingClientToolParts }\n}\n"],"mappings":";;;AAOA,SAAS,wBAAwB,MAAkE;CACjG,OAAO,KAAK,KAAK,WAAW,MAAM,KAAM,KAAoB,UAAU;AACxE;AAEA,SAAgB,gCAAgC;CAC9C,MAAM,QAAQ,SAAS;CASvB,OAAO,EAAE,wBAPsB,eAAe;EAC5C,OAAO,MAAM,KAAK,SACf,QAAQ,YAAY,QAAQ,MAAM,KAAK,uBAAuB,CAAC,CAAC,CAChE,SAAS,YAAY,QAAQ,KAAK,CAAC,CACnC,OAAO,uBAAuB;CACnC,CAES,EAAuB;AAClC"}
1
+ {"version":3,"file":"use-chat-pending-client-tool-parts.js","names":[],"sources":["../../src/hooks/use-chat-pending-client-tool-parts.ts"],"sourcesContent":["import type { ToolUIPart, UIMessagePart, UITools } from 'ai'\nimport { type ComputedRef, computed } from 'vue'\n\nimport { useState } from '@/state/state'\n\ntype PendingClientToolPart = ToolUIPart & { state: 'input-available' }\n\nfunction isPendingClientToolPart(part: UIMessagePart<any, UITools>): part is PendingClientToolPart {\n return part.type.startsWith('tool') && (part as ToolUIPart).state === 'input-available'\n}\n\n/** Exposes pending client tools without leaking SDK implementation types. */\nexport function useChatPendingClientToolParts(): {\n pendingClientToolParts: ComputedRef<PendingClientToolPart[]>\n} {\n const state = useState()\n\n const pendingClientToolParts = computed(() => {\n return state.chat.messages\n .filter((message) => message.parts.some(isPendingClientToolPart))\n .flatMap((message) => message.parts)\n .filter(isPendingClientToolPart) as PendingClientToolPart[]\n })\n\n return { pendingClientToolParts }\n}\n"],"mappings":";;;AAOA,SAAS,wBAAwB,MAAkE;CACjG,OAAO,KAAK,KAAK,WAAW,MAAM,KAAM,KAAoB,UAAU;AACxE;;AAGA,SAAgB,gCAEd;CACA,MAAM,QAAQ,SAAS;CASvB,OAAO,EAAE,wBAPsB,eAAe;EAC5C,OAAO,MAAM,KAAK,SACf,QAAQ,YAAY,QAAQ,MAAM,KAAK,uBAAuB,CAAC,CAAC,CAChE,SAAS,YAAY,QAAQ,KAAK,CAAC,CACnC,OAAO,uBAAuB;CACnC,CAES,EAAuB;AAClC"}
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.12.43",
13
+ "version": "0.12.44",
14
14
  "engines": {
15
15
  "node": ">=22"
16
16
  },
package/dist/style.css CHANGED
@@ -1024,7 +1024,7 @@
1024
1024
  display: contents;
1025
1025
  }
1026
1026
 
1027
- .scalar-app .markdown.markdown-summary.markdown-summary img, .scalar-app .markdown.markdown-summary.markdown-summary svg, .scalar-app .markdown.markdown-summary.markdown-summary hr, .scalar-app .markdown.markdown-summary.markdown-summary pre {
1027
+ .scalar-app .markdown.markdown-summary.markdown-summary [data-markdown-block], .scalar-app .markdown.markdown-summary.markdown-summary img, .scalar-app .markdown.markdown-summary.markdown-summary svg, .scalar-app .markdown.markdown-summary.markdown-summary hr, .scalar-app .markdown.markdown-summary.markdown-summary pre {
1028
1028
  display: none;
1029
1029
  }
1030
1030
 
@@ -1405,12 +1405,12 @@
1405
1405
  background: linear-gradient(#00000026, #ffffff09);
1406
1406
  }
1407
1407
 
1408
- .ascii-art-animate .ascii-art-line[data-v-9a695e58] {
1408
+ .ascii-art-animate .ascii-art-line[data-v-4f827089] {
1409
1409
  border-right: 1ch solid #0000;
1410
- animation: 4s step-end 1s both typewriter-9a695e58, .5s step-end infinite blinkTextCursor-9a695e58;
1410
+ animation: 4s step-end 1s both typewriter-4f827089, .5s step-end infinite blinkTextCursor-4f827089;
1411
1411
  }
1412
1412
 
1413
- @keyframes typewriter-9a695e58 {
1413
+ @keyframes typewriter-4f827089 {
1414
1414
  from {
1415
1415
  width: 0;
1416
1416
  }
@@ -1420,7 +1420,7 @@
1420
1420
  }
1421
1421
  }
1422
1422
 
1423
- @keyframes blinkTextCursor-9a695e58 {
1423
+ @keyframes blinkTextCursor-4f827089 {
1424
1424
  0% {
1425
1425
  border-right-color: currentColor;
1426
1426
  }
@@ -1553,24 +1553,24 @@
1553
1553
  display: none;
1554
1554
  }
1555
1555
 
1556
- [data-v-3e378c54] .cm-editor {
1556
+ [data-v-fce866d6] .cm-editor {
1557
1557
  background: none;
1558
1558
  outline: none;
1559
1559
  height: 100%;
1560
1560
  padding: 0;
1561
1561
  }
1562
1562
 
1563
- [data-v-3e378c54] .cm-placeholder {
1563
+ [data-v-fce866d6] .cm-placeholder {
1564
1564
  color: var(--scalar-color-3);
1565
1565
  }
1566
1566
 
1567
- [data-v-3e378c54] .cm-content {
1567
+ [data-v-fce866d6] .cm-content {
1568
1568
  font-family: var(--scalar-font-code);
1569
1569
  font-size: var(--scalar-small);
1570
1570
  padding: 8px 0;
1571
1571
  }
1572
1572
 
1573
- [data-v-3e378c54] .cm-tooltip {
1573
+ [data-v-fce866d6] .cm-tooltip {
1574
1574
  border-radius: var(--scalar-radius);
1575
1575
  box-shadow: var(--scalar-shadow-2);
1576
1576
  background: var(--scalar-background-1) !important;
@@ -1579,47 +1579,47 @@
1579
1579
  overflow: hidden !important;
1580
1580
  }
1581
1581
 
1582
- [data-v-3e378c54] .cm-tooltip-autocomplete ul li {
1582
+ [data-v-fce866d6] .cm-tooltip-autocomplete ul li {
1583
1583
  padding: 3px 6px !important;
1584
1584
  }
1585
1585
 
1586
- [data-v-3e378c54] .cm-completionIcon-type:after {
1586
+ [data-v-fce866d6] .cm-completionIcon-type:after {
1587
1587
  color: var(--scalar-color-3) !important;
1588
1588
  }
1589
1589
 
1590
- [data-v-3e378c54] .cm-tooltip-autocomplete ul li[aria-selected] {
1590
+ [data-v-fce866d6] .cm-tooltip-autocomplete ul li[aria-selected] {
1591
1591
  background: var(--scalar-background-2) !important;
1592
1592
  color: var(--scalar-color-1) !important;
1593
1593
  }
1594
1594
 
1595
- [data-v-3e378c54] .cm-tooltip-autocomplete ul {
1595
+ [data-v-fce866d6] .cm-tooltip-autocomplete ul {
1596
1596
  position: relative;
1597
1597
  padding: 6px !important;
1598
1598
  }
1599
1599
 
1600
- [data-v-3e378c54] .cm-tooltip-autocomplete ul li:hover {
1600
+ [data-v-fce866d6] .cm-tooltip-autocomplete ul li:hover {
1601
1601
  border-radius: 3px;
1602
1602
  color: var(--scalar-color-1) !important;
1603
1603
  background: var(--scalar-background-3) !important;
1604
1604
  }
1605
1605
 
1606
- [data-v-3e378c54] .cm-activeLine, [data-v-3e378c54] .cm-activeLineGutter {
1606
+ [data-v-fce866d6] .cm-activeLine, [data-v-fce866d6] .cm-activeLineGutter {
1607
1607
  background-color: #0000;
1608
1608
  }
1609
1609
 
1610
- [data-v-3e378c54] .cm-selectionMatch, [data-v-3e378c54] .cm-matchingBracket {
1610
+ [data-v-fce866d6] .cm-selectionMatch, [data-v-fce866d6] .cm-matchingBracket {
1611
1611
  border-radius: var(--scalar-radius);
1612
1612
  background: var(--scalar-background-4) !important;
1613
1613
  }
1614
1614
 
1615
- [data-v-3e378c54] .cm-css-color-picker-wrapper {
1615
+ [data-v-fce866d6] .cm-css-color-picker-wrapper {
1616
1616
  outline: 1px solid var(--scalar-background-3);
1617
1617
  border-radius: 3px;
1618
1618
  display: inline-flex;
1619
1619
  overflow: hidden;
1620
1620
  }
1621
1621
 
1622
- [data-v-3e378c54] .cm-gutters {
1622
+ [data-v-fce866d6] .cm-gutters {
1623
1623
  color: var(--scalar-color-3);
1624
1624
  font-size: var(--scalar-small);
1625
1625
  background-color: #0000;
@@ -1628,7 +1628,7 @@
1628
1628
  line-height: 22px;
1629
1629
  }
1630
1630
 
1631
- [data-v-3e378c54] .cm-gutters:before {
1631
+ [data-v-fce866d6] .cm-gutters:before {
1632
1632
  content: "";
1633
1633
  border-radius: var(--scalar-radius) 0 0 var(--scalar-radius);
1634
1634
  background-color: var(--scalar-background-1);
@@ -1639,7 +1639,7 @@
1639
1639
  left: 2px;
1640
1640
  }
1641
1641
 
1642
- [data-v-3e378c54] .cm-gutterElement {
1642
+ [data-v-fce866d6] .cm-gutterElement {
1643
1643
  justify-content: flex-end;
1644
1644
  align-items: center;
1645
1645
  display: flex;
@@ -1649,27 +1649,27 @@
1649
1649
  padding-right: 6px !important;
1650
1650
  }
1651
1651
 
1652
- [data-v-3e378c54] .cm-lineNumbers .cm-gutterElement {
1652
+ [data-v-fce866d6] .cm-lineNumbers .cm-gutterElement {
1653
1653
  min-width: fit-content;
1654
1654
  }
1655
1655
 
1656
- [data-v-3e378c54] .cm-gutter + .cm-gutter :not(.cm-foldGutter) .cm-gutterElement {
1656
+ [data-v-fce866d6] .cm-gutter + .cm-gutter :not(.cm-foldGutter) .cm-gutterElement {
1657
1657
  padding-left: 0 !important;
1658
1658
  }
1659
1659
 
1660
- [data-v-3e378c54] .cm-scroller {
1660
+ [data-v-fce866d6] .cm-scroller {
1661
1661
  overflow: auto;
1662
1662
  }
1663
1663
 
1664
- [data-v-3e378c54] .cm-lineWrapping .cm-line {
1664
+ [data-v-fce866d6] .cm-lineWrapping .cm-line {
1665
1665
  word-break: break-all;
1666
1666
  }
1667
1667
 
1668
- [data-v-3e378c54] .cm-content.cm-lineWrapping {
1668
+ [data-v-fce866d6] .cm-content.cm-lineWrapping {
1669
1669
  white-space: pre-wrap;
1670
1670
  }
1671
1671
 
1672
- .line-wrapping[data-v-3e378c54]:focus-within .cm-content {
1672
+ .line-wrapping[data-v-fce866d6]:focus-within .cm-content {
1673
1673
  white-space: break-spaces;
1674
1674
  word-break: break-all;
1675
1675
  min-height: fit-content;
@@ -1765,12 +1765,12 @@
1765
1765
  color: var(--scalar-color-1);
1766
1766
  }
1767
1767
 
1768
- .code-input-lite[data-v-f06520bd] {
1768
+ .code-input-lite[data-v-5e6007a2] {
1769
1769
  align-items: center;
1770
1770
  display: flex;
1771
1771
  }
1772
1772
 
1773
- .code-input-lite__editor[data-v-f06520bd] {
1773
+ .code-input-lite__editor[data-v-5e6007a2] {
1774
1774
  font: inherit;
1775
1775
  letter-spacing: inherit;
1776
1776
  min-width: 0;
@@ -1788,11 +1788,11 @@
1788
1788
  overflow: auto hidden;
1789
1789
  }
1790
1790
 
1791
- .code-input-lite__editor[data-v-f06520bd]::-webkit-scrollbar {
1791
+ .code-input-lite__editor[data-v-5e6007a2]::-webkit-scrollbar {
1792
1792
  display: none;
1793
1793
  }
1794
1794
 
1795
- .code-input-lite--empty .code-input-lite__editor[data-v-f06520bd]:not(:focus):before {
1795
+ .code-input-lite--empty .code-input-lite__editor[data-v-5e6007a2]:not(:focus):before {
1796
1796
  content: attr(data-placeholder);
1797
1797
  color: var(--scalar-color-3);
1798
1798
  pointer-events: none;
@@ -1804,7 +1804,7 @@
1804
1804
  left: .5em;
1805
1805
  }
1806
1806
 
1807
- .code-input-lite--error .code-input-lite__editor[data-v-f06520bd] {
1807
+ .code-input-lite--error .code-input-lite__editor[data-v-5e6007a2] {
1808
1808
  outline: 1px solid var(--scalar-color-red);
1809
1809
  }
1810
1810
 
@@ -1868,18 +1868,18 @@
1868
1868
  }
1869
1869
  }
1870
1870
 
1871
- [data-v-344240b0] .code-input-lite__editor {
1871
+ [data-v-09f26d90] .code-input-lite__editor {
1872
1872
  font-family: var(--scalar-font);
1873
1873
  font-size: var(--scalar-small);
1874
1874
  background-color: #0000;
1875
1875
  padding: 5px 8px;
1876
1876
  }
1877
1877
 
1878
- [data-v-344240b0] .scalar-pill:not(:last-of-type) {
1878
+ [data-v-09f26d90] .scalar-pill:not(:last-of-type) {
1879
1879
  margin-right: .15em;
1880
1880
  }
1881
1881
 
1882
- [data-v-344240b0] .scalar-pill:not(:first-of-type) {
1882
+ [data-v-09f26d90] .scalar-pill:not(:first-of-type) {
1883
1883
  margin-left: .5px;
1884
1884
  }
1885
1885
 
@@ -1943,59 +1943,59 @@ input[data-v-029a43f5]::placeholder {
1943
1943
  scrollbar-width: none;
1944
1944
  }
1945
1945
 
1946
- .request-section-content[data-v-a55ce987] {
1946
+ .request-section-content[data-v-f9196c85] {
1947
1947
  --scalar-border-width: .5px;
1948
1948
  }
1949
1949
 
1950
- .request-section-content-filter[data-v-a55ce987] {
1950
+ .request-section-content-filter[data-v-f9196c85] {
1951
1951
  box-shadow: 0 -10px 0 10px var(--scalar-background-1);
1952
1952
  }
1953
1953
 
1954
- .request-item:focus-within .request-meta-buttons[data-v-a55ce987] {
1954
+ .request-item:focus-within .request-meta-buttons[data-v-f9196c85] {
1955
1955
  opacity: 1;
1956
1956
  }
1957
1957
 
1958
- .group-hover-input[data-v-a55ce987] {
1958
+ .group-hover-input[data-v-f9196c85] {
1959
1959
  border-width: var(--scalar-border-width);
1960
1960
  border-color: #0000;
1961
1961
  }
1962
1962
 
1963
- .group:hover .group-hover-input[data-v-a55ce987] {
1963
+ .group:hover .group-hover-input[data-v-f9196c85] {
1964
1964
  background: var(--scalar-background-1);
1965
1965
  }
1966
1966
 
1967
1967
  @supports (color: color-mix(in lab, red, red)) {
1968
- .group:hover .group-hover-input[data-v-a55ce987] {
1968
+ .group:hover .group-hover-input[data-v-f9196c85] {
1969
1969
  background: color-mix(in srgb, var(--scalar-background-1), var(--scalar-background-2));
1970
1970
  }
1971
1971
  }
1972
1972
 
1973
- .group:hover .group-hover-input[data-v-a55ce987] {
1973
+ .group:hover .group-hover-input[data-v-f9196c85] {
1974
1974
  border-color: var(--scalar-border-color);
1975
1975
  }
1976
1976
 
1977
- .group-hover-input[data-v-a55ce987]:focus {
1977
+ .group-hover-input[data-v-f9196c85]:focus {
1978
1978
  border-color: var(--scalar-border-color) !important;
1979
1979
  background: none !important;
1980
1980
  }
1981
1981
 
1982
- [data-v-6e055eb2] .cm-editor {
1982
+ [data-v-973d48ca] .cm-editor {
1983
1983
  font-size: var(--scalar-small);
1984
1984
  background-color: #0000;
1985
1985
  outline: none;
1986
1986
  }
1987
1987
 
1988
- [data-v-6e055eb2] .cm-gutters {
1988
+ [data-v-973d48ca] .cm-gutters {
1989
1989
  background-color: var(--scalar-background-1);
1990
1990
  border-radius: var(--scalar-radius) 0 0 var(--scalar-radius);
1991
1991
  }
1992
1992
 
1993
- [data-v-6e055eb2] .cm-scroller {
1993
+ [data-v-973d48ca] .cm-scroller {
1994
1994
  min-width: 100%;
1995
1995
  overflow: auto;
1996
1996
  }
1997
1997
 
1998
- [data-v-6e055eb2] .cm-lineWrapping .cm-line {
1998
+ [data-v-973d48ca] .cm-lineWrapping .cm-line {
1999
1999
  word-break: break-all;
2000
2000
  }
2001
2001
 
@@ -2201,12 +2201,12 @@ input[data-v-029a43f5]::placeholder {
2201
2201
  --scalar-address-bar-bg: var(--scalar-background-1);
2202
2202
  }
2203
2203
 
2204
- .app-exit-button[data-v-6e1ebfa0] {
2204
+ .app-exit-button[data-v-3a29d7a0] {
2205
2205
  color: #fff;
2206
2206
  background: #0000001a;
2207
2207
  }
2208
2208
 
2209
- .app-exit-button[data-v-6e1ebfa0]:hover {
2209
+ .app-exit-button[data-v-3a29d7a0]:hover {
2210
2210
  background: #ffffff1a;
2211
2211
  }
2212
2212
 
@@ -2875,6 +2875,10 @@ input[data-v-029a43f5]::placeholder {
2875
2875
  width: fit-content !important;
2876
2876
  }
2877
2877
 
2878
+ .scalar-app .w-2\/3 {
2879
+ width: 66.6667%;
2880
+ }
2881
+
2878
2882
  .scalar-app .w-\[38px\] {
2879
2883
  width: 38px;
2880
2884
  }
@@ -3651,6 +3655,10 @@ input[data-v-029a43f5]::placeholder {
3651
3655
  color: var(--scalar-button-1-color);
3652
3656
  }
3653
3657
 
3658
+ .scalar-app .text-current {
3659
+ color: currentColor;
3660
+ }
3661
+
3654
3662
  .scalar-app .text-transparent {
3655
3663
  color: #0000;
3656
3664
  }
@@ -4092,6 +4100,10 @@ input[data-v-029a43f5]::placeholder {
4092
4100
  content: var(--tw-content);
4093
4101
  }
4094
4102
 
4103
+ .scalar-app .first\:ml-auto:first-child {
4104
+ margin-left: auto;
4105
+ }
4106
+
4095
4107
  .scalar-app .first\:rounded-t-\[inherit\]:first-child {
4096
4108
  border-top-left-radius: inherit;
4097
4109
  border-top-right-radius: inherit;
@@ -4117,6 +4129,10 @@ input[data-v-029a43f5]::placeholder {
4117
4129
  border-bottom-width: 0;
4118
4130
  }
4119
4131
 
4132
+ .scalar-app .empty\:hidden:empty {
4133
+ display: none;
4134
+ }
4135
+
4120
4136
  .scalar-app .focus-within\:opacity-100:focus-within {
4121
4137
  opacity: 1;
4122
4138
  }
@@ -5252,7 +5268,7 @@ input[data-v-029a43f5]::placeholder {
5252
5268
  gap: 10px;
5253
5269
  }
5254
5270
 
5255
- .approvalSection[data-v-fb5102df] {
5271
+ .approvalSection[data-v-f493d089] {
5256
5272
  width: 100%;
5257
5273
  margin-bottom: -16px;
5258
5274
  padding: 8px 8px 24px 12px;
@@ -5271,15 +5287,15 @@ input[data-v-029a43f5]::placeholder {
5271
5287
  top: 0;
5272
5288
  transform: translate3d(0, calc(-100% + 16px), 0);
5273
5289
  }
5274
- .approvalText[data-v-fb5102df] {
5290
+ .approvalText[data-v-f493d089] {
5275
5291
  font-weight: var(--scalar-semibold);
5276
5292
  font-size: var(--scalar-font-size-3);
5277
5293
  }
5278
- .approveContainer[data-v-fb5102df] {
5294
+ .approveContainer[data-v-f493d089] {
5279
5295
  display: flex;
5280
5296
  gap: 5px;
5281
5297
  }
5282
- .actionButton[data-v-fb5102df] {
5298
+ .actionButton[data-v-f493d089] {
5283
5299
  display: flex;
5284
5300
  align-items: center;
5285
5301
  font-weight: var(--scalar-semibold);
@@ -5287,12 +5303,12 @@ input[data-v-029a43f5]::placeholder {
5287
5303
  padding: 6px 12px;
5288
5304
  font-size: var(--scalar-font-size-3);
5289
5305
  }
5290
- .rejectButton[data-v-fb5102df] {
5306
+ .rejectButton[data-v-f493d089] {
5291
5307
  color: white;
5292
5308
  background: var(--scalar-color-red);
5293
5309
  }
5294
- .rejectButton[data-v-fb5102df]:hover,
5295
- .rejectButton[data-v-fb5102df]:active {
5310
+ .rejectButton[data-v-f493d089]:hover,
5311
+ .rejectButton[data-v-f493d089]:active {
5296
5312
  background: color-mix(
5297
5313
  in srgb,
5298
5314
  var(--scalar-color-red),
@@ -5300,12 +5316,12 @@ input[data-v-029a43f5]::placeholder {
5300
5316
  );
5301
5317
  color: white !important;
5302
5318
  }
5303
- .approveButton[data-v-fb5102df] {
5319
+ .approveButton[data-v-f493d089] {
5304
5320
  color: white;
5305
5321
  background: var(--scalar-color-blue);
5306
5322
  }
5307
- .approveButton[data-v-fb5102df]:hover,
5308
- .approveButton[data-v-fb5102df]:active {
5323
+ .approveButton[data-v-f493d089]:hover,
5324
+ .approveButton[data-v-f493d089]:active {
5309
5325
  background: color-mix(
5310
5326
  in srgb,
5311
5327
  var(--scalar-color-blue),
@@ -592,7 +592,7 @@
592
592
  gap: 10px;
593
593
  }
594
594
 
595
- .approvalSection[data-v-fb5102df] {
595
+ .approvalSection[data-v-f493d089] {
596
596
  width: 100%;
597
597
  margin-bottom: -16px;
598
598
  padding: 8px 8px 24px 12px;
@@ -611,15 +611,15 @@
611
611
  top: 0;
612
612
  transform: translate3d(0, calc(-100% + 16px), 0);
613
613
  }
614
- .approvalText[data-v-fb5102df] {
614
+ .approvalText[data-v-f493d089] {
615
615
  font-weight: var(--scalar-semibold);
616
616
  font-size: var(--scalar-font-size-3);
617
617
  }
618
- .approveContainer[data-v-fb5102df] {
618
+ .approveContainer[data-v-f493d089] {
619
619
  display: flex;
620
620
  gap: 5px;
621
621
  }
622
- .actionButton[data-v-fb5102df] {
622
+ .actionButton[data-v-f493d089] {
623
623
  display: flex;
624
624
  align-items: center;
625
625
  font-weight: var(--scalar-semibold);
@@ -627,12 +627,12 @@
627
627
  padding: 6px 12px;
628
628
  font-size: var(--scalar-font-size-3);
629
629
  }
630
- .rejectButton[data-v-fb5102df] {
630
+ .rejectButton[data-v-f493d089] {
631
631
  color: white;
632
632
  background: var(--scalar-color-red);
633
633
  }
634
- .rejectButton[data-v-fb5102df]:hover,
635
- .rejectButton[data-v-fb5102df]:active {
634
+ .rejectButton[data-v-f493d089]:hover,
635
+ .rejectButton[data-v-f493d089]:active {
636
636
  background: color-mix(
637
637
  in srgb,
638
638
  var(--scalar-color-red),
@@ -640,12 +640,12 @@
640
640
  );
641
641
  color: white !important;
642
642
  }
643
- .approveButton[data-v-fb5102df] {
643
+ .approveButton[data-v-f493d089] {
644
644
  color: white;
645
645
  background: var(--scalar-color-blue);
646
646
  }
647
- .approveButton[data-v-fb5102df]:hover,
648
- .approveButton[data-v-fb5102df]:active {
647
+ .approveButton[data-v-f493d089]:hover,
648
+ .approveButton[data-v-f493d089]:active {
649
649
  background: color-mix(
650
650
  in srgb,
651
651
  var(--scalar-color-blue),
package/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.12.43",
13
+ "version": "0.12.44",
14
14
  "engines": {
15
15
  "node": ">=22"
16
16
  },
@@ -45,28 +45,28 @@
45
45
  "dist"
46
46
  ],
47
47
  "dependencies": {
48
- "@ai-sdk/vue": "3.0.33",
49
- "@scalar/api-client": "3.23.0",
50
- "@scalar/components": "0.31.1",
51
- "@scalar/helpers": "0.16.3",
52
- "@scalar/icons": "0.7.6",
53
- "@scalar/json-magic": "0.15.7",
48
+ "@ai-sdk/vue": "3.0.214",
49
+ "@scalar/api-client": "3.23.1",
50
+ "@scalar/components": "0.32.0",
51
+ "@scalar/helpers": "0.16.4",
52
+ "@scalar/icons": "0.7.7",
53
+ "@scalar/json-magic": "0.16.0",
54
54
  "@scalar/openapi-types": "0.9.8",
55
- "@scalar/schemas": "0.13.2",
56
- "@scalar/themes": "0.19.1",
57
- "@scalar/types": "0.23.2",
55
+ "@scalar/schemas": "0.14.0",
56
+ "@scalar/themes": "0.19.2",
57
+ "@scalar/types": "0.24.0",
58
58
  "@scalar/use-toasts": "0.10.5",
59
59
  "@scalar/validation": "0.6.7",
60
- "@scalar/workspace-store": "0.68.3",
60
+ "@scalar/workspace-store": "0.68.4",
61
61
  "@vueuse/core": "13.9.0",
62
- "ai": "6.0.33",
62
+ "ai": "6.0.214",
63
63
  "js-base64": "^3.9.2",
64
64
  "neverpanic": "0.0.8",
65
65
  "truncate-json": "3.0.1",
66
66
  "vue": "^3.5.40"
67
67
  },
68
68
  "devDependencies": {
69
- "@scalar/sidebar": "0.12.0",
69
+ "@scalar/sidebar": "0.12.1",
70
70
  "@tailwindcss/cli": "^4.3.3",
71
71
  "@tailwindcss/vite": "^4.3.3",
72
72
  "@types/jsdom": "28.0.1",