Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

oak-external-sdk 更新日志

当前 package3.0.2
最新 tag3.0.1
覆盖区间3.0.0..3.0.1 / 3.0.1..HEAD

3.0.2 未发布(区间:3.0.1..HEAD

未发布LLM SDK、WeChat token 刷新和 ESM 兼容调整。
  • 新增 LlmSDKtypes/LLMservice/llm/OpenAICompatible,当前 provider 为 openaiCompatible
  • OpenAI-compatible 实例支持 chatjsontranslateTexttranslateFieldstranslateObject,可配置 baseURLapiKeydefaultModel、headers、extraBody、timeout 和 responseFormat
  • LLM 返回解析支持普通 JSON、data: event-stream 文本、reasoning / reasoning_content / <think> 内容拆分,并把 usage 映射到统一的 promptTokenscompletionTokenstotalTokens
  • 顶层 src/index.ts 改为直接导出各 SDK 单例和 type-only instance 类型,新增 LlmSDK 导出;WechatMpInstanceOpenAICompatibleInstance 等 instance class 不再作为顶层运行时值导出。
  • 微信 mppublicwebnative access token 刷新改为共享 in-flight promise,初始化失败后显式调用会重试,不再用 500ms 轮询无限等待;定时刷新失败会 warn 并保留后续调用重试能力。
  • WeChat externalRefreshFn 类型从返回 token 字符串调整为返回 { access_token, expires_in },便于统一设置过期时间和刷新定时器。
  • fetch 工具改为依赖 Node 18+ / 运行时已有 globalThis.fetch;各服务从 require('../../utils/fetch') 迁到 ESM side-effect import。
  • Web 端 cheerio.load 改成明确抛出 error::cheerio.loadNotImplemented,避免把 Node 版 cheerio 打进 web fallback。
  • package.json 修正 build:lib / build:esfix_import.mjs target,oak-domain 迁到 peer ^6.0.1,本仓库 dev 使用 file:../oak-domain
  • 新增 CJS WeChat access token 测试,覆盖永久失败、临时失败重试、并发调用共享同一次刷新。
主要 diff 文件:package.jsonsrc/index.tssrc/LlmSDK.tssrc/types/LLM.tssrc/service/llm/OpenAICompatible.tssrc/WechatSDK.tssrc/service/wechat/*src/utils/fetch/*src/utils/cheerio/index.web.tstest/testWechatAccessToken.cjs

3.0.1(tag:3.0.1,区间:3.0.0..3.0.1

已发布该 tag 主要是版本发布标记和依赖版本对齐,未发现独立的行为变化。

升级注意

运行时导出:3.0.2 顶层入口仍导出 WechatSDKLlmSDK 等 SDK 单例,但 instance class 改为 type-only 导出。运行时代码如果曾从 oak-external-sdk 顶层解构 WechatMpInstanceWechatPublicInstance 等构造类,需要改成使用 SDK 工厂或从具体 service/... 路径引入。
WeChat 刷新函数:externalRefreshFn 现在必须返回 { access_token, expires_in },不再只是 token 字符串。自定义 token 刷新接入需要同步调整返回值。
运行时环境:fetch 依赖 Node 18+ 或宿主已有 globalThis.fetch;web 环境不再提供 cheerio 实现,调用 cheerio.load 会抛出明确异常。
LLM 导入入口:使用 LLM SDK 时优先从公开导出入口 LlmSDKtypes/LLM 引入,避免依赖内部 service/llm 文件路径。