@customize-agent/server 4.60.1 → 4.60.3
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/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +128 -81
- package/.next/prerender-manifest.json +3 -3
- package/.next/required-server-files.json +1 -1
- package/.next/routes-manifest.json +22 -0
- package/.next/server/chunks/1243.js +1 -1
- package/.next/server/chunks/1936.js +2 -2
- package/.next/server/chunks/2328.js +1 -1
- package/.next/server/chunks/4683.js +142 -0
- package/.next/server/chunks/5304.js +1 -1
- package/.next/server/chunks/6321.js +1 -1
- package/.next/server/chunks/6822.js +1 -0
- package/.next/server/chunks/8204.js +1 -1
- package/.next/server/chunks/9399.js +1 -0
- package/.next/server/chunks/9666.js +59 -58
- package/.next/server/instrumentation.js +1 -1
- package/.next/server/instrumentation.js.nft.json +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages/api/documents/export.js +2 -2
- package/.next/server/pages/api/documents/export.js.nft.json +1 -1
- package/.next/server/pages/api/documents/generate/preview.js +1 -1
- package/.next/server/pages/api/documents/generate.js +1 -1
- package/.next/server/pages/api/health.js +1 -1
- package/.next/server/pages/api/kb/files/detail.js +1 -1
- package/.next/server/pages/api/kb/files/source-preview.js +1 -1
- package/.next/server/pages/canvas/[id].html +1 -1
- package/.next/server/pages/canvas.html +1 -1
- package/.next/server/pages/documents.html +1 -1
- package/.next/server/pages/guide.html +1 -1
- package/.next/server/pages/index.html +1 -1
- package/.next/server/pages/knowledge/file-detail.html +1 -1
- package/.next/server/pages/knowledge/files.html +1 -1
- package/.next/server/pages/knowledge/manage.html +1 -1
- package/.next/server/pages/knowledge/source-preview.html +1 -1
- package/.next/server/pages/knowledge.html +1 -1
- package/.next/server/pages/models.html +1 -1
- package/.next/server/pages/overview.html +1 -1
- package/.next/server/pages/prompt.html +1 -1
- package/.next/server/pages/settings.html +1 -1
- package/.next/server/pages/skills/[id]/edit.html +1 -0
- package/.next/server/pages/skills/[id]/edit.js.nft.json +1 -0
- package/.next/server/pages/skills/[id].html +1 -0
- package/.next/server/pages/skills/[id].js.nft.json +1 -0
- package/.next/server/pages/skills/new.html +1 -0
- package/.next/server/pages/skills/new.js.nft.json +1 -0
- package/.next/server/pages/skills.html +1 -1
- package/.next/server/pages/system/logs.html +1 -1
- package/.next/server/pages-manifest.json +37 -34
- package/.next/static/7ea0ee326182fc159e629b4cd9354c5c800c7d5e156fcd6533182444b20d26cf/_buildManifest.js +1 -0
- package/.next/static/chunks/{511-75b881093a3e908b.js → 127-7d37d37dab02bd10.js} +1 -1
- package/.next/static/chunks/162-a5be07e04aedf98a.js +8 -0
- package/.next/static/chunks/2-8570cd2beee4da6e.js +1 -0
- package/.next/static/chunks/257-3ea888b096943bc8.js +1 -0
- package/.next/static/chunks/280-3ce590d421b5c47d.js +16 -0
- package/.next/static/chunks/318-ca122b774ea4ee84.js +1 -0
- package/.next/static/chunks/324-650dc02536b071bf.js +4 -0
- package/.next/static/chunks/338-19ccbaec57a7bf9c.js +4 -0
- package/.next/static/chunks/425-42f2568bcdd98f4c.js +1 -0
- package/.next/static/chunks/499-2233cadc6d4da647.js +10 -0
- package/.next/static/chunks/530-a5a65dc8adb1ee11.js +1 -0
- package/.next/static/chunks/564-d3426eef3e3e415b.js +4 -0
- package/.next/static/chunks/576-6699fed6c88502fe.js +1 -0
- package/.next/static/chunks/579-fc0a2eb64aedb001.js +1 -0
- package/.next/static/chunks/665-0634aa49137defc4.js +1 -0
- package/.next/static/chunks/{426-22c4cedb04b0d45d.js → 711-40c1a2dbd15c2807.js} +6 -6
- package/.next/static/chunks/781-a6b83dbcd1a33cab.js +1 -0
- package/.next/static/chunks/{795-48065c56c3b80339.js → 795-1c1cb3bf1f600e99.js} +1 -1
- package/.next/static/chunks/{665-9607db8f8b43e52e.js → 808-0506edc7454b5c0e.js} +1 -1
- package/.next/static/chunks/819-96247c9054ad9683.js +1 -0
- package/.next/static/chunks/964-569c27befeaff602.js +78 -0
- package/.next/static/chunks/pages/{_app-c11b5e8072f49bcc.js → _app-10f13111671af8a4.js} +15 -15
- package/.next/static/chunks/pages/canvas/[id]-534b45f39f39630c.js +1 -0
- package/.next/static/chunks/pages/canvas-ffb08963e5cf9558.js +1 -0
- package/.next/static/chunks/pages/{guide-a8eecc6c02b5bb9c.js → guide-82ae330966139191.js} +1 -1
- package/.next/static/chunks/pages/knowledge/file-detail-4ccc50ced6382dab.js +1 -0
- package/.next/static/chunks/pages/knowledge/source-preview-56ce59763fa015db.js +1 -0
- package/.next/static/chunks/pages/knowledge-84e386d765ddd311.js +1 -0
- package/.next/static/chunks/pages/models-5eee2d09deb081fb.js +1 -0
- package/.next/static/chunks/pages/prompt-f00bf2272142bfa1.js +1 -0
- package/.next/static/chunks/pages/{settings-81dffd92939c1d36.js → settings-f6dfff648cf9ac0e.js} +1 -1
- package/.next/static/chunks/pages/skills/[id]/edit-89bbed9a3a854b04.js +1 -0
- package/.next/static/chunks/pages/skills/[id]-101d753aa8fbf7a9.js +1 -0
- package/.next/static/chunks/pages/skills/new-124599c772150a1d.js +1 -0
- package/.next/static/chunks/pages/skills-476714776be63ce5.js +1 -0
- package/.next/static/chunks/pages/system/logs-40edb648d89b0749.js +1 -0
- package/.next/static/css/{ad5a592c79d1448b.css → 2da1c822e3bdb4bb.css} +1 -1
- package/.next/static/css/e67420f8d0ea180d.css +1 -0
- package/messages/en-US.json +5 -1
- package/messages/zh-CN.json +5 -1
- package/package.json +1 -1
- package/public/apple-touch-icon.png +0 -0
- package/public/favicon.ico +0 -0
- package/public/favicon.svg +7 -0
- package/scripts/generate-brand-assets.cjs +109 -0
- package/.next/server/chunks/7848.js +0 -141
- package/.next/static/chunks/127-20f09f6ebe1e6c1f.js +0 -1
- package/.next/static/chunks/174-1bc48f295d7dd075.js +0 -10
- package/.next/static/chunks/189-3f4f4e237056adaf.js +0 -4
- package/.next/static/chunks/269-7a3502478bf67fff.js +0 -11
- package/.next/static/chunks/278-31fbe7e1b733a9b7.js +0 -1
- package/.next/static/chunks/310-6c678cb70e4ba2d6.js +0 -19
- package/.next/static/chunks/530-d9f0418ec7ab040f.js +0 -1
- package/.next/static/chunks/700-5d29b0475311f590.js +0 -1
- package/.next/static/chunks/709-a7c652953ccd3b4b.js +0 -1
- package/.next/static/chunks/823-ff35afb174f7998b.js +0 -1
- package/.next/static/chunks/835-d29f4cc7a3679606.js +0 -1
- package/.next/static/chunks/873-16d052cdd3768758.js +0 -1
- package/.next/static/chunks/914-292edce0ba2a212d.js +0 -1
- package/.next/static/chunks/964-7e9fe2d80a53aeee.js +0 -78
- package/.next/static/chunks/992-8032f477230baaaf.js +0 -1
- package/.next/static/chunks/pages/canvas/[id]-37bee3f7b816ed18.js +0 -1
- package/.next/static/chunks/pages/canvas-97971ae159337676.js +0 -1
- package/.next/static/chunks/pages/knowledge/file-detail-f89e6044f752277c.js +0 -1
- package/.next/static/chunks/pages/knowledge/source-preview-4a303fadb123430a.js +0 -1
- package/.next/static/chunks/pages/knowledge-a65ec687334ffed0.js +0 -1
- package/.next/static/chunks/pages/models-3e486e49cca91e5a.js +0 -1
- package/.next/static/chunks/pages/prompt-b8af2cef904e3e19.js +0 -1
- package/.next/static/chunks/pages/skills-77ba363270239bbf.js +0 -1
- package/.next/static/chunks/pages/system/logs-1f54b6c8791daa77.js +0 -1
- package/.next/static/css/1a59bfb0aa677e69.css +0 -1
- package/.next/static/d863db1ff37d0934ebbb671f5c8dc07e5943c77d9b554215ce9e64fd8dc26727/_buildManifest.js +0 -1
- /package/.next/static/{d863db1ff37d0934ebbb671f5c8dc07e5943c77d9b554215ce9e64fd8dc26727 → 7ea0ee326182fc159e629b4cd9354c5c800c7d5e156fcd6533182444b20d26cf}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 站点图标生成(2026-10-13):从**品牌月亮组件**里读形状,写出
|
|
3
|
+
* `public/favicon.svg`、`public/favicon.ico`、`public/apple-touch-icon.png`。
|
|
4
|
+
*
|
|
5
|
+
* ## 为什么要有这个脚本(而不是手放三个文件)
|
|
6
|
+
* 用户口径是「我们网站的 icon 也需要使用这个图标」——同一轮月亮的**三份格式**。
|
|
7
|
+
* 手工放三个文件的下场是可预期的:改了侧栏的月亮,图标还是上一版的(本仓对"两处各一份"的
|
|
8
|
+
* 那一类漂移有过太多次教训)。故:形状只有 `src/components/BrandMoon.tsx` 一个来源,
|
|
9
|
+
* 本脚本从那个文件里读 `BRAND_MOON_PATH` 与 `BRAND_MOON_ROTATION`,现场渲染出全部图标。
|
|
10
|
+
*
|
|
11
|
+
* ## 跑法(改了月亮形状就跑一次,并把三个产物一起提交)
|
|
12
|
+
* ```
|
|
13
|
+
* cd apps/server && node scripts/generate-brand-assets.cjs
|
|
14
|
+
* ```
|
|
15
|
+
* 渲染用 `@napi-rs/canvas`(本身就是本包的依赖,不再引浏览器/图形工具链)。
|
|
16
|
+
* ICO 按 PNG 载荷直出(`favicon.ico` = 6 字节头 + 每尺寸 16 字节目录项 + PNG 数据)——
|
|
17
|
+
* 现代浏览器都吃这种 ICO,且不必再引一个 ico 编码库。
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
const fs = require('node:fs');
|
|
21
|
+
const path = require('node:path');
|
|
22
|
+
const { createCanvas, Path2D } = require('@napi-rs/canvas');
|
|
23
|
+
|
|
24
|
+
const SERVER_ROOT = path.resolve(__dirname, '..');
|
|
25
|
+
const COMPONENT = path.join(SERVER_ROOT, 'src/components/BrandMoon.tsx');
|
|
26
|
+
const PUBLIC_DIR = path.join(SERVER_ROOT, 'public');
|
|
27
|
+
|
|
28
|
+
/** 从组件源码里取形状常量(TS 文件带类型注解,正则取字符串字面量即可,不必上编译器) */
|
|
29
|
+
function readBrandShape() {
|
|
30
|
+
const source = fs.readFileSync(COMPONENT, 'utf8');
|
|
31
|
+
const d = /BRAND_MOON_PATH\s*=\s*'([^']+)'/.exec(source)?.[1];
|
|
32
|
+
const rotation = Number(/BRAND_MOON_ROTATION\s*=\s*(-?\d+)/.exec(source)?.[1]);
|
|
33
|
+
if (!d || !Number.isFinite(rotation)) {
|
|
34
|
+
throw new Error(`${COMPONENT} 里找不到 BRAND_MOON_PATH / BRAND_MOON_ROTATION(脚本的正则口径失效了)`);
|
|
35
|
+
}
|
|
36
|
+
return { d, rotation };
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* 画一枚图标:**深色圆角方块 + 白色细弯月**(用户选定的形态:
|
|
41
|
+
* 「黑底圆角方块 + 白弯月,暗色下自动反色」)。
|
|
42
|
+
* 深色用 `#111`(与侧栏那个方块同一个色:全局样式里是 `bg-black`,纯黑在深色屏幕上会糊边,
|
|
43
|
+
* 这里取近黑,观感一致且边缘干净)。
|
|
44
|
+
*/
|
|
45
|
+
function renderIcon({ d, rotation }, size, { background = '#111111', moon = '#ffffff', radiusRatio = 0.24, insetRatio = 0.78 } = {}) {
|
|
46
|
+
const canvas = createCanvas(size, size);
|
|
47
|
+
const ctx = canvas.getContext('2d');
|
|
48
|
+
if (background) {
|
|
49
|
+
ctx.fillStyle = background;
|
|
50
|
+
ctx.beginPath();
|
|
51
|
+
ctx.roundRect(0, 0, size, size, size * radiusRatio);
|
|
52
|
+
ctx.fill();
|
|
53
|
+
}
|
|
54
|
+
const box = size * insetRatio;
|
|
55
|
+
const k = box / 24;
|
|
56
|
+
ctx.save();
|
|
57
|
+
ctx.translate(size / 2, size / 2);
|
|
58
|
+
ctx.rotate((rotation * Math.PI) / 180);
|
|
59
|
+
ctx.scale(k, k);
|
|
60
|
+
ctx.translate(-12, -12);
|
|
61
|
+
ctx.fillStyle = moon;
|
|
62
|
+
ctx.fill(new Path2D(d));
|
|
63
|
+
ctx.restore();
|
|
64
|
+
return canvas.toBuffer('image/png');
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/** 单张 PNG 装进 ICO 容器(ICONDIR + ICONDIRENTRY + PNG 载荷) */
|
|
68
|
+
function buildIco(entries) {
|
|
69
|
+
const header = Buffer.alloc(6);
|
|
70
|
+
header.writeUInt16LE(0, 0); // reserved
|
|
71
|
+
header.writeUInt16LE(1, 2); // type: 1 = icon
|
|
72
|
+
header.writeUInt16LE(entries.length, 4);
|
|
73
|
+
const dir = Buffer.alloc(16 * entries.length);
|
|
74
|
+
let offset = 6 + dir.length;
|
|
75
|
+
entries.forEach((entry, index) => {
|
|
76
|
+
const at = index * 16;
|
|
77
|
+
dir.writeUInt8(entry.size >= 256 ? 0 : entry.size, at); // 宽(256 记 0)
|
|
78
|
+
dir.writeUInt8(entry.size >= 256 ? 0 : entry.size, at + 1); // 高
|
|
79
|
+
dir.writeUInt8(0, at + 2); // 调色板数
|
|
80
|
+
dir.writeUInt8(0, at + 3); // 保留
|
|
81
|
+
dir.writeUInt16LE(1, at + 4); // 颜色平面
|
|
82
|
+
dir.writeUInt16LE(32, at + 6); // 位深
|
|
83
|
+
dir.writeUInt32LE(entry.png.length, at + 8);
|
|
84
|
+
dir.writeUInt32LE(offset, at + 12);
|
|
85
|
+
offset += entry.png.length;
|
|
86
|
+
});
|
|
87
|
+
return Buffer.concat([header, dir, ...entries.map(entry => entry.png)]);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/** SVG 版图标:现代浏览器优先用它(矢量、任意缩放都锐利) */
|
|
91
|
+
function buildSvg({ d, rotation }, { background = '#111111', moon = '#ffffff', radiusRatio = 0.24, insetRatio = 0.78 } = {}) {
|
|
92
|
+
const box = 24 * insetRatio;
|
|
93
|
+
const scale = box / 24;
|
|
94
|
+
return `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" role="img" aria-label="Customize Agent">
|
|
95
|
+
<!-- 由 scripts/generate-brand-assets.cjs 从 src/components/BrandMoon.tsx 生成,勿手改 -->
|
|
96
|
+
<rect width="24" height="24" rx="${(24 * radiusRatio).toFixed(2)}" fill="${background}"/>
|
|
97
|
+
<g transform="translate(12 12) rotate(${rotation}) scale(${scale.toFixed(4)}) translate(-12 -12)">
|
|
98
|
+
<path d="${d}" fill="${moon}"/>
|
|
99
|
+
</g>
|
|
100
|
+
</svg>
|
|
101
|
+
`;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
const shape = readBrandShape();
|
|
105
|
+
fs.writeFileSync(path.join(PUBLIC_DIR, 'favicon.svg'), buildSvg(shape));
|
|
106
|
+
const icoSizes = [16, 32, 48];
|
|
107
|
+
fs.writeFileSync(path.join(PUBLIC_DIR, 'favicon.ico'), buildIco(icoSizes.map(size => ({ size, png: renderIcon(shape, size) }))));
|
|
108
|
+
fs.writeFileSync(path.join(PUBLIC_DIR, 'apple-touch-icon.png'), renderIcon(shape, 180, { radiusRatio: 0.22, insetRatio: 0.74 }));
|
|
109
|
+
console.log(`[brand] 已生成 favicon.svg / favicon.ico(${icoSizes.join(',')}) / apple-touch-icon.png(形状来自 ${path.relative(SERVER_ROOT, COMPONENT)})`);
|