@pagelines/sdk 1.0.447 → 1.0.449
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.
- package/dist/AgentProvider.vue_vue_type_script_setup_true_lang.js +8 -8
- package/dist/AgentProvider.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/AgentWrap.vue_vue_type_script_setup_true_lang.js +880 -825
- package/dist/AgentWrap.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/FModal.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/FModal.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/agent/AgentController.d.ts +16 -1
- package/dist/agent/schema.d.ts +16 -0
- package/dist/index.js +49 -49
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -65,7 +65,7 @@ const j = ["aria-label"], L = { class: "absolute top-1/2 left-1/2 -translate-x-1
|
|
|
65
65
|
}
|
|
66
66
|
b(u, "close");
|
|
67
67
|
const g = p(() => {
|
|
68
|
-
const t = e.modalClass ? [e.modalClass] : ["max-w-screen-md p-24"], a = e.styleClass ? [e.styleClass] : ["bg-theme-0
|
|
68
|
+
const t = e.modalClass ? [e.modalClass] : ["max-w-screen-md p-24"], a = e.styleClass ? [e.styleClass] : ["bg-theme-0", "shadow-xl"];
|
|
69
69
|
return e.fullScreen ? t.push("fixed inset-0") : t.push("rounded-2xl my-6 mx-3"), [
|
|
70
70
|
"relative",
|
|
71
71
|
"text-left",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FModal.vue_vue_type_script_setup_true_lang.js","sources":["../../../src/ui/common/FClose.vue","../../../src/ui/common/FModal.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { onMounted, ref } from 'vue'\n\ndefineOptions({ name: 'FClose' })\n\ndefineProps<{\n ariaLabel?: string\n}>()\n\ndefineEmits<{\n click: [event: MouseEvent]\n}>()\n\nconst inView = ref(false)\n\nonMounted(() => {\n setTimeout(() => {\n inView.value = true\n }, 100)\n})\n</script>\n\n<template>\n <button\n type=\"button\"\n :aria-label=\"ariaLabel || 'Close'\"\n class=\"close block cursor-pointer w-[60px] h-[60px] rounded-full transition-all duration-1000 ease-[cubic-bezier(0.25,1,0.33,1)] hover:scale-110 active:scale-90 hover:rotate-90\"\n @click=\"$emit('click', $event)\"\n >\n <!-- Background circle (invisible, for hover area) -->\n <span class=\"absolute inset-0 rounded-full transition-all\" />\n\n <!-- Close lines container -->\n <span class=\"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[28px] h-[28px] overflow-hidden\">\n <!-- Line 1 - animates from bottom-left to center, rotates 45deg -->\n <span\n class=\"absolute h-full w-[3px] rounded-[5px] left-[13px] transition-all duration-[400ms] ease-[cubic-bezier(0.52,0.01,0.16,1)]\"\n :class=\"inView ? 'translate-y-0 translate-x-0 rotate-45' : 'translate-y-[30px] -translate-x-[30px] rotate-0'\"\n style=\"background-color: currentColor; transition-delay: 0.15s\"\n />\n\n <!-- Line 2 - animates from top-left to center, rotates -45deg -->\n <span\n class=\"absolute h-full w-[3px] rounded-[5px] left-[13px] transition-all duration-[400ms] ease-[cubic-bezier(0.52,0.01,0.16,1)]\"\n :class=\"inView ? 'translate-y-0 translate-x-0 -rotate-45' : '-translate-y-[30px] -translate-x-[30px] rotate-0'\"\n style=\"background-color: currentColor; transition-delay: 0.45s\"\n />\n </span>\n </button>\n</template>\n","<script lang=\"ts\" setup>\nimport { computed, onMounted, onUnmounted, ref, watch } from 'vue'\nimport FClose from './FClose.vue'\n\ndefineOptions({ name: 'FModal' })\n\nconst {\n vis = false,\n modalClass,\n styleClass,\n fullScreen = false,\n hasClose = false,\n title = '',\n transitionMode = 'modal',\n teleportTo = 'body',\n disableTeleport = false,\n} = defineProps<{\n vis?: boolean\n modalClass?: string\n styleClass?: string\n fullScreen?: boolean\n hasClose?: boolean\n title?: string\n transitionMode?: 'modal' | 'slideUp'\n teleportTo?: string | Element\n disableTeleport?: boolean\n}>()\n\nconst emit = defineEmits<{\n 'update:vis': [value: boolean]\n 'close': [value: boolean]\n 'escape': [value: boolean]\n}>()\n\nconst isMounted = ref(false)\n\nfunction close(args: { reason: 'escape' | 'reset' }): void {\n const { reason } = args\n emit('update:vis', false)\n emit('close', true)\n if (reason === 'escape')\n emit('escape', true)\n}\n\nconst classes = computed(() => {\n const cls = modalClass ? [modalClass] : ['max-w-screen-md p-24']\n const style = styleClass ? [styleClass] : ['bg-theme-0 text-theme-900', 'shadow-xl']\n\n if (fullScreen)\n cls.push('fixed inset-0')\n else\n cls.push('rounded-2xl my-6 mx-3')\n\n return [\n 'relative',\n 'text-left',\n 'transform',\n 'transition-all',\n 'w-full',\n 'overflow-hidden',\n ...cls,\n ...style,\n ]\n})\n\nconst afterVisible = ref(false)\nconst cleanups: (() => void)[] = []\n\nonMounted(async () => {\n isMounted.value = true\n\n const unwatch = watch(\n () => vis,\n (vis) => {\n if (vis) {\n setTimeout(() => (afterVisible.value = true), 300)\n } else {\n afterVisible.value = false\n }\n },\n { immediate: true },\n )\n\n cleanups.push(unwatch)\n})\n\nonUnmounted(() => {\n cleanups.forEach((c) => c())\n})\n\nconst modalTransition = computed(() => {\n if (transitionMode === 'slideUp') {\n return {\n enterActiveClass: 'ease-[cubic-bezier(0.25,1,0.33,1)] duration-500',\n enterFromClass: 'opacity-0 translate-y-full scale-95',\n enterToClass: 'opacity-100 translate-y-0 scale-100',\n leaveActiveClass: 'ease-[cubic-bezier(0.25,1,0.33,1)] duration-500',\n leaveFromClass: 'opacity-100 translate-y-0 scale-100',\n leaveToClass: 'opacity-0 translate-y-full scale-95',\n }\n }\n return {\n enterActiveClass: 'ease-[cubic-bezier(0.25,1,0.33,1)] duration-500',\n enterFromClass: 'opacity-0 scale-75',\n enterToClass: 'opacity-100 translate-y-0 scale-100',\n leaveActiveClass: 'ease-[cubic-bezier(0.25,1,0.33,1)] duration-500',\n leaveFromClass: 'opacity-100 translate-y-0 scale-100',\n leaveToClass: 'opacity-0 scale-75',\n }\n})\n</script>\n\n<script lang=\"ts\">\nexport default {\n inheritAttrs: false,\n}\n</script>\n\n<template>\n <Teleport v-if=\"isMounted\" :to=\"teleportTo\" :disabled=\"disableTeleport\">\n <div\n class=\"fixed inset-0 z-50\"\n aria-labelledby=\"modal-title\"\n role=\"dialog\"\n aria-modal=\"true\"\n :class=\"!vis ? 'pointer-events-none' : ''\"\n >\n <Transition\n enter-active-class=\"ease-out duration-300\"\n enter-from-class=\"opacity-0\"\n enter-to-class=\"opacity-100\"\n leave-active-class=\"ease-in duration-200\"\n leave-from-class=\"opacity-100\"\n leave-to-class=\"opacity-0\"\n >\n <div\n v-if=\"vis\"\n class=\"fixed inset-0 bg-theme-800/60 active:bg-theme-800/80 cursor-pointer dark:bg-theme-600/90 backdrop-blur-sm transition-opacity\"\n @click=\"close({ reason: 'escape' })\"\n />\n </Transition>\n <div\n class=\"fixed inset-0 z-40 overflow-y-auto\"\n @click=\"close({ reason: 'escape' })\"\n >\n <div class=\"flex h-full overflow-scroll no-scrollbar items-center justify-center text-center p-4 py-8\">\n <Transition v-bind=\"modalTransition\">\n <div\n v-if=\"vis\"\n :class=\"classes\"\n class=\"w-full\"\n @click.stop\n >\n <div\n v-if=\"hasClose || title || $slots.actions\"\n :class=\"!title && (hasClose || $slots.actions) ? 'absolute top-0 right-0 z-10' : 'flex justify-between items-center'\"\n >\n <h2 v-if=\"title\" class=\"text-base p-4 font-semibold\">\n {{ title }}\n </h2>\n <div v-if=\"hasClose || $slots.actions\" class=\"flex items-center gap-2 px-2\">\n <slot name=\"actions\" />\n <FClose\n v-if=\"hasClose\"\n class=\"relative\"\n data-test-id=\"close-modal\"\n @click.stop=\"close({ reason: 'escape' })\"\n />\n </div>\n </div>\n <slot />\n </div>\n </Transition>\n </div>\n </div>\n </div>\n </Teleport>\n</template>\n"],"names":["inView","ref","onMounted","_createElementBlock","__props","_cache","$event","$emit","_createElementVNode","_hoisted_2","_normalizeClass","__default__","emit","__emit","isMounted","close","args","reason","__name","classes","computed","cls","style","afterVisible","cleanups","unwatch","watch","vis","onUnmounted","c","modalTransition","_createBlock","_Teleport","_createVNode","_Transition","_hoisted_1","$slots","_toDisplayString","_openBlock","_hoisted_3","_renderSlot","_ctx","FClose"],"mappings":";;;;;;;;;;;AAaA,UAAMA,IAASC,EAAI,EAAK;AAExB,WAAAC,EAAU,MAAM;AACd,iBAAW,MAAM;AACf,QAAAF,EAAO,QAAQ;AAAA,MACjB,GAAG,GAAG;AAAA,IACR,CAAC,mBAICG,EAyBS,UAAA;AAAA,MAxBP,MAAK;AAAA,MACJ,cAAYC,EAAA,aAAS;AAAA,MACtB,OAAM;AAAA,MACL,SAAKC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAAEC,EAAAA,MAAK,SAAUD,CAAM;AAAA,IAAA;sBAG7BE,EAA6D,QAAA,EAAvD,OAAM,+CAAA,GAA8C,MAAA,EAAA;AAAA,MAG1DA,EAcO,QAdPC,GAcO;AAAA,QAZLD,EAIE,QAAA;AAAA,UAHA,OAAKE,EAAA,CAAC,2HACEV,EAAA,QAAM,0CAAA,iDAAA,CAAA;AAAA,UACd,OAAA,EAAA,oBAAA,gBAAA,oBAAA,QAAA;AAAA,QAAA;QAIFQ,EAIE,QAAA;AAAA,UAHA,OAAKE,EAAA,CAAC,2HACEV,EAAA,QAAM,2CAAA,kDAAA,CAAA;AAAA,UACd,OAAA,EAAA,oBAAA,gBAAA,oBAAA,QAAA;AAAA,QAAA;;;;;;;;;;GCoERW,IAAe;AAAA,EACb,cAAc;AAChB;;;;;;;;;;;;;;;;;AAvFA,UAAMC,IAAOC,GAMPC,IAAYb,EAAI,EAAK;AAE3B,aAASc,EAAMC,GAA4C;AACzD,YAAM,EAAE,QAAAC,MAAWD;AACnB,MAAAJ,EAAK,cAAc,EAAK,GACxBA,EAAK,SAAS,EAAI,GACdK,MAAW,YACbL,EAAK,UAAU,EAAI;AAAA,IACvB;AANS,IAAAM,EAAAH,GAAA;AAQT,UAAMI,IAAUC,EAAS,MAAM;AAC7B,YAAMC,IAAMjB,eAAa,CAACA,EAAA,UAAU,IAAI,CAAC,sBAAsB,GACzDkB,IAAQlB,EAAA,aAAa,CAACA,EAAA,UAAU,IAAI,CAAC,6BAA6B,WAAW;AAEnF,aAAIA,EAAA,aACFiB,EAAI,KAAK,eAAe,IAExBA,EAAI,KAAK,uBAAuB,GAE3B;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,GAAGA;AAAA,QACH,GAAGC;AAAA,MAAA;AAAA,IAEP,CAAC,GAEKC,IAAetB,EAAI,EAAK,GACxBuB,IAA2B,CAAA;AAEjC,IAAAtB,EAAU,YAAY;AACpB,MAAAY,EAAU,QAAQ;AAElB,YAAMW,IAAUC;AAAA,QACd,MAAMtB,EAAA;AAAA,QACN,CAACuB,MAAQ;AACP,UAAIA,IACF,WAAW,MAAOJ,EAAa,QAAQ,IAAO,GAAG,IAEjDA,EAAa,QAAQ;AAAA,QAEzB;AAAA,QACA,EAAE,WAAW,GAAA;AAAA,MAAK;AAGpB,MAAAC,EAAS,KAAKC,CAAO;AAAA,IACvB,CAAC,GAEDG,EAAY,MAAM;AAChB,MAAAJ,EAAS,QAAQ,CAACK,MAAMA,EAAA,CAAG;AAAA,IAC7B,CAAC;AAED,UAAMC,IAAkBV,EAAS,MAC3BhB,EAAA,mBAAmB,YACd;AAAA,MACL,kBAAkB;AAAA,MAClB,gBAAgB;AAAA,MAChB,cAAc;AAAA,MACd,kBAAkB;AAAA,MAClB,gBAAgB;AAAA,MAChB,cAAc;AAAA,IAAA,IAGX;AAAA,MACL,kBAAkB;AAAA,MAClB,gBAAgB;AAAA,MAChB,cAAc;AAAA,MACd,kBAAkB;AAAA,MAClB,gBAAgB;AAAA,MAChB,cAAc;AAAA,IAAA,CAEjB;qBAUiBU,EAAA,cAAhBiB,EAyDWC,GAAA;AAAA;MAzDiB,IAAI5B,EAAA;AAAA,MAAa,UAAUA,EAAA;AAAA,IAAA;MACrDI,EAuDM,OAAA;AAAA,QAtDJ,OAAKE,EAAA,CAAC,sBAIGN,EAAA,MAAG,KAAA,qBAAA,CAAA;AAAA,QAHZ,mBAAgB;AAAA,QAChB,MAAK;AAAA,QACL,cAAW;AAAA,MAAA;QAGX6B,EAaaC,GAAA;AAAA,UAZX,sBAAmB;AAAA,UACnB,oBAAiB;AAAA,UACjB,kBAAe;AAAA,UACf,sBAAmB;AAAA,UACnB,oBAAiB;AAAA,UACjB,kBAAe;AAAA,QAAA;qBAEf,MAIE;AAAA,YAHM9B,EAAA,YADRD,EAIE,OAAA;AAAA;cAFA,OAAM;AAAA,cACL,gCAAOY,EAAK,EAAA,QAAA,UAAA;AAAA,YAAA;;;;QAGjBP,EAiCM,OAAA;AAAA,UAhCJ,OAAM;AAAA,UACL,gCAAOO,EAAK,EAAA,QAAA,UAAA;AAAA,QAAA;UAEbP,EA4BM,OA5BN2B,GA4BM;AAAA,YA3BJF,EA0BaC,OA1BOJ,EAAA,KAAe,CAAA,GAAA;AAAA,yBACjC,MAwBM;AAAA,gBAvBE1B,EAAA,YADRD,EAwBM,OAAA;AAAA;kBAtBH,OAAKO,EAAA,CAAES,EAAA,OACF,QAAQ,CAAA;AAAA,kBACb,2BAAD,MAAA;AAAA,kBAAA,GAAW,CAAA,MAAA,CAAA;AAAA,gBAAA;kBAGHf,EAAA,YAAYA,EAAA,SAASgC,EAAAA,OAAO,gBADpCjC,EAgBM,OAAA;AAAA;oBAdH,UAAQC,EAAA,UAAUA,cAAYgC,EAAAA,OAAO,WAAO,gCAAA,mCAAA;AAAA,kBAAA;oBAEnChC,EAAA,cAAVD,EAEK,MAFLM,GAEK4B,EADAjC,EAAA,KAAK,GAAA,CAAA;oBAECA,EAAA,YAAYgC,EAAAA,OAAO,WAA9BE,KAAAnC,EAQM,OARNoC,GAQM;AAAA,sBAPJC,EAAuBC,EAAA,QAAA,SAAA;AAAA,sBAEfrC,EAAA,iBADR2B,EAKEW,GAAA;AAAA;wBAHA,OAAM;AAAA,wBACN,gBAAa;AAAA,wBACZ,kCAAY3B,EAAK,EAAA,QAAA,SAAA,CAAA,GAAA,CAAA,MAAA,CAAA;AAAA,sBAAA;;;kBAIxByB,EAAQC,EAAA,QAAA,SAAA;AAAA,gBAAA;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"FModal.vue_vue_type_script_setup_true_lang.js","sources":["../../../src/ui/common/FClose.vue","../../../src/ui/common/FModal.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { onMounted, ref } from 'vue'\n\ndefineOptions({ name: 'FClose' })\n\ndefineProps<{\n ariaLabel?: string\n}>()\n\ndefineEmits<{\n click: [event: MouseEvent]\n}>()\n\nconst inView = ref(false)\n\nonMounted(() => {\n setTimeout(() => {\n inView.value = true\n }, 100)\n})\n</script>\n\n<template>\n <button\n type=\"button\"\n :aria-label=\"ariaLabel || 'Close'\"\n class=\"close block cursor-pointer w-[60px] h-[60px] rounded-full transition-all duration-1000 ease-[cubic-bezier(0.25,1,0.33,1)] hover:scale-110 active:scale-90 hover:rotate-90\"\n @click=\"$emit('click', $event)\"\n >\n <!-- Background circle (invisible, for hover area) -->\n <span class=\"absolute inset-0 rounded-full transition-all\" />\n\n <!-- Close lines container -->\n <span class=\"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[28px] h-[28px] overflow-hidden\">\n <!-- Line 1 - animates from bottom-left to center, rotates 45deg -->\n <span\n class=\"absolute h-full w-[3px] rounded-[5px] left-[13px] transition-all duration-[400ms] ease-[cubic-bezier(0.52,0.01,0.16,1)]\"\n :class=\"inView ? 'translate-y-0 translate-x-0 rotate-45' : 'translate-y-[30px] -translate-x-[30px] rotate-0'\"\n style=\"background-color: currentColor; transition-delay: 0.15s\"\n />\n\n <!-- Line 2 - animates from top-left to center, rotates -45deg -->\n <span\n class=\"absolute h-full w-[3px] rounded-[5px] left-[13px] transition-all duration-[400ms] ease-[cubic-bezier(0.52,0.01,0.16,1)]\"\n :class=\"inView ? 'translate-y-0 translate-x-0 -rotate-45' : '-translate-y-[30px] -translate-x-[30px] rotate-0'\"\n style=\"background-color: currentColor; transition-delay: 0.45s\"\n />\n </span>\n </button>\n</template>\n","<script lang=\"ts\" setup>\nimport { computed, onMounted, onUnmounted, ref, watch } from 'vue'\nimport FClose from './FClose.vue'\n\ndefineOptions({ name: 'FModal' })\n\nconst {\n vis = false,\n modalClass,\n styleClass,\n fullScreen = false,\n hasClose = false,\n title = '',\n transitionMode = 'modal',\n teleportTo = 'body',\n disableTeleport = false,\n} = defineProps<{\n vis?: boolean\n modalClass?: string\n styleClass?: string\n fullScreen?: boolean\n hasClose?: boolean\n title?: string\n transitionMode?: 'modal' | 'slideUp'\n teleportTo?: string | Element\n disableTeleport?: boolean\n}>()\n\nconst emit = defineEmits<{\n 'update:vis': [value: boolean]\n 'close': [value: boolean]\n 'escape': [value: boolean]\n}>()\n\nconst isMounted = ref(false)\n\nfunction close(args: { reason: 'escape' | 'reset' }): void {\n const { reason } = args\n emit('update:vis', false)\n emit('close', true)\n if (reason === 'escape')\n emit('escape', true)\n}\n\nconst classes = computed(() => {\n const cls = modalClass ? [modalClass] : ['max-w-screen-md p-24']\n const style = styleClass ? [styleClass] : ['bg-theme-0', 'shadow-xl']\n\n if (fullScreen)\n cls.push('fixed inset-0')\n else\n cls.push('rounded-2xl my-6 mx-3')\n\n return [\n 'relative',\n 'text-left',\n 'transform',\n 'transition-all',\n 'w-full',\n 'overflow-hidden',\n ...cls,\n ...style,\n ]\n})\n\nconst afterVisible = ref(false)\nconst cleanups: (() => void)[] = []\n\nonMounted(async () => {\n isMounted.value = true\n\n const unwatch = watch(\n () => vis,\n (vis) => {\n if (vis) {\n setTimeout(() => (afterVisible.value = true), 300)\n } else {\n afterVisible.value = false\n }\n },\n { immediate: true },\n )\n\n cleanups.push(unwatch)\n})\n\nonUnmounted(() => {\n cleanups.forEach((c) => c())\n})\n\nconst modalTransition = computed(() => {\n if (transitionMode === 'slideUp') {\n return {\n enterActiveClass: 'ease-[cubic-bezier(0.25,1,0.33,1)] duration-500',\n enterFromClass: 'opacity-0 translate-y-full scale-95',\n enterToClass: 'opacity-100 translate-y-0 scale-100',\n leaveActiveClass: 'ease-[cubic-bezier(0.25,1,0.33,1)] duration-500',\n leaveFromClass: 'opacity-100 translate-y-0 scale-100',\n leaveToClass: 'opacity-0 translate-y-full scale-95',\n }\n }\n return {\n enterActiveClass: 'ease-[cubic-bezier(0.25,1,0.33,1)] duration-500',\n enterFromClass: 'opacity-0 scale-75',\n enterToClass: 'opacity-100 translate-y-0 scale-100',\n leaveActiveClass: 'ease-[cubic-bezier(0.25,1,0.33,1)] duration-500',\n leaveFromClass: 'opacity-100 translate-y-0 scale-100',\n leaveToClass: 'opacity-0 scale-75',\n }\n})\n</script>\n\n<script lang=\"ts\">\nexport default {\n inheritAttrs: false,\n}\n</script>\n\n<template>\n <Teleport v-if=\"isMounted\" :to=\"teleportTo\" :disabled=\"disableTeleport\">\n <div\n class=\"fixed inset-0 z-50\"\n aria-labelledby=\"modal-title\"\n role=\"dialog\"\n aria-modal=\"true\"\n :class=\"!vis ? 'pointer-events-none' : ''\"\n >\n <Transition\n enter-active-class=\"ease-out duration-300\"\n enter-from-class=\"opacity-0\"\n enter-to-class=\"opacity-100\"\n leave-active-class=\"ease-in duration-200\"\n leave-from-class=\"opacity-100\"\n leave-to-class=\"opacity-0\"\n >\n <div\n v-if=\"vis\"\n class=\"fixed inset-0 bg-theme-800/60 active:bg-theme-800/80 cursor-pointer dark:bg-theme-600/90 backdrop-blur-sm transition-opacity\"\n @click=\"close({ reason: 'escape' })\"\n />\n </Transition>\n <div\n class=\"fixed inset-0 z-40 overflow-y-auto\"\n @click=\"close({ reason: 'escape' })\"\n >\n <div class=\"flex h-full overflow-scroll no-scrollbar items-center justify-center text-center p-4 py-8\">\n <Transition v-bind=\"modalTransition\">\n <div\n v-if=\"vis\"\n :class=\"classes\"\n class=\"w-full\"\n @click.stop\n >\n <div\n v-if=\"hasClose || title || $slots.actions\"\n :class=\"!title && (hasClose || $slots.actions) ? 'absolute top-0 right-0 z-10' : 'flex justify-between items-center'\"\n >\n <h2 v-if=\"title\" class=\"text-base p-4 font-semibold\">\n {{ title }}\n </h2>\n <div v-if=\"hasClose || $slots.actions\" class=\"flex items-center gap-2 px-2\">\n <slot name=\"actions\" />\n <FClose\n v-if=\"hasClose\"\n class=\"relative\"\n data-test-id=\"close-modal\"\n @click.stop=\"close({ reason: 'escape' })\"\n />\n </div>\n </div>\n <slot />\n </div>\n </Transition>\n </div>\n </div>\n </div>\n </Teleport>\n</template>\n"],"names":["inView","ref","onMounted","_createElementBlock","__props","_cache","$event","$emit","_createElementVNode","_hoisted_2","_normalizeClass","__default__","emit","__emit","isMounted","close","args","reason","__name","classes","computed","cls","style","afterVisible","cleanups","unwatch","watch","vis","onUnmounted","c","modalTransition","_createBlock","_Teleport","_createVNode","_Transition","_hoisted_1","$slots","_toDisplayString","_openBlock","_hoisted_3","_renderSlot","_ctx","FClose"],"mappings":";;;;;;;;;;;AAaA,UAAMA,IAASC,EAAI,EAAK;AAExB,WAAAC,EAAU,MAAM;AACd,iBAAW,MAAM;AACf,QAAAF,EAAO,QAAQ;AAAA,MACjB,GAAG,GAAG;AAAA,IACR,CAAC,mBAICG,EAyBS,UAAA;AAAA,MAxBP,MAAK;AAAA,MACJ,cAAYC,EAAA,aAAS;AAAA,MACtB,OAAM;AAAA,MACL,SAAKC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAAEC,EAAAA,MAAK,SAAUD,CAAM;AAAA,IAAA;sBAG7BE,EAA6D,QAAA,EAAvD,OAAM,+CAAA,GAA8C,MAAA,EAAA;AAAA,MAG1DA,EAcO,QAdPC,GAcO;AAAA,QAZLD,EAIE,QAAA;AAAA,UAHA,OAAKE,EAAA,CAAC,2HACEV,EAAA,QAAM,0CAAA,iDAAA,CAAA;AAAA,UACd,OAAA,EAAA,oBAAA,gBAAA,oBAAA,QAAA;AAAA,QAAA;QAIFQ,EAIE,QAAA;AAAA,UAHA,OAAKE,EAAA,CAAC,2HACEV,EAAA,QAAM,2CAAA,kDAAA,CAAA;AAAA,UACd,OAAA,EAAA,oBAAA,gBAAA,oBAAA,QAAA;AAAA,QAAA;;;;;;;;;;GCoERW,IAAe;AAAA,EACb,cAAc;AAChB;;;;;;;;;;;;;;;;;AAvFA,UAAMC,IAAOC,GAMPC,IAAYb,EAAI,EAAK;AAE3B,aAASc,EAAMC,GAA4C;AACzD,YAAM,EAAE,QAAAC,MAAWD;AACnB,MAAAJ,EAAK,cAAc,EAAK,GACxBA,EAAK,SAAS,EAAI,GACdK,MAAW,YACbL,EAAK,UAAU,EAAI;AAAA,IACvB;AANS,IAAAM,EAAAH,GAAA;AAQT,UAAMI,IAAUC,EAAS,MAAM;AAC7B,YAAMC,IAAMjB,eAAa,CAACA,EAAA,UAAU,IAAI,CAAC,sBAAsB,GACzDkB,IAAQlB,EAAA,aAAa,CAACA,EAAA,UAAU,IAAI,CAAC,cAAc,WAAW;AAEpE,aAAIA,EAAA,aACFiB,EAAI,KAAK,eAAe,IAExBA,EAAI,KAAK,uBAAuB,GAE3B;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,GAAGA;AAAA,QACH,GAAGC;AAAA,MAAA;AAAA,IAEP,CAAC,GAEKC,IAAetB,EAAI,EAAK,GACxBuB,IAA2B,CAAA;AAEjC,IAAAtB,EAAU,YAAY;AACpB,MAAAY,EAAU,QAAQ;AAElB,YAAMW,IAAUC;AAAA,QACd,MAAMtB,EAAA;AAAA,QACN,CAACuB,MAAQ;AACP,UAAIA,IACF,WAAW,MAAOJ,EAAa,QAAQ,IAAO,GAAG,IAEjDA,EAAa,QAAQ;AAAA,QAEzB;AAAA,QACA,EAAE,WAAW,GAAA;AAAA,MAAK;AAGpB,MAAAC,EAAS,KAAKC,CAAO;AAAA,IACvB,CAAC,GAEDG,EAAY,MAAM;AAChB,MAAAJ,EAAS,QAAQ,CAACK,MAAMA,EAAA,CAAG;AAAA,IAC7B,CAAC;AAED,UAAMC,IAAkBV,EAAS,MAC3BhB,EAAA,mBAAmB,YACd;AAAA,MACL,kBAAkB;AAAA,MAClB,gBAAgB;AAAA,MAChB,cAAc;AAAA,MACd,kBAAkB;AAAA,MAClB,gBAAgB;AAAA,MAChB,cAAc;AAAA,IAAA,IAGX;AAAA,MACL,kBAAkB;AAAA,MAClB,gBAAgB;AAAA,MAChB,cAAc;AAAA,MACd,kBAAkB;AAAA,MAClB,gBAAgB;AAAA,MAChB,cAAc;AAAA,IAAA,CAEjB;qBAUiBU,EAAA,cAAhBiB,EAyDWC,GAAA;AAAA;MAzDiB,IAAI5B,EAAA;AAAA,MAAa,UAAUA,EAAA;AAAA,IAAA;MACrDI,EAuDM,OAAA;AAAA,QAtDJ,OAAKE,EAAA,CAAC,sBAIGN,EAAA,MAAG,KAAA,qBAAA,CAAA;AAAA,QAHZ,mBAAgB;AAAA,QAChB,MAAK;AAAA,QACL,cAAW;AAAA,MAAA;QAGX6B,EAaaC,GAAA;AAAA,UAZX,sBAAmB;AAAA,UACnB,oBAAiB;AAAA,UACjB,kBAAe;AAAA,UACf,sBAAmB;AAAA,UACnB,oBAAiB;AAAA,UACjB,kBAAe;AAAA,QAAA;qBAEf,MAIE;AAAA,YAHM9B,EAAA,YADRD,EAIE,OAAA;AAAA;cAFA,OAAM;AAAA,cACL,gCAAOY,EAAK,EAAA,QAAA,UAAA;AAAA,YAAA;;;;QAGjBP,EAiCM,OAAA;AAAA,UAhCJ,OAAM;AAAA,UACL,gCAAOO,EAAK,EAAA,QAAA,UAAA;AAAA,QAAA;UAEbP,EA4BM,OA5BN2B,GA4BM;AAAA,YA3BJF,EA0BaC,OA1BOJ,EAAA,KAAe,CAAA,GAAA;AAAA,yBACjC,MAwBM;AAAA,gBAvBE1B,EAAA,YADRD,EAwBM,OAAA;AAAA;kBAtBH,OAAKO,EAAA,CAAES,EAAA,OACF,QAAQ,CAAA;AAAA,kBACb,2BAAD,MAAA;AAAA,kBAAA,GAAW,CAAA,MAAA,CAAA;AAAA,gBAAA;kBAGHf,EAAA,YAAYA,EAAA,SAASgC,EAAAA,OAAO,gBADpCjC,EAgBM,OAAA;AAAA;oBAdH,UAAQC,EAAA,UAAUA,cAAYgC,EAAAA,OAAO,WAAO,gCAAA,mCAAA;AAAA,kBAAA;oBAEnChC,EAAA,cAAVD,EAEK,MAFLM,GAEK4B,EADAjC,EAAA,KAAK,GAAA,CAAA;oBAECA,EAAA,YAAYgC,EAAAA,OAAO,WAA9BE,KAAAnC,EAQM,OARNoC,GAQM;AAAA,sBAPJC,EAAuBC,EAAA,QAAA,SAAA;AAAA,sBAEfrC,EAAA,iBADR2B,EAKEW,GAAA;AAAA;wBAHA,OAAM;AAAA,wBACN,gBAAa;AAAA,wBACZ,kCAAY3B,EAAK,EAAA,QAAA,SAAA,CAAA,GAAA,CAAA,MAAA,CAAA;AAAA,sBAAA;;;kBAIxByB,EAAQC,EAAA,QAAA,SAAA;AAAA,gBAAA;;;;;;;;;;"}
|
|
@@ -5,11 +5,18 @@ import { AgentMode, ChatAttachment, ChatMessage, TextConnectionState, Agent } fr
|
|
|
5
5
|
/**
|
|
6
6
|
* Structured error payload surfaced by the chat stream. Matches the
|
|
7
7
|
* ApiResponse contract in plans/standards/api.md — consumers switch on
|
|
8
|
-
* `code` (stable identifier), render `error` (user-facing copy).
|
|
8
|
+
* `code` (stable identifier), render `error` (user-facing copy). When
|
|
9
|
+
* the server emits a ChatIssueWireFrame (chat-gate.ts), the bucket +
|
|
10
|
+
* actionLabel + actionUrl triad lets the UI render a CTA inside the
|
|
11
|
+
* error bubble.
|
|
9
12
|
*/
|
|
10
13
|
export interface ChatStreamError {
|
|
11
14
|
code: string;
|
|
12
15
|
error: string;
|
|
16
|
+
bucket?: 'account' | 'error';
|
|
17
|
+
actionLabel?: string;
|
|
18
|
+
actionUrl?: string;
|
|
19
|
+
help?: string;
|
|
13
20
|
}
|
|
14
21
|
export type ChatStreamFn = (args: {
|
|
15
22
|
message: string;
|
|
@@ -62,6 +69,14 @@ export declare class AgentChatController extends SettingsObject<AgentChatControl
|
|
|
62
69
|
onConnect?: () => void;
|
|
63
70
|
}): Promise<void>;
|
|
64
71
|
endConversation(): Promise<void>;
|
|
72
|
+
/**
|
|
73
|
+
* Start a fresh conversation — clears the visible transcript and unsets
|
|
74
|
+
* conversationId so the next send creates a new thread on the server.
|
|
75
|
+
* Prior session stays in DB for history; only the in-memory view resets.
|
|
76
|
+
* Use when an issue bubble (billing, error) is blocking the current
|
|
77
|
+
* conversation and the user wants a clean slate after resolving it.
|
|
78
|
+
*/
|
|
79
|
+
newConversation(): void;
|
|
65
80
|
sendChatMessage(message: string, attachments?: ChatAttachment[]): Promise<void>;
|
|
66
81
|
private buildHistory;
|
|
67
82
|
/** Seed the controller with previously-loaded messages (e.g. from a server thread). */
|
package/dist/agent/schema.d.ts
CHANGED
|
@@ -7,12 +7,20 @@ export interface ChatAttachment {
|
|
|
7
7
|
mimeType: string;
|
|
8
8
|
mediaId?: string;
|
|
9
9
|
}
|
|
10
|
+
export interface ChatMessageIssue {
|
|
11
|
+
code: string;
|
|
12
|
+
bucket: 'account' | 'error';
|
|
13
|
+
actionLabel: string;
|
|
14
|
+
actionUrl: string;
|
|
15
|
+
help?: string;
|
|
16
|
+
}
|
|
10
17
|
export interface ChatMessage {
|
|
11
18
|
id: string;
|
|
12
19
|
text: string;
|
|
13
20
|
sender: 'user' | 'agent' | 'system';
|
|
14
21
|
timestamp: string;
|
|
15
22
|
attachments?: ChatAttachment[];
|
|
23
|
+
issue?: ChatMessageIssue;
|
|
16
24
|
}
|
|
17
25
|
export interface TextConnectionState {
|
|
18
26
|
isActive: boolean;
|
|
@@ -20,6 +28,14 @@ export interface TextConnectionState {
|
|
|
20
28
|
isThinking: boolean;
|
|
21
29
|
connectionStatus: 'connecting' | 'connected' | 'disconnected' | 'error';
|
|
22
30
|
error?: string;
|
|
31
|
+
/**
|
|
32
|
+
* Set when the server emits a persistent `bucket: 'account'` issue
|
|
33
|
+
* (billing past-due, credit limit, budget cap). Stays true until the
|
|
34
|
+
* user starts a new conversation — further sends are blocked because
|
|
35
|
+
* retrying just hits the same error and looks like the product is
|
|
36
|
+
* silently failing. Cleared by newConversation().
|
|
37
|
+
*/
|
|
38
|
+
accountGated?: boolean;
|
|
23
39
|
}
|
|
24
40
|
export declare const AGENT_MODES: readonly [{
|
|
25
41
|
readonly mode: "self";
|