@laplace.live / persona-sdk
的TypeScript SDK和连线模式 拉普拉斯的角色 插件API -一个令牌认证的WebSocket API,用于驱动头像,场景,表达式, 动作,热键和跟踪参数从应用程序外部。
同构:运行在Node≥24、Bun、浏览器和OBS浏览器源上 WebSocket.
一个运行时依赖项(zod(支持连接模式)。
设置
启用角色中的API 高级→插件API,创建密钥,并复制令牌。
import { PersonaClient } from '@laplace.live/persona-sdk'
const persona = new PersonaClient({ token: 'sk-lp-v1-…' })
await persona.connect()
// Typed request/response
const { scenes, activeSceneId } = await persona.call('scene.list')
await persona.call('expression.toggle', { name: 'Smile' })
await persona.call('scene.patch', {
background: { mode: 'color', color: '#112233', imageAssetId: null },
})
// Events (subscriptions survive reconnects)
persona.on('motion.started', m => console.log('playing', m.group))
// Parameter leases: the value keeps applying until released; the SDK owns the
// heartbeat, and if your process dies the parameter reverts within ~1 s.
const mouth = persona.driveParameter('MouthOpen', 0.8)
mouth.set(0.3)
mouth.release()
缺省情况下,令牌以 ?token= (适用于浏览器)。从节点, createNodeClient
将其作为 Authorization: Bearer 而不是Node的全局 WebSocket,
记录永久结束会话的关闭(密钥撤销或会话断开)
角色):
import { createNodeClient } from '@laplace.live/persona-sdk'
const persona = createNodeClient({ token, log: console.warn })
await persona.connect()
任何其他可以设置报头的套接字,例如 ws
包装、插头 new PersonaClient({ token, auth: "header", createWebSocket }).
识别你的应用
通过 clientInfo 你的应用按名称显示在 连接的客户机 在角色的
设置(可选-未识别的客户端工作相同)。SDK会在每个节点上重新声明它
重新连接;它是自我声明的,只显示,从不授权:
const persona = new PersonaClient({
token,
clientInfo: { name: 'My Overlay', version: '1.2.0', developer: 'You' },
})
两个服务器关闭代码是终端并停止重新连接循环: CLOSE_KEY_REVOKED (4001年,
密钥已被撤销)和 CLOSE_FORCE_DISCONNECTED (4002,用户断开会话
在角色)。客户端通过 onWarning , closed.
将令牌视为密码:它授予对应用程序的控制,包括加载注册 模型和网页覆盖。服务器监听环回,除非局域网访问在启用 角色的设置。
注册中心和编目元数据
model.list / asset.list 返回裁判的来源和归属:每个裁判携带
origin ('bundled' 对于第一方内容,随应用程序一起发布或从
角色目录; 'user' 对于用户添加的任何内容),可以携带optional author /
url 学分。
CatalogItem 选择器背后与传输无关的内容-元数据形状是否稳定
id (场景被关掉了),然后 InventoryKind、显示 name,可选
description, thumbnailUrl, previewUrl (缩略图中显示了一个简短的循环视频
的地方), version, author, url, download (一个 CatalogDownload: HTTPS压缩文件
它的字节大小和sha256)。角色市场将其目录服务为 { version, items }
在 https://marketplace.laplace.live +
MARKETPLACE_ITEMS_PATH. healCatalog 将已解析的文档转换为可用的行,删除
畸形的,和 pickLocalized(item.description, locale) 中的描述
读者的语言,回落到英语。
healCatalogItem 治愈一排,然后 healCatalogRows(raw, healRow) 通过
您自己的行治疗,保持两个id中的第一个等于忽略大小写。一行需要一个
Id通过 isCatalogId (一个路径安全段,因为id代表一个安装文件夹),
一个非 name,和一种来自 CATALOG_KINDS; CATALOG_FORMAT 文件是
version. healSha256 将摘要读取为64个小写十六进制字符,并且
payloadEntryPath 检查有效负载压缩包的条目名称,回答相对POSIX路径和
提取器可以写,或者为空;负载的两个条目不能共享a payloadEntryKey.
healLocalizedText 治愈一个 LocalizedText (en 必需的,其他发送的区域
(可选),并且永远不会将其他区域设置提升为 en.