{"_id":"@baoyog/agent-vue3","_rev":"4-1bf80103333bb29ddaf1063c8324a8da","name":"@baoyog/agent-vue3","dist-tags":{"latest":"1.2.1"},"versions":{"1.0.0":{"name":"@baoyog/agent-vue3","version":"1.0.0","keywords":["vue3","ai","agent","chat","form","baoyog"],"license":"MIT","_id":"@baoyog/agent-vue3@1.0.0","maintainers":[{"name":"likun_2026","email":"515844980@qq.com"}],"dist":{"shasum":"4e1c3905527788794d532de10431ed3e615e2849","tarball":"https://registry.npmjs.org/@baoyog/agent-vue3/-/agent-vue3-1.0.0.tgz","fileCount":9,"integrity":"sha512-WtrB94p7AJXjlhluTyxgAuOBB78TZ3vtKEGnqaXp2raC8bK9R7QTYYpSytpRXQ+9y8ld7icUebATq3PjHBu/tg==","signatures":[{"sig":"MEUCIQDS0dJhfWbkJnjpTXAOwf0VaSlV/ryfiONtsX01L/oBHgIgOwSJzDDALhJS6bFQ/6obM7J2xiovMGNPYioDsu6Fltg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46492},"main":"./dist/baoyog-agent-vue3.umd.js","type":"module","types":"./dist/index.d.ts","module":"./dist/baoyog-agent-vue3.es.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/baoyog-agent-vue3.es.js","require":"./dist/baoyog-agent-vue3.umd.js"},"./style.css":"./dist/style.css"},"gitHead":"0739123cbb95471255c4032400ac20d3a3601c80","scripts":{"dev":"vite","build":"vue-tsc --noEmit && vite build","preview":"vite preview"},"_npmUser":{"name":"likun_2026","email":"515844980@qq.com"},"_npmVersion":"10.9.0","description":"宝遥智能体 Vue3 通用插件 - 无第三方 UI 框架依赖的嵌入式对话组件","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"vue":"^3.4.0","vite":"^5.4.0","vue-tsc":"^2.0.0","typescript":"^5.3.0","vite-plugin-dts":"^3.9.0","@vitejs/plugin-vue":"^5.0.0"},"peerDependencies":{"vue":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-vue3_1.0.0_1786285691633_0.6882997452766213","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@baoyog/agent-vue3","version":"1.1.0","keywords":["vue3","ai","agent","chat","form","baoyog"],"license":"MIT","_id":"@baoyog/agent-vue3@1.1.0","maintainers":[{"name":"likun_2026","email":"515844980@qq.com"}],"dist":{"shasum":"75499712ed1cd6cd38a1d2f2a67e14c0c240903a","tarball":"https://registry.npmjs.org/@baoyog/agent-vue3/-/agent-vue3-1.1.0.tgz","fileCount":11,"integrity":"sha512-kMjgBDRg5kfMF7UIRZW+pSyYN4xAt3zzWA6Ux0nkw1Y6Wdw2CtHHfGzk+6hVzrIxgsOcurr7V4tZ3bz3qEYgVQ==","signatures":[{"sig":"MEQCIAwfNbpM22Eu1S0NITHDl5QKOplGQoz5iNRtHN/IxxLOAiAeeSnZ4qljX5FNSHL0GWRWQi+DdemzAZSXTrYEhe7UMA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80996},"main":"./dist/baoyog-agent-vue3.umd.js","type":"module","types":"./dist/index.d.ts","module":"./dist/baoyog-agent-vue3.es.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/baoyog-agent-vue3.es.js","require":"./dist/baoyog-agent-vue3.umd.js"},"./style.css":"./dist/style.css"},"gitHead":"f402b3daf292eb8a86a50bb059e1b1cc1ee4668f","scripts":{"dev":"vite","build":"vue-tsc --noEmit && vite build","preview":"vite preview"},"_npmUser":{"name":"likun_2026","email":"515844980@qq.com"},"_npmVersion":"10.9.0","description":"宝遥智能体 Vue3 通用插件 - 无第三方 UI 框架依赖的嵌入式对话组件","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"vue":"^3.4.0","vite":"^5.4.0","vue-tsc":"^2.0.0","typescript":"^5.3.0","vite-plugin-dts":"^3.9.0","@vitejs/plugin-vue":"^5.0.0"},"peerDependencies":{"vue":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-vue3_1.1.0_1786289690075_0.13777823078452345","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@baoyog/agent-vue3","version":"1.2.0","keywords":["vue3","ai","agent","chat","form","baoyog"],"license":"MIT","_id":"@baoyog/agent-vue3@1.2.0","maintainers":[{"name":"likun_2026","email":"515844980@qq.com"}],"dist":{"shasum":"06bc0e66cabff21ac752bc2fda5ee485c6b711f1","tarball":"https://registry.npmjs.org/@baoyog/agent-vue3/-/agent-vue3-1.2.0.tgz","fileCount":11,"integrity":"sha512-/xTXqKAfh0N4ELEATVMEWANuprUoI0lhgv1qQ1TS2MXaLd9v39guYT7q7mUwyQe+ax431SdYyxF6tTtJIw21uw==","signatures":[{"sig":"MEUCIQCbirn3B/S2aIkuRYotKR9+1RIYNnUHsFcM23AgjNoydAIgXnjwGhUMzpTU2A4lkRr9J9AaQEAYMg+jyaorXG0RTWI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":90897},"main":"./dist/baoyog-agent-vue3.umd.js","type":"module","types":"./dist/index.d.ts","module":"./dist/baoyog-agent-vue3.es.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/baoyog-agent-vue3.es.js","require":"./dist/baoyog-agent-vue3.umd.js"},"./style.css":"./dist/style.css"},"gitHead":"63af68e6f7466d43eebb0981fdc7beefa986c5d5","scripts":{"dev":"vite","build":"vue-tsc --noEmit && vite build","preview":"vite preview"},"_npmUser":{"name":"likun_2026","email":"515844980@qq.com"},"_npmVersion":"10.9.0","description":"宝遥智能体 Vue3 通用插件 - 无第三方 UI 框架依赖的嵌入式对话组件","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"vue":"^3.4.0","vite":"^5.4.0","vue-tsc":"^2.0.0","typescript":"^5.3.0","vite-plugin-dts":"^3.9.0","@baoyog/agent-core":"file:../baoyog-ai-agent-core","@vitejs/plugin-vue":"^5.0.0"},"peerDependencies":{"vue":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/agent-vue3_1.2.0_1786333557924_0.17149486679006132","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@baoyog/agent-vue3","version":"1.2.1","description":"宝遥智能体 Vue3 通用插件 - 无第三方 UI 框架依赖的嵌入式对话组件","type":"module","main":"./dist/baoyog-agent-vue3.umd.js","module":"./dist/baoyog-agent-vue3.es.js","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/baoyog-agent-vue3.es.js","require":"./dist/baoyog-agent-vue3.umd.js","types":"./dist/index.d.ts"},"./style.css":"./dist/style.css"},"scripts":{"dev":"vite","build":"vue-tsc --noEmit && vite build","preview":"vite preview"},"engines":{"node":">=18"},"peerDependencies":{"vue":"^3.3.0"},"devDependencies":{"@baoyog/agent-core":"file:../baoyog-ai-agent-core","@vitejs/plugin-vue":"^5.0.0","typescript":"^5.3.0","vite":"^5.4.0","vite-plugin-dts":"^3.9.0","vue":"^3.4.0","vue-tsc":"^2.0.0"},"keywords":["vue3","ai","agent","chat","form","baoyog"],"license":"MIT","_id":"@baoyog/agent-vue3@1.2.1","gitHead":"63af68e6f7466d43eebb0981fdc7beefa986c5d5","_nodeVersion":"22.12.0","_npmVersion":"10.9.0","dist":{"integrity":"sha512-EkjZM70TOkgCzv3Vh2VlC+hQWVk7URkxDMXixZvxXSZz2XHKSBv/+YyUbQm87Y6ded2Ycyp/5OnZl0bjCFpbJg==","shasum":"86de69a185f6e46c823c1578566aad48552a655c","tarball":"https://registry.npmjs.org/@baoyog/agent-vue3/-/agent-vue3-1.2.1.tgz","fileCount":11,"unpackedSize":94127,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDe4fmhHk3IVyNm3kbG6n+/2OsPSdzOiDnPZBM8VV8+xwIhAOXkOq6QVVZ+CqCyTMjp79rjEwRxwifbPb586UuPb3eT"}]},"_npmUser":{"name":"likun_2026","email":"515844980@qq.com"},"directories":{},"maintainers":[{"name":"likun_2026","email":"515844980@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agent-vue3_1.2.1_1786333760653_0.0833699586326826"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-09T14:28:11.494Z","modified":"2026-08-10T03:49:20.962Z","1.0.0":"2026-08-09T14:28:11.778Z","1.1.0":"2026-08-09T15:34:50.227Z","1.2.0":"2026-08-10T03:45:58.052Z","1.2.1":"2026-08-10T03:49:20.783Z"},"license":"MIT","keywords":["vue3","ai","agent","chat","form","baoyog"],"description":"宝遥智能体 Vue3 通用插件 - 无第三方 UI 框架依赖的嵌入式对话组件","maintainers":[{"name":"likun_2026","email":"515844980@qq.com"}],"readme":"# 宝遥智能体 Vue3 插件 (@baoyog/agent-vue3)\n\n可嵌入任意 Vue3 系统的智能体对话与标准化表单助手组件，支持 SSE 流式通信、工具调用展示、Markdown 渲染、字段映射、校验和最终确认回填。\n\n插件只依赖 Vue 3，不依赖 Element Plus、Ant Design Vue 或其他第三方 UI 框架。按钮、输入框、图标和交互样式均由插件自身提供。\n\n鉴权、会话、AG-UI SSE、停止生成和标准错误统一使用 `@baoyog/agent-core`。业务系统推荐通过 `getAccessToken` 从自己的服务端取得短期 Token，禁止在浏览器中配置 Client Secret。\n\n```ts\ngetAccessToken: ({ force }) => businessApi.getAiToken({ force }).then(res => res.token)\n```\n\n## 安装\n\n```bash\nnpm install @baoyog/agent-vue3\n```\n\n## 快速使用\n\n### 方式一：全局注册插件\n\n```ts\n// main.ts\nimport { createApp } from 'vue'\nimport BaoyogAgentPlugin from '@baoyog/agent-vue3'\nimport '@baoyog/agent-vue3/style.css'\nimport App from './App.vue'\n\ncreateApp(App).use(BaoyogAgentPlugin).mount('#app')\n```\n\n```vue\n<!-- 任意组件中 -->\n<template>\n  <FormAgentChat\n    api-base-url=\"http://127.0.0.1:13060\"\n    agent-id=\"2079080349952217090\"\n    agent-code=\"form_agent_001\"\n    chat-key=\"从智能体发布配置中获取\"\n    biz-type=\"采购合同\"\n    title=\"表单填报助手\"\n    :context-params=\"{ token: shortLivedBusinessToken }\"\n    @form-patch=\"applyPatch\"\n    @submit-request=\"confirmSubmit\"\n  />\n</template>\n```\n\n## 标准化表单助手（推荐）\n\n`AiFormAssistant` 会在每次发送前读取当前表单快照。智能体同一轮即使多次调用\n`propose_form_patch`，插件也只会在运行结束后合并为一个确认框；用户确认后才会写入宿主表单。\n\n```vue\n<script setup lang=\"ts\">\nimport { reactive } from 'vue'\nimport { AiFormAssistant, createFormAdapter, formConverters } from '@baoyog/agent-vue3'\nimport '@baoyog/agent-vue3/style.css'\n\nconst form = reactive({\n  name: '',\n  categoryId: '',\n  amountCent: 0,\n  description: '',\n})\n\nconst adapter = createFormAdapter({\n  getValues: () => form,\n  fields: {\n    contractName: { label: '合同名称', source: 'name', aliases: ['name'] },\n    categoryId: { label: '合同分类' },\n    amount: {\n      label: '合同金额',\n      source: 'amountCent',\n      fromForm: formConverters.minorToMajor,\n      toForm: formConverters.majorToMinor,\n      validate: (value) => Number(value) >= 0 || '合同金额不能小于 0',\n    },\n    description: { label: '合同描述' },\n  },\n})\n\nfunction saveForm() {\n  // 这里只收到用户已经确认应用后的提交请求，仍由业务系统执行最终保存。\n}\n</script>\n\n<template>\n  <AiFormAssistant\n    api-base-url=\"http://127.0.0.1:13060\"\n    agent-id=\"2079080349952217090\"\n    agent-code=\"contract-form-assistant\"\n    chat-key=\"从智能体发布配置中获取\"\n    scene-code=\"CONTRACT_FORM\"\n    :record-id=\"route.params.id || ''\"\n    biz-type=\"销售合同\"\n    :adapter=\"adapter\"\n    :context-params=\"{ userId: currentUser.id, businessToken: shortLivedToken }\"\n    @save-request=\"saveForm\"\n  />\n</template>\n```\n\n编辑页面传入 `recordId` 后操作类型默认为 `UPDATE`；新建页面不传时默认为 `CREATE`。\n默认会话隔离键由 `sceneCode + userId + recordId` 组成，也可以通过 `sessionScope` 显式指定。\n\n### AiFormAssistant 事件\n\n| 事件 | 触发时机 |\n|------|----------|\n| `patch-proposed` | 本轮补丁合并完成并展示确认框 |\n| `patch-applied` | 用户确认且字段校验、回填成功 |\n| `patch-rejected` | 用户取消本次回填 |\n| `save-request` | 用户确认回填且智能体明确请求提交；宿主仍需执行最终保存 |\n| `error` | 认证、流式请求、校验或回填失败 |\n\n### 方式二：按需引入组件\n\n```vue\n<script setup>\nimport { FormAgentChat } from '@baoyog/agent-vue3'\nimport '@baoyog/agent-vue3/style.css'\n</script>\n\n<template>\n  <FormAgentChat\n    :api-base-url=\"apiUrl\"\n    :agent-code=\"code\"\n    :token=\"token\"\n    :biz-type=\"bizType\"\n  />\n</template>\n```\n\n### 方式三：仅使用 composable\n\n```ts\nimport { useAgentStream } from '@baoyog/agent-vue3'\n\nconst { running, assistantText, toolCalls, run, stop } = useAgentStream({\n  apiBaseUrl: 'http://127.0.0.1:13060',\n  token: 'your-token',\n})\n\nawait run({\n  agentCode: 'form_agent_001',\n  threadId: 'thread_xxx',\n  messages: [{ id: '1', role: 'user', content: '你好' }],\n})\n```\n\n## Props\n\n| 属性 | 类型 | 默认值 | 说明 |\n|------|------|--------|------|\n| `apiBaseUrl` | `string` | **必填** | 后端 API 地址 |\n| `agentCode` | `string` | **必填** | 智能体编码 |\n| `token` | `string` | `''` | AI 平台 Bearer Token；通常使用 chatKey 即可 |\n| `chatKey` | `string` | - | 静默换取 AI 平台运行 Token |\n| `agentId` | `string` | - | 创建持久会话所需的智能体数据库 ID |\n| `sessionScope` | `string` | - | 会话隔离标识，适用于同一智能体处理不同业务记录 |\n| `contextParams` | `object` | `{}` | 请求级业务上下文，仅建议传短期凭证 |\n| `contextProvider` | `function` | - | 每次发送前动态读取业务上下文 |\n| `tokenHeader` | `string` | `'Authorization'` | token 请求头名 |\n| `bizType` | `string` | - | 业务类型，会自动生成初始消息 |\n| `title` | `string` | `'智能体助手'` | 面板标题 |\n| `placeholder` | `string` | `'请输入消息，按 Enter 发送...'` | 输入框提示 |\n| `collapsed` | `boolean` | `false` | 是否默认折叠为悬浮按钮 |\n\n## 暴露方法 (defineExpose)\n\n| 方法 | 说明 |\n|------|------|\n| `send()` | 发送当前输入的消息 |\n| `stop()` | 中止当前流式请求 |\n| `clearChat()` | 清空所有消息，重置会话 |\n| `startWithBizType()` | 以 bizType 为初始消息启动对话 |\n\n## 表单事件\n\n- `form-patch`：智能体调用 `propose_form_patch` 后触发，宿主页面可以预览并回填字段。\n- `submit-request`：用户明确要求提交时触发。插件不会自行提交，宿主页面必须再次确认并调用自己的业务接口。\n- `error`：初始化、流式请求或表单事件解析失败。\n\n宿主系统应把 `form-patch.values` 合并进自己的表单模型，并使用自己的校验器再次校验。不要把业务系统长期 Token、刷新 Token放入 `contextParams`。\n\n## 本地开发\n\n```bash\ncd baoyog-ai-vue3-plugin\nnpm install\nnpm run dev      # 启动 demo（端口 3200）\nnpm run build    # 构建产物到 dist/\n```\n\n## 通信协议\n\n插件通过 `POST /api/runtime/agui/run/{agentCode}` 发起 SSE 流式请求，响应遵循 AgentScope SSE 事件协议：\n\n- `TEXT_MESSAGE_START / TEXT_MESSAGE_CONTENT` — AI 回复文本\n- `REASONING_MESSAGE_*` — 推理思考过程\n- `TOOL_CALL_START / TOOL_CALL_ARGS / TOOL_CALL_RESULT` — 工具调用\n- `RUN_FINISHED` — 执行完成\n- `RUN_ERROR` — 执行失败\n","readmeFilename":"README.md"}