Commit Graph
16 Commits
Author SHA1 Message Date
Turtle 38c7a9fbf4 feat(release): publish package source, declaration maps, and documentation (#5884)
* feat(release): publish package source, declaration maps, and documentation

Every release member publishes its TypeScript source and the declaration
maps that resolve into it, and @deepseek-ai/dsh publishes the repository
Markdown documentation staged from docs/ at prepack time.

The ./src/* export most members already declared now resolves for an
installed consumer, and a consumer editor follows a declaration to the
implementation. Bundled JavaScript maps stay unpublished; the vendored
family and the Desktop runtime file policy are unchanged.

Rationale: .agents/notes/implemented/process/2026-10-08-published-source-and-docs.md

* feat(release): publish JavaScript maps and compress bundles

Every emitted JavaScript map ships beside the bundle it describes, and the
workspace build and the client preset compress bundles without mangling
identifiers.

The documentation payload now mirrors the website publication manifest and
is removed again by `postpack`; Desktop and the Python executable exclude
the published source, documentation, and maps; `clean` removes a staged
copy. Typert's publication contract gains the Remote declaration map.

* fix(release): keep node bundles readable for the worker image

The browser worker image lowers `yield*` only as a whole statement and
rewrites `for await` loops by their source layout, so compressed node-side
entries either fail that lowering or lower to unparseable code. Only the
browser bundles keep compression, which removes about a third of their text.

The bundle-purity assertion now matches the module-loader call regardless of
the quote style compression picks, and the release-pack fixture exercises
the installed package's new documentation requirement.

* feat(release): publish the whole documentation tree

`@deepseek-ai/dsh` copies `docs/` in full instead of the website's page
set: the maintainer documents, the generated migration records, the
translation guidelines, and the `*.i18n.yaml` consistency records ship
with the installed package, so the documentation's own links resolve
without a checkout.

* feat(release): publish the upgrade guides with the documentation

The staged documentation keeps the website's page set and adds every
`docs/upgrade-guide/` document, which is what an installed reader consults
when a released change breaks something. The rest of the maintainer tree
stays out.

* test(release): expect source and maps in master's new payload cases

* feat(release): keep installed docs and source readable in Desktop

Desktop keeps the published src/ and docs/ trees inside app.asar, and
every model shell call receives DSH_INSTALL_DIR and DSH_NODE_EXECUTABLE
so an agent can read them through Electron's Node mode. Staging also
generates docs/upgrade-guide/README.md, an index of the upgrade guides
grouped by the release they upgrade from.

Minified client bundles print string literals with backticks: the
worker image packer now recognizes those chunk requests, client license
banners are prepended after minification so their text survives, and
the affected artifact tests accept either quote.

* test(desktop): read archived docs through the Windows PowerShell form

Regenerate the config catalog for the shifted shell-env source line.

* test(desktop): wait for the GUI-subsystem Electron process from PowerShell

* build(release): publish source and maps from the message-quotes package

* build(release): publish source and maps from packages new on master

* build(release): publish source and maps from the tool-office package
2026-11-05 00:22:36 +08:00
yudshj ab0be5a4bd fix(office): align tool package with release version 2026-11-04 19:36:10 +08:00
yudshj ca3ad0cc85 fix(office): 按 review 意见同步文档事实、Office 行兜底、拒绝用例结构与主运行时默认值归属
- Native Office 工具 Agent Note:移除已删除的 `/locate` 子路径、把「PDF 页数」改为转换器报告的页数、补全输出文件删除条件、把「工具不可用」统一为「不在工具列表中」,中英文与配对哈希同步。
- skill-office / tool-office README:Progressive loading 与 unavailable 提示摘要按实际行为描述,重录 i18n 哈希。
- Office 行:结果只含图片块时不再回退到扁平化输出(避免向用户显示附件引用 JSON),用例随之改为断言没有输出区。
- tool-office 用例:参数拒绝与路径拒绝拆成两组,用 resolve 调用次数显式表达「是否碰文件系统」。
- office-docx / office-xlsx:去掉引导语会让模型把「只做内容检查」误读成「需要渲染」,并刷新内嵌技能正文的 office 快照。
- visual-intent 夹具:用具名 intent 常量代替下标引用。
- Desktop:主运行时「运行时目录旁」的布局假设只保留在 Host 侧,壳传空参数表示使用默认,行为不变。
2026-11-04 18:18:03 +08:00
yudshj c1d9d02138 docs(office): 文档对齐 office_render 卡片暂不显示图库 2026-11-04 18:18:01 +08:00
yudshj a485361411 chore(office): align new package and upgrade guides with current release 2026-11-04 18:18:01 +08:00
yudshj 39f2c26d8b refactor(office): office_convert 与 office_recalculate 共用文件输出定义,消除重复代码 2026-11-04 18:18:00 +08:00
yudshj 2db0bb8874 docs(office): 修正 office 工具结果 pageCount 的字段说明 2026-11-04 18:18:00 +08:00
yudshj f0f3f3fdd8 fix(office): 参数校验与 officeKit 判空提前到读取输入之前 2026-11-04 18:18:00 +08:00
yudshj faa25da88f fix(office): 技能路由补充不覆盖已有文件,统一工具缺失措辞,收紧 office 工具失败提示
- 路由与三个创作技能改为“工具不在工具列表时加载 office”,避免与错误码 unavailable 混淆
- 路由补充“除非用户要求,不覆盖已有文件”,压缩正文保持 200 token 预算
- officeFailure 改用 instanceof OfficeKitError;unavailable 提示允许暂时性失败稍后重试
- outputOwner 在树根已失效(UNAUTHORIZED)时由调用方 Session 持有输出
- 转换结果文本说明保留期与容量淘汰
- 刷新 office 会话快照
2026-11-04 18:17:59 +08:00
yudshj 9d01969217 fix(office): 清理 /locate 残留文档,收窄 office 工具输出 schema
- 打包、document 分组、office-kit 子系统页与 Agent Note 改为提供方内部解析 Kit,不再引用已删除的 /locate 入口
- office_recalculate 输出 format 收窄为 xlsx/ods;office_render 图片 mediaType 去掉 GIF,存储返回 GIF 时明确报错
- 修正 office-kit 输出位置、技能数量、token 预算说明,补充 /office 直接调用的激活时机限制
- 升级指南说明继承的 DSH_PRIMARY_RUNTIME 优先于 SDK 下载缓存,刷新 office-progressive-ptc 系统提示快照
2026-11-04 18:17:59 +08:00
yudshj d7ae76a92b refactor(office): 渲染图片沿用附件实际媒体类型,收窄 office-kit 冗余接口
- office_render 返回存储规范化后的 mediaType(JPEG/WebP),复用 ImageAttachmentRef 字段并补回归测试
- 删除无生产消费者的 office-kit/locate 公开子路径与 unpackedPath 导出
- tool-office 复用 office-kit 格式与扩展名类型
- 删除新操作结果的 generation 与请求的 priority 字段
- 删除 tool-office 入口无人使用的结果类型重导出
2026-11-04 18:17:59 +08:00
yudshj edd38f1d66 refactor(office): office 工具拆成 office_render/office_convert/office_recalculate,加载 Office 技能后按需声明
- tool-office 注册三个工具,参数规则由各自 schema 表达,运行时拒绝其他工具的参数
- 三个工具共用 when:本 agent 成功加载过 activationSkills 中的技能(内存标记),或上一次请求头已声明 office_*;加载后下一步声明,之后不移除
- Office 技能改用新工具名,加入工具不可用时重新加载 office 的说明和旧格式先转换的说明
- Client 卡片按工具名分派,图片子槽改为 tool.call.office_render.images
- 删除未发布 office 工具的两份升级指南,新增 office-operation-tools 指南,只记录已发布版本的变化
- 刷新 catalog、snapshot、SDK expected 与 Agent Note
2026-11-04 18:17:59 +08:00
yudshj 44f644ef85 refactor(office): render 的图片输入检查改为 office 工具私有实现,不再改动 tool-fs 与 dsh-tools 2026-11-04 18:17:58 +08:00
yudshj 78da437976 refactor(office): 移除 render/recalculate/export-pdf 技能,改为直接调用 office 工具 2026-11-04 18:17:58 +08:00
yudshj 611e42b9a5 fix(office): 输出清理限定在自有目录,缓存命中前确认读权限
- office-kit:启动 sweep 只处理 session-<hash>/<uuid> 格式的真实目录,不跟随 symlink;删除成功后才释放记账,失败保留并重试,dispose 等待全部删除;容量腾不出时 save 明确失败
- office-kit / web-app 测试:显式使用临时 outputDirectory,不再清理真实 $DSH_HOME
- tool-office:交给 kit 前读 1 字节并重核 version,缓存命中也受当次读权限约束
- 文档:升级指南与 README 写明 render 不再保存图片文件、原生引擎在 Host 内运行;skill-office 链接 #7677;清理 Office-to-PDF 旧描述并重新生成 catalog
- 客户端:renderImages 改用 useCallback;e2e 补 assertNever,依赖按字母序
2026-11-04 18:17:58 +08:00
yudshj 50ba635949 feat(office): Office 操作改为常驻的原生 office 工具
- 新包 @deepseek-ai/dsh-tool-office 提供常驻的 office 工具(render / convert / recalculate),由 office-kit 在 Host 中直接调用 Kit 的 JS API;标准模式与 PTC 通过同一个工具调用
- render 的页面图片直接进入工具结果(有数量、像素与字节上限);convert / recalculate 的结果写入 office-kit 按 Session 划分的私有输出目录,由模型用 shell 复制到工作区,fs 与 Host 代码不写用户工作区
- 删除为 shell 执行 Kit CLI 而存在的代码:skill-office 的 node / cli / kitRoot、resolveKitCli、DSH_BUNDLED_OFFICE_CLI / DSH_BUNDLED_OFFICE_NODE / DSH_BUNDLED_RUNTIME_ROOT 与 Electron 下的独立 Node 检查;打包 smoke 改为经 office-kit 真实渲染、转换与重算
- office 由 web-app 的 standard / ptc 预设与 sdk-app 挂载,minimal 不挂载;操作技能正文与目录描述指向 office 工具
- 新增 Agent Note,部分取代 progressive-office-skills 的 shell 执行决定;同步 README、子系统页、catalog 与升级指南(含已保存预设的迁移步骤)

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