@waterplus-ai/waterbuddy 0.2.8 → 0.2.10
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/lib/client/index.js +44 -27
- package/lib/host/index.js +3 -1
- package/package.json +1 -1
package/lib/client/index.js
CHANGED
|
@@ -4,42 +4,51 @@ window.__ModuleLoader__.load({
|
|
|
4
4
|
const { Fragment, jsx, jsxs } = require('react/jsx-runtime')
|
|
5
5
|
const module = { exports: {} }
|
|
6
6
|
const exports = module.exports
|
|
7
|
-
const mark = 'data:image/png;base64,
|
|
8
|
-
const wordmark = 'data:image/png;base64,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'
|
|
7
|
+
const mark = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAADe0lEQVR42tVa25WjMAylhHSwlJAOlg4mHWQ6yFYQnD37n+2A7SAlUAIlUAINLOPxI4AfGMvCJiHn+CeDia8lXV1Jk2VbfEj/NyP0ztYh2/2H9L+y8os+V7NvUITmChgVVL5XMO0MICq+3x0o8vVwgNkhKNITD5gdgSL0EwhmB6Bk3HSBgN4YlJsEIOvNKB0eNzsAFR43C6uv3jFuuqf7qQsOisukF4E5ZFdaZjd6Yesj+0N/LLoMoUfxXMkO7AN5ZS78Jkx3FAClGGXJldbj4t/d6HlkNP5sSSsnKP7sS6xE6EkePoSyGcDhwMJtZ4F1AvR2QASzdSuJoB3ddF7/temZLw4Q1bU+9IuydGCdktGaSEAaQQ4DGO5aqlq49v905mN1VfRgj2MVKXMILZ7kUSvvbbXftECxPXHA/I+YOBeJ4m7FqR5TEeIJZpkOlUDFvqfbSbYsLCvI31fyE8t7iapOGay/6U97jzO31CMAkWAFLd8Nt9NJQohekYhVKs+xgCpnHJhA/PquEd/NAdAtXVsHlq7XKQRRYcB8rq5dbsw9vATBDifJ4TiSBeRdwbE072phhZh5s3osXBSZVBkud3G8CxlLLutgfDc8b7kvjfAYVJ5bdwhknSLjBZJgz1434pZT93J1j2wOUrRItF1XAuCkoidYf6vYdLs51/TeQrB5nW3giaEmpqPBB1S9B8R2sgxY727h6gJGOETLSQ0ufkCmVVyWLBRtroQLTwWXMM/BVo64+qgOrkp5Mam+IwkgHthwIBMp4LVlQkD+fpwuQGOPaACAOq+sh4FpLZGZYuaEzOwPcL5auoA4gIowUtBpcXIbaB87detJJ4UassGl4wrHLemCM/VHU90QTzDlxdzmWStu1JNWFQY4RnVVq1aKB6fg3KohiFL/bpcqHcTRvWDK0QRudlqJ9wzabRqBi+52XkOPRqPDslAd4bD5eGAukM0kbJIVqlFSzlI4nZ0HrQdULQpiLU1gCchu9C0NqYqVgB4GoNKhSFYOmKGTbbKStnXmbJUZkq6usaIW1dfGqoRJRun9PvN3o6oQfxd1YMETgnxaawKugwl/LxwUoBqVfYPcC2Rys4cB5qSAqdP/U4ak0BY0dpRz1WGwXBpNxc7SfxMB1HHiJRwYZgAmiz715rmFBuAv/+eLsaUrRomNQSBy1CL+Nvbjkh34G5HzneIGdG4+AAAAAElFTkSuQmCC'
|
|
9
8
|
|
|
9
|
+
// 展开态品牌 logo 的高度。宿主 .logoRow 内容区高 44px(60 - 上下 8),
|
|
10
|
+
// 原来跟着槽位 size(24)显小;32 保持整图比例又留出呼吸空间。
|
|
11
|
+
const BRAND_LOGO_HEIGHT = 32
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* 侧栏品牌标记。宿主在两个上下文调用同一个槽位:
|
|
15
|
+
* - 展开态:品牌行左侧(.brandMark,无固定尺寸)→ 直接渲染**整张官方 logo**
|
|
16
|
+
* (水印与文字是一体的,不能拆);
|
|
17
|
+
* - 收起态:24px 宽的图标轨道(.railMark)→ 横版 logo 放不下,改用同源的方版水印。
|
|
18
|
+
* 两张图常驻,由 CSS 按祖先类名切换(见 register 里的样式注入)。
|
|
19
|
+
*/
|
|
10
20
|
function WaterBuddyMark({ size, className }) {
|
|
11
|
-
return
|
|
12
|
-
src: mark,
|
|
13
|
-
width: size,
|
|
14
|
-
height: size,
|
|
21
|
+
return jsxs('span', {
|
|
15
22
|
className,
|
|
16
|
-
|
|
23
|
+
style: { display: 'inline-flex', alignItems: 'center' },
|
|
24
|
+
children: [
|
|
25
|
+
jsx('img', {
|
|
26
|
+
'data-wb-logo': 'full',
|
|
27
|
+
src: SSO.image,
|
|
28
|
+
alt: 'WaterPlus AI',
|
|
29
|
+
style: { display: 'block', height: BRAND_LOGO_HEIGHT, width: 'auto' },
|
|
30
|
+
}),
|
|
31
|
+
jsx('img', {
|
|
32
|
+
'data-wb-logo': 'mark',
|
|
33
|
+
src: mark,
|
|
34
|
+
width: size,
|
|
35
|
+
height: size,
|
|
36
|
+
alt: 'WaterPlus AI',
|
|
37
|
+
}),
|
|
38
|
+
],
|
|
17
39
|
})
|
|
18
40
|
}
|
|
19
41
|
|
|
20
42
|
function WaterBuddyName() {
|
|
21
|
-
//
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
jsx('strong', {
|
|
25
|
-
style: {
|
|
26
|
-
color: '#1677d2',
|
|
27
|
-
fontSize: 18,
|
|
28
|
-
fontWeight: 700,
|
|
29
|
-
letterSpacing: '-.02em',
|
|
30
|
-
lineHeight: '24px',
|
|
31
|
-
whiteSpace: 'nowrap',
|
|
32
|
-
},
|
|
33
|
-
children: 'WaterPlusAI',
|
|
34
|
-
}),
|
|
35
|
-
],
|
|
36
|
-
})
|
|
43
|
+
// 官方 logo 自带文字(见 WaterBuddyMark),这里不再渲染品牌名;
|
|
44
|
+
// 空的品牌名容器由 CSS `:empty` 收掉,避免 logo 后面多出一段空白。
|
|
45
|
+
return null
|
|
37
46
|
}
|
|
38
47
|
|
|
39
48
|
const SSO = {
|
|
40
49
|
title: '水务之窗',
|
|
41
50
|
clientId: '2CC7F925-07AE-4AB9-9F17-75B7378D5890',
|
|
42
|
-
image: 'https://ai.shuiwujia.com/swj-
|
|
51
|
+
image: 'https://ai.cdn.shuiwujia.com/waterPlusAI/swj-logo.png',
|
|
43
52
|
}
|
|
44
53
|
|
|
45
54
|
function userName(user) {
|
|
@@ -593,14 +602,13 @@ window.__ModuleLoader__.load({
|
|
|
593
602
|
// 底栏已成一行后这里可以放宽:行宽 = 卡片 + 设置区,两者都是 auto 且有 wrap 兜底,
|
|
594
603
|
// 放宽只是让「水务之窗」这类副标题显示完整;真放不下也只会换行,不会裁掉东西。
|
|
595
604
|
style: { display: 'flex', alignItems: 'center', gap: 6, minWidth: 0, width: wide ? 'auto' : 40, maxWidth: wide ? 124 : 40, minHeight: 38, padding: wide ? '5px 9px 5px 6px' : 3, border: user ? '1px solid #e1eafa' : '1px solid transparent', borderRadius: 12, background: user ? '#f5f8ff' : 'transparent', color: 'var(--dsw-text-secondary, #586174)', cursor: 'pointer', textAlign: 'left', transition: 'background .15s ease, border-color .15s ease' },
|
|
596
|
-
children: [user ? jsx(UserAvatar, { user, size: 28 }) : jsx('img', { src:
|
|
605
|
+
children: [user ? jsx(UserAvatar, { user, size: 28 }) : jsx('img', { src: mark, alt: 'WaterPlusAI', style: { width: 28, height: 28, borderRadius: 8, objectFit: 'contain', padding: 2, boxSizing: 'border-box', flex: '0 0 auto', background: '#fff', border: '1px solid #dce9fb' } }), wide ? jsxs('span', { style: { minWidth: 0, display: 'grid', gap: 1 }, children: [jsx('strong', { style: { overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap', fontSize: 12.5, lineHeight: '16px', color: 'var(--dsw-text-primary, #1f2937)' }, children: user ? name : SSO.title }), jsx('small', { style: { overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap', color: exhausted ? '#b45309' : '#8a94a6', fontSize: 10.5, lineHeight: '14px' }, children: subtitle })] }) : null],
|
|
597
606
|
}),
|
|
598
607
|
open ? jsx('div', { style: { position: 'fixed', inset: 0, zIndex: 1000, background: 'rgba(15, 23, 42, .42)', backdropFilter: 'blur(5px)', display: 'flex', alignItems: 'center', justifyContent: 'center', padding: 16 }, onClick: event => { if (event.target === event.currentTarget) setOpen(false) }, children: jsx('div', { style: { width: 420, maxWidth: 'calc(100vw - 32px)', borderRadius: 22, background: '#fff', overflow: 'hidden', boxShadow: '0 24px 80px rgba(15,23,42,.28)' }, children: user ? userPanel() : jsxs('div', { children: [
|
|
599
608
|
jsxs('div', { style: { position: 'relative', padding: '22px 26px 0', textAlign: 'center' }, children: [
|
|
600
609
|
// 与已登录面板同一个坑:标题/说明是整行宽的块级元素,必须靠 z-index 让按钮稳定在上。
|
|
601
610
|
jsx('button', { type: 'button', onClick: () => setOpen(false), 'aria-label': '关闭', style: { position: 'absolute', zIndex: 1, top: 14, right: 16, width: 30, height: 30, border: 0, borderRadius: '50%', background: '#f1f5f9', color: '#64748b', fontSize: 20, lineHeight: 1, cursor: 'pointer' }, children: '×' }),
|
|
602
|
-
jsx('img', { src: SSO.image, alt:
|
|
603
|
-
jsx('h3', { style: { margin: '10px 0 4px', color: '#162033', fontSize: 21 }, children: 'WaterPlusAI' }),
|
|
611
|
+
jsx('img', { src: SSO.image, alt: 'WaterPlusAI', style: { display: 'block', width: 188, height: 'auto', margin: '0 auto' } }),
|
|
604
612
|
jsx('p', { style: { margin: 0, color: '#7b8799', fontSize: 12.5 }, children: '登录后同步水务之窗账号与知识库权限' }),
|
|
605
613
|
exhausted ? jsx('div', { style: { margin: '14px 26px 0', padding: '10px 12px', borderRadius: 10, background: '#fff7ed', border: '1px solid #fed7aa', color: '#b45309', fontSize: 12.5, lineHeight: 1.5 }, children: '试用额度已用完,登录后即可继续使用(额度升为账号档)' }) : null,
|
|
606
614
|
] }),
|
|
@@ -1610,6 +1618,15 @@ window.__ModuleLoader__.load({
|
|
|
1610
1618
|
// 结论:底栏的容器结构、子元素宽度基准都由宿主决定,插件侧改不动它——第五次尝试
|
|
1611
1619
|
// 仍在用户机器上失败,说明我用的观测(本机会话)与桌面端真实 DOM 不一致,
|
|
1612
1620
|
// 再试只是继续拿用户的界面做实验。改底栏请改宿主的 ui-sidebar。
|
|
1621
|
+
// 品牌区:展开态显示整张官方 logo,收起轨道保留方版水印;
|
|
1622
|
+
// 宿主类名是 `<hash>_<名字>`(如 nnLAcG_railMark),所以必须用子串匹配
|
|
1623
|
+
// `[class*=...]`;写成 `[class$=...]` 一条都不会生效。
|
|
1624
|
+
// 品牌名槽位不再渲染文字,空壳用 :empty 收掉。
|
|
1625
|
+
'[class*="railMark"] [data-wb-logo="full"]{display:none!important}',
|
|
1626
|
+
'[class*="brandMark"] [data-wb-logo="mark"]{display:none!important}',
|
|
1627
|
+
'[class*="brandName"]:empty{display:none!important}',
|
|
1628
|
+
// 宿主的品牌行写死 height:24px,会把 32px 的整图夹在中间;放开它(外层 .logoRow 仍有 44px 上限)。
|
|
1629
|
+
'[class*="brandIdentity"]{height:auto!important}',
|
|
1613
1630
|
].join('')
|
|
1614
1631
|
document.head.append(style)
|
|
1615
1632
|
return () => { style.remove() }
|
package/lib/host/index.js
CHANGED
|
@@ -8,7 +8,9 @@ import { createExpertToolDefinitions } from './expert-tools.js'
|
|
|
8
8
|
import { EXPERT_DIVISIONS, loadExpertCatalog, mergeCustomExperts, readExpertBody, readExpertDetails, resolveExpertAvatar, resolveExpertMemberAvatar } from './experts.js'
|
|
9
9
|
import { bindLlmCredential, describeLlmCredential, ensureLlmCredential, formatBalanceText, isGatewayActive, readActiveProvider, refreshLlmQuota, restoreDeviceLlmCredential, switchDefaultProviderWithRetry } from './llm-gateway.js'
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
// 与客户端侧栏同一个方版 mark(84x84)。此前这里是 1x1 透明占位,导致
|
|
12
|
+
// /waterplus-mark.png、favicon 与 web manifest 的图标全是空白。
|
|
13
|
+
const WATERPLUS_ICON = Buffer.from('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', 'base64')
|
|
12
14
|
const CLIENT_ID = '2CC7F925-07AE-4AB9-9F17-75B7378D5890'
|
|
13
15
|
const PLATFORM_URL = 'https://web.shuiwujia.com'
|
|
14
16
|
const AI_URL = 'https://ai.shuiwujia.com'
|