Files
deepseek-harness/packages/document/office-kit/tests/engine-resolver.spec.ts
T
yudshj a220e017b5 refactor(office): 合并为 office-kit,Kit 缺失时降级而非加载失败
- Kit CLI 由 office-kit/locate 在 Host 中定位(含 ASAR 映射与可选 root 越界检查),删除 Desktop 壳的 office-cli 与诊断文件;生产版 Desktop 由壳通过 DSH_BUNDLED_RUNTIME_ROOT 显式传入 Kit 根目录,开发版与 Web 不检查
- office-to-pdf 与 office-kit-resolver 合并为 @deepseek-ai/dsh-office-kit,由同一包定位 Kit 并提供转换服务
- Kit 缺失时 provider 照常注册,转换请求以 OfficeKitError unavailable 拒绝,之后安装 Kit 无需重载
- 类型统一使用 OfficeKit 前缀(OfficeKitRequest/Result/Priority/Key),同步消费方、文档、升级指南与 catalog
- 处理 ds-review-bot 意见,并更新 unknown 断言基线

本 PR 的 snapshot 统一在这个提交里用 keyless refresh 重新生成,前 3 个提交中的 snapshot 不一定和那一步的代码对应。
2026-11-04 18:17:57 +08:00

24 lines
1.2 KiB
TypeScript

/** The provider's actual Kit installation is the reference for engine package resolution. */
import { createRequire } from 'node:module'
import { resolveKitModule } from '../src/locate.ts'
import { expect, it } from 'vitest'
it('matches the consumer Kit installation for native and WASM engine manifests', () => {
const kitEntry = import.meta.resolve('@deepseek-ai/libreoffice-kit')
const fromKit = createRequire(kitEntry)
const kit = resolveKitModule(() => import.meta.resolve('@deepseek-ai/libreoffice-kit'))
if (kit.kind !== 'available') throw new Error('Expected the provider Kit installation')
expect(kit.entry).toBe(kitEntry)
const { resolveEnginePackage } = kit
const outcome = (resolve: (name: string) => string, name: string): string => {
try { return resolve(name) } catch (error) {
if (error instanceof Error && 'code' in error) return String(error.code)
throw error
}
}
for (const name of ['@deepseek-ai/libreoffice-kit-wasm', `@deepseek-ai/libreoffice-kit-${process.platform}-${process.arch}`]) {
const expected = outcome(name => fromKit.resolve(`${name}/package.json`), name)
expect(outcome(resolveEnginePackage, name)).toBe(expected)
}
})