@pagelines/sdk 1.0.663 → 1.0.664

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 (66) hide show
  1. package/dist/AgentProvider.vue_vue_type_script_setup_true_lang.js +4208 -0
  2. package/dist/AgentProvider.vue_vue_type_script_setup_true_lang.js.map +1 -0
  3. package/dist/AgentWidgetInline.js +32 -44
  4. package/dist/AgentWidgetInline.js.map +1 -1
  5. package/dist/AgentWidgetModal.js +64 -75
  6. package/dist/AgentWidgetModal.js.map +1 -1
  7. package/dist/AgentWidgetOnboard.js +5 -0
  8. package/dist/AgentWidgetOnboard.js.map +1 -0
  9. package/dist/AgentWrap.vue_vue_type_script_setup_true_lang.js +5098 -0
  10. package/dist/AgentWrap.vue_vue_type_script_setup_true_lang.js.map +1 -0
  11. package/dist/FModal.vue_vue_type_script_setup_true_lang.js +181 -0
  12. package/dist/FModal.vue_vue_type_script_setup_true_lang.js.map +1 -0
  13. package/dist/agent/test/AgentController.test.d.ts +1 -0
  14. package/dist/agent/test/ChatRichText.client.test.d.ts +1 -0
  15. package/dist/agent/test/ChatVisualBlock.client.test.d.ts +1 -0
  16. package/dist/agent/test/ElAgentChat.client.test.d.ts +1 -0
  17. package/dist/agent/test/ElAgentChatPreview.client.test.d.ts +1 -0
  18. package/dist/agent/test/VoiceRecorderController.unit.test.d.ts +1 -0
  19. package/dist/agent/test/auth-inputs.test.d.ts +1 -0
  20. package/dist/agent/test/chat-visual-format.unit.test.d.ts +1 -0
  21. package/dist/agent/test/utils.test.d.ts +1 -0
  22. package/dist/agent/test/webhook.test.d.ts +1 -0
  23. package/dist/agent.js +186 -157
  24. package/dist/agent.js.map +1 -1
  25. package/dist/contract/regenerate.d.ts +2 -0
  26. package/dist/contract/test/build.unit.test.d.ts +1 -0
  27. package/dist/contract/test/conversation-wire-shapes.unit.test.d.ts +14 -0
  28. package/dist/contract/test/snapshot.unit.test.d.ts +1 -0
  29. package/dist/demo.js +259 -242
  30. package/dist/demo.js.map +1 -1
  31. package/dist/index.js +872 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/sdk.css +1 -2
  34. package/dist/sdk.js +14 -4
  35. package/dist/sdk.js.map +1 -0
  36. package/dist/sdkClient.js +867 -775
  37. package/dist/sdkClient.js.map +1 -1
  38. package/dist/socialPlatforms.js +82 -0
  39. package/dist/socialPlatforms.js.map +1 -0
  40. package/dist/test/agent-client.test.d.ts +4 -0
  41. package/dist/test/api.test.d.ts +1 -0
  42. package/dist/test/billing-client.test.d.ts +4 -0
  43. package/dist/test/build.test.d.ts +1 -0
  44. package/dist/test/chat-authenticated.test.d.ts +1 -0
  45. package/dist/test/chat-issue-presentation.test.d.ts +1 -0
  46. package/dist/test/derive-mode.test.d.ts +1 -0
  47. package/dist/test/sdk-token-capture.test.d.ts +13 -0
  48. package/dist/vite.config.sdk.d.ts +2 -0
  49. package/dist/vitest.config.d.ts +2 -0
  50. package/dist/widget.js +7 -721
  51. package/dist/widget.js.map +1 -1
  52. package/package.json +12 -12
  53. package/dist/AgentProvider.js +0 -2782
  54. package/dist/AgentProvider.js.map +0 -1
  55. package/dist/AgentWrap.js +0 -5251
  56. package/dist/AgentWrap.js.map +0 -1
  57. package/dist/FModal.js +0 -165
  58. package/dist/FModal.js.map +0 -1
  59. package/dist/constants.js +0 -80
  60. package/dist/constants.js.map +0 -1
  61. package/dist/contract.js +0 -6271
  62. package/dist/contract.js.map +0 -1
  63. package/dist/node_modules/.vue-global-types/vue_3.5_false.d.ts +0 -4
  64. package/dist/rolldown-runtime.js +0 -14
  65. package/dist/useWidgetState.js +0 -21
  66. package/dist/useWidgetState.js.map +0 -1
package/dist/agent.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","names":[],"sources":["../agent/ui/AgentModal.vue","../agent/ui/AgentModal.vue","../agent/ui/AgentWidget.vue","../agent/ui/AgentWidget.vue","../agent/ui/ElAgentChatPreview.vue","../agent/ui/ElAgentChatPreview.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { PageLinesSDK } from '../../sdkClient'\nimport type { AgentConfig } from '../schema'\nimport FModal from '@/ui/common/FModal.vue'\nimport AgentProvider from './AgentProvider.vue'\n\ndefineOptions({ name: 'AgentModal' })\n\nconst {\n vis = false,\n sdk,\n agent,\n handle,\n context,\n firstMessage,\n} = defineProps<{\n vis?: boolean\n sdk?: PageLinesSDK\n agent?: AgentConfig\n handle?: string\n context?: string\n firstMessage?: string\n}>()\n\nconst emit = defineEmits<{\n 'update:vis': [value: boolean]\n}>()\n</script>\n\n<template>\n <FModal\n :vis=\"vis\"\n modal-class=\"max-w-4xl p-0\"\n style-class=\"bg-transparent shadow-2xl rounded-2xl\"\n :has-close=\"false\"\n @update:vis=\"(val) => emit('update:vis', val)\"\n >\n <div class=\"relative w-full h-[80vh] md:h-[600px]\">\n <AgentProvider\n :sdk=\"sdk\"\n :agent=\"agent\"\n :handle=\"handle\"\n :context=\"context\"\n :first-message=\"firstMessage\"\n :has-close=\"true\"\n @close=\"emit('update:vis', false)\"\n />\n </div>\n </FModal>\n</template>\n","<script setup lang=\"ts\">\nimport type { PageLinesSDK } from '../../sdkClient'\nimport type { AgentConfig } from '../schema'\nimport FModal from '@/ui/common/FModal.vue'\nimport AgentProvider from './AgentProvider.vue'\n\ndefineOptions({ name: 'AgentModal' })\n\nconst {\n vis = false,\n sdk,\n agent,\n handle,\n context,\n firstMessage,\n} = defineProps<{\n vis?: boolean\n sdk?: PageLinesSDK\n agent?: AgentConfig\n handle?: string\n context?: string\n firstMessage?: string\n}>()\n\nconst emit = defineEmits<{\n 'update:vis': [value: boolean]\n}>()\n</script>\n\n<template>\n <FModal\n :vis=\"vis\"\n modal-class=\"max-w-4xl p-0\"\n style-class=\"bg-transparent shadow-2xl rounded-2xl\"\n :has-close=\"false\"\n @update:vis=\"(val) => emit('update:vis', val)\"\n >\n <div class=\"relative w-full h-[80vh] md:h-[600px]\">\n <AgentProvider\n :sdk=\"sdk\"\n :agent=\"agent\"\n :handle=\"handle\"\n :context=\"context\"\n :first-message=\"firstMessage\"\n :has-close=\"true\"\n @close=\"emit('update:vis', false)\"\n />\n </div>\n </FModal>\n</template>\n","<script setup lang=\"ts\">\nimport type { PageLinesSDK } from '../../sdkClient'\nimport { nextTick, ref, watch } from 'vue'\nimport AgentChat from './AgentChat.vue'\nimport AgentWrap from './AgentWrap.vue'\n\ninterface Props {\n sdk?: PageLinesSDK\n handle: string\n context?: string\n firstMessage?: string\n position?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left'\n}\n\nconst props = defineProps<Props>()\nconst isOpen = ref(false)\nconst isAgentActive = ref(false)\n\nfunction toggle() {\n isOpen.value = !isOpen.value\n}\n\n// Watch isOpen to delay agent activation for smooth transition\nwatch(isOpen, async (newValue) => {\n if (newValue) {\n // When opening, delay agent activation until transition starts\n await nextTick()\n setTimeout(() => {\n isAgentActive.value = true\n }, 400) // Delay to let container expand first\n } else {\n // When closing, immediately deactivate agent\n isAgentActive.value = false\n }\n})\n\nfunction open() {\n isOpen.value = true\n}\n\nfunction close() {\n isOpen.value = false\n}\n\nfunction handleClose() {\n close()\n}\n\ndefineExpose({\n toggle,\n open,\n close,\n})\n</script>\n\n<template>\n <AgentWrap\n v-slot=\"{ agent, sdk: resolvedSdk }\"\n :sdk=\"sdk\"\n :handle=\"handle\"\n :context=\"context\"\n :first-message=\"firstMessage\"\n >\n <!-- Fixed Widget Wrapper -->\n <div\n v-if=\"agent\"\n class=\"fixed z-[999999] pointer-events-auto\"\n :class=\"[\n props.position === 'bottom-left' ? 'bottom-6 left-6'\n : props.position === 'top-right' ? 'top-6 right-6'\n : props.position === 'top-left' ? 'top-6 left-6'\n : 'bottom-6 right-6',\n ]\"\n >\n <!-- Widget Content with Transition -->\n <div\n class=\"transition-all duration-500 ease-[cubic-bezier(0.25,1,0.33,1)] transform-gpu\"\n :class=\"[\n isOpen\n ? 'widget-expanded w-96 h-[600px] max-w-[calc(100vw-48px)] max-h-[calc(100vh-48px)] rounded-3xl opacity-100 scale-100'\n : 'widget-button w-[80px] h-[80px] opacity-100 scale-100 flex items-center justify-center cursor-pointer',\n ]\"\n :style=\"{\n 'transform-origin':\n props.position === 'bottom-left' ? 'bottom left'\n : props.position === 'top-right' ? 'top right'\n : props.position === 'top-left' ? 'top left'\n : 'bottom right',\n }\"\n @click=\"!isOpen ? toggle() : undefined\"\n >\n <!-- Button Content (visible when closed) -->\n <div v-if=\"!isOpen\" class=\"relative h-full w-full\">\n <div class=\"group relative h-full w-full rounded-3xl overflow-hidden shadow-lg transition-all duration-300 ease-[cubic-bezier(0.25,1,0.33,1)] hover:shadow-2xl hover:translate-y-[-1px] hover:brightness-110 active:scale-[1.06] active:-translate-y-0.5 active:duration-100\">\n <img\n :src=\"agent.avatarUrl.value\"\n :alt=\"`${agent.displayName.value} assistant`\"\n class=\"h-full w-full object-cover pointer-events-none\"\n width=\"80\"\n height=\"80\"\n />\n <!-- Gradient overlay for contrast -->\n <div class=\"absolute inset-0 pointer-events-none bg-gradient-to-br from-transparent via-black/10 to-black/40 opacity-60 transition-opacity duration-300 group-hover:opacity-40\" />\n </div>\n <!-- Online indicator -->\n <div v-if=\"agent.state.value.lifecycle === 'running'\" class=\"absolute top-0.5 right-0.5\">\n <div class=\"size-3 bg-green-500 rounded-full ring-2 ring-white absolute animate-ping\" style=\"animation-duration: 3s;\" />\n <div class=\"size-3 bg-green-500 rounded-full ring-2 ring-white\" />\n </div>\n </div>\n\n <!-- Chat Content (visible when open) -->\n <AgentChat\n v-if=\"isOpen && agent\"\n class=\"rounded-3xl shadow-2xl border border-white/10\"\n :sdk=\"resolvedSdk\"\n :agent=\"agent\"\n :context=\"context\"\n :first-message=\"firstMessage\"\n :has-close=\"true\"\n :is-active=\"isAgentActive\"\n @close=\"handleClose\"\n />\n </div>\n </div>\n </AgentWrap>\n</template>\n","<script setup lang=\"ts\">\nimport type { PageLinesSDK } from '../../sdkClient'\nimport { nextTick, ref, watch } from 'vue'\nimport AgentChat from './AgentChat.vue'\nimport AgentWrap from './AgentWrap.vue'\n\ninterface Props {\n sdk?: PageLinesSDK\n handle: string\n context?: string\n firstMessage?: string\n position?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left'\n}\n\nconst props = defineProps<Props>()\nconst isOpen = ref(false)\nconst isAgentActive = ref(false)\n\nfunction toggle() {\n isOpen.value = !isOpen.value\n}\n\n// Watch isOpen to delay agent activation for smooth transition\nwatch(isOpen, async (newValue) => {\n if (newValue) {\n // When opening, delay agent activation until transition starts\n await nextTick()\n setTimeout(() => {\n isAgentActive.value = true\n }, 400) // Delay to let container expand first\n } else {\n // When closing, immediately deactivate agent\n isAgentActive.value = false\n }\n})\n\nfunction open() {\n isOpen.value = true\n}\n\nfunction close() {\n isOpen.value = false\n}\n\nfunction handleClose() {\n close()\n}\n\ndefineExpose({\n toggle,\n open,\n close,\n})\n</script>\n\n<template>\n <AgentWrap\n v-slot=\"{ agent, sdk: resolvedSdk }\"\n :sdk=\"sdk\"\n :handle=\"handle\"\n :context=\"context\"\n :first-message=\"firstMessage\"\n >\n <!-- Fixed Widget Wrapper -->\n <div\n v-if=\"agent\"\n class=\"fixed z-[999999] pointer-events-auto\"\n :class=\"[\n props.position === 'bottom-left' ? 'bottom-6 left-6'\n : props.position === 'top-right' ? 'top-6 right-6'\n : props.position === 'top-left' ? 'top-6 left-6'\n : 'bottom-6 right-6',\n ]\"\n >\n <!-- Widget Content with Transition -->\n <div\n class=\"transition-all duration-500 ease-[cubic-bezier(0.25,1,0.33,1)] transform-gpu\"\n :class=\"[\n isOpen\n ? 'widget-expanded w-96 h-[600px] max-w-[calc(100vw-48px)] max-h-[calc(100vh-48px)] rounded-3xl opacity-100 scale-100'\n : 'widget-button w-[80px] h-[80px] opacity-100 scale-100 flex items-center justify-center cursor-pointer',\n ]\"\n :style=\"{\n 'transform-origin':\n props.position === 'bottom-left' ? 'bottom left'\n : props.position === 'top-right' ? 'top right'\n : props.position === 'top-left' ? 'top left'\n : 'bottom right',\n }\"\n @click=\"!isOpen ? toggle() : undefined\"\n >\n <!-- Button Content (visible when closed) -->\n <div v-if=\"!isOpen\" class=\"relative h-full w-full\">\n <div class=\"group relative h-full w-full rounded-3xl overflow-hidden shadow-lg transition-all duration-300 ease-[cubic-bezier(0.25,1,0.33,1)] hover:shadow-2xl hover:translate-y-[-1px] hover:brightness-110 active:scale-[1.06] active:-translate-y-0.5 active:duration-100\">\n <img\n :src=\"agent.avatarUrl.value\"\n :alt=\"`${agent.displayName.value} assistant`\"\n class=\"h-full w-full object-cover pointer-events-none\"\n width=\"80\"\n height=\"80\"\n />\n <!-- Gradient overlay for contrast -->\n <div class=\"absolute inset-0 pointer-events-none bg-gradient-to-br from-transparent via-black/10 to-black/40 opacity-60 transition-opacity duration-300 group-hover:opacity-40\" />\n </div>\n <!-- Online indicator -->\n <div v-if=\"agent.state.value.lifecycle === 'running'\" class=\"absolute top-0.5 right-0.5\">\n <div class=\"size-3 bg-green-500 rounded-full ring-2 ring-white absolute animate-ping\" style=\"animation-duration: 3s;\" />\n <div class=\"size-3 bg-green-500 rounded-full ring-2 ring-white\" />\n </div>\n </div>\n\n <!-- Chat Content (visible when open) -->\n <AgentChat\n v-if=\"isOpen && agent\"\n class=\"rounded-3xl shadow-2xl border border-white/10\"\n :sdk=\"resolvedSdk\"\n :agent=\"agent\"\n :context=\"context\"\n :first-message=\"firstMessage\"\n :has-close=\"true\"\n :is-active=\"isAgentActive\"\n @close=\"handleClose\"\n />\n </div>\n </div>\n </AgentWrap>\n</template>\n","<script setup lang=\"ts\">\nimport ChatRichText from './ChatRichText.vue'\n\nexport type ChatPreviewMessage = {\n sender: 'user' | 'agent'\n text: string\n}\n\ndefineProps<{\n messages: ChatPreviewMessage[]\n variant?: 'light' | 'dark'\n}>()\n</script>\n\n<template>\n <div\n class=\"@container/chat-preview flex flex-col gap-3\"\n :class=\"variant === 'dark' ? 'text-white' : 'text-slate-950'\"\n data-test=\"agent-chat-preview\"\n >\n <div\n v-for=\"(message, index) in messages\"\n :key=\"`${message.sender}-${index}`\"\n class=\"flex\"\n :class=\"message.sender === 'user' ? 'justify-end' : 'justify-start'\"\n data-test=\"agent-chat-preview-message\"\n :data-sender=\"message.sender\"\n >\n <div\n class=\"max-w-[88%] rounded-2xl px-4 py-3 text-sm shadow-sm @sm/chat-preview:max-w-[78%]\"\n :class=\"message.sender === 'user'\n ? 'bg-slate-950 text-white'\n : variant === 'dark'\n ? 'border border-white/10 bg-white/10 text-white'\n : 'border border-slate-200 bg-white text-slate-950'\"\n >\n <ChatRichText\n :text=\"message.text\"\n :inverted=\"message.sender === 'user' || variant === 'dark'\"\n />\n </div>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport ChatRichText from './ChatRichText.vue'\n\nexport type ChatPreviewMessage = {\n sender: 'user' | 'agent'\n text: string\n}\n\ndefineProps<{\n messages: ChatPreviewMessage[]\n variant?: 'light' | 'dark'\n}>()\n</script>\n\n<template>\n <div\n class=\"@container/chat-preview flex flex-col gap-3\"\n :class=\"variant === 'dark' ? 'text-white' : 'text-slate-950'\"\n data-test=\"agent-chat-preview\"\n >\n <div\n v-for=\"(message, index) in messages\"\n :key=\"`${message.sender}-${index}`\"\n class=\"flex\"\n :class=\"message.sender === 'user' ? 'justify-end' : 'justify-start'\"\n data-test=\"agent-chat-preview-message\"\n :data-sender=\"message.sender\"\n >\n <div\n class=\"max-w-[88%] rounded-2xl px-4 py-3 text-sm shadow-sm @sm/chat-preview:max-w-[78%]\"\n :class=\"message.sender === 'user'\n ? 'bg-slate-950 text-white'\n : variant === 'dark'\n ? 'border border-white/10 bg-white/10 text-white'\n : 'border border-slate-200 bg-white text-slate-950'\"\n >\n <ChatRichText\n :text=\"message.text\"\n :inverted=\"message.sender === 'user' || variant === 'dark'\"\n />\n </div>\n </div>\n </div>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sources":["../agent/ui/AgentModal.vue","../agent/ui/AgentWidget.vue","../agent/ui/ElAgentChatPreview.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { PageLinesSDK } from '../../sdkClient'\nimport type { AgentConfig } from '../schema'\nimport FModal from '@/ui/common/FModal.vue'\nimport AgentProvider from './AgentProvider.vue'\n\ndefineOptions({ name: 'AgentModal' })\n\nconst {\n vis = false,\n sdk,\n agent,\n handle,\n context,\n firstMessage,\n} = defineProps<{\n vis?: boolean\n sdk?: PageLinesSDK\n agent?: AgentConfig\n handle?: string\n context?: string\n firstMessage?: string\n}>()\n\nconst emit = defineEmits<{\n 'update:vis': [value: boolean]\n}>()\n</script>\n\n<template>\n <FModal\n :vis=\"vis\"\n modal-class=\"max-w-4xl p-0\"\n style-class=\"bg-transparent shadow-2xl rounded-2xl\"\n :has-close=\"false\"\n @update:vis=\"(val) => emit('update:vis', val)\"\n >\n <div class=\"relative w-full h-[80vh] md:h-[600px]\">\n <AgentProvider\n :sdk=\"sdk\"\n :agent=\"agent\"\n :handle=\"handle\"\n :context=\"context\"\n :first-message=\"firstMessage\"\n :has-close=\"true\"\n @close=\"emit('update:vis', false)\"\n />\n </div>\n </FModal>\n</template>\n","<script setup lang=\"ts\">\nimport type { PageLinesSDK } from '../../sdkClient'\nimport { nextTick, ref, watch } from 'vue'\nimport AgentChat from './AgentChat.vue'\nimport AgentWrap from './AgentWrap.vue'\n\ninterface Props {\n sdk?: PageLinesSDK\n handle: string\n context?: string\n firstMessage?: string\n position?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left'\n}\n\nconst props = defineProps<Props>()\nconst isOpen = ref(false)\nconst isAgentActive = ref(false)\n\nfunction toggle() {\n isOpen.value = !isOpen.value\n}\n\n// Watch isOpen to delay agent activation for smooth transition\nwatch(isOpen, async (newValue) => {\n if (newValue) {\n // When opening, delay agent activation until transition starts\n await nextTick()\n setTimeout(() => {\n isAgentActive.value = true\n }, 400) // Delay to let container expand first\n } else {\n // When closing, immediately deactivate agent\n isAgentActive.value = false\n }\n})\n\nfunction open() {\n isOpen.value = true\n}\n\nfunction close() {\n isOpen.value = false\n}\n\nfunction handleClose() {\n close()\n}\n\ndefineExpose({\n toggle,\n open,\n close,\n})\n</script>\n\n<template>\n <AgentWrap\n v-slot=\"{ agent, sdk: resolvedSdk }\"\n :sdk=\"sdk\"\n :handle=\"handle\"\n :context=\"context\"\n :first-message=\"firstMessage\"\n >\n <!-- Fixed Widget Wrapper -->\n <div\n v-if=\"agent\"\n class=\"fixed z-[999999] pointer-events-auto\"\n :class=\"[\n props.position === 'bottom-left' ? 'bottom-6 left-6'\n : props.position === 'top-right' ? 'top-6 right-6'\n : props.position === 'top-left' ? 'top-6 left-6'\n : 'bottom-6 right-6',\n ]\"\n >\n <!-- Widget Content with Transition -->\n <div\n class=\"transition-all duration-500 ease-[cubic-bezier(0.25,1,0.33,1)] transform-gpu\"\n :class=\"[\n isOpen\n ? 'widget-expanded w-96 h-[600px] max-w-[calc(100vw-48px)] max-h-[calc(100vh-48px)] rounded-3xl opacity-100 scale-100'\n : 'widget-button w-[80px] h-[80px] opacity-100 scale-100 flex items-center justify-center cursor-pointer',\n ]\"\n :style=\"{\n 'transform-origin':\n props.position === 'bottom-left' ? 'bottom left'\n : props.position === 'top-right' ? 'top right'\n : props.position === 'top-left' ? 'top left'\n : 'bottom right',\n }\"\n @click=\"!isOpen ? toggle() : undefined\"\n >\n <!-- Button Content (visible when closed) -->\n <div v-if=\"!isOpen\" class=\"relative h-full w-full\">\n <div class=\"group relative h-full w-full rounded-3xl overflow-hidden shadow-lg transition-all duration-300 ease-[cubic-bezier(0.25,1,0.33,1)] hover:shadow-2xl hover:translate-y-[-1px] hover:brightness-110 active:scale-[1.06] active:-translate-y-0.5 active:duration-100\">\n <img\n :src=\"agent.avatarUrl.value\"\n :alt=\"`${agent.displayName.value} assistant`\"\n class=\"h-full w-full object-cover pointer-events-none\"\n width=\"80\"\n height=\"80\"\n />\n <!-- Gradient overlay for contrast -->\n <div class=\"absolute inset-0 pointer-events-none bg-gradient-to-br from-transparent via-black/10 to-black/40 opacity-60 transition-opacity duration-300 group-hover:opacity-40\" />\n </div>\n <!-- Online indicator -->\n <div v-if=\"agent.state.value.lifecycle === 'running'\" class=\"absolute top-0.5 right-0.5\">\n <div class=\"size-3 bg-green-500 rounded-full ring-2 ring-white absolute animate-ping\" style=\"animation-duration: 3s;\" />\n <div class=\"size-3 bg-green-500 rounded-full ring-2 ring-white\" />\n </div>\n </div>\n\n <!-- Chat Content (visible when open) -->\n <AgentChat\n v-if=\"isOpen && agent\"\n class=\"rounded-3xl shadow-2xl border border-white/10\"\n :sdk=\"resolvedSdk\"\n :agent=\"agent\"\n :context=\"context\"\n :first-message=\"firstMessage\"\n :has-close=\"true\"\n :is-active=\"isAgentActive\"\n @close=\"handleClose\"\n />\n </div>\n </div>\n </AgentWrap>\n</template>\n","<script setup lang=\"ts\">\nimport ChatRichText from './ChatRichText.vue'\n\nexport type ChatPreviewMessage = {\n sender: 'user' | 'agent'\n text: string\n}\n\ndefineProps<{\n messages: ChatPreviewMessage[]\n variant?: 'light' | 'dark'\n}>()\n</script>\n\n<template>\n <div\n class=\"@container/chat-preview flex flex-col gap-3\"\n :class=\"variant === 'dark' ? 'text-white' : 'text-slate-950'\"\n data-test=\"agent-chat-preview\"\n >\n <div\n v-for=\"(message, index) in messages\"\n :key=\"`${message.sender}-${index}`\"\n class=\"flex\"\n :class=\"message.sender === 'user' ? 'justify-end' : 'justify-start'\"\n data-test=\"agent-chat-preview-message\"\n :data-sender=\"message.sender\"\n >\n <div\n class=\"max-w-[88%] rounded-2xl px-4 py-3 text-sm shadow-sm @sm/chat-preview:max-w-[78%]\"\n :class=\"message.sender === 'user'\n ? 'bg-slate-950 text-white'\n : variant === 'dark'\n ? 'border border-white/10 bg-white/10 text-white'\n : 'border border-slate-200 bg-white text-slate-950'\"\n >\n <ChatRichText\n :text=\"message.text\"\n :inverted=\"message.sender === 'user' || variant === 'dark'\"\n />\n </div>\n </div>\n </div>\n</template>\n"],"names":["emit","__emit","_createBlock","FModal","__props","_cache","val","_createElementVNode","_hoisted_1","_createVNode","AgentProvider","props","isOpen","ref","isAgentActive","toggle","__name","watch","newValue","nextTick","open","close","handleClose","__expose","AgentWrap","agent","resolvedSdk","_createElementBlock","_normalizeStyle","$event","_openBlock","_hoisted_2","_hoisted_4","AgentChat","_normalizeClass","_Fragment","_renderList","message","index","ChatRichText"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAwBA,UAAMA,IAAOC;2BAMXC,EAkBSC,GAAA;AAAA,MAjBN,KAAKC,EAAA;AAAA,MACN,eAAY;AAAA,MACZ,eAAY;AAAA,MACX,aAAW;AAAA,MACX,gBAAUC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAGC,MAAQN,gBAAmBM,CAAG;AAAA,IAAA;iBAE5C,MAUM;AAAA,QAVNC,EAUM,OAVNC,GAUM;AAAA,UATJC,EAQEC,GAAA;AAAA,YAPC,KAAKN,EAAA;AAAA,YACL,OAAOA,EAAA;AAAA,YACP,QAAQA,EAAA;AAAA,YACR,SAASA,EAAA;AAAA,YACT,iBAAeA,EAAA;AAAA,YACf,aAAW;AAAA,YACX,gCAAOJ,EAAI,cAAA,EAAA;AAAA,UAAA;;;;;;;;;;;;;;;;;;;;;;AC/BpB,UAAMW,IAAQP,GACRQ,IAASC,EAAI,EAAK,GAClBC,IAAgBD,EAAI,EAAK;AAE/B,aAASE,IAAS;AAChB,MAAAH,EAAO,QAAQ,CAACA,EAAO;AAAA,IACzB;AAFS,IAAAI,EAAAD,GAAA,WAKTE,EAAML,GAAQ,OAAOM,MAAa;AAChC,MAAIA,KAEF,MAAMC,EAAA,GACN,WAAW,MAAM;AACf,QAAAL,EAAc,QAAQ;AAAA,MACxB,GAAG,GAAG,KAGNA,EAAc,QAAQ;AAAA,IAE1B,CAAC;AAED,aAASM,IAAO;AACd,MAAAR,EAAO,QAAQ;AAAA,IACjB;AAFS,IAAAI,EAAAI,GAAA;AAIT,aAASC,IAAQ;AACf,MAAAT,EAAO,QAAQ;AAAA,IACjB;AAFS,IAAAI,EAAAK,GAAA;AAIT,aAASC,IAAc;AACrB,MAAAD,EAAA;AAAA,IACF;AAFS,WAAAL,EAAAM,GAAA,gBAITC,EAAa;AAAA,MACX,QAAAR;AAAA,MACA,MAAAK;AAAA,MACA,OAAAC;AAAA,IAAA,CACD,mBAICnB,EAqEYsB,GAAA;AAAA,MAnET,KAAKpB,EAAA;AAAA,MACL,QAAQA,EAAA;AAAA,MACR,SAASA,EAAA;AAAA,MACT,iBAAeA,EAAA;AAAA,IAAA;iBAGhB,CA4DM,EAnEI,OAAAqB,GAAK,KAAOC,QAAW;AAAA,QAQzBD,UADRE,EA4DM,OAAA;AAAA;UA1DJ,UAAM,wCAAsC;AAAA,YAC1BhB,EAAM,aAAQ,gBAAA,oBAAiDA,EAAM,aAAQ,cAAA,kBAA+CA,EAAM,aAAQ,aAAA;;;UAQ5JJ,EAgDM,OAAA;AAAA,YA/CJ,UAAM,gFAA8E;AAAA,cAChEK,EAAA;;YAKnB,OAAKgB,EAAA;AAAA,kCAA8CjB,EAAM,aAAQ,gBAAA,gBAAiDA,EAAM,aAAQ,cAAA,cAA+CA,EAAM,aAAQ,aAAA;;YAO7L,SAAKN,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAwB,MAAGjB,EAAA,QAAoB,SAAXG;UAAW;YAGjBH,EAAA,qBAAZkB,KAAAH,EAiBM,OAjBNnB,GAiBM;AAAA,cAhBJD,EAUM,OAVNwB,GAUM;AAAA,gBATJxB,EAME,OAAA;AAAA,kBALC,KAAKkB,EAAM,UAAU;AAAA,kBACrB,KAAG,GAAKA,EAAM,YAAY,KAAK;AAAA,kBAChC,OAAM;AAAA,kBACN,OAAM;AAAA,kBACN,QAAO;AAAA,gBAAA;gCAGTlB,EAAkL,OAAA,EAA7K,OAAM,wKAAoK,MAAA,EAAA;AAAA,cAAA;cAGtKkB,EAAM,MAAM,MAAM,cAAS,aAAtCK,KAAAH,EAGM,OAHNK,GAGM,CAAA,GAAA3B,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA;AAAA,gBAFJE,EAAwH,OAAA;AAAA,kBAAnH,OAAM;AAAA,kBAA2E,OAAA,EAAA,sBAAA,KAAA;AAAA,gBAAA;gBACtFA,EAAkE,OAAA,EAA7D,OAAM,qDAAA,GAAoD,MAAA,EAAA;AAAA,cAAA;;YAM3DK,EAAA,SAAUa,UADlBvB,EAUE+B,GAAA;AAAA;cARA,OAAM;AAAA,cACL,KAAKP;AAAA,cACL,OAAAD;AAAA,cACA,SAASrB,EAAA;AAAA,cACT,iBAAeA,EAAA;AAAA,cACf,aAAW;AAAA,cACX,aAAWU,EAAA;AAAA,cACX,SAAOQ;AAAA,YAAA;;;;;;;;;;;;;;2BC1GhBK,EA2BM,OAAA;AAAA,MA1BJ,OAAKO,EAAA,CAAC,+CACE9B,EAAA,YAAO,SAAA,eAAA,gBAAA,CAAA;AAAA,MACf,aAAU;AAAA,IAAA;OAEV0B,EAAA,EAAA,GAAAH,EAqBMQ,GAAA,MAAAC,EApBuBhC,EAAA,UAAQ,CAA3BiC,GAASC,YADnBX,EAqBM,OAAA;AAAA,QAnBH,KAAG,GAAKU,EAAQ,MAAM,IAAIC,CAAK;AAAA,QAChC,OAAKJ,EAAA,CAAC,QACEG,EAAQ,WAAM,SAAA,gBAAA,eAAA,CAAA;AAAA,QACtB,aAAU;AAAA,QACT,eAAaA,EAAQ;AAAA,MAAA;QAEtB9B,EAYM,OAAA;AAAA,UAXJ,OAAK2B,EAAA,CAAC,oFACEG,EAAQ,WAAM,qCAA8DjC,EAAA,YAAO;;UAM3FK,EAGE8B,GAAA;AAAA,YAFC,MAAMF,EAAQ;AAAA,YACd,UAAUA,EAAQ,qBAAqBjC,EAAA,YAAO;AAAA,UAAA;;;;;;"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Conversation-membership wire-shape contracts.
3
+ *
4
+ * The fixtures below use `satisfies ApiResponse<T>` so a contract drift in
5
+ * `@pagelines/core/wire` fails *compile*, not production. If the server's
6
+ * `ApiResponse` envelope evolves OR an inner shape changes
7
+ * (`ConversationSummary`, `ConversationUpdatedEvent`, `MessageSearchResult`),
8
+ * these literals stop type-checking and the SDK/iOS owner gets a CI red light
9
+ * with a one-line update instead of a runtime decode failure on devices.
10
+ *
11
+ * See plans/testing/testing-overview.md → "Pin the wire shape between server and
12
+ * clients" — the same pattern as `sdk-token-capture.test.ts`.
13
+ */
14
+ export {};
@@ -0,0 +1 @@
1
+ export {};