Merge pull request #5589 from deepseek-harness/fix/bump-libreoffice-kit-0.1.5

chore(office): bump LibreOffice Kit to 0.1.5
This commit is contained in:
Yudong Han authored and GitHub committed 2026-10-01 12:01:55 +08:00
commit ebc616e01d
19 files changed
+59 -58

No files matched your search

+2 -2
View File
@@ -36,7 +36,7 @@ External packages installed for runtime use or distributed inside the prebuilt b
| [`@anthropic-ai/sdk`](https://github.com/anthropics/anthropic-sdk-typescript) | MIT |
| [`@babel/code-frame`](https://github.com/babel/babel) | MIT |
| [`@browserbasehq/stagehand`](https://github.com/browserbase/stagehand) | MIT |
| [`@deepseek-ai/libreoffice-kit`](https://github.com/deepseek-harness/libreoffice-kit) | MPL-2.0 |
| [`@deepseek-ai/libreoffice-kit`](https://github.com/deepseek-ai/dsh-libreoffice-kit) | MPL-2.0 |
| [`@earendil-works/pi-ai`](https://github.com/earendil-works/pi) | MIT |
| [`@eslint-community/regexpp`](https://github.com/eslint-community/regexpp) | MIT |
| [`@fortune-sheet/core`](https://github.com/ruilisi/fortune-sheet) | MIT |
@@ -175,7 +175,7 @@ The installed SDK 0.3.263 declares the following optional platform packages. Eac
`@deepseek-ai/libreoffice-kit`, `@deepseek-ai/libreoffice-kit-wasm`, `@deepseek-ai/libreoffice-kit-darwin-arm64`, `@deepseek-ai/libreoffice-kit-darwin-x64`, `@deepseek-ai/libreoffice-kit-win32-arm64`, `@deepseek-ai/libreoffice-kit-win32-x64` declare MPL-2.0, which remains outside the permissive-license allowlist; the notices check accepts only these package identities at those terms. The [distribution decision](.agents/notes/implemented/architecture/2026-09-14-independent-libreoffice-kit.md) records the source obligations.
The [kit repository](https://github.com/deepseek-harness/libreoffice-kit) supplies the corresponding LibreOffice source pin, modifications, build instructions, Node API, and artifact validation. Its engine packages retain their license and third-party notices; the Node API retains its MPL-2.0 declaration and NOTICE. Recipients must have access to those corresponding sources and notices.
The [kit repository](https://github.com/deepseek-ai/dsh-libreoffice-kit) supplies the corresponding LibreOffice source pin, modifications, build instructions, Node API, and artifact validation. Its engine packages retain their license and third-party notices; the Node API retains its MPL-2.0 declaration and NOTICE. Recipients must have access to those corresponding sources and notices.
## Development-only npm dependencies
@@ -108,7 +108,7 @@ it.skipIf(!process.env.DEEPSEEK_API_KEY || process.platform === 'win32')(`agent
expect(existsSync(decoyMarker), 'the agent must not invoke system Office when the bundled CLI is supplied').toBe(false)
expect(commandText, 'the skill supplies an entry; searching for other Office binaries is unnecessary').not.toMatch(/(?:which|whereis|command -v|find).{0,100}(?:libreoffice|soffice)/iu)
const capabilities = JSON.parse(await readFile(join(root, 'capabilities.json'), 'utf8')) as { runtime: { version: string; cliPath: string } }
expect(capabilities.runtime.version).toBe('0.1.1')
expect(capabilities.runtime.version).toBe('0.1.5')
expect(capabilities.runtime.cliPath).toMatch(/lib[/\\]cli\.js$/u)
const pdf = await readFile(join(root, 'result.pdf'))
expect(pdf.subarray(0, 5).toString()).toBe('%PDF-')
+1 -1
View File
@@ -12,7 +12,7 @@
],
"dependencies": {
"koffi": "^3.1.0",
"@deepseek-ai/libreoffice-kit": "^0.1.1",
"@deepseek-ai/libreoffice-kit": "^0.1.5",
"@deepseek-ai/cordis": "workspace:~",
"@deepseek-ai/dsh": "workspace:*",
"@deepseek-ai/dsh-agent": "workspace:*",
+2 -2
View File
@@ -3,5 +3,5 @@
# After editing either side, bring the other along and re-record with:
# pnpm run verify-translation-pairing --write apps/web/tests/fixtures/office/README.md
/binary-office-fixtures:
en: 285c49550e034ce9
zh: 1d9b91573398456d
en: 3a543ab88220f323
zh: f5127b514290e64c
+1 -1
View File
@@ -2,6 +2,6 @@
English | [中文](README.zh.md)
`preview.doc`, `preview.xls`, and `preview.ppt` contain `Office preview 中文文档`. They are the `one-page.doc`, `one-sheet.xls`, and `one-slide.ppt` fixtures from [LibreOffice Kit](https://github.com/deepseek-harness/libreoffice-kit/tree/main/test/fixtures), exported from Harness-authored OOXML with LibreOffice 26.8.0.3 using the Word, Excel, and PowerPoint 97 filters. The source documents retain the Harness MIT license.
`preview.doc`, `preview.xls`, and `preview.ppt` contain `Office preview 中文文档`. They are the `one-page.doc`, `one-sheet.xls`, and `one-slide.ppt` fixtures from [LibreOffice Kit](https://github.com/deepseek-ai/dsh-libreoffice-kit), exported from Harness-authored OOXML with LibreOffice 26.8.0.3 using the Word, Excel, and PowerPoint 97 filters. The source documents retain the Harness MIT license.
The browser regression reads these committed OLE files and verifies actual conversion and selectable PDF text. They contain no user documents and require no Office application or fixture generator during tests. They cover simple legacy imports, not complex-document fidelity.
+1 -1
View File
@@ -2,6 +2,6 @@
[English](README.md) | 中文
`preview.doc`、`preview.xls` 和 `preview.ppt` 包含 `Office preview 中文文档`。它们来自 [LibreOffice Kit](https://github.com/deepseek-harness/libreoffice-kit/tree/main/test/fixtures) 的 `one-page.doc`、`one-sheet.xls` 和 `one-slide.ppt`,由 Harness 编写的 OOXML 通过 LibreOffice 26.8.0.3 的 Word、Excel 和 PowerPoint 97 过滤器导出。源文档保留 Harness 的 MIT 许可证。
`preview.doc`、`preview.xls` 和 `preview.ppt` 包含 `Office preview 中文文档`。它们来自 [LibreOffice Kit](https://github.com/deepseek-ai/dsh-libreoffice-kit) 的 `one-page.doc`、`one-sheet.xls` 和 `one-slide.ppt`,由 Harness 编写的 OOXML 通过 LibreOffice 26.8.0.3 的 Word、Excel 和 PowerPoint 97 过滤器导出。源文档保留 Harness 的 MIT 许可证。
浏览器回归读取这些检入的 OLE 文件,验证真实转换和可选取的 PDF 文字。文件不含用户文档,测试期间不需要 Office 应用或文件生成器。它们覆盖简单的旧格式导入,不代表复杂文档的保真度。
+2 -2
View File
@@ -15,5 +15,5 @@
en: 715105e6fff89e7c
zh: a7fe63c7dd0be17f
/office-to-pdf/engine-selection-and-limits:
en: cf115b05c7135c99
zh: 327f4aff17135329
en: 3908dab1b7d78890
zh: 8f2aed6e27c5b5dd
+1 -1
View File
@@ -37,7 +37,7 @@ The `api/remotes` assembly mounts the conversion service's generated Remote desc
## Engine selection and limits
The external [`@deepseek-ai/libreoffice-kit`](https://github.com/deepseek-harness/libreoffice-kit) Node API selects its precompiled engines. The kit has an independent version and release workflow, defined by the [release ownership decision](../../.agents/notes/implemented/architecture/2026-09-14-independent-libreoffice-kit.md). Application builds install the published npm packages. Application packaging requires the target’s declared native engine, or Node WASM when the kit declares no native engine for that target. The [platform engine reference](../../packages/document/office-to-pdf/README.md) defines installation and packaging. Invalid metadata, missing required assets, and conversion errors reject without switching engines. Conversion uses disk input and output paths on the Host, with no browser conversion engine or font RPC.
The external [`@deepseek-ai/libreoffice-kit`](https://github.com/deepseek-ai/dsh-libreoffice-kit) Node API selects its precompiled engines. The kit has an independent version and release workflow, defined by the [release ownership decision](../../.agents/notes/implemented/architecture/2026-09-14-independent-libreoffice-kit.md). Application builds install the published npm packages. Application packaging requires the target’s declared native engine, or Node WASM when the kit declares no native engine for that target. The [platform engine reference](../../packages/document/office-to-pdf/README.md) defines installation and packaging. Invalid metadata, missing required assets, and conversion errors reject without switching engines. Conversion uses disk input and output paths on the Host, with no browser conversion engine or font RPC.
The [Host provider configuration](../../packages/document/office-to-pdf/README.md#use-this-package) owns concurrency, deadlines, input/output limits, archive limits, image resolution, and font access. Native/WASM implementation and asset distribution belong to the kit workspace. System LibreOffice discovery, runtime engine downloads, persistent PDF caching, and model-facing rendering are outside this provider.
+1 -1
View File
@@ -37,7 +37,7 @@
## 引擎选择和限制
外部 [`@deepseek-ai/libreoffice-kit`](https://github.com/deepseek-harness/libreoffice-kit) Node API 选择其预编译引擎。kit 独立维护版本和发布流程,具体归属由[发布归属决策](../../.agents/notes/implemented/architecture/2026-09-14-independent-libreoffice-kit.zh.md)定义。应用构建时安装已发布的 npm 包。应用打包要求目标已声明的原生引擎;kit 未为该目标声明原生引擎时使用 Node WASM。[平台引擎参考](../../packages/document/office-to-pdf/README.zh.md)定义安装和打包规则。元数据无效、必需资源缺失和转换错误都会拒绝请求,不切换引擎。转换在 Host 使用磁盘输入输出路径,不使用浏览器转换引擎或字体 RPC。
外部 [`@deepseek-ai/libreoffice-kit`](https://github.com/deepseek-ai/dsh-libreoffice-kit) Node API 选择其预编译引擎。kit 独立维护版本和发布流程,具体归属由[发布归属决策](../../.agents/notes/implemented/architecture/2026-09-14-independent-libreoffice-kit.zh.md)定义。应用构建时安装已发布的 npm 包。应用打包要求目标已声明的原生引擎;kit 未为该目标声明原生引擎时使用 Node WASM。[平台引擎参考](../../packages/document/office-to-pdf/README.zh.md)定义安装和打包规则。元数据无效、必需资源缺失和转换错误都会拒绝请求,不切换引擎。转换在 Host 使用磁盘输入输出路径,不使用浏览器转换引擎或字体 RPC。
[Host 提供方配置](../../packages/document/office-to-pdf/README.zh.md#use-this-package)负责并发、期限、输入输出上限、归档上限、图像分辨率和字体访问。原生/WASM 实现和资产分发属于 kit 工作区。系统 LibreOffice 探测、运行时引擎下载、持久 PDF 缓存和面向模型的渲染不属于此提供方。
+1 -1
View File
@@ -201,7 +201,7 @@
"@deepseek-ai/dsh-shell-env": "workspace:*",
"@deepseek-ai/dsh-system-prompt": "workspace:*",
"@deepseek-ai/dsh-typert-registry": "workspace:*",
"@deepseek-ai/libreoffice-kit": "^0.1.1",
"@deepseek-ai/libreoffice-kit": "^0.1.5",
"@deepseek-ai/dsh-otel": "workspace:*"
}
}
@@ -15,8 +15,8 @@
en: d152484eb41ac6b4
zh: a134331a31395608
/deepseek-ai-dsh-office-to-pdf/use-this-package:
en: de1e0623827dfa34
zh: 64a50569d40abedc
en: b92c13cb8f11a03c
zh: 091a22d07620394e
/deepseek-ai-dsh-office-to-pdf/understand-the-implementation:
en: 2cd10fdd5204d64a
zh: 769a79b7d684fda4
+1 -1
View File
@@ -29,7 +29,7 @@ The [Web bundle](../../bundle/web-app/README.md) mounts this provider as `office
Callers submit authorized source identity, version, optional byte size, a deferred bounded read, Office extension, and scheduling priority through `ctx.officeToPdf.convert()`. A changed source version rejects conversion. Results contain caller-owned PDF bytes, missing fonts, a cache key, and a conversion generation that changes on configuration replacement. Cancellation rejects with its reason; conversion failures use `OfficeToPdfError`.
The provider depends on the independently published [`@deepseek-ai/libreoffice-kit`](https://github.com/deepseek-harness/libreoffice-kit/tree/main/packages/entry) npm API at kit version `0.1.1`. Application packaging selects the matching native package declared in the kit’s `optionalDependencies`, or WASM when no native package is declared for that target. A missing declared native engine rejects packaging without selecting WASM. The [release ownership decision](../../../.agents/notes/implemented/architecture/2026-09-14-independent-libreoffice-kit.md) defines the independent kit and Harness responsibilities.
The provider depends on the independently published [`@deepseek-ai/libreoffice-kit`](https://github.com/deepseek-ai/dsh-libreoffice-kit) npm API at kit version `^0.1.5`. Application packaging selects the matching native package declared in the kit’s `optionalDependencies`, or WASM when no native package is declared for that target. A missing declared native engine rejects packaging without selecting WASM. The [release ownership decision](../../../.agents/notes/implemented/architecture/2026-09-14-independent-libreoffice-kit.md) defines the independent kit and Harness responsibilities.
Browsers request PDFs through the `officeToPdf.render` Remote method with a Session identity, Office path, and priority. This entry uses `workspaceFiles` for authorization and source versions, then reads raw bytes through `fs.readBytes` within the conversion reservation. In-process `convert()` does not require those services. Responses retain the source path and version and carry native PDF bytes through the binary Remote multipart transport, plus missing fonts and conversion generation. The `officeToPdf.generation` Remote method returns the current provider generation; `api/remotes` mounts the generated Client descriptor.
+1 -1
View File
@@ -29,7 +29,7 @@ kind: "package-reference"
调用方通过 `ctx.officeToPdf.convert()` 提交已授权源的标识、版本、可选字节数、延迟的有界读取、Office 扩展名和调度优先级。源版本变化会拒绝转换。结果包含调用方拥有的 PDF 字节、缺失字体、缓存键和转换 generation;配置替换后 generation 随之改变。取消以原因为拒绝值,转换失败使用 `OfficeToPdfError`。
此 provider 依赖独立发布的 [`@deepseek-ai/libreoffice-kit`](https://github.com/deepseek-harness/libreoffice-kit/tree/main/packages/entry) npm API,kit 版本为 `0.1.1`。应用打包选择 kit 的 `optionalDependencies` 中声明的匹配原生包;目标没有声明原生包时选择 WASM。已声明的原生引擎缺失时拒绝打包,不会选择 WASM。[发布归属决策](../../../.agents/notes/implemented/architecture/2026-09-14-independent-libreoffice-kit.zh.md)定义独立 kit 与 Harness 各自的职责。
此 provider 依赖独立发布的 [`@deepseek-ai/libreoffice-kit`](https://github.com/deepseek-ai/dsh-libreoffice-kit) npm API,kit 版本为 `^0.1.5`。应用打包选择 kit 的 `optionalDependencies` 中声明的匹配原生包;目标没有声明原生包时选择 WASM。已声明的原生引擎缺失时拒绝打包,不会选择 WASM。[发布归属决策](../../../.agents/notes/implemented/architecture/2026-09-14-independent-libreoffice-kit.zh.md)定义独立 kit 与 Harness 各自的职责。
浏览器通过 `officeToPdf.render` Remote 方法请求 PDF,参数为 Session 标识、Office 路径和优先级。此入口使用 `workspaceFiles` 完成授权和源版本检查,再通过 `fs.readBytes` 在转换预留容量内读取原始字节。进程内 `convert()` 不要求这些服务。响应保留源文件路径与版本,通过二进制 Remote 的 multipart 传输携带原生 PDF 字节,并携带缺失字体和转换 generation。`officeToPdf.generation` Remote 方法返回当前提供方 generation;`api/remotes` 负责挂载生成的 Client 描述符。
+1 -1
View File
@@ -55,7 +55,7 @@
"@deepseek-ai/dsh-session": "workspace:*"
},
"dependencies": {
"@deepseek-ai/libreoffice-kit": "^0.1.1",
"@deepseek-ai/libreoffice-kit": "^0.1.5",
"@deepseek-ai/schemastery": "workspace:~",
"@deepseek-ai/dsh-brand": "workspace:*",
"@deepseek-ai/dsh-typert-protocol": "workspace:*",
+1 -1
View File
@@ -37,7 +37,7 @@
"@deepseek-ai/cordis-plugin-include": "workspace:~"
},
"dependencies": {
"@deepseek-ai/libreoffice-kit": "^0.1.1",
"@deepseek-ai/libreoffice-kit": "^0.1.5",
"@deepseek-ai/schemastery": "workspace:~",
"yaml": "^2.4.2"
}
@@ -160,7 +160,7 @@ it('executes capabilities using only paths returned by the loaded skill from a s
expect(result.timedOut, result.stderr).toBe(false)
expect(result.signal, result.stderr).toBeUndefined()
expect(result.exitCode, result.stderr).toBe(0)
expect(JSON.parse(result.stdout)).toMatchObject({ runtime: { version: '0.1.1', cliPath: libreofficeKit.cli } })
expect(JSON.parse(result.stdout)).toMatchObject({ runtime: { version: '0.1.5', cliPath: libreofficeKit.cli } })
} finally {
await ctx.fiber.dispose()
await rm(root, { recursive: true, force: true })
+32 -31
View File
@@ -733,8 +733,8 @@ importers:
specifier: workspace:*
version: link:../../packages/workspace/workspace
'@deepseek-ai/libreoffice-kit':
specifier: ^0.1.1
version: 0.1.1
specifier: ^0.1.5
version: 0.1.5
koffi:
specifier: ^3.1.0
version: 3.1.1
@@ -2827,8 +2827,8 @@ importers:
specifier: workspace:*
version: link:../../typert/registry
'@deepseek-ai/libreoffice-kit':
specifier: ^0.1.1
version: 0.1.1
specifier: ^0.1.5
version: 0.1.5
packages/client/connection:
dependencies:
@@ -7263,8 +7263,8 @@ importers:
specifier: workspace:*
version: link:../../typert/protocol
'@deepseek-ai/libreoffice-kit':
specifier: ^0.1.1
version: 0.1.1
specifier: ^0.1.5
version: 0.1.5
'@deepseek-ai/schemastery':
specifier: link:../../../vendor/schemastery
version: link:../../../vendor/schemastery
@@ -12031,8 +12031,8 @@ importers:
packages/skill/skill-office:
dependencies:
'@deepseek-ai/libreoffice-kit':
specifier: ^0.1.1
version: 0.1.1
specifier: ^0.1.5
version: 0.1.5
'@deepseek-ai/schemastery':
specifier: link:../../../vendor/schemastery
version: link:../../../vendor/schemastery
@@ -15315,37 +15315,37 @@ packages:
resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==}
engines: {node: '>=20.19.0'}
'@deepseek-ai/[email protected].1':
resolution: {integrity: sha512-D6NBvtoNpm9pOgBXGQTdxpds1tYMeiFKhGJgnXF/SE0124ZM8j0AOXI7cZ8CErHctqIoVYP+gKWCrnQl4we41A==}
'@deepseek-ai/[email protected].5':
resolution: {integrity: sha512-SjeXmyaTevEq2TxK7reb1rhCrQZ4QOXmXt/qEwfQD5Fx3odU0ILx2uiXN+nphSCQ95LFCzrElHGgv2c7a824yg==}
engines: {node: '>=22.19.0'}
cpu: [arm64]
os: [darwin]
'@deepseek-ai/[email protected].1':
resolution: {integrity: sha512-VcAqzmzDbRySLBnpRNYSEd+fDmAtdgL1hQMjRf4sFnQuz7m1vipQ00DtlqFG/T+9uCc20bMIyiDWh8zfYObW3w==}
'@deepseek-ai/[email protected].5':
resolution: {integrity: sha512-vuz2tTpH1Edk75+DISwg/TXdQ3BNSNSHoVnWVqxqbGMgrrK9trLOw2+0X7mjT1naGO00Zc1qkyQ4if3kx5XjqQ==}
engines: {node: '>=22.19.0'}
cpu: [x64]
os: [darwin]
'@deepseek-ai/[email protected].1':
resolution: {integrity: sha512-YuKZJdDhR/0GeTZUHJsJvachJR8ZiS4lcrL+lxUF2GLRwXcMikN0zAQOA+6kD/nRI+vlHsCkX0KvHaKvfae79Q==}
'@deepseek-ai/[email protected].5':
resolution: {integrity: sha512-V+pu5xJsKhVD4AU1xbFlMWY91svK9ZIC2JsNOph9kWp/arF/KQcuytt76bcbozJqPbE8o0n04lyh0m3QW5RYSA==}
engines: {node: '>=22.19.0'}
os: [linux]
'@deepseek-ai/[email protected].1':
resolution: {integrity: sha512-RR05Y9NQzPYRRo9vCydlp6HKv+0eR12A99Pw7bAuUmcagyGN3gtWZKaG6xrT8vccPf3mByP3Bi0Mo31D/lrySA==}
'@deepseek-ai/[email protected].5':
resolution: {integrity: sha512-Av3aFfNLaVxfffu0JXP5mqfmsCU3gQtlUH9UD+zdXl8ON06ukVAmu7LqNyuKAz/68WoOMTQ+YBlVQukgDRKd/A==}
engines: {node: '>=22.19.0'}
cpu: [arm64]
os: [win32]
'@deepseek-ai/[email protected].1':
resolution: {integrity: sha512-03CUYg9j2qJ7Q6K27xFCvTLa7FgawOZ1DtE6NlEYttF6TxGuyHEv358vBGc3cwlR1yG1Vfj+pa4e5MdPGpy8mA==}
'@deepseek-ai/[email protected].5':
resolution: {integrity: sha512-uKuDGZdofxuW4iRmUh8b3+XWU28JeOCYMTAONzo7tEHIq00DV2cARcgUYiTP7gUH49tH4A/RyPMOVEBzK7qjjw==}
engines: {node: '>=22.19.0'}
cpu: [x64]
os: [win32]
'@deepseek-ai/[email protected].1':
resolution: {integrity: sha512-vML+3Nh/159k/TWuxLfZU1O39BA0m+/jybfySu9dJaTHR2oAi+hHWud6iRhBaCie5N6ADfo4DNHajBk52pmRog==}
'@deepseek-ai/[email protected].5':
resolution: {integrity: sha512-H12xtUsAyl70zFeQ5pk5GGRc3N1+6zn+DVAcqwlguI6EvqopBGP3xkUmePU7g5f6ydYlDZLWedHT9lTSL7zLxA==}
engines: {node: '>=22.19.0'}
hasBin: true
@@ -22835,32 +22835,33 @@ snapshots:
'@csstools/[email protected]': {}
'@deepseek-ai/[email protected].1':
'@deepseek-ai/[email protected].5':
optional: true
'@deepseek-ai/[email protected].1':
'@deepseek-ai/[email protected].5':
optional: true
'@deepseek-ai/[email protected].1':
'@deepseek-ai/[email protected].5':
optional: true
'@deepseek-ai/[email protected].1':
'@deepseek-ai/[email protected].5':
optional: true
'@deepseek-ai/[email protected].1':
'@deepseek-ai/[email protected].5':
optional: true
'@deepseek-ai/[email protected].1':
'@deepseek-ai/[email protected].5':
dependencies:
fflate: 0.8.2
fontkit: 2.0.4
koffi: 3.1.1
saxes: 6.0.0
optionalDependencies:
'@deepseek-ai/libreoffice-kit-darwin-arm64': 0.1.1
'@deepseek-ai/libreoffice-kit-darwin-x64': 0.1.1
'@deepseek-ai/libreoffice-kit-wasm': 0.1.1
'@deepseek-ai/libreoffice-kit-win32-arm64': 0.1.1
'@deepseek-ai/libreoffice-kit-win32-x64': 0.1.1
'@deepseek-ai/libreoffice-kit-darwin-arm64': 0.1.5
'@deepseek-ai/libreoffice-kit-darwin-x64': 0.1.5
'@deepseek-ai/libreoffice-kit-wasm': 0.1.5
'@deepseek-ai/libreoffice-kit-win32-arm64': 0.1.5
'@deepseek-ai/libreoffice-kit-win32-x64': 0.1.5
'@docsearch/[email protected]': {}
+6 -6
View File
@@ -56,12 +56,12 @@ allowBuilds:
minimumReleaseAgeExclude:
# Office engines and their API are qualified and released together by the kit repository.
- '@deepseek-ai/[email protected].1'
- '@deepseek-ai/[email protected].1'
- '@deepseek-ai/[email protected].1'
- '@deepseek-ai/[email protected].1'
- '@deepseek-ai/[email protected].1'
- '@deepseek-ai/[email protected].1'
- '@deepseek-ai/[email protected].5'
- '@deepseek-ai/[email protected].5'
- '@deepseek-ai/[email protected].5'
- '@deepseek-ai/[email protected].5'
- '@deepseek-ai/[email protected].5'
- '@deepseek-ai/[email protected].5'
# Fresh pi-ai releases carry the model catalog updates that are the whole
# point of bumping it; waiting out the release age would defeat that.
- '@earendil-works/[email protected]'
+1 -1
View File
@@ -805,7 +805,7 @@ ${kitRuntime ? `
${[...LIBREOFFICE_PACKAGES].map(name => `\`${name}\``).join(', ')} declare MPL-2.0, which remains outside the permissive-license allowlist; the notices check accepts only these package identities at those terms. The [distribution decision](.agents/notes/implemented/architecture/2026-09-14-independent-libreoffice-kit.md) records the source obligations.
The [kit repository](https://github.com/deepseek-harness/libreoffice-kit) supplies the corresponding LibreOffice source pin, modifications, build instructions, Node API, and artifact validation. Its engine packages retain their license and third-party notices; the Node API retains its MPL-2.0 declaration and NOTICE. Recipients must have access to those corresponding sources and notices.
The [kit repository](https://github.com/deepseek-ai/dsh-libreoffice-kit) supplies the corresponding LibreOffice source pin, modifications, build instructions, Node API, and artifact validation. Its engine packages retain their license and third-party notices; the Node API retains its MPL-2.0 declaration and NOTICE. Recipients must have access to those corresponding sources and notices.
` : ''}
## Development-only npm dependencies