跳转到正文

包导出项

Orbz 将纯 API 访问、带环境保护的浏览器注册和独立浏览器包分开。所有框架最终都渲染原生 <orb-z> 元素。

入口对照表

导入路径提供的内容副作用
@neongate-ai/orbz原生元素、对话运行时类型、常量、预设、规范化辅助函数、orbzElementClassFactory() 和 defineOrbz()不注册标签
@neongate-ai/orbz/browser主入口提供的全部内容调用 defineOrbz()
@neongate-ai/orbz/react-types为原生 <orb-z> 标签提供可选的 React JSX 类型扩展无
@neongate-ai/orbz/standalone浏览器入口的独立浏览器构建调用 defineOrbz()
@neongate-ai/orbz/index.css嵌入封闭 Shadow Root 的同一份源样式表无
@neongate-ai/orbz/package.json已发布包的元数据无

包清单将浏览器入口和 standalone 入口标记为具有副作用,以便打包工具保留其注册调用。

react-types 不包含 React 组件或运行时适配器。仅在需要让 JSX 识别 <orb-z> 的 React 或 Next.js TypeScript 项目中导入它。

主入口

使用主入口进行显式注册,并获取可复用的领域类型:

import { DEFAULT_ORBZ_PRESET, defineOrbz, ORBZ_PRESETS, ORBZ_STATES, type OrbzElement, type OrbzPresetName, type OrbzState, } from "@neongate-ai/orbz"; defineOrbz(); const nextState: OrbzState = "listening"; const preset: OrbzPresetName = DEFAULT_ORBZ_PRESET; const colors = ORBZ_PRESETS[preset]; const orb = document.querySelector<OrbzElement>("orb-z"); if (orb) orb.state = nextState;

仅导入主模块不会注册 orb-z。当页面需要将标签升级为自定义元素时,请调用 defineOrbz() 或导入 /browser。

常量

导出项含义
ORBZ_TAG_NAME字符串 "orb-z"
ORBZ_OBSERVED_ATTRIBUTES具有响应性的原生属性名称
ORBZ_STATES所有受支持的助手状态
ORBZ_REDUCED_MOTION_MODESsystem、always 和 never
ORBZ_PRESET_NAMES六个规范预设名称,第一个为 neongate
ORBZ_PRESETS每个规范预设的冻结颜色值;保留一个已弃用、不可枚举且源于账户名称的别名
ORBZ_COLOR_ATTRIBUTES颜色键到原生属性名称的映射
ORBZ_COLOR_KEYS五个颜色键
DEFAULT_ORBZ_STATEidle
DEFAULT_ORBZ_SIZE16rem
DEFAULT_ORBZ_SPEED1
DEFAULT_ORBZ_REDUCED_MOTIONsystem
DEFAULT_ORBZ_PRESETneongate;参见预设命名
DEFAULT_ORBZ_COLORSNeongate 预设的颜色
config公开包常量的冻结命名空间,包括 config.ORBZ_STATES
talk冻结的空兼容对象({});由宿主定义对话步骤
DEFAULT_TALK_FLOW冻结的空数组([]);不含内置问候语、角色或对话

这些数组和预设记录可用于生成经过验证的控件,无需复制包所接受的值。

import { DEFAULT_ORBZ_PRESET, ORBZ_PRESET_NAMES, ORBZ_STATES } from "@neongate-ai/orbz"; for (const state of ORBZ_STATES) { stateSelect.add(new Option(state, state)); } for (const preset of ORBZ_PRESET_NAMES) { const label = preset === DEFAULT_ORBZ_PRESET ? "Neongate" : preset; presetSelect.add(new Option(label, preset)); }

类型

导出项结构
OrbzState五个状态名称组成的联合类型
OrbzReducedMotion"system" | "always" | "never"
OrbzPresetName六个规范名称与一个已弃用、源于账户名称的输入别名组成的联合类型
OrbzSizenumber | string
OrbzColors必需的字符串 primary、secondary、accent、highlight 和 background
OrbzColorOverrides部分 OrbzColors
OrbzBaseOptions状态、尺寸、速度、暂停、悬浮阴影和减少动态效果选项
OrbzPresetOptions预设模式;自定义颜色键为 never
OrbzCustomColorOptions自定义颜色模式;preset 为 never
OrbzColorSelection预设模式与自定义颜色模式的联合类型
OrbzOptions基础选项与颜色选择联合类型的组合
OrbzElement原生元素属性与播放方法
OrbzElementConstructor带类型的自定义元素构造函数
OrbzTalkStep带类型的确定性对话步骤或由智能接口支持的对话步骤
OrbzTalkContext对话执行器捕获并保存在内存中的值
OrbzVoiceOptions可选的语音引擎、对话流程与智能接口配置
OrbzVoiceEnginePort由实现方提供的语音输出契约
OrbzIntelligencePort可选的非确定性回应契约
WebSpeechAdapterOptions语言区域、首选语音、语速、音调、音量与语音加载选项
OpenAISpeechAdapterOptions安全端点以及 OpenAI 语音模型、声音、指令与格式选项

语音适配器

导出项用途
WebSpeechAdapter明确选择语言区域和声音的浏览器语音合成
OpenAISpeechAdapter通过实现方控制的安全端点提供 OpenAI 品质的语音

OpenAISpeechAdapter 默认使用 gpt-4o-mini-tts、marin 和 MP3。OpenAI API 密钥保留在端点一侧,绝不会包含在浏览器代码中。

验证与规范化函数

导出项用途
isOrbzState()检查受支持状态的类型守卫
isOrbzPresetName()接受规范名称及一个已弃用、源于账户名称的别名的类型守卫
isOrbzReducedMotion()检查减少动态效果值的类型守卫
normalizeOrbzState()不受支持的输入变为 idle
normalizeOrbzPreset()将已弃用的账户名称输入规范化为 neongate;不受支持的输入变为 DEFAULT_ORBZ_PRESET
normalizeOrbzReducedMotion()不受支持的输入变为 system
normalizeOrbzSize()数字转换为像素;无效数字或空输入变为 16rem
normalizeOrbzSpeed()非正数或非有限值变为 1
mergeOrbzColors()将有效且非空的覆盖值合并到基础配色中

在存储不可信的配置之前,先将其规范化:

import { normalizeOrbzPreset, normalizeOrbzSpeed, normalizeOrbzState, } from "@neongate-ai/orbz"; const config = { preset: normalizeOrbzPreset(payload.preset), speed: normalizeOrbzSpeed(payload.speed), state: normalizeOrbzState(payload.state), };

注册辅助函数

defineOrbz() 是常规的显式注册 API。它可安全用于 SSR,且具有幂等性:

import { defineOrbz } from "@neongate-ai/orbz"; const constructor = defineOrbz();

orbzElementClassFactory() 仅在 globalThis.HTMLElement 存在时创建并缓存该类。它供高级集成使用;大多数应用应调用 defineOrbz()。

import { orbzElementClassFactory } from '@neongate-ai/orbz' const constructor = orbzElementClassFactory() // undefined on a server; an OrbzElementConstructor in a browser

当 DOM 不可用时,这两个辅助函数都不会求值 HTMLElement 的子类。

最近更新于