dsh-compact-saviour 0.2.6
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/ACCEPTANCE.md +16 -0
- package/LICENSE +21 -0
- package/README.md +110 -0
- package/THIRD_PARTY_NOTICES.md +50 -0
- package/cordis.patch.yml +3 -0
- package/cordis.yml +2 -0
- package/docs/development.md +28 -0
- package/dshx.yml +16 -0
- package/lib/client.js +5933 -0
- package/lib/client.js.map +1 -0
- package/lib/dsh-compact-saviour.js +1206 -0
- package/lib/types/client/context-elements.d.ts +6 -0
- package/lib/types/client/context-elements.d.ts.map +1 -0
- package/lib/types/client/context-elements.js +41 -0
- package/lib/types/client/context-elements.js.map +1 -0
- package/lib/types/client/index.d.ts +10 -0
- package/lib/types/client/index.d.ts.map +1 -0
- package/lib/types/client/index.js +217 -0
- package/lib/types/client/index.js.map +1 -0
- package/lib/types/client/meter-bridge.d.ts +12 -0
- package/lib/types/client/meter-bridge.d.ts.map +1 -0
- package/lib/types/client/meter-bridge.js +89 -0
- package/lib/types/client/meter-bridge.js.map +1 -0
- package/lib/types/client/ring-control.d.ts +32 -0
- package/lib/types/client/ring-control.d.ts.map +1 -0
- package/lib/types/client/ring-control.js +191 -0
- package/lib/types/client/ring-control.js.map +1 -0
- package/lib/types/client/satellite.d.ts +32 -0
- package/lib/types/client/satellite.d.ts.map +1 -0
- package/lib/types/client/satellite.js +163 -0
- package/lib/types/client/satellite.js.map +1 -0
- package/lib/types/client/waiting-copy.d.ts +10 -0
- package/lib/types/client/waiting-copy.d.ts.map +1 -0
- package/lib/types/client/waiting-copy.js +31 -0
- package/lib/types/client/waiting-copy.js.map +1 -0
- package/lib/types/compress.d.ts +31 -0
- package/lib/types/compress.d.ts.map +1 -0
- package/lib/types/compress.js +265 -0
- package/lib/types/compress.js.map +1 -0
- package/lib/types/controller.d.ts +31 -0
- package/lib/types/controller.d.ts.map +1 -0
- package/lib/types/controller.js +323 -0
- package/lib/types/controller.js.map +1 -0
- package/lib/types/dsh-compact-saviour.d.ts +10 -0
- package/lib/types/dsh-compact-saviour.d.ts.map +1 -0
- package/lib/types/dsh-compact-saviour.js +104 -0
- package/lib/types/dsh-compact-saviour.js.map +1 -0
- package/lib/types/message-source.d.ts +9 -0
- package/lib/types/message-source.d.ts.map +1 -0
- package/lib/types/message-source.js +2 -0
- package/lib/types/message-source.js.map +1 -0
- package/lib/types/pressure.d.ts +17 -0
- package/lib/types/pressure.d.ts.map +1 -0
- package/lib/types/pressure.js +71 -0
- package/lib/types/pressure.js.map +1 -0
- package/lib/types/shared.d.ts +42 -0
- package/lib/types/shared.d.ts.map +1 -0
- package/lib/types/shared.js +2 -0
- package/lib/types/shared.js.map +1 -0
- package/lib/types/summary-types.d.ts +20 -0
- package/lib/types/summary-types.d.ts.map +1 -0
- package/lib/types/summary-types.js +7 -0
- package/lib/types/summary-types.js.map +1 -0
- package/lib/types/vendor/region.d.ts +65 -0
- package/lib/types/vendor/region.d.ts.map +1 -0
- package/lib/types/vendor/region.js +412 -0
- package/lib/types/vendor/region.js.map +1 -0
- package/package.json +101 -0
- package/scripts/link-harness-dependencies.mjs +41 -0
- package/scripts/normalize-artifacts.mjs +7 -0
- package/src/client/assets.d.ts +1 -0
- package/src/client/context-elements.ts +39 -0
- package/src/client/index.tsx +214 -0
- package/src/client/meter-bridge.ts +65 -0
- package/src/client/ring-control.ts +134 -0
- package/src/client/satellite.ts +121 -0
- package/src/client/style.css +54 -0
- package/src/client/vendor/LICENSE +21 -0
- package/src/client/vendor/open-bot-motion.cjs +1673 -0
- package/src/client/vendor/open-bot-motion.d.cts +9 -0
- package/src/client/waiting-copy.tsx +29 -0
- package/src/compress.ts +210 -0
- package/src/controller.ts +248 -0
- package/src/dsh-compact-saviour.ts +82 -0
- package/src/message-source.ts +4 -0
- package/src/pressure.ts +69 -0
- package/src/shared.ts +13 -0
- package/src/summary-types.ts +11 -0
- package/src/vendor/region.ts +583 -0
- package/tests/compression.test.ts +130 -0
- package/tests/controller.test.ts +279 -0
- package/tests/interaction-fixture.tsx +38 -0
- package/tests/interaction.browser.mjs +201 -0
- package/tests/meter-bridge.browser.mjs +83 -0
- package/tests/motion.test.ts +26 -0
- package/tests/peer-range.test.ts +23 -0
- package/tests/pressure.test.ts +11 -0
- package/tests/transactions.test.ts +56 -0
- package/tsconfig.json +10 -0
- package/tsdown.config.ts +13 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","names":["motion","useState","useRef","useState","createPortal"],"sources":["../src/client/context-elements.ts","../src/client/meter-bridge.ts","../src/client/vendor/open-bot-motion.cjs","../src/client/satellite.ts","../src/client/ring-control.ts","../src/client/waiting-copy.tsx","../src/client/index.tsx"],"sourcesContent":["/** Keep the compatibility bridge local to its composer. RC2 places the meter\n * in the dock outside the card and portals its popup directly to body. */\nexport function contextRoot(anchor: HTMLElement): HTMLElement | undefined {\n return anchor.closest<HTMLElement>('[data-composer-card]')?.parentElement\n ?? anchor.closest<HTMLElement>('[data-slot=\"conversation.input.right\"]')?.parentElement\n ?? undefined;\n}\n\nexport function contextRing(root: HTMLElement): HTMLButtonElement | undefined {\n const matches = [...root.querySelectorAll<HTMLButtonElement>('button[aria-haspopup=\"dialog\"]')]\n .filter(button => button.querySelector('svg[viewBox=\"0 0 14 14\"]')?.querySelectorAll('circle').length === 2);\n return matches.length === 1 ? matches[0] : undefined;\n}\n\nfunction isContextPanel(panel: HTMLElement): boolean {\n const header = panel.firstElementChild;\n return panel.getAttribute('role') === 'dialog' && header?.children.length === 4\n && /^\\d+%$/.test(header.children[1]?.textContent ?? '')\n && (header.children[3]?.textContent ?? '').includes('/')\n && Boolean(header.nextElementSibling);\n}\n\nexport function contextPanel(ring?: HTMLButtonElement): HTMLElement | undefined {\n if (!ring || ring.getAttribute('aria-expanded') !== 'true') return;\n const controlled = ring.getAttribute('aria-controls');\n const linked = controlled ? ring.ownerDocument.getElementById(controlled) : null;\n if (linked && isContextPanel(linked)) return linked;\n const local = ring.parentElement?.querySelector<HTMLElement>('[role=\"dialog\"]');\n if (local && isContextPanel(local)) return local;\n // Upstream provides no aria-controls on the portalled popup. Only attach\n // when both the open meter and matching body portal are unambiguous; never\n // steal another conversation's popup or a model/settings dialog.\n const doc = ring.ownerDocument;\n const openRings = [...doc.querySelectorAll<HTMLButtonElement>('button[aria-haspopup=\"dialog\"][aria-expanded=\"true\"]')]\n .filter(button => button.querySelector('svg[viewBox=\"0 0 14 14\"]')?.querySelectorAll('circle').length === 2);\n if (openRings.length !== 1 || openRings[0] !== ring) return;\n const panels = [...doc.body.children].filter((element): element is HTMLElement => element instanceof HTMLElement && isContextPanel(element));\n return panels.length === 1 ? panels[0] : undefined;\n}\n","import type { ContextView } from '../shared.js';\nimport { contextPanel } from './context-elements.js';\n\nfunction tokens(value: number): string {\n const unit = value >= 1_000_000 ? 1_000_000 : value >= 1_000 ? 1_000 : 1;\n const scaled = value / unit;\n return `${scaled >= 100 || unit === 1 ? Math.round(scaled) : Math.round(scaled * 10) / 10}${unit === 1_000_000 ? 'M' : unit === 1_000 ? 'K' : ''}`;\n}\ntype Owned = { read(): string | null; write(value: string | null): void; before: string | null; last: string | null; desired?: string };\n\n/** Narrow compatibility bridge until DSH exposes a context-meter reading slot.\n * Preserve the original React nodes, styles, handlers and any later owner update. */\nexport class MeterBridge {\n private edits = new Map<Node, Map<string, Owned>>();\n private write(node: Node, key: string, value: string, read: Owned['read'], write: Owned['write']) {\n let fields = this.edits.get(node);\n if (!fields) { fields = new Map(); this.edits.set(node, fields); }\n let field = fields.get(key);\n if (!field) { field = { read, write, before: read(), last: null }; fields.set(key, field); }\n else if (read() !== field.last) field.before = read();\n if (read() !== value && !(field.desired === value && read() === field.last)) write(value);\n field.last = read(); field.desired = value;\n }\n private text(element: Element | null | undefined, value: string) {\n const node = element?.firstChild;\n if (element?.childNodes.length !== 1 || node?.nodeType !== Node.TEXT_NODE) return;\n this.write(node, 'text', value, () => node.nodeValue, v => { node.nodeValue = v; });\n }\n private attr(element: Element, key: string, value: string) {\n this.write(element, key, value, () => element.getAttribute(key), v => { if (v === null) element.removeAttribute(key); else element.setAttribute(key, v); });\n }\n restore() {\n for (const fields of this.edits.values()) for (const edit of fields.values()) if (edit.read() === edit.last) edit.write(edit.before);\n this.edits.clear();\n }\n apply(ring: HTMLButtonElement | undefined, context?: ContextView) {\n if (!ring || !context?.corrected) { this.restore(); return; }\n for (const node of this.edits.keys()) if (!node.isConnected) this.edits.delete(node);\n const percent = Math.max(0, Math.min(100, Math.round(context.usedTokens / context.contextWindow * 100)));\n const reading = `${percent}%`, circumference = 2 * Math.PI * 5.5;\n // RC2 displays a percentage alongside the SVG in the dock.\n const label = [...ring.children].find(child => child.tagName === 'SPAN' && /^\\d+%$/.test(child.textContent ?? ''));\n this.text(label, reading);\n const circles = ring.querySelectorAll('svg[viewBox=\"0 0 14 14\"] circle');\n if (circles.length !== 2) { this.restore(); return; }\n this.attr(circles[1]!, 'stroke-dasharray', `${circumference * percent / 100} ${circumference}`);\n const aria = ring.getAttribute('aria-label');\n if (aria && /\\d+%/.test(aria)) this.attr(ring, 'aria-label', aria.replace(/\\d+%/, reading));\n const tooltipId = ring.getAttribute('aria-describedby');\n const tooltip = tooltipId ? document.getElementById(tooltipId) : null;\n if (tooltip?.getAttribute('role') === 'tooltip') this.text(tooltip, (tooltip.textContent ?? '').replace(/\\d+%/, reading));\n const panel = contextPanel(ring);\n const header = panel?.firstElementChild, bar = header?.nextElementSibling;\n if (!header || header.children.length !== 4 || !bar || !/^\\d+%$/.test(header.children[1]?.textContent ?? '')) return;\n this.text(header.children[1], reading);\n this.text(header.children[3], `~${tokens(context.usedTokens)} / ${tokens(context.contextWindow)}`);\n const parts = context.parts?.filter(value => value > 0), total = parts?.reduce((a, b) => a + b, 0);\n if (parts && total && parts.length === bar.children.length) {\n [...bar.children].forEach((segment, index) => {\n const el = segment as HTMLElement;\n this.write(el, 'width', `${percent * parts[index]! / total}%`, () => el.style.width, value => { el.style.width = value ?? ''; });\n });\n }\n }\n}\n","/**\n * OpenBotMotion v1.0.0\n * Pure Code-Driven Zero-Dependency SVG Mascot Animation Engine (#1 ~ #7)\n *\n * @license MIT\n * @author Open Bot Motion Team\n */\n\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof module === 'object' && module.exports) {\n module.exports = factory();\n } else {\n root.OpenBotMotion = factory();\n }\n}(typeof self !== 'undefined' ? self : this, function () {\n 'use strict';\n\n var CHARCOAL = '#222126';\n var EYE = '#ffffff';\n var LOOP = 20.783;\n\n /* =========================================================================\n 1. Motion Primitives & Math\n ========================================================================= */\n var Easings = {\n linear: function (p) { return p; },\n easeInOutQuad: function (p) {\n return p < 0.5 ? 2 * p * p : 1 - Math.pow(-2 * p + 2, 2) / 2;\n },\n easeOutCubic: function (p) {\n return 1 - Math.pow(1 - p, 3);\n },\n easeInCubic: function (p) {\n return p * p * p;\n },\n easeInOutCubic: function (p) {\n return p < 0.5 ? 4 * p * p * p : 1 - Math.pow(-2 * p + 2, 3) / 2;\n },\n springBouncy: function (p) {\n if (p <= 0) return 0;\n if (p >= 1) return 1;\n var c4 = (2 * Math.PI) / 3;\n return Math.pow(2, -10 * p) * Math.sin((p * 10 - 0.75) * c4) + 1;\n }\n };\n\n function clamp(v, a, b) { return Math.max(a, Math.min(b, v)); }\n function lerp(a, b, t) { return a + (b - a) * t; }\n\n function PoseTimeline(keyframes, options) {\n this.options = Object.assign({\n shortestArc: true,\n shortestArcAngles: ['yaw', 'pitch', 'roll']\n }, options || {});\n\n var self = this;\n this.keyframes = keyframes.map(function (kf) {\n return {\n t: kf.t,\n label: kf.label || '',\n ease: kf.ease || 'easeInOutQuad',\n shortestArc: kf.shortestArc !== undefined ? kf.shortestArc : self.options.shortestArc,\n pose: Object.assign({}, kf.pose)\n };\n }).sort(function (a, b) { return a.t - b.t; });\n\n if (this.options.shortestArc) {\n var angleKeys = this.options.shortestArcAngles;\n for (var k = 0; k < angleKeys.length; k++) {\n var key = angleKeys[k];\n var prevVal = null;\n for (var i = 0; i < this.keyframes.length; i++) {\n var kf = this.keyframes[i];\n if (kf.pose && typeof kf.pose[key] === 'number') {\n if (prevVal !== null && kf.shortestArc !== false) {\n var diff = kf.pose[key] - prevVal;\n if (Math.abs(Math.abs(diff) - Math.PI) > 1e-4) {\n var shortDiff = ((diff + Math.PI) % (2 * Math.PI) + 2 * Math.PI) % (2 * Math.PI) - Math.PI;\n kf.pose[key] = prevVal + shortDiff;\n }\n }\n prevVal = kf.pose[key];\n }\n }\n }\n }\n }\n\n PoseTimeline.prototype.evaluate = function (t) {\n var kfs = this.keyframes;\n if (t <= kfs[0].t) {\n return { pose: Object.assign({}, kfs[0].pose), label: kfs[0].label || '' };\n }\n if (t >= kfs[kfs.length - 1].t) {\n var last = kfs[kfs.length - 1];\n return { pose: Object.assign({}, last.pose), label: last.label || '' };\n }\n\n for (var i = 0; i < kfs.length - 1; i++) {\n var k0 = kfs[i];\n var k1 = kfs[i + 1];\n if (t >= k0.t && t <= k1.t) {\n var dur = k1.t - k0.t;\n var p = dur > 0 ? (t - k0.t) / dur : 1.0;\n var easeFn = Easings[k1.ease || 'easeInOutQuad'] || Easings.easeInOutQuad;\n var ep = easeFn(clamp(p, 0, 1));\n\n var res = {};\n var p0 = k0.pose;\n var p1 = k1.pose;\n var allKeys = new Set(Object.keys(p0).concat(Object.keys(p1)));\n allKeys.forEach(function (key) {\n var isScaleKey = key.indexOf('scale') !== -1 || key.indexOf('Scale') !== -1;\n var defVal = isScaleKey ? 1.0 : 0.0;\n var v0 = p0[key] !== undefined ? p0[key] : (p1[key] !== undefined ? p1[key] : defVal);\n var v1 = p1[key] !== undefined ? p1[key] : (p0[key] !== undefined ? p0[key] : defVal);\n if (typeof v1 === 'number' && typeof v0 === 'number') {\n res[key] = lerp(v0, v1, ep);\n } else if (key === 'visible') {\n res[key] = Boolean(v0 || v1);\n } else {\n res[key] = p >= 0.5 ? v1 : v0;\n }\n });\n return { pose: res, label: k1.label || k0.label || '' };\n }\n }\n return { pose: Object.assign({}, kfs[0].pose), label: '' };\n };\n\n function BlinkTrack(blinks) {\n this.blinks = blinks || [];\n }\n\n BlinkTrack.prototype.evaluate = function (t) {\n for (var i = 0; i < this.blinks.length; i++) {\n var b = this.blinks[i];\n if (t >= b.start && t <= b.start + b.duration) {\n var p = (t - b.start) / b.duration;\n return (b.maxSquint || 0.95) * Math.sin(p * Math.PI);\n }\n }\n return 0.0;\n };\n\n function DotGridRig(spacing, baseRadius) {\n this.spacing = spacing !== undefined ? spacing : 38.0;\n this.baseRadius = baseRadius !== undefined ? baseRadius : 10.1;\n }\n\n DotGridRig.prototype.evaluate = function (t, botScale, botVisible) {\n var dots = [];\n var phase = t * Math.PI * 2 * 0.9 + 0.66;\n var cubeHalf = botVisible ? 68.0 * (botScale || 0.0) : 0.0;\n\n for (var row = -1; row <= 1; row++) {\n for (var col = -1; col <= 1; col++) {\n var diag = (col + 1) + (row + 1);\n var wave = Math.cos(phase - diag * 0.65);\n var r = this.baseRadius + 3.25 * wave;\n var x = col * this.spacing;\n var y = row * this.spacing;\n\n var distBox = Math.max(Math.abs(x), Math.abs(y));\n var visible = true;\n\n if (botVisible && botScale > 0.05) {\n if (distBox < cubeHalf - 4.0) {\n visible = false;\n r = 0.0;\n } else if (distBox < cubeHalf + 10.0) {\n var fade = (distBox - (cubeHalf - 4.0)) / 14.0;\n r *= Math.max(0.0, Math.min(1.0, fade));\n if (r < 0.5) visible = false;\n }\n }\n dots.push({ x: x, y: y, r: r, visible: visible });\n }\n }\n return dots;\n };\n\n /* =========================================================================\n 2. SVG 3D Projector (Minkowski Convex Hull + Face Adherence)\n ========================================================================= */\n function SvgProjector(options) {\n options = options || {};\n this.fov = (options.fov || 28.0) * Math.PI / 180.0;\n this.focalLength = 1.0 / Math.tan(this.fov / 2.0);\n this.camPos = options.cameraPosition || [-0.32, 0.40, 2.70];\n this.camTarget = options.cameraTarget || [0.0, 0.0, 0.0];\n this.viewportSize = options.viewportSize || 280;\n\n var c = this.camPos;\n var tgt = this.camTarget;\n var dist = Math.hypot(tgt[0] - c[0], tgt[1] - c[1], tgt[2] - c[2]);\n this.fwd = [(tgt[0] - c[0]) / dist, (tgt[1] - c[1]) / dist, (tgt[2] - c[2]) / dist];\n\n var up = [0, 1, 0];\n var rx = this.fwd[1] * up[2] - this.fwd[2] * up[1];\n var ry = this.fwd[2] * up[0] - this.fwd[0] * up[2];\n var rz = this.fwd[0] * up[1] - this.fwd[1] * up[0];\n var rlen = Math.hypot(rx, ry, rz);\n this.right = [rx / rlen, ry / rlen, rz / rlen];\n\n var ux = this.right[1] * this.fwd[2] - this.right[2] * this.fwd[1];\n var uy = this.right[2] * this.fwd[0] - this.right[0] * this.fwd[2];\n var uz = this.right[0] * this.fwd[1] - this.right[1] * this.fwd[0];\n this.camUp = [ux, uy, uz];\n\n this.halfSize = this.viewportSize / 2.0;\n }\n\n SvgProjector.prototype.projectWorldPoint = function (wx, wy, wz) {\n var dx = wx - this.camPos[0];\n var dy = wy - this.camPos[1];\n var dz = wz - this.camPos[2];\n\n var xc = dx * this.right[0] + dy * this.right[1] + dz * this.right[2];\n var yc = dx * this.camUp[0] + dy * this.camUp[1] + dz * this.camUp[2];\n var zc = dx * this.fwd[0] + dy * this.fwd[1] + dz * this.fwd[2];\n\n if (zc <= 0.001) return null;\n var xs = (xc / zc) * this.focalLength * this.halfSize;\n var ys = -(yc / zc) * this.focalLength * this.halfSize;\n return { x: xs, y: ys, z: zc };\n };\n\n SvgProjector.getConvexHull = function (pts) {\n if (pts.length <= 1) return pts.slice();\n var sorted = pts.slice().sort(function (a, b) {\n return Math.abs(a.x - b.x) < 1e-5 ? a.y - b.y : a.x - b.x;\n });\n var cross = function (o, a, b) {\n return (a.x - o.x) * (b.y - o.y) - (a.y - o.y) * (b.x - o.x);\n };\n\n var lower = [];\n for (var i = 0; i < sorted.length; i++) {\n var p = sorted[i];\n while (lower.length >= 2 && cross(lower[lower.length - 2], lower[lower.length - 1], p) <= 1e-5) {\n lower.pop();\n }\n lower.push(p);\n }\n\n var upper = [];\n for (var j = sorted.length - 1; j >= 0; j--) {\n var q = sorted[j];\n while (upper.length >= 2 && cross(upper[upper.length - 2], upper[upper.length - 1], q) <= 1e-5) {\n upper.pop();\n }\n upper.push(q);\n }\n\n lower.pop();\n upper.pop();\n var hull = lower.concat(upper);\n\n var area = 0;\n for (var k = 0; k < hull.length; k++) {\n var next = (k + 1) % hull.length;\n area += hull[k].x * hull[next].y - hull[next].x * hull[k].y;\n }\n if (area < 0) hull.reverse();\n return hull;\n };\n\n SvgProjector.prototype.projectRoundedCube = function (pose, cubeW, cubeRadius) {\n cubeW = cubeW !== undefined ? cubeW : 1.0;\n cubeRadius = cubeRadius !== undefined ? cubeRadius : 0.35;\n\n if (!pose || pose.visible === false || (pose.scale !== undefined && pose.scale <= 0.001)) {\n return { visible: false, bodyPath: '', eyes: [] };\n }\n\n var s = (pose.scale !== undefined ? pose.scale : 1.0) * 0.60;\n var scX = pose.scaleX !== undefined ? pose.scaleX : 1.0;\n var scY = pose.scaleY !== undefined ? pose.scaleY : 1.0;\n var scZ = pose.scaleZ !== undefined ? pose.scaleZ : 1.0;\n\n var hw = (cubeW / 2.0) * s * scX;\n var hh = (cubeW / 2.0) * s * scY;\n var hd = (cubeW / 2.0) * s * scZ;\n var r = cubeRadius * s * Math.min(scX, scY);\n\n var ihw = Math.max(0.001, hw - r);\n var ihh = Math.max(0.001, hh - r);\n var ihd = Math.max(0.001, hd - r);\n\n var pitch = pose.pitch || 0.0;\n var yaw = pose.yaw || 0.0;\n var roll = pose.roll || 0.0;\n\n var cx = Math.cos(pitch), sx = Math.sin(pitch);\n var cy = Math.cos(yaw), sy = Math.sin(yaw);\n var cz = Math.cos(roll), sz = Math.sin(roll);\n\n var r00 = cz * cy;\n var r01 = cz * sy * sx - sz * cx;\n var r02 = cz * sy * cx + sz * sx;\n\n var r10 = sz * cy;\n var r11 = sz * sy * sx + cz * cx;\n var r12 = sz * sy * cx - cz * sx;\n\n var r20 = -sy;\n var r21 = cy * sx;\n var r22 = cy * cx;\n\n var bx = pose.x || 0.0;\n var by = pose.y || 0.0;\n var bz = pose.z || 0.0;\n\n var signs = [\n [-1, -1, -1], [1, -1, -1], [1, 1, -1], [-1, 1, -1],\n [-1, -1, 1], [1, -1, 1], [1, 1, 1], [-1, 1, 1]\n ];\n\n var projPts = [];\n var avgZ = 0;\n\n for (var idx = 0; idx < signs.length; idx++) {\n var sgn = signs[idx];\n var vx = sgn[0] * ihw;\n var vy = sgn[1] * ihh;\n var vz = sgn[2] * ihd;\n\n var wx = bx + (r00 * vx + r01 * vy + r02 * vz);\n var wy = by + (r10 * vx + r11 * vy + r12 * vz);\n var wz = bz + (r20 * vx + r21 * vy + r22 * vz);\n\n var p = this.projectWorldPoint(wx, wy, wz);\n if (!p) continue;\n projPts.push(p);\n avgZ += p.z;\n }\n\n if (projPts.length < 4) {\n return { visible: false, bodyPath: '', eyes: [] };\n }\n\n avgZ /= projPts.length;\n var rScreen = (r / avgZ) * this.focalLength * this.halfSize;\n\n var hull = SvgProjector.getConvexHull(projPts);\n if (hull.length < 3) {\n return { visible: false, bodyPath: '', eyes: [] };\n }\n\n var m = hull.length;\n var segments = [];\n for (var k = 0; k < m; k++) {\n var p0 = hull[k];\n var p1 = hull[(k + 1) % m];\n var dx = p1.x - p0.x;\n var dy = p1.y - p0.y;\n var len = Math.hypot(dx, dy);\n if (len < 1e-5) continue;\n\n var nx = dy / len;\n var ny = -dx / len;\n\n var a = { x: p0.x + rScreen * nx, y: p0.y + rScreen * ny };\n var b = { x: p1.x + rScreen * nx, y: p1.y + rScreen * ny };\n segments.push({ a: a, b: b, corner: p1 });\n }\n\n var bodyPath = '';\n if (segments.length >= 3) {\n var d = [];\n for (var si = 0; si < segments.length; si++) {\n var seg = segments[si];\n var nextSeg = segments[(si + 1) % segments.length];\n if (si === 0) {\n d.push('M ' + seg.a.x.toFixed(2) + ' ' + seg.a.y.toFixed(2));\n }\n d.push('L ' + seg.b.x.toFixed(2) + ' ' + seg.b.y.toFixed(2));\n d.push('A ' + rScreen.toFixed(2) + ' ' + rScreen.toFixed(2) + ' 0 0 1 ' + nextSeg.a.x.toFixed(2) + ' ' + nextSeg.a.y.toFixed(2));\n }\n d.push('Z');\n bodyPath = d.join(' ');\n }\n\n var eyes = [];\n var fnx = r02;\n var fny = r12;\n var fnz = r22;\n var viewDot = -(fnx * this.fwd[0] + fny * this.fwd[1] + fnz * this.fwd[2]);\n\n var viewFade = 1.0;\n if (viewDot <= 0.0) {\n viewFade = 0.0;\n } else if (viewDot < 0.15) {\n var u = viewDot / 0.15;\n viewFade = u * u * (3.0 - 2.0 * u);\n }\n\n var showEyes = (pose.showEyes !== false) && (viewFade > 0.001);\n\n if (showEyes) {\n var zFace = (pose.zFace !== undefined ? pose.zFace : 0.508) * s * scZ;\n var self = this;\n\n var computeFeaturePoint = function (fx, fy) {\n var wx = bx + (r00 * fx + r01 * fy + r02 * zFace);\n var wy = by + (r10 * fx + r11 * fy + r12 * zFace);\n var wz = bz + (r20 * fx + r21 * fy + r22 * zFace);\n return self.projectWorldPoint(wx, wy, wz);\n };\n\n var getAngle = function (baseP, upP, slant) {\n if (!baseP || !upP) return 0;\n var adx = upP.x - baseP.x;\n var ady = upP.y - baseP.y;\n var baseAngle = Math.atan2(adx, -ady) * (180.0 / Math.PI);\n return baseAngle - (slant * 180.0 / Math.PI);\n };\n\n var rawFeatures = null;\n if (Array.isArray(pose.faceFeatures) && pose.faceFeatures.length > 0) {\n rawFeatures = pose.faceFeatures;\n } else if (Array.isArray(pose.features) && pose.features.length > 0) {\n rawFeatures = pose.features;\n } else {\n var baseGap = (pose.eyeGap !== undefined ? pose.eyeGap : 0.27) * s * scX;\n var eyeX = (pose.eyeShiftX || 0.0) * s * scX;\n var baseEyeY = (0.01 - (pose.bulge || 0.0) * 0.02 + (pose.eyeShiftY || 0.0)) * s * scY;\n var eyeYL = baseEyeY + (pose.eyeShiftYL || 0.0) * s * scY;\n var eyeYR = baseEyeY + (pose.eyeShiftYR || 0.0) * s * scY;\n\n var slantL = pose.eyeSlantL !== undefined ? pose.eyeSlantL : (pose.eyeSlant || 0.0);\n var slantR = pose.eyeSlantR !== undefined ? pose.eyeSlantR : -(pose.eyeSlant || 0.0);\n\n var sxL = pose.eyeScaleXL !== undefined ? pose.eyeScaleXL : (pose.eyeScaleX !== undefined ? pose.eyeScaleX : 1.0);\n var sxR = pose.eyeScaleXR !== undefined ? pose.eyeScaleXR : (pose.eyeScaleX !== undefined ? pose.eyeScaleX : 1.0);\n var syL = pose.eyeScaleYL !== undefined ? pose.eyeScaleYL : (pose.eyeScaleY !== undefined ? pose.eyeScaleY : 1.0);\n var syR = pose.eyeScaleYR !== undefined ? pose.eyeScaleYR : (pose.eyeScaleY !== undefined ? pose.eyeScaleY : 1.0);\n\n var eyeSxL = (1.0 + (pose.bulge || 0.0) * 0.45) * sxL;\n var eyeSxR = (1.0 + (pose.bulge || 0.0) * 0.45) * sxR;\n var eyeSyL = (1.0 + (pose.bulge || 0.0) * 0.65) * syL;\n var eyeSyR = (1.0 + (pose.bulge || 0.0) * 0.65) * syR;\n\n var squint = pose.squint || 0.0;\n if (squint > 0.01) {\n eyeSyL = eyeSyL * (1.0 - squint) + 0.02 * squint;\n eyeSxL = eyeSxL * (1.0 - squint) + 0.85 * squint;\n eyeSyR = eyeSyR * (1.0 - squint) + 0.02 * squint;\n eyeSxR = eyeSxR * (1.0 - squint) + 0.85 * squint;\n }\n\n rawFeatures = [\n {\n id: 'eyeL',\n type: 'pill',\n x: -baseGap / 2 + eyeX,\n y: eyeYL,\n slant: slantL,\n scaleX: eyeSxL,\n scaleY: eyeSyL,\n baseW: 0.125,\n baseH: 0.210,\n color: pose.eyeColor || '#ffffff'\n },\n {\n id: 'eyeR',\n type: 'pill',\n x: baseGap / 2 + eyeX,\n y: eyeYR,\n slant: slantR,\n scaleX: eyeSxR,\n scaleY: eyeSyR,\n baseW: 0.125,\n baseH: 0.210,\n color: pose.eyeColor || '#ffffff'\n }\n ];\n }\n\n var faceForeshorten = Math.max(0.85, Math.hypot(r00, r10));\n var squashFade = 0.2 + 0.8 * viewFade;\n\n for (var fi = 0; fi < rawFeatures.length; fi++) {\n var feat = rawFeatures[fi];\n var fx = (feat.x !== undefined ? feat.x : 0.0);\n var fy = (feat.y !== undefined ? feat.y : 0.0);\n var projP = computeFeaturePoint(fx, fy);\n if (!projP) continue;\n\n var projUp = computeFeaturePoint(fx, fy + 0.1 * s * scY);\n var fslant = feat.slant || 0.0;\n var angle = getAngle(projP, projUp, fslant);\n\n var factor = projP.z > 0.01 ? (this.focalLength / projP.z) * this.halfSize : (this.focalLength / avgZ) * this.halfSize;\n var baseW = feat.baseW !== undefined ? feat.baseW : 0.125;\n var baseH = feat.baseH !== undefined ? feat.baseH : 0.210;\n var scFeatX = feat.scaleX !== undefined ? feat.scaleX : 1.0;\n var scFeatY = feat.scaleY !== undefined ? feat.scaleY : 1.0;\n\n var ew = Math.max(0.2, baseW * s * scX * scFeatX * faceForeshorten * factor * squashFade);\n var eh = Math.max(0.2, baseH * s * scY * scFeatY * factor);\n var erx = feat.rx !== undefined ? feat.rx : Math.min(ew, eh) / 2.0;\n var ery = feat.ry !== undefined ? feat.ry : Math.min(ew, eh) / 2.0;\n\n var featOpacity = (feat.opacity !== undefined ? feat.opacity : 1.0) * viewFade;\n\n eyes.push({\n id: feat.id || ('feat-' + fi),\n type: feat.type || 'pill',\n cx: projP.x,\n cy: projP.y,\n z: projP.z,\n w: ew,\n h: eh,\n rx: erx,\n ry: ery,\n angle: angle,\n opacity: featOpacity,\n color: feat.color || pose.eyeColor || '#ffffff'\n });\n }\n }\n\n return {\n visible: true,\n bodyPath: bodyPath,\n eyes: eyes,\n bodyColor: pose.bodyColor,\n eyeColor: pose.eyeColor\n };\n };\n\n /* =========================================================================\n 3. Mascot Timelines & State Functions (#1 ~ #7)\n ========================================================================= */\n\n // --- #1 Sentry (哨兵) ---\n var pBot1Start = { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.05, pitch: -0.02, roll: 0.01, eyeShiftX: 0.015, eyeShiftY: -0.01, eyeScaleX: 1.0, eyeScaleY: 1.0, eyeScaleXL: 1.0, eyeScaleXR: 1.0, eyeGap: 0.26, bulge: 0.0, jumpY: 0.0 };\n var pBot1Left = { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: -0.28, pitch: -0.03, roll: 0.02, eyeShiftX: -0.080, eyeShiftY: 0.01, eyeScaleX: 0.95, eyeScaleY: 1.0, eyeScaleXL: 0.94, eyeScaleXR: 1.0, eyeGap: 0.22, bulge: 0.0, jumpY: 0.0 };\n var pBot1DeepLeft = { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: -0.42, pitch: -0.05, roll: 0.04, eyeShiftX: -0.108, eyeShiftY: 0.03, eyeScaleX: 0.95, eyeScaleY: 1.0, eyeScaleXL: 0.92, eyeScaleXR: 1.0, eyeGap: 0.20, bulge: 0.0, jumpY: 0.0 };\n var pBot1Right = { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.36, pitch: -0.04, roll: -0.03, eyeShiftX: 0.075, eyeShiftY: 0.02, eyeScaleX: 0.95, eyeScaleY: 1.0, eyeScaleXL: 1.0, eyeScaleXR: 0.94, eyeGap: 0.22, bulge: 0.0, jumpY: 0.0 };\n var pBot1FarRight = { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.44, pitch: -0.05, roll: -0.04, eyeShiftX: 0.095, eyeShiftY: 0.025, eyeScaleX: 0.95, eyeScaleY: 1.0, eyeScaleXL: 1.0, eyeScaleXR: 0.92, eyeGap: 0.20, bulge: 0.0, jumpY: 0.0 };\n var pBot1MidFocus = { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.00, pitch: -0.02, roll: 0.0, eyeShiftX: 0.00, eyeShiftY: 0.0, eyeScaleX: 1.0, eyeScaleY: 1.0, eyeScaleXL: 1.0, eyeScaleXR: 1.0, eyeGap: 0.26, bulge: 0.0, jumpY: 0.0 };\n var pBot1Stretch = { scale: 1.0, scaleX: 0.97, scaleY: 1.04, yaw: 0.38, pitch: -0.06, roll: 0.0, eyeShiftX: 0.075, eyeShiftY: 0.04, eyeScaleX: 0.95, eyeScaleY: 1.0, eyeScaleXL: 1.0, eyeScaleXR: 0.94, eyeGap: 0.22, bulge: 0.0, jumpY: 0.012 };\n var pBot1Tilt = { scale: 1.0, scaleX: 0.97, scaleY: 1.04, yaw: 0.40, pitch: -0.06, roll: 0.320, eyeShiftX: 0.085, eyeShiftY: 0.035, eyeScaleX: 0.95, eyeScaleY: 1.0, eyeScaleXL: 1.0, eyeScaleXR: 0.94, eyeGap: 0.21, bulge: 0.0, jumpY: 0.012 };\n\n var bot1Timeline = new PoseTimeline([\n { t: 0.00, label: 'sentry-scan-left-1', pose: pBot1Start },\n { t: 1.65, label: 'sentry-scan-left-1', ease: 'linear', pose: pBot1Start },\n { t: 2.15, label: 'sentry-sweep-right-1', ease: 'easeInOutQuad', pose: pBot1Right },\n { t: 3.60, label: 'sentry-sweep-right-1', ease: 'linear', pose: pBot1Right },\n { t: 3.88, label: 'sentry-scan-left-2', ease: 'easeInOutQuad', pose: pBot1Left },\n { t: 4.65, label: 'sentry-scan-left-2', ease: 'linear', pose: pBot1Left },\n { t: 5.30, label: 'sentry-sweep-right-2', ease: 'easeInOutQuad', pose: pBot1Right },\n { t: 6.60, label: 'sentry-sweep-right-2', ease: 'linear', pose: pBot1Right },\n { t: 7.10, label: 'sentry-sweep-far-right', ease: 'easeInOutQuad', pose: pBot1FarRight },\n { t: 8.40, label: 'sentry-sweep-far-right', ease: 'linear', pose: pBot1FarRight },\n { t: 8.75, label: 'sentry-deep-left-1', ease: 'easeInOutQuad', pose: pBot1DeepLeft },\n { t: 9.35, label: 'sentry-deep-left-1', ease: 'linear', pose: pBot1DeepLeft },\n { t: 9.90, label: 'sentry-sweep-right-3', ease: 'easeInOutQuad', pose: pBot1Right },\n { t: 11.20, label: 'sentry-sweep-right-3', ease: 'linear', pose: pBot1Right },\n { t: 11.55, label: 'sentry-center-focus', ease: 'easeInOutQuad', pose: pBot1MidFocus },\n { t: 14.10, label: 'sentry-center-focus', ease: 'linear', pose: pBot1MidFocus },\n { t: 14.45, label: 'sentry-deep-left-2', ease: 'easeInOutQuad', pose: pBot1DeepLeft },\n { t: 15.15, label: 'sentry-deep-left-2', ease: 'linear', pose: pBot1DeepLeft },\n { t: 15.65, label: 'sentry-sweep-right-4', ease: 'easeInOutQuad', pose: pBot1Right },\n { t: 16.80, label: 'sentry-sweep-right-4', ease: 'linear', pose: pBot1Right },\n { t: 17.05, label: 'sentry-stretch', ease: 'easeInOutQuad', pose: pBot1Stretch },\n { t: 17.35, label: 'sentry-curious-tilt', ease: 'easeInOutQuad', pose: pBot1Tilt },\n { t: 18.70, label: 'sentry-curious-tilt', ease: 'linear', pose: pBot1Tilt },\n { t: 19.05, label: 'sentry-right-settle', ease: 'easeInOutQuad', pose: pBot1Right },\n { t: 19.45, label: 'sentry-scan-left-3', ease: 'easeInOutQuad', pose: pBot1Left },\n { t: 20.20, label: 'sentry-deep-left-3', ease: 'easeInOutQuad', pose: pBot1DeepLeft },\n { t: 20.783, label: 'sentry-scan-left-1', ease: 'easeInOutQuad', pose: pBot1Start }\n ]);\n\n var bot1Blinks = new BlinkTrack([\n { start: 1.85, duration: 0.18, maxSquint: 0.98 },\n { start: 5.65, duration: 0.17, maxSquint: 0.98 },\n { start: 8.80, duration: 0.18, maxSquint: 0.98 },\n { start: 11.40, duration: 0.18, maxSquint: 0.98 },\n { start: 11.68, duration: 0.19, maxSquint: 0.98 },\n { start: 16.10, duration: 0.18, maxSquint: 0.98 },\n { start: 18.96, duration: 0.18, maxSquint: 0.98 }\n ]);\n\n function getBot1State(time) {\n var t = ((time % LOOP) + LOOP) % LOOP;\n var res = bot1Timeline.evaluate(t);\n var pose = res.pose;\n var squint = bot1Blinks.evaluate(t);\n\n var bot = {\n visible: true,\n scale: pose.scale,\n scaleX: pose.scaleX,\n scaleY: pose.scaleY,\n x: 0.0,\n y: pose.jumpY || 0.0,\n yaw: pose.yaw,\n pitch: pose.pitch,\n roll: pose.roll,\n eyeShiftX: pose.eyeShiftX,\n eyeShiftY: pose.eyeShiftY,\n eyeScaleX: pose.eyeScaleX,\n eyeScaleY: pose.eyeScaleY,\n eyeScaleXL: pose.eyeScaleXL !== undefined ? pose.eyeScaleXL : 1.0,\n eyeScaleXR: pose.eyeScaleXR !== undefined ? pose.eyeScaleXR : 1.0,\n eyeGap: pose.eyeGap !== undefined ? pose.eyeGap : 0.23,\n bulge: pose.bulge || 0.0,\n squint: squint,\n bodyColor: 0x222126,\n eyeColor: 0xffffff\n };\n\n return { botId: 1, type: 'bot1', label: res.label, bot: bot, dots: [] };\n }\n\n // --- #2 Attitude (傲娇小怪) ---\n var bot2Apexes = [1.07, 4.78, 8.57, 12.20, 15.90, 19.62];\n var BOT2_FLIP_HALF = 0.42;\n\n function makeBot2RelaxedPose(cycle) {\n return {\n scale: 1.0, scaleX: 1.0, scaleY: 1.0,\n yaw: 0.05, pitch: 0.02,\n roll: 0.17 + cycle * 2 * Math.PI,\n eyeShiftX: 0.04, eyeShiftY: 0.22,\n eyeShiftYL: 0.0, eyeShiftYR: 0.0,\n eyeScaleXL: 1.0, eyeScaleYL: 1.0,\n eyeScaleXR: 1.0, eyeScaleYR: 1.0,\n eyeSlantL: 0.0, eyeSlantR: 0.10,\n eyeGap: 0.22, bulge: 0.0, jumpY: 0.0, showEyes: true\n };\n }\n\n function makeBot2MidPose(cycle) {\n return {\n scale: 1.0, scaleX: 1.0, scaleY: 1.0,\n yaw: 0.85, pitch: 0.35,\n roll: 0.17 + (cycle * 2 + 1) * Math.PI,\n eyeShiftX: 0.04, eyeShiftY: 0.22,\n eyeShiftYL: 0.0, eyeShiftYR: 0.0,\n eyeScaleXL: 0.85, eyeScaleYL: 0.85,\n eyeScaleXR: 0.85, eyeScaleYR: 0.85,\n eyeSlantL: 0.0, eyeSlantR: 0.0,\n eyeGap: 0.22, bulge: 0.0, jumpY: 0.075, showEyes: false\n };\n }\n\n function makeBot2SquintPose(cycle) {\n return {\n scale: 1.0, scaleX: 1.0, scaleY: 1.0,\n yaw: 0.05, pitch: 0.02,\n roll: 0.17 + cycle * 2 * Math.PI,\n eyeShiftX: 0.04, eyeShiftY: 0.22,\n eyeShiftYL: -0.015, eyeShiftYR: +0.020,\n eyeScaleXL: 0.60, eyeScaleXR: 0.60,\n eyeScaleYL: 0.85, eyeScaleYR: 0.85,\n eyeSlantL: 0.56, eyeSlantR: -0.51,\n eyeGap: 0.22, bulge: 0.0, jumpY: 0.0, showEyes: true\n };\n }\n\n var bot2Keyframes = [\n { t: 0.00, label: 'standby-relaxed-0', pose: makeBot2RelaxedPose(0) }\n ];\n\n for (var bi = 0; bi < bot2Apexes.length; bi++) {\n var apex = bot2Apexes[bi];\n var tTakeoff = apex - BOT2_FLIP_HALF;\n var tMid = apex;\n var tLand = apex + BOT2_FLIP_HALF;\n var tSquintSnap = tLand + 0.08;\n\n bot2Keyframes.push({ t: tTakeoff, label: 'takeoff-' + bi, ease: 'linear', pose: makeBot2RelaxedPose(bi) });\n bot2Keyframes.push({ t: tMid, label: 'spin-flip-mid-' + (bi + 1), ease: 'easeInOutQuad', pose: makeBot2MidPose(bi) });\n bot2Keyframes.push({ t: tLand, label: 'spin-flip-land-' + (bi + 1), ease: 'easeInOutQuad', pose: makeBot2SquintPose(bi + 1) });\n bot2Keyframes.push({ t: tSquintSnap, label: 'attitude-squint-' + (bi + 1), ease: 'linear', pose: makeBot2SquintPose(bi + 1) });\n\n if (bi < bot2Apexes.length - 1) {\n var nextApex = bot2Apexes[bi + 1];\n var nextTakeoff = nextApex - BOT2_FLIP_HALF;\n var tSquintHoldEnd = nextTakeoff - 0.65;\n var tRelaxEnd = nextTakeoff - 0.35;\n\n bot2Keyframes.push({ t: tSquintHoldEnd, label: 'attitude-hold-' + (bi + 1), ease: 'linear', pose: makeBot2SquintPose(bi + 1) });\n bot2Keyframes.push({ t: tRelaxEnd, label: 'attitude-relax-' + (bi + 1), ease: 'easeInOutQuad', pose: makeBot2RelaxedPose(bi + 1) });\n } else {\n bot2Keyframes.push({ t: 20.45, label: 'attitude-hold-6', ease: 'linear', pose: makeBot2SquintPose(6) });\n bot2Keyframes.push({ t: 20.783, label: 'attitude-relax-end', ease: 'easeInOutQuad', pose: makeBot2RelaxedPose(6) });\n }\n }\n\n var bot2Timeline = new PoseTimeline(bot2Keyframes);\n var bot2Blinks = new BlinkTrack([]);\n\n function getBot2State(time) {\n var t = ((time % LOOP) + LOOP) % LOOP;\n var res = bot2Timeline.evaluate(t);\n var pose = res.pose;\n var squint = bot2Blinks.evaluate(t);\n\n var squintWeight = Math.max(0.0, Math.min(1.0, (pose.eyeSlantL || 0.0) / 0.56));\n var omegaShake = 2.2 * Math.PI * 2.0;\n var headShakeYaw = Math.sin(t * omegaShake) * 0.038 * squintWeight;\n var headShakeRoll = Math.cos(t * omegaShake) * 0.024 * squintWeight;\n var headShakeEyeX = Math.sin(t * omegaShake) * 0.010 * squintWeight;\n var headShakeEyeY = Math.abs(Math.sin(t * omegaShake)) * 0.005 * squintWeight;\n\n var bot = {\n visible: true,\n scale: pose.scale,\n scaleX: pose.scaleX,\n scaleY: pose.scaleY,\n x: 0.0,\n y: pose.jumpY || 0.0,\n yaw: (pose.yaw || 0.0) + headShakeYaw,\n pitch: pose.pitch,\n roll: (pose.roll || 0.0) + headShakeRoll,\n eyeShiftX: (pose.eyeShiftX || 0.0) + headShakeEyeX,\n eyeShiftY: (pose.eyeShiftY || 0.0) + headShakeEyeY,\n eyeShiftYL: pose.eyeShiftYL,\n eyeShiftYR: pose.eyeShiftYR,\n eyeScaleX: pose.eyeScaleX,\n eyeScaleY: pose.eyeScaleY,\n eyeScaleXL: pose.eyeScaleXL,\n eyeScaleXR: pose.eyeScaleXR,\n eyeScaleYL: pose.eyeScaleYL,\n eyeScaleYR: pose.eyeScaleYR,\n eyeSlantL: pose.eyeSlantL,\n eyeSlantR: pose.eyeSlantR,\n eyeGap: pose.eyeGap !== undefined ? pose.eyeGap : 0.22,\n bulge: pose.bulge || 0.0,\n squint: squint,\n showEyes: pose.showEyes,\n bodyColor: 0x222126,\n eyeColor: 0xffffff\n };\n\n return { botId: 2, type: 'bot2', label: res.label, bot: bot, dots: [] };\n }\n\n // --- #3 Chameleon (动感变色龙) ---\n var BOT3_PALETTE_12 = [\n [ 58, 53, 206], // 0.0s 钴蓝\n [ 60, 84, 208], // 0.5s 浅钴蓝\n [201, 34, 153], // 1.0s 洋红\n [201, 222, 65], // 1.5s 柠黄\n [ 68, 229, 198], // 2.0s 青绿\n [ 66, 162, 209], // 2.5s 天蓝\n [ 69, 238, 80], // 3.0s 亮绿\n [200, 41, 71], // 3.5s 绯红\n [125, 38, 208], // 4.0s 紫色\n [100, 42, 209], // 4.5s 蓝紫\n [154, 36, 211], // 5.0s 亮紫\n [199, 35, 104] // 5.5s 玫红\n ];\n\n function getBot3ColorHex(t) {\n var cycle = ((t % 6.00) + 6.00) % 6.00 / 6.00;\n var n = BOT3_PALETTE_12.length;\n var p = cycle * n;\n var i0 = Math.floor(p) % n;\n var i1 = (i0 + 1) % n;\n var f = p - Math.floor(p);\n var s = f * f * (3 - 2 * f);\n var r = Math.round(BOT3_PALETTE_12[i0][0] * (1 - s) + BOT3_PALETTE_12[i1][0] * s);\n var g = Math.round(BOT3_PALETTE_12[i0][1] * (1 - s) + BOT3_PALETTE_12[i1][1] * s);\n var b = Math.round(BOT3_PALETTE_12[i0][2] * (1 - s) + BOT3_PALETTE_12[i1][2] * s);\n return (r << 16) | (g << 8) | b;\n }\n\n var bot3Timeline = new PoseTimeline([\n { t: 0.00, label: 'chameleon-normal', pose: { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.05, pitch: 0.02, roll: -0.10, eyeShiftX: 0.02, eyeShiftY: 0.09, eyeGap: 0.27, eyeScaleX: 0.90, eyeScaleY: 1.05, eyeScaleXL: 0.90, eyeScaleXR: 0.90, eyeScaleYL: 1.05, eyeScaleYR: 1.05, eyeSlantL: 0.0, eyeSlantR: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 1.20, label: 'chameleon-normal', ease: 'linear', pose: { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.05, pitch: 0.02, roll: -0.10, eyeShiftX: 0.02, eyeShiftY: 0.09, eyeGap: 0.27, eyeScaleX: 0.90, eyeScaleY: 1.05, eyeScaleXL: 0.90, eyeScaleXR: 0.90, eyeScaleYL: 1.05, eyeScaleYR: 1.05, eyeSlantL: 0.0, eyeSlantR: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 1.50, label: 'chameleon-slit-1', ease: 'easeInOutQuad', pose: { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.05, pitch: 0.02, roll: -0.10, eyeShiftX: 0.02, eyeShiftY: 0.09, eyeGap: 0.27, eyeScaleX: 0.52, eyeScaleY: 0.82, eyeScaleXL: 0.52, eyeScaleXR: 0.52, eyeScaleYL: 0.82, eyeScaleYR: 0.82, eyeSlantL: 0.58, eyeSlantR: -0.58, bulge: 0.0, jumpY: 0.0 } },\n { t: 1.70, label: 'chameleon-slit-1', ease: 'linear', pose: { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.05, pitch: 0.02, roll: -0.10, eyeShiftX: 0.02, eyeShiftY: 0.09, eyeGap: 0.27, eyeScaleX: 0.52, eyeScaleY: 0.82, eyeScaleXL: 0.52, eyeScaleXR: 0.52, eyeScaleYL: 0.82, eyeScaleYR: 0.82, eyeSlantL: 0.58, eyeSlantR: -0.58, bulge: 0.0, jumpY: 0.0 } },\n { t: 1.95, label: 'chameleon-dot-1', ease: 'easeInOutQuad', pose: { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.05, pitch: 0.02, roll: -0.10, eyeShiftX: 0.02, eyeShiftY: 0.09, eyeGap: 0.27, eyeScaleX: 0.40, eyeScaleY: 0.40, eyeScaleXL: 0.40, eyeScaleXR: 0.40, eyeScaleYL: 0.40, eyeScaleYR: 0.40, eyeSlantL: 0.0, eyeSlantR: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 2.15, label: 'chameleon-dot-1', ease: 'linear', pose: { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.05, pitch: 0.02, roll: -0.10, eyeShiftX: 0.02, eyeShiftY: 0.09, eyeGap: 0.27, eyeScaleX: 0.40, eyeScaleY: 0.40, eyeScaleXL: 0.40, eyeScaleXR: 0.40, eyeScaleYL: 0.40, eyeScaleYR: 0.40, eyeSlantL: 0.0, eyeSlantR: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 2.45, label: 'chameleon-normal', ease: 'easeInOutQuad', pose: { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.05, pitch: 0.02, roll: -0.10, eyeShiftX: 0.02, eyeShiftY: 0.09, eyeGap: 0.27, eyeScaleX: 0.90, eyeScaleY: 1.05, eyeScaleXL: 0.90, eyeScaleXR: 0.90, eyeScaleYL: 1.05, eyeScaleYR: 1.05, eyeSlantL: 0.0, eyeSlantR: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 2.75, label: 'chameleon-slit-2', ease: 'easeInOutQuad', pose: { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.05, pitch: 0.02, roll: -0.10, eyeShiftX: 0.02, eyeShiftY: 0.09, eyeGap: 0.27, eyeScaleX: 0.52, eyeScaleY: 0.82, eyeScaleXL: 0.52, eyeScaleXR: 0.52, eyeScaleYL: 0.82, eyeScaleYR: 0.82, eyeSlantL: 0.58, eyeSlantR: -0.58, bulge: 0.0, jumpY: 0.0 } },\n { t: 3.15, label: 'chameleon-slit-2', ease: 'linear', pose: { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.05, pitch: 0.02, roll: -0.10, eyeShiftX: 0.02, eyeShiftY: 0.09, eyeGap: 0.27, eyeScaleX: 0.52, eyeScaleY: 0.82, eyeScaleXL: 0.52, eyeScaleXR: 0.52, eyeScaleYL: 0.82, eyeScaleYR: 0.82, eyeSlantL: 0.58, eyeSlantR: -0.58, bulge: 0.0, jumpY: 0.0 } },\n { t: 3.50, label: 'chameleon-normal', ease: 'easeInOutQuad', pose: { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.05, pitch: 0.02, roll: -0.10, eyeShiftX: 0.02, eyeShiftY: 0.09, eyeGap: 0.27, eyeScaleX: 0.90, eyeScaleY: 1.05, eyeScaleXL: 0.90, eyeScaleXR: 0.90, eyeScaleYL: 1.05, eyeScaleYR: 1.05, eyeSlantL: 0.0, eyeSlantR: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 4.80, label: 'chameleon-slit-3', ease: 'easeInOutQuad', pose: { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.05, pitch: 0.02, roll: -0.10, eyeShiftX: 0.02, eyeShiftY: 0.09, eyeGap: 0.27, eyeScaleX: 0.52, eyeScaleY: 0.82, eyeScaleXL: 0.52, eyeScaleXR: 0.52, eyeScaleYL: 0.82, eyeScaleYR: 0.82, eyeSlantL: 0.58, eyeSlantR: -0.58, bulge: 0.0, jumpY: 0.0 } },\n { t: 5.30, label: 'chameleon-slit-3', ease: 'linear', pose: { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.05, pitch: 0.02, roll: -0.10, eyeShiftX: 0.02, eyeShiftY: 0.09, eyeGap: 0.27, eyeScaleX: 0.52, eyeScaleY: 0.82, eyeScaleXL: 0.52, eyeScaleXR: 0.52, eyeScaleYL: 0.82, eyeScaleYR: 0.82, eyeSlantL: 0.58, eyeSlantR: -0.58, bulge: 0.0, jumpY: 0.0 } },\n { t: 5.70, label: 'chameleon-normal', ease: 'easeInOutQuad', pose: { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.05, pitch: 0.02, roll: -0.10, eyeShiftX: 0.02, eyeShiftY: 0.09, eyeGap: 0.27, eyeScaleX: 0.90, eyeScaleY: 1.05, eyeScaleXL: 0.90, eyeScaleXR: 0.90, eyeScaleYL: 1.05, eyeScaleYR: 1.05, eyeSlantL: 0.0, eyeSlantR: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 8.60, label: 'chameleon-normal', ease: 'linear', pose: { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.05, pitch: 0.02, roll: -0.10, eyeShiftX: 0.02, eyeShiftY: 0.09, eyeGap: 0.27, eyeScaleX: 0.90, eyeScaleY: 1.05, eyeScaleXL: 0.90, eyeScaleXR: 0.90, eyeScaleYL: 1.05, eyeScaleYR: 1.05, eyeSlantL: 0.0, eyeSlantR: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 8.90, label: 'chameleon-corner-glance-1', ease: 'easeInOutQuad', pose: { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: -0.15, pitch: -0.04, roll: -0.10, eyeShiftX: -0.16, eyeShiftY: 0.11, eyeGap: 0.36, eyeScaleX: 0.52, eyeScaleY: 0.52, eyeScaleXL: 0.50, eyeScaleXR: 0.55, eyeScaleYL: 0.50, eyeScaleYR: 0.55, eyeSlantL: 0.0, eyeSlantR: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 9.20, label: 'chameleon-corner-glance-1', ease: 'linear', pose: { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: -0.15, pitch: -0.04, roll: -0.10, eyeShiftX: -0.16, eyeShiftY: 0.11, eyeGap: 0.36, eyeScaleX: 0.52, eyeScaleY: 0.52, eyeScaleXL: 0.50, eyeScaleXR: 0.55, eyeScaleYL: 0.50, eyeScaleYR: 0.55, eyeSlantL: 0.0, eyeSlantR: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 9.50, label: 'chameleon-normal', ease: 'easeInOutQuad', pose: { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.05, pitch: 0.02, roll: -0.10, eyeShiftX: 0.02, eyeShiftY: 0.09, eyeGap: 0.27, eyeScaleX: 0.90, eyeScaleY: 1.05, eyeScaleXL: 0.90, eyeScaleXR: 0.90, eyeScaleYL: 1.05, eyeScaleYR: 1.05, eyeSlantL: 0.0, eyeSlantR: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 11.20, label: 'chameleon-normal', ease: 'linear', pose: { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.05, pitch: 0.02, roll: -0.10, eyeShiftX: 0.02, eyeShiftY: 0.09, eyeGap: 0.27, eyeScaleX: 0.90, eyeScaleY: 1.05, eyeScaleXL: 0.90, eyeScaleXR: 0.90, eyeScaleYL: 1.05, eyeScaleYR: 1.05, eyeSlantL: 0.0, eyeSlantR: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 11.50, label: 'chameleon-asym', ease: 'easeInOutQuad', pose: { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.05, pitch: 0.02, roll: -0.10, eyeShiftX: 0.02, eyeShiftY: 0.09, eyeGap: 0.27, eyeScaleX: 0.50, eyeScaleY: 0.62, eyeScaleXL: 0.40, eyeScaleXR: 0.60, eyeScaleYL: 0.40, eyeScaleYR: 0.85, eyeSlantL: 0.0, eyeSlantR: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 11.80, label: 'chameleon-normal', ease: 'easeInOutQuad', pose: { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.05, pitch: 0.02, roll: -0.10, eyeShiftX: 0.02, eyeShiftY: 0.09, eyeGap: 0.27, eyeScaleX: 0.90, eyeScaleY: 1.05, eyeScaleXL: 0.90, eyeScaleXR: 0.90, eyeScaleYL: 1.05, eyeScaleYR: 1.05, eyeSlantL: 0.0, eyeSlantR: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 14.60, label: 'chameleon-normal', ease: 'linear', pose: { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.05, pitch: 0.02, roll: -0.10, eyeShiftX: 0.02, eyeShiftY: 0.09, eyeGap: 0.27, eyeScaleX: 0.90, eyeScaleY: 1.05, eyeScaleXL: 0.90, eyeScaleXR: 0.90, eyeScaleYL: 1.05, eyeScaleYR: 1.05, eyeSlantL: 0.0, eyeSlantR: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 14.85, label: 'chameleon-corner-glance-2', ease: 'easeInOutQuad', pose: { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: -0.15, pitch: -0.04, roll: -0.10, eyeShiftX: -0.16, eyeShiftY: 0.11, eyeGap: 0.36, eyeScaleX: 0.52, eyeScaleY: 0.52, eyeScaleXL: 0.50, eyeScaleXR: 0.55, eyeScaleYL: 0.50, eyeScaleYR: 0.55, eyeSlantL: 0.0, eyeSlantR: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 15.05, label: 'chameleon-corner-glance-2', ease: 'linear', pose: { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: -0.15, pitch: -0.04, roll: -0.10, eyeShiftX: -0.16, eyeShiftY: 0.11, eyeGap: 0.36, eyeScaleX: 0.52, eyeScaleY: 0.52, eyeScaleXL: 0.50, eyeScaleXR: 0.55, eyeScaleYL: 0.50, eyeScaleYR: 0.55, eyeSlantL: 0.0, eyeSlantR: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 15.18, label: 'chameleon-dazed', ease: 'easeInOutQuad', pose: { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.02, pitch: 0.01, roll: -0.10, eyeShiftX: 0.02, eyeShiftY: 0.09, eyeGap: 0.27, eyeScaleX: 0.75, eyeScaleY: 0.45, eyeScaleXL: 0.75, eyeScaleXR: 0.75, eyeScaleYL: 0.45, eyeScaleYR: 0.45, eyeSlantL: 0.10, eyeSlantR: -0.10, bulge: 0.0, jumpY: 0.0 } },\n { t: 16.14, label: 'chameleon-dazed', ease: 'linear', pose: { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.02, pitch: 0.01, roll: -0.10, eyeShiftX: 0.02, eyeShiftY: 0.09, eyeGap: 0.27, eyeScaleX: 0.75, eyeScaleY: 0.45, eyeScaleXL: 0.75, eyeScaleXR: 0.75, eyeScaleYL: 0.45, eyeScaleYR: 0.45, eyeSlantL: 0.10, eyeSlantR: -0.10, bulge: 0.0, jumpY: 0.0 } },\n { t: 16.40, label: 'chameleon-normal', ease: 'easeInOutQuad', pose: { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.05, pitch: 0.02, roll: -0.10, eyeShiftX: 0.02, eyeShiftY: 0.09, eyeGap: 0.27, eyeScaleX: 0.90, eyeScaleY: 1.05, eyeScaleXL: 0.90, eyeScaleXR: 0.90, eyeScaleYL: 1.05, eyeScaleYR: 1.05, eyeSlantL: 0.0, eyeSlantR: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 17.00, label: 'chameleon-slit-4', ease: 'easeInOutQuad', pose: { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.05, pitch: 0.02, roll: -0.10, eyeShiftX: 0.02, eyeShiftY: 0.09, eyeGap: 0.27, eyeScaleX: 0.52, eyeScaleY: 0.82, eyeScaleXL: 0.52, eyeScaleXR: 0.52, eyeScaleYL: 0.82, eyeScaleYR: 0.82, eyeSlantL: 0.58, eyeSlantR: -0.58, bulge: 0.0, jumpY: 0.0 } },\n { t: 17.60, label: 'chameleon-slit-4', ease: 'linear', pose: { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.05, pitch: 0.02, roll: -0.10, eyeShiftX: 0.02, eyeShiftY: 0.09, eyeGap: 0.27, eyeScaleX: 0.52, eyeScaleY: 0.82, eyeScaleXL: 0.52, eyeScaleXR: 0.52, eyeScaleYL: 0.82, eyeScaleYR: 0.82, eyeSlantL: 0.58, eyeSlantR: -0.58, bulge: 0.0, jumpY: 0.0 } },\n { t: 18.00, label: 'chameleon-normal', ease: 'easeInOutQuad', pose: { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.05, pitch: 0.02, roll: -0.10, eyeShiftX: 0.02, eyeShiftY: 0.09, eyeGap: 0.27, eyeScaleX: 0.90, eyeScaleY: 1.05, eyeScaleXL: 0.90, eyeScaleXR: 0.90, eyeScaleYL: 1.05, eyeScaleYR: 1.05, eyeSlantL: 0.0, eyeSlantR: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 19.80, label: 'chameleon-normal', ease: 'linear', pose: { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.05, pitch: 0.02, roll: -0.10, eyeShiftX: 0.02, eyeShiftY: 0.09, eyeGap: 0.27, eyeScaleX: 0.90, eyeScaleY: 1.05, eyeScaleXL: 0.90, eyeScaleXR: 0.90, eyeScaleYL: 1.05, eyeScaleYR: 1.05, eyeSlantL: 0.0, eyeSlantR: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 20.00, label: 'chameleon-corner-glance-3', ease: 'easeInOutQuad', pose: { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: -0.15, pitch: -0.04, roll: -0.10, eyeShiftX: -0.16, eyeShiftY: 0.11, eyeGap: 0.36, eyeScaleX: 0.52, eyeScaleY: 0.52, eyeScaleXL: 0.50, eyeScaleXR: 0.55, eyeScaleYL: 0.50, eyeScaleYR: 0.55, eyeSlantL: 0.0, eyeSlantR: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 20.25, label: 'chameleon-corner-glance-3', ease: 'linear', pose: { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: -0.15, pitch: -0.04, roll: -0.10, eyeShiftX: -0.16, eyeShiftY: 0.11, eyeGap: 0.36, eyeScaleX: 0.52, eyeScaleY: 0.52, eyeScaleXL: 0.50, eyeScaleXR: 0.55, eyeScaleYL: 0.50, eyeScaleYR: 0.55, eyeSlantL: 0.0, eyeSlantR: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 20.50, label: 'chameleon-normal', ease: 'easeInOutQuad', pose: { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.05, pitch: 0.02, roll: -0.10, eyeShiftX: 0.02, eyeShiftY: 0.09, eyeGap: 0.27, eyeScaleX: 0.90, eyeScaleY: 1.05, eyeScaleXL: 0.90, eyeScaleXR: 0.90, eyeScaleYL: 1.05, eyeScaleYR: 1.05, eyeSlantL: 0.0, eyeSlantR: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 20.783, label: 'chameleon-normal', ease: 'linear', pose: { scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.05, pitch: 0.02, roll: -0.10, eyeShiftX: 0.02, eyeShiftY: 0.09, eyeGap: 0.27, eyeScaleX: 0.90, eyeScaleY: 1.05, eyeScaleXL: 0.90, eyeScaleXR: 0.90, eyeScaleYL: 1.05, eyeScaleYR: 1.05, eyeSlantL: 0.0, eyeSlantR: 0.0, bulge: 0.0, jumpY: 0.0 } }\n ]);\n\n var bot3Blinks = new BlinkTrack([\n { start: 1.85, duration: 0.18, maxSquint: 0.95 },\n { start: 5.65, duration: 0.17, maxSquint: 0.95 },\n { start: 8.80, duration: 0.18, maxSquint: 0.95 },\n { start: 11.40, duration: 0.18, maxSquint: 0.95 },\n { start: 11.70, duration: 0.18, maxSquint: 0.95 },\n { start: 16.12, duration: 0.18, maxSquint: 0.95 },\n { start: 18.96, duration: 0.18, maxSquint: 0.95 }\n ]);\n\n function getBot3State(time) {\n var t = ((time % LOOP) + LOOP) % LOOP;\n var colorHex = getBot3ColorHex(t);\n var res = bot3Timeline.evaluate(t);\n var pose = res.pose;\n var squint = bot3Blinks.evaluate(t);\n\n var N_DANCE_CYCLES = 21;\n var omegaSway = (2.0 * Math.PI * N_DANCE_CYCLES) / LOOP;\n var omegaBounce = 4.0 * omegaSway;\n\n var bouncePhase = (t * omegaBounce) % (2.0 * Math.PI);\n var bounceShape = Math.pow(Math.sin(bouncePhase / 2.0), 2.0);\n var bounceY = (bounceShape - 0.48) * 0.052;\n\n var squashNorm = (bounceShape - 0.48) * 2.0;\n var danceScaleX = (pose.scaleX || 1.0) * (1.0 + squashNorm * 0.068);\n var danceScaleY = (pose.scaleY || 1.0) * (1.0 - squashNorm * 0.068);\n\n var swayX = Math.sin(t * omegaSway) * 0.15;\n var swayRoll = -Math.sin(t * omegaSway) * 0.20 + Math.cos(t * omegaBounce) * 0.035;\n\n var bot = {\n visible: true,\n scale: pose.scale || 1.0,\n scaleX: danceScaleX,\n scaleY: danceScaleY,\n x: (pose.x || 0.0) + swayX,\n y: (pose.jumpY || 0.0) + bounceY,\n jumpY: (pose.jumpY || 0.0) + bounceY,\n yaw: pose.yaw || 0.0,\n pitch: pose.pitch || 0.0,\n roll: (pose.roll || 0.0) + swayRoll,\n eyeShiftX: pose.eyeShiftX !== undefined ? pose.eyeShiftX : 0.02,\n eyeShiftY: pose.eyeShiftY !== undefined ? pose.eyeShiftY : (0.09 - bounceY * 0.25),\n eyeScaleX: pose.eyeScaleX,\n eyeScaleY: pose.eyeScaleY,\n eyeScaleXL: pose.eyeScaleXL !== undefined ? pose.eyeScaleXL : (pose.eyeScaleX !== undefined ? pose.eyeScaleX : 0.90),\n eyeScaleXR: pose.eyeScaleXR !== undefined ? pose.eyeScaleXR : (pose.eyeScaleX !== undefined ? pose.eyeScaleX : 0.90),\n eyeScaleYL: pose.eyeScaleYL !== undefined ? pose.eyeScaleYL : (pose.eyeScaleY !== undefined ? pose.eyeScaleY : 1.05),\n eyeScaleYR: pose.eyeScaleYR !== undefined ? pose.eyeScaleYR : (pose.eyeScaleY !== undefined ? pose.eyeScaleY : 1.05),\n eyeSlantL: pose.eyeSlantL !== undefined ? pose.eyeSlantL : (pose.eyeSlant || 0.0),\n eyeSlantR: pose.eyeSlantR !== undefined ? pose.eyeSlantR : -(pose.eyeSlant || 0.0),\n eyeGap: pose.eyeGap !== undefined ? pose.eyeGap : 0.27,\n bulge: pose.bulge || 0.0,\n squint: squint,\n bodyColor: colorHex,\n eyeColor: 0x222126\n };\n\n return { botId: 3, type: 'bot3', label: res.label, bot: bot, dots: [] };\n }\n\n // --- #4 Observer (屏读观察者) ---\n var BOT4_T_ROW = LOOP / 16.0;\n var pBot4Pose = function (yaw, eyeShiftX) {\n return {\n scale: 1.0, scaleX: 1.0, scaleY: 1.0,\n yaw: yaw, pitch: 0.0, roll: 0.0,\n eyeShiftX: eyeShiftX, eyeShiftY: 0.0,\n bulge: 0.0, jumpY: 0.0\n };\n };\n\n var bot4Keyframes = [\n { t: 0.00, label: 'raster-0-right', pose: pBot4Pose(0.26, 0.042) }\n ];\n\n for (var k = 0; k < 16; k++) {\n var tBase = k * BOT4_T_ROW;\n var tSnapStart = tBase + 0.12;\n var tLeftLand = tBase + 0.24;\n var tLeftEnd = tBase + 0.52;\n var tCenterLand = tBase + 0.60;\n var tCenterEnd = tBase + 0.88;\n var tRightLand = tBase + 0.96;\n\n bot4Keyframes.push({ t: tSnapStart, label: 'raster-' + k + '-hold-right', ease: 'linear', pose: pBot4Pose(0.26, 0.042) });\n bot4Keyframes.push({ t: tLeftLand, label: 'raster-' + k + '-snap-left', ease: 'easeInOutQuad', pose: pBot4Pose(-0.26, -0.042) });\n bot4Keyframes.push({ t: tLeftEnd, label: 'raster-' + k + '-hold-left', ease: 'linear', pose: pBot4Pose(-0.26, -0.042) });\n bot4Keyframes.push({ t: tCenterLand, label: 'raster-' + k + '-step-center', ease: 'easeInOutQuad', pose: pBot4Pose(0.00, 0.000) });\n bot4Keyframes.push({ t: tCenterEnd, label: 'raster-' + k + '-hold-center', ease: 'linear', pose: pBot4Pose(0.00, 0.000) });\n bot4Keyframes.push({ t: tRightLand, label: 'raster-' + k + '-step-right', ease: 'easeInOutQuad', pose: pBot4Pose(0.26, 0.042) });\n\n if (k < 15) {\n bot4Keyframes.push({ t: (k + 1) * BOT4_T_ROW, label: 'raster-' + (k + 1) + '-init', ease: 'linear', pose: pBot4Pose(0.26, 0.042) });\n }\n }\n bot4Keyframes.push({ t: LOOP, label: 'raster-end', ease: 'linear', pose: pBot4Pose(0.26, 0.042) });\n\n var bot4Timeline = new PoseTimeline(bot4Keyframes);\n\n function getBot4State(time) {\n var t = ((time % LOOP) + LOOP) % LOOP;\n var res = bot4Timeline.evaluate(t);\n var pose = res.pose;\n\n var bot = {\n visible: true,\n scale: pose.scale,\n scaleX: pose.scaleX,\n scaleY: pose.scaleY,\n x: 0.0,\n y: 0.0,\n yaw: pose.yaw,\n pitch: pose.pitch,\n roll: pose.roll,\n eyeShiftX: pose.eyeShiftX,\n eyeShiftY: pose.eyeShiftY,\n eyeScaleX: 0.96,\n eyeScaleY: 0.96,\n eyeGap: 0.22,\n bulge: 0.0,\n squint: 0.0,\n bodyColor: 0x222126,\n eyeColor: 0xffffff\n };\n\n return { botId: 4, type: 'bot4', label: res.label, bot: bot, dots: [] };\n }\n\n // --- #5 Cube & Grid (方块与点阵) ---\n var bot5Timeline = new PoseTimeline([\n { t: 0.00, label: 'tucked', pose: { scaleX: 1.0, scaleY: 1.0, visible: false, scale: 0.0, yaw: 0.0, pitch: 0.0, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.0, eyeScaleX: 1.0, eyeScaleY: 1.0, eyeGap: 0.27, bulge: 0.0, squint: 0.0, jumpY: 0.0 } },\n { t: 2.22, label: 'tucked', pose: { scaleX: 1.0, scaleY: 1.0, visible: false, scale: 0.0, yaw: 0.0, pitch: 0.0, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.0, eyeScaleX: 1.0, eyeScaleY: 1.0, eyeGap: 0.27, bulge: 0.0, squint: 0.0, jumpY: 0.0 } },\n { t: 2.45, label: 'bouncy-pop-spin', ease: 'easeInOutQuad', pose: { scaleX: 1.0, scaleY: 1.0, visible: true, scale: 1.08, yaw: -Math.PI * 0.55, pitch: -0.02, roll: 0.04, eyeShiftX: 0.0, eyeShiftY: 0.0, eyeScaleX: 1.0, eyeScaleY: 1.0, eyeGap: 0.27, bulge: 0.0, squint: 0.0, jumpY: 0.06 } },\n { t: 2.68, label: 'bouncy-pop-spin', ease: 'easeInOutQuad', pose: { scaleX: 1.0, scaleY: 1.0, visible: true, scale: 1.03, yaw: -Math.PI * 1.03, pitch: -0.04, roll: 0.02, eyeShiftX: 0.0, eyeShiftY: 0.0, eyeScaleX: 1.0, eyeScaleY: 1.0, eyeGap: 0.27, bulge: 0.0, squint: 0.0, jumpY: 0.02 } },\n { t: 2.92, label: 'spin-reappear', ease: 'easeInOutQuad', pose: { scaleX: 1.0, scaleY: 1.0, visible: true, scale: 1.00, yaw: -Math.PI * 1.58, pitch: -0.05, roll: -0.03, eyeShiftX: -0.05, eyeShiftY: 0.035, eyeScaleX: 1.0, eyeScaleY: 1.0, eyeGap: 0.27, bulge: 0.0, squint: 0.0, jumpY: 0.0 } },\n { t: 3.06, label: 'land-settle', ease: 'easeOutCubic', pose: { scaleX: 1.0, scaleY: 1.0, visible: true, scale: 1.00, yaw: -Math.PI * 2.0 + 0.31, pitch: -0.05, roll: -0.05, eyeShiftX: -0.05, eyeShiftY: 0.035, eyeScaleX: 1.0, eyeScaleY: 1.0, eyeGap: 0.27, bulge: 0.0, squint: 0.0, jumpY: 0.0 } },\n { t: 3.28, label: 'eye-bulge', ease: 'easeInOutQuad', pose: { scaleX: 1.0, scaleY: 1.0, visible: true, scale: 1.00, yaw: -Math.PI * 2.0 + 0.31, pitch: -0.05, roll: -0.05, eyeShiftX: -0.05, eyeShiftY: 0.035, eyeScaleX: 1.0, eyeScaleY: 1.0, eyeGap: 0.27, bulge: 1.0, squint: 0.0, jumpY: 0.0 } },\n { t: 3.48, label: 'look-right-settle', ease: 'easeInOutQuad', pose: { scaleX: 1.0, scaleY: 1.0, visible: true, scale: 1.0, yaw: -Math.PI * 2.0 + 0.31, pitch: -0.05, roll: -0.05, eyeShiftX: -0.05, eyeShiftY: 0.035, eyeScaleX: 1.0, eyeScaleY: 1.0, eyeGap: 0.27, bulge: 0.0, squint: 0.0, jumpY: 0.0 } },\n { t: 3.64, label: 'look-right-settle', ease: 'linear', pose: { scale: 1.0, scaleX: 1.0, scaleY: 1.0, visible: true, scale: 1.0, yaw: -Math.PI * 2.0 + 0.31, pitch: -0.05, roll: -0.05, eyeShiftX: -0.05, eyeShiftY: 0.035, eyeScaleX: 1.0, eyeScaleY: 1.0, eyeGap: 0.27, bulge: 0.0, squint: 0.0, jumpY: 0.0 } },\n { t: 3.94, label: 'turn-to-lookup', ease: 'easeInOutQuad', pose: { visible: true, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: -Math.PI * 2.0 - 0.78, pitch: -0.21, roll: 0.0, eyeShiftX: -0.10, eyeShiftY: 0.035, eyeScaleX: 0.95, eyeScaleY: 0.88, eyeGap: 0.22, bulge: 0.0, squint: 0.0, jumpY: 0.0 } },\n { t: 4.28, label: 'lookup-still-blink-2', ease: 'linear', pose: { visible: true, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: -Math.PI * 2.0 - 0.78, pitch: -0.21, roll: 0.0, eyeShiftX: -0.10, eyeShiftY: 0.035, eyeScaleX: 0.95, eyeScaleY: 0.88, eyeGap: 0.22, bulge: 0.0, squint: 0.0, jumpY: 0.0 } },\n { t: 4.75, label: 'transition-to-right', ease: 'easeInOutQuad', pose: { visible: true, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: -Math.PI * 2.0 + 0.31, pitch: -0.05, roll: -0.05, eyeShiftX: -0.05, eyeShiftY: 0.035, eyeScaleX: 1.0, eyeScaleY: 1.0, eyeGap: 0.27, bulge: 0.0, squint: 0.0, jumpY: 0.0 } },\n { t: 6.12, label: 'look-right-curious', ease: 'linear', pose: { visible: true, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: -Math.PI * 2.0 + 0.31, pitch: -0.05, roll: -0.05, eyeShiftX: -0.05, eyeShiftY: 0.035, eyeScaleX: 1.0, eyeScaleY: 1.0, eyeGap: 0.27, bulge: 0.0, squint: 0.0, jumpY: 0.0 } },\n { t: 6.24, label: 'anticipation-squash', ease: 'easeInOutQuad', pose: { visible: true, scale: 1.0, scaleX: 1.16, scaleY: 0.85, yaw: -Math.PI * 2.0 + 0.28, pitch: -0.02, roll: -0.02, eyeShiftX: -0.05, eyeShiftY: 0.025, eyeScaleX: 1.10, eyeScaleY: 0.88, eyeGap: 0.27, bulge: 0.0, squint: 0.0, jumpY: -0.035 } },\n { t: 6.36, label: 'anticipation-rebound', ease: 'easeInOutQuad', pose: { visible: true, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: -Math.PI * 2.0 + 0.35, pitch: -0.04, roll: -0.04, eyeShiftX: -0.05, eyeShiftY: 0.035, eyeScaleX: 1.0, eyeScaleY: 1.0, eyeGap: 0.27, bulge: 0.0, squint: 0.0, jumpY: 0.02 } },\n { t: 6.52, label: 'exit-spin-right', ease: 'easeInOutQuad', pose: { visible: true, scale: 0.94, scaleX: 1.0, scaleY: 1.0, yaw: -Math.PI * 2.0 + 1.45, pitch: -0.03, roll: -0.02, eyeShiftX: -0.05, eyeShiftY: 0.035, eyeScaleX: 1.0, eyeScaleY: 1.0, eyeGap: 0.27, bulge: 0.0, squint: 0.0, jumpY: 0.0 } },\n { t: 6.72, label: 'exit-spin-right', ease: 'easeInOutQuad', pose: { visible: true, scale: 0.45, scaleX: 1.0, scaleY: 1.0, yaw: -Math.PI * 2.0 + 2.55, pitch: 0.0, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.0, eyeScaleX: 1.0, eyeScaleY: 1.0, eyeGap: 0.27, bulge: 0.0, squint: 0.0, jumpY: 0.0 } },\n { t: 6.88, label: 'exit-spin-right', ease: 'easeInOutQuad', pose: { visible: false, scale: 0.0, scaleX: 1.0, scaleY: 1.0, yaw: -Math.PI * 2.0 + 3.40, pitch: 0.0, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.0, eyeScaleX: 1.0, eyeScaleY: 1.0, eyeGap: 0.27, bulge: 0.0, squint: 0.0, jumpY: 0.0 } },\n { t: 20.783, label: 'idle', ease: 'linear', pose: { scaleX: 1.0, scaleY: 1.0, visible: false, scale: 0.0, yaw: -Math.PI * 2.0 + 3.40, pitch: 0.0, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.0, eyeScaleX: 1.0, eyeScaleY: 1.0, eyeGap: 0.27, bulge: 0.0, squint: 0.0, jumpY: 0.0 } }\n ]);\n\n var bot5Blinks = new BlinkTrack([\n { start: 3.73, duration: 0.12, maxSquint: 0.95 },\n { start: 4.06, duration: 0.12, maxSquint: 0.95 }\n ]);\n var bot5Dots = new DotGridRig(38.0, 10.1);\n\n function getBot5State(time) {\n var t = ((time % LOOP) + LOOP) % LOOP;\n var res = bot5Timeline.evaluate(t);\n var pose = res.pose;\n pose.squint = bot5Blinks.evaluate(t);\n pose.y = (pose.jumpY || 0.0);\n\n if (t >= 4.75 && t < 6.12) {\n pose.scale += Math.sin((t - 4.75) * 2.5) * 0.012;\n }\n var dots = bot5Dots.evaluate(t, pose.scale, pose.visible);\n\n return {\n botId: 5,\n type: 'bot5',\n label: res.label,\n dots: dots,\n bot: {\n visible: pose.visible,\n scale: pose.scale,\n scaleX: pose.scaleX,\n scaleY: pose.scaleY,\n x: pose.x || 0.0,\n y: pose.y,\n yaw: pose.yaw,\n pitch: pose.pitch,\n roll: pose.roll,\n eyeShiftX: pose.eyeShiftX,\n eyeShiftY: pose.eyeShiftY,\n eyeScaleX: pose.eyeScaleX,\n eyeScaleY: pose.eyeScaleY,\n eyeGap: pose.eyeGap,\n bulge: pose.bulge,\n squint: pose.squint,\n bodyColor: 0x222126,\n eyeColor: 0xffffff\n }\n };\n }\n\n // --- #6 Ghost Trail (幽灵分身) ---\n var bot6Timeline = new PoseTimeline([\n { t: 0.00, label: 'ghost-blink-1', pose: { splitL: 0.0, splitR: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: 0.0, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 0.40, label: 'giant-bulge-1-start', ease: 'easeInOutQuad', pose: { splitL: 0.0, splitR: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: -0.05, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.04, bulge: 0.6, jumpY: 0.0 } },\n { t: 0.65, label: 'giant-bulge-1-peak', ease: 'easeInOutQuad', pose: { splitL: 0.0, splitR: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: -0.05, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.08, bulge: 1.25, jumpY: 0.0 } },\n { t: 0.95, label: 'single-solid-1', ease: 'easeInOutQuad', pose: { splitL: 0.0, splitR: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: 0.0, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 2.40, label: 'single-solid-1', ease: 'linear', pose: { splitL: 0.0, splitR: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: 0.0, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 3.10, label: 'lookup-left-1', ease: 'easeInOutQuad', pose: { splitL: 0.0, splitR: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: -0.42, pitch: -0.04, roll: 0.02, eyeShiftX: -0.06, eyeShiftY: 0.02, bulge: 0.0, jumpY: 0.0 } },\n { t: 3.35, label: 'squash-prep-1', ease: 'easeInOutQuad', pose: { splitL: 0.0, splitR: 0.0, scale: 0.92, scaleX: 1.08, scaleY: 0.92, yaw: -0.40, pitch: -0.03, roll: 0.01, eyeShiftX: -0.055, eyeShiftY: -0.02, bulge: 0.0, jumpY: -0.01 } },\n { t: 3.65, label: 'purple-solo-split-1', ease: 'easeInOutQuad', pose: { splitL: 1.0, splitR: 0.0, scale: 0.46, scaleX: 1.0, scaleY: 1.0, yaw: -0.38, pitch: -0.02, roll: -0.03, eyeShiftX: -0.05, eyeShiftY: 0.01, bulge: 0.0, jumpY: 0.0 } },\n { t: 3.95, label: 'look-right-prep', ease: 'easeInOutQuad', pose: { splitL: 1.0, splitR: 0.0, scale: 0.46, scaleX: 1.0, scaleY: 1.0, yaw: 0.38, pitch: -0.02, roll: 0.02, eyeShiftX: 0.05, eyeShiftY: 0.01, bulge: 0.0, jumpY: 0.0 } },\n { t: 4.20, label: 'cyan-solo-split-1', ease: 'easeInOutQuad', pose: { splitL: 1.0, splitR: 1.0, scale: 0.46, scaleX: 1.0, scaleY: 1.0, yaw: 0.34, pitch: 0.0, roll: 0.0, eyeShiftX: 0.04, eyeShiftY: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 4.50, label: 'triple-dance-1', ease: 'easeInOutQuad', pose: { splitL: 1.0, splitR: 1.0, scale: 0.46, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: 0.0, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 7.40, label: 'triple-dance-1', ease: 'linear', pose: { splitL: 1.0, splitR: 1.0, scale: 0.46, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: 0.0, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 7.80, label: 'ghost-merge-1', ease: 'easeInOutQuad', pose: { splitL: 0.0, splitR: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: 0.0, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 8.50, label: 'single-solid-1-end', ease: 'linear', pose: { splitL: 0.0, splitR: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: 0.0, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 8.50, label: 'ghost-blink-2', pose: { splitL: 0.0, splitR: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: 0.0, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 8.90, label: 'giant-bulge-2-start', ease: 'easeInOutQuad', pose: { splitL: 0.0, splitR: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: -0.05, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.04, bulge: 0.6, jumpY: 0.0 } },\n { t: 9.15, label: 'giant-bulge-2-peak', ease: 'easeInOutQuad', pose: { splitL: 0.0, splitR: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: -0.05, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.08, bulge: 1.25, jumpY: 0.0 } },\n { t: 9.45, label: 'single-solid-2', ease: 'easeInOutQuad', pose: { splitL: 0.0, splitR: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: 0.0, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 10.90, label: 'single-solid-2', ease: 'linear', pose: { splitL: 0.0, splitR: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: 0.0, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 11.60, label: 'lookup-left-2', ease: 'easeInOutQuad', pose: { splitL: 0.0, splitR: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: -0.42, pitch: -0.04, roll: 0.02, eyeShiftX: -0.06, eyeShiftY: 0.02, bulge: 0.0, jumpY: 0.0 } },\n { t: 11.85, label: 'squash-prep-2', ease: 'easeInOutQuad', pose: { splitL: 0.0, splitR: 0.0, scale: 0.92, scaleX: 1.08, scaleY: 0.92, yaw: -0.40, pitch: -0.03, roll: 0.01, eyeShiftX: -0.055, eyeShiftY: -0.02, bulge: 0.0, jumpY: -0.01 } },\n { t: 12.15, label: 'purple-solo-split-2', ease: 'easeInOutQuad', pose: { splitL: 1.0, splitR: 0.0, scale: 0.46, scaleX: 1.0, scaleY: 1.0, yaw: -0.38, pitch: -0.02, roll: -0.03, eyeShiftX: -0.05, eyeShiftY: 0.01, bulge: 0.0, jumpY: 0.0 } },\n { t: 12.45, label: 'look-right-prep-2', ease: 'easeInOutQuad', pose: { splitL: 1.0, splitR: 0.0, scale: 0.46, scaleX: 1.0, scaleY: 1.0, yaw: 0.38, pitch: -0.02, roll: 0.02, eyeShiftX: 0.05, eyeShiftY: 0.01, bulge: 0.0, jumpY: 0.0 } },\n { t: 12.70, label: 'cyan-solo-split-2', ease: 'easeInOutQuad', pose: { splitL: 1.0, splitR: 1.0, scale: 0.46, scaleX: 1.0, scaleY: 1.0, yaw: 0.34, pitch: 0.0, roll: 0.0, eyeShiftX: 0.04, eyeShiftY: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 13.00, label: 'triple-dance-2', ease: 'easeInOutQuad', pose: { splitL: 1.0, splitR: 1.0, scale: 0.46, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: 0.0, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 15.90, label: 'triple-dance-2', ease: 'linear', pose: { splitL: 1.0, splitR: 1.0, scale: 0.46, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: 0.0, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 16.30, label: 'ghost-merge-2', ease: 'easeInOutQuad', pose: { splitL: 0.0, splitR: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: 0.0, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 17.00, label: 'single-solid-2-end', ease: 'linear', pose: { splitL: 0.0, splitR: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: 0.0, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 17.00, label: 'ghost-blink-3', pose: { splitL: 0.0, splitR: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: 0.0, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 17.40, label: 'giant-bulge-3-start', ease: 'easeInOutQuad', pose: { splitL: 0.0, splitR: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: -0.05, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.04, bulge: 0.6, jumpY: 0.0 } },\n { t: 17.65, label: 'giant-bulge-3-peak', ease: 'easeInOutQuad', pose: { splitL: 0.0, splitR: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: -0.05, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.08, bulge: 1.25, jumpY: 0.0 } },\n { t: 17.95, label: 'single-solid-3', ease: 'easeInOutQuad', pose: { splitL: 0.0, splitR: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: 0.0, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.0, bulge: 0.0, jumpY: 0.0 } },\n { t: 20.783, label: 'single-solid-3', ease: 'linear', pose: { splitL: 0.0, splitR: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: 0.0, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.0, bulge: 0.0, jumpY: 0.0 } }\n ]);\n\n var bot6Blinks = new BlinkTrack([\n { start: 0.00, duration: 0.25, maxSquint: 1.0 },\n { start: 1.05, duration: 0.12, maxSquint: 0.95 },\n { start: 2.70, duration: 0.12, maxSquint: 0.95 },\n { start: 3.20, duration: 0.14, maxSquint: 0.95 },\n { start: 8.50, duration: 0.25, maxSquint: 1.0 },\n { start: 9.55, duration: 0.12, maxSquint: 0.95 },\n { start: 11.20, duration: 0.12, maxSquint: 0.95 },\n { start: 11.70, duration: 0.14, maxSquint: 0.95 },\n { start: 17.00, duration: 0.25, maxSquint: 1.0 },\n { start: 18.05, duration: 0.12, maxSquint: 0.95 },\n { start: 19.50, duration: 0.12, maxSquint: 0.95 }\n ]);\n\n function getBot6State(time) {\n var t = ((time % LOOP) + LOOP) % LOOP;\n var res = bot6Timeline.evaluate(t);\n var pose = res.pose;\n var squint = bot6Blinks.evaluate(t);\n\n var splitL = pose.splitL || 0.0;\n var splitR = pose.splitR || 0.0;\n var maxSplit = Math.max(splitL, splitR);\n\n var omegaV = 3.649 * Math.PI * 2.0;\n var omegaH = 1.820 * Math.PI * 2.0;\n var waveY = Math.sin(t * omegaV) * 0.015 * maxSplit;\n var waveYL = Math.sin((t + 0.12) * omegaV) * 0.015 * splitL;\n var waveYR = Math.sin((t - 0.12) * omegaV) * 0.015 * splitR;\n\n var swayXC = Math.sin(t * omegaH) * 0.0220 * maxSplit;\n var swayXL = Math.sin((t + 0.12) * omegaH) * 0.0220 * splitL;\n var swayXR = Math.sin((t - 0.12) * omegaH) * 0.0220 * splitR;\n\n var centerShiftX = (splitL > 0.01 && splitR < 0.5) ? +0.018 * splitL : ((splitR > 0.01 && splitL < 0.5) ? -0.018 * splitR : 0.0);\n var sepDist = 0.258;\n var currentScale = pose.scale;\n\n var botCenter = {\n visible: true,\n scale: currentScale,\n scaleX: pose.scaleX || 1.0,\n scaleY: pose.scaleY || 1.0,\n x: swayXC + centerShiftX,\n y: (pose.jumpY || 0.0) + waveY,\n yaw: pose.yaw || 0.0,\n pitch: pose.pitch || 0.0,\n roll: pose.roll || 0.0,\n eyeShiftX: pose.eyeShiftX || 0.0,\n eyeShiftY: pose.eyeShiftY || 0.0,\n eyeScaleX: 1.0,\n eyeScaleY: 1.0,\n eyeGap: 0.27,\n bulge: pose.bulge || 0.0,\n squint: squint,\n bodyColor: 0x222126,\n eyeColor: 0xffffff,\n splitL: splitL,\n splitR: splitR\n };\n\n var spawnXL = -(0.11 + (sepDist - 0.11) * splitL);\n var ghostL = {\n visible: splitL > 0.01,\n scale: 0.46 * splitL,\n scaleX: 1.0,\n scaleY: 1.0,\n x: spawnXL + swayXL,\n y: waveYL,\n yaw: (pose.yaw || 0.0) * 0.5,\n pitch: (pose.pitch || 0.0) * 0.5,\n roll: (pose.roll || 0.0) * 0.5 - 0.03 * splitL,\n eyeShiftX: 0.0,\n eyeShiftY: 0.0,\n eyeScaleX: 0.85,\n eyeScaleY: 0.85,\n eyeGap: 0.27,\n bulge: 0.0,\n squint: squint,\n bodyColor: 0x8229cc,\n eyeColor: 0xe8cbfa\n };\n\n var spawnXR = +(0.11 + (sepDist - 0.11) * splitR);\n var ghostR = {\n visible: splitR > 0.01,\n scale: 0.46 * splitR,\n scaleX: 1.0,\n scaleY: 1.0,\n x: spawnXR + swayXR,\n y: waveYR,\n yaw: (pose.yaw || 0.0) * 0.5,\n pitch: (pose.pitch || 0.0) * 0.5,\n roll: (pose.roll || 0.0) * 0.5 + 0.03 * splitR,\n eyeShiftX: 0.0,\n eyeShiftY: 0.0,\n eyeScaleX: 0.85,\n eyeScaleY: 0.85,\n eyeGap: 0.27,\n bulge: 0.0,\n squint: squint,\n bodyColor: 0x47e4ad,\n eyeColor: 0xaff5dc\n };\n\n return {\n botId: 6,\n type: 'bot6',\n label: res.label,\n botCenter: botCenter,\n ghostL: ghostL,\n ghostR: ghostR,\n splitL: splitL,\n splitR: splitR,\n dots: []\n };\n }\n\n // --- #7 Satellite (环绕卫星) ---\n var bot7Timeline = new PoseTimeline([\n { t: 0.00, label: 'solid-upright', pose: { ringExpand: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: 0.0, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.0, eyeScaleX: 1.0, eyeScaleY: 0.20, bulge: 0.0, jumpY: 0.0, squint: 0.75, showEyes: true } },\n { t: 0.06, label: 'loop-blink-open', ease: 'linear', pose: { ringExpand: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: 0.0, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.0, eyeScaleX: 1.0, eyeScaleY: 1.0, bulge: 0.0, jumpY: 0.0, squint: 0.0, showEyes: true } },\n { t: 1.30, label: 'solid-idle-1', ease: 'linear', pose: { ringExpand: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: 0.0, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.0, eyeScaleX: 1.0, eyeScaleY: 1.0, bulge: 0.0, jumpY: 0.0, squint: 0.0, showEyes: true } },\n { t: 1.45, label: 'curious-look-left-1', ease: 'easeInOutQuad', pose: { ringExpand: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: -0.26, pitch: 0.0, roll: -0.14, eyeShiftX: -0.045, eyeShiftY: 0.0, eyeScaleX: 1.0, eyeScaleY: 1.0, bulge: 0.0, jumpY: 0.0, squint: 0.0, showEyes: true } },\n { t: 2.00, label: 'curious-look-left-1', ease: 'linear', pose: { ringExpand: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: -0.26, pitch: 0.0, roll: -0.14, eyeShiftX: -0.045, eyeShiftY: 0.0, eyeScaleX: 1.0, eyeScaleY: 1.0, bulge: 0.0, jumpY: 0.0, squint: 0.0, showEyes: true } },\n { t: 2.12, label: 'squash-prep-1', ease: 'easeInOutQuad', pose: { ringExpand: 0.0, scale: 1.0, scaleX: 1.05, scaleY: 0.95, yaw: 0.0, pitch: 0.01, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: -0.01, eyeScaleX: 1.05, eyeScaleY: 0.95, bulge: 0.0, jumpY: -0.008, squint: 0.0, showEyes: true } },\n { t: 2.24, label: 'anticipation-squash-1', ease: 'easeInOutQuad', pose: { ringExpand: 0.0, scale: 1.0, scaleX: 1.22, scaleY: 0.78, yaw: 0.0, pitch: 0.02, roll: 0.0, eyeShiftX: -0.015, eyeShiftY: -0.025, eyeScaleX: 1.18, eyeScaleY: 0.75, bulge: 0.0, jumpY: -0.024, squint: 0.0, showEyes: true } },\n { t: 2.40, label: 'anticipation-stretch-1', ease: 'easeInOutQuad', pose: { ringExpand: 0.0, scale: 0.96, scaleX: 0.88, scaleY: 1.18, yaw: 0.0, pitch: -0.04, roll: 0.36, eyeShiftX: -0.020, eyeShiftY: 0.035, eyeScaleX: 0.92, eyeScaleY: 1.12, bulge: 0.0, jumpY: 0.035, squint: 0.0, showEyes: true } },\n { t: 2.52, label: 'collapse-shrink-1', ease: 'easeInOutQuad', pose: { ringExpand: 0.0, scale: 0.65, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: -0.02, roll: 0.08, eyeShiftX: 0.0, eyeShiftY: 0.01, eyeScaleX: 0.95, eyeScaleY: 0.95, bulge: 0.0, jumpY: 0.015, squint: 0.0, showEyes: false } },\n { t: 2.56, label: 'collapse-core-1', ease: 'easeInOutQuad', pose: { ringExpand: 0.0, scale: 0.52, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: 0.0, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.0, eyeScaleX: 1.0, eyeScaleY: 1.0, bulge: 0.0, jumpY: 0.0, squint: 0.0, showEyes: false } },\n { t: 2.80, label: 'satellite-burst-1', ease: 'linear', pose: { ringExpand: 1.0, scale: 0.52, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: -0.02, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.01, eyeScaleX: 1.0, eyeScaleY: 1.0, bulge: 0.0, jumpY: 0.0, squint: 0.0, showEyes: true } },\n { t: 7.04, label: 'satellite-orbit-1', ease: 'linear', pose: { ringExpand: 1.0, scale: 0.52, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: -0.02, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.01, eyeScaleX: 1.0, eyeScaleY: 1.0, bulge: 0.0, jumpY: 0.0, squint: 0.0, showEyes: true } },\n { t: 7.30, label: 'suction-absorb-1', ease: 'linear', pose: { ringExpand: 0.0, scale: 0.72, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: 0.0, roll: -0.02, eyeShiftX: 0.0, eyeShiftY: 0.0, eyeScaleX: 1.0, eyeScaleY: 1.0, bulge: 0.0, jumpY: -0.005, squint: 0.0, showEyes: false } },\n { t: 7.46, label: 'expand-shoot-1', ease: 'easeInOutQuad', pose: { ringExpand: 0.0, scale: 1.0, scaleX: 0.88, scaleY: 1.18, yaw: 0.0, pitch: -0.03, roll: -0.32, eyeShiftX: 0.02, eyeShiftY: 0.035, eyeScaleX: 0.95, eyeScaleY: 1.10, bulge: 0.0, jumpY: 0.035, squint: 0.0, showEyes: true } },\n { t: 7.60, label: 'expand-land-1', ease: 'easeInOutQuad', pose: { ringExpand: 0.0, scale: 1.0, scaleX: 1.12, scaleY: 0.90, yaw: 0.0, pitch: 0.0, roll: -0.04, eyeShiftX: -0.02, eyeShiftY: -0.01, eyeScaleX: 1.05, eyeScaleY: 0.95, bulge: 0.0, jumpY: -0.014, squint: 0.0, showEyes: true } },\n { t: 7.72, label: 'settle-left-1', ease: 'easeInOutQuad', pose: { ringExpand: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: -0.12, pitch: 0.0, roll: 0.0, eyeShiftX: -0.035, eyeShiftY: 0.0, eyeScaleX: 1.0, eyeScaleY: 1.0, bulge: 0.0, jumpY: 0.0, squint: 0.0, showEyes: true } },\n { t: 7.86, label: 'sleepy-prep-1', ease: 'easeInOutQuad', pose: { ringExpand: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: 0.0, roll: -0.02, eyeShiftX: 0.0, eyeShiftY: 0.0, eyeScaleX: 1.0, eyeScaleY: 1.0, bulge: 0.0, jumpY: 0.0, squint: 0.0, showEyes: true } },\n { t: 7.98, label: 'sleepy-slits-1', ease: 'easeInOutQuad', pose: { ringExpand: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: 0.0, roll: -0.08, eyeShiftX: 0.0, eyeShiftY: 0.0, eyeScaleX: 0.88, eyeScaleY: 0.12, bulge: 0.0, jumpY: 0.0, squint: 0.95, showEyes: true } },\n { t: 8.06, label: 'sleepy-slits-hold-1', ease: 'linear', pose: { ringExpand: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: 0.0, roll: -0.08, eyeShiftX: 0.0, eyeShiftY: 0.0, eyeScaleX: 0.88, eyeScaleY: 0.12, bulge: 0.0, jumpY: 0.0, squint: 0.95, showEyes: true } },\n { t: 8.18, label: 'curious-look-right-1', ease: 'easeInOutQuad', pose: { ringExpand: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.32, pitch: -0.04, roll: 0.02, eyeShiftX: 0.048, eyeShiftY: 0.01, eyeScaleX: 1.0, eyeScaleY: 1.0, bulge: 0.0, jumpY: 0.0, squint: 0.0, showEyes: true } },\n { t: 10.00, label: 'curious-look-right-1', ease: 'linear', pose: { ringExpand: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.32, pitch: -0.04, roll: 0.02, eyeShiftX: 0.048, eyeShiftY: 0.01, eyeScaleX: 1.0, eyeScaleY: 1.0, bulge: 0.0, jumpY: 0.0, squint: 0.0, showEyes: true } },\n { t: 10.12, label: 'squash-prep-2', ease: 'easeInOutQuad', pose: { ringExpand: 0.0, scale: 1.0, scaleX: 1.06, scaleY: 0.94, yaw: 0.08, pitch: 0.01, roll: 0.0, eyeShiftX: 0.01, eyeShiftY: -0.01, eyeScaleX: 1.05, eyeScaleY: 0.95, bulge: 0.0, jumpY: -0.008, squint: 0.0, showEyes: true } },\n { t: 10.23, label: 'anticipation-squash-2', ease: 'easeInOutQuad', pose: { ringExpand: 0.0, scale: 1.0, scaleX: 1.22, scaleY: 0.78, yaw: 0.0, pitch: 0.02, roll: 0.0, eyeShiftX: -0.015, eyeShiftY: -0.025, eyeScaleX: 1.18, eyeScaleY: 0.75, bulge: 0.0, jumpY: -0.024, squint: 0.0, showEyes: true } },\n { t: 10.40, label: 'anticipation-stretch-2', ease: 'easeInOutQuad', pose: { ringExpand: 0.0, scale: 0.96, scaleX: 0.88, scaleY: 1.18, yaw: 0.0, pitch: -0.04, roll: 0.36, eyeShiftX: -0.020, eyeShiftY: 0.035, eyeScaleX: 0.92, eyeScaleY: 1.12, bulge: 0.0, jumpY: 0.035, squint: 0.0, showEyes: true } },\n { t: 10.52, label: 'collapse-shrink-2', ease: 'easeInOutQuad', pose: { ringExpand: 0.0, scale: 0.65, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: -0.02, roll: 0.08, eyeShiftX: 0.0, eyeShiftY: 0.01, eyeScaleX: 0.95, eyeScaleY: 0.95, bulge: 0.0, jumpY: 0.015, squint: 0.0, showEyes: false } },\n { t: 10.56, label: 'collapse-core-2', ease: 'easeInOutQuad', pose: { ringExpand: 0.0, scale: 0.52, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: 0.0, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.0, eyeScaleX: 1.0, eyeScaleY: 1.0, bulge: 0.0, jumpY: 0.0, squint: 0.0, showEyes: false } },\n { t: 10.80, label: 'satellite-burst-2', ease: 'linear', pose: { ringExpand: 1.0, scale: 0.52, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: -0.02, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.01, eyeScaleX: 1.0, eyeScaleY: 1.0, bulge: 0.0, jumpY: 0.0, squint: 0.0, showEyes: true } },\n { t: 15.04, label: 'satellite-orbit-2', ease: 'linear', pose: { ringExpand: 1.0, scale: 0.52, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: -0.02, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.01, eyeScaleX: 1.0, eyeScaleY: 1.0, bulge: 0.0, jumpY: 0.0, squint: 0.0, showEyes: true } },\n { t: 15.30, label: 'suction-absorb-2', ease: 'linear', pose: { ringExpand: 0.0, scale: 0.72, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: 0.0, roll: -0.02, eyeShiftX: 0.0, eyeShiftY: 0.0, eyeScaleX: 1.0, eyeScaleY: 1.0, bulge: 0.0, jumpY: -0.005, squint: 0.0, showEyes: false } },\n { t: 15.46, label: 'expand-shoot-2', ease: 'easeInOutQuad', pose: { ringExpand: 0.0, scale: 1.0, scaleX: 0.88, scaleY: 1.18, yaw: 0.0, pitch: -0.03, roll: -0.32, eyeShiftX: 0.02, eyeShiftY: 0.035, eyeScaleX: 0.95, eyeScaleY: 1.10, bulge: 0.0, jumpY: 0.035, squint: 0.0, showEyes: true } },\n { t: 15.62, label: 'expand-land-2', ease: 'easeInOutQuad', pose: { ringExpand: 0.0, scale: 1.0, scaleX: 1.12, scaleY: 0.90, yaw: 0.0, pitch: 0.0, roll: -0.04, eyeShiftX: -0.02, eyeShiftY: -0.01, eyeScaleX: 1.05, eyeScaleY: 0.95, bulge: 0.0, jumpY: -0.014, squint: 0.0, showEyes: true } },\n { t: 15.72, label: 'settle-left-2', ease: 'easeInOutQuad', pose: { ringExpand: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: -0.12, pitch: 0.0, roll: 0.0, eyeShiftX: -0.035, eyeShiftY: 0.0, eyeScaleX: 1.0, eyeScaleY: 1.0, bulge: 0.0, jumpY: 0.0, squint: 0.0, showEyes: true } },\n { t: 15.86, label: 'sleepy-prep-2', ease: 'easeInOutQuad', pose: { ringExpand: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: 0.0, roll: -0.02, eyeShiftX: 0.0, eyeShiftY: 0.0, eyeScaleX: 1.0, eyeScaleY: 1.0, bulge: 0.0, jumpY: 0.0, squint: 0.0, showEyes: true } },\n { t: 15.98, label: 'sleepy-slits-2', ease: 'easeInOutQuad', pose: { ringExpand: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: 0.0, roll: -0.08, eyeShiftX: 0.0, eyeShiftY: 0.0, eyeScaleX: 0.88, eyeScaleY: 0.12, bulge: 0.0, jumpY: 0.0, squint: 0.95, showEyes: true } },\n { t: 16.06, label: 'sleepy-slits-hold-2', ease: 'linear', pose: { ringExpand: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: 0.0, roll: -0.08, eyeShiftX: 0.0, eyeShiftY: 0.0, eyeScaleX: 0.88, eyeScaleY: 0.12, bulge: 0.0, jumpY: 0.0, squint: 0.95, showEyes: true } },\n { t: 16.18, label: 'curious-look-right-2', ease: 'easeInOutQuad', pose: { ringExpand: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.32, pitch: -0.04, roll: 0.02, eyeShiftX: 0.048, eyeShiftY: 0.01, eyeScaleX: 1.0, eyeScaleY: 1.0, bulge: 0.0, jumpY: 0.0, squint: 0.0, showEyes: true } },\n { t: 16.24, label: 'glance-blink-prep-2', ease: 'easeInOutQuad', pose: { ringExpand: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.32, pitch: -0.04, roll: 0.02, eyeShiftX: 0.048, eyeShiftY: 0.01, eyeScaleX: 1.0, eyeScaleY: 1.0, bulge: 0.0, jumpY: 0.0, squint: 0.0, showEyes: true } },\n { t: 16.32, label: 'glance-blink-2', ease: 'easeInOutQuad', pose: { ringExpand: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.32, pitch: -0.04, roll: 0.02, eyeShiftX: 0.048, eyeShiftY: 0.01, eyeScaleX: 1.0, eyeScaleY: 0.12, bulge: 0.0, jumpY: 0.0, squint: 0.85, showEyes: true } },\n { t: 16.40, label: 'glance-blink-open-2', ease: 'easeInOutQuad', pose: { ringExpand: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.32, pitch: -0.04, roll: 0.02, eyeShiftX: 0.048, eyeShiftY: 0.01, eyeScaleX: 1.0, eyeScaleY: 1.0, bulge: 0.0, jumpY: 0.0, squint: 0.0, showEyes: true } },\n { t: 17.80, label: 'curious-look-right-2', ease: 'linear', pose: { ringExpand: 0.0, scale: 1.0, scaleX: 1.0, scaleY: 1.0, yaw: 0.32, pitch: -0.04, roll: 0.02, eyeShiftX: 0.048, eyeShiftY: 0.01, eyeScaleX: 1.0, eyeScaleY: 1.0, bulge: 0.0, jumpY: 0.0, squint: 0.0, showEyes: true } },\n { t: 18.12, label: 'squash-prep-3', ease: 'easeInOutQuad', pose: { ringExpand: 0.0, scale: 1.0, scaleX: 1.06, scaleY: 0.94, yaw: 0.28, pitch: 0.01, roll: 0.0, eyeShiftX: 0.042, eyeShiftY: -0.01, eyeScaleX: 1.05, eyeScaleY: 0.95, bulge: 0.0, jumpY: -0.008, squint: 0.0, showEyes: true } },\n { t: 18.22, label: 'anticipation-squash-3', ease: 'easeInOutQuad', pose: { ringExpand: 0.0, scale: 1.0, scaleX: 1.22, scaleY: 0.78, yaw: 0.22, pitch: 0.02, roll: 0.0, eyeShiftX: 0.040, eyeShiftY: -0.025, eyeScaleX: 1.18, eyeScaleY: 0.75, bulge: 0.0, jumpY: -0.024, squint: 0.0, showEyes: true } },\n { t: 18.38, label: 'anticipation-stretch-3', ease: 'easeInOutQuad', pose: { ringExpand: 0.0, scale: 0.96, scaleX: 0.88, scaleY: 1.18, yaw: 0.0, pitch: -0.04, roll: 0.36, eyeShiftX: -0.020, eyeShiftY: 0.035, eyeScaleX: 0.92, eyeScaleY: 1.12, bulge: 0.0, jumpY: 0.035, squint: 0.0, showEyes: true } },\n { t: 18.50, label: 'collapse-shrink-3', ease: 'easeInOutQuad', pose: { ringExpand: 0.0, scale: 0.65, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: -0.02, roll: 0.08, eyeShiftX: 0.0, eyeShiftY: 0.01, eyeScaleX: 0.95, eyeScaleY: 0.95, bulge: 0.0, jumpY: 0.015, squint: 0.0, showEyes: false } },\n { t: 18.56, label: 'collapse-core-3', ease: 'easeInOutQuad', pose: { ringExpand: 0.0, scale: 0.52, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: 0.0, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.0, eyeScaleX: 1.0, eyeScaleY: 1.0, bulge: 0.0, jumpY: 0.0, squint: 0.0, showEyes: false } },\n { t: 18.80, label: 'satellite-burst-3', ease: 'linear', pose: { ringExpand: 1.0, scale: 0.52, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: -0.02, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.01, eyeScaleX: 1.0, eyeScaleY: 1.0, bulge: 0.0, jumpY: 0.0, squint: 0.0, showEyes: true } },\n { t: 20.783, label: 'satellite-orbit-3', ease: 'linear', pose: { ringExpand: 1.0, scale: 0.52, scaleX: 1.0, scaleY: 1.0, yaw: 0.0, pitch: -0.02, roll: 0.0, eyeShiftX: 0.0, eyeShiftY: 0.01, eyeScaleX: 1.0, eyeScaleY: 1.0, bulge: 0.0, jumpY: 0.0, squint: 0.0, showEyes: true } }\n ]);\n\n var SATELLITE_RING_OFFSETS = [\n { x: 0, y: -46.0 },\n { x: 45.4, y: -46.0 },\n { x: 45.4, y: 0 },\n { x: 45.4, y: 46.0 },\n { x: 0, y: 46.0 },\n { x: -45.4, y: 46.0 },\n { x: -45.4, y: 0 },\n { x: -45.4, y: -46.0 }\n ];\n\n var ORBIT_PERIOD = 3.600;\n var CAM_YAW_AMP = 0.45;\n var CAM_PITCH_AMP = 0.35;\n var CAM_PITCH_NEUTRAL = -0.10;\n var CAM_AZIMUTH_OFFSET = -0.118;\n var CAM_ELEVATION_OFFSET = 0.146;\n\n function getBot7State(time) {\n var t = ((time % LOOP) + LOOP) % LOOP;\n var res = bot7Timeline.evaluate(t);\n var pose = res.pose;\n var ringExpand = pose.ringExpand;\n\n var tOrbitStart = 3.20;\n if (t >= 17.0) {\n tOrbitStart = 19.20;\n } else if (t >= 9.0) {\n tOrbitStart = 11.20;\n }\n\n var tOrbit = ((t - tOrbitStart) % ORBIT_PERIOD + ORBIT_PERIOD) % ORBIT_PERIOD;\n var waveAngle = - (tOrbit / ORBIT_PERIOD) * Math.PI * 2 - Math.PI / 2;\n\n var targetDirX = Math.cos(waveAngle);\n var targetDirY = Math.sin(waveAngle);\n\n var camYaw = targetDirX * CAM_YAW_AMP * ringExpand;\n var camPitch = (CAM_PITCH_NEUTRAL - targetDirY * CAM_PITCH_AMP) * ringExpand;\n\n var trackingYaw = camYaw + CAM_AZIMUTH_OFFSET * ringExpand;\n var trackingPitch = camPitch - CAM_ELEVATION_OFFSET * ringExpand;\n\n var hoverY = Math.sin((tOrbit / ORBIT_PERIOD) * 2 * Math.PI) * 0.006 * ringExpand;\n var hoverYPx = hoverY * 500.0;\n var dynamicRoll = targetDirX * 0.04 * ringExpand;\n\n var dots = [];\n if (ringExpand > 0.001) {\n var dotDist = (35.0 + 10.4 * ringExpand) / 45.4;\n for (var i = 0; i < 8; i++) {\n var off = SATELLITE_RING_OFFSETS[i];\n var dotAngle = Math.atan2(-off.y, off.x);\n var diff = Math.cos(waveAngle - dotAngle);\n var pulse = Math.pow(Math.max(0, diff), 6);\n var r = ringExpand * (7.0 + pulse * 4.5);\n dots.push({\n x: off.x * dotDist,\n y: off.y * dotDist - hoverYPx,\n r: r,\n visible: true\n });\n }\n }\n\n var bot = {\n visible: true,\n scale: pose.scale,\n scaleX: pose.scaleX,\n scaleY: pose.scaleY,\n x: 0.0,\n y: (pose.jumpY || 0.0) + hoverY,\n yaw: (pose.yaw || 0.0) + trackingYaw,\n pitch: (pose.pitch || 0.0) + trackingPitch,\n roll: (pose.roll || 0.0) + dynamicRoll,\n eyeShiftX: pose.eyeShiftX || 0.0,\n eyeShiftY: pose.eyeShiftY || 0.0,\n eyeScaleX: pose.eyeScaleX,\n eyeScaleY: pose.eyeScaleY,\n eyeGap: 0.27,\n bulge: pose.bulge,\n squint: pose.squint || 0.0,\n showEyes: pose.showEyes !== false,\n bodyColor: 0x222126,\n eyeColor: 0xffffff\n };\n\n return { botId: 7, type: 'bot7', label: res.label, bot: bot, dots: dots };\n }\n\n /* =========================================================================\n 4. Bot Catalog Registry & State Dispatcher\n ========================================================================= */\n var BOTS = [\n { id: 1, key: 'sentry', name: 'Sentry', title: '哨兵', desc: '逐行专注扫读、机灵侧倾 (代码审视/终端监控)', stateFn: getBot1State },\n { id: 2, key: 'attitude', name: 'Attitude', title: '傲娇小怪', desc: '3D后空翻、单侧挑眉与犀利聚焦 (AI拟人化助手/成功反馈)', stateFn: getBot2State },\n { id: 3, key: 'chameleon', name: 'Chameleon', title: '动感变色龙', desc: '240bpm 高频街舞摇摆、12色轮转 (音乐播放器/动感加载)', stateFn: getBot3State },\n { id: 4, key: 'observer', name: 'Observer', title: '屏读观察者', desc: '纯水平左-中-右栅格阅读扫读 (屏幕扫描/数据同步)', stateFn: getBot4State },\n { id: 5, key: 'cube', name: 'Cube & Grid', title: '方块与点阵', desc: '3x3呼吸点阵破土自旋跳跃、大眼暴胀 (启动/生成态/弹窗)', stateFn: getBot5State },\n { id: 6, key: 'ghost', name: 'Ghost Trail', title: '幽灵分身', desc: '身后诞生紫青双分身、蛇形浮游共舞 (多线程运算/集群协同)', stateFn: getBot6State },\n { id: 7, key: 'satellite', name: 'Satellite', title: '环绕卫星', desc: '核心塌陷蓄力、8卫星逆时针公转与3D注视 (网络加载/能量缓冲)', stateFn: getBot7State }\n ];\n\n function resolveBotId(idOrKey) {\n if (typeof idOrKey === 'number') return idOrKey;\n if (typeof idOrKey === 'string') {\n var lower = idOrKey.toLowerCase().trim();\n var num = parseInt(lower.replace('#', ''), 10);\n if (!isNaN(num) && num >= 1 && num <= 7) return num;\n for (var i = 0; i < BOTS.length; i++) {\n if (BOTS[i].key === lower || BOTS[i].name.toLowerCase() === lower) {\n return BOTS[i].id;\n }\n }\n }\n return 1;\n }\n\n function getBotState(botId, time) {\n var id = resolveBotId(botId);\n switch (id) {\n case 1: return getBot1State(time);\n case 2: return getBot2State(time);\n case 3: return getBot3State(time);\n case 4: return getBot4State(time);\n case 5: return getBot5State(time);\n case 6: return getBot6State(time);\n case 7: return getBot7State(time);\n default: return getBot1State(time);\n }\n }\n\n /* =========================================================================\n 5. High-Level Mount Renderer & Player Controller\n ========================================================================= */\n var stageCounter = 0;\n\n function mount(container, options) {\n if (!container) {\n throw new Error('[OpenBotMotion] mount requires a valid DOM element.');\n }\n options = options || {};\n\n var activeBotId = resolveBotId(options.bot !== undefined ? options.bot : 1);\n var size = options.size !== undefined ? options.size : 280;\n var autoplay = options.autoplay !== undefined ? options.autoplay : true;\n var loop = options.loop !== undefined ? options.loop : true;\n var speed = options.speed !== undefined ? options.speed : 1.0;\n var onFrame = typeof options.onFrame === 'function' ? options.onFrame : null;\n\n container.innerHTML = '';\n var uid = ++stageCounter;\n var svgNS = 'http://www.w3.org/2000/svg';\n\n var svg = document.createElementNS(svgNS, 'svg');\n svg.setAttribute('class', 'open-bot-motion-svg');\n svg.setAttribute('viewBox', '-140 -140 280 280');\n svg.setAttribute('width', typeof size === 'number' ? (size + 'px') : size);\n svg.setAttribute('height', typeof size === 'number' ? (size + 'px') : size);\n svg.setAttribute('preserveAspectRatio', 'xMidYMid meet');\n container.appendChild(svg);\n\n var defs = document.createElementNS(svgNS, 'defs');\n svg.appendChild(defs);\n\n var filter = document.createElementNS(svgNS, 'filter');\n filter.setAttribute('id', 'obm-gooey-' + uid);\n filter.setAttribute('x', '-50%');\n filter.setAttribute('y', '-50%');\n filter.setAttribute('width', '200%');\n filter.setAttribute('height', '200%');\n filter.innerHTML =\n '<feGaussianBlur in=\"SourceGraphic\" stdDeviation=\"5.5\" result=\"blur\" />' +\n '<feColorMatrix in=\"blur\" mode=\"matrix\" values=\"1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 18 -7\" result=\"goo\" />' +\n '<feComposite in=\"SourceGraphic\" in2=\"goo\" operator=\"atop\" />';\n defs.appendChild(filter);\n\n function createClipDef(clipId, pathId) {\n var cp = document.createElementNS(svgNS, 'clipPath');\n cp.setAttribute('id', clipId);\n var p = document.createElementNS(svgNS, 'path');\n p.setAttribute('id', pathId);\n cp.appendChild(p);\n defs.appendChild(cp);\n return p;\n }\n\n var clipPathCenter = createClipDef('obm-clip-center-' + uid, 'obm-cpp-center-' + uid);\n var clipPathGhostL = createClipDef('obm-clip-ghostL-' + uid, 'obm-cpp-ghostL-' + uid);\n var clipPathGhostR = createClipDef('obm-clip-ghostR-' + uid, 'obm-cpp-ghostR-' + uid);\n\n var dotsLayer = document.createElementNS(svgNS, 'g');\n dotsLayer.setAttribute('class', 'dots-layer');\n svg.appendChild(dotsLayer);\n\n var botLayer = document.createElementNS(svgNS, 'g');\n botLayer.setAttribute('class', 'bot-layer');\n svg.appendChild(botLayer);\n\n var bodiesLayer = document.createElementNS(svgNS, 'g');\n bodiesLayer.setAttribute('class', 'bodies-layer');\n botLayer.appendChild(bodiesLayer);\n\n var eyesLayer = document.createElementNS(svgNS, 'g');\n eyesLayer.setAttribute('class', 'eyes-layer');\n botLayer.appendChild(eyesLayer);\n\n function createBotNode(clipId, defaultColor) {\n var bodyPath = document.createElementNS(svgNS, 'path');\n bodyPath.setAttribute('fill', defaultColor);\n bodiesLayer.appendChild(bodyPath);\n\n var eyesGroup = document.createElementNS(svgNS, 'g');\n eyesGroup.setAttribute('clip-path', 'url(#' + clipId + ')');\n\n var eyeL = document.createElementNS(svgNS, 'rect');\n eyeL.setAttribute('fill', '#ffffff');\n var eyeR = document.createElementNS(svgNS, 'rect');\n eyeR.setAttribute('fill', '#ffffff');\n eyesGroup.appendChild(eyeL);\n eyesGroup.appendChild(eyeR);\n eyesLayer.appendChild(eyesGroup);\n\n return { bodyPath: bodyPath, eyesGroup: eyesGroup, eyeL: eyeL, eyeR: eyeR, defaultColor: defaultColor };\n }\n\n var ghostLNode = createBotNode('obm-clip-ghostL-' + uid, '#8229cc');\n var ghostRNode = createBotNode('obm-clip-ghostR-' + uid, '#47e4ad');\n var centerNode = createBotNode('obm-clip-center-' + uid, CHARCOAL);\n\n var projector = new SvgProjector({ viewportSize: 280 });\n\n function colorToCss(c, def) {\n if (!c) return def;\n if (typeof c === 'number') return '#' + c.toString(16).padStart(6, '0');\n return c;\n }\n\n function applyPose(node, clipPathEl, pose) {\n if (!node || !pose || pose.visible === false || (pose.scale !== undefined && pose.scale <= 0.001)) {\n if (node && node.bodyPath) node.bodyPath.style.display = 'none';\n if (node && node.eyesGroup) node.eyesGroup.style.display = 'none';\n if (clipPathEl) clipPathEl.setAttribute('d', '');\n return;\n }\n node.bodyPath.style.display = '';\n\n var res = projector.projectRoundedCube(pose);\n if (!res.visible || !res.bodyPath) {\n node.bodyPath.style.display = 'none';\n node.eyesGroup.style.display = 'none';\n if (clipPathEl) clipPathEl.setAttribute('d', '');\n return;\n }\n\n node.bodyPath.setAttribute('d', res.bodyPath);\n if (clipPathEl) clipPathEl.setAttribute('d', res.bodyPath);\n\n var bodyFill = colorToCss(pose.bodyColor, node.defaultColor);\n var eyeFill = colorToCss(pose.eyeColor, '#ffffff');\n node.bodyPath.setAttribute('fill', bodyFill);\n\n if (res.eyes && res.eyes.length > 0) {\n node.eyesGroup.style.display = '';\n while (node.eyesGroup.children.length < res.eyes.length) {\n node.eyesGroup.appendChild(document.createElementNS(svgNS, 'rect'));\n }\n while (node.eyesGroup.children.length > res.eyes.length) {\n node.eyesGroup.removeChild(node.eyesGroup.lastChild);\n }\n\n for (var i = 0; i < res.eyes.length; i++) {\n var d = res.eyes[i];\n var rectEl = node.eyesGroup.children[i];\n rectEl.setAttribute('x', (-d.w / 2).toFixed(2));\n rectEl.setAttribute('y', (-d.h / 2).toFixed(2));\n rectEl.setAttribute('width', d.w.toFixed(2));\n rectEl.setAttribute('height', d.h.toFixed(2));\n rectEl.setAttribute('rx', d.rx.toFixed(2));\n rectEl.setAttribute('ry', d.ry.toFixed(2));\n rectEl.setAttribute('transform', 'translate(' + d.cx.toFixed(2) + ', ' + d.cy.toFixed(2) + ') rotate(' + d.angle.toFixed(2) + ')');\n rectEl.setAttribute('opacity', (d.opacity !== undefined ? d.opacity : 1.0).toFixed(2));\n rectEl.setAttribute('fill', colorToCss(d.color, eyeFill));\n }\n } else {\n node.eyesGroup.style.display = 'none';\n }\n }\n\n function renderFrame(time) {\n var st = getBotState(activeBotId, time);\n\n // Layer ordering\n if (activeBotId === 7 && svg.lastElementChild !== dotsLayer) {\n svg.appendChild(dotsLayer);\n } else if (activeBotId !== 7 && svg.firstElementChild !== dotsLayer) {\n svg.insertBefore(dotsLayer, botLayer);\n }\n\n // Render dots layer\n if (st && st.dots && st.dots.length > 0) {\n dotsLayer.style.display = '';\n while (dotsLayer.children.length < st.dots.length) {\n dotsLayer.appendChild(document.createElementNS(svgNS, 'circle'));\n }\n while (dotsLayer.children.length > st.dots.length) {\n dotsLayer.removeChild(dotsLayer.lastElementChild);\n }\n for (var di = 0; di < st.dots.length; di++) {\n var dot = st.dots[di];\n var cEl = dotsLayer.children[di];\n if (!dot || !dot.visible || dot.r <= 0.1) {\n cEl.style.display = 'none';\n } else {\n cEl.style.display = '';\n cEl.setAttribute('cx', dot.x.toFixed(2));\n cEl.setAttribute('cy', dot.y.toFixed(2));\n cEl.setAttribute('r', dot.r.toFixed(2));\n cEl.setAttribute('fill', CHARCOAL);\n }\n }\n } else {\n dotsLayer.style.display = 'none';\n }\n\n // Render bot bodies\n if (activeBotId === 6) {\n applyPose(ghostLNode, clipPathGhostL, st.ghostL);\n applyPose(ghostRNode, clipPathGhostR, st.ghostR);\n applyPose(centerNode, clipPathCenter, st.botCenter);\n\n var maxSplit = Math.max(\n st.splitL !== undefined ? st.splitL : (st.botCenter && st.botCenter.splitL) || 0,\n st.splitR !== undefined ? st.splitR : (st.botCenter && st.botCenter.splitR) || 0\n );\n if (maxSplit > 0.08 && maxSplit < 0.92) {\n bodiesLayer.setAttribute('filter', 'url(#obm-gooey-' + uid + ')');\n } else {\n bodiesLayer.removeAttribute('filter');\n }\n } else {\n ghostLNode.bodyPath.style.display = 'none';\n ghostLNode.eyesGroup.style.display = 'none';\n ghostRNode.bodyPath.style.display = 'none';\n ghostRNode.eyesGroup.style.display = 'none';\n bodiesLayer.removeAttribute('filter');\n if (centerNode && st && st.bot) {\n applyPose(centerNode, clipPathCenter, st.bot);\n }\n }\n\n if (onFrame) {\n onFrame(time, st.label, st);\n }\n }\n\n // Playback state\n var currentTime = 0;\n var isPlaying = autoplay;\n var lastTimestamp = null;\n var rafId = null;\n\n function tick(timestamp) {\n if (!lastTimestamp) lastTimestamp = timestamp;\n var dt = (timestamp - lastTimestamp) / 1000.0;\n lastTimestamp = timestamp;\n\n if (isPlaying) {\n currentTime += dt * speed;\n if (loop) {\n currentTime = ((currentTime % LOOP) + LOOP) % LOOP;\n } else if (currentTime >= LOOP) {\n currentTime = LOOP;\n isPlaying = false;\n }\n }\n\n renderFrame(currentTime);\n\n if (isPlaying || loop) {\n rafId = requestAnimationFrame(tick);\n }\n }\n\n renderFrame(0);\n if (autoplay) {\n rafId = requestAnimationFrame(tick);\n }\n\n return {\n play: function () {\n if (!isPlaying) {\n isPlaying = true;\n lastTimestamp = null;\n rafId = requestAnimationFrame(tick);\n }\n },\n pause: function () {\n isPlaying = false;\n if (rafId) cancelAnimationFrame(rafId);\n },\n seek: function (t) {\n currentTime = clamp(t, 0, LOOP);\n renderFrame(currentTime);\n },\n setBot: function (idOrKey) {\n activeBotId = resolveBotId(idOrKey);\n renderFrame(currentTime);\n },\n setSpeed: function (s) {\n speed = Math.max(0.01, s);\n },\n setSize: function (newSize) {\n size = newSize;\n svg.setAttribute('width', typeof size === 'number' ? (size + 'px') : size);\n svg.setAttribute('height', typeof size === 'number' ? (size + 'px') : size);\n },\n getBotId: function () {\n return activeBotId;\n },\n getTime: function () {\n return currentTime;\n },\n isPlaying: function () {\n return isPlaying;\n },\n destroy: function () {\n if (rafId) cancelAnimationFrame(rafId);\n container.innerHTML = '';\n }\n };\n }\n\n return {\n version: '1.0.0',\n LOOP: LOOP,\n BOTS: BOTS,\n Easings: Easings,\n PoseTimeline: PoseTimeline,\n BlinkTrack: BlinkTrack,\n DotGridRig: DotGridRig,\n SvgProjector: SvgProjector,\n resolveBotId: resolveBotId,\n getBotState: getBotState,\n getBot1State: getBot1State,\n getBot2State: getBot2State,\n getBot3State: getBot3State,\n getBot4State: getBot4State,\n getBot5State: getBot5State,\n getBot6State: getBot6State,\n getBot7State: getBot7State,\n mount: mount\n };\n}));\n","import motion from './vendor/open-bot-motion.cjs';\n\nconst NS = 'http://www.w3.org/2000/svg';\nlet nextClip = 0;\nconst clipPrefix = Math.random().toString(36).slice(2);\nconst element = (tag: string) => document.createElementNS(NS, tag);\ntype Frame = ReturnType<typeof motion.getBot7State>;\n// The authored orbit has a 3.6 s period. Loop just that span, not the complete\n// demo (whose final satellite frame does not match its initial resting pose).\nexport const orbitTime = (seconds: number) => seconds < .8 ? 2 + seconds : 2.8 + ((seconds - .8) % 3.6);\nexport function settleFrame(from: Frame, amount: number): Frame {\n const idle = motion.getBot7State(0), bot = { ...idle.bot };\n const t = 1 - (1 - amount) ** 3;\n for (const key of Object.keys(bot)) if (typeof bot[key] === 'number' && typeof from.bot[key] === 'number') {\n bot[key] = (from.bot[key] as number) * (1 - t) + (bot[key] as number) * t;\n }\n return { bot, dots: from.dots.map(dot => ({ ...dot, x: dot.x * (1 - t), y: dot.y * (1 - t), r: dot.r * (1 - t) })) };\n}\n\n/** Owns one SVG and one clock. Hidden/reduced-motion pages consume no frames. */\nexport class Satellite {\n readonly svg = element('svg');\n private projector = new motion.SvgProjector({ viewportSize: 280 });\n private body = element('path');\n private clipBody = element('path');\n private eyes = element('g');\n private dots = Array.from({ length: 8 }, () => element('circle'));\n private frame?: number;\n private elapsed = 0;\n private lastTime = 0;\n private settling = 0;\n private mode: 'rest' | 'run' | 'settle' = 'rest';\n private current = motion.getBot7State(0);\n private exitFrom = this.current;\n private reduced = matchMedia('(prefers-reduced-motion: reduce)');\n private disposed = false;\n private done?: () => void;\n constructor(host: HTMLElement) {\n this.svg.setAttribute('viewBox', '-76 -76 152 152');\n this.svg.setAttribute('aria-hidden', 'true');\n this.svg.classList.add('dsh-cs-robot');\n const defs = element('defs'), clip = element('clipPath');\n // SVG clip identity is not a credential; also work on non-secure HTTP pages.\n const id = `dsh-cs-bot-${clipPrefix}-${nextClip++}`;\n clip.id = id; clip.append(this.clipBody); defs.append(clip);\n this.eyes.setAttribute('clip-path', `url(#${id})`);\n this.body.classList.add('dsh-cs-body'); this.eyes.classList.add('dsh-cs-eyes');\n this.dots.forEach(dot => dot.classList.add('dsh-cs-dot'));\n this.svg.append(defs, this.body, this.eyes, ...this.dots); host.append(this.svg);\n this.render(this.current);\n document.addEventListener('visibilitychange', this.wake);\n this.reduced.addEventListener('change', this.wake);\n }\n setRunning(running: boolean, done?: () => void) {\n if (running) {\n if (this.mode === 'run') return;\n this.mode = 'run'; this.elapsed = 0; this.done = undefined;\n } else if (this.mode === 'run') {\n this.exitFrom = this.current; this.mode = 'settle'; this.settling = 0; this.done = done;\n } else if (this.mode === 'settle') { this.done = done; return; }\n else { done?.(); }\n this.wake();\n }\n private wake = () => {\n if (this.frame !== undefined) cancelAnimationFrame(this.frame);\n this.frame = undefined; this.lastTime = 0;\n if (this.disposed) return;\n if (this.reduced.matches || document.hidden) {\n if (this.mode === 'settle') this.finish();\n else if (this.reduced.matches) this.render(motion.getBot7State(0));\n return;\n }\n if (this.mode !== 'rest') this.frame = requestAnimationFrame(this.tick);\n };\n private finish() {\n this.mode = 'rest'; this.render(motion.getBot7State(0));\n const done = this.done; this.done = undefined; done?.();\n }\n private tick = (now: number) => {\n this.frame = undefined;\n if (this.disposed) return;\n // Cap work at 30 fps; retain elapsed time across visibility pauses.\n if (!this.lastTime) this.lastTime = now;\n const delta = (now - this.lastTime) / 1000;\n if (delta >= 1 / 30) {\n this.lastTime = now;\n if (this.mode === 'run') { this.elapsed += delta; this.render(motion.getBot7State(orbitTime(this.elapsed))); }\n if (this.mode === 'settle') {\n this.settling += delta;\n if (this.settling >= .32) this.finish();\n else this.render(settleFrame(this.exitFrom, this.settling / .32));\n }\n }\n if (this.mode !== 'rest') this.frame = requestAnimationFrame(this.tick);\n };\n private render(state: Frame) {\n this.current = state;\n const projected = this.projector.projectRoundedCube(state.bot);\n this.body.setAttribute('d', projected.bodyPath); this.clipBody.setAttribute('d', projected.bodyPath);\n const eyes = state.bot.showEyes === false ? [] : projected.eyes;\n while (this.eyes.children.length > eyes.length) this.eyes.lastChild!.remove();\n while (this.eyes.children.length < eyes.length) this.eyes.append(element('rect'));\n eyes.forEach((eye, index) => {\n const node = this.eyes.children[index]!;\n for (const [key, value] of Object.entries({ x: -eye.w / 2, y: -eye.h / 2, width: eye.w, height: eye.h, rx: eye.rx, ry: eye.ry, opacity: eye.opacity ?? 1 })) node.setAttribute(key, value.toFixed(2));\n node.setAttribute('transform', `translate(${eye.cx.toFixed(2)} ${eye.cy.toFixed(2)}) rotate(${eye.angle.toFixed(2)})`);\n });\n this.dots.forEach((node, index) => {\n const dot = state.dots[index];\n node.setAttribute('r', dot?.visible ? dot.r.toFixed(2) : '0');\n if (dot) { node.setAttribute('cx', dot.x.toFixed(2)); node.setAttribute('cy', dot.y.toFixed(2)); }\n });\n }\n destroy() {\n this.disposed = true;\n if (this.frame !== undefined) cancelAnimationFrame(this.frame);\n document.removeEventListener('visibilitychange', this.wake);\n this.reduced.removeEventListener('change', this.wake);\n this.svg.remove(); this.done = undefined;\n }\n}\n","import { Satellite } from './satellite.js';\n\nexport const HOLD_MS = 650;\nexport type RingPhase = 'idle' | 'sending' | 'queued' | 'running' | 'done' | 'failed';\n/** Enhance only the existing context button; native short click and keys survive. */\nexport class RingControl {\n private host = document.createElement('span');\n private bot: Satellite;\n private timer?: ReturnType<typeof setTimeout>;\n private pointer?: { id: number; x: number; y: number };\n private suppressedUntil = 0;\n private phase: RingPhase = 'idle';\n private available = false;\n private disposed = false;\n private previousTitle: string | null;\n private lastTitle = '';\n private native?: { element: SVGElement; fields: Map<string, { before: string; priority: string; last: string; lastPriority: string }> };\n constructor(readonly button: HTMLButtonElement, private activate: () => void) {\n this.previousTitle = button.getAttribute('title');\n this.host.className = 'dsh-cs-ring-art'; this.host.setAttribute('aria-hidden', 'true');\n this.host.innerHTML = '<svg class=\"dsh-cs-hold\" viewBox=\"0 0 32 32\"><circle cx=\"16\" cy=\"16\" r=\"14\" pathLength=\"1\"/></svg>';\n this.bot = new Satellite(this.host); button.append(this.host); button.classList.add('dsh-cs-ring');\n button.addEventListener('pointerdown', this.down);\n button.addEventListener('pointerleave', this.cancel);\n button.addEventListener('pointercancel', this.cancel);\n button.addEventListener('contextmenu', this.context);\n button.addEventListener('click', this.click, true);\n window.addEventListener('pointerup', this.up, true);\n window.addEventListener('pointermove', this.move, true);\n window.addEventListener('pointerdown', this.anotherPointer, true);\n window.addEventListener('blur', this.cancel);\n document.addEventListener('visibilitychange', this.cancel);\n }\n update(phase: RingPhase, available: boolean) {\n this.available = available;\n // Restore the native meter from job state, never from an animation callback.\n // React may also replace the trigger's class while updating its usage label.\n this.button.classList.add('dsh-cs-ring');\n if (this.host.parentElement !== this.button) this.button.append(this.host);\n if (this.button.dataset.csPhase !== phase) this.button.dataset.csPhase = phase;\n this.showMeter(!['sending', 'queued', 'running'].includes(phase));\n if (this.phase !== phase) {\n this.phase = phase;\n if (phase === 'running') { this.button.dataset.csMotion = 'running'; this.bot.setRunning(true); }\n else if (phase === 'queued' || phase === 'sending') { this.button.dataset.csMotion = 'queued'; this.bot.setRunning(false); }\n else {\n this.button.dataset.csMotion = 'settling';\n this.bot.setRunning(false, () => { if (!this.disposed) delete this.button.dataset.csMotion; });\n }\n }\n const title = phase === 'running' ? '正在压缩上下文 · 点击查看进度'\n : phase === 'queued' || phase === 'sending' ? '压缩已排队 · 点击查看进度'\n : '点击查看上下文 · 长按压缩';\n if (this.button.title !== title) this.button.title = title;\n this.lastTitle = title;\n if (!this.canHold()) this.cancel();\n }\n private restoreMeter() {\n if (!this.native) return;\n for (const [key, field] of this.native.fields) {\n if (this.native.element.style.getPropertyValue(key) !== field.last || this.native.element.style.getPropertyPriority(key) !== field.lastPriority) continue;\n if (field.before) this.native.element.style.setProperty(key, field.before, field.priority);\n else this.native.element.style.removeProperty(key);\n }\n this.native = undefined;\n }\n private showMeter(visible: boolean) {\n const element = this.button.querySelector<SVGElement>('svg[viewBox=\"0 0 14 14\"]');\n if (this.native?.element !== element) {\n this.restoreMeter();\n if (element) this.native = { element, fields: new Map() };\n }\n if (!this.native) return;\n // The RC2 trigger includes percentage text. Keep the animation over the\n // actual icon instead of stretching it across the whole button.\n const iconBox = this.native.element.getBoundingClientRect(), buttonBox = this.button.getBoundingClientRect();\n const position = { left: `${iconBox.left - buttonBox.left - 3}px`, top: `${iconBox.top - buttonBox.top - 3}px`, width: `${iconBox.width + 6}px`, height: `${iconBox.height + 6}px` };\n for (const [key, value] of Object.entries(position)) if (this.host.style.getPropertyValue(key) !== value) this.host.style.setProperty(key, value);\n // Set the SVG itself: ancestor-attribute selector invalidation can leave an\n // SVG's computed visibility/opacity stale even when the job is already idle.\n for (const [key, value] of [['visibility', 'visible'], ['opacity', visible ? '1' : '0']] as const) {\n const style = this.native.element.style;\n let field = this.native.fields.get(key);\n if (!field || style.getPropertyValue(key) !== field.last || style.getPropertyPriority(key) !== field.lastPriority) {\n field = { before: style.getPropertyValue(key), priority: style.getPropertyPriority(key), last: value, lastPriority: '' };\n this.native.fields.set(key, field);\n }\n if (style.getPropertyValue(key) !== value) style.setProperty(key, value);\n field.last = value; field.lastPriority = style.getPropertyPriority(key);\n }\n }\n private canHold() { return this.available && !['sending', 'queued', 'running'].includes(this.phase); }\n private down = (event: PointerEvent) => {\n this.suppressedUntil = 0;\n if (!event.isPrimary || event.button !== 0 || !this.canHold()) return;\n this.cancel(); this.pointer = { id: event.pointerId, x: event.clientX, y: event.clientY };\n this.button.dataset.csHolding = 'true';\n this.timer = setTimeout(() => {\n if (!this.pointer || !this.canHold() || !this.button.isConnected) { this.cancel(); return; }\n this.cancel(); this.suppressedUntil = Infinity;\n // Synthetic keyboard-style click is deliberately allowed; open the native\n // popup once so model/configuration errors always have a visible home.\n if (this.button.getAttribute('aria-expanded') !== 'true') this.button.click();\n this.activate();\n }, HOLD_MS);\n };\n private anotherPointer = (event: PointerEvent) => { if (this.pointer && this.pointer.id !== event.pointerId) this.cancel(); };\n private move = (event: PointerEvent) => { if (this.pointer?.id === event.pointerId && Math.hypot(event.clientX - this.pointer.x, event.clientY - this.pointer.y) > 10) this.cancel(); };\n private up = (event: PointerEvent) => {\n if (this.pointer?.id === event.pointerId) this.cancel();\n if (this.suppressedUntil === Infinity) this.suppressedUntil = performance.now() + 700;\n };\n private context = (event: Event) => { if (this.pointer || performance.now() < this.suppressedUntil) event.preventDefault(); };\n private click = (event: MouseEvent) => {\n if (event.detail !== 0 && performance.now() < this.suppressedUntil) { event.preventDefault(); event.stopImmediatePropagation(); }\n };\n private cancel = () => {\n clearTimeout(this.timer); this.timer = undefined; this.pointer = undefined; delete this.button.dataset.csHolding;\n };\n destroy() {\n this.disposed = true; this.cancel(); this.bot.destroy(); this.host.remove();\n this.button.classList.remove('dsh-cs-ring'); delete this.button.dataset.csMotion; delete this.button.dataset.csPhase;\n this.restoreMeter();\n if (this.button.title === this.lastTitle) {\n if (this.previousTitle === null) this.button.removeAttribute('title'); else this.button.title = this.previousTitle;\n }\n this.button.removeEventListener('pointerdown', this.down); this.button.removeEventListener('pointerleave', this.cancel);\n this.button.removeEventListener('pointercancel', this.cancel); this.button.removeEventListener('contextmenu', this.context);\n this.button.removeEventListener('click', this.click, true);\n window.removeEventListener('pointerup', this.up, true); window.removeEventListener('pointermove', this.move, true);\n window.removeEventListener('pointerdown', this.anotherPointer, true); window.removeEventListener('blur', this.cancel);\n document.removeEventListener('visibilitychange', this.cancel);\n }\n}\n","import { useEffect, useState } from 'react';\n\nconst COPY = {\n compress: ['正在压缩', '给下一轮对话腾点空间', '把长对话收拾轻一点', '还在压缩,稍等一会儿'],\n merge: ['正在合并摘要', '把几段摘要整理到一起', '合并还在继续', '给下一轮对话腾点空间'],\n};\n\n/** Waiting copy is decorative, not a claim that a new processing stage finished. */\nexport function WaitingCopy({ stage }: { stage: keyof typeof COPY }) {\n const [index, setIndex] = useState(0);\n const phrases = COPY[stage];\n useEffect(() => {\n const motion = matchMedia('(prefers-reduced-motion: reduce)');\n let timer: ReturnType<typeof setInterval> | undefined;\n const sync = () => {\n clearInterval(timer); timer = undefined;\n if (motion.matches) setIndex(0);\n else if (document.visibilityState === 'visible') timer = setInterval(() => setIndex(i => (i + 1) % phrases.length), 6000);\n };\n sync();\n document.addEventListener('visibilitychange', sync); motion.addEventListener('change', sync);\n return () => { clearInterval(timer); document.removeEventListener('visibilitychange', sync); motion.removeEventListener('change', sync); };\n }, [phrases]);\n // All phrases share one grid cell, reserving the longest width so neither\n // progress digits nor popup geometry jump when the visible sentence changes.\n return <span className=\"dsh-cs-waiting-copy\" aria-hidden=\"true\">\n {phrases.map((phrase, i) => <span key={phrase} data-active={index === i ? 'true' : 'false'}>{phrase}…</span>)}\n </span>;\n}\n","import type {} from '@deepseek-ai/dsh-client-ui-renderer/client';\nimport type { Context } from '@deepseek-ai/cordis';\nimport type {} from '@deepseek-ai/dsh-client-ui-conversation/client';\nimport type {} from '@deepseek-ai/dsh-client-ui-settings/client';\nimport type {} from '@deepseek-ai/dsh-client-ui-slots';\nimport { useEffect, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport type { Config, ModelOption, State } from '../shared.js';\nimport { MeterBridge } from './meter-bridge.js';\nimport { RingControl } from './ring-control.js';\nimport { WaitingCopy } from './waiting-copy.js';\nimport { contextRoot, contextRing, contextPanel } from './context-elements.js';\nimport './style.css';\n\nexport const name = 'dsh-compact-saviour-client';\nexport const inject = ['slots'];\nconst ENDPOINT = '/api/dsh-compact-saviour/v1';\nasync function api<T>(params = '', data?: unknown, signal?: AbortSignal): Promise<T> {\n const response = await fetch(ENDPOINT + params, { credentials: 'same-origin', signal,\n ...(data ? { method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.stringify(data) } : {}),\n });\n const text = await response.text();\n let value;\n try { value = JSON.parse(text); }\n catch { throw new Error(`压缩服务暂未就绪(HTTP ${response.status}),请稍后重试。`); }\n if (!response.ok) throw new Error(value.error ?? `HTTP ${response.status}`);\n return value;\n}\n\n/** A zero-layout anchor scopes the native ring gesture, status animation and popup. */\nexport function PopupBridge({ sessionId }: { sessionId: string }) {\n const anchor = useRef<HTMLSpanElement>(null);\n const [footer, setFooter] = useState<HTMLDivElement | null>(null);\n const [state, setState] = useState<State>();\n const [error, setError] = useState('');\n const [sending, setSending] = useState(false);\n const posting = useRef(false);\n const act = useRef<(action: string) => Promise<void>>(async () => {});\n const latest = useRef<State>();\n const syncMeter = useRef<() => void>(() => {});\n useEffect(() => {\n const abort = new AbortController(); let timer: ReturnType<typeof setTimeout>;\n let revision = 0, connectionError = '';\n setState(undefined); latest.current = undefined; setError(''); setSending(false); posting.current = false;\n const update = (value: State) => { latest.current = value; setState(value); syncMeter.current(); };\n act.current = async (action: string) => {\n if (posting.current || abort.signal.aborted) return;\n posting.current = true; revision++; setSending(true); setError(''); syncMeter.current();\n try {\n const value = await api<State>('', { action, sessionId }, abort.signal);\n // POST acknowledges a job without remeasuring context. Keep the last\n // same-session reading until GET replaces it, avoiding an 8M flash.\n if (!abort.signal.aborted) update({ ...value, context: value.context ?? latest.current?.context });\n } catch (e) {\n if (!abort.signal.aborted) setError(e instanceof Error ? e.message : String(e));\n } finally {\n if (!abort.signal.aborted) { posting.current = false; revision++; setSending(false); syncMeter.current(); }\n }\n };\n const poll = async () => {\n const started = revision;\n try {\n const value = await api<State>(`?sessionId=${encodeURIComponent(sessionId)}`, undefined, abort.signal);\n if (!abort.signal.aborted && started === revision && !posting.current) {\n update(value); const previous = connectionError;\n setError(current => current === previous ? '' : current); connectionError = '';\n }\n } catch (e) {\n if (!abort.signal.aborted) { connectionError = e instanceof Error ? e.message : String(e); setError(connectionError); }\n }\n if (!abort.signal.aborted) timer = setTimeout(poll, 1000);\n };\n void poll(); return () => { abort.abort(); clearTimeout(timer); act.current = async () => {}; };\n }, [sessionId]);\n useEffect(() => {\n const root = anchor.current && contextRoot(anchor.current);\n if (!root) return;\n let owned: HTMLDivElement | null = null;\n let observedPanel: HTMLElement | undefined;\n const meter = new MeterBridge();\n let control: RingControl | undefined;\n const sync = () => {\n const ring = contextRing(root);\n const panel = contextPanel(ring);\n if (panel !== observedPanel) {\n panelObserver.disconnect(); observedPanel = panel;\n if (panel) panelObserver.observe(panel, observeOptions);\n }\n meter.apply(ring, latest.current?.context);\n if (control?.button !== ring) {\n control?.destroy(); control = ring ? new RingControl(ring, () => { void act.current('configured'); }) : undefined;\n }\n control?.update(posting.current ? 'sending' : latest.current?.job.phase ?? 'idle', Boolean(latest.current?.available));\n if (owned && owned.parentElement === panel) {\n // The optional breakdown can arrive after the portal footer. React\n // appends its new rows last; keep our action beneath those native rows.\n if (panel && panel.lastElementChild !== owned) panel.append(owned);\n return;\n }\n owned?.remove(); owned = null;\n if (panel && !panel.querySelector('[data-compact-saviour]')) {\n owned = document.createElement('div'); owned.dataset.compactSaviour = 'footer'; owned.className = 'dsh-cs-footer'; panel.append(owned);\n }\n setFooter(owned);\n };\n const observeOptions = { childList: true, subtree: true, characterData: true, attributes: true, attributeFilter: ['aria-expanded', 'aria-label', 'aria-describedby', 'stroke-dasharray', 'style'] };\n const observer = new MutationObserver(sync);\n const panelObserver = new MutationObserver(sync);\n const portals = new MutationObserver(sync);\n observer.observe(root, observeOptions);\n // Only direct body children, not the streaming transcript subtree.\n portals.observe(root.ownerDocument.body, { childList: true });\n syncMeter.current = sync; sync();\n return () => { syncMeter.current = () => {}; observer.disconnect(); portals.disconnect(); panelObserver.disconnect(); control?.destroy(); meter.restore(); owned?.remove(); };\n }, [sessionId]);\n return <><span ref={anchor} style={{ display: 'none' }} aria-hidden=\"true\" />{footer && createPortal(<CompactFooter state={state} sending={sending} error={error} act={action => act.current(action)} />, footer)}</>;\n}\n\nfunction CompactFooter({ state, sending, error, act }: {\n state?: State; sending: boolean; error: string; act(action: string): Promise<void>;\n}) {\n const job = state?.job, active = job?.phase === 'queued' || job?.phase === 'running';\n const current = job?.current;\n const busy = sending || active;\n const running = !sending && job?.phase === 'running';\n const stage = job?.message.includes('合并摘要') ? 'merge' : 'compress';\n const label = sending ? '正在提交' : job?.phase === 'queued' ? '等待当前步骤结束' : job?.phase === 'running'\n ? stage === 'merge' ? '正在合并摘要' : '正在压缩' : '手动压缩';\n const progress = !sending && job?.phase === 'running' && Number.isInteger(job.completed) && Number.isInteger(job.total)\n && job.total! > 1 && job.completed! >= 0 && job.completed! <= job.total! ? `${job.completed}/${job.total}` : '';\n return <div className=\"dsh-cs-content\" data-phase={sending ? 'sending' : job?.phase ?? 'idle'}>\n <button className=\"dsh-cs-button dsh-cs-primary dsh-cs-compact\" type=\"button\" aria-label={progress ? `${label} ${progress}` : label} disabled={sending || !state?.available || active} onClick={() => void act('configured')}>\n <span className=\"dsh-cs-button-status\" aria-hidden=\"true\">\n {running ? <WaitingCopy key={stage} stage={stage} /> : <span className=\"dsh-cs-label\">{label}{busy ? '…' : ''}</span>}\n {progress && <span className=\"dsh-cs-progress\"> {progress}</span>}\n </span>\n <span className=\"dsh-cs-sr-status\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">{label}{progress ? ` ${progress}` : ''}</span>\n </button>\n {!active && !sending && <div className=\"dsh-cs-hint\">也可以长按圆环直接压缩</div>}\n {!busy && job?.message && <div className=\"dsh-cs-status dsh-cs-job-status\" role=\"status\"><span>{job.message}{job.phase === 'done' && job.beforeTokens !== undefined && job.afterTokens !== undefined ? ` ${Math.round(job.beforeTokens / 1000)}K → ${Math.round(job.afterTokens / 1000)}K` : ''}</span></div>}\n {state?.context?.corrected && <div className=\"dsh-cs-status\">{state.context.reason === 'invalid-usage' ? '已排除异常历史用量,当前按消息和工具估算。' : '已按新模型的上下文容量重新估算。'}</div>}\n {error && <div className=\"dsh-cs-error\" role=\"alert\">{error}</div>}\n {state && !state.config.model && !error && <div className=\"dsh-cs-status\">先在设置 → Compact Saviour 中选择压缩模型。</div>}\n {state && !state.available && <div className=\"dsh-cs-status\">当前会话的 Compact 后端尚未就绪。</div>}\n {job?.phase === 'failed' && <div className=\"dsh-cs-actions\">\n <button className=\"dsh-cs-button\" disabled={sending} onClick={() => void act('configured')}>重试压缩模型</button>\n {current && <button className=\"dsh-cs-button\" disabled={sending} onClick={() => void act('current')}>本次使用 {current.model} · {current.reasoningEffort || '默认推理'}</button>}\n </div>}\n {(active || job?.phase === 'failed') && <button className=\"dsh-cs-button\" disabled={sending} onClick={() => void act('cancel')}>取消</button>}\n </div>;\n}\n\nfunction SettingsPanel() {\n const [config, setConfig] = useState<Config>();\n const [models, setModels] = useState<ModelOption[]>([]);\n const [search, setSearch] = useState('');\n const [efforts, setEfforts] = useState<{ id: string; name: string }[]>([]);\n const [message, setMessage] = useState('');\n const [saving, setSaving] = useState(false);\n useEffect(() => {\n const abort = new AbortController();\n void Promise.all([api<State>('', undefined, abort.signal), api<{ models: ModelOption[] }>('?models=1', undefined, abort.signal)])\n .then(([s, m]) => { setConfig(s.config); setModels(m.models); })\n .catch(e => { if (!abort.signal.aborted) setMessage(e.message); });\n return () => abort.abort();\n }, []);\n useEffect(() => {\n const abort = new AbortController(); setEfforts([]);\n if (config?.provider && config.model) void api<{ efforts: { id: string; name: string }[] }>(`?provider=${encodeURIComponent(config.provider)}&model=${encodeURIComponent(config.model)}`, undefined, abort.signal)\n .then(v => setEfforts(v.efforts)).catch(e => { if (!abort.signal.aborted) setMessage(e.message); });\n return () => abort.abort();\n }, [config?.provider, config?.model]);\n const save = async () => {\n setSaving(true); setMessage('');\n try { const s = await api<State>('', { action: 'settings', config }); setConfig(s.config); setMessage('已保存。'); }\n catch (e) { setMessage(e instanceof Error ? e.message : String(e)); }\n finally { setSaving(false); }\n };\n const selected = config?.model ? JSON.stringify([config.provider, config.model]) : '';\n const filtered = models.filter(m => JSON.stringify([m.provider, m.id]) === selected || `${m.name} ${m.id} ${m.provider}`.toLowerCase().includes(search.toLowerCase()));\n return <section className=\"dsh-cs-settings\">\n <h2>Compact Saviour</h2>\n <p>独立模型负责上下文压缩。点击圆环查看用量,长按圆环或点击弹层内的按钮开始压缩。</p>\n {config ? <>\n <label className=\"dsh-cs-toggle\"><input type=\"checkbox\" checked={config.enabled} onChange={e => setConfig({ ...config, enabled: e.target.checked })} /> 启用自动压缩辅助</label>\n <label>自动压缩方式<select value={config.mode ?? 'rescue'} disabled={!config.enabled} onChange={e => setConfig({ ...config, mode: e.target.value as 'direct' | 'rescue' })}>\n <option value=\"rescue\">官方连续失败两次后救援(默认)</option>\n <option value=\"direct\">直接使用 Saviour 模型</option>\n </select></label>\n <p>{!config.enabled ? '自动压缩由官方处理。手动压缩仍直接使用下方模型。' : config.mode === 'direct' ? '自动和手动压缩都直接使用下方模型。' : '自动压缩先由官方处理,连续失败两次后静默救援。手动压缩直接使用下方模型。'}</p>\n <label>Saviour 压缩模型<input placeholder=\"搜索已配置的模型\" value={search} onChange={e => setSearch(e.target.value)} /></label>\n <select aria-label=\"压缩模型\" value={selected} onChange={e => { const [provider, model] = e.target.value ? JSON.parse(e.target.value) : ['', '']; setConfig({ ...config, provider, model, reasoningEffort: '' }); }}>\n <option value=\"\">请选择模型</option>\n {filtered.map(m => <option key={JSON.stringify([m.provider, m.id])} value={JSON.stringify([m.provider, m.id])}>{m.name} · {m.provider}</option>)}\n </select>\n <label>Reasoning level<select value={config.reasoningEffort} onChange={e => setConfig({ ...config, reasoningEffort: e.target.value })}>\n <option value=\"\">模型默认</option>{efforts.map(e => <option key={e.id} value={e.id}>{e.name}</option>)}\n </select></label>\n <p>超长历史自动分块,保留近期消息和原始记录。失败后由你选择重试、仅本次使用当前对话模型,或取消。</p>\n <button className=\"dsh-cs-button dsh-cs-primary\" disabled={saving} onClick={() => void save()}>{saving ? '保存中…' : '保存'}</button>\n </> : <p>正在加载模型配置…</p>}\n {message && <p role=\"status\">{message}</p>}\n </section>;\n}\n\nexport function apply(ctx: Context): void {\n ctx.slots.inject('conversation.input.right', () => ctx.slots.register({\n name: 'conversation.input.right', id: 'compact-saviour-popup-anchor', order: 100,\n inject: (sessionId: string) => ({ sessionId }),\n }, PopupBridge));\n ctx.slots.inject('settings.section', () => ctx.slots.register({\n name: 'settings.section', id: 'compact-saviour', order: 38, label: () => 'Compact Saviour',\n }, SettingsPanel));\n}\n"],"mappings":"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"}
|