#441 by GitHub stars

NanmiCoder/dsh-agent-teams

DeepSeek Harness 的 Agent Teams 多智能体协作插件,支持多个 AI Agent 组成团队,协同完成复杂任务,实现任务分配、并行执行、成员通信与团队协作。 AgentTeams plugin for DeepSeek Harness

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

.dsh/skills/dsh-benchmark-case/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

c059636e541f → 3331b903f0e9

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → c059636e541f

No earlier version was observed for comparison.

Compare on GitHub

.dsh/skills/dsh-plugin-development/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Network or broad shell

c059636e541f → 3331b903f0e9

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → c059636e541f

No earlier version was observed for comparison.

Compare on GitHub

.dsh/skills/dsh-upgrade-audit/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

c059636e541f → 3331b903f0e9

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → c059636e541f

No earlier version was observed for comparison.

Compare on GitHub

.dsh/skills/generic-migration/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Network or broad shell

c059636e541f → 3331b903f0e9

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → c059636e541f

No earlier version was observed for comparison.

Compare on GitHub

.dsh/skills/plugin-heavy-dep/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

c059636e541f → 3331b903f0e9

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → c059636e541f

No earlier version was observed for comparison.

Compare on GitHub

.dsh/skills/plugin-release/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

c059636e541f → 3331b903f0e9

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → c059636e541f

No earlier version was observed for comparison.

Compare on GitHub

.dsh/skills/plugin-runtime-debug/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Network or broad shell

c059636e541f → 3331b903f0e9

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → c059636e541f

No earlier version was observed for comparison.

Compare on GitHub

.dsh/skills/plugin-test/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

c059636e541f → 3331b903f0e9

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → c059636e541f

No earlier version was observed for comparison.

Compare on GitHub

.dsh/skills/plugin-upgrade/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

c059636e541f → 3331b903f0e9

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → c059636e541f

No earlier version was observed for comparison.

Compare on GitHub

.dsh/skills/plugin-workflow/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

c059636e541f → 3331b903f0e9

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → c059636e541f

No earlier version was observed for comparison.

Compare on GitHub

.dsh/skills/plugin-write/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

c059636e541f → 3331b903f0e9

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → c059636e541f

No earlier version was observed for comparison.

Compare on GitHub

skills/dsh-benchmark-case/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

c059636e541f → 3331b903f0e9

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → c059636e541f

No earlier version was observed for comparison.

Compare on GitHub

skills/dsh-plugin-development/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Network or broad shell

c059636e541f → 3331b903f0e9

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → c059636e541f

No earlier version was observed for comparison.

Compare on GitHub

skills/dsh-upgrade-audit/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

c059636e541f → 3331b903f0e9

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → c059636e541f

No earlier version was observed for comparison.

Compare on GitHub

skills/generic-migration/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Network or broad shell

c059636e541f → 3331b903f0e9

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → c059636e541f

No earlier version was observed for comparison.

Compare on GitHub

skills/plugin-heavy-dep/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

c059636e541f → 3331b903f0e9

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → c059636e541f

No earlier version was observed for comparison.

Compare on GitHub

skills/plugin-release/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

c059636e541f → 3331b903f0e9

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → c059636e541f

No earlier version was observed for comparison.

Compare on GitHub

skills/plugin-runtime-debug/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Network or broad shell

c059636e541f → 3331b903f0e9

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → c059636e541f

No earlier version was observed for comparison.

Compare on GitHub

skills/plugin-test/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

c059636e541f → 3331b903f0e9

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → c059636e541f

No earlier version was observed for comparison.

Compare on GitHub

skills/plugin-upgrade/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

c059636e541f → 3331b903f0e9

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → c059636e541f

No earlier version was observed for comparison.

Compare on GitHub

skills/plugin-workflow/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

c059636e541f → 3331b903f0e9

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → c059636e541f

No earlier version was observed for comparison.

Compare on GitHub

skills/plugin-write/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

c059636e541f → 3331b903f0e9

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → c059636e541f

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit 3331b903f0e954d59ac69be1a75fd4fd7e1de20e

git clone --filter=blob:none --no-checkout https://github.com/NanmiCoder/dsh-agent-teams.git .hotskills/nanmicoder-dsh-agent-teams && git -C .hotskills/nanmicoder-dsh-agent-teams checkout --detach 3331b903f0e954d59ac69be1a75fd4fd7e1de20e # Copy each selected skill directory from .hotskills/nanmicoder-dsh-agent-teams into .agents/skills/<skill-name>/
2.7kGitHub stars
150stars in 7 days
22skills in this repository
106commits in 30 days

Heat

8.3
  • Star growth, last 7 daysAhead of 97% of tracked repositories
  • Star growth, last 24 hoursAhead of 97% of tracked repositories
  • Rank movement, last 7 daysAhead of 89% of tracked repositories
  • Commits, last 30 daysAhead of 94% of tracked repositories
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekAhead of 0% of tracked repositories

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Aug 9, 2026Nov 6, 20262,737

Individual skills in this repository

How it works

dsh-benchmark-case

When your agent uses it

Use when the user hands over a dsh plugin repository (or a real migration commit / version corridor) and wants its upgrade experience extracted into one auto-graded Harbor benchmark exam task — produce tasks/<id>/ (fixture + instruction.md + task.toml + judge.mjs + solution) that harbor run can grade 0–1 and that folds into the dsh-plugin-upgrade-skill benchmark suite; also applies to turning existing version cards (references/v*.md) into executable exam tasks. Not for writing upgrade cards; not for running the benchmark.

What it loads into context

Frontmatter

125 tokens

Always available to the agent

SKILL.md

5,000 tokens

When the skill is activated

Reference documents

8,232 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. 何时使用
  2. 工作原理(一句话)
  3. Pipeline
  4. 交付
  5. Gotchas(实战教训,新增题前先扫)
  6. references(按需读)
  7. 校验清单(交付前逐项自查)

Scripts executed separately

  • assets/judge-utils.mjs
  • assets/solve.sh.example
  • assets/test.sh.example

Files

  • SKILL.mdcore17,029 bytes
  • SKILL.mdcore17,029 bytes
  • SKILL.mdcore17,029 bytes
  • SKILL.mdcore17,029 bytes
  • SKILL.mdcore17,029 bytes
  • SKILL.mdcore17,029 bytes
  • SKILL.mdcore17,029 bytes
  • SKILL.mdcore17,029 bytes
  • SKILL.mdcore17,029 bytes
  • SKILL.mdcore17,029 bytes
  • SKILL.mdcore17,029 bytes
  • SKILL.mdcore17,029 bytes
  • SKILL.mdcore17,029 bytes
  • SKILL.mdcore17,029 bytes
  • SKILL.mdcore17,029 bytes
  • SKILL.mdcore17,029 bytes
  • SKILL.mdcore17,029 bytes
  • SKILL.mdcore17,029 bytes
  • assets/Dockerfile.exampleasset608 bytes
  • assets/instruction.md.exampleasset3,154 bytes
  • assets/judge-utils.mjsruns9,102 bytes
  • assets/judge.mjs.exampleasset3,717 bytes
  • assets/solve.sh.exampleruns739 bytes
  • assets/task.toml.exampleasset830 bytes
  • assets/test.sh.exampleruns806 bytes
  • references/case-selection.mddoc3,667 bytes
  • references/contract-clauses.mddoc4,128 bytes
  • references/grading-recipe.mddoc5,551 bytes
  • references/harbor-task-spec.mddoc4,520 bytes
  • references/host-archaeology.mddoc6,275 bytes
  • references/registry-sync.mddoc3,305 bytes
Read SKILL.md

# 从插件仓库提取 dsh 升级考题

把一个真实发生的插件迁移(git 历史里的破坏性变更 commit)变成一道
**Harbor 考题**:旧形态插件为 fixture(装上必坏,或有隐藏坑),新形态为
oracle 参考解,judge 在容器内真实冷启动判活。产出跟随
`./benchmark/`(上文:`oh-my-dsh/dsh-plugin-upgrade-skill` 的 benchmark 目录)。

> 上下文锚点:目标套件是 dsh-plugin-upgrade-skill 的 benchmark v2.4(Harbor
> 格式),host 镜像固定为 node:24-bookworm + 全局 dsh 0.1.2-alpha.2。每条考题
> 遵循 execution-contract(BENCHMARK-AUTH-v1)与固定评分模型(100 分/题)。

## 何时使用

- 用户给一个插件仓库,说"提成考题 / 做成 case / 转 benchmark task"。
View the complete source on GitHub

Skills included

  • dsh-benchmark-case
  • dsh-plugin-development
  • dsh-upgrade-audit
  • generic-migration
  • plugin-heavy-dep
  • plugin-release
  • plugin-runtime-debug
  • plugin-test
  • plugin-upgrade
  • plugin-workflow
  • plugin-write
  • dsh-benchmark-case
  • dsh-plugin-development
  • dsh-upgrade-audit
  • generic-migration
  • plugin-heavy-dep
  • plugin-release
  • plugin-runtime-debug
  • plugin-test
  • plugin-upgrade
  • plugin-workflow
  • plugin-write

Repository facts

License
MIT
Created
Aug 12, 2026
Last pushed
Nov 6, 2026
Forks
228
Open issues
48
Project activity
Active

Rank over the last 12 weeks

Now #441 · best #434 · up 16 in 30 days

  1. #442 on Nov 1
  2. #443 on Nov 2
  3. #445 on Nov 3
  4. #441 on Nov 4
  5. #442 on Nov 5
  6. #441 since Nov 6
76 earlier periods
  1. #893 on Aug 9
  2. #913 on Aug 13
  3. #880 on Aug 14
  4. #839 on Aug 15
  5. #851 on Aug 16
  6. #841 on Aug 17
  7. #835 on Aug 18
  8. #791 on Aug 19
  9. #728 on Aug 20
  10. #695 on Aug 21
  11. #632 on Aug 22
  12. #639 on Aug 23
  13. #628 on Aug 24
  14. #607 on Aug 25
  15. #577 on Aug 26
  16. #567 on Aug 27
  17. #566 on Aug 28
  18. #533 on Aug 29
  19. #522 on Aug 30
  20. #539 on Aug 31
  21. #535 on Sep 1
  22. #519 on Sep 2
  23. #521 on Sep 3
  24. #502 on Sep 4
  25. #496 on Sep 5
  26. #503 on Sep 6
  27. #500 on Sep 7
  28. #514 on Sep 8
  29. #499 from Sep 9 to Sep 10
  30. #489 on Sep 11
  31. #483 on Sep 12
  32. #478 on Sep 13
  33. #488 on Sep 14
  34. #480 on Sep 15
  35. #485 on Sep 16
  36. #475 on Sep 17
  37. #483 on Sep 18
  38. #464 on Sep 19
  39. #473 on Sep 20
  40. #472 on Sep 21
  41. #480 on Sep 22
  42. #472 on Sep 23
  43. #458 on Sep 24
  44. #459 on Sep 25
  45. #450 on Sep 26
  46. #467 on Sep 27
  47. #472 from Sep 28 to Sep 29
  48. #468 on Sep 30
  49. #459 on Oct 1
  50. #454 on Oct 2
  51. #443 on Oct 3
  52. #436 on Oct 4
  53. #447 on Oct 5
  54. #455 on Oct 6
  55. #457 on Oct 7
  56. #462 from Oct 8 to Oct 9
  57. #456 on Oct 10
  58. #452 on Oct 11
  59. #464 on Oct 12
  60. #452 on Oct 13
  61. #450 on Oct 14
  62. #448 on Oct 15
  63. #452 on Oct 16
  64. #443 on Oct 17
  65. #449 on Oct 18
  66. #452 on Oct 19
  67. #450 on Oct 20
  68. #453 on Oct 21
  69. #447 on Oct 22
  70. #444 on Oct 23
  71. #434 on Oct 24
  72. #458 on Oct 25
  73. #454 on Oct 28
  74. #450 on Oct 29
  75. #446 on Oct 30
  76. #443 on Oct 31

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 2, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 164 notes
  • .dsh/skills/dsh-benchmark-case/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • .dsh/skills/dsh-benchmark-case/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • .dsh/skills/dsh-benchmark-case/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • .dsh/skills/dsh-benchmark-case/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • .dsh/skills/dsh-benchmark-case/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • .dsh/skills/dsh-benchmark-case/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • .dsh/skills/dsh-benchmark-case/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • .dsh/skills/dsh-benchmark-case/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • .dsh/skills/dsh-benchmark-case/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • .dsh/skills/dsh-benchmark-case/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • .dsh/skills/dsh-benchmark-case/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • .dsh/skills/dsh-benchmark-case/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • .dsh/skills/dsh-benchmark-case/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • .dsh/skills/dsh-benchmark-case/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • .dsh/skills/dsh-benchmark-case/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • .dsh/skills/dsh-benchmark-case/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • .dsh/skills/dsh-benchmark-case/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • .dsh/skills/dsh-plugin-development/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • .dsh/skills/dsh-plugin-development/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • .dsh/skills/dsh-plugin-development/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 1,574 signals by file

.dsh/skills/dsh-benchmark-case/assets/Dockerfile.example

  • Dangerous shell operationline 5
    && rm -rf /var/lib/apt/lists/*

.dsh/skills/dsh-benchmark-case/assets/judge-utils.mjs

  • Executable scriptline 1
    Executable file
  • Dangerous shell operationline 106
    const write = await localExec(`rm -rf '${dir}' && mkdir -p '${dir}' && base64 -d > '${dir}/package.json'`, {
  • Dangerous shell operationline 130
    `pkill -f 'profile ${selfSafe}' 2>/dev/null; rm -rf '/root/.dsh/profiles/${profile}' '${tmpDir}' /tmp/${profile}-boot.log; true`,
  • Network accessline 170
    if (match) {   try {     const r1 = await fetch(match[1], { redirect: "manual" });
  • Network accessline 171
    try {     const r1 = await fetch(match[1], { redirect: "manual" });     const setCookie = r1.headers.getSetCookie ? r1.headers.getSetCookie() : [r1.headers.get("set-cookie")];
  • Network accessline 172
    const r1 = await fetch(match[1], { redirect: "manual" });
  • Network accessline 173
    const setCookie = r1.headers.getSetCookie ? r1.headers.getSetCookie() : [r1.headers.get("set-cookie")];     const cookie = setCookie.filter(Boolean).map((c) => c.split(";")[0]).join("; ");     const r2 = await fetch("http://127.0.0.1:3080/"
  • Network accessline 174
    const cookie = setCookie.filter(Boolean).map((c) => c.split(";")[0]).join("; ");     const r2 = await fetch("http://127.0.0.1:3080/", { headers: { cookie } });     outcome.html = await r2.text();
  • Network accessline 175
    const r2 = await fetch("http://127.0.0.1:3080/", { headers: { cookie } });

.dsh/skills/dsh-benchmark-case/assets/solve.sh.example

  • Executable scriptline 1
    #!/bin/bash
  • Dangerous shell operationline 11
    # rm -f /app/fixture/<legacy-file-that-must-go>

.dsh/skills/dsh-benchmark-case/assets/test.sh.example

  • Executable scriptline 1
    #!/bin/bash

.dsh/skills/dsh-benchmark-case/references/harbor-task-spec.md

  • Dangerous shell operationline 59
    RUN apt-get update && apt-get install -y --no-install-recommends git      && rm -rf /var/lib/apt/lists/*
  • Dangerous shell operationline 60
    && rm -rf /var/lib/apt/lists/*

.dsh/skills/dsh-benchmark-case/references/registry-sync.md

  • Dangerous shell operationline 67
    # 断言最后一行 {"score":100,"max":100,…};跑完 docker rm -f

.dsh/skills/dsh-plugin-development/SKILL.md

  • Network accessline 5
    version: "3.1.1"   date: "2026-09-06"   reference: "https://github.com/NanmiCoder/dsh-agent-teams"
  • Network accessline 6
    date: "2026-09-06"   reference: "https://github.com/NanmiCoder/dsh-agent-teams" ---
  • Network accessline 7
    reference: "https://github.com/NanmiCoder/dsh-agent-teams"
  • Network accessline 60
    官方仓库 `https://github.com/deepseek-ai/deepseek-harness` 是公开、MIT 许可的可引用证据源。取证须明确目标版本、对应 tag/commit 和 npm 发布状态;不要把默认分支等同于用户安装版本。需要兜底取证时:
  • Network accessline 67
    git clone --filter=blob:none https://github.com/deepseek-ai/deepseek-harness.git "$SCRATCH/dsh-official"

.dsh/skills/dsh-upgrade-audit/SKILL.md

  • Network accessline 89
    This skill produces **evidence of host-version compatibility** (report + boundary signature table); [plugin-upgrade](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-upgrade/) consumes that evidence (version-cha

.dsh/skills/dsh-upgrade-audit/SKILL.zh-CN.md

  • Network accessline 82
    本 skill 产出**宿主版本间的兼容性证据**(报告 + 边界签名表);[plugin-upgrade](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-upgrade/) 消费这类证据(版本变更卡片)执行单个插件的迁移。审计发现可直接供给卡片「实战批注」;给 `plugin-upgrade` 补卡时引用本 skill 的报告目录而非凭记忆转述。

.dsh/skills/dsh-upgrade-audit/scripts/gen-artifacts.check.mjs

  • Executable scriptline 1
    Executable file

.dsh/skills/dsh-upgrade-audit/scripts/gen-artifacts.mjs

  • Executable scriptline 1
    #!/usr/bin/env node

.dsh/skills/dsh-upgrade-audit/scripts/materialize-npm.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Network accessline 175
    const range = `dsh-v${a.resolved}...dsh-v${b.resolved}`     try {       const res = await fetch(`https://api.github.com/repos/${owner}/${repo}/compare/${range}`)
  • Network accessline 176
    try {       const res = await fetch(`https://api.github.com/repos/${owner}/${repo}/compare/${range}`)       if (res.ok) {
  • Network accessline 177
    const res = await fetch(`https://api.github.com/repos/${owner}/${repo}/compare/${range}`)

.dsh/skills/plugin-release/references/profile-dependency-management.md

  • Network accessline 3
    > Carries on the release-track choice of [../SKILL.md](../SKILL.md). This document covers the dependency-resolution facts and operational recipes for installing/updating plugins into `$DSH_HOME/profiles/*`, drawn from the continuous migrati
  • Network accessline 4
    > (tsbuildinfo, oxc parsing, etc.) are covered in [migration-hygiene](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-upgrade/references/migration-hygiene.md);
  • Network accessline 45
    - The profile's own `node_modules` contains only the profile's declared dependencies; when a bare row name fails to resolve, resolution falls back to the shared `$DSH_HOME/profiles/node_modules` (which holds copies of the app's and each bun
  • Network accessline 46
    - When a directory junction points at a local workspace package, **a workspace source update takes effect once dsh is restarted**; host-half changes require a restart, and only then can the client half hard-refresh (see item 3 of [migration
  • Network accessline 58
    Since 0.1.2-alpha.1, dsh web uses bootstrap-token + signed-Cookie authentication (see [DSH-0.1.2-A1-08 · Web/API channel authentication](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-upgrade/references/v0.1.2
  • Network accessline 59
    [DSH-0.1.2-A1-08 · Web/API channel authentication](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-upgrade/references/v0.1.2-alpha.1.md)).
  • Network accessline 65
    [Credential-related source omitted]
  • Network accessline 66
    [Credential-related source omitted]
  • Network accessline 67
    [Credential-related source omitted]
  • Network accessline 68
    [Credential-related source omitted]
  • Network accessline 69
    # 3. Call the custom channel with the session → assert 200 $body = @{ type = 'client-request'; rpcId = 'smoke'; method = 'status'; payload = $null } | ConvertTo-Json Invoke-WebRequest 'http://127.0.0.1:3190/tariff/status' -Method POST -Cont
  • Network accessline 70
    $body = @{ type = 'client-request'; rpcId = 'smoke'; method = 'status'; payload = $null } | ConvertTo-Json Invoke-WebRequest 'http://127.0.0.1:3190/tariff/status' -Method POST -ContentType 'application/json' -Body $body -WebSession $sess # 
  • Network accessline 71
    Invoke-WebRequest 'http://127.0.0.1:3190/tariff/status' -Method POST -ContentType 'application/json' -Body $body -WebSession $sess
  • Network accessline 73
    Invoke-WebRequest 'http://127.0.0.1:3190/tariff/status' -Method POST -ContentType 'application/json' -Body $body
  • Network accessline 76
    curl equivalent (`-c/-b` cookie jar):
  • Network accessline 79
    [Credential-related source omitted]
  • Network accessline 80
    curl -s -b jar.txt -X POST -H 'content-type: application/json' \
  • Network accessline 81
    -d '{"type":"client-request","rpcId":"smoke","method":"status","payload":null}' \   http://127.0.0.1:3190/tariff/status        # expect 200 curl -s -o /dev/null -w '%{http_code}\n' -X POST \
  • Network accessline 82
    http://127.0.0.1:3190/tariff/status        # expect 200 curl -s -o /dev/null -w '%{http_code}\n' -X POST \   http://127.0.0.1:3190/tariff/status        # expect 401
  • Network accessline 83
    curl -s -o /dev/null -w '%{http_code}\n' -X POST \
  • Network accessline 84
    http://127.0.0.1:3190/tariff/status        # expect 401
  • Network accessline 122
    **Symptom**: installing by the README's pinned tag fails with `Could not resolve vN.N.N to a commit of https://github.com/<org>/<repo>.git`.
  • Network accessline 123
    `Could not resolve vN.N.N to a commit of https://github.com/<org>/<repo>.git`.
  • Network accessline 132
    push, so every release tag is synced to all mirrors; 2. Consumers can confirm a tag exists first with    `git ls-remote --tags https://github.com/<org>/<repo>`.
  • Network accessline 134
    `git ls-remote --tags https://github.com/<org>/<repo>`.

.dsh/skills/plugin-release/references/publish-playbook.md

  • Network accessline 13
    git clone https://github.com/deepseek-ai/deepseek-harness.git /tmp/dsh-build
  • Network accessline 43
    - Use this compromise only for APIs with **signature drift where the runtime ignores the extra argument**; APIs with semantic changes must be migrated via the version cards of   [plugin-upgrade](https://github.com/oh-my-dsh/dsh-plugin-upgra
  • Network accessline 44
    [plugin-upgrade](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-upgrade/SKILL.md), never silently compromised;
  • Network accessline 89
    - The host acceptance matrix matches the release channel: the prerelease channel pins alpha-series tags and the stable channel pins rc-series tags — **never follow master/main to masquerade as acceptance**; - Pre-publish smoke for Web Clien
  • Network accessline 90
    - Pre-publish smoke for Web Client plugins must cover: the bundle entry announced in the host boot manifest (`window.__DSH_BOOT__`) is reachable, the bundle registers successfully, the DOM mount completes, and there are no page errors; `--d
  • Network accessline 91
    - Auditable reference implementations: [dsh-genui#86](https://github.com/omdsh-dev/dsh-genui/pull/86),
  • Network accessline 92
    [dsh-annotation#40](https://github.com/omdsh-dev/dsh-annotation/pull/40) (both implement

.dsh/skills/plugin-release/scripts/verify-release.mjs

  • Executable scriptline 1
    #!/usr/bin/env node

.dsh/skills/plugin-release/scripts/verify-release.test.mjs

  • Executable scriptline 1
    Executable file

.dsh/skills/plugin-test/SKILL.md

  • Access to secretsline 33
    [Credential-related source omitted]

.dsh/skills/plugin-test/references/version-migration-testing.md

  • Network accessline 52
    Full case write-up with the forensic chain: [dsh-assembler migration ledger, "empty-table" section](https://github.com/TT-Wang/dsh-assembler/blob/main/docs/research/dsh-alpha2-migration.md).

.dsh/skills/plugin-test/scripts/container-runner.mjs

  • Executable scriptline 1
    #!/usr/bin/env node

.dsh/skills/plugin-test/scripts/docker-release-smoke.mjs

  • Executable scriptline 1
    #!/usr/bin/env node

.dsh/skills/plugin-test/scripts/docker-release-smoke.test.mjs

  • Executable scriptline 1
    Executable file
  • Access to secretsline 46
    [Credential-related source omitted]

.dsh/skills/plugin-upgrade/SKILL.md

  • Network accessline 139
    Normative background: [dsh-community-standard](https://github.com/oh-my-dsh/dsh-community-standard)
  • Network accessline 140
    owns manifests, contract coordinates, and negotiation conventions; this skill handles practical upgrades of existing plugins, reusing that classification without redefining it. The official call for contributions is [deepseek-harness discus

.dsh/skills/plugin-upgrade/SKILL.zh-CN.md

  • Network accessline 158
    规范背景:[dsh-community-standard](https://github.com/oh-my-dsh/dsh-community-standard)
  • Network accessline 160
    规范语义。官方征集出处见 [deepseek-harness discussion #5120](https://github.com/deepseek-ai/deepseek-harness/discussions/5120)。

.dsh/skills/plugin-upgrade/examples/02-host-side-plugin.en.md

  • Network accessline 45
    This zero-dependency fixture only prevents the Host/Client planes from being written backwards again; it cannot replace a build from the pinned tag or a real DSH profile. For production-grade validation and positive controls, see [`benchmar
  • Network accessline 47
    [`benchmark/validation-report-2026-08-30.md`](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/benchmark/results/validation-report-2026-08-30.md).
  • Network accessline 51
    - [DSH-0.1.2-A1-01](../references/v0.1.2-alpha.1.md) - [Full container-chain validation](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/benchmark/results/validation-report-2026-08-30.md)
  • Network accessline 52
    - [Full container-chain validation](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/benchmark/results/validation-report-2026-08-30.md)

.dsh/skills/plugin-upgrade/examples/02-host-side-plugin.md

  • Network accessline 45
    该依赖零 fixture 只防止 Host/Client 平面再次写反;它不能替代固定 tag 的 build 或真实 DSH profile。产品级实测与正控见 [`benchmark/validation-report-2026-08-30.md`](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/benchmark/results/validation-report-2026-08-30.m
  • Network accessline 47
    [`benchmark/validation-report-2026-08-30.md`](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/benchmark/results/validation-report-2026-08-30.md)。
  • Network accessline 51
    - [DSH-0.1.2-A1-01](../references/v0.1.2-alpha.1.md) - [容器全链验证](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/benchmark/results/validation-report-2026-08-30.md)
  • Network accessline 52
    - [容器全链验证](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/benchmark/results/validation-report-2026-08-30.md)

.dsh/skills/plugin-upgrade/examples/04-dual-cohort-plugin.en.md

  • Network accessline 11
    - Plugin: `dsh-mnemon`, version `0.3.4` while the compatibility change was developed, then released   in [`v0.3.5`](https://github.com/omdsh-dev/dsh-mnemon/releases/tag/v0.3.5).
  • Network accessline 12
    in [`v0.3.5`](https://github.com/omdsh-dev/dsh-mnemon/releases/tag/v0.3.5).
  • Network accessline 13
    - Published baseline: DSH [`dsh-v0.1.1-rc.2`](https://github.com/deepseek-ai/deepseek-harness/tree/dsh-v0.1.1-rc.2)
  • Network accessline 14
    (commit `b150a551b8d465e31e418e1b2eaf5e79bbb7d28e`), supplied by the npm registry and lockfile. - Source-preview target: DSH [`dsh-v0.1.2-alpha.1`](https://github.com/deepseek-ai/deepseek-harness/tree/dsh-v0.1.2-alpha.1)   (commit `cd5ef814
  • Network accessline 15
    - Source-preview target: DSH [`dsh-v0.1.2-alpha.1`](https://github.com/deepseek-ai/deepseek-harness/tree/dsh-v0.1.2-alpha.1)
  • Network accessline 17
    official tag was built for verification. - Plugin evidence: initial adaptation commit   [`30d7476`](https://github.com/omdsh-dev/dsh-mnemon/commit/30d7476ba58f86e417959aae64d4dd3fb80f0434),
  • Network accessline 18
    - Plugin evidence: initial adaptation commit   [`30d7476`](https://github.com/omdsh-dev/dsh-mnemon/commit/30d7476ba58f86e417959aae64d4dd3fb80f0434),   rc.2 compatibility correction
  • Network accessline 19
    [`30d7476`](https://github.com/omdsh-dev/dsh-mnemon/commit/30d7476ba58f86e417959aae64d4dd3fb80f0434),
  • Network accessline 20
    rc.2 compatibility correction   [`b50a504`](https://github.com/omdsh-dev/dsh-mnemon/commit/b50a504dbe738aa359cd6ef8e4fd790ed9c19a10),   and merged [PR #105](https://github.com/omdsh-dev/dsh-mnemon/pull/105).
  • Network accessline 21
    [`b50a504`](https://github.com/omdsh-dev/dsh-mnemon/commit/b50a504dbe738aa359cd6ef8e4fd790ed9c19a10),
  • Network accessline 22
    and merged [PR #105](https://github.com/omdsh-dev/dsh-mnemon/pull/105).
  • Network accessline 65
    Pinned primary sources: rc.2 [`HostConnectionRpc.handle`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2/packages/client/connection/src/rpc.ts)
  • Network accessline 66
    [`HostConnectionRpc.handle`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2/packages/client/connection/src/rpc.ts)
  • Network accessline 67
    requires options and [`HostConnectionService.register`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2/packages/client/connection/src/rpc-host.ts) reads `options.authority`; alpha.1
  • Network accessline 68
    [`HostConnectionService.register`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2/packages/client/connection/src/rpc-host.ts)
  • Network accessline 69
    reads `options.authority`; alpha.1 [`HostConnectionRpc.handle`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/client/connection/src/rpc.ts) and
  • Network accessline 70
    [`HostConnectionRpc.handle`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/client/connection/src/rpc.ts)
  • Network accessline 71
    and [`HostConnectionService`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/client/connection/src/rpc-host.ts) consume only the first two arguments.
  • Network accessline 72
    [`HostConnectionService`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/client/connection/src/rpc-host.ts)
  • Network accessline 87
    The pinned implementation is in [`src/contracts.ts`](https://github.com/omdsh-dev/dsh-mnemon/blob/b50a504dbe738aa359cd6ef8e4fd790ed9c19a10/src/contracts.ts),
  • Network accessline 88
    [`src/contracts.ts`](https://github.com/omdsh-dev/dsh-mnemon/blob/b50a504dbe738aa359cd6ef8e4fd790ed9c19a10/src/contracts.ts),
  • Network accessline 89
    [`src/rpc.ts`](https://github.com/omdsh-dev/dsh-mnemon/blob/b50a504dbe738aa359cd6ef8e4fd790ed9c19a10/src/rpc.ts), and
  • Network accessline 90
    [`src/settings.ts`](https://github.com/omdsh-dev/dsh-mnemon/blob/b50a504dbe738aa359cd6ef8e4fd790ed9c19a10/src/settings.ts).
  • Network accessline 92
    [`tests/dsh-connection-compat.spec.ts`](https://github.com/omdsh-dev/dsh-mnemon/blob/b50a504dbe738aa359cd6ef8e4fd790ed9c19a10/tests/dsh-connection-compat.spec.ts).
  • Network accessline 109
    See the pinned [`scripts/link-dsh-source.mjs`](https://github.com/omdsh-dev/dsh-mnemon/blob/b50a504dbe738aa359cd6ef8e4fd790ed9c19a10/scripts/link-dsh-source.mjs).
  • Network accessline 110
    [`scripts/link-dsh-source.mjs`](https://github.com/omdsh-dev/dsh-mnemon/blob/b50a504dbe738aa359cd6ef8e4fd790ed9c19a10/scripts/link-dsh-source.mjs).
  • Network accessline 157
    The incident is distilled into executable task [H11-dual-cohort-rpc](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/benchmark/tasks/H11-dual-cohort-rpc/README.md). Its grader invokes
  • Network accessline 158
    [H11-dual-cohort-rpc](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/benchmark/tasks/H11-dual-cohort-rpc/README.md). Its grader invokes

.dsh/skills/plugin-upgrade/examples/04-dual-cohort-plugin.md

  • Network accessline 10
    - 插件:`dsh-mnemon`,迁移代码完成时为 `0.3.4`,随后随   [`v0.3.5`](https://github.com/omdsh-dev/dsh-mnemon/releases/tag/v0.3.5) 发布。
  • Network accessline 11
    [`v0.3.5`](https://github.com/omdsh-dev/dsh-mnemon/releases/tag/v0.3.5) 发布。
  • Network accessline 12
    - 已发布基线:DSH [`dsh-v0.1.1-rc.2`](https://github.com/deepseek-ai/deepseek-harness/tree/dsh-v0.1.1-rc.2)
  • Network accessline 13
    (commit `b150a551b8d465e31e418e1b2eaf5e79bbb7d28e`),由 npm registry 与 lockfile 提供。 - 源码预览目标:DSH [`dsh-v0.1.2-alpha.1`](https://github.com/deepseek-ai/deepseek-harness/tree/dsh-v0.1.2-alpha.1)   (commit `cd5ef8148158c3a752a658978873241fdf8e2b
  • Network accessline 14
    - 源码预览目标:DSH [`dsh-v0.1.2-alpha.1`](https://github.com/deepseek-ai/deepseek-harness/tree/dsh-v0.1.2-alpha.1)
  • Network accessline 15
    (commit `cd5ef8148158c3a752a658978873241fdf8e2bbc`);alpha.1 未发布到 npm,验证时从官方 tag 构建。 - 插件证据:初次适配 commit   [`30d7476`](https://github.com/omdsh-dev/dsh-mnemon/commit/30d7476ba58f86e417959aae64d4dd3fb80f0434),
  • Network accessline 16
    - 插件证据:初次适配 commit   [`30d7476`](https://github.com/omdsh-dev/dsh-mnemon/commit/30d7476ba58f86e417959aae64d4dd3fb80f0434),   rc.2 兼容修正 commit
  • Network accessline 17
    [`30d7476`](https://github.com/omdsh-dev/dsh-mnemon/commit/30d7476ba58f86e417959aae64d4dd3fb80f0434),
  • Network accessline 18
    rc.2 兼容修正 commit   [`b50a504`](https://github.com/omdsh-dev/dsh-mnemon/commit/b50a504dbe738aa359cd6ef8e4fd790ed9c19a10),   合并记录 [PR #105](https://github.com/omdsh-dev/dsh-mnemon/pull/105)。
  • Network accessline 19
    [`b50a504`](https://github.com/omdsh-dev/dsh-mnemon/commit/b50a504dbe738aa359cd6ef8e4fd790ed9c19a10),
  • Network accessline 20
    合并记录 [PR #105](https://github.com/omdsh-dev/dsh-mnemon/pull/105)。
  • Network accessline 59
    固定一手来源:rc.2 的 [`HostConnectionRpc.handle`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2/packages/client/connection/src/rpc.ts)
  • Network accessline 60
    [`HostConnectionRpc.handle`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2/packages/client/connection/src/rpc.ts)
  • Network accessline 61
    要求 options,且 [`HostConnectionService.register`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2/packages/client/connection/src/rpc-host.ts) 读取 `options.authority`;alpha.1 的
  • Network accessline 62
    [`HostConnectionService.register`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2/packages/client/connection/src/rpc-host.ts)
  • Network accessline 63
    读取 `options.authority`;alpha.1 的 [`HostConnectionRpc.handle`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/client/connection/src/rpc.ts) 和
  • Network accessline 64
    [`HostConnectionRpc.handle`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/client/connection/src/rpc.ts)
  • Network accessline 65
    和 [`HostConnectionService`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/client/connection/src/rpc-host.ts) 只消费前两个参数。
  • Network accessline 66
    [`HostConnectionService`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/client/connection/src/rpc-host.ts)
  • Network accessline 80
    固定实现见 [`src/contracts.ts`](https://github.com/omdsh-dev/dsh-mnemon/blob/b50a504dbe738aa359cd6ef8e4fd790ed9c19a10/src/contracts.ts)、
  • Network accessline 81
    [`src/contracts.ts`](https://github.com/omdsh-dev/dsh-mnemon/blob/b50a504dbe738aa359cd6ef8e4fd790ed9c19a10/src/contracts.ts)、
  • Network accessline 82
    [`src/rpc.ts`](https://github.com/omdsh-dev/dsh-mnemon/blob/b50a504dbe738aa359cd6ef8e4fd790ed9c19a10/src/rpc.ts) 和
  • Network accessline 83
    [`src/settings.ts`](https://github.com/omdsh-dev/dsh-mnemon/blob/b50a504dbe738aa359cd6ef8e4fd790ed9c19a10/src/settings.ts)。
  • Network accessline 85
    [`tests/dsh-connection-compat.spec.ts`](https://github.com/omdsh-dev/dsh-mnemon/blob/b50a504dbe738aa359cd6ef8e4fd790ed9c19a10/tests/dsh-connection-compat.spec.ts)。
  • Network accessline 100
    固定实现见 [`scripts/link-dsh-source.mjs`](https://github.com/omdsh-dev/dsh-mnemon/blob/b50a504dbe738aa359cd6ef8e4fd790ed9c19a10/scripts/link-dsh-source.mjs)。
  • Network accessline 101
    [`scripts/link-dsh-source.mjs`](https://github.com/omdsh-dev/dsh-mnemon/blob/b50a504dbe738aa359cd6ef8e4fd790ed9c19a10/scripts/link-dsh-source.mjs)。
  • Network accessline 145
    该事故已被提炼为可执行的 [H11-dual-cohort-rpc](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/benchmark/tasks/H11-dual-cohort-rpc/README.md):

.dsh/skills/plugin-upgrade/examples/06-real-world-batch-migration.en.md

  • Network accessline 13
    **Sources**: Community migration practice (migration completed 2026-08-28, verified by real boot + unit-test regression) — [deepseek-harness discussion #5120](https://github.com/deepseek-ai/deepseek-harness/discussions/5120#discussioncommen
  • Network accessline 218
    - https://github.com/lhh010/dsh-ui-whale (migrated at v0.3.5)
  • Network accessline 219
    - https://github.com/lhh010/dsh-ui-progress (v0.9.4)
  • Network accessline 220
    - https://github.com/lhh010/dsh-input-history (v0.1.4)
  • Network accessline 221
    - https://github.com/lhh010/dsh-minigames (v0.3.7)
  • Network accessline 222
    - https://github.com/lhh010/dsh-paste-input (v0.1.6)
  • Network accessline 223
    - https://github.com/lhh010/dsh-file-trace (written on 0.1.2-alpha.1)

.dsh/skills/plugin-upgrade/examples/06-real-world-batch-migration.md

  • Network accessline 13
    **素材来源**: 社区迁移实践(2026-08-28 完成迁移,实机 boot 验证 + 单测回归)——[deepseek-harness discussion #5120](https://github.com/deepseek-ai/deepseek-harness/discussions/5120#discussioncomment-18208001),六个插件仓库见文末。
  • Network accessline 218
    - https://github.com/lhh010/dsh-ui-whale (v0.3.5 完成迁移)
  • Network accessline 219
    - https://github.com/lhh010/dsh-ui-progress (v0.9.4)
  • Network accessline 220
    - https://github.com/lhh010/dsh-input-history (v0.1.4)
  • Network accessline 221
    - https://github.com/lhh010/dsh-minigames (v0.3.7)
  • Network accessline 222
    - https://github.com/lhh010/dsh-paste-input (v0.1.6)
  • Network accessline 223
    - https://github.com/lhh010/dsh-file-trace (基于 0.1.2-alpha.1 新写)

.dsh/skills/plugin-upgrade/examples/07-multi-repo-batch-migration.en.md

  • Network accessline 14
    |---|---|---| | 1 Inventory | Record HEAD/remote/baseline per repo; fetch + `--ff-only` audit | Common error 1 below | | 2 Baseline | devDependencies on the npm release line, wide peer ranges, dual-compatible code | [publish-playbook](https
  • Network accessline 15
    | 1 Inventory | Record HEAD/remote/baseline per repo; fetch + `--ff-only` audit | Common error 1 below | | 2 Baseline | devDependencies on the npm release line, wide peer ranges, dual-compatible code | [publish-playbook](https://github.com/
  • Network accessline 16
    | 2 Baseline | devDependencies on the npm release line, wide peer ranges, dual-compatible code | [publish-playbook](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-release/references/publish-playbook.md) dual-c
  • Network accessline 17
    | 3 Batch edits | Minimal diff per repo: version bump / doc baseline / touchpoint code | Corridor cards + batch check loop | | 4 Commit and push | Uniform message template; push per repo; on failure rebase then `--force-with-lease` | Common
  • Network accessline 18
    | 4 Commit and push | Uniform message template; push per repo; on failure rebase then `--force-with-lease` | Common errors 2/3 | | 5 Profile wrap-up | `pnpm update` re-resolves the GitHub install track; keep the three rename sites in sync |
  • Network accessline 19
    | 5 Profile wrap-up | `pnpm update` re-resolves the GitHub install track; keep the three rename sites in sync | [profile-dependency-management](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-release/references
  • Network accessline 38
    The alpha line is not on npm, so public repositories keep their devDependencies on the npm release line (`^0.1.1-rc.2` at the time) and use wide peer ranges (`<0.2.0`) to cover the unpublished cohort; code against signature-drifted APIs use
  • Network accessline 61
    Per [profile-dependency-management](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-release/references/profile-dependency-management.md): run `pnpm update` to re-resolve dependencies on the GitHub install track
  • Network accessline 72
    - Technical touchpoints and cards: see [v0.1.1-rc.2](../references/v0.1.1-rc.2.md), [alpha.1](../references/v0.1.2-alpha.1.md), [alpha.2](../references/v0.1.2-alpha.2.md), and [rollup](../references/rollup-0.1.2.md); - Toolchain pitfalls: [
  • Network accessline 74
    - Release/distribution surface: [publish-playbook](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-release/references/publish-playbook.md) and [profile-dependency-management](https://github.com/oh-my-dsh/dsh-pl

.dsh/skills/plugin-upgrade/examples/07-multi-repo-batch-migration.md

  • Network accessline 18
    |---|---|---| | 1 盘点 | 逐仓记录 HEAD/remote/基线;fetch + `--ff-only` 审计 | 下文常见错误 1 | | 2 基线 | devDependencies 用 npm 发布线、peer 宽范围、代码双兼容 | [publish-playbook](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-release/refe
  • Network accessline 19
    | 1 盘点 | 逐仓记录 HEAD/remote/基线;fetch + `--ff-only` 审计 | 下文常见错误 1 | | 2 基线 | devDependencies 用 npm 发布线、peer 宽范围、代码双兼容 | [publish-playbook](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-release/references/publish
  • Network accessline 20
    | 2 基线 | devDependencies 用 npm 发布线、peer 宽范围、代码双兼容 | [publish-playbook](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-release/references/publish-playbook.md) 双兼容节 |
  • Network accessline 21
    | 3 批量修改 | 逐仓最小 diff:版本 bump / 文档基线 / 触点代码 | 走廊卡片 + 批量 check 循环 | | 4 提交推送 | 统一消息模板;逐仓 push;失败 rebase 后 `--force-with-lease` | 常见错误 2/3 | | 5 profile 收尾 | `pnpm update` 重解析 github 轨、改名三处同步 | [profile-dependency-management](https://github.co
  • Network accessline 22
    | 4 提交推送 | 统一消息模板;逐仓 push;失败 rebase 后 `--force-with-lease` | 常见错误 2/3 | | 5 profile 收尾 | `pnpm update` 重解析 github 轨、改名三处同步 | [profile-dependency-management](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-relea
  • Network accessline 23
    | 5 profile 收尾 | `pnpm update` 重解析 github 轨、改名三处同步 | [profile-dependency-management](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-release/references/profile-dependency-management.md) |
  • Network accessline 45
    alpha 系不在 npm 上,公开仓库的 devDependencies 保持 npm 发布线(当时为 `^0.1.1-rc.2`),peer 用 宽范围(`<0.2.0`)覆盖未发布 cohort;代码对签名漂移的 API 用双兼容写法(例见 [publish-playbook](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-release/references/
  • Network accessline 46
    宽范围(`<0.2.0`)覆盖未发布 cohort;代码对签名漂移的 API 用双兼容写法(例见 [publish-playbook](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-release/references/publish-playbook.md) 的 `rpc.handle` 案例),保证 任意机器 `npm install` 后 typecheck 可
  • Network accessline 47
    [publish-playbook](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-release/references/publish-playbook.md) 的 `rpc.handle` 案例),保证
  • Network accessline 77
    按 [profile-dependency-management](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-release/references/profile-dependency-management.md):
  • Network accessline 91
    [alpha.2](../references/v0.1.2-alpha.2.md) 与 [rollup](../references/rollup-0.1.2.md); - 工具链坑:[migration-hygiene](../references/migration-hygiene.md)(本文不重复); - 发布/分发面:[publish-playbook](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/b
  • Network accessline 92
    - 工具链坑:[migration-hygiene](../references/migration-hygiene.md)(本文不重复); - 发布/分发面:[publish-playbook](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-release/references/publish-playbook.md) 与   [profile-dependency
  • Network accessline 93
    - 发布/分发面:[publish-playbook](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-release/references/publish-playbook.md) 与
  • Network accessline 94
    [profile-dependency-management](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-release/references/profile-dependency-management.md)。

.dsh/skills/plugin-upgrade/examples/face-contracts/check.mjs

  • Executable scriptline 1
    Executable file

.dsh/skills/plugin-upgrade/examples/face-contracts/client-remote.mjs

  • Executable scriptline 1
    Executable file

.dsh/skills/plugin-upgrade/examples/face-contracts/host-domain.mjs

  • Executable scriptline 1
    Executable file

.dsh/skills/plugin-upgrade/examples/legacy-plugin/package.json

  • Executable scriptline 1
    Executable file

.dsh/skills/plugin-upgrade/examples/legacy-plugin/scripts/apply-patch.mjs

  • Executable scriptline 1
    Executable file

.dsh/skills/plugin-upgrade/examples/legacy-plugin/src/index.ts

  • Executable scriptline 1
    Executable file
  • Network accessline 49
    response.end('legacy')     })     server.listen(43121, '127.0.0.1') // http://localhost:43121/api/legacy
  • Network accessline 50
    })     server.listen(43121, '127.0.0.1') // http://localhost:43121/api/legacy     return server
  • Network accessline 51
    server.listen(43121, '127.0.0.1') // http://localhost:43121/api/legacy

.dsh/skills/plugin-upgrade/references/api-migration-0.1.2-alpha.2.md

  • Network accessline 182
    - **Source**:   [alpha.2 SessionController actual Remote methods](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/api/session-controller/src/index.ts) ·
  • Network accessline 183
    [alpha.2 SessionController actual Remote methods](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/api/session-controller/src/index.ts) ·
  • Network accessline 184
    [alpha.2 API Remotes Client assembly](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/api/remotes/src/client/index.ts) ·
  • Network accessline 185
    [alpha.2 Workspace Remote owner](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/api/workspace-controller/src/index.ts) ·
  • Network accessline 186
    [alpha.2 actual rename consumer](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/api/session-controller/src/client/sessions/session.ts) ·
  • Network accessline 280
    - **Source**:   [alpha.1 existing `RemoteResult<T>` definition](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/typert/protocol/src/types.ts) ·
  • Network accessline 281
    [alpha.1 existing `RemoteResult<T>` definition](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/typert/protocol/src/types.ts) ·
  • Network accessline 282
    [alpha.2 RemoteError vocabulary decision](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/.agents/notes/implemented/architecture/2026-08-28-ctx-remote-failure-vocabulary.md) ·
  • Network accessline 283
    [alpha.2 `RemoteError` implementation](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/typert/protocol/src/remote-error.ts)
  • Network accessline 358
    - **Source**:   [alpha.1 Settings entry point](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/settings/settings/src/index.ts) ·
  • Network accessline 359
    [alpha.1 Settings entry point](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/settings/settings/src/index.ts) ·
  • Network accessline 360
    [alpha.2 Settings entry point](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/settings/settings/src/index.ts) ·
  • Network accessline 361
    [alpha.2 official Settings README](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/settings/settings/README.md)
  • Network accessline 407
    - **Source**:   [alpha.2 Gateway Client `$host` implementation](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/api/gateway/src/client/index.ts) ·
  • Network accessline 408
    [alpha.2 Gateway Client `$host` implementation](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/api/gateway/src/client/index.ts) ·
  • Network accessline 409
    [Fixed Host facts in the Remote failure vocabulary note](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/.agents/notes/implemented/architecture/2026-08-28-ctx-remote-failure-vocabulary.md)
  • Network accessline 445
    - **Source**:   [alpha.2 `SessionEvent` type](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/core/session/src/types.ts) ·
  • Network accessline 446
    [alpha.2 `SessionEvent` type](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/core/session/src/types.ts) ·
  • Network accessline 447
    [alpha.2 `Session.append()` implementation](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/core/session/src/index.ts) ·
  • Network accessline 448
    [cold-load unknown event guard](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/session/session-persistence/src/coordinator.ts) ·
  • Network accessline 449
    [implementation decision restoring ignorable](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/.agents/notes/implemented/architecture/2026-08-30-retain-ignorable-external-session-events.md)
  • Network accessline 499
    - **Source**:   [alpha.2 Headless README](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/bundle/headless/README.md) ·
  • Network accessline 500
    [alpha.2 Headless README](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/bundle/headless/README.md) ·
  • Network accessline 501
    [rc.2 Headless README](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2/packages/bundle/headless/README.md)
  • Network accessline 532
    - **Source**:   [alpha.2 ui-conversation package manifest](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/client/ui-conversation/package.json)
  • Network accessline 533
    [alpha.2 ui-conversation package manifest](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/client/ui-conversation/package.json)
  • Network accessline 565
    - **Source**:   [cordis.patch.yml placement in the alpha.2 Headless bundle](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/bundle/headless/README.md) ·
  • Network accessline 566
    [cordis.patch.yml placement in the alpha.2 Headless bundle](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/bundle/headless/README.md) ·
  • Network accessline 567
    [official plugin publishing and patch composition docs](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/docs/user/develop/basic/publish.md) ·
  • Network accessline 568
    [alpha.2 CLI Profile/Bundle layer reference](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/apps/cli/reference/README.md)
  • Network accessline 587
    - **Source**:   [alpha.2 PluginInventorySnapshot type](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/host/plugin-inventory/src/types.ts)
  • Network accessline 588
    [alpha.2 PluginInventorySnapshot type](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/host/plugin-inventory/src/types.ts)
  • Network accessline 645
    **Source**: [rc.2 runtime aggregation exports](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2/packages/client/runtime/src/client/index.ts) · [alpha.2 ChatSnapshot / ChatNodeStore](https://github.com/deepseek-ai/deepsee
  • Network accessline 665
    - **Verification**: the target configuration accepts the new values; old Session logs still load; every remaining legacy token is explainable as an explicit keep, with no blind global replace. - **Source**:   [alpha.1 PTC rename ledger](htt
  • Network accessline 667
    [alpha.1 PTC rename ledger](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/.agents/notes/implemented/architecture/2026-08-25-rename-code-mode-to-ptc.md)

.dsh/skills/plugin-upgrade/references/host-plane-probes.md

  • Network accessline 3
    Builds on [rollup R-02](rollup-0.1.2.md). Host-plane plugins (the TUI kind) do not change artifacts; instead they push the cohort difference into `!!js` probes at the composition layer. Three forms, taken from the real patch in [dsh-TUI #62

.dsh/skills/plugin-upgrade/references/pre-flight-patterns.json

  • Dangerous shell operationline 66
    "node:child_process|spawn\\(|exec(File)?Sync\\(|execa|Bun\\.spawn",

.dsh/skills/plugin-upgrade/references/pre-flight.md

  • Network accessline 7
    The first six classes follow the classification of the [dsh-community-standard migration guide](https://github.com/oh-my-dsh/dsh-community-standard/blob/main/guides/migration.md);
  • Dangerous shell operationline 176
    rg -n "node:child_process|spawn\(|exec(File)?Sync\(|execa|Bun\.spawn" .

.dsh/skills/plugin-upgrade/references/precision-checklist.md

  • Network accessline 108
    Sources: [alpha.2 renderer declarations and apply](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/client/ui-renderer/src/client/index.ts),
  • Network accessline 109
    [alpha.2 module graph contract](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/client/modules/src/client/manifest.ts),
  • Network accessline 110
    [TypeScript type-only import semantics](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html#type-only-imports-and-export).
  • Network accessline 181
    Sources: [alpha.2 Connection route using the gate](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/client/connection/src/index.ts), [alpha.2 requestRejection, Fetch and RPC registries](https://github.com/dee
  • Network accessline 182
    [alpha.2 requestRejection, Fetch and RPC registries](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/client/connection/src/rpc-host.ts).

.dsh/skills/plugin-upgrade/references/rollup-0.1.2.md

  • Network accessline 3
    > Status: based on `dsh-v0.1.2-rc.1` (first release candidate of the 0.1.2 series). The 0.1.2 final release is not out yet — measured on npm dist-tags on 2026-09-04, `next` = `0.1.2-rc.1`, `alpha` = `0.1.2-alpha.5`, and the umbrella `@deeps
  • Network accessline 85
    Source: [DSH-0.1.2-A2-02](v0.1.2-alpha.2.md) and [ctx-remote-failure-vocabulary](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/.agents/notes/implemented/architecture/2026-08-28-ctx-remote-failure-vocabulary.md).
  • Network accessline 86
    [ctx-remote-failure-vocabulary](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/.agents/notes/implemented/architecture/2026-08-28-ctx-remote-failure-vocabulary.md).
  • Network accessline 90
    The following problems span single versions or fall outside the cards; they come from community practice ([discussion #5120](https://github.com/deepseek-ai/deepseek-harness/discussions/5120), the dsh-web migration of about 20 packages) and 
  • Network accessline 99
    git clone https://github.com/deepseek-ai/deepseek-harness.git /tmp/dsh-build
  • Network accessline 107
    - **Note (pending confirmation)**: the pnpm version pin below comes from a single field report and has not been reproduced in other repositories — the report says `11.9.0` bypasses overrides for file: tarball transitive dependencies when th
  • Network accessline 108
    - **npm reality** (2026-08-31): on npm, the `@deepseek-ai/dsh-*` packages only have `0.1.1-rc.1`, `0.1.1-rc.2`, and `0.1.2-alpha.2`; alpha.1 was never published. rc.2 → alpha.1 can only be built from a GitHub tag; for the alpha.2 target, qu
  • Network accessline 109
    - **Verify-only, no install** ([dsh-TUI #622](https://github.com/ccch1mneyyy/dsh-TUI/pull/622)): keep the install baseline at rc.2; CI checks out the upstream tag and runs `tsc --noEmit` with the `paths` mapping from its `tsconfig.base.json
  • Network accessline 111
    - **Source**: item 1 of [#5120](https://github.com/deepseek-ai/deepseek-harness/discussions/5120). Not covered by the official release notes; community practice.
  • Network accessline 139
    - **Host-plane (Cordis composition) equivalent**: keep the artifact unchanged and put the cohort differences into `!!js` probes in `cordis.patch.yml` — the three forms (subpath resolve, reading preset files, probing package directories) and
  • Network accessline 140
    - **Rejected alternatives**: per-consumer try/catch duplicated through the source; emitting different artifacts per host cohort (reintroduces stateful builds); hard-waiting on inject wait (old hosts pending forever). - **Verification**: lin
  • Network accessline 142
    - **Source**: items 3 and 4 of [#5120](https://github.com/deepseek-ai/deepseek-harness/discussions/5120).
  • Network accessline 148
    - **Migration recipe**: keep `pnpm patch` (`patchedDependencies`) in the repository and rewrite that one require as the same dual-cohort probe. Don't forget the profile's parent-layer link — the link script may point the link back at the un
  • Network accessline 150
    - **Source**: item 7 of [#5120](https://github.com/deepseek-ai/deepseek-harness/discussions/5120).
  • Network accessline 161
    - CI mount lanes pin a dsh CLI version matching the target cohort, and write `minimumReleaseAgeExclude` when bootstrapping scratch profiles (see R-08), so CI on the first day after an alpha release does not fail by refusing to install fresh
  • Network accessline 163
    - **Source**: items 8 and 9 of [#5120](https://github.com/deepseek-ai/deepseek-harness/discussions/5120).
  • Network accessline 170
    - **List of removed packages** (compared by the `name` in each tag's `packages/*/*/package.json`, 2026-08-31): rc.2 → alpha.1 removes 5 — `@deepseek-ai/dsh-acp-demo`, `dsh-acp-snapshot`, `dsh-client-runtime`, `dsh-host-apiproxy`, `dsh-sdk-j
  • Network accessline 172
    - **Source**: item 10 of [#5120](https://github.com/deepseek-ai/deepseek-harness/discussions/5120).
  • Network accessline 198
    - **Source**: the pre-migration baseline stage of the dsh-migrate-bot unattended pipeline (a local extension on top of mechanical pin →   A/B review → fix loop → patch report, dedicated to failure attribution; that stage had not been pushed
  • Network accessline 199
    A/B review → fix loop → patch report, dedicated to failure attribution; that stage had not been pushed publicly at the time of writing — re-check this   description once it is public; see "Pending confirmation" at the end of this file). [#5
  • Network accessline 200
    description once it is public; see "Pending confirmation" at the end of this file). [#5120](https://github.com/deepseek-ai/deepseek-harness/discussions/5120)
  • Network accessline 216
    (entry permanently `pending` on old cohorts, see R-02). - **Verification**: no `service-unavailable` loop in the cold-boot logs; the injected retry policy takes effect in tests. - **Source**: [#5120](https://github.com/deepseek-ai/deepseek-
  • Network accessline 217
    - **Verification**: no `service-unavailable` loop in the cold-boot logs; the injected retry policy takes effect in tests. - **Source**: [#5120](https://github.com/deepseek-ai/deepseek-harness/discussions/5120)   item 6 (dsh-web migration re
  • Network accessline 218
    - **Source**: [#5120](https://github.com/deepseek-ai/deepseek-harness/discussions/5120)
  • Network accessline 229
    3. when the peer floor is written as an old range like `^0.1.0-rc.8`, npm semver's prerelease matching rules (the comparator must share the same tuple and carry a prerelease) judge it **not to match** `0.1.2-alpha.2` — install-time peer war
  • Network accessline 230
    - **Migration recipe**:   - Mirror lag: both CLI installs and pnpm inside profiles explicitly use the official registry via `export npm_config_registry=https://registry.npmjs.org`;   - Supply-chain rules: prefer **per-scope exemption** over
  • Network accessline 231
    - Mirror lag: both CLI installs and pnpm inside profiles explicitly use the official registry via `export npm_config_registry=https://registry.npmjs.org`;
  • Network accessline 233
    - Peer floor: when bumping cohorts, explicitly rewrite it to `^0.1.2-alpha.2` (after the rewrite, the install-time `Issues with peer dependencies` warning disappears and can serve as the landed signal). - **Verification**: `pnpm list --dept
  • Network accessline 235
    - **Source**: measured (2026-08-30, dsh-better-sidebar [PR #472](https://github.com/omdsh-dev/DSH-better-sidebar/pull/472): mirror E404, CI dependency exemption working on the day of the alpha release, warnings gone after the peer-floor rew
  • Network accessline 258
    - When a test/controlled surface wants its own same-named preset, add `includeShippedRoot: false` to the agent-presets configuration; otherwise the same-named row in the custom root is shadowed by the shipped row. - **Verification**: a base
  • Network accessline 260
    - **Source**: [alpha.2 discovery.ts health check](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/preset/agent-presets/src/discovery.ts) · [the alpha.2 standard preset's tool-subagent row](https://github.com
  • Network accessline 284
    - **Verification**: typecheck all green without relying on `@ts-ignore`; locally merged declarations match the official structures field by field; the runtime event flow is the same as rc.2. - **Source**: comparison of each package's `0.1.2
  • Network accessline 285
    - **Source**: comparison of each package's `0.1.2-alpha.2` tarball exports + [alpha.2 todo tool types.ts](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/todo/tool-todo/src/types.ts) · [alpha.2 `dsh-util-val
  • Network accessline 318
    - **Source**:    The background of the community upgrade discussion in [DeepSeek Harness Discussion #5120](https://github.com/deepseek-ai/deepseek-harness/discussions/5120), plus observations from earlier plugin development and upgrades don
  • Network accessline 319
    The background of the community upgrade discussion in [DeepSeek Harness Discussion #5120](https://github.com/deepseek-ai/deepseek-harness/discussions/5120), plus observations from earlier plugin development and upgrades done inside DSH itse
  • Network accessline 329
    4. UI plugins that provide localized resources should register through the host's public language seat instead of a self-built i18n patch — see [DSH-0.1.2-A1-10](v0.1.2-alpha.1.md). - **Verification**: switch to a non-English language and h
  • Network accessline 331
    - **Source**: [client-locale-full-rollout note](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/.agents/notes/implemented/architecture/2026-07-30-client-locale-full-rollout.md) · [alpha.2 `HeaderAction.tsx` (`t('head
  • Network accessline 340
    2. **Static**: typecheck + build. Note that all-green static checks cannot prove the wire contract — parameter drift at the descriptor layer is silent at this layer ([DSH-0.1.2-A1-01](v0.1.2-alpha.1.md)). 3. **Card-level unit tests**: at le
  • Network accessline 341
    3. **Card-level unit tests**: at least one assertion per hit touchpoint. Remote call sites cover the known business codes on `ok: false`, the unknown-code fallback, and the gateway-layer catch branch; test doubles encode the same descriptor
  • Network accessline 342
    4. **Real cold boot**: one full conversation round (send message → tool call → reply). Observe the logs for no `missed the module table`, no `service-unavailable` loop, and no entry `pending`. Web Client plugins additionally follow [DSH-0.1

.dsh/skills/plugin-upgrade/references/troubleshooting.md

  • Network accessline 16
    | 客户端 UI 已出现新功能,但新增的宿主路由对新扩展名返回 404(同路由旧类型 200),且磁盘上的宿主半产物已包含新白名单 | 更新平面不对称:client bundle 每次刷新重新拉取(no-cache),而宿主半在 apply 时一次性注册路由(闭包持有旧白名单),运行中的进程要等**宿主重启**才换新。归因探针:旧类型 200 + 新类型 404 + 磁盘产物含新白名单 ⇒ 运行进程早于改动。「插件热更新」只覆盖 client 面 | benchmark 任务
  • Network accessline 17
    | 渲染基于会话 payload 的文件出现裂图,但源文件本身完好(XML/语法校验通过),重读后 payload 又是干净的 | 会话日志里的 read 结果文本可能被上游组装环节损坏(真实案例:源 232 行被 247 行尾部在公共前缀 "stro" 处错位拼接,中间 15 行丢失)。插件必须把会话 payload 当**不可信渲染输入**:先 DOMParser/语法校验再渲染;优先走宿主 asset 路由读磁盘原始字节;损坏要上报上游,而不是在插件里「修文件」 | b
  • Network accessline 18
    | 重启后宿主启动即崩:`duplicate loader entry id: <id>`(`dsh-app-boot` → `cordis-plugin-loader` → `EntryGroup.update`) | 在 profile 的 `cordis.patch.yml` 里手动 `insert` 了一个 bundle 层已提供的插件 id——Cordis 把重复 insert 视为致命错误(非静默覆盖)。0.1.5 系列新增的 `workspace-files` 
  • Network accessline 24
    - **Source**: real migration of dsh-input-history 0.1.1 → 0.2.0 (2026-08); rows cite their sources individually — the session-payload corruption row comes from [discussion #5120](https://github.com/deepseek-ai/deepseek-harness/discussions/5

.dsh/skills/plugin-upgrade/references/v0.1.1-rc.1.md

  • Network accessline 51
    - keep the runtime entry (`main`/`exports["."]`) and `dsh.client` declaration intact; update any manager UI/CLI that enumerated repository sources. - **Verification**: cold-boot a profile containing the converted package; the boot graph sho
  • Network accessline 52
    - **Verification**: cold-boot a profile containing the converted package; the boot graph shows the plugin row; for a Web Client plugin verify the client half enters `__DSH_BOOT__` and its advertised bundle URL returns 200; no `pending (wait
  • Network accessline 53
    - **Source**: [repository loader removal commit](https://github.com/deepseek-ai/deepseek-harness/commit/993550e6c851e1ae05aa7d587d10ae1626ae1191) · [plugin-registry 0811 console adaptation](https://github.com/vlln/plugin-registry/commit/bfa
  • Network accessline 54
    - **Field note** (2026-08-12, whale-girl, bundle conversion): moving from the repository-plugin layout (`.dsh-plugin/` with self-executing UI entry injected via `httpServer.tapIndex`) to the standard bundle format (`dsh.bundle` + `cordis.pa
  • Network accessline 65
    - **Migration recipe**: rename the field to `dsh.client` with the same value shape (platform `web` and the client entry path); check the bundled declaration after packing, not only the source `package.json`; remove any legacy `dsh.plugin.js
  • Network accessline 66
    - **Verification**: pack the plugin and confirm the packed manifest carries `dsh.client`; after install, the profile's bundle layer or insert row resolves and the client route serves the expected artifact. - **Source**: [dsh-loop 0810 basel
  • Network accessline 67
    - **Source**: [dsh-loop 0810 baseline migration](https://github.com/vlln/dsh-loop/commit/5b48a4595b1a739631c8a869a432d4571de344b9) · [dsh-task-status 0810 baseline migration](https://github.com/vlln/dsh-task-status/commit/16f6324b0ffb0fdf0f
  • Network accessline 79
    - **Migration recipe**: declare `dsh.client` (`platform: web` + client entry) in `package.json` even when the client bundle is built into the bundle; verify the packed manifest, not just the source. - **Verification**: install the plugin, r
  • Network accessline 81
    - **Source**: [dsh-navbar 3e81acd — declare `dsh.client` because client-modules scans it](https://github.com/vlln/dsh-navbar/commit/3e81acdedac111150436a9790ff7b4a4be302e7c) · related scan contract [DSH-0.1.2-A1-26](v0.1.2-alpha.1.md)
  • Network accessline 92
    - **Migration recipe**: declare every service consumed via `ctx.get(...)`/property access in the plugin's `inject` array; when a service is genuinely optional across profiles, probe it weakly (see [DSH-0.1.1-R1-05](v0.1.1-rc.1.md)) instead 
  • Network accessline 93
    - **Verification**: cold-boot the target profile and confirm the plugin's effect is registered and the feature works; the error appears at startup only on the real composition, so install/typecheck success is not sufficient evidence. - **So
  • Network accessline 94
    - **Source**: [whale-girl 0f9e3b5 — inject gets `settings`/`httpServer`](https://github.com/vlln/whale-girl/commit/0f9e3b53cf31f1ce9a9f2e232156618d18a1b8b1)
  • Network accessline 106
    - **Migration recipe**: use `typeof ctx.get === 'function' ? ctx.get('httpServer') : undefined` for optional services and degrade gracefully; reserve hard `inject` entries for services that are guaranteed by the plugin's profile scope. - **
  • Network accessline 108
    - **Source**: [whale-girl 8678b13 — weak `ctx.get` for httpServer](https://github.com/vlln/whale-girl/commit/8678b139eaad82decf5b29529c6b91e475851cf5)
  • Network accessline 119
    - **Migration recipe**: read `event.type` for the event discriminator; keep the `session/event` subscription registered even when the `sessions` service is temporarily absent (subscribe once, degrade per event, not by dropping the subscript
  • Network accessline 121
    - **Source**: [whale-girl 78a6b70 — session event response fixes](https://github.com/vlln/whale-girl/commit/78a6b703aab16b92cf065d8e7138010e58a02b67) · companion test file in the same commit
  • Network accessline 132
    - **Migration recipe**: move session aggregation into the Node half: subscribe to session events there, derive the session mood / waiting / completion signal, and expose it through the plugin's own `/state` route (or equivalent) that the cl
  • Network accessline 133
    - **Verification**: cold-boot the plugin and exercise a session action; the client shows the aggregated state (e.g. thinking/waiting animation) within one poll cycle; no client-side `ctx.sessions` references remain. - **Source**: [whale-gir
  • Network accessline 134
    - **Source**: [whale-girl d01bccb — session state aggregated by Node half](https://github.com/vlln/whale-girl/commit/d01bccb677fc076e8e90b17a0975a9fb70e220fc)
  • Network accessline 146
    - **Migration recipe**: read consumed output with `tasks.read`, maintain a per-task shadow buffer with a capped window, and render from the shadow; if multiple consumers must share the stream, layer a tee/observer pattern on `read` so the p
  • Network accessline 147
    - **Verification**: expand a running task in the UI and confirm tail keeps updating without duplicating or losing lines; run two readers simultaneously and confirm neither starves; cold-boot with no `peek` references. - **Source**: [dsh-tas
  • Network accessline 148
    - **Source**: [dsh-task-status 29dda2f — tail via `read` + shadow buffer](https://github.com/vlln/dsh-task-status/commit/29dda2f6bec4242700d61e6efdd3b926f084e8c5)
  • Network accessline 149
    - **Field note** (2026-08-10, dsh-task-status): two follow-up commits hardened the same seam — [ba1d526](https://github.com/vlln/dsh-task-status/commit/ba1d52670495e13c10858b3a2e9e747eb7dd909e) (mirror + direct-read to defeat races, "tail 竞
  • Network accessline 160
    - **Migration recipe**: rename the injected service identifiers and all `ctx` usages (`httpServer`→`webServer`, `tasks`→`jobs`); rename task-event listeners (`onTaskDone`→`onJobDone`); the route-registration interface (`webServer.register`)
  • Network accessline 161
    - **Verification**: cold-boot and confirm injection resolves with no `pending (waiting for service: …)`; hit a registered route and exercise one task event end-to-end; grep the packed artifact (not just source) for leftover old identifiers.
  • Network accessline 162
    - **Source**: [whale-girl 183354b](https://github.com/vlln/whale-girl/commit/183354b9c12272014ec534114622db6a11dfa59e) · [dsh-loop c5bf083](https://github.com/vlln/dsh-loop/commit/c5bf0832af381763697b388826b43da878186821) · [dsh-task-status

.dsh/skills/plugin-upgrade/references/v0.1.1-rc.2.md

  • Network accessline 24
    - **Migration recipe**: For image refs and `read_image` results, "read known fields, retain unknown optional fields"; if the plugin's own schema uses `additionalProperties: false`, add optional fields for `originalDimensions.width` and `ori
  • Network accessline 26
    - **Source**: rc.1 type baseline [`types.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.1/packages/attachment/attachment/src/types.ts); rc.2 type definitions [`types.ts`](https://github.com/deepseek-ai/deepseek-harn
  • Network accessline 35
    - **Migration recipe**: Do not do fragile matching on the full `<content>` string; read the structured `path`, `image`, and dimension fields. If snapshots must be kept, cover the "unscaled" and "scaled" outcomes separately, and treat the co
  • Network accessline 37
    - **Source**: rc.1 implementation [`read-image.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.1/packages/fs/tool-fs/src/read-image.ts); rc.2 implementation [`read-image.ts`](https://github.com/deepseek-ai/deepseek-h
  • Network accessline 46
    - **Migration recipe**: Separate image identity from the provider file ID; use `attachmentId`/request version as the local cache key and treat Files API upload results as temporary mappings that can expire or go stale. Request observation s
  • Network accessline 48
    - **Source**: rc.2 adapter [`adapter.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2/packages/llm/llm-deepseek/src/adapter.ts); Files API contract [`files-api.ts`](https://github.com/deepseek-ai/deepseek-harness/bl

.dsh/skills/plugin-upgrade/references/v0.1.2-alpha.1.md

  • Network accessline 17
    > actual runtime paths. > > Upstream compare: [dsh-v0.1.1-rc.2...dsh-v0.1.2-alpha.1](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.1-rc.2...dsh-v0.1.2-alpha.1)
  • Network accessline 18
    > > Upstream compare: [dsh-v0.1.1-rc.2...dsh-v0.1.2-alpha.1](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.1-rc.2...dsh-v0.1.2-alpha.1) > · Release Notes: [dsh-v0.1.2-alpha.1](https://github.com/deepseek-ai/deepseek-harne
  • Network accessline 19
    > Upstream compare: [dsh-v0.1.1-rc.2...dsh-v0.1.2-alpha.1](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.1-rc.2...dsh-v0.1.2-alpha.1)
  • Network accessline 20
    > · Release Notes: [dsh-v0.1.2-alpha.1](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.1)
  • Network accessline 104
    Only the client plane (browser plugins) follows this table's `ctx.remote.*`, and the plugin must declare   `dsh.client` in package.json to enter the browser plugin roster.   The full process is in the repo's [benchmark/validation-report-202
  • Network accessline 105
    `dsh.client` in package.json to enter the browser plugin roster.   The full process is in the repo's [benchmark/validation-report-2026-08-30.md](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/benchmark/results/validation-re
  • Network accessline 106
    The full process is in the repo's [benchmark/validation-report-2026-08-30.md](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/benchmark/results/validation-report-2026-08-30.md).
  • Network accessline 107
    - **Field note** (2026-08-30, dsh-better-sidebar e2e, npm 0.1.2-alpha.2 on a real machine): Test harnesses / liveness scripts that hit `/api` directly must also migrate the **wire contract**: dotted endpoints now 404 — always use the slash 
  • Network accessline 108
    - **Source**: [APIProxy→Remote architecture note (alpha.1)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/.agents/notes/implemented/architecture/2026-08-10-unary-apiproxy-remote-migration.md) · [alpha.1 session-con
  • Network accessline 119
    - **Migration recipe**: If the target is exactly alpha.1, do not turn unknown persisted events into a consumer whitelist — that would wrongly let required events through. Temporarily stop writing that unknown persisted event, or switch to p
  • Network accessline 121
    - **Source**: [alpha.2 restore decision explaining the alpha.1 removal](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/.agents/notes/implemented/architecture/2026-08-30-retain-ignorable-external-session-events.md)
  • Network accessline 132
    - **Migration recipe**: Check the host paths one by one against an exact-tag compare; rebuild imports by owning module. Mark capabilities that have no stable public seam as "pending confirmation"; do not guess new paths. Ordinary plugins sh
  • Network accessline 133
    - **Verification**: Run a patch-surface composition against the target tag source; every old target must map to a target-version file or state an explicit removal reason. - **Source**: [alpha.1 release notes, "Other changes"](https://github
  • Network accessline 134
    - **Source**: [alpha.1 release notes, "Other changes"](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.1)
  • Network accessline 135
    - **Field note**: dsh-tui points `DSH_HARNESS_SOURCE_ROOT` at the target tag and validates each patch-surface path by composition. - **Field note** (2026-08-28, [dsh-ui-whale v0.3.5](https://github.com/lhh010/dsh-ui-whale) / dsh-ui-progress
  • Network accessline 136
    - **Field note** (2026-08-28, [dsh-ui-whale v0.3.5](https://github.com/lhh010/dsh-ui-whale) / dsh-ui-progress v0.9.4 / dsh-input-history v0.1.4, Windows, npm link install): The public snapshot consumption surface is affected too — the old f
  • Network accessline 156
    - **Verification**: Cold-boot the new profile and upgrade-boot the old profile once each; check cwd, environment variables, plugin mounts, and resolved config. - **Field note** (2026-08-30, alpha.2 container test): `dsh --help` confirms pro
  • Access to secretsline 157
    [Credential-related source omitted]
  • Network accessline 158
    - **Source**: [alpha.1 release notes, "Other changes"](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.1)
  • Network accessline 170
    - **Verification**: Cover plain-text success, reasoning present, empty final text, direct launch failure, and non-zero exit; confirm sensitive reasoning goes to a controlled stderr sink. - **Field note** (2026-08-30, alpha.2 container test)
  • Network accessline 172
    - **Source**: [alpha.1 headless README](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/bundle/headless/README.md) · [rc.2 headless src (stdout already the final text)](https://github.com/deepseek-ai/deepsee
  • Network accessline 193
    `tools-code-mode`, and the `:code:` inside sub-call ids. - **Verification**: New configs/presets boot; old session logs still load; preserved identifiers were not wrongly changed. - **Source**: [PTC rename ledger](https://github.com/deepsee
  • Network accessline 195
    - **Source**: [PTC rename ledger](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/.agents/notes/implemented/architecture/2026-08-25-rename-code-mode-to-ptc.md)
  • Network accessline 206
    - **Migration recipe**: Deployments that need a confirmation step should add a `tools/pre-execute` policy or disable `web_fetch`, and test public/private network events against the target version; the file sandbox does not govern web networ
  • Network accessline 208
    - **Source**: [alpha.1 Web subsystem, "Fetch network policy"](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/docs/subsystems/web.md) · [alpha.1 release notes](https://github.com/deepseek-ai/deepseek-harness/releases
  • Network accessline 219
    [Credential-related source omitted]
  • Network accessline 220
    - **Verification**: Wrong Host/Origin returns 403; missing/bad Cookie returns 401; a correct bootstrap token can redeem a Cookie repeatedly within the same process; a valid Cookie can call the official `/api`/WS; custom routes must not be c
  • Network accessline 221
    [Credential-related source omitted]
  • Network accessline 222
    - **Field note** (2026-08-31, external Node raw client, macOS/Node 22.22, host running a 0.1.2-alpha.2 source checkout): Three additions for the raw-client lane. ① The cookie outlives the host process: the launch token rotates per process a
  • Network accessline 223
    - **Field note** (2026-08-28, dsh-mnemon rc.2/alpha.1 dual cohort): Migrating custom RPC registrations to alpha.1's two-argument `handle` shape passed alpha-side mocks but regressed the still-installable rc.2 Host, whose real service reads 
  • Network accessline 224
    - **Source**: [alpha.1 browser auth](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/client/connection/src/browser-auth.ts) · [alpha.1 Connection routes](https://github.com/deepseek-ai/deepseek-harness/blob/
  • Network accessline 235
    - **Migration recipe**: Before adopting, confirm the registration entry from the target tag's public types/examples; if only an internal UI interface exists, mark it "pending confirmation" and do not patch the settings page. - **Verificatio
  • Network accessline 237
    - **Source**: [alpha.1 release notes, "New features"](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.1)
  • Network accessline 248
    - **Migration recipe**: Replace custom i18n patches with the target tag's public language-registration API; when no public entry exists, do not guess the interface. - **Verification**: The language is selectable, takes effect after switchin
  • Network accessline 250
    - **Source**: [alpha.1 release notes, "New features"](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.1)
  • Network accessline 261
    - **Migration recipe**: Confirm the exact parameter names and authorization constraints from the target tag's type definitions before passing them through; do not invent object shapes from release notes. - **Verification**: Launch a subagen
  • Network accessline 263
    - **Source**: [alpha.1 release notes, "New features"](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.1)
  • Network accessline 274
    - **Migration recipe**: Plugin code usually needs no changes; deployment maintainers should review the target tag's configuration options, decide whether to disable this per their own privacy policy, and explain the host behavior to users a
  • Network accessline 276
    - **Source**: [alpha.1 release notes, "New features"](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.1)
  • Network accessline 287
    - **Migration recipe**: Only after reproducing and confirming the fix on the corresponding platform, delete workarounds one by one that evidence shows are no longer needed; do not clean up all compatibility branches at once. - **Verificatio
  • Network accessline 289
    - **Source**: [alpha.1 release notes, "Bug fixes"](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.1)
  • Network accessline 300
    - **Migration recipe**: Enable only after the deployment explicitly agrees to log egress. Each time, send the continuous suffix starting after this session's accepted watermark; after an HTTP 2xx, append the `session-log-deepseek/delivery-a
  • Network accessline 302
    - **Source**: [alpha.1 session-log-deepseek README](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/session/session-log-deepseek/README.md) · [alpha.1 release notes](https://github.com/deepseek-ai/deepseek-h
  • Network accessline 314
    - **Migration recipe**: On an isolated profile, start `dsh web --no-open` at the exact target tag, keep and visit the full URL printed by `dsh web:`, and let the root-path token exchange yield the Cookie. Then read `window.__DSH_BOOT__.entr
  • Network accessline 315
    - **Verification**: The advertised resource returns 200; the bundle completes `__ModuleLoader__.load` registration under the target package name; wait for a DOM marker owned by the plugin or equivalent core behavior; collect and fail on pag
  • Network accessline 316
    - **Source**: [alpha.1 Web App startup URL](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/bundle/web-app/README.md) · [alpha.1 client modules boot manifest and bundle URLs](https://github.com/deepseek-ai/d
  • Network accessline 318
    `dsh-v0.1.1-rc.2` and `dsh-v0.1.2-alpha.1` using the same published artifact; the scripts accept both bare and token   URLs and verify the boot entry, resource 200, plugin DOM mount, and page errors. See   [GenUI PR #86](https://github.com/
  • Network accessline 319
    URLs and verify the boot entry, resource 200, plugin DOM mount, and page errors. See   [GenUI PR #86](https://github.com/omdsh-dev/dsh-genui/pull/86) and   [Annotation PR #40](https://github.com/omdsh-dev/dsh-annotation/pull/40).
  • Network accessline 320
    [GenUI PR #86](https://github.com/omdsh-dev/dsh-genui/pull/86) and   [Annotation PR #40](https://github.com/omdsh-dev/dsh-annotation/pull/40). - **Field note** (2026-08-31, Node `fetch` e2e): Following the token URL's 303 by default does no
  • Network accessline 321
    [Annotation PR #40](https://github.com/omdsh-dev/dsh-annotation/pull/40). - **Field note** (2026-08-31, Node `fetch` e2e): Following the token URL's 303 by default does not   store `Set-Cookie` for the test script, so the subsequent boot-ma
  • Network accessline 349
    **The scope-filtering pitfall**: `ctx.userQuestions.ask()` without `agent` dispatches on the userQuestions service's own ctx. An answerer listener on that same Context can receive the request, but a listener registered by a sibling entry in
  • Network accessline 350
    - **Verification**: On a real spine: `ask` hangs → the panel renders → a number-key selection resolves it; Esc cancels and rejects with `ASK_ABORTED`; after session switch/dispose, pending questions fail closed and the listener disposer is 
  • Network accessline 351
    - **Source**: [rc.2 registerProvider definition](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2/packages/interaction/user-questions/src/index.ts) · [alpha.1 user-questions service (no registerProvider, waterfall dispat
  • Network accessline 354
    - **Field note** (2026-08-28, [dsh-TUI #622](https://github.com/ccch1mneyyy/dsh-TUI/pull/622)): Probe with `typeof service.registerProvider === 'function'` to pick the path; waterfall listeners filter by `request.agent.id`, and requests wit
  • Network accessline 365
    - **Migration recipe**: Fold it locally with the same semantics: take `data.agentPreset` from the last `agent-preset/selected` event in the session, falling back to `header.agentPreset` when there is none; do not reverse-engineer it from th
  • Network accessline 366
    - **Verification**: A session with `agent-preset/selected` events resumes with the last selection; a session without events gets the header value; the roster lists `standard` on both the rc.2 and alpha.1 hosts. - **Source**: [rc.2 `resolveS
  • Network accessline 367
    - **Source**: [rc.2 `resolveSessionPreset`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2/packages/preset/agent-presets/src/session.ts) · [alpha.1 agent-presets service (`includeShippedRoot`)](https://github.com/deeps
  • Network accessline 368
    - **Field note** (2026-08-28, [dsh-TUI #622](https://github.com/ccch1mneyyy/dsh-TUI/pull/622)): `resolveRecordedPreset` in `preset-resolution.ts` does the folding; `cordis.patch.yml` probes whether the package directory has `presets/` via `
  • Network accessline 380
    - **Migration recipe**: Narrow locally on the `StreamChunk` discriminator: `text-delta` / `reasoning-delta` non-empty counts as a token; `tool-call-delta` with `argumentsDelta` or `name` counts as a token. Do not import `dsh-client-ui-chat`
  • Network accessline 381
    - **Verification**: On the same replay log, the first-token timestamp matches rc.2; tool-call deltas count as tokens. - **Source**: [rc.2 re-export from `dsh-llm/message`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2
  • Network accessline 382
    - **Source**: [rc.2 re-export from `dsh-llm/message`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2/packages/client/runtime/src/client/sessions/assistant-timing.ts) · [alpha.1 only ui-chat's internal implementation re
  • Network accessline 383
    - **Field note** (2026-08-28, [dsh-TUI #622](https://github.com/ccch1mneyyy/dsh-TUI/pull/622)): local `isTokenDelta(chunk: StreamChunk)` in `src/dsh-adapter/channel.ts`, regression-checked by `scripts/verify-tps.mjs`.
  • Network accessline 394
    - **Migration recipe**: To keep rc.2's opt-out stance, override in your own `cordis.patch.yml`: `session-telemetry-otel` must restate the whole `config` object (an include patch replaces, it does not merge), with `mode` written as `process.
  • Network accessline 395
    - **Verification**: In `dsh --profile <p> --dump-config`, the two rows' resolved config matches the expected values; send one real request to confirm no plugin package-manifest field is present (without printing credentials or bodies). - **
  • Network accessline 396
    - **Source**: [rc.2 base composition (`DISABLED`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2/packages/bundle/base/cordis.patch.yml) · [alpha.1 base composition (`FEEDBACK_ONLY` + inventory row)](https://github.com
  • Network accessline 397
    - **Field note** (2026-08-28, [dsh-TUI #622](https://github.com/ccch1mneyyy/dsh-TUI/pull/622)): two overrides in `cordis.patch.yml`; the telemetry row must restate the entire config.
  • Network accessline 408
    - **Migration recipe**: Do not depend on pi-ai directly. Resolve from the host adapter: `createRequire(import.meta.resolve('@deepseek-ai/dsh-llm-pi-ai/package.json'))`, then `require.resolve('@earendil-works/pi-ai', { paths })` to get the d
  • Network accessline 409
    - **Verification**: Install once on each of the rc.2 and alpha.1 hosts; `pnpm why @earendil-works/pi-ai` shows exactly one copy, coming from `dsh-llm-pi-ai`. - **Source**: [rc.2 `dsh-llm-pi-ai` package.json (`^0.82.1`)](https://github.com/d
  • Network accessline 410
    - **Source**: [rc.2 `dsh-llm-pi-ai` package.json (`^0.82.1`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2/packages/llm/llm-pi-ai/package.json) · [alpha.1 `dsh-llm-pi-ai` package.json (`^0.84.2`)](https://github.com/
  • Network accessline 411
    - **Field note** (2026-08-28, [dsh-TUI #622](https://github.com/ccch1mneyyy/dsh-TUI/pull/622)): dsh-auth's hard bump to `^0.84.2` plus an override installed two copies on rc.2; after switching to resolving from `dsh-llm-pi-ai`, each cohort 
  • Network accessline 436
    - While the cohort is unpublished, point type dependencies at the official source checkout with `link:`, or use tarball `overrides` per [R-01](rollup-0.1.2.md). - **Verification**: typecheck shows no leftover `dsh-client-runtime` imports; `
  • Network accessline 437
    - **Verification**: typecheck shows no leftover `dsh-client-runtime` imports; `dsh.client.inject` declares only real service packages; after a cold boot the boot graph contains this plugin with no pending rows. - **Source**: [alpha.1 releas
  • Network accessline 438
    - **Source**: [alpha.1 release notes](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.1) · [alpha.1's packages/client (no runtime package)](https://github.com/deepseek-ai/deepseek-harness/tree/dsh-v0.1.2-alpha.
  • Network accessline 454
    3. `dsh --profile <name> --dump-config` to check row names and no pending. - **Verification**: The index page's HTML `window.__DSH_BOOT__.entries` contains `"id":"<package name>"`; the script fetched from the combo route `/plugins/??<packag
  • Network accessline 455
    - **Verification**: The index page's HTML `window.__DSH_BOOT__.entries` contains `"id":"<package name>"`; the script fetched from the combo route `/plugins/??<package name>/client.js&rev=...` (the URL contains `??`; add `-g` for curl) conta
  • Network accessline 456
    - **Source**: [modules/src/client/system.ts registration assertion](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/client/modules/src/client/system.ts) · [modules/src/client/manifest.ts (`Entry name == pack
  • Network accessline 481
    Import `SessionEventLikeEntry` and `SessionBinding` from `@deepseek-ai/dsh-api-session-controller/client`; scoped-addressing services still go through `binding.ctx.get(...)`; the input-machine face (`conversation.input.for(actx)` / `setDraf
  • Network accessline 482
    - **Verification**: Send one user message in a real session and the plugin reads text consistent with the UI; empty sessions / unknown ids return null instead of throwing. - **Source**: [SessionBinding definition](https://github.com/deepsee
  • Network accessline 483
    - **Source**: [SessionBinding definition](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/api/session-controller/src/client/sessions/service.ts) · [SessionEventLikeEntry contract](https://github.com/deepseek
  • Network accessline 500
    - Other selector-class drift (panel ids, slot names): the official `packages/client/ui-*` source is authoritative; verify the actual 0.1.2 page shape with browser devtools, not from 0.1.1 memory (same verification requirement as [DSH-0.1.2-
  • Network accessline 501
    - **Verification**: On a 0.1.2 staging page, really perform one draft write + recall (including caret-position restore) with no DOM errors in the console; keep the textarea path only for cross-cohort coexistence ([R-02](rollup-0.1.2.md)). -
  • Network accessline 502
    - **Source**: [ComposerContentEditable.tsx (new in alpha.1)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/client/ui-conversation/src/client/input/editor/ComposerContentEditable.tsx) · [alpha.1 release not
  • Network accessline 514
    - **Migration recipe**: Build the nested object through a single shared helper at every render point (copy-button copy comes from the plugin's own locale dictionary; `footnotes` is an sr-only heading — pass an empty string when there is no 
  • Network accessline 515
    - **Verification**: Render markdown containing a fenced code block on a real host; after switching locale the copy-button copy follows; no console errors; streaming messages are not re-rendered wholesale. - **Source**: [alpha.1 MarkdownText
  • Network accessline 516
    - **Source**: [alpha.1 MarkdownText.tsx (labels required)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/client/ui-primitives/src/markdown/MarkdownText.tsx) · [alpha.1 render.tsx (MarkdownLabels shape)](ht
  • Network accessline 517
    - **Field note** (2026-08-30, dsh-better-sidebar, macOS, real machine 0.1.2-alpha.1/alpha.2): The crash was caught by a mount smoke on a real alpha.1 host (devDeps pinned to 0.1.1-rc.1, typecheck all green); the fix routes all four render p
  • Network accessline 528
    - **Migration recipe**: Branch by session origin first. For ordinary sessions, move history reads to `session/page|follow`. For subagent-origin sessions (side chat, delegated threads), transcript reads have **no usable host RPC** — supply t
  • Network accessline 529
    - **Verification**: The live and cold (after host restart) paths return consistent transcripts; `afterSeq` deltas do not resurrect the seed; `session/list` shows subagent child sessions; with the route deliberately broken, the UI shows an e
  • Network accessline 530
    - **Source**: [alpha.1 connection/client/api.ts (old face now only re-exports protocol types)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/client/connection/src/client/api.ts) · [alpha.1 APIProxy→Remote 
  • Network accessline 531
    - **Field note** (2026-08-30, dsh-better-sidebar, macOS, npm 0.1.2-alpha.2 real machine): the side-chat transcript polling was missed in the migration and the errors were swallowed by catch, so on alpha.1+ hosts the tab rendered an empty tr
  • Network accessline 542
    - **Migration recipe**: Follow the package-exported constant in assertions — `import { SUBAGENT_DESCRIPTOR_VERSION } from '@deepseek-ai/dsh-subagent'` — instead of hardcoding a literal; build seeds uniformly through `snapshotSubagentDescrip
  • Network accessline 543
    - **Verification**: After upgrading devDependencies, the relevant unit tests pass; the seed event `subagent/descriptor` has `version === SUBAGENT_DESCRIPTOR_VERSION`. - **Source**: [alpha.1 descriptor.ts (= 3)](https://github.com/deepseek-a
  • Network accessline 544
    - **Source**: [alpha.1 descriptor.ts (= 3)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/subagent/subagent/src/descriptor.ts) · [rc.2 descriptor.ts (= 2)](https://github.com/deepseek-ai/deepseek-harness/b
  • Network accessline 573
    - **Verification**: `skipLibCheck: false` typecheck shows no leftover `connectWorkspace` / `pickDirectory` on `IWorkspaces`; a real web cold boot has no pending `uiWorkspace`; one connect and one directory-pick path succeed after both list 
  • Network accessline 574
    - **Source**: [rc.2 aggregated `IWorkspaces`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2/packages/client/runtime/src/client/contract/workspaces.ts) · [alpha.1 Workspace Controller `IWorkspaces` (no navigation)](htt
  • Network accessline 575
    - **Field note** (2026-08-28, [dsh-desktop-safe-market](https://github.com/bruc3van/dsh-desktop-safe-market) 0.2.16 → 0.3.0, Web Client): a marketplace plugin that called `workspaces.connectWorkspace` / `pickDirectory` and gated on `baselin

.dsh/skills/plugin-upgrade/references/v0.1.2-alpha.2.md

  • Network accessline 15
    > This file is a curated list of plugin-relevant changes, not a complete API diff. > > Upstream comparison: [dsh-v0.1.2-alpha.1...dsh-v0.1.2-alpha.2](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.2-alpha.1...dsh-v0.1.2-al
  • Network accessline 16
    > > Upstream comparison: [dsh-v0.1.2-alpha.1...dsh-v0.1.2-alpha.2](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.2-alpha.1...dsh-v0.1.2-alpha.2) > · Release Notes: [dsh-v0.1.2-alpha.2](https://github.com/deepseek-ai/deeps
  • Network accessline 17
    > Upstream comparison: [dsh-v0.1.2-alpha.1...dsh-v0.1.2-alpha.2](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.2-alpha.1...dsh-v0.1.2-alpha.2)
  • Network accessline 18
    > · Release Notes: [dsh-v0.1.2-alpha.2](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.2)
  • Network accessline 41
    - **Migration recipe**: Producers should write `ignorable: true` only for informational events whose semantics an old reader can omit without affecting reconstruction; the marker is not a consumer-side filtering directive, and events remain
  • Network accessline 43
    - **Source**: [alpha.2 release notes](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.2) · [retain ignorable external session events decision](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alp
  • Network accessline 79
    Remote calls do not reject on ordinary business/carrier failures; assembly faults should surface rather than be swallowed by a defensive catch. Use `isRemoteFailure` (from `@deepseek-ai/dsh-api-gateway/client`) for structural discrimination
  • Network accessline 81
    - **Source**: [RemoteError failure vocabulary](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/.agents/notes/implemented/architecture/2026-08-28-ctx-remote-failure-vocabulary.md) · [adding a Remote API](https://githu
  • Network accessline 92
    - **Migration recipe**: Also look at the opposite direction: alpha.2 adds peers as well (`dsh-session-projection` and others), see [DSH-0.1.2-A2-08](v0.1.2-alpha.2.md). First choose the single package manager the repository currently uses, 
  • Network accessline 93
    - **Verification**: Installation and typecheck succeed; no new peer/missing-package errors related to the target upgrade; the dependency graph and packed artifacts change only as expected. - **Source**: [alpha.2 release notes, "Bug fixes"](
  • Network accessline 94
    - **Source**: [alpha.2 release notes, "Bug fixes"](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.2)
  • Network accessline 107
    - **Migration recipe**: Remove only branches with evidence of specifically bypassing this defect (forcing Node 22, skipping `dsh web`, probing the loader by major version); keep other Node compatibility constraints. The verification matrix 
  • Network accessline 109
    - **Source**: [alpha.2 release notes, "Bug fixes"](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.2) · [alpha.2 vendor/README item 19](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/ve
  • Network accessline 120
    - **Migration recipe**: Parse `agentPresets` as an optional field, keeping the old entries view when it is absent; do not rebuild the whole object in a way that drops future fields. When presets need to be displayed, render from trust, rows
  • Network accessline 122
    - **Source**: [alpha.2 PluginInventorySnapshot types](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/host/plugin-inventory/src/types.ts) · [alpha.2 release notes](https://github.com/deepseek-ai/deepseek-har
  • Network accessline 133
    - **Migration recipe**: In alpha.2, read `ctx.remote.$host.home` (may be `undefined` before the first ready frame) and `ctx.remote.$host.isLoopback`. `$host` is not a store — it has no subscriptions or generation counter; to react to reconn
  • Network accessline 135
    - **Source**: [alpha.2 API gateway README](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/api/gateway/README.md) · [alpha.2 APIProxy→Remote note](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.
  • Network accessline 144
    - **Migration recipe**: Users of the shipped bundle are unaffected: `dsh-base` alpha.2 already mounts `session-projection` (`cordis.patch.yml:138`) and `session-projection-cache`. For self-composed profiles, add a `@deepseek-ai/dsh-session-
  • Network accessline 146
    - **Source**: [alpha.2 tool-todo `inject`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/todo/tool-todo/src/index.ts) · [alpha.2 tool-subagent `inject`](https://github.com/deepseek-ai/deepseek-harness/blob
  • Network accessline 157
    - **Migration recipe**: Namespace validity checking has moved to compile time via the template literal type `SettingsNamespaceInput` (lowercase letter at the start + `[a-z0-9-]` suffix; `SettingsNamespace` is a brand type): on the host side
  • Network accessline 158
    - **Verification**: Typecheck passes after upgrading devDependencies; unit-test the namespace register/read/write/listen paths; read and write once on a real host settings panel. - **Source**: [alpha.2 settings/src/index.ts (SettingsNamespa
  • Network accessline 159
    - **Source**: [alpha.2 settings/src/index.ts (SettingsNamespaceInput, no settingsNamespace export)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/settings/settings/src/index.ts) · [alpha.1 settings/src/ind
  • Network accessline 160
    - **Field note** (2026-08-30, dsh-better-sidebar, devDeps 0.1.1-rc.1 → 0.1.2-alpha.2): After the upgrade, all typecheck failures came from this single semantic change (two call sites: the host side and the smoke-test double); the fix passes

.dsh/skills/plugin-upgrade/references/v0.1.2-alpha.3.md

  • Network accessline 15
    > This file is a curated list of plugin-relevant changes, not a complete API diff. > > Upstream comparison: [dsh-v0.1.2-alpha.2...dsh-v0.1.2-alpha.3](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.2-alpha.2...dsh-v0.1.2-al
  • Network accessline 16
    > > Upstream comparison: [dsh-v0.1.2-alpha.2...dsh-v0.1.2-alpha.3](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.2-alpha.2...dsh-v0.1.2-alpha.3) > · Release Notes: [dsh-v0.1.2-alpha.3](https://github.com/deepseek-ai/deeps
  • Network accessline 17
    > Upstream comparison: [dsh-v0.1.2-alpha.2...dsh-v0.1.2-alpha.3](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.2-alpha.2...dsh-v0.1.2-alpha.3)
  • Network accessline 18
    > · Release Notes: [dsh-v0.1.2-alpha.3](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.3)
  • Network accessline 36
    - **Migration recipe**: register the plugin's settings namespace through the Node half (`settings` service, same-named namespace the plugin already uses), then have the client render a card into `settings.plugin.item[key = namespace]`; the 
  • Network accessline 37
    - **Verification**: open Settings → Plugins, find the plugin's card, toggle/change a field, and confirm the running plugin reacts without a web restart; verify the packed client artifact contains the card entry, not just the source. - **Sou
  • Network accessline 38
    - **Source**: [alpha.2/alpha.3 plugin-owned settings surface design](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.3/.agents/notes/implemented/architecture/2026-08-12-plugin-owned-settings-surface.md) · [whale-girl 4
  • Network accessline 39
    - **Field note** (2026-08-31, whale-girl): the first integration implemented a high-frequency subset of 7 fields (show-on-page, size, opacity, wandering, sleep delay, feed/play reply pools) as two new client modules (settings-card 298 lines
  • Network accessline 73
    database receives no migration or salvage writes, and its content is only available   through the pre-upgrade export. - **Source**: [JSONL-only session persistence decision note (pinned dsh-v0.1.2-alpha.3)](https://github.com/deepseek-ai/de
  • Network accessline 75
    - **Source**: [JSONL-only session persistence decision note (pinned dsh-v0.1.2-alpha.3)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.3/.agents/notes/implemented/simplification/2026-08-30-jsonl-only-session-persiste

.dsh/skills/plugin-upgrade/references/v0.1.2-alpha.4.md

  • Network accessline 15
    > This file is a curated list of plugin-relevant changes, not a complete API diff. > > Upstream comparison: [dsh-v0.1.2-alpha.3...dsh-v0.1.2-alpha.4](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.2-alpha.3...dsh-v0.1.2-al
  • Network accessline 16
    > > Upstream comparison: [dsh-v0.1.2-alpha.3...dsh-v0.1.2-alpha.4](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.2-alpha.3...dsh-v0.1.2-alpha.4) > · Release Notes: [dsh-v0.1.2-alpha.4](https://github.com/deepseek-ai/deeps
  • Network accessline 17
    > Upstream comparison: [dsh-v0.1.2-alpha.3...dsh-v0.1.2-alpha.4](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.2-alpha.3...dsh-v0.1.2-alpha.4)
  • Network accessline 18
    > · Release Notes: [dsh-v0.1.2-alpha.4](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.4)
  • Network accessline 49
    3. If a plugin enumerates the child's tool layer by name (a capability filter), check that the filter still lets the child's structured-output tool through — the alpha.4 comment at `packages/core/tools/src/index.ts` was rewritten to say the
  • Network accessline 51
    - **Source**: [alpha.4 release notes](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.4) ("`send_message` … replacing the one-way `report` tool") · package removal in [compare dsh-v0.1.2-alpha.3...dsh-v0.1.2-al
  • Network accessline 62
    - **Migration recipe**: rename the dependency and any `name:` row to `@deepseek-ai/dsh-experimental-code-runtime-python`; treat it as experimental (the `experimental/` tree carries no stability promise), so pin the exact cohort version rath
  • Network accessline 64
    - **Source**: package manifests at both tags — `packages/code-runtime/code-runtime-python/package.json` at `dsh-v0.1.2-alpha.3` (`"name": "@deepseek-ai/dsh-code-runtime-python"`) vs `packages/experimental/code-runtime-python/package.json` a
  • Network accessline 82
    - Do not cache the array returned by `snapshotEvents()` across appends when you need live data; re-read `seq` and call again. - **Verification**: `tsc --noEmit` of the plugin against `@deepseek-ai/dsh-session` at `dsh-v0.1.2-alpha.4` passes
  • Network accessline 83
    - **Verification**: `tsc --noEmit` of the plugin against `@deepseek-ai/dsh-session` at `dsh-v0.1.2-alpha.4` passes with no `events` access; a runtime read of a live session through the new API returns the same event count as the projection/
  • Network accessline 84
    - **Source**: [alpha.4 release notes](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.4) ("Replace `Session.events` with on-demand read APIs") · `packages/core/session/src/index.ts:588-629` (`eventAt` / `snapsh
  • Network accessline 100
    4. Where you compared `openTurnStartSeq !== null` or `lastStepBoundary.seq`, the comparisons still work (branded numbers are numbers at runtime); only the declared types need updating. - **Verification**: `tsc --noEmit` against the alpha.4 
  • Network accessline 101
    - **Verification**: `tsc --noEmit` against the alpha.4 packages; at runtime, `SessionSeq(-1)` and `SessionLogOffset(1.5)` throw `TypeError`, and a freshly forked session in the same process shows `session.inheritedEventCount === session.fir
  • Network accessline 102
    - **Source**: [alpha.4 release notes](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.4) ("Distinguish `SessionSeq` and `SessionLogOffset` with strong types; developers should pay attention to compatibility") ·
  • Network accessline 114
    - **Migration recipe**: if your preset extends `ptc` and relied on `workflow`, either re-enable `tool-workflow` in your own preset layer or rewrite the instructions around `run_code`; if your preset does not extend `ptc`, nothing changes. D
  • Network accessline 116
    - **Source**: [alpha.4 release notes](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.4) ("Stop exposing the general-purpose `workflow` tool by default in Web PTC Mode") · `packages/preset/agent-presets/presets
  • Network accessline 127
    - **Migration recipe**: profiles that must not fetch override the row in their own patch layer (`- id: tool-web` with `config: { fetch: false }`); profiles that previously enabled fetch per preset can drop that override. Treat this as a pol
  • Network accessline 129
    - **Source**: [alpha.4 release notes](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.4) ("Enable `web_fetch` by default for the Python SDK, Headless, ACP, and custom Profiles") · `packages/bundle/base/cordis.p

.dsh/skills/plugin-upgrade/references/v0.1.2-alpha.5.md

  • Network accessline 15
    > This file is a curated list of plugin-relevant changes, not a complete API diff. > > Upstream comparison: [dsh-v0.1.2-alpha.4...dsh-v0.1.2-alpha.5](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.2-alpha.4...dsh-v0.1.2-al
  • Network accessline 16
    > > Upstream comparison: [dsh-v0.1.2-alpha.4...dsh-v0.1.2-alpha.5](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.2-alpha.4...dsh-v0.1.2-alpha.5) > · Release Notes: [dsh-v0.1.2-alpha.5](https://github.com/deepseek-ai/deeps
  • Network accessline 17
    > Upstream comparison: [dsh-v0.1.2-alpha.4...dsh-v0.1.2-alpha.5](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.2-alpha.4...dsh-v0.1.2-alpha.5)
  • Network accessline 18
    > · Release Notes: [dsh-v0.1.2-alpha.5](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.5)
  • Network accessline 49
    3. Backend reach: the tolerance is implemented by the json per-record backend and its legacy bootstrap only. A backend without `compatibleVersions` support (the sqlite storage backend implements neither this nor `backupRecord`) keeps strict
  • Network accessline 50
    - **Verification**: `defineDomain({ version: 5, compatibleVersions: [4] })` passes while `[5]`, `[-1]`, and `[1.5]` throw; open a json per-record unit whose documents are stamped `4` → the records load, stamped `3` without the declaration →
  • Network accessline 51
    - **Source**: [compare dsh-v0.1.2-alpha.4...dsh-v0.1.2-alpha.5](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.2-alpha.4...dsh-v0.1.2-alpha.5) · `DomainSpec.compatibleVersions` and the `defineDomain` validation at [spec.ts
  • Network accessline 66
    3. Plan the rebuild: after a salvage the record is absent until the owning flow writes it again (the host's cache cold-refolds and checkpoints). Same-minute backups of the same key overwrite each other — the newer bytes win; distinct keys a
  • Network accessline 67
    - **Verification**: with the policy declared and a schema-failing record present, `open` resolves, the document is renamed to `*.json.bak.*` on disk, `loadAll` shows the key absent, a later `putRecord` recreates the record fresh, and the lo
  • Network accessline 68
    - **Source**: [compare dsh-v0.1.2-alpha.4...dsh-v0.1.2-alpha.5](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.2-alpha.4...dsh-v0.1.2-alpha.5) · `DomainSpec.invalidRecords` contract at [spec.ts:67](https://github.com/deeps
  • Network accessline 78
    - **Action level**: informational - **Symptoms**: two failure shapes on alpha.4 when an already-used home was upgraded. (1) From a v3 home (shipped by 0.1.1-rc.2, single-file `storages/session_projcache.json`): the per-record bootstrap migr
  • Network accessline 79
    - **Symptoms**: two failure shapes on alpha.4 when an already-used home was upgraded. (1) From a v3 home (shipped by 0.1.1-rc.2, single-file `storages/session_projcache.json`): the per-record bootstrap migrated the legacy file without check
  • Network accessline 80
    - **Migration recipe**: upgrade the host to alpha.5 — no plugin code change is required for any of these symptoms. The host's `session_projcache` domain now declares `version: 5, compatibleVersions: [3, 4]` with the two lineage fields optio
  • Network accessline 81
    - **Verification**: boot the host against `dsh-v0.1.2-alpha.5` on homes of all four shapes (pristine v3, poisoned v3, v4, fresh): the app starts and the SessionList RPC returns the recorded titles verbatim. Upstream's archived-fixture recov
  • Network accessline 82
    - **Source**: [release notes dsh-v0.1.2-alpha.5](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.5) ("Fix an issue where upgrading from 0.1.1-rc.2 or 0.1.2-alpha.3 could prevent the app from starting or make se

.dsh/skills/plugin-upgrade/references/v0.1.2-rc.1.md

  • Network accessline 15
    > This file is a curated list of plugin-relevant changes, not a complete API diff. > > Upstream comparison: [dsh-v0.1.2-alpha.5...dsh-v0.1.2-rc.1](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.2-alpha.5...dsh-v0.1.2-rc.1)
  • Network accessline 16
    > > Upstream comparison: [dsh-v0.1.2-alpha.5...dsh-v0.1.2-rc.1](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.2-alpha.5...dsh-v0.1.2-rc.1) > · Release Notes: [dsh-v0.1.2-rc.1](https://github.com/deepseek-ai/deepseek-harne
  • Network accessline 17
    > Upstream comparison: [dsh-v0.1.2-alpha.5...dsh-v0.1.2-rc.1](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.2-alpha.5...dsh-v0.1.2-rc.1)
  • Network accessline 18
    > · Release Notes: [dsh-v0.1.2-rc.1](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-rc.1)

.dsh/skills/plugin-upgrade/references/v0.1.3-alpha.1.md

  • Network accessline 60
    ~95/~94) out of a 6-session real-history batch (same writer family, all refused). Full   evidence chain (build identity, CDP timing, raw refusal strings, three-leg attribution):   [upstream-0.1.3 adaptation audit, pinned](https://raw.github
  • Network accessline 61
    evidence chain (build identity, CDP timing, raw refusal strings, three-leg attribution):   [upstream-0.1.3 adaptation audit, pinned](https://raw.githubusercontent.com/alex04130/dsh-forge/8ab0b148b2382b2a33158039fd10d7625b4e145a/docs/audits/
  • Network accessline 62
    [upstream-0.1.3 adaptation audit, pinned](https://raw.githubusercontent.com/alex04130/dsh-forge/8ab0b148b2382b2a33158039fd10d7625b4e145a/docs/audits/upstream-0.1.3-adaptation-audit.md)
  • Network accessline 124
    intentionally narrow, treat as a reproduction record pending wider confirmation.   Evidence context:   [upstream-0.1.3 adaptation audit, pinned](https://raw.githubusercontent.com/alex04130/dsh-forge/8ab0b148b2382b2a33158039fd10d7625b4e145a/
  • Network accessline 126
    [upstream-0.1.3 adaptation audit, pinned](https://raw.githubusercontent.com/alex04130/dsh-forge/8ab0b148b2382b2a33158039fd10d7625b4e145a/docs/audits/upstream-0.1.3-adaptation-audit.md).
  • Network accessline 155
    - **Verification**: `pnpm install` completes; `require('fs-ext')` loads and the flock callback   path warns once instead of throwing; `dsh web --no-open` boots and answers HTTP 200. - **Source**: [dsh-v0.1.3-alpha.1](https://github.com/deep
  • Network accessline 156
    path warns once instead of throwing; `dsh web --no-open` boots and answers HTTP 200. - **Source**: [dsh-v0.1.3-alpha.1](https://github.com/deepseek-ai/deepseek-harness/tree/dsh-v0.1.3-alpha.1)   (`d347e70`): `packages/session/session-persis
  • Network accessline 157
    - **Source**: [dsh-v0.1.3-alpha.1](https://github.com/deepseek-ai/deepseek-harness/tree/dsh-v0.1.3-alpha.1)
  • Network accessline 168
    - **Applies to**: host deployments and profile wrappers behind corporate proxies (or that   set `http_proxy`/`https_proxy`/`all_proxy`/`no_proxy`); plugins issuing outbound   `fetch()`/`globalThis.fetch` requests inside the host tree; launc
  • Network accessline 169
    set `http_proxy`/`https_proxy`/`all_proxy`/`no_proxy`); plugins issuing outbound   `fetch()`/`globalThis.fetch` requests inside the host tree; launcher scripts and CI that   previously set `NODE_USE_ENV_PROXY=1`.
  • Network accessline 170
    `fetch()`/`globalThis.fetch` requests inside the host tree; launcher scripts and CI that
  • Network accessline 177
    (`apps/cli/src/profile-boot.ts` at `dsh-v0.1.3-alpha.1`); the launcher gains the new   runtime dependency `@deepseek-ai/dsh-http-proxy`. Effect: outbound traffic on   `fetch()`/`globalThis.fetch` (LLM requests, web_search, MCP over HTTP, sa
  • Network accessline 178
    runtime dependency `@deepseek-ai/dsh-http-proxy`. Effect: outbound traffic on   `fetch()`/`globalThis.fetch` (LLM requests, web_search, MCP over HTTP, sandbox SDK   lanes) honors the proxy environment — lowercase variable names win, `ALL_PR
  • Network accessline 179
    `fetch()`/`globalThis.fetch` (LLM requests, web_search, MCP over HTTP, sandbox SDK
  • Network accessline 203
    is honored, while the same name in the invoking directory's `.env` makes the launch   refuse with the bootstrap-only message. - **Source**: [alpha.1 `dsh-http-proxy` README (resolution order, loopback, invalid-value behavior, child-env note
  • Network accessline 205
    - **Source**: [alpha.1 `dsh-http-proxy` README (resolution order, loopback, invalid-value behavior, child-env notes)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.3-alpha.1/packages/util/http-proxy/README.md) · [alpha.1 `pr
  • Network accessline 244
    agentLoop.create(...)` runs a full turn and its log appends persist; using a closed   handle rejects with `SessionHandleClosedError`. - **Source**: [alpha.1 `session-persistence/src/handle.ts` (new)](https://github.com/deepseek-ai/deepseek-
  • Network accessline 246
    - **Source**: [alpha.1 `session-persistence/src/handle.ts` (new)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.3-alpha.1/packages/session/session-persistence/src/handle.ts) · [alpha.1 `session-persistence/src/errors.ts`](ht
  • Network accessline 275
    through the official APIs; a raw-artifact reader using the catalog accepts current   artifacts and deterministically reports the refusal cases in DSH-0.1.3-A1-01/A1-02. - **Source**: [alpha.1 `session-format-catalog/src/current.ts` (new)](h
  • Network accessline 277
    - **Source**: [alpha.1 `session-format-catalog/src/current.ts` (new)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.3-alpha.1/packages/session/session-format-catalog/src/current.ts) · [released session-format migrations note
  • Network accessline 288
    - **Migration recipe**: use the source-launch host recipe — `git fetch <tag>` → clean → build → `pnpm dsh web`, keeping the global npm install as the rollback. - **Verification**: `-V` prints the tag version; the web client boots on the sou
  • Network accessline 290
    - **Source**: npm registry probe 2026-09-04 ([@deepseek-ai/dsh versions](https://www.npmjs.com/package/@deepseek-ai/dsh?activeTab=versions)); real-host source-launched verification the same day.
  • Network accessline 301
    - **Migration recipe**: no code change required by the edge; re-verify slot placement at runtime on the source-launched host (paste image/text, open preview/viewer) before declaring support. - **Verification**: manual runtime pass on the so
  • Network accessline 303
    - **Source**: [0.1.3-alpha.1 release notes](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.3-alpha.1) ("Web 支持上传任意类型的通用文件…", "`read_image` … 在 Web 工具卡中直接渲染图片"); first-hand paste-input verification 2026-09-04.

.dsh/skills/plugin-upgrade/references/v0.1.3-alpha.2.md

  • Network accessline 15
    > This file is a curated list of plugin-relevant changes, not a complete API diff. > > Upstream comparison: [dsh-v0.1.3-alpha.1...dsh-v0.1.3-alpha.2](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.3-alpha.1...dsh-v0.1.3-al
  • Network accessline 16
    > > Upstream comparison: [dsh-v0.1.3-alpha.1...dsh-v0.1.3-alpha.2](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.3-alpha.1...dsh-v0.1.3-alpha.2) > · Release Notes: [dsh-v0.1.3-alpha.2](https://github.com/deepseek-ai/deeps
  • Network accessline 17
    > Upstream comparison: [dsh-v0.1.3-alpha.1...dsh-v0.1.3-alpha.2](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.3-alpha.1...dsh-v0.1.3-alpha.2)
  • Network accessline 18
    > · Release Notes: [dsh-v0.1.3-alpha.2](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.3-alpha.2)
  • Network accessline 80
    suffix after it (inspect the assembled system prompt); the old-key row shape is   confirmed gone, not silently ignored. - **Source**: [alpha.2 persona plugin source](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.3-alpha.2/pa
  • Network accessline 82
    - **Source**: [alpha.2 persona plugin source](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.3-alpha.2/packages/preset/persona/src/index.ts) · [alpha.1 persona plugin source (old `text` key)](https://github.com/deepseek-ai/de
  • Network accessline 112
    normal exit and kill escalation; UI/log surfaces that previously printed the pid show   the new identity or nothing. - **Source**: [alpha.2 subprocess types (no `SubprocessHandle.pid`; terminal handle keeps it)](https://github.com/deepseek-
  • Network accessline 114
    - **Source**: [alpha.2 subprocess types (no `SubprocessHandle.pid`; terminal handle keeps it)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.3-alpha.2/packages/subprocess/subprocess/src/types.ts) · [alpha.1 subprocess types 
  • Network accessline 142
    real edit round-trip through each affected profile's default editor tool succeeds;   sdk-minimal / web-minimal behavior is unchanged where the release notes promise it. - **Source**: [alpha.2 base bundle patch (row removed)](https://github.
  • Network accessline 144
    - **Source**: [alpha.2 base bundle patch (row removed)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.3-alpha.2/packages/bundle/base/cordis.patch.yml) · [alpha.1 base bundle patch (row present)](https://github.com/deepseek-a
  • Network accessline 172
    `node -e "import('@deepseek-ai/dsh/lib/bin.js').then(m => console.log(typeof m.runCli))"`   check prints `function` without running the CLI. - **Source**: [alpha.2 CLI entry](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.3-a
  • Network accessline 174
    - **Source**: [alpha.2 CLI entry](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.3-alpha.2/apps/cli/src/bin.ts) · [alpha.1 CLI entry (top-level dispatch)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.3-alpha.
  • Network accessline 203
    passes; any duplicate-instance symptoms (`instanceof` failures, two copies in the   dependency tree) are gone. - **Source**: [alpha.2 llm-pi-ai package.json (`^0.85.1`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.3-alpha.
  • Network accessline 205
    - **Source**: [alpha.2 llm-pi-ai package.json (`^0.85.1`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.3-alpha.2/packages/llm/llm-pi-ai/package.json) · [alpha.1 llm-pi-ai package.json (`^0.84.2`)](https://github.com/deepse

.dsh/skills/plugin-upgrade/references/v0.1.5-alpha.1.md

  • Network accessline 15
    > This file is a curated list of plugin-relevant changes, not a complete API diff. > > Upstream comparison: [dsh-v0.1.3-alpha.2...dsh-v0.1.5-alpha.1](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.3-alpha.2...dsh-v0.1.5-al
  • Network accessline 16
    > > Upstream comparison: [dsh-v0.1.3-alpha.2...dsh-v0.1.5-alpha.1](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.3-alpha.2...dsh-v0.1.5-alpha.1) > · Release Notes: [dsh-v0.1.5-alpha.1](https://github.com/deepseek-ai/deeps
  • Network accessline 17
    > Upstream comparison: [dsh-v0.1.3-alpha.2...dsh-v0.1.5-alpha.1](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.3-alpha.2...dsh-v0.1.5-alpha.1)
  • Network accessline 18
    > · Release Notes: [dsh-v0.1.5-alpha.1](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.5-alpha.1)
  • Network accessline 92
    `packages/session/session-persistence-jsonl/tests/{v2-ptc-migration,v2-system-migration,migration-refusal,v3-event-admission}.spec.ts`   are the behavior baseline. - **Source**: [alpha.1 `session-format-v2-to-v3` README (single specificatio
  • Network accessline 94
    - **Source**: [alpha.1 `session-format-v2-to-v3` README (single specification)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/packages/session/session-format-v2-to-v3/README.md) · [alpha.1 `SESSION_FORMAT_VERSION =
  • Network accessline 127
    boot work; create/resume with and without `parentAgent` shows the expected ownership   (continuable subagents are not scheduled as roots). - **Source**: [alpha.1 `core/agent/src/index.ts` (no accessor; new `AgentSetup`, `parentAgent`, expli
  • Network accessline 129
    - **Source**: [alpha.1 `core/agent/src/index.ts` (no accessor; new `AgentSetup`, `parentAgent`, explicit root)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/packages/core/agent/src/index.ts) · [alpha.2 `core/agent
  • Network accessline 163
    next-turn/next-step boundary; a client built on the `inbox` projection updates after the   splice commits (not on the raw event) and behaves correctly when no loop is active. - **Source**: [alpha.1 `agent-loop/src/inbox.ts` (driver-owned pr
  • Network accessline 165
    - **Source**: [alpha.1 `agent-loop/src/inbox.ts` (driver-owned projection, `ReactLoopInbox`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/packages/core/agent-loop/src/inbox.ts) · [alpha.2 `core/agent/src/inbox.ts
  • Network accessline 204
    rejected; a header with `tools: []` is rejected; a client parsing wire events with the   new opaque fields handles unknown-field errors deterministically. - **Source**: [alpha.1 `core/session/src/surface.ts`](https://github.com/deepseek-ai/
  • Network accessline 206
    - **Source**: [alpha.1 `core/session/src/surface.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/packages/core/session/src/surface.ts) · [alpha.1 `core/session/src/types.ts`](https://github.com/deepseek-ai/deeps
  • Network accessline 231
    `source.plugin: 'tools-ptc'` and `<parent>:ptc:<n>` ids; a reader handles both old and   new generations without dropping rows. - **Source**: [alpha.1 `core/session/src/known-event-types.ts`](https://github.com/deepseek-ai/deepseek-harness/
  • Network accessline 233
    - **Source**: [alpha.1 `core/session/src/known-event-types.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/packages/core/session/src/known-event-types.ts) · [alpha.1 `core/tools/src/types.ts` (renamed event keys
  • Network accessline 259
    surface-node calculation; a pre-upgrade checkpoint row for `contextBreakdown` is   discarded/rebuilt rather than crashing the boot. - **Source**: [alpha.1 `token-meter/src/estimate.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/d
  • Network accessline 261
    - **Source**: [alpha.1 `token-meter/src/estimate.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/packages/llm/token-meter/src/estimate.ts) · [alpha.2 `token-meter/src/estimate.ts` (old exports)](https://github.c
  • Network accessline 303
    the cached prefix is preserved; an empty render clears active system nodes; a replace   that targets node 0 without `system/message` is rejected. - **Source**: [alpha.1 `agent-loop/src/runtime-context.ts` (`SystemPromptProjection`)](https:/
  • Network accessline 305
    - **Source**: [alpha.1 `agent-loop/src/runtime-context.ts` (`SystemPromptProjection`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/packages/core/agent-loop/src/runtime-context.ts) · [alpha.1 `llm/src/message.ts` 
  • Network accessline 327
    an Agent, or with a different Agent, throws `must carry its Agent directly`; gateway   tests read `agentId` from the context. - **Source**: [alpha.1 `api/remotes/src/index.ts` (carrier check)](https://github.com/deepseek-ai/deepseek-harness
  • Network accessline 329
    - **Source**: [alpha.1 `api/remotes/src/index.ts` (carrier check)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/packages/api/remotes/src/index.ts) · [alpha.1 `api/gateway/src/index.ts` (`agentId`)](https://github.
  • Network accessline 352
    `dsh plugin --profile DESKTOP …` all exit 1 with the message; a renamed profile starts   normally. - **Source**: [alpha.1 `apps/cli/src/args.ts` (`rejectElectronProfile`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alph
  • Network accessline 354
    - **Source**: [alpha.1 `apps/cli/src/args.ts` (`rejectElectronProfile`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/apps/cli/src/args.ts) · [alpha.1 `apps/cli/tests/args.spec.ts`](https://github.com/deepseek-ai/
  • Network accessline 381
    and starts; running it again refuses with EEXIST; an unknown template or a built-in name   fails before writing; `--dump-config` with the flag prints without starting. - **Source**: [alpha.1 `apps/cli/reference/README.md` (flag behavior)](h
  • Network accessline 383
    - **Source**: [alpha.1 `apps/cli/reference/README.md` (flag behavior)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/apps/cli/reference/README.md) · [alpha.1 `apps/cli/src/profile-boot.ts` (`initializeProfileFromDe
  • Network accessline 425
    window without buffering the file; `/api/file` returns an image with the security   headers and rejects non-images with the mapped status. - **Source**: [alpha.1 `api/workspace-files/README.md`](https://github.com/deepseek-ai/deepseek-harne
  • Network accessline 427
    - **Source**: [alpha.1 `api/workspace-files/README.md`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/packages/api/workspace-files/README.md) · [alpha.1 `session-controller/src/media-references.ts` (`/api/file`)](h
  • Network accessline 452
    - **Verification**: activating/pausing a goal emits the event through the Remote lane; a   Remote client receives it and `goals.get` returns the expected snapshot. - **Source**: [alpha.1 `api/remotes/src/remote-events.ts`](https://github.co
  • Network accessline 454
    - **Source**: [alpha.1 `api/remotes/src/remote-events.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/packages/api/remotes/src/remote-events.ts) · [alpha.1 `extensions/tool-cordis/src/api-catalog.ts`](https://gi
  • Network accessline 488
    session persistence still takes an exclusive lock (two writers on one session fail as   before); CI resolves `native/system` paths. - **Source**: [alpha.1 `session-persistence-jsonl/package.json` (no `fs-ext`)](https://github.com/deepseek-a
  • Network accessline 490
    - **Source**: [alpha.1 `session-persistence-jsonl/package.json` (no `fs-ext`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/packages/session/session-persistence-jsonl/package.json) · [alpha.1 `session-persistence-
  • Network accessline 529
    `data-rightbar-col` present and no `data-selected`; switching sessions does not leak   right-column state; narrow layouts respect the new 400px centre minimum. - **Source**: [alpha.1 `ui-layout/src/client/index.ts` (`rightbar` seat)](https:
  • Network accessline 531
    - **Source**: [alpha.1 `ui-layout/src/client/index.ts` (`rightbar` seat)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/packages/client/ui-layout/src/client/index.ts) · [alpha.1 `ui-layout/src/client/columns.ts`](h
  • Network accessline 571
    prompt update renders as a "system prompt update" row rather than a duplicate; the   deliverables turn-tail has no show-in-folder branch. - **Source**: [alpha.1 `ui-commands/src/client/contract.ts`](https://github.com/deepseek-ai/deepseek-h
  • Network accessline 573
    - **Source**: [alpha.1 `ui-commands/src/client/contract.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/packages/client/ui-commands/src/client/contract.ts) · [alpha.1 `ui-conversation/src/client/input/submission
  • Network accessline 619
    changes; a carrier without `webServer` still loads connection/modules; the new   header-corner slot renders without breaking header padding. - **Source**: [alpha.1 `client/resources/src/client/contract.ts`](https://github.com/deepseek-ai/de
  • Network accessline 621
    - **Source**: [alpha.1 `client/resources/src/client/contract.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/packages/client/resources/src/client/contract.ts) · [alpha.1 `ui-sidebar-right/src/client/contract/slo
  • Network accessline 648
    does not invoke an OS opener; a custom `openFile` implementation compiles with the new   signature; tool rows show the line-aware link. - **Source**: [alpha.1 `ui-chat/src/client/contract/slots.ts` (`openFile` signature)](https://github.com
  • Network accessline 650
    - **Source**: [alpha.1 `ui-chat/src/client/contract/slots.ts` (`openFile` signature)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/packages/client/ui-chat/src/client/contract/slots.ts) · [alpha.1 `ui-chat/src/clie
  • Network accessline 675
    `tests/model-selection-settings.spec.ts` and `tests/continuation-inheritance.spec.ts`   are the behavior baseline. - **Source**: [alpha.1 `tool-subagent/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/
  • Network accessline 677
    - **Source**: [alpha.1 `tool-subagent/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/packages/subagent/tool-subagent/src/index.ts) · [alpha.2 `tool-subagent/src/index.ts`](https://github.com/deepseek-
  • Network accessline 709
    no local apps; a permission or I/O error during project-root discovery surfaces instead   of loading an ancestor's instructions. - **Source**: [alpha.1 `directory-picker-auto/src/resolve.ts` (required `ssh` fact)](https://github.com/deepsee
  • Network accessline 711
    - **Source**: [alpha.1 `directory-picker-auto/src/resolve.ts` (required `ssh` fact)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/packages/host/directory-picker-auto/src/resolve.ts) · [alpha.1 `directory-picker-au
  • Network accessline 722
    - **Action level**: required-if-hit - **Symptoms**: after the in-place upgrade the browser reports `failed to import loader entry <id>`: the combined `/plugins/??…` script executes but never registers modules the boot roster lists — the fir
  • Network accessline 723
    - **Symptoms**: after the in-place upgrade the browser reports `failed to import loader entry <id>`: the combined `/plugins/??…` script executes but never registers modules the boot roster lists — the first unregistered entry is named (an i
  • Network accessline 724
    - **Migration recipe**: attribute before touching plugins — fetch one NEW bundle module and one OLD module at the same rev; old 200 + new 404 pins the gap to the host's artifact/rev set, not to the plugin. Then restart the host once: the ob
  • Network accessline 726
    - **Source**: real-host probes 2026-09-09 (HTTP 200/404 comparison at the same rev; npm-tree artifact file checks); [discussion #5999](https://github.com/deepseek-ai/deepseek-harness/discussions/5999) (comment [18371079](https://github.com/

.dsh/skills/plugin-upgrade/references/v0.1.5-alpha.2.md

  • Network accessline 15
    > This file is a curated list of plugin-relevant changes, not a complete API diff. > > Upstream comparison: [dsh-v0.1.5-alpha.1...dsh-v0.1.5-alpha.2](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.5-alpha.1...dsh-v0.1.5-al
  • Network accessline 16
    > > Upstream comparison: [dsh-v0.1.5-alpha.1...dsh-v0.1.5-alpha.2](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.5-alpha.1...dsh-v0.1.5-alpha.2) > · Release Notes: [dsh-v0.1.5-alpha.2](https://github.com/deepseek-ai/deeps
  • Network accessline 17
    > Upstream comparison: [dsh-v0.1.5-alpha.1...dsh-v0.1.5-alpha.2](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.5-alpha.1...dsh-v0.1.5-alpha.2)
  • Network accessline 18
    > · Release Notes: [dsh-v0.1.5-alpha.2](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.5-alpha.2)
  • Network accessline 100
    a `reload` reference no longer compiles; `createFileResourceProvider(remote, changes)`   compiles with the two-argument call. - **Source**: [alpha.2 `api/workspace-files/src/index.ts` (scope lookup, `readAll`/`readRelated`)](https://github.
  • Network accessline 102
    - **Source**: [alpha.2 `api/workspace-files/src/index.ts` (scope lookup, `readAll`/`readRelated`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/api/workspace-files/src/index.ts) · [alpha.2 `client/types.t
  • Network accessline 132
    (no truncated content); the deployment's backend read policy is recorded in the   migration notes. - **Source**: [alpha.2 `api/workspace-files/src/index.ts` (`maxFileBytes`, unconfined `locateFile`)](https://github.com/deepseek-ai/deepseek-
  • Network accessline 134
    - **Source**: [alpha.2 `api/workspace-files/src/index.ts` (`maxFileBytes`, unconfined `locateFile`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/api/workspace-files/src/index.ts) · [alpha.2 `api/workspac
  • Network accessline 160
    conversation renders at the reserved `conversation` key; selecting an unregistered key   throws and leaves the previous panel selected; zero registrations render no list. - **Source**: [alpha.2 `client/ui-layout/src/client/index.ts` (`main`
  • Network accessline 162
    - **Source**: [alpha.2 `client/ui-layout/src/client/index.ts` (`main` keyed slot)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/client/ui-layout/src/client/index.ts) · [alpha.1 `client/ui-layout/src/clien
  • Network accessline 190
    subagent no longer receives guidance for the removed tools (see   [DSH-0.1.5-A2-07](v0.1.5-alpha.2.md)). - **Source**: [alpha.2 `presets/minimal/agent.cordis.yml` (single-tool composition)](https://github.com/deepseek-ai/deepseek-harness/bl
  • Network accessline 192
    - **Source**: [alpha.2 `presets/minimal/agent.cordis.yml` (single-tool composition)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/preset/agent-presets/presets/minimal/agent.cordis.yml) · [alpha.2 `bundle/
  • Network accessline 222
    `feedback/record` entry; the `subagentCatalog` projection populates after a subagent is   created. - **Source**: [alpha.2 `core/session/src/known-event-types.ts` (two new events)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.
  • Network accessline 224
    - **Source**: [alpha.2 `core/session/src/known-event-types.ts` (two new events)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/core/session/src/known-event-types.ts) · [alpha.2 `session-persistence/src/sto
  • Network accessline 250
    errors; a request for a broken model fails with `INVALID_CONFIG` while a healthy model   succeeds; a provider-level `error` renders in the settings surface. - **Source**: [alpha.2 `llm-pi-ai/src/config.ts` (`piProvider?`, `modelErrors`, `as
  • Network accessline 252
    - **Source**: [alpha.2 `llm-pi-ai/src/config.ts` (`piProvider?`, `modelErrors`, `assertServiceable`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/llm/llm-pi-ai/src/config.ts) · [alpha.2 `llm-pi-ai/src/ca
  • Network accessline 276
    tools; an unfiltered agent still gets the full guidance; tool schemas are unchanged   across scopes. - **Source**: [alpha.2 `fs/tool-fs/src/read.ts` (scope-aware guidance)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alp
  • Network accessline 278
    - **Source**: [alpha.2 `fs/tool-fs/src/read.ts` (scope-aware guidance)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/fs/tool-fs/src/read.ts) · [alpha.2 `fs/tool-fs-search/src/grep.ts`](https://github.com/
  • Network accessline 306
    the default application; the reveal action opens the containing folder with the file   selected on macOS/Windows/Linux. - **Source**: [alpha.2 `fs/tool-present/README.md`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alph
  • Network accessline 308
    - **Source**: [alpha.2 `fs/tool-present/README.md`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/fs/tool-present/README.md) · [alpha.2 `fs/tool-present/src/index.ts`](https://github.com/deepseek-ai/deepse
  • Network accessline 330
    - **Verification**: the renamed package resolves and the right sidebar renders Markdown,   code, HTML, PDF and image previews; the old package name resolves nowhere. - **Source**: [alpha.2 `client/ui-sidebar-documentpreview/package.json` (r
  • Network accessline 332
    - **Source**: [alpha.2 `client/ui-sidebar-documentpreview/package.json` (renamed)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/client/ui-sidebar-documentpreview/package.json) · [alpha.2 `client/ui-sideba
  • Network accessline 361
    `appendChunkedList`/`iterateChunkedList`; `npm ls fs-ext` is empty in a fresh install;   the Agent Teams profile only appears after an explicit add. - **Source**: [alpha.2 `util/chunked-list/src/index.ts`](https://github.com/deepseek-ai/dee
  • Network accessline 363
    - **Source**: [alpha.2 `util/chunked-list/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/util/chunked-list/src/index.ts) · [alpha.2 `fs/tool-present/package.json`](https://github.com/deepseek
  • Network accessline 383
    - **Verification**: a server that repeats a cursor produces the documented rejection   message and the session continues with the previous tool set. - **Source**: [alpha.2 headless MCP pagination expectation](https://github.com/deepseek-ai/
  • Network accessline 385
    - **Source**: [alpha.2 headless MCP pagination expectation](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/apps/cli/tests/profiles/headless/tests/mcp-pagination.expected.e2e.ts) · [alpha.2 expected stderr cause](htt
  • Network accessline 407
    - **Verification**: the status document lists `latestReleasedVersion: 3` and the evidence   tag; the v2-to-v3 README no longer carries the "not released" limitation. - **Source**: [alpha.2 `docs/session-format-status.md` (new)](https://gith
  • Network accessline 409
    - **Source**: [alpha.2 `docs/session-format-status.md` (new)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/docs/session-format-status.md) · [alpha.2 `session-format-v2-to-v3/README.md` (limitation removed)](https:
  • Network accessline 442
    typecheck fails on the old `PropsRuntime<'rightbar'>` usage and on `s.sidebar`; a root-level   panel renders with no Session. - **Source**: [alpha.2 `ui-layout/src/client/index.ts` (`main`/`rightbar` root, `usePanelInfo`)](https://github.co
  • Network accessline 444
    - **Source**: [alpha.2 `ui-layout/src/client/index.ts` (`main`/`rightbar` root, `usePanelInfo`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/client/ui-layout/src/client/index.ts) · [alpha.2 `ui-layout/sr
  • Network accessline 466
    - **Verification**: typecheck passes without `reload`; the old reference fails; a refresh   through the replacement path updates the rendered value. - **Source**: [alpha.2 `client/resources/src/client/contract.ts` (no `reload`)](https://git
  • Network accessline 468
    - **Source**: [alpha.2 `client/resources/src/client/contract.ts` (no `reload`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/client/resources/src/client/contract.ts) · [alpha.1 `client/resources/src/clien
  • Network accessline 493
    - **Verification**: no export named `DocumentFileIcon` resolves; the icon renders for a known   extension and honours the colour variable; the deep import compiles from the new package. - **Source**: [alpha.2 `ui-primitives/src/index.ts`](h
  • Network accessline 495
    - **Source**: [alpha.2 `ui-primitives/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/client/ui-primitives/src/index.ts) · [alpha.2 `ui-primitives/src/FileTypeIcon.tsx`](https://github.com/dee
  • Network accessline 520
    roles present; dropping a tab shows the dashed card with `labels.dropZone[zone]`; the sole   guide chip has no close affordance. - **Source**: [alpha.2 `ui-dockkit/src/contract/adapter.ts` (`dropZone`)](https://github.com/deepseek-ai/deepse
  • Network accessline 522
    - **Source**: [alpha.2 `ui-dockkit/src/contract/adapter.ts` (`dropZone`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/client/ui-dockkit/src/contract/adapter.ts) · [alpha.2 `ui-dockkit/src/components/rend
  • Network accessline 550
    dialog and records an entry with a category; `acknowledge()` shows the toast; a stale   `rate(...)` reference fails to compile. - **Source**: [alpha.2 `ui-message-feedback/src/client/slots.ts`](https://github.com/deepseek-ai/deepseek-harnes
  • Network accessline 552
    - **Source**: [alpha.2 `ui-message-feedback/src/client/slots.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/client/ui-message-feedback/src/client/slots.ts) · [alpha.2 `ui-message-feedback/src/client/in
  • Network accessline 577
    Conversation even when a custom panel was selected; `forkSession` opens the fork;   re-selecting the same Session still resets the panel. - **Source**: [alpha.2 `ui-workspace/src/client/navigation.ts`](https://github.com/deepseek-ai/deepsee
  • Network accessline 579
    - **Source**: [alpha.2 `ui-workspace/src/client/navigation.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/client/ui-workspace/src/client/navigation.ts) · [alpha.2 `ui-workspace/src/client/index.ts` (in
  • Network accessline 604
    fork Session; a presented file renders as a deliverable card and opens through   `openPresented`; "Files changed" no longer lists presented-but-untouched files. - **Source**: [alpha.2 `ui-chat/src/client/contract/slots.ts` (`forClosing(owne
  • Network accessline 606
    - **Source**: [alpha.2 `ui-chat/src/client/contract/slots.ts` (`forClosing(owner, sessionId)`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/client/ui-chat/src/client/contract/slots.ts) · [alpha.2 `ui-del
  • Network accessline 634
    the built `lib/client.js` still resolves its bundled imports; a standalone consumer that   needs React declares it itself. - **Source**: [alpha.2 `packages/client/AGENTS.md` (rules 3 and 5)](https://github.com/deepseek-ai/deepseek-harness/b
  • Network accessline 636
    - **Source**: [alpha.2 `packages/client/AGENTS.md` (rules 3 and 5)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/client/AGENTS.md) · [alpha.2 `ui-primitives/package.json` (empty `dependencies`)](https://g
  • Network accessline 662
    above the cap fails with the Host's `too-large` error; HTML preview scripts execute inside   the sandboxed iframe. - **Source**: [alpha.2 `ui-sidebar-documentpreview/src/client/document/registry.ts`](https://github.com/deepseek-ai/deepseek-
  • Network accessline 664
    - **Source**: [alpha.2 `ui-sidebar-documentpreview/src/client/document/registry.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/client/ui-sidebar-documentpreview/src/client/document/registry.ts) · [alph
  • Network accessline 681
    - **Verification**: invoking the decorated command opens the UI without appending a user   message; attaching a file to that invocation does not produce the submit-path rejection. - **Source**: [alpha.2 `ui-commands/src/client/contract.ts` 
  • Network accessline 683
    - **Source**: [alpha.2 `ui-commands/src/client/contract.ts` (`ActionSpec`, `CommandUiSpec`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/client/ui-commands/src/client/contract.ts) · [alpha.2 `ui-commands
  • Network accessline 708
    returns the documented `session-not-found` error; the subpath imports compile; the package   installs with its new `zod` dependency. - **Source**: [alpha.2 `feedback/command-feedback/package.json` (subpath exports, `zod`)](https://github.co
  • Network accessline 710
    - **Source**: [alpha.2 `feedback/command-feedback/package.json` (subpath exports, `zod`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/feedback/command-feedback/package.json) · [alpha.2 `feedback/command-
  • Network accessline 739
    seeded page; the sole guide has no close route; a corner whose occupant renders nothing   collapses so the tool area reaches the edge. - **Source**: [alpha.2 `ui-sidebar-right/src/client/tab-registry.ts` (no `description`)](https://github.c
  • Network accessline 741
    - **Source**: [alpha.2 `ui-sidebar-right/src/client/tab-registry.ts` (no `description`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/client/ui-sidebar-right/src/client/tab-registry.ts) · [alpha.2 `ui-sid

.dsh/skills/plugin-upgrade/references/v0.1.5-rc.1.md

  • Network accessline 15
    > This file is a curated list of plugin-relevant changes, not a complete API diff. > > Upstream comparison: [dsh-v0.1.5-alpha.2...dsh-v0.1.5-rc.1](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.5-alpha.2...dsh-v0.1.5-rc.1)
  • Network accessline 16
    > > Upstream comparison: [dsh-v0.1.5-alpha.2...dsh-v0.1.5-rc.1](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.5-alpha.2...dsh-v0.1.5-rc.1) > · Release Notes: [dsh-v0.1.5-rc.1](https://github.com/deepseek-ai/deepseek-harne
  • Network accessline 17
    > Upstream comparison: [dsh-v0.1.5-alpha.2...dsh-v0.1.5-rc.1](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.5-alpha.2...dsh-v0.1.5-rc.1)
  • Network accessline 18
    > · Release Notes: [dsh-v0.1.5-rc.1](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.5-rc.1)
  • Network accessline 58
    `agent-default-model` row; open a fresh Session and confirm the model id in its header,   then run one real turn. - **Source**: [rc.1 `packages/bundle/base/cordis.patch.yml`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-r
  • Network accessline 60
    - **Source**: [rc.1 `packages/bundle/base/cordis.patch.yml`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-rc.1/packages/bundle/base/cordis.patch.yml) · [rc.1 release notes](https://github.com/deepseek-ai/deepseek-harness/
  • Network accessline 87
    turn on an `in-history` model appends a changed system prompt after the cached history   instead of rewriting the leading system message. - **Source**: [rc.1 `packages/llm/llm-deepseek/src/index.ts`](https://github.com/deepseek-ai/deepseek-
  • Network accessline 89
    - **Source**: [rc.1 `packages/llm/llm-deepseek/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-rc.1/packages/llm/llm-deepseek/src/index.ts) · [rc.1 `packages/llm/llm-deepseek/README.md`](https://github.com/dee
  • Network accessline 105
    return — the reading position survives; a renderer that never scrolls does not disturb   the shared body's behavior. - **Source**: [rc.1 `packages/client/ui-sidebar-documentpreview/src/client/document/contract.ts`](https://github.com/deepse
  • Network accessline 107
    - **Source**: [rc.1 `packages/client/ui-sidebar-documentpreview/src/client/document/contract.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-rc.1/packages/client/ui-sidebar-documentpreview/src/client/document/contract.t
  • Network accessline 126
    switch the UI language — title and description update without a reload; a crowded guide   degrades to titles only. - **Source**: [rc.1 `packages/client/ui-sidebar-right/src/client/tab-registry.ts`](https://github.com/deepseek-ai/deepseek-ha
  • Network accessline 128
    - **Source**: [rc.1 `packages/client/ui-sidebar-right/src/client/tab-registry.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-rc.1/packages/client/ui-sidebar-right/src/client/tab-registry.ts) · [rc.1 `packages/client/ui
  • Network accessline 157
    local patches and are reported against the `0.1.5-alpha.1` edge cards; a deployment at or   above `0.1.5-alpha.1` must account for them until upstream fixes them. - **Source**: [rc.1 compare](https://github.com/deepseek-ai/deepseek-harness/
  • Network accessline 159
    - **Source**: [rc.1 compare](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.5-alpha.2...dsh-v0.1.5-rc.1) · [rc.1 `packages/core/session/src/types.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-rc.1/pa

.dsh/skills/plugin-upgrade/references/v0.1.5-rc.2.md

  • Network accessline 15
    > This file is a curated list of plugin-relevant changes, not a complete API diff. > > Upstream comparison: [dsh-v0.1.5-rc.1...dsh-v0.1.5-rc.2](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.5-rc.1...dsh-v0.1.5-rc.2)
  • Network accessline 16
    > > Upstream comparison: [dsh-v0.1.5-rc.1...dsh-v0.1.5-rc.2](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.5-rc.1...dsh-v0.1.5-rc.2) > · Release Notes: [dsh-v0.1.5-rc.2](https://github.com/deepseek-ai/deepseek-harness/rel
  • Network accessline 17
    > Upstream comparison: [dsh-v0.1.5-rc.1...dsh-v0.1.5-rc.2](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.5-rc.1...dsh-v0.1.5-rc.2)
  • Network accessline 18
    > · Release Notes: [dsh-v0.1.5-rc.2](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.5-rc.2)
  • Network accessline 89
    the dialog; clicking an unrecorded rating opens the dialog and writes nothing until   Submit; no stale import of `MessageFeedbackToggleResult` remains. - **Source**: [rc.2 `packages/client/ui-message-feedback/src/client/slots.ts`](https://g
  • Network accessline 91
    - **Source**: [rc.2 `packages/client/ui-message-feedback/src/client/slots.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-rc.2/packages/client/ui-message-feedback/src/client/slots.ts) · [rc.2 `.../src/client/index.ts`](
  • Network accessline 117
    the draft, shows the warning toast for its hold window, and closes it through   `dismissFailure` without closing the modal. - **Source**: [rc.2 `packages/client/ui-message-feedback/src/client/MessageFeedbackActions.tsx`](https://github.com/
  • Network accessline 119
    - **Source**: [rc.2 `packages/client/ui-message-feedback/src/client/MessageFeedbackActions.tsx`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-rc.2/packages/client/ui-message-feedback/src/client/MessageFeedbackActions.tsx)
  • Network accessline 152
    `dsh-code-icon-` id; `--dsh-file-type-icon-color` still tints a traditional glyph such   as the generic file. - **Source**: [rc.2 `packages/client/ui-primitives/src/CodeFileIcon.tsx`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh
  • Network accessline 154
    - **Source**: [rc.2 `packages/client/ui-primitives/src/CodeFileIcon.tsx`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-rc.2/packages/client/ui-primitives/src/CodeFileIcon.tsx) · [rc.2 `src/code-file-icon-artwork.ts`](http
  • Network accessline 181
    default zoom, and a long delivery list stays inside its own section instead of pushing   the footer away. - **Source**: [rc.2 `packages/client/ui-chat/README.md`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-rc.2/packages
  • Network accessline 183
    - **Source**: [rc.2 `packages/client/ui-chat/README.md`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-rc.2/packages/client/ui-chat/README.md) · [rc.2 `ui-chat/src/client/chat/TurnTailNodeView.module.css`](https://github.c
  • Network accessline 204
    label in both languages, and a search for the retired strings in your own repository   comes back empty. - **Source**: [rc.2 `packages/client/ui-message-feedback/src/client/locales.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/d
  • Network accessline 206
    - **Source**: [rc.2 `packages/client/ui-message-feedback/src/client/locales.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-rc.2/packages/client/ui-message-feedback/src/client/locales.ts) · [rc.2 `packages/feedback/comm
  • Network accessline 230
    `packages/core`, `packages/session`, `packages/skill` and `packages/llm` shows version   strings only. - **Source**: [rc.1...rc.2 compare](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.5-rc.1...dsh-v0.1.5-rc.2) · [rc.2 ro
  • Network accessline 232
    - **Source**: [rc.1...rc.2 compare](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.5-rc.1...dsh-v0.1.5-rc.2) · [rc.2 root `package.json` (`engines`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-rc.2/pac

.dsh/skills/plugin-upgrade/references/v0.1.6-alpha.1.md

  • Network accessline 15
    > This file is a curated list of plugin-relevant changes, not a complete API diff. > > Upstream comparison: [dsh-v0.1.5-rc.2...dsh-v0.1.6-alpha.1](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.5-rc.2...dsh-v0.1.6-alpha.1)
  • Network accessline 16
    > > Upstream comparison: [dsh-v0.1.5-rc.2...dsh-v0.1.6-alpha.1](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.5-rc.2...dsh-v0.1.6-alpha.1) > · Release Notes: [dsh-v0.1.6-alpha.1](https://github.com/deepseek-ai/deepseek-ha
  • Network accessline 17
    > Upstream comparison: [dsh-v0.1.5-rc.2...dsh-v0.1.6-alpha.1](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.5-rc.2...dsh-v0.1.6-alpha.1)
  • Network accessline 18
    > · Release Notes: [dsh-v0.1.6-alpha.1](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.6-alpha.1)
  • Network accessline 91
    - **Migration recipe**: replace every `ctx.on('agent/session-start', ({ agent, source }) => …)` with `ctx.on('agent/created', ({ agent, source, signal }) => …)`; the in-repo reference migration is `packages/hooks/hooks-claude-code/src/index
  • Network accessline 93
    - **Source**: [0.1.6-alpha.1 `packages/core/agent/src/runtime-types.ts#L245-L261`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/core/agent/src/runtime-types.ts#L245-L261) · [0.1.6-alpha.1 `packages/core/a
  • Network accessline 104
    - **Migration recipe**: replace `assertEntriesLoaded(ctx, bin)` + `assertEntriesActivated(ctx, bin)` with one `await auditStartupEntries(ctx, bin)`, optionally passing a `warn` sink to capture optional-failure warnings instead of letting th
  • Network accessline 106
    - **Source**: [0.1.6-alpha.1 `packages/boot/app-boot/src/index.ts#L700-L835`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/boot/app-boot/src/index.ts#L700-L835) · [0.1.6-alpha.1 `packages/boot/app-boot/sr
  • Network accessline 117
    - **Migration recipe**: for "what state does this session have now", read the registered projection instead of scanning history, and for user-requested history use the explicit asynchronous paged read path rather than `snapshotEvents()` ove
  • Network accessline 119
    - **Source**: [0.1.6-alpha.1 `packages/core/session/src/index.ts#L622-L666`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/core/session/src/index.ts#L622-L666) · [0.1.6-alpha.1 `.agents/notes/implemented/a
  • Network accessline 130
    - **Migration recipe**: if the plugin owns an event that rewrites an existing message's content, tag its `SessionEventMap` member with `@messageProjection`, implement a pure `SessionMessageProjection` (`type` plus `project()`), and register
  • Network accessline 132
    - **Source**: [0.1.6-alpha.1 `packages/core/session/src/index.ts#L911-L933`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/core/session/src/index.ts#L911-L933) · [0.1.6-alpha.1 `packages/core/session/src/s
  • Network accessline 142
    - **Migration recipe**: stop calling `ctx.hmr.registerConfig(...)` and stop listening for `hmr/config-update-failed` (it can never fire) — use `watchConfig` from `@deepseek-ai/dsh-app-boot` with `ctx.get('hmr')!.config`, or own a watcher, a
  • Network accessline 144
    - **Source**: [0.1.6-alpha.1 `vendor/hmr/src/index.ts#L20-L23`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/vendor/hmr/src/index.ts#L20-L23) · [0.1.6-alpha.1 `packages/boot/app-boot/src/watch-config.ts#L36-L80`](
  • Network accessline 155
    - **Migration recipe**: decide the policy per deployment and write it down explicitly — add `enabled: false` to the `session-log-deepseek` row in every profile, overlay or test composition that must not contribute the log, which is exactly 
  • Network accessline 157
    - **Source**: [0.1.6-alpha.1 `packages/session/session-log-deepseek/src/index.ts#L37-L46`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/session/session-log-deepseek/src/index.ts#L37-L46) · [0.1.6-alpha.1 
  • Network accessline 168
    - **Migration recipe**: (1) swap every `@deepseek-ai/dsh-code-runtime*` dependency/import for `@deepseek-ai/dsh-ptc-runtime` / `@deepseek-ai/dsh-ptc-runtime-node`, including `peerDependencies` and profile rows; (2) rename identifiers `CodeR
  • Network accessline 170
    - **Source**: [0.1.6-alpha.1 `packages/ptc-runtime/ptc-runtime/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/ptc-runtime/ptc-runtime/src/index.ts#L91-L150), [`packages/ptc-runtime/ptc-runtim
  • Network accessline 181
    - **Migration recipe**: (1) change each `extends SandboxProvider` method to `async confine(argv, policy, signal?): Promise<ConfinedArgv>` and call `signal?.throwIfAborted()` before resolving a runner; (2) convert every call site to `await c
  • Network accessline 183
    - **Source**: [0.1.6-alpha.1 `packages/sandbox/sandbox/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/sandbox/sandbox/src/index.ts#L164-L181), [`packages/sandbox/sandbox/src/diagnostics.ts`](
  • Network accessline 194
    - **Migration recipe**: (1) implementors: declare `start(spec): Promise<ShellProcess>`, `await` preparation (sandbox confinement, helper launch) before publishing, reject (never resolve) on cancellation or setup failure, and keep observing 
  • Network accessline 196
    - **Source**: [0.1.6-alpha.1 `packages/shell/shell/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/shell/shell/src/index.ts#L87-L101), [`packages/shell/tool-bash/src/index.ts`](https://github.
  • Network accessline 210
    - **Migration recipe**: (1) add `async terminalEnvironment(signal?)` to your `SubprocessRuntime` subclass returning `{ platform: 'posix' | 'windows' }` (plus `defaultShell` when resolvable) and honor the signal; (2) plain `spawn` consumers 
  • Network accessline 212
    - **Source**: [0.1.6-alpha.1 `packages/subprocess/subprocess/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/subprocess/subprocess/src/index.ts#L138-L143), [`packages/subprocess/subprocess/src
  • Network accessline 223
    - **Migration recipe**: (1) swap the package name in dependencies and profile rows, and update any patch layer that targets row id `workflow-worker-thread` (a stale id only warns — `patch: entry %C not found`, `vendor/include/src/index.ts:1
  • Network accessline 225
    - **Source**: [0.1.6-alpha.1 `packages/workflow/workflow-ptc/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/workflow/workflow-ptc/src/index.ts#L102-L174), [`packages/workflow/workflow-ptc/pac
  • Network accessline 236
    - **Migration recipe**: (1) a server whose instructions exceed ~32 KiB (or a row with `failOnStartupError: true`) now fails to publish — shorten the instructions or raise `maxInstructionBytes` explicitly; (2) if you imported `@modelcontextp
  • Network accessline 238
    - **Source**: [0.1.6-alpha.1 `packages/mcp/mcp-client/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/mcp/mcp-client/src/index.ts#L20-L27), [`packages/mcp/mcp-client/src/connection.ts`](https:
  • Network accessline 249
    - **Migration recipe**: (1) existing plugins need nothing — with no configured MCP server there is no prompt section, no tool schema, no PTC declaration and no PTC binding; (2) to offer resources, mount `@deepseek-ai/dsh-mcp-resources` in t
  • Network accessline 251
    - **Source**: [0.1.6-alpha.1 `packages/mcp/mcp-resources/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/mcp/mcp-resources/src/index.ts#L14-L126), [`packages/mcp/mcp-resources/src/tools.ts`](h
  • Network accessline 262
    - **Migration recipe**: (1) mount `@deepseek-ai/dsh-ssh` with verified helper coordinates, then mount `dsh-fs-ssh`, `dsh-subprocess-ssh` and `dsh-sandbox-ssh` in place of — not beside — their local counterparts so all consumers share one ex
  • Network accessline 264
    - **Source**: [0.1.6-alpha.1 `packages/ssh/ssh/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/ssh/ssh/src/index.ts#L17-L104), [`packages/ssh/fs-ssh/src/index.ts`](https://github.com/deepseek-
  • Network accessline 282
    - **Migration recipe**: delete every use of `offloadRequestImagesWithPolicy`, `RequestImageOffloadPolicy` and `offloadedImagePrefixCount` (grep those three names). Compute each retained occurrence's exact request-version byte length, call `
  • Network accessline 284
    - **Source**: [0.1.6-alpha.1 `packages/llm/llm/src/content.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/llm/llm/src/content.ts) · [0.1.6-alpha.1 `packages/llm/llm/src/types.ts`](https://github.com/de
  • Network accessline 293
    - **Action level**: required-if-hit - **Symptoms**: the same provider route and the same default model id now speak a different protocol to a different default endpoint.   - On rc.2 `Config` (`packages/llm/llm-deepseek/src/index.ts:134`) ha
  • Network accessline 294
    - **Symptoms**: the same provider route and the same default model id now speak a different protocol to a different default endpoint.   - On rc.2 `Config` (`packages/llm/llm-deepseek/src/index.ts:134`) had no protocol field, the endpoint de
  • Network accessline 295
    - On rc.2 `Config` (`packages/llm/llm-deepseek/src/index.ts:134`) had no protocol field, the endpoint default was `PUBLIC_BASE_URL = 'https://api.deepseek.com'` (`:210`), and the adapter appended a fixed path: `fetch(\`${connection.baseURL}
  • Network accessline 296
    - On 0.1.6-alpha.1 `packages/llm/llm-deepseek/src/config.ts:26-27` adds `protocol?: DeepSeekProtocol` with schema default `'messages'` at `:81`; the type is `DeepSeekProtocol = 'chat-completions' | 'messages'` at `packages/llm/llm-deepseek/
  • Network accessline 299
    - `packages/bundle/base/cordis.patch.yml` still sets `provider: deepseek-official` / `model: deepseek-flash` unchanged, so an overlay that only overrode `baseURL` at a Chat-Completions-only gateway now posts Anthropic-shaped requests there,
  • Network accessline 300
    - **Migration recipe**: grep your profile, overlay, plugin and provisioning scripts for `llm-deepseek`, `deepseek-official`, `DEEPSEEK_BASE_URL` and `chat/completions`. If you override the endpoint with a Chat-Completions-only URL, add `pro
  • Network accessline 301
    - **Verification**: call the plugin's exported `resolveAdapterOptions({}, undefined)` and confirm `baseURL === 'https://api.deepseek.com/anthropic'`; call it with `{ protocol: 'chat-completions' }` and confirm `https://api.deepseek.com`. Po
  • Network accessline 302
    - **Source**: [0.1.6-alpha.1 `packages/llm/llm-deepseek/src/config.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/llm/llm-deepseek/src/config.ts) · [0.1.6-alpha.1 `packages/llm/llm-deepseek/src/protoco
  • Network accessline 319
    - **Migration recipe**: grep `DEFAULT_REQUEST_IMAGE_PIXEL_BUDGET`, `resolveRequestImagePolicy` and `MAX_CHAT_IMAGE_BYTES`. Replace `resolveRequestImagePolicy(model)` with `resolveRequestImageTarget(model, ref)` (returns `{ width, height, ma
  • Network accessline 321
    - **Source**: [0.1.6-alpha.1 `packages/llm/llm-deepseek/src/common/request-pricing.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/llm/llm-deepseek/src/common/request-pricing.ts) · [0.1.6-alpha.1 `packa
  • Network accessline 338
    - **Migration recipe**: re-derive any persisted projection state — a version-4 `contextBreakdown` or `contextPressure` checkpoint is a cache miss on 0.1.6-alpha.1 and must not be asserted as current — and update pinned fixtures to `stateVer
  • Network accessline 340
    - **Source**: [0.1.6-alpha.1 `packages/llm/token-meter/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/llm/token-meter/src/index.ts) · [0.1.6-alpha.1 `packages/llm/token-meter/src/breakdown-pr
  • Network accessline 355
    - **Migration recipe**: grep `AssistantProvenance` and replace the host import with `AssistantProviderMetadata` from `@deepseek-ai/dsh-llm`. On the client face, replace `AssistantProvenanceView` with `AssistantProviderMetadataView` and the 
  • Network accessline 357
    - **Source**: [0.1.6-alpha.1 `packages/llm/llm/src/message.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/llm/llm/src/message.ts) · [0.1.6-alpha.1 `packages/llm/llm/src/types.ts`](https://github.com/de
  • Network accessline 375
    - **Migration recipe**: rename every import (`ContextProvenanceView` → `ContextProducerView`, `AssistantProvenanceView` → `AssistantProviderMetadataView`); update field reads (`AssistantMessageNode.providerMetadata`, `ContextMessageNode.pro
  • Network accessline 377
    - **Source**: [0.1.6-alpha.1 `packages/client/ui-conversation/src/client/contract/context-producer.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/client/ui-conversation/src/client/contract/context-prod
  • Network accessline 395
    - **Migration recipe**: add `name` to every `CommandClaim` you build — the catalog command name without the leading slash, i.e. what `/name args` executes — and keep your existing `token` as the spelling the composer draft shows; if a test 
  • Network accessline 397
    - **Source**: [0.1.6-alpha.1 `packages/client/ui-conversation/src/client/contract/input.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/client/ui-conversation/src/client/contract/input.ts) · [0.1.6-alph
  • Network accessline 415
    - **Migration recipe**: if you built your own picker from `faceOf('permissions').getSnapshot().options`, stop — read `currentValue` from the projection and fetch the options from `ctx.remote.permissionPresets.catalog()` (declare `remote.per
  • Network accessline 417
    - **Source**: [0.1.6-alpha.1 `packages/client/ui-conversation/src/client/contract/slots.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/client/ui-conversation/src/client/contract/slots.ts) · [0.1.6-alph
  • Network accessline 437
    - **Migration recipe**: give every guide entry a stable, provider-unique `id`; set `multiple: true` for a kind whose tabs must not collapse into one page; register `ctx.sidebarRight.registerCloseHandler(kind, handler)` (one per kind, effect
  • Network accessline 439
    - **Source**: [0.1.6-alpha.1 `packages/client/ui-sidebar-right/src/client/tab-registry.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/client/ui-sidebar-right/src/client/tab-registry.ts) · [0.1.6-alpha.
  • Network accessline 452
    - **Migration recipe**: delete `reconnectLabel` from every `<ConnectionIndicator>` call site and make `disconnectedLabel` itself name the retry action (that is the new copy contract: the outage label names what clicking does). No other prop
  • Network accessline 454
    - **Source**: [0.1.6-alpha.1 `packages/client/ui-primitives/src/ConnectionIndicator.tsx`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/client/ui-primitives/src/ConnectionIndicator.tsx) · [0.1.6-alpha.1 `p
  • Network accessline 467
    - **Migration recipe**: keep passing the raw before/after fragments including unchanged context — do not pre-split them. Refresh pinned `+/-` totals, rendered row strings, DOM snapshots and `diffTotals` expectations: they shrink to the chan
  • Network accessline 469
    - **Source**: [0.1.6-alpha.1 `packages/client/ui-primitives/src/DiffBlock.tsx`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/client/ui-primitives/src/DiffBlock.tsx) · [0.1.6-alpha.1 `packages/client/ui-pr
  • Network accessline 487
    - **Migration recipe**: stop opening the client with `?fixture`, and drop any CI job that does. For slot/component work keep `SlotTestRuntime.create()` from `@deepseek-ai/dsh-client-test-runtime` (unchanged). For plugin activation, reload, 
  • Network accessline 489
    - **Source**: [0.1.6-alpha.1 `packages/client/connection/src/client/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/client/connection/src/client/index.ts) · [0.1.6-alpha.1 `packages/test-support/c
  • Network accessline 500
    - **Migration recipe**: replace the old row with the two new rows in every overlay/patch you maintain, and move any `provider: spawn` config onto `workflow-ptc`; keep `ptc-runtime` config-free unless the deployment needs a different PTC run
  • Network accessline 502
    - **Source**: [0.1.6-alpha.1 `packages/bundle/base/cordis.patch.yml`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/bundle/base/cordis.patch.yml) · [rc.2 `packages/bundle/base/cordis.patch.yml`](https://gi
  • Network accessline 513
    - **Migration recipe**: do not widen a plugin's own message handling to assume images always arrive as image blocks — read the projection instead, because a selected occurrence arrives as `offloadedImageText` naming the attachment and its r
  • Network accessline 515
    - **Source**: [0.1.6-alpha.1 `packages/compaction/compaction-image-offload/src/projection.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/compaction/compaction-image-offload/src/projection.ts) · [0.1.6-
  • Network accessline 526
    - **Migration recipe**: restore the row from an overlay only where the deployment genuinely wants it, by adding `- id: tool-ralph` with `disabled: false` (and the previous `subagentProvider`/`maxRounds` config) to `$DSH_HOME/cordis.patch.ym
  • Network accessline 528
    - **Source**: [0.1.6-alpha.1 `packages/bundle/base/cordis.patch.yml`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/bundle/base/cordis.patch.yml) · [rc.2 `packages/bundle/base/cordis.patch.yml`](https://gi
  • Network accessline 539
    - **Migration recipe**: drop a hand-added `mcp-resources` row from overlays that inherit base or sdk-minimal, and keep only deployment-specific config in an overlay that overrides the shipped row. Adopt the resource surface through the plug
  • Network accessline 541
    - **Source**: [0.1.6-alpha.1 `packages/bundle/base/cordis.patch.yml`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/bundle/base/cordis.patch.yml) · [0.1.6-alpha.1 `packages/bundle/sdk-minimal/cordis.patch.
  • Network accessline 552
    - **Migration recipe**: remove `code-runtime` from Web overlays and manifests and let the base's PTC row serve execution; if an overlay pinned the row to keep PTC out of the Web bundle, re-express that intent against the new row ids. Audit 
  • Network accessline 554
    - **Source**: [0.1.6-alpha.1 `packages/bundle/web-app/cordis.patch.yml`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/bundle/web-app/cordis.patch.yml) · [rc.2 `packages/bundle/web-app/cordis.patch.yml`](h
  • Network accessline 565
    - **Migration recipe**: treat a dependency on a removed package as a broken coordinate, not as a version problem. Move worker-thread code runtime consumers to `@deepseek-ai/dsh-ptc-runtime-node` (composed by the base's `ptc-runtime` row) an
  • Network accessline 567
    - **Source**: [0.1.6-alpha.1 `packages/`](https://github.com/deepseek-ai/deepseek-harness/tree/dsh-v0.1.6-alpha.1/packages) · [rc.2 `packages/`](https://github.com/deepseek-ai/deepseek-harness/tree/dsh-v0.1.5-rc.2/packages) · [0.1.6-alpha.1
  • Network accessline 578
    - **Migration recipe**: for machine consumers, switch to `--json` and parse the documented fields instead of scraping text; when continuing existing work, pass `--session-id <id>` and assert the run appends to that session rather than creat
  • Network accessline 580
    - **Source**: [0.1.6-alpha.1 `packages/bundle/headless/cordis.patch.yml`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/bundle/headless/cordis.patch.yml) · [0.1.6-alpha.1 `packages/bundle/headless/src/inde
  • Network accessline 632
    `dsh.manifestVersion`; a lockfile pinned to the old declaration package passes typecheck   against stale bytes, so reinstall before believing a green build. - **Source**: [0.1.6-alpha.1 `packages/util/package-manifest/src/types.ts`](https:/
  • Network accessline 634
    - **Source**: [0.1.6-alpha.1 `packages/util/package-manifest/src/types.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/util/package-manifest/src/types.ts) · [0.1.6-alpha.1 `packages/util/package-manifes
  • Network accessline 703
    experimental manifest carries `publishConfig.access == "public"`; then confirm the intended   names resolve from npm at the new version. - **Source**: [0.1.6-alpha.1 `scripts/experimental-package-policy.ts`](https://github.com/deepseek-ai/d
  • Network accessline 705
    - **Source**: [0.1.6-alpha.1 `scripts/experimental-package-policy.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/scripts/experimental-package-policy.ts) · [0.1.6-alpha.1 `scripts/npm-baseline-packages.ts`](http
  • Network accessline 743
    the profile root), then start the host and mount a shipped profile — the addon load is on the   startup path, so a mismatch surfaces there rather than at first use. - **Source**: [0.1.6-alpha.1 `vendor/loader/package.json`](https://github.c
  • Network accessline 745
    - **Source**: [0.1.6-alpha.1 `vendor/loader/package.json`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/vendor/loader/package.json) · [0.1.6-alpha.1 `apps/cli/package.json`](https://github.com/deepseek-ai/deepseek
  • Network accessline 812
    rules, and `apps/desktop/tests/profile-mcp.spec.ts` covers the Desktop composition including   its Host overlay. Signed installed-artifact qualification remains a release-environment check. - **Source**: [0.1.6-alpha.1 `apps/desktop/README.
  • Network accessline 814
    - **Source**: [0.1.6-alpha.1 `apps/desktop/README.md`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/apps/desktop/README.md) · [0.1.6-alpha.1 `apps/desktop/src/core-package-set.ts`](https://github.com/deepseek-ai/d
  • Network accessline 831
    - **Migration recipe**: no source action. Spend the effort on the moved surfaces instead — the PTC runtime replacement, the package ledger, the required-on-read `image/offload` event, and the adapter image-budget seam. - **Verification**: `
  • Network accessline 833
    - **Source**: [0.1.6-alpha.1 `packages/core/session/src/types.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/core/session/src/types.ts) · [rc.2 `packages/core/session/src/types.ts`](https://github.com/

.dsh/skills/plugin-upgrade/scripts/ghost-host-check.check.mjs

  • Executable scriptline 1
    Executable file

.dsh/skills/plugin-upgrade/scripts/ghost-host-check.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Network accessline 131
    if (portArg !== undefined) {     try {       const res = await fetch(`http://127.0.0.1:${portArg}/api/agentPreset.list`, {
  • Network accessline 132
    try {       const res = await fetch(`http://127.0.0.1:${portArg}/api/agentPreset.list`, {         method: 'POST',
  • Network accessline 133
    const res = await fetch(`http://127.0.0.1:${portArg}/api/agentPreset.list`, {

.dsh/skills/plugin-upgrade/scripts/inject-lint.mjs

  • Executable scriptline 1
    #!/usr/bin/env node

.dsh/skills/plugin-upgrade/scripts/inject-lint.test.mjs

  • Executable scriptline 1
    Executable file

.dsh/skills/plugin-upgrade/scripts/plan-migration.check.mjs

  • Executable scriptline 1
    Executable file
  • Access to secretsline 43
    [Credential-related source omitted]
  • Access to secretsline 71
    [Credential-related source omitted]

.dsh/skills/plugin-upgrade/scripts/plan-migration.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Access to secretsline 22
    [Credential-related source omitted]

.dsh/skills/plugin-upgrade/scripts/verify-runtime.check.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 130
    assert.equal(classifySpec('@deepseek-ai/dsh-some-plugin'), 'npm-name')   assert.equal(classifySpec('dsh-better-sidebar'), 'npm-name')   assert.equal(classifySpec('https://github.com/user/plugin.git'), 'git-url')
  • Network accessline 131
    assert.equal(classifySpec('dsh-better-sidebar'), 'npm-name')   assert.equal(classifySpec('https://github.com/user/plugin.git'), 'git-url')   assert.equal(classifySpec('git@github.com:user/plugin.git'), 'git-url')
  • Network accessline 132
    assert.equal(classifySpec('https://github.com/user/plugin.git'), 'git-url')
  • Network accessline 161
    assert.equal(listKeyFor('https://github.com/user/plugin.git', 'git-url'), 'plugin')

.dsh/skills/plugin-upgrade/scripts/verify-runtime.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Network accessline 56
    const DEAD_MODEL_BASE_URL = 'http://127.0.0.1:9/v1' // port 9 (discard): nothing listens -> immediate ECONNREFUSED
  • Network accessline 245
    * caller's mirror means the verdict was reached on a possibly-stale version. */ function pinNpmSpec(pkgName) {   const view = run('npm', ['view', pkgName, 'dist-tags.latest', '--registry=https://registry.npmjs.org'], { timeoutSeconds: 60 })
  • Network accessline 246
    function pinNpmSpec(pkgName) {   const view = run('npm', ['view', pkgName, 'dist-tags.latest', '--registry=https://registry.npmjs.org'], { timeoutSeconds: 60 })   const latest = (view.stdout ?? '').trim().replace(/^["']|["']$/g, '')
  • Network accessline 247
    const view = run('npm', ['view', pkgName, 'dist-tags.latest', '--registry=https://registry.npmjs.org'], { timeoutSeconds: 60 })
  • Access to secretsline 262
    [Credential-related source omitted]

.dsh/skills/plugin-workflow/references/workflow-selection.schema.json

  • Network accessline 1
    {   "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 2
    "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 3
    "$id": "https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-workflow/references/workflow-selection.schema.json",

.dsh/skills/plugin-workflow/scripts/plan-workflow.check.mjs

  • Executable scriptline 1
    Executable file

.dsh/skills/plugin-workflow/scripts/plan-workflow.mjs

  • Executable scriptline 1
    #!/usr/bin/env node

.dsh/skills/plugin-write/references/config-plugin.md

  • Access to secretsline 39
    [Credential-related source omitted]

.dsh/skills/plugin-write/references/llm-adapter-plugin.md

  • Access to secretsline 23
    [Credential-related source omitted]

.dsh/skills/plugin-write/references/naming-conventions.md

  • Network accessline 3
    This is a community compatibility profile, not an official DeepSeek Harness naming standard. It was verified on 2026-08-31 against [`dsh-v0.1.2-alpha.2`](https://github.com/deepseek-ai/deepseek-harness/tree/0a53fb55bea101816fa226bb964ae2bed
  • Network accessline 30
    Primary sources: [first plugin](https://github.com/deepseek-ai/deepseek-harness/blob/0a53fb55bea101816fa226bb964ae2bed71c343b/docs/user/develop/basic/index.zh.md), [bundle publishing and Loader layers](https://github.com/deepseek-ai/deepsee

.dsh/skills/plugin-write/references/naming-policy.v1.json

  • Network accessline 7
    "appliesTo": "external-community-plugin",   "officialBaseline": {     "repository": "https://github.com/deepseek-ai/deepseek-harness",
  • Network accessline 8
    "officialBaseline": {     "repository": "https://github.com/deepseek-ai/deepseek-harness",     "ref": "dsh-v0.1.2-alpha.2",
  • Network accessline 9
    "repository": "https://github.com/deepseek-ai/deepseek-harness",
  • Network accessline 13
    },   "centralRegistry": {     "repository": "https://github.com/oh-my-dsh/dsh-plugin-registry",
  • Network accessline 14
    "centralRegistry": {     "repository": "https://github.com/oh-my-dsh/dsh-plugin-registry",     "contract": "dsh-plugin-registry/v2",
  • Network accessline 15
    "repository": "https://github.com/oh-my-dsh/dsh-plugin-registry",
  • Network accessline 16
    "contract": "dsh-plugin-registry/v2",     "indexSchemaUrl": "https://raw.githubusercontent.com/oh-my-dsh/dsh-plugin-registry/main/registry/schema/plugin-index.schema.json",     "defaultIndexUrl": "https://raw.githubusercontent.com/oh-my-dsh
  • Network accessline 17
    "indexSchemaUrl": "https://raw.githubusercontent.com/oh-my-dsh/dsh-plugin-registry/main/registry/schema/plugin-index.schema.json",
  • Network accessline 18
    "defaultIndexUrl": "https://raw.githubusercontent.com/oh-my-dsh/dsh-plugin-registry/main/registry/index.json"

.dsh/skills/plugin-write/references/plugin-naming.schema.json

  • Network accessline 1
    {   "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 2
    "$schema": "https://json-schema.org/draft/2020-12/schema",

.dsh/skills/plugin-write/references/registry-check.md

  • Network accessline 20
    https://raw.githubusercontent.com/oh-my-dsh/dsh-plugin-registry/main/registry/index.json
  • Network accessline 34
    https://raw.githubusercontent.com/oh-my-dsh/dsh-plugin-registry/main/registry/schema/plugin-index.schema.json
  • Network accessline 82
    1. Commit the validated `dsh-plugin.naming.json` to the public plugin repository. 2. Clone or update `https://github.com/oh-my-dsh/dsh-plugin-registry`, then copy its
  • Network accessline 83
    2. Clone or update `https://github.com/oh-my-dsh/dsh-plugin-registry`, then copy its

.dsh/skills/plugin-write/scripts/query-registry.check.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 52
    plugin: {       id: `${namespace}/web-search`,       repository: `https://github.com/${namespace}/dsh-web-search`,
  • Network accessline 53
    id: `${namespace}/web-search`,       repository: `https://github.com/${namespace}/dsh-web-search`,       package: naming.plugin.packageName,
  • Network accessline 54
    repository: `https://github.com/${namespace}/dsh-web-search`,
  • Network accessline 124
    export async function runRegistryQueryChecks() {   const policy = await loadNamingPolicy()   assert.equal(policy.centralRegistry?.repository, 'https://github.com/oh-my-dsh/dsh-plugin-registry')
  • Network accessline 125
    const policy = await loadNamingPolicy()   assert.equal(policy.centralRegistry?.repository, 'https://github.com/oh-my-dsh/dsh-plugin-registry')   assert.equal(policy.centralRegistry?.contract, REGISTRY_CONTRACT)
  • Network accessline 126
    assert.equal(policy.centralRegistry?.repository, 'https://github.com/oh-my-dsh/dsh-plugin-registry')
  • Network accessline 153
    assertInvalidIndex(candidate, (value) => { value.$schema = 'https://example.com/plugin-index.schema.json' }, /index\.\$schema/)
  • Network accessline 294
    const strict = await runCli(['--manifest', manifestPath, '--index', indexPath, '--harness-version', '0.1.2-alpha.2', '--strict'])     assert.equal(strict.code, 1)     const unavailable = await runCli(['--manifest', manifestPath, '--registry
  • Network accessline 295
    assert.equal(strict.code, 1)     const unavailable = await runCli(['--manifest', manifestPath, '--registry-url', 'http://127.0.0.1:1/index.json', '--format', 'json'])     assert.equal(unavailable.code, 2)
  • Network accessline 296
    const unavailable = await runCli(['--manifest', manifestPath, '--registry-url', 'http://127.0.0.1:1/index.json', '--format', 'json'])

.dsh/skills/plugin-write/scripts/query-registry.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Network accessline 9
    export const DEFAULT_REGISTRY_URL = 'https://raw.githubusercontent.com/oh-my-dsh/dsh-plugin-registry/main/registry/index.json'
  • Network accessline 11
    export const REGISTRY_INDEX_SCHEMA_URL = 'https://raw.githubusercontent.com/oh-my-dsh/dsh-plugin-registry/main/registry/schema/plugin-index.schema.json'
  • Network accessline 262
    checkString(plugin.repository, `${path}.plugin.repository`)   const repository = repositoryParts(plugin.repository)   if (!repository) invalid(`${path}.plugin.repository`, 'must be a canonical https://github.com/<owner>/<repo> URL')
  • Network accessline 263
    const repository = repositoryParts(plugin.repository)   if (!repository) invalid(`${path}.plugin.repository`, 'must be a canonical https://github.com/<owner>/<repo> URL')   const namespace = plugin.id.split('/')[0]
  • Network accessline 264
    if (!repository) invalid(`${path}.plugin.repository`, 'must be a canonical https://github.com/<owner>/<repo> URL')

.dsh/skills/plugin-write/scripts/validate-names.check.mjs

  • Executable scriptline 1
    Executable file

.dsh/skills/plugin-write/scripts/validate-names.mjs

  • Executable scriptline 1
    #!/usr/bin/env node

skills/dsh-benchmark-case/assets/Dockerfile.example

  • Dangerous shell operationline 5
    && rm -rf /var/lib/apt/lists/*

skills/dsh-benchmark-case/assets/judge-utils.mjs

  • Executable scriptline 1
    Executable file
  • Dangerous shell operationline 106
    const write = await localExec(`rm -rf '${dir}' && mkdir -p '${dir}' && base64 -d > '${dir}/package.json'`, {
  • Dangerous shell operationline 130
    `pkill -f 'profile ${selfSafe}' 2>/dev/null; rm -rf '/root/.dsh/profiles/${profile}' '${tmpDir}' /tmp/${profile}-boot.log; true`,
  • Network accessline 170
    if (match) {   try {     const r1 = await fetch(match[1], { redirect: "manual" });
  • Network accessline 171
    try {     const r1 = await fetch(match[1], { redirect: "manual" });     const setCookie = r1.headers.getSetCookie ? r1.headers.getSetCookie() : [r1.headers.get("set-cookie")];
  • Network accessline 172
    const r1 = await fetch(match[1], { redirect: "manual" });
  • Network accessline 173
    const setCookie = r1.headers.getSetCookie ? r1.headers.getSetCookie() : [r1.headers.get("set-cookie")];     const cookie = setCookie.filter(Boolean).map((c) => c.split(";")[0]).join("; ");     const r2 = await fetch("http://127.0.0.1:3080/"
  • Network accessline 174
    const cookie = setCookie.filter(Boolean).map((c) => c.split(";")[0]).join("; ");     const r2 = await fetch("http://127.0.0.1:3080/", { headers: { cookie } });     outcome.html = await r2.text();
  • Network accessline 175
    const r2 = await fetch("http://127.0.0.1:3080/", { headers: { cookie } });

skills/dsh-benchmark-case/assets/solve.sh.example

  • Executable scriptline 1
    #!/bin/bash
  • Dangerous shell operationline 11
    # rm -f /app/fixture/<legacy-file-that-must-go>

skills/dsh-benchmark-case/assets/test.sh.example

  • Executable scriptline 1
    #!/bin/bash

skills/dsh-benchmark-case/references/harbor-task-spec.md

  • Dangerous shell operationline 59
    RUN apt-get update && apt-get install -y --no-install-recommends git      && rm -rf /var/lib/apt/lists/*
  • Dangerous shell operationline 60
    && rm -rf /var/lib/apt/lists/*

skills/dsh-benchmark-case/references/registry-sync.md

  • Dangerous shell operationline 67
    # 断言最后一行 {"score":100,"max":100,…};跑完 docker rm -f

skills/dsh-plugin-development/SKILL.md

  • Network accessline 5
    version: "3.1.1"   date: "2026-09-06"   reference: "https://github.com/NanmiCoder/dsh-agent-teams"
  • Network accessline 6
    date: "2026-09-06"   reference: "https://github.com/NanmiCoder/dsh-agent-teams" ---
  • Network accessline 7
    reference: "https://github.com/NanmiCoder/dsh-agent-teams"
  • Network accessline 60
    官方仓库 `https://github.com/deepseek-ai/deepseek-harness` 是公开、MIT 许可的可引用证据源。取证须明确目标版本、对应 tag/commit 和 npm 发布状态;不要把默认分支等同于用户安装版本。需要兜底取证时:
  • Network accessline 67
    git clone --filter=blob:none https://github.com/deepseek-ai/deepseek-harness.git "$SCRATCH/dsh-official"

skills/dsh-upgrade-audit/SKILL.md

  • Network accessline 89
    This skill produces **evidence of host-version compatibility** (report + boundary signature table); [plugin-upgrade](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-upgrade/) consumes that evidence (version-cha

skills/dsh-upgrade-audit/SKILL.zh-CN.md

  • Network accessline 82
    本 skill 产出**宿主版本间的兼容性证据**(报告 + 边界签名表);[plugin-upgrade](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-upgrade/) 消费这类证据(版本变更卡片)执行单个插件的迁移。审计发现可直接供给卡片「实战批注」;给 `plugin-upgrade` 补卡时引用本 skill 的报告目录而非凭记忆转述。

skills/dsh-upgrade-audit/scripts/gen-artifacts.check.mjs

  • Executable scriptline 1
    Executable file

skills/dsh-upgrade-audit/scripts/gen-artifacts.mjs

  • Executable scriptline 1
    #!/usr/bin/env node

skills/dsh-upgrade-audit/scripts/materialize-npm.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Network accessline 175
    const range = `dsh-v${a.resolved}...dsh-v${b.resolved}`     try {       const res = await fetch(`https://api.github.com/repos/${owner}/${repo}/compare/${range}`)
  • Network accessline 176
    try {       const res = await fetch(`https://api.github.com/repos/${owner}/${repo}/compare/${range}`)       if (res.ok) {
  • Network accessline 177
    const res = await fetch(`https://api.github.com/repos/${owner}/${repo}/compare/${range}`)

skills/plugin-release/references/profile-dependency-management.md

  • Network accessline 3
    > Carries on the release-track choice of [../SKILL.md](../SKILL.md). This document covers the dependency-resolution facts and operational recipes for installing/updating plugins into `$DSH_HOME/profiles/*`, drawn from the continuous migrati
  • Network accessline 4
    > (tsbuildinfo, oxc parsing, etc.) are covered in [migration-hygiene](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-upgrade/references/migration-hygiene.md);
  • Network accessline 45
    - The profile's own `node_modules` contains only the profile's declared dependencies; when a bare row name fails to resolve, resolution falls back to the shared `$DSH_HOME/profiles/node_modules` (which holds copies of the app's and each bun
  • Network accessline 46
    - When a directory junction points at a local workspace package, **a workspace source update takes effect once dsh is restarted**; host-half changes require a restart, and only then can the client half hard-refresh (see item 3 of [migration
  • Network accessline 58
    Since 0.1.2-alpha.1, dsh web uses bootstrap-token + signed-Cookie authentication (see [DSH-0.1.2-A1-08 · Web/API channel authentication](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-upgrade/references/v0.1.2
  • Network accessline 59
    [DSH-0.1.2-A1-08 · Web/API channel authentication](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-upgrade/references/v0.1.2-alpha.1.md)).
  • Network accessline 65
    [Credential-related source omitted]
  • Network accessline 66
    [Credential-related source omitted]
  • Network accessline 67
    [Credential-related source omitted]
  • Network accessline 68
    [Credential-related source omitted]
  • Network accessline 69
    # 3. Call the custom channel with the session → assert 200 $body = @{ type = 'client-request'; rpcId = 'smoke'; method = 'status'; payload = $null } | ConvertTo-Json Invoke-WebRequest 'http://127.0.0.1:3190/tariff/status' -Method POST -Cont
  • Network accessline 70
    $body = @{ type = 'client-request'; rpcId = 'smoke'; method = 'status'; payload = $null } | ConvertTo-Json Invoke-WebRequest 'http://127.0.0.1:3190/tariff/status' -Method POST -ContentType 'application/json' -Body $body -WebSession $sess # 
  • Network accessline 71
    Invoke-WebRequest 'http://127.0.0.1:3190/tariff/status' -Method POST -ContentType 'application/json' -Body $body -WebSession $sess
  • Network accessline 73
    Invoke-WebRequest 'http://127.0.0.1:3190/tariff/status' -Method POST -ContentType 'application/json' -Body $body
  • Network accessline 76
    curl equivalent (`-c/-b` cookie jar):
  • Network accessline 79
    [Credential-related source omitted]
  • Network accessline 80
    curl -s -b jar.txt -X POST -H 'content-type: application/json' \
  • Network accessline 81
    -d '{"type":"client-request","rpcId":"smoke","method":"status","payload":null}' \   http://127.0.0.1:3190/tariff/status        # expect 200 curl -s -o /dev/null -w '%{http_code}\n' -X POST \
  • Network accessline 82
    http://127.0.0.1:3190/tariff/status        # expect 200 curl -s -o /dev/null -w '%{http_code}\n' -X POST \   http://127.0.0.1:3190/tariff/status        # expect 401
  • Network accessline 83
    curl -s -o /dev/null -w '%{http_code}\n' -X POST \
  • Network accessline 84
    http://127.0.0.1:3190/tariff/status        # expect 401
  • Network accessline 122
    **Symptom**: installing by the README's pinned tag fails with `Could not resolve vN.N.N to a commit of https://github.com/<org>/<repo>.git`.
  • Network accessline 123
    `Could not resolve vN.N.N to a commit of https://github.com/<org>/<repo>.git`.
  • Network accessline 132
    push, so every release tag is synced to all mirrors; 2. Consumers can confirm a tag exists first with    `git ls-remote --tags https://github.com/<org>/<repo>`.
  • Network accessline 134
    `git ls-remote --tags https://github.com/<org>/<repo>`.

skills/plugin-release/references/publish-playbook.md

  • Network accessline 13
    git clone https://github.com/deepseek-ai/deepseek-harness.git /tmp/dsh-build
  • Network accessline 43
    - Use this compromise only for APIs with **signature drift where the runtime ignores the extra argument**; APIs with semantic changes must be migrated via the version cards of   [plugin-upgrade](https://github.com/oh-my-dsh/dsh-plugin-upgra
  • Network accessline 44
    [plugin-upgrade](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-upgrade/SKILL.md), never silently compromised;
  • Network accessline 89
    - The host acceptance matrix matches the release channel: the prerelease channel pins alpha-series tags and the stable channel pins rc-series tags — **never follow master/main to masquerade as acceptance**; - Pre-publish smoke for Web Clien
  • Network accessline 90
    - Pre-publish smoke for Web Client plugins must cover: the bundle entry announced in the host boot manifest (`window.__DSH_BOOT__`) is reachable, the bundle registers successfully, the DOM mount completes, and there are no page errors; `--d
  • Network accessline 91
    - Auditable reference implementations: [dsh-genui#86](https://github.com/omdsh-dev/dsh-genui/pull/86),
  • Network accessline 92
    [dsh-annotation#40](https://github.com/omdsh-dev/dsh-annotation/pull/40) (both implement

skills/plugin-release/scripts/verify-release.mjs

  • Executable scriptline 1
    #!/usr/bin/env node

skills/plugin-release/scripts/verify-release.test.mjs

  • Executable scriptline 1
    Executable file

skills/plugin-test/SKILL.md

  • Access to secretsline 33
    [Credential-related source omitted]

skills/plugin-test/references/version-migration-testing.md

  • Network accessline 52
    Full case write-up with the forensic chain: [dsh-assembler migration ledger, "empty-table" section](https://github.com/TT-Wang/dsh-assembler/blob/main/docs/research/dsh-alpha2-migration.md).

skills/plugin-test/scripts/container-runner.mjs

  • Executable scriptline 1
    #!/usr/bin/env node

skills/plugin-test/scripts/docker-release-smoke.mjs

  • Executable scriptline 1
    #!/usr/bin/env node

skills/plugin-test/scripts/docker-release-smoke.test.mjs

  • Executable scriptline 1
    Executable file
  • Access to secretsline 46
    [Credential-related source omitted]

skills/plugin-upgrade/SKILL.md

  • Network accessline 139
    Normative background: [dsh-community-standard](https://github.com/oh-my-dsh/dsh-community-standard)
  • Network accessline 140
    owns manifests, contract coordinates, and negotiation conventions; this skill handles practical upgrades of existing plugins, reusing that classification without redefining it. The official call for contributions is [deepseek-harness discus

skills/plugin-upgrade/SKILL.zh-CN.md

  • Network accessline 158
    规范背景:[dsh-community-standard](https://github.com/oh-my-dsh/dsh-community-standard)
  • Network accessline 160
    规范语义。官方征集出处见 [deepseek-harness discussion #5120](https://github.com/deepseek-ai/deepseek-harness/discussions/5120)。

skills/plugin-upgrade/examples/02-host-side-plugin.en.md

  • Network accessline 45
    This zero-dependency fixture only prevents the Host/Client planes from being written backwards again; it cannot replace a build from the pinned tag or a real DSH profile. For production-grade validation and positive controls, see [`benchmar
  • Network accessline 47
    [`benchmark/validation-report-2026-08-30.md`](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/benchmark/results/validation-report-2026-08-30.md).
  • Network accessline 51
    - [DSH-0.1.2-A1-01](../references/v0.1.2-alpha.1.md) - [Full container-chain validation](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/benchmark/results/validation-report-2026-08-30.md)
  • Network accessline 52
    - [Full container-chain validation](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/benchmark/results/validation-report-2026-08-30.md)

skills/plugin-upgrade/examples/02-host-side-plugin.md

  • Network accessline 45
    该依赖零 fixture 只防止 Host/Client 平面再次写反;它不能替代固定 tag 的 build 或真实 DSH profile。产品级实测与正控见 [`benchmark/validation-report-2026-08-30.md`](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/benchmark/results/validation-report-2026-08-30.m
  • Network accessline 47
    [`benchmark/validation-report-2026-08-30.md`](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/benchmark/results/validation-report-2026-08-30.md)。
  • Network accessline 51
    - [DSH-0.1.2-A1-01](../references/v0.1.2-alpha.1.md) - [容器全链验证](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/benchmark/results/validation-report-2026-08-30.md)
  • Network accessline 52
    - [容器全链验证](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/benchmark/results/validation-report-2026-08-30.md)

skills/plugin-upgrade/examples/04-dual-cohort-plugin.en.md

  • Network accessline 11
    - Plugin: `dsh-mnemon`, version `0.3.4` while the compatibility change was developed, then released   in [`v0.3.5`](https://github.com/omdsh-dev/dsh-mnemon/releases/tag/v0.3.5).
  • Network accessline 12
    in [`v0.3.5`](https://github.com/omdsh-dev/dsh-mnemon/releases/tag/v0.3.5).
  • Network accessline 13
    - Published baseline: DSH [`dsh-v0.1.1-rc.2`](https://github.com/deepseek-ai/deepseek-harness/tree/dsh-v0.1.1-rc.2)
  • Network accessline 14
    (commit `b150a551b8d465e31e418e1b2eaf5e79bbb7d28e`), supplied by the npm registry and lockfile. - Source-preview target: DSH [`dsh-v0.1.2-alpha.1`](https://github.com/deepseek-ai/deepseek-harness/tree/dsh-v0.1.2-alpha.1)   (commit `cd5ef814
  • Network accessline 15
    - Source-preview target: DSH [`dsh-v0.1.2-alpha.1`](https://github.com/deepseek-ai/deepseek-harness/tree/dsh-v0.1.2-alpha.1)
  • Network accessline 17
    official tag was built for verification. - Plugin evidence: initial adaptation commit   [`30d7476`](https://github.com/omdsh-dev/dsh-mnemon/commit/30d7476ba58f86e417959aae64d4dd3fb80f0434),
  • Network accessline 18
    - Plugin evidence: initial adaptation commit   [`30d7476`](https://github.com/omdsh-dev/dsh-mnemon/commit/30d7476ba58f86e417959aae64d4dd3fb80f0434),   rc.2 compatibility correction
  • Network accessline 19
    [`30d7476`](https://github.com/omdsh-dev/dsh-mnemon/commit/30d7476ba58f86e417959aae64d4dd3fb80f0434),
  • Network accessline 20
    rc.2 compatibility correction   [`b50a504`](https://github.com/omdsh-dev/dsh-mnemon/commit/b50a504dbe738aa359cd6ef8e4fd790ed9c19a10),   and merged [PR #105](https://github.com/omdsh-dev/dsh-mnemon/pull/105).
  • Network accessline 21
    [`b50a504`](https://github.com/omdsh-dev/dsh-mnemon/commit/b50a504dbe738aa359cd6ef8e4fd790ed9c19a10),
  • Network accessline 22
    and merged [PR #105](https://github.com/omdsh-dev/dsh-mnemon/pull/105).
  • Network accessline 65
    Pinned primary sources: rc.2 [`HostConnectionRpc.handle`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2/packages/client/connection/src/rpc.ts)
  • Network accessline 66
    [`HostConnectionRpc.handle`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2/packages/client/connection/src/rpc.ts)
  • Network accessline 67
    requires options and [`HostConnectionService.register`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2/packages/client/connection/src/rpc-host.ts) reads `options.authority`; alpha.1
  • Network accessline 68
    [`HostConnectionService.register`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2/packages/client/connection/src/rpc-host.ts)
  • Network accessline 69
    reads `options.authority`; alpha.1 [`HostConnectionRpc.handle`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/client/connection/src/rpc.ts) and
  • Network accessline 70
    [`HostConnectionRpc.handle`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/client/connection/src/rpc.ts)
  • Network accessline 71
    and [`HostConnectionService`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/client/connection/src/rpc-host.ts) consume only the first two arguments.
  • Network accessline 72
    [`HostConnectionService`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/client/connection/src/rpc-host.ts)
  • Network accessline 87
    The pinned implementation is in [`src/contracts.ts`](https://github.com/omdsh-dev/dsh-mnemon/blob/b50a504dbe738aa359cd6ef8e4fd790ed9c19a10/src/contracts.ts),
  • Network accessline 88
    [`src/contracts.ts`](https://github.com/omdsh-dev/dsh-mnemon/blob/b50a504dbe738aa359cd6ef8e4fd790ed9c19a10/src/contracts.ts),
  • Network accessline 89
    [`src/rpc.ts`](https://github.com/omdsh-dev/dsh-mnemon/blob/b50a504dbe738aa359cd6ef8e4fd790ed9c19a10/src/rpc.ts), and
  • Network accessline 90
    [`src/settings.ts`](https://github.com/omdsh-dev/dsh-mnemon/blob/b50a504dbe738aa359cd6ef8e4fd790ed9c19a10/src/settings.ts).
  • Network accessline 92
    [`tests/dsh-connection-compat.spec.ts`](https://github.com/omdsh-dev/dsh-mnemon/blob/b50a504dbe738aa359cd6ef8e4fd790ed9c19a10/tests/dsh-connection-compat.spec.ts).
  • Network accessline 109
    See the pinned [`scripts/link-dsh-source.mjs`](https://github.com/omdsh-dev/dsh-mnemon/blob/b50a504dbe738aa359cd6ef8e4fd790ed9c19a10/scripts/link-dsh-source.mjs).
  • Network accessline 110
    [`scripts/link-dsh-source.mjs`](https://github.com/omdsh-dev/dsh-mnemon/blob/b50a504dbe738aa359cd6ef8e4fd790ed9c19a10/scripts/link-dsh-source.mjs).
  • Network accessline 157
    The incident is distilled into executable task [H11-dual-cohort-rpc](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/benchmark/tasks/H11-dual-cohort-rpc/README.md). Its grader invokes
  • Network accessline 158
    [H11-dual-cohort-rpc](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/benchmark/tasks/H11-dual-cohort-rpc/README.md). Its grader invokes

skills/plugin-upgrade/examples/04-dual-cohort-plugin.md

  • Network accessline 10
    - 插件:`dsh-mnemon`,迁移代码完成时为 `0.3.4`,随后随   [`v0.3.5`](https://github.com/omdsh-dev/dsh-mnemon/releases/tag/v0.3.5) 发布。
  • Network accessline 11
    [`v0.3.5`](https://github.com/omdsh-dev/dsh-mnemon/releases/tag/v0.3.5) 发布。
  • Network accessline 12
    - 已发布基线:DSH [`dsh-v0.1.1-rc.2`](https://github.com/deepseek-ai/deepseek-harness/tree/dsh-v0.1.1-rc.2)
  • Network accessline 13
    (commit `b150a551b8d465e31e418e1b2eaf5e79bbb7d28e`),由 npm registry 与 lockfile 提供。 - 源码预览目标:DSH [`dsh-v0.1.2-alpha.1`](https://github.com/deepseek-ai/deepseek-harness/tree/dsh-v0.1.2-alpha.1)   (commit `cd5ef8148158c3a752a658978873241fdf8e2b
  • Network accessline 14
    - 源码预览目标:DSH [`dsh-v0.1.2-alpha.1`](https://github.com/deepseek-ai/deepseek-harness/tree/dsh-v0.1.2-alpha.1)
  • Network accessline 15
    (commit `cd5ef8148158c3a752a658978873241fdf8e2bbc`);alpha.1 未发布到 npm,验证时从官方 tag 构建。 - 插件证据:初次适配 commit   [`30d7476`](https://github.com/omdsh-dev/dsh-mnemon/commit/30d7476ba58f86e417959aae64d4dd3fb80f0434),
  • Network accessline 16
    - 插件证据:初次适配 commit   [`30d7476`](https://github.com/omdsh-dev/dsh-mnemon/commit/30d7476ba58f86e417959aae64d4dd3fb80f0434),   rc.2 兼容修正 commit
  • Network accessline 17
    [`30d7476`](https://github.com/omdsh-dev/dsh-mnemon/commit/30d7476ba58f86e417959aae64d4dd3fb80f0434),
  • Network accessline 18
    rc.2 兼容修正 commit   [`b50a504`](https://github.com/omdsh-dev/dsh-mnemon/commit/b50a504dbe738aa359cd6ef8e4fd790ed9c19a10),   合并记录 [PR #105](https://github.com/omdsh-dev/dsh-mnemon/pull/105)。
  • Network accessline 19
    [`b50a504`](https://github.com/omdsh-dev/dsh-mnemon/commit/b50a504dbe738aa359cd6ef8e4fd790ed9c19a10),
  • Network accessline 20
    合并记录 [PR #105](https://github.com/omdsh-dev/dsh-mnemon/pull/105)。
  • Network accessline 59
    固定一手来源:rc.2 的 [`HostConnectionRpc.handle`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2/packages/client/connection/src/rpc.ts)
  • Network accessline 60
    [`HostConnectionRpc.handle`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2/packages/client/connection/src/rpc.ts)
  • Network accessline 61
    要求 options,且 [`HostConnectionService.register`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2/packages/client/connection/src/rpc-host.ts) 读取 `options.authority`;alpha.1 的
  • Network accessline 62
    [`HostConnectionService.register`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2/packages/client/connection/src/rpc-host.ts)
  • Network accessline 63
    读取 `options.authority`;alpha.1 的 [`HostConnectionRpc.handle`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/client/connection/src/rpc.ts) 和
  • Network accessline 64
    [`HostConnectionRpc.handle`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/client/connection/src/rpc.ts)
  • Network accessline 65
    和 [`HostConnectionService`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/client/connection/src/rpc-host.ts) 只消费前两个参数。
  • Network accessline 66
    [`HostConnectionService`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/client/connection/src/rpc-host.ts)
  • Network accessline 80
    固定实现见 [`src/contracts.ts`](https://github.com/omdsh-dev/dsh-mnemon/blob/b50a504dbe738aa359cd6ef8e4fd790ed9c19a10/src/contracts.ts)、
  • Network accessline 81
    [`src/contracts.ts`](https://github.com/omdsh-dev/dsh-mnemon/blob/b50a504dbe738aa359cd6ef8e4fd790ed9c19a10/src/contracts.ts)、
  • Network accessline 82
    [`src/rpc.ts`](https://github.com/omdsh-dev/dsh-mnemon/blob/b50a504dbe738aa359cd6ef8e4fd790ed9c19a10/src/rpc.ts) 和
  • Network accessline 83
    [`src/settings.ts`](https://github.com/omdsh-dev/dsh-mnemon/blob/b50a504dbe738aa359cd6ef8e4fd790ed9c19a10/src/settings.ts)。
  • Network accessline 85
    [`tests/dsh-connection-compat.spec.ts`](https://github.com/omdsh-dev/dsh-mnemon/blob/b50a504dbe738aa359cd6ef8e4fd790ed9c19a10/tests/dsh-connection-compat.spec.ts)。
  • Network accessline 100
    固定实现见 [`scripts/link-dsh-source.mjs`](https://github.com/omdsh-dev/dsh-mnemon/blob/b50a504dbe738aa359cd6ef8e4fd790ed9c19a10/scripts/link-dsh-source.mjs)。
  • Network accessline 101
    [`scripts/link-dsh-source.mjs`](https://github.com/omdsh-dev/dsh-mnemon/blob/b50a504dbe738aa359cd6ef8e4fd790ed9c19a10/scripts/link-dsh-source.mjs)。
  • Network accessline 145
    该事故已被提炼为可执行的 [H11-dual-cohort-rpc](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/benchmark/tasks/H11-dual-cohort-rpc/README.md):

skills/plugin-upgrade/examples/06-real-world-batch-migration.en.md

  • Network accessline 13
    **Sources**: Community migration practice (migration completed 2026-08-28, verified by real boot + unit-test regression) — [deepseek-harness discussion #5120](https://github.com/deepseek-ai/deepseek-harness/discussions/5120#discussioncommen
  • Network accessline 218
    - https://github.com/lhh010/dsh-ui-whale (migrated at v0.3.5)
  • Network accessline 219
    - https://github.com/lhh010/dsh-ui-progress (v0.9.4)
  • Network accessline 220
    - https://github.com/lhh010/dsh-input-history (v0.1.4)
  • Network accessline 221
    - https://github.com/lhh010/dsh-minigames (v0.3.7)
  • Network accessline 222
    - https://github.com/lhh010/dsh-paste-input (v0.1.6)
  • Network accessline 223
    - https://github.com/lhh010/dsh-file-trace (written on 0.1.2-alpha.1)

skills/plugin-upgrade/examples/06-real-world-batch-migration.md

  • Network accessline 13
    **素材来源**: 社区迁移实践(2026-08-28 完成迁移,实机 boot 验证 + 单测回归)——[deepseek-harness discussion #5120](https://github.com/deepseek-ai/deepseek-harness/discussions/5120#discussioncomment-18208001),六个插件仓库见文末。
  • Network accessline 218
    - https://github.com/lhh010/dsh-ui-whale (v0.3.5 完成迁移)
  • Network accessline 219
    - https://github.com/lhh010/dsh-ui-progress (v0.9.4)
  • Network accessline 220
    - https://github.com/lhh010/dsh-input-history (v0.1.4)
  • Network accessline 221
    - https://github.com/lhh010/dsh-minigames (v0.3.7)
  • Network accessline 222
    - https://github.com/lhh010/dsh-paste-input (v0.1.6)
  • Network accessline 223
    - https://github.com/lhh010/dsh-file-trace (基于 0.1.2-alpha.1 新写)

skills/plugin-upgrade/examples/07-multi-repo-batch-migration.en.md

  • Network accessline 14
    |---|---|---| | 1 Inventory | Record HEAD/remote/baseline per repo; fetch + `--ff-only` audit | Common error 1 below | | 2 Baseline | devDependencies on the npm release line, wide peer ranges, dual-compatible code | [publish-playbook](https
  • Network accessline 15
    | 1 Inventory | Record HEAD/remote/baseline per repo; fetch + `--ff-only` audit | Common error 1 below | | 2 Baseline | devDependencies on the npm release line, wide peer ranges, dual-compatible code | [publish-playbook](https://github.com/
  • Network accessline 16
    | 2 Baseline | devDependencies on the npm release line, wide peer ranges, dual-compatible code | [publish-playbook](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-release/references/publish-playbook.md) dual-c
  • Network accessline 17
    | 3 Batch edits | Minimal diff per repo: version bump / doc baseline / touchpoint code | Corridor cards + batch check loop | | 4 Commit and push | Uniform message template; push per repo; on failure rebase then `--force-with-lease` | Common
  • Network accessline 18
    | 4 Commit and push | Uniform message template; push per repo; on failure rebase then `--force-with-lease` | Common errors 2/3 | | 5 Profile wrap-up | `pnpm update` re-resolves the GitHub install track; keep the three rename sites in sync |
  • Network accessline 19
    | 5 Profile wrap-up | `pnpm update` re-resolves the GitHub install track; keep the three rename sites in sync | [profile-dependency-management](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-release/references
  • Network accessline 38
    The alpha line is not on npm, so public repositories keep their devDependencies on the npm release line (`^0.1.1-rc.2` at the time) and use wide peer ranges (`<0.2.0`) to cover the unpublished cohort; code against signature-drifted APIs use
  • Network accessline 61
    Per [profile-dependency-management](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-release/references/profile-dependency-management.md): run `pnpm update` to re-resolve dependencies on the GitHub install track
  • Network accessline 72
    - Technical touchpoints and cards: see [v0.1.1-rc.2](../references/v0.1.1-rc.2.md), [alpha.1](../references/v0.1.2-alpha.1.md), [alpha.2](../references/v0.1.2-alpha.2.md), and [rollup](../references/rollup-0.1.2.md); - Toolchain pitfalls: [
  • Network accessline 74
    - Release/distribution surface: [publish-playbook](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-release/references/publish-playbook.md) and [profile-dependency-management](https://github.com/oh-my-dsh/dsh-pl

skills/plugin-upgrade/examples/07-multi-repo-batch-migration.md

  • Network accessline 18
    |---|---|---| | 1 盘点 | 逐仓记录 HEAD/remote/基线;fetch + `--ff-only` 审计 | 下文常见错误 1 | | 2 基线 | devDependencies 用 npm 发布线、peer 宽范围、代码双兼容 | [publish-playbook](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-release/refe
  • Network accessline 19
    | 1 盘点 | 逐仓记录 HEAD/remote/基线;fetch + `--ff-only` 审计 | 下文常见错误 1 | | 2 基线 | devDependencies 用 npm 发布线、peer 宽范围、代码双兼容 | [publish-playbook](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-release/references/publish
  • Network accessline 20
    | 2 基线 | devDependencies 用 npm 发布线、peer 宽范围、代码双兼容 | [publish-playbook](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-release/references/publish-playbook.md) 双兼容节 |
  • Network accessline 21
    | 3 批量修改 | 逐仓最小 diff:版本 bump / 文档基线 / 触点代码 | 走廊卡片 + 批量 check 循环 | | 4 提交推送 | 统一消息模板;逐仓 push;失败 rebase 后 `--force-with-lease` | 常见错误 2/3 | | 5 profile 收尾 | `pnpm update` 重解析 github 轨、改名三处同步 | [profile-dependency-management](https://github.co
  • Network accessline 22
    | 4 提交推送 | 统一消息模板;逐仓 push;失败 rebase 后 `--force-with-lease` | 常见错误 2/3 | | 5 profile 收尾 | `pnpm update` 重解析 github 轨、改名三处同步 | [profile-dependency-management](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-relea
  • Network accessline 23
    | 5 profile 收尾 | `pnpm update` 重解析 github 轨、改名三处同步 | [profile-dependency-management](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-release/references/profile-dependency-management.md) |
  • Network accessline 45
    alpha 系不在 npm 上,公开仓库的 devDependencies 保持 npm 发布线(当时为 `^0.1.1-rc.2`),peer 用 宽范围(`<0.2.0`)覆盖未发布 cohort;代码对签名漂移的 API 用双兼容写法(例见 [publish-playbook](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-release/references/
  • Network accessline 46
    宽范围(`<0.2.0`)覆盖未发布 cohort;代码对签名漂移的 API 用双兼容写法(例见 [publish-playbook](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-release/references/publish-playbook.md) 的 `rpc.handle` 案例),保证 任意机器 `npm install` 后 typecheck 可
  • Network accessline 47
    [publish-playbook](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-release/references/publish-playbook.md) 的 `rpc.handle` 案例),保证
  • Network accessline 77
    按 [profile-dependency-management](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-release/references/profile-dependency-management.md):
  • Network accessline 91
    [alpha.2](../references/v0.1.2-alpha.2.md) 与 [rollup](../references/rollup-0.1.2.md); - 工具链坑:[migration-hygiene](../references/migration-hygiene.md)(本文不重复); - 发布/分发面:[publish-playbook](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/b
  • Network accessline 92
    - 工具链坑:[migration-hygiene](../references/migration-hygiene.md)(本文不重复); - 发布/分发面:[publish-playbook](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-release/references/publish-playbook.md) 与   [profile-dependency
  • Network accessline 93
    - 发布/分发面:[publish-playbook](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-release/references/publish-playbook.md) 与
  • Network accessline 94
    [profile-dependency-management](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-release/references/profile-dependency-management.md)。

skills/plugin-upgrade/examples/face-contracts/check.mjs

  • Executable scriptline 1
    Executable file

skills/plugin-upgrade/examples/face-contracts/client-remote.mjs

  • Executable scriptline 1
    Executable file

skills/plugin-upgrade/examples/face-contracts/host-domain.mjs

  • Executable scriptline 1
    Executable file

skills/plugin-upgrade/examples/legacy-plugin/package.json

  • Executable scriptline 1
    Executable file

skills/plugin-upgrade/examples/legacy-plugin/scripts/apply-patch.mjs

  • Executable scriptline 1
    Executable file

skills/plugin-upgrade/examples/legacy-plugin/src/index.ts

  • Executable scriptline 1
    Executable file
  • Network accessline 49
    response.end('legacy')     })     server.listen(43121, '127.0.0.1') // http://localhost:43121/api/legacy
  • Network accessline 50
    })     server.listen(43121, '127.0.0.1') // http://localhost:43121/api/legacy     return server
  • Network accessline 51
    server.listen(43121, '127.0.0.1') // http://localhost:43121/api/legacy

skills/plugin-upgrade/references/api-migration-0.1.2-alpha.2.md

  • Network accessline 182
    - **Source**:   [alpha.2 SessionController actual Remote methods](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/api/session-controller/src/index.ts) ·
  • Network accessline 183
    [alpha.2 SessionController actual Remote methods](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/api/session-controller/src/index.ts) ·
  • Network accessline 184
    [alpha.2 API Remotes Client assembly](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/api/remotes/src/client/index.ts) ·
  • Network accessline 185
    [alpha.2 Workspace Remote owner](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/api/workspace-controller/src/index.ts) ·
  • Network accessline 186
    [alpha.2 actual rename consumer](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/api/session-controller/src/client/sessions/session.ts) ·
  • Network accessline 280
    - **Source**:   [alpha.1 existing `RemoteResult<T>` definition](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/typert/protocol/src/types.ts) ·
  • Network accessline 281
    [alpha.1 existing `RemoteResult<T>` definition](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/typert/protocol/src/types.ts) ·
  • Network accessline 282
    [alpha.2 RemoteError vocabulary decision](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/.agents/notes/implemented/architecture/2026-08-28-ctx-remote-failure-vocabulary.md) ·
  • Network accessline 283
    [alpha.2 `RemoteError` implementation](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/typert/protocol/src/remote-error.ts)
  • Network accessline 358
    - **Source**:   [alpha.1 Settings entry point](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/settings/settings/src/index.ts) ·
  • Network accessline 359
    [alpha.1 Settings entry point](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/settings/settings/src/index.ts) ·
  • Network accessline 360
    [alpha.2 Settings entry point](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/settings/settings/src/index.ts) ·
  • Network accessline 361
    [alpha.2 official Settings README](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/settings/settings/README.md)
  • Network accessline 407
    - **Source**:   [alpha.2 Gateway Client `$host` implementation](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/api/gateway/src/client/index.ts) ·
  • Network accessline 408
    [alpha.2 Gateway Client `$host` implementation](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/api/gateway/src/client/index.ts) ·
  • Network accessline 409
    [Fixed Host facts in the Remote failure vocabulary note](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/.agents/notes/implemented/architecture/2026-08-28-ctx-remote-failure-vocabulary.md)
  • Network accessline 445
    - **Source**:   [alpha.2 `SessionEvent` type](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/core/session/src/types.ts) ·
  • Network accessline 446
    [alpha.2 `SessionEvent` type](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/core/session/src/types.ts) ·
  • Network accessline 447
    [alpha.2 `Session.append()` implementation](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/core/session/src/index.ts) ·
  • Network accessline 448
    [cold-load unknown event guard](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/session/session-persistence/src/coordinator.ts) ·
  • Network accessline 449
    [implementation decision restoring ignorable](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/.agents/notes/implemented/architecture/2026-08-30-retain-ignorable-external-session-events.md)
  • Network accessline 499
    - **Source**:   [alpha.2 Headless README](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/bundle/headless/README.md) ·
  • Network accessline 500
    [alpha.2 Headless README](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/bundle/headless/README.md) ·
  • Network accessline 501
    [rc.2 Headless README](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2/packages/bundle/headless/README.md)
  • Network accessline 532
    - **Source**:   [alpha.2 ui-conversation package manifest](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/client/ui-conversation/package.json)
  • Network accessline 533
    [alpha.2 ui-conversation package manifest](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/client/ui-conversation/package.json)
  • Network accessline 565
    - **Source**:   [cordis.patch.yml placement in the alpha.2 Headless bundle](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/bundle/headless/README.md) ·
  • Network accessline 566
    [cordis.patch.yml placement in the alpha.2 Headless bundle](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/bundle/headless/README.md) ·
  • Network accessline 567
    [official plugin publishing and patch composition docs](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/docs/user/develop/basic/publish.md) ·
  • Network accessline 568
    [alpha.2 CLI Profile/Bundle layer reference](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/apps/cli/reference/README.md)
  • Network accessline 587
    - **Source**:   [alpha.2 PluginInventorySnapshot type](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/host/plugin-inventory/src/types.ts)
  • Network accessline 588
    [alpha.2 PluginInventorySnapshot type](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/host/plugin-inventory/src/types.ts)
  • Network accessline 645
    **Source**: [rc.2 runtime aggregation exports](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2/packages/client/runtime/src/client/index.ts) · [alpha.2 ChatSnapshot / ChatNodeStore](https://github.com/deepseek-ai/deepsee
  • Network accessline 665
    - **Verification**: the target configuration accepts the new values; old Session logs still load; every remaining legacy token is explainable as an explicit keep, with no blind global replace. - **Source**:   [alpha.1 PTC rename ledger](htt
  • Network accessline 667
    [alpha.1 PTC rename ledger](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/.agents/notes/implemented/architecture/2026-08-25-rename-code-mode-to-ptc.md)

skills/plugin-upgrade/references/host-plane-probes.md

  • Network accessline 3
    Builds on [rollup R-02](rollup-0.1.2.md). Host-plane plugins (the TUI kind) do not change artifacts; instead they push the cohort difference into `!!js` probes at the composition layer. Three forms, taken from the real patch in [dsh-TUI #62

skills/plugin-upgrade/references/pre-flight-patterns.json

  • Dangerous shell operationline 66
    "node:child_process|spawn\\(|exec(File)?Sync\\(|execa|Bun\\.spawn",

skills/plugin-upgrade/references/pre-flight.md

  • Network accessline 7
    The first six classes follow the classification of the [dsh-community-standard migration guide](https://github.com/oh-my-dsh/dsh-community-standard/blob/main/guides/migration.md);
  • Dangerous shell operationline 176
    rg -n "node:child_process|spawn\(|exec(File)?Sync\(|execa|Bun\.spawn" .

skills/plugin-upgrade/references/precision-checklist.md

  • Network accessline 108
    Sources: [alpha.2 renderer declarations and apply](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/client/ui-renderer/src/client/index.ts),
  • Network accessline 109
    [alpha.2 module graph contract](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/client/modules/src/client/manifest.ts),
  • Network accessline 110
    [TypeScript type-only import semantics](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html#type-only-imports-and-export).
  • Network accessline 181
    Sources: [alpha.2 Connection route using the gate](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/client/connection/src/index.ts), [alpha.2 requestRejection, Fetch and RPC registries](https://github.com/dee
  • Network accessline 182
    [alpha.2 requestRejection, Fetch and RPC registries](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/client/connection/src/rpc-host.ts).

skills/plugin-upgrade/references/rollup-0.1.2.md

  • Network accessline 3
    > Status: based on `dsh-v0.1.2-rc.1` (first release candidate of the 0.1.2 series). The 0.1.2 final release is not out yet — measured on npm dist-tags on 2026-09-04, `next` = `0.1.2-rc.1`, `alpha` = `0.1.2-alpha.5`, and the umbrella `@deeps
  • Network accessline 85
    Source: [DSH-0.1.2-A2-02](v0.1.2-alpha.2.md) and [ctx-remote-failure-vocabulary](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/.agents/notes/implemented/architecture/2026-08-28-ctx-remote-failure-vocabulary.md).
  • Network accessline 86
    [ctx-remote-failure-vocabulary](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/.agents/notes/implemented/architecture/2026-08-28-ctx-remote-failure-vocabulary.md).
  • Network accessline 90
    The following problems span single versions or fall outside the cards; they come from community practice ([discussion #5120](https://github.com/deepseek-ai/deepseek-harness/discussions/5120), the dsh-web migration of about 20 packages) and 
  • Network accessline 99
    git clone https://github.com/deepseek-ai/deepseek-harness.git /tmp/dsh-build
  • Network accessline 107
    - **Note (pending confirmation)**: the pnpm version pin below comes from a single field report and has not been reproduced in other repositories — the report says `11.9.0` bypasses overrides for file: tarball transitive dependencies when th
  • Network accessline 108
    - **npm reality** (2026-08-31): on npm, the `@deepseek-ai/dsh-*` packages only have `0.1.1-rc.1`, `0.1.1-rc.2`, and `0.1.2-alpha.2`; alpha.1 was never published. rc.2 → alpha.1 can only be built from a GitHub tag; for the alpha.2 target, qu
  • Network accessline 109
    - **Verify-only, no install** ([dsh-TUI #622](https://github.com/ccch1mneyyy/dsh-TUI/pull/622)): keep the install baseline at rc.2; CI checks out the upstream tag and runs `tsc --noEmit` with the `paths` mapping from its `tsconfig.base.json
  • Network accessline 111
    - **Source**: item 1 of [#5120](https://github.com/deepseek-ai/deepseek-harness/discussions/5120). Not covered by the official release notes; community practice.
  • Network accessline 139
    - **Host-plane (Cordis composition) equivalent**: keep the artifact unchanged and put the cohort differences into `!!js` probes in `cordis.patch.yml` — the three forms (subpath resolve, reading preset files, probing package directories) and
  • Network accessline 140
    - **Rejected alternatives**: per-consumer try/catch duplicated through the source; emitting different artifacts per host cohort (reintroduces stateful builds); hard-waiting on inject wait (old hosts pending forever). - **Verification**: lin
  • Network accessline 142
    - **Source**: items 3 and 4 of [#5120](https://github.com/deepseek-ai/deepseek-harness/discussions/5120).
  • Network accessline 148
    - **Migration recipe**: keep `pnpm patch` (`patchedDependencies`) in the repository and rewrite that one require as the same dual-cohort probe. Don't forget the profile's parent-layer link — the link script may point the link back at the un
  • Network accessline 150
    - **Source**: item 7 of [#5120](https://github.com/deepseek-ai/deepseek-harness/discussions/5120).
  • Network accessline 161
    - CI mount lanes pin a dsh CLI version matching the target cohort, and write `minimumReleaseAgeExclude` when bootstrapping scratch profiles (see R-08), so CI on the first day after an alpha release does not fail by refusing to install fresh
  • Network accessline 163
    - **Source**: items 8 and 9 of [#5120](https://github.com/deepseek-ai/deepseek-harness/discussions/5120).
  • Network accessline 170
    - **List of removed packages** (compared by the `name` in each tag's `packages/*/*/package.json`, 2026-08-31): rc.2 → alpha.1 removes 5 — `@deepseek-ai/dsh-acp-demo`, `dsh-acp-snapshot`, `dsh-client-runtime`, `dsh-host-apiproxy`, `dsh-sdk-j
  • Network accessline 172
    - **Source**: item 10 of [#5120](https://github.com/deepseek-ai/deepseek-harness/discussions/5120).
  • Network accessline 198
    - **Source**: the pre-migration baseline stage of the dsh-migrate-bot unattended pipeline (a local extension on top of mechanical pin →   A/B review → fix loop → patch report, dedicated to failure attribution; that stage had not been pushed
  • Network accessline 199
    A/B review → fix loop → patch report, dedicated to failure attribution; that stage had not been pushed publicly at the time of writing — re-check this   description once it is public; see "Pending confirmation" at the end of this file). [#5
  • Network accessline 200
    description once it is public; see "Pending confirmation" at the end of this file). [#5120](https://github.com/deepseek-ai/deepseek-harness/discussions/5120)
  • Network accessline 216
    (entry permanently `pending` on old cohorts, see R-02). - **Verification**: no `service-unavailable` loop in the cold-boot logs; the injected retry policy takes effect in tests. - **Source**: [#5120](https://github.com/deepseek-ai/deepseek-
  • Network accessline 217
    - **Verification**: no `service-unavailable` loop in the cold-boot logs; the injected retry policy takes effect in tests. - **Source**: [#5120](https://github.com/deepseek-ai/deepseek-harness/discussions/5120)   item 6 (dsh-web migration re
  • Network accessline 218
    - **Source**: [#5120](https://github.com/deepseek-ai/deepseek-harness/discussions/5120)
  • Network accessline 229
    3. when the peer floor is written as an old range like `^0.1.0-rc.8`, npm semver's prerelease matching rules (the comparator must share the same tuple and carry a prerelease) judge it **not to match** `0.1.2-alpha.2` — install-time peer war
  • Network accessline 230
    - **Migration recipe**:   - Mirror lag: both CLI installs and pnpm inside profiles explicitly use the official registry via `export npm_config_registry=https://registry.npmjs.org`;   - Supply-chain rules: prefer **per-scope exemption** over
  • Network accessline 231
    - Mirror lag: both CLI installs and pnpm inside profiles explicitly use the official registry via `export npm_config_registry=https://registry.npmjs.org`;
  • Network accessline 233
    - Peer floor: when bumping cohorts, explicitly rewrite it to `^0.1.2-alpha.2` (after the rewrite, the install-time `Issues with peer dependencies` warning disappears and can serve as the landed signal). - **Verification**: `pnpm list --dept
  • Network accessline 235
    - **Source**: measured (2026-08-30, dsh-better-sidebar [PR #472](https://github.com/omdsh-dev/DSH-better-sidebar/pull/472): mirror E404, CI dependency exemption working on the day of the alpha release, warnings gone after the peer-floor rew
  • Network accessline 258
    - When a test/controlled surface wants its own same-named preset, add `includeShippedRoot: false` to the agent-presets configuration; otherwise the same-named row in the custom root is shadowed by the shipped row. - **Verification**: a base
  • Network accessline 260
    - **Source**: [alpha.2 discovery.ts health check](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/preset/agent-presets/src/discovery.ts) · [the alpha.2 standard preset's tool-subagent row](https://github.com
  • Network accessline 284
    - **Verification**: typecheck all green without relying on `@ts-ignore`; locally merged declarations match the official structures field by field; the runtime event flow is the same as rc.2. - **Source**: comparison of each package's `0.1.2
  • Network accessline 285
    - **Source**: comparison of each package's `0.1.2-alpha.2` tarball exports + [alpha.2 todo tool types.ts](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/todo/tool-todo/src/types.ts) · [alpha.2 `dsh-util-val
  • Network accessline 318
    - **Source**:    The background of the community upgrade discussion in [DeepSeek Harness Discussion #5120](https://github.com/deepseek-ai/deepseek-harness/discussions/5120), plus observations from earlier plugin development and upgrades don
  • Network accessline 319
    The background of the community upgrade discussion in [DeepSeek Harness Discussion #5120](https://github.com/deepseek-ai/deepseek-harness/discussions/5120), plus observations from earlier plugin development and upgrades done inside DSH itse
  • Network accessline 329
    4. UI plugins that provide localized resources should register through the host's public language seat instead of a self-built i18n patch — see [DSH-0.1.2-A1-10](v0.1.2-alpha.1.md). - **Verification**: switch to a non-English language and h
  • Network accessline 331
    - **Source**: [client-locale-full-rollout note](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/.agents/notes/implemented/architecture/2026-07-30-client-locale-full-rollout.md) · [alpha.2 `HeaderAction.tsx` (`t('head
  • Network accessline 340
    2. **Static**: typecheck + build. Note that all-green static checks cannot prove the wire contract — parameter drift at the descriptor layer is silent at this layer ([DSH-0.1.2-A1-01](v0.1.2-alpha.1.md)). 3. **Card-level unit tests**: at le
  • Network accessline 341
    3. **Card-level unit tests**: at least one assertion per hit touchpoint. Remote call sites cover the known business codes on `ok: false`, the unknown-code fallback, and the gateway-layer catch branch; test doubles encode the same descriptor
  • Network accessline 342
    4. **Real cold boot**: one full conversation round (send message → tool call → reply). Observe the logs for no `missed the module table`, no `service-unavailable` loop, and no entry `pending`. Web Client plugins additionally follow [DSH-0.1

skills/plugin-upgrade/references/troubleshooting.md

  • Network accessline 16
    | 客户端 UI 已出现新功能,但新增的宿主路由对新扩展名返回 404(同路由旧类型 200),且磁盘上的宿主半产物已包含新白名单 | 更新平面不对称:client bundle 每次刷新重新拉取(no-cache),而宿主半在 apply 时一次性注册路由(闭包持有旧白名单),运行中的进程要等**宿主重启**才换新。归因探针:旧类型 200 + 新类型 404 + 磁盘产物含新白名单 ⇒ 运行进程早于改动。「插件热更新」只覆盖 client 面 | benchmark 任务
  • Network accessline 17
    | 渲染基于会话 payload 的文件出现裂图,但源文件本身完好(XML/语法校验通过),重读后 payload 又是干净的 | 会话日志里的 read 结果文本可能被上游组装环节损坏(真实案例:源 232 行被 247 行尾部在公共前缀 "stro" 处错位拼接,中间 15 行丢失)。插件必须把会话 payload 当**不可信渲染输入**:先 DOMParser/语法校验再渲染;优先走宿主 asset 路由读磁盘原始字节;损坏要上报上游,而不是在插件里「修文件」 | b
  • Network accessline 18
    | 重启后宿主启动即崩:`duplicate loader entry id: <id>`(`dsh-app-boot` → `cordis-plugin-loader` → `EntryGroup.update`) | 在 profile 的 `cordis.patch.yml` 里手动 `insert` 了一个 bundle 层已提供的插件 id——Cordis 把重复 insert 视为致命错误(非静默覆盖)。0.1.5 系列新增的 `workspace-files` 
  • Network accessline 24
    - **Source**: real migration of dsh-input-history 0.1.1 → 0.2.0 (2026-08); rows cite their sources individually — the session-payload corruption row comes from [discussion #5120](https://github.com/deepseek-ai/deepseek-harness/discussions/5

skills/plugin-upgrade/references/v0.1.1-rc.1.md

  • Network accessline 51
    - keep the runtime entry (`main`/`exports["."]`) and `dsh.client` declaration intact; update any manager UI/CLI that enumerated repository sources. - **Verification**: cold-boot a profile containing the converted package; the boot graph sho
  • Network accessline 52
    - **Verification**: cold-boot a profile containing the converted package; the boot graph shows the plugin row; for a Web Client plugin verify the client half enters `__DSH_BOOT__` and its advertised bundle URL returns 200; no `pending (wait
  • Network accessline 53
    - **Source**: [repository loader removal commit](https://github.com/deepseek-ai/deepseek-harness/commit/993550e6c851e1ae05aa7d587d10ae1626ae1191) · [plugin-registry 0811 console adaptation](https://github.com/vlln/plugin-registry/commit/bfa
  • Network accessline 54
    - **Field note** (2026-08-12, whale-girl, bundle conversion): moving from the repository-plugin layout (`.dsh-plugin/` with self-executing UI entry injected via `httpServer.tapIndex`) to the standard bundle format (`dsh.bundle` + `cordis.pa
  • Network accessline 65
    - **Migration recipe**: rename the field to `dsh.client` with the same value shape (platform `web` and the client entry path); check the bundled declaration after packing, not only the source `package.json`; remove any legacy `dsh.plugin.js
  • Network accessline 66
    - **Verification**: pack the plugin and confirm the packed manifest carries `dsh.client`; after install, the profile's bundle layer or insert row resolves and the client route serves the expected artifact. - **Source**: [dsh-loop 0810 basel
  • Network accessline 67
    - **Source**: [dsh-loop 0810 baseline migration](https://github.com/vlln/dsh-loop/commit/5b48a4595b1a739631c8a869a432d4571de344b9) · [dsh-task-status 0810 baseline migration](https://github.com/vlln/dsh-task-status/commit/16f6324b0ffb0fdf0f
  • Network accessline 79
    - **Migration recipe**: declare `dsh.client` (`platform: web` + client entry) in `package.json` even when the client bundle is built into the bundle; verify the packed manifest, not just the source. - **Verification**: install the plugin, r
  • Network accessline 81
    - **Source**: [dsh-navbar 3e81acd — declare `dsh.client` because client-modules scans it](https://github.com/vlln/dsh-navbar/commit/3e81acdedac111150436a9790ff7b4a4be302e7c) · related scan contract [DSH-0.1.2-A1-26](v0.1.2-alpha.1.md)
  • Network accessline 92
    - **Migration recipe**: declare every service consumed via `ctx.get(...)`/property access in the plugin's `inject` array; when a service is genuinely optional across profiles, probe it weakly (see [DSH-0.1.1-R1-05](v0.1.1-rc.1.md)) instead 
  • Network accessline 93
    - **Verification**: cold-boot the target profile and confirm the plugin's effect is registered and the feature works; the error appears at startup only on the real composition, so install/typecheck success is not sufficient evidence. - **So
  • Network accessline 94
    - **Source**: [whale-girl 0f9e3b5 — inject gets `settings`/`httpServer`](https://github.com/vlln/whale-girl/commit/0f9e3b53cf31f1ce9a9f2e232156618d18a1b8b1)
  • Network accessline 106
    - **Migration recipe**: use `typeof ctx.get === 'function' ? ctx.get('httpServer') : undefined` for optional services and degrade gracefully; reserve hard `inject` entries for services that are guaranteed by the plugin's profile scope. - **
  • Network accessline 108
    - **Source**: [whale-girl 8678b13 — weak `ctx.get` for httpServer](https://github.com/vlln/whale-girl/commit/8678b139eaad82decf5b29529c6b91e475851cf5)
  • Network accessline 119
    - **Migration recipe**: read `event.type` for the event discriminator; keep the `session/event` subscription registered even when the `sessions` service is temporarily absent (subscribe once, degrade per event, not by dropping the subscript
  • Network accessline 121
    - **Source**: [whale-girl 78a6b70 — session event response fixes](https://github.com/vlln/whale-girl/commit/78a6b703aab16b92cf065d8e7138010e58a02b67) · companion test file in the same commit
  • Network accessline 132
    - **Migration recipe**: move session aggregation into the Node half: subscribe to session events there, derive the session mood / waiting / completion signal, and expose it through the plugin's own `/state` route (or equivalent) that the cl
  • Network accessline 133
    - **Verification**: cold-boot the plugin and exercise a session action; the client shows the aggregated state (e.g. thinking/waiting animation) within one poll cycle; no client-side `ctx.sessions` references remain. - **Source**: [whale-gir
  • Network accessline 134
    - **Source**: [whale-girl d01bccb — session state aggregated by Node half](https://github.com/vlln/whale-girl/commit/d01bccb677fc076e8e90b17a0975a9fb70e220fc)
  • Network accessline 146
    - **Migration recipe**: read consumed output with `tasks.read`, maintain a per-task shadow buffer with a capped window, and render from the shadow; if multiple consumers must share the stream, layer a tee/observer pattern on `read` so the p
  • Network accessline 147
    - **Verification**: expand a running task in the UI and confirm tail keeps updating without duplicating or losing lines; run two readers simultaneously and confirm neither starves; cold-boot with no `peek` references. - **Source**: [dsh-tas
  • Network accessline 148
    - **Source**: [dsh-task-status 29dda2f — tail via `read` + shadow buffer](https://github.com/vlln/dsh-task-status/commit/29dda2f6bec4242700d61e6efdd3b926f084e8c5)
  • Network accessline 149
    - **Field note** (2026-08-10, dsh-task-status): two follow-up commits hardened the same seam — [ba1d526](https://github.com/vlln/dsh-task-status/commit/ba1d52670495e13c10858b3a2e9e747eb7dd909e) (mirror + direct-read to defeat races, "tail 竞
  • Network accessline 160
    - **Migration recipe**: rename the injected service identifiers and all `ctx` usages (`httpServer`→`webServer`, `tasks`→`jobs`); rename task-event listeners (`onTaskDone`→`onJobDone`); the route-registration interface (`webServer.register`)
  • Network accessline 161
    - **Verification**: cold-boot and confirm injection resolves with no `pending (waiting for service: …)`; hit a registered route and exercise one task event end-to-end; grep the packed artifact (not just source) for leftover old identifiers.
  • Network accessline 162
    - **Source**: [whale-girl 183354b](https://github.com/vlln/whale-girl/commit/183354b9c12272014ec534114622db6a11dfa59e) · [dsh-loop c5bf083](https://github.com/vlln/dsh-loop/commit/c5bf0832af381763697b388826b43da878186821) · [dsh-task-status

skills/plugin-upgrade/references/v0.1.1-rc.2.md

  • Network accessline 24
    - **Migration recipe**: For image refs and `read_image` results, "read known fields, retain unknown optional fields"; if the plugin's own schema uses `additionalProperties: false`, add optional fields for `originalDimensions.width` and `ori
  • Network accessline 26
    - **Source**: rc.1 type baseline [`types.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.1/packages/attachment/attachment/src/types.ts); rc.2 type definitions [`types.ts`](https://github.com/deepseek-ai/deepseek-harn
  • Network accessline 35
    - **Migration recipe**: Do not do fragile matching on the full `<content>` string; read the structured `path`, `image`, and dimension fields. If snapshots must be kept, cover the "unscaled" and "scaled" outcomes separately, and treat the co
  • Network accessline 37
    - **Source**: rc.1 implementation [`read-image.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.1/packages/fs/tool-fs/src/read-image.ts); rc.2 implementation [`read-image.ts`](https://github.com/deepseek-ai/deepseek-h
  • Network accessline 46
    - **Migration recipe**: Separate image identity from the provider file ID; use `attachmentId`/request version as the local cache key and treat Files API upload results as temporary mappings that can expire or go stale. Request observation s
  • Network accessline 48
    - **Source**: rc.2 adapter [`adapter.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2/packages/llm/llm-deepseek/src/adapter.ts); Files API contract [`files-api.ts`](https://github.com/deepseek-ai/deepseek-harness/bl

skills/plugin-upgrade/references/v0.1.2-alpha.1.md

  • Network accessline 17
    > actual runtime paths. > > Upstream compare: [dsh-v0.1.1-rc.2...dsh-v0.1.2-alpha.1](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.1-rc.2...dsh-v0.1.2-alpha.1)
  • Network accessline 18
    > > Upstream compare: [dsh-v0.1.1-rc.2...dsh-v0.1.2-alpha.1](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.1-rc.2...dsh-v0.1.2-alpha.1) > · Release Notes: [dsh-v0.1.2-alpha.1](https://github.com/deepseek-ai/deepseek-harne
  • Network accessline 19
    > Upstream compare: [dsh-v0.1.1-rc.2...dsh-v0.1.2-alpha.1](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.1-rc.2...dsh-v0.1.2-alpha.1)
  • Network accessline 20
    > · Release Notes: [dsh-v0.1.2-alpha.1](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.1)
  • Network accessline 104
    Only the client plane (browser plugins) follows this table's `ctx.remote.*`, and the plugin must declare   `dsh.client` in package.json to enter the browser plugin roster.   The full process is in the repo's [benchmark/validation-report-202
  • Network accessline 105
    `dsh.client` in package.json to enter the browser plugin roster.   The full process is in the repo's [benchmark/validation-report-2026-08-30.md](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/benchmark/results/validation-re
  • Network accessline 106
    The full process is in the repo's [benchmark/validation-report-2026-08-30.md](https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/benchmark/results/validation-report-2026-08-30.md).
  • Network accessline 107
    - **Field note** (2026-08-30, dsh-better-sidebar e2e, npm 0.1.2-alpha.2 on a real machine): Test harnesses / liveness scripts that hit `/api` directly must also migrate the **wire contract**: dotted endpoints now 404 — always use the slash 
  • Network accessline 108
    - **Source**: [APIProxy→Remote architecture note (alpha.1)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/.agents/notes/implemented/architecture/2026-08-10-unary-apiproxy-remote-migration.md) · [alpha.1 session-con
  • Network accessline 119
    - **Migration recipe**: If the target is exactly alpha.1, do not turn unknown persisted events into a consumer whitelist — that would wrongly let required events through. Temporarily stop writing that unknown persisted event, or switch to p
  • Network accessline 121
    - **Source**: [alpha.2 restore decision explaining the alpha.1 removal](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/.agents/notes/implemented/architecture/2026-08-30-retain-ignorable-external-session-events.md)
  • Network accessline 132
    - **Migration recipe**: Check the host paths one by one against an exact-tag compare; rebuild imports by owning module. Mark capabilities that have no stable public seam as "pending confirmation"; do not guess new paths. Ordinary plugins sh
  • Network accessline 133
    - **Verification**: Run a patch-surface composition against the target tag source; every old target must map to a target-version file or state an explicit removal reason. - **Source**: [alpha.1 release notes, "Other changes"](https://github
  • Network accessline 134
    - **Source**: [alpha.1 release notes, "Other changes"](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.1)
  • Network accessline 135
    - **Field note**: dsh-tui points `DSH_HARNESS_SOURCE_ROOT` at the target tag and validates each patch-surface path by composition. - **Field note** (2026-08-28, [dsh-ui-whale v0.3.5](https://github.com/lhh010/dsh-ui-whale) / dsh-ui-progress
  • Network accessline 136
    - **Field note** (2026-08-28, [dsh-ui-whale v0.3.5](https://github.com/lhh010/dsh-ui-whale) / dsh-ui-progress v0.9.4 / dsh-input-history v0.1.4, Windows, npm link install): The public snapshot consumption surface is affected too — the old f
  • Network accessline 156
    - **Verification**: Cold-boot the new profile and upgrade-boot the old profile once each; check cwd, environment variables, plugin mounts, and resolved config. - **Field note** (2026-08-30, alpha.2 container test): `dsh --help` confirms pro
  • Access to secretsline 157
    [Credential-related source omitted]
  • Network accessline 158
    - **Source**: [alpha.1 release notes, "Other changes"](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.1)
  • Network accessline 170
    - **Verification**: Cover plain-text success, reasoning present, empty final text, direct launch failure, and non-zero exit; confirm sensitive reasoning goes to a controlled stderr sink. - **Field note** (2026-08-30, alpha.2 container test)
  • Network accessline 172
    - **Source**: [alpha.1 headless README](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/bundle/headless/README.md) · [rc.2 headless src (stdout already the final text)](https://github.com/deepseek-ai/deepsee
  • Network accessline 193
    `tools-code-mode`, and the `:code:` inside sub-call ids. - **Verification**: New configs/presets boot; old session logs still load; preserved identifiers were not wrongly changed. - **Source**: [PTC rename ledger](https://github.com/deepsee
  • Network accessline 195
    - **Source**: [PTC rename ledger](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/.agents/notes/implemented/architecture/2026-08-25-rename-code-mode-to-ptc.md)
  • Network accessline 206
    - **Migration recipe**: Deployments that need a confirmation step should add a `tools/pre-execute` policy or disable `web_fetch`, and test public/private network events against the target version; the file sandbox does not govern web networ
  • Network accessline 208
    - **Source**: [alpha.1 Web subsystem, "Fetch network policy"](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/docs/subsystems/web.md) · [alpha.1 release notes](https://github.com/deepseek-ai/deepseek-harness/releases
  • Network accessline 219
    [Credential-related source omitted]
  • Network accessline 220
    - **Verification**: Wrong Host/Origin returns 403; missing/bad Cookie returns 401; a correct bootstrap token can redeem a Cookie repeatedly within the same process; a valid Cookie can call the official `/api`/WS; custom routes must not be c
  • Network accessline 221
    [Credential-related source omitted]
  • Network accessline 222
    - **Field note** (2026-08-31, external Node raw client, macOS/Node 22.22, host running a 0.1.2-alpha.2 source checkout): Three additions for the raw-client lane. ① The cookie outlives the host process: the launch token rotates per process a
  • Network accessline 223
    - **Field note** (2026-08-28, dsh-mnemon rc.2/alpha.1 dual cohort): Migrating custom RPC registrations to alpha.1's two-argument `handle` shape passed alpha-side mocks but regressed the still-installable rc.2 Host, whose real service reads 
  • Network accessline 224
    - **Source**: [alpha.1 browser auth](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/client/connection/src/browser-auth.ts) · [alpha.1 Connection routes](https://github.com/deepseek-ai/deepseek-harness/blob/
  • Network accessline 235
    - **Migration recipe**: Before adopting, confirm the registration entry from the target tag's public types/examples; if only an internal UI interface exists, mark it "pending confirmation" and do not patch the settings page. - **Verificatio
  • Network accessline 237
    - **Source**: [alpha.1 release notes, "New features"](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.1)
  • Network accessline 248
    - **Migration recipe**: Replace custom i18n patches with the target tag's public language-registration API; when no public entry exists, do not guess the interface. - **Verification**: The language is selectable, takes effect after switchin
  • Network accessline 250
    - **Source**: [alpha.1 release notes, "New features"](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.1)
  • Network accessline 261
    - **Migration recipe**: Confirm the exact parameter names and authorization constraints from the target tag's type definitions before passing them through; do not invent object shapes from release notes. - **Verification**: Launch a subagen
  • Network accessline 263
    - **Source**: [alpha.1 release notes, "New features"](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.1)
  • Network accessline 274
    - **Migration recipe**: Plugin code usually needs no changes; deployment maintainers should review the target tag's configuration options, decide whether to disable this per their own privacy policy, and explain the host behavior to users a
  • Network accessline 276
    - **Source**: [alpha.1 release notes, "New features"](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.1)
  • Network accessline 287
    - **Migration recipe**: Only after reproducing and confirming the fix on the corresponding platform, delete workarounds one by one that evidence shows are no longer needed; do not clean up all compatibility branches at once. - **Verificatio
  • Network accessline 289
    - **Source**: [alpha.1 release notes, "Bug fixes"](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.1)
  • Network accessline 300
    - **Migration recipe**: Enable only after the deployment explicitly agrees to log egress. Each time, send the continuous suffix starting after this session's accepted watermark; after an HTTP 2xx, append the `session-log-deepseek/delivery-a
  • Network accessline 302
    - **Source**: [alpha.1 session-log-deepseek README](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/session/session-log-deepseek/README.md) · [alpha.1 release notes](https://github.com/deepseek-ai/deepseek-h
  • Network accessline 314
    - **Migration recipe**: On an isolated profile, start `dsh web --no-open` at the exact target tag, keep and visit the full URL printed by `dsh web:`, and let the root-path token exchange yield the Cookie. Then read `window.__DSH_BOOT__.entr
  • Network accessline 315
    - **Verification**: The advertised resource returns 200; the bundle completes `__ModuleLoader__.load` registration under the target package name; wait for a DOM marker owned by the plugin or equivalent core behavior; collect and fail on pag
  • Network accessline 316
    - **Source**: [alpha.1 Web App startup URL](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/bundle/web-app/README.md) · [alpha.1 client modules boot manifest and bundle URLs](https://github.com/deepseek-ai/d
  • Network accessline 318
    `dsh-v0.1.1-rc.2` and `dsh-v0.1.2-alpha.1` using the same published artifact; the scripts accept both bare and token   URLs and verify the boot entry, resource 200, plugin DOM mount, and page errors. See   [GenUI PR #86](https://github.com/
  • Network accessline 319
    URLs and verify the boot entry, resource 200, plugin DOM mount, and page errors. See   [GenUI PR #86](https://github.com/omdsh-dev/dsh-genui/pull/86) and   [Annotation PR #40](https://github.com/omdsh-dev/dsh-annotation/pull/40).
  • Network accessline 320
    [GenUI PR #86](https://github.com/omdsh-dev/dsh-genui/pull/86) and   [Annotation PR #40](https://github.com/omdsh-dev/dsh-annotation/pull/40). - **Field note** (2026-08-31, Node `fetch` e2e): Following the token URL's 303 by default does no
  • Network accessline 321
    [Annotation PR #40](https://github.com/omdsh-dev/dsh-annotation/pull/40). - **Field note** (2026-08-31, Node `fetch` e2e): Following the token URL's 303 by default does not   store `Set-Cookie` for the test script, so the subsequent boot-ma
  • Network accessline 349
    **The scope-filtering pitfall**: `ctx.userQuestions.ask()` without `agent` dispatches on the userQuestions service's own ctx. An answerer listener on that same Context can receive the request, but a listener registered by a sibling entry in
  • Network accessline 350
    - **Verification**: On a real spine: `ask` hangs → the panel renders → a number-key selection resolves it; Esc cancels and rejects with `ASK_ABORTED`; after session switch/dispose, pending questions fail closed and the listener disposer is 
  • Network accessline 351
    - **Source**: [rc.2 registerProvider definition](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2/packages/interaction/user-questions/src/index.ts) · [alpha.1 user-questions service (no registerProvider, waterfall dispat
  • Network accessline 354
    - **Field note** (2026-08-28, [dsh-TUI #622](https://github.com/ccch1mneyyy/dsh-TUI/pull/622)): Probe with `typeof service.registerProvider === 'function'` to pick the path; waterfall listeners filter by `request.agent.id`, and requests wit
  • Network accessline 365
    - **Migration recipe**: Fold it locally with the same semantics: take `data.agentPreset` from the last `agent-preset/selected` event in the session, falling back to `header.agentPreset` when there is none; do not reverse-engineer it from th
  • Network accessline 366
    - **Verification**: A session with `agent-preset/selected` events resumes with the last selection; a session without events gets the header value; the roster lists `standard` on both the rc.2 and alpha.1 hosts. - **Source**: [rc.2 `resolveS
  • Network accessline 367
    - **Source**: [rc.2 `resolveSessionPreset`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2/packages/preset/agent-presets/src/session.ts) · [alpha.1 agent-presets service (`includeShippedRoot`)](https://github.com/deeps
  • Network accessline 368
    - **Field note** (2026-08-28, [dsh-TUI #622](https://github.com/ccch1mneyyy/dsh-TUI/pull/622)): `resolveRecordedPreset` in `preset-resolution.ts` does the folding; `cordis.patch.yml` probes whether the package directory has `presets/` via `
  • Network accessline 380
    - **Migration recipe**: Narrow locally on the `StreamChunk` discriminator: `text-delta` / `reasoning-delta` non-empty counts as a token; `tool-call-delta` with `argumentsDelta` or `name` counts as a token. Do not import `dsh-client-ui-chat`
  • Network accessline 381
    - **Verification**: On the same replay log, the first-token timestamp matches rc.2; tool-call deltas count as tokens. - **Source**: [rc.2 re-export from `dsh-llm/message`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2
  • Network accessline 382
    - **Source**: [rc.2 re-export from `dsh-llm/message`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2/packages/client/runtime/src/client/sessions/assistant-timing.ts) · [alpha.1 only ui-chat's internal implementation re
  • Network accessline 383
    - **Field note** (2026-08-28, [dsh-TUI #622](https://github.com/ccch1mneyyy/dsh-TUI/pull/622)): local `isTokenDelta(chunk: StreamChunk)` in `src/dsh-adapter/channel.ts`, regression-checked by `scripts/verify-tps.mjs`.
  • Network accessline 394
    - **Migration recipe**: To keep rc.2's opt-out stance, override in your own `cordis.patch.yml`: `session-telemetry-otel` must restate the whole `config` object (an include patch replaces, it does not merge), with `mode` written as `process.
  • Network accessline 395
    - **Verification**: In `dsh --profile <p> --dump-config`, the two rows' resolved config matches the expected values; send one real request to confirm no plugin package-manifest field is present (without printing credentials or bodies). - **
  • Network accessline 396
    - **Source**: [rc.2 base composition (`DISABLED`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2/packages/bundle/base/cordis.patch.yml) · [alpha.1 base composition (`FEEDBACK_ONLY` + inventory row)](https://github.com
  • Network accessline 397
    - **Field note** (2026-08-28, [dsh-TUI #622](https://github.com/ccch1mneyyy/dsh-TUI/pull/622)): two overrides in `cordis.patch.yml`; the telemetry row must restate the entire config.
  • Network accessline 408
    - **Migration recipe**: Do not depend on pi-ai directly. Resolve from the host adapter: `createRequire(import.meta.resolve('@deepseek-ai/dsh-llm-pi-ai/package.json'))`, then `require.resolve('@earendil-works/pi-ai', { paths })` to get the d
  • Network accessline 409
    - **Verification**: Install once on each of the rc.2 and alpha.1 hosts; `pnpm why @earendil-works/pi-ai` shows exactly one copy, coming from `dsh-llm-pi-ai`. - **Source**: [rc.2 `dsh-llm-pi-ai` package.json (`^0.82.1`)](https://github.com/d
  • Network accessline 410
    - **Source**: [rc.2 `dsh-llm-pi-ai` package.json (`^0.82.1`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2/packages/llm/llm-pi-ai/package.json) · [alpha.1 `dsh-llm-pi-ai` package.json (`^0.84.2`)](https://github.com/
  • Network accessline 411
    - **Field note** (2026-08-28, [dsh-TUI #622](https://github.com/ccch1mneyyy/dsh-TUI/pull/622)): dsh-auth's hard bump to `^0.84.2` plus an override installed two copies on rc.2; after switching to resolving from `dsh-llm-pi-ai`, each cohort 
  • Network accessline 436
    - While the cohort is unpublished, point type dependencies at the official source checkout with `link:`, or use tarball `overrides` per [R-01](rollup-0.1.2.md). - **Verification**: typecheck shows no leftover `dsh-client-runtime` imports; `
  • Network accessline 437
    - **Verification**: typecheck shows no leftover `dsh-client-runtime` imports; `dsh.client.inject` declares only real service packages; after a cold boot the boot graph contains this plugin with no pending rows. - **Source**: [alpha.1 releas
  • Network accessline 438
    - **Source**: [alpha.1 release notes](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.1) · [alpha.1's packages/client (no runtime package)](https://github.com/deepseek-ai/deepseek-harness/tree/dsh-v0.1.2-alpha.
  • Network accessline 454
    3. `dsh --profile <name> --dump-config` to check row names and no pending. - **Verification**: The index page's HTML `window.__DSH_BOOT__.entries` contains `"id":"<package name>"`; the script fetched from the combo route `/plugins/??<packag
  • Network accessline 455
    - **Verification**: The index page's HTML `window.__DSH_BOOT__.entries` contains `"id":"<package name>"`; the script fetched from the combo route `/plugins/??<package name>/client.js&rev=...` (the URL contains `??`; add `-g` for curl) conta
  • Network accessline 456
    - **Source**: [modules/src/client/system.ts registration assertion](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/client/modules/src/client/system.ts) · [modules/src/client/manifest.ts (`Entry name == pack
  • Network accessline 481
    Import `SessionEventLikeEntry` and `SessionBinding` from `@deepseek-ai/dsh-api-session-controller/client`; scoped-addressing services still go through `binding.ctx.get(...)`; the input-machine face (`conversation.input.for(actx)` / `setDraf
  • Network accessline 482
    - **Verification**: Send one user message in a real session and the plugin reads text consistent with the UI; empty sessions / unknown ids return null instead of throwing. - **Source**: [SessionBinding definition](https://github.com/deepsee
  • Network accessline 483
    - **Source**: [SessionBinding definition](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/api/session-controller/src/client/sessions/service.ts) · [SessionEventLikeEntry contract](https://github.com/deepseek
  • Network accessline 500
    - Other selector-class drift (panel ids, slot names): the official `packages/client/ui-*` source is authoritative; verify the actual 0.1.2 page shape with browser devtools, not from 0.1.1 memory (same verification requirement as [DSH-0.1.2-
  • Network accessline 501
    - **Verification**: On a 0.1.2 staging page, really perform one draft write + recall (including caret-position restore) with no DOM errors in the console; keep the textarea path only for cross-cohort coexistence ([R-02](rollup-0.1.2.md)). -
  • Network accessline 502
    - **Source**: [ComposerContentEditable.tsx (new in alpha.1)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/client/ui-conversation/src/client/input/editor/ComposerContentEditable.tsx) · [alpha.1 release not
  • Network accessline 514
    - **Migration recipe**: Build the nested object through a single shared helper at every render point (copy-button copy comes from the plugin's own locale dictionary; `footnotes` is an sr-only heading — pass an empty string when there is no 
  • Network accessline 515
    - **Verification**: Render markdown containing a fenced code block on a real host; after switching locale the copy-button copy follows; no console errors; streaming messages are not re-rendered wholesale. - **Source**: [alpha.1 MarkdownText
  • Network accessline 516
    - **Source**: [alpha.1 MarkdownText.tsx (labels required)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/client/ui-primitives/src/markdown/MarkdownText.tsx) · [alpha.1 render.tsx (MarkdownLabels shape)](ht
  • Network accessline 517
    - **Field note** (2026-08-30, dsh-better-sidebar, macOS, real machine 0.1.2-alpha.1/alpha.2): The crash was caught by a mount smoke on a real alpha.1 host (devDeps pinned to 0.1.1-rc.1, typecheck all green); the fix routes all four render p
  • Network accessline 528
    - **Migration recipe**: Branch by session origin first. For ordinary sessions, move history reads to `session/page|follow`. For subagent-origin sessions (side chat, delegated threads), transcript reads have **no usable host RPC** — supply t
  • Network accessline 529
    - **Verification**: The live and cold (after host restart) paths return consistent transcripts; `afterSeq` deltas do not resurrect the seed; `session/list` shows subagent child sessions; with the route deliberately broken, the UI shows an e
  • Network accessline 530
    - **Source**: [alpha.1 connection/client/api.ts (old face now only re-exports protocol types)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/client/connection/src/client/api.ts) · [alpha.1 APIProxy→Remote 
  • Network accessline 531
    - **Field note** (2026-08-30, dsh-better-sidebar, macOS, npm 0.1.2-alpha.2 real machine): the side-chat transcript polling was missed in the migration and the errors were swallowed by catch, so on alpha.1+ hosts the tab rendered an empty tr
  • Network accessline 542
    - **Migration recipe**: Follow the package-exported constant in assertions — `import { SUBAGENT_DESCRIPTOR_VERSION } from '@deepseek-ai/dsh-subagent'` — instead of hardcoding a literal; build seeds uniformly through `snapshotSubagentDescrip
  • Network accessline 543
    - **Verification**: After upgrading devDependencies, the relevant unit tests pass; the seed event `subagent/descriptor` has `version === SUBAGENT_DESCRIPTOR_VERSION`. - **Source**: [alpha.1 descriptor.ts (= 3)](https://github.com/deepseek-a
  • Network accessline 544
    - **Source**: [alpha.1 descriptor.ts (= 3)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.1/packages/subagent/subagent/src/descriptor.ts) · [rc.2 descriptor.ts (= 2)](https://github.com/deepseek-ai/deepseek-harness/b
  • Network accessline 573
    - **Verification**: `skipLibCheck: false` typecheck shows no leftover `connectWorkspace` / `pickDirectory` on `IWorkspaces`; a real web cold boot has no pending `uiWorkspace`; one connect and one directory-pick path succeed after both list 
  • Network accessline 574
    - **Source**: [rc.2 aggregated `IWorkspaces`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2/packages/client/runtime/src/client/contract/workspaces.ts) · [alpha.1 Workspace Controller `IWorkspaces` (no navigation)](htt
  • Network accessline 575
    - **Field note** (2026-08-28, [dsh-desktop-safe-market](https://github.com/bruc3van/dsh-desktop-safe-market) 0.2.16 → 0.3.0, Web Client): a marketplace plugin that called `workspaces.connectWorkspace` / `pickDirectory` and gated on `baselin

skills/plugin-upgrade/references/v0.1.2-alpha.2.md

  • Network accessline 15
    > This file is a curated list of plugin-relevant changes, not a complete API diff. > > Upstream comparison: [dsh-v0.1.2-alpha.1...dsh-v0.1.2-alpha.2](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.2-alpha.1...dsh-v0.1.2-al
  • Network accessline 16
    > > Upstream comparison: [dsh-v0.1.2-alpha.1...dsh-v0.1.2-alpha.2](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.2-alpha.1...dsh-v0.1.2-alpha.2) > · Release Notes: [dsh-v0.1.2-alpha.2](https://github.com/deepseek-ai/deeps
  • Network accessline 17
    > Upstream comparison: [dsh-v0.1.2-alpha.1...dsh-v0.1.2-alpha.2](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.2-alpha.1...dsh-v0.1.2-alpha.2)
  • Network accessline 18
    > · Release Notes: [dsh-v0.1.2-alpha.2](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.2)
  • Network accessline 41
    - **Migration recipe**: Producers should write `ignorable: true` only for informational events whose semantics an old reader can omit without affecting reconstruction; the marker is not a consumer-side filtering directive, and events remain
  • Network accessline 43
    - **Source**: [alpha.2 release notes](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.2) · [retain ignorable external session events decision](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alp
  • Network accessline 79
    Remote calls do not reject on ordinary business/carrier failures; assembly faults should surface rather than be swallowed by a defensive catch. Use `isRemoteFailure` (from `@deepseek-ai/dsh-api-gateway/client`) for structural discrimination
  • Network accessline 81
    - **Source**: [RemoteError failure vocabulary](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/.agents/notes/implemented/architecture/2026-08-28-ctx-remote-failure-vocabulary.md) · [adding a Remote API](https://githu
  • Network accessline 92
    - **Migration recipe**: Also look at the opposite direction: alpha.2 adds peers as well (`dsh-session-projection` and others), see [DSH-0.1.2-A2-08](v0.1.2-alpha.2.md). First choose the single package manager the repository currently uses, 
  • Network accessline 93
    - **Verification**: Installation and typecheck succeed; no new peer/missing-package errors related to the target upgrade; the dependency graph and packed artifacts change only as expected. - **Source**: [alpha.2 release notes, "Bug fixes"](
  • Network accessline 94
    - **Source**: [alpha.2 release notes, "Bug fixes"](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.2)
  • Network accessline 107
    - **Migration recipe**: Remove only branches with evidence of specifically bypassing this defect (forcing Node 22, skipping `dsh web`, probing the loader by major version); keep other Node compatibility constraints. The verification matrix 
  • Network accessline 109
    - **Source**: [alpha.2 release notes, "Bug fixes"](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.2) · [alpha.2 vendor/README item 19](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/ve
  • Network accessline 120
    - **Migration recipe**: Parse `agentPresets` as an optional field, keeping the old entries view when it is absent; do not rebuild the whole object in a way that drops future fields. When presets need to be displayed, render from trust, rows
  • Network accessline 122
    - **Source**: [alpha.2 PluginInventorySnapshot types](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/host/plugin-inventory/src/types.ts) · [alpha.2 release notes](https://github.com/deepseek-ai/deepseek-har
  • Network accessline 133
    - **Migration recipe**: In alpha.2, read `ctx.remote.$host.home` (may be `undefined` before the first ready frame) and `ctx.remote.$host.isLoopback`. `$host` is not a store — it has no subscriptions or generation counter; to react to reconn
  • Network accessline 135
    - **Source**: [alpha.2 API gateway README](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/api/gateway/README.md) · [alpha.2 APIProxy→Remote note](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.
  • Network accessline 144
    - **Migration recipe**: Users of the shipped bundle are unaffected: `dsh-base` alpha.2 already mounts `session-projection` (`cordis.patch.yml:138`) and `session-projection-cache`. For self-composed profiles, add a `@deepseek-ai/dsh-session-
  • Network accessline 146
    - **Source**: [alpha.2 tool-todo `inject`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/todo/tool-todo/src/index.ts) · [alpha.2 tool-subagent `inject`](https://github.com/deepseek-ai/deepseek-harness/blob
  • Network accessline 157
    - **Migration recipe**: Namespace validity checking has moved to compile time via the template literal type `SettingsNamespaceInput` (lowercase letter at the start + `[a-z0-9-]` suffix; `SettingsNamespace` is a brand type): on the host side
  • Network accessline 158
    - **Verification**: Typecheck passes after upgrading devDependencies; unit-test the namespace register/read/write/listen paths; read and write once on a real host settings panel. - **Source**: [alpha.2 settings/src/index.ts (SettingsNamespa
  • Network accessline 159
    - **Source**: [alpha.2 settings/src/index.ts (SettingsNamespaceInput, no settingsNamespace export)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.2/packages/settings/settings/src/index.ts) · [alpha.1 settings/src/ind
  • Network accessline 160
    - **Field note** (2026-08-30, dsh-better-sidebar, devDeps 0.1.1-rc.1 → 0.1.2-alpha.2): After the upgrade, all typecheck failures came from this single semantic change (two call sites: the host side and the smoke-test double); the fix passes

skills/plugin-upgrade/references/v0.1.2-alpha.3.md

  • Network accessline 15
    > This file is a curated list of plugin-relevant changes, not a complete API diff. > > Upstream comparison: [dsh-v0.1.2-alpha.2...dsh-v0.1.2-alpha.3](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.2-alpha.2...dsh-v0.1.2-al
  • Network accessline 16
    > > Upstream comparison: [dsh-v0.1.2-alpha.2...dsh-v0.1.2-alpha.3](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.2-alpha.2...dsh-v0.1.2-alpha.3) > · Release Notes: [dsh-v0.1.2-alpha.3](https://github.com/deepseek-ai/deeps
  • Network accessline 17
    > Upstream comparison: [dsh-v0.1.2-alpha.2...dsh-v0.1.2-alpha.3](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.2-alpha.2...dsh-v0.1.2-alpha.3)
  • Network accessline 18
    > · Release Notes: [dsh-v0.1.2-alpha.3](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.3)
  • Network accessline 36
    - **Migration recipe**: register the plugin's settings namespace through the Node half (`settings` service, same-named namespace the plugin already uses), then have the client render a card into `settings.plugin.item[key = namespace]`; the 
  • Network accessline 37
    - **Verification**: open Settings → Plugins, find the plugin's card, toggle/change a field, and confirm the running plugin reacts without a web restart; verify the packed client artifact contains the card entry, not just the source. - **Sou
  • Network accessline 38
    - **Source**: [alpha.2/alpha.3 plugin-owned settings surface design](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.3/.agents/notes/implemented/architecture/2026-08-12-plugin-owned-settings-surface.md) · [whale-girl 4
  • Network accessline 39
    - **Field note** (2026-08-31, whale-girl): the first integration implemented a high-frequency subset of 7 fields (show-on-page, size, opacity, wandering, sleep delay, feed/play reply pools) as two new client modules (settings-card 298 lines
  • Network accessline 73
    database receives no migration or salvage writes, and its content is only available   through the pre-upgrade export. - **Source**: [JSONL-only session persistence decision note (pinned dsh-v0.1.2-alpha.3)](https://github.com/deepseek-ai/de
  • Network accessline 75
    - **Source**: [JSONL-only session persistence decision note (pinned dsh-v0.1.2-alpha.3)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-alpha.3/.agents/notes/implemented/simplification/2026-08-30-jsonl-only-session-persiste

skills/plugin-upgrade/references/v0.1.2-alpha.4.md

  • Network accessline 15
    > This file is a curated list of plugin-relevant changes, not a complete API diff. > > Upstream comparison: [dsh-v0.1.2-alpha.3...dsh-v0.1.2-alpha.4](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.2-alpha.3...dsh-v0.1.2-al
  • Network accessline 16
    > > Upstream comparison: [dsh-v0.1.2-alpha.3...dsh-v0.1.2-alpha.4](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.2-alpha.3...dsh-v0.1.2-alpha.4) > · Release Notes: [dsh-v0.1.2-alpha.4](https://github.com/deepseek-ai/deeps
  • Network accessline 17
    > Upstream comparison: [dsh-v0.1.2-alpha.3...dsh-v0.1.2-alpha.4](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.2-alpha.3...dsh-v0.1.2-alpha.4)
  • Network accessline 18
    > · Release Notes: [dsh-v0.1.2-alpha.4](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.4)
  • Network accessline 49
    3. If a plugin enumerates the child's tool layer by name (a capability filter), check that the filter still lets the child's structured-output tool through — the alpha.4 comment at `packages/core/tools/src/index.ts` was rewritten to say the
  • Network accessline 51
    - **Source**: [alpha.4 release notes](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.4) ("`send_message` … replacing the one-way `report` tool") · package removal in [compare dsh-v0.1.2-alpha.3...dsh-v0.1.2-al
  • Network accessline 62
    - **Migration recipe**: rename the dependency and any `name:` row to `@deepseek-ai/dsh-experimental-code-runtime-python`; treat it as experimental (the `experimental/` tree carries no stability promise), so pin the exact cohort version rath
  • Network accessline 64
    - **Source**: package manifests at both tags — `packages/code-runtime/code-runtime-python/package.json` at `dsh-v0.1.2-alpha.3` (`"name": "@deepseek-ai/dsh-code-runtime-python"`) vs `packages/experimental/code-runtime-python/package.json` a
  • Network accessline 82
    - Do not cache the array returned by `snapshotEvents()` across appends when you need live data; re-read `seq` and call again. - **Verification**: `tsc --noEmit` of the plugin against `@deepseek-ai/dsh-session` at `dsh-v0.1.2-alpha.4` passes
  • Network accessline 83
    - **Verification**: `tsc --noEmit` of the plugin against `@deepseek-ai/dsh-session` at `dsh-v0.1.2-alpha.4` passes with no `events` access; a runtime read of a live session through the new API returns the same event count as the projection/
  • Network accessline 84
    - **Source**: [alpha.4 release notes](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.4) ("Replace `Session.events` with on-demand read APIs") · `packages/core/session/src/index.ts:588-629` (`eventAt` / `snapsh
  • Network accessline 100
    4. Where you compared `openTurnStartSeq !== null` or `lastStepBoundary.seq`, the comparisons still work (branded numbers are numbers at runtime); only the declared types need updating. - **Verification**: `tsc --noEmit` against the alpha.4 
  • Network accessline 101
    - **Verification**: `tsc --noEmit` against the alpha.4 packages; at runtime, `SessionSeq(-1)` and `SessionLogOffset(1.5)` throw `TypeError`, and a freshly forked session in the same process shows `session.inheritedEventCount === session.fir
  • Network accessline 102
    - **Source**: [alpha.4 release notes](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.4) ("Distinguish `SessionSeq` and `SessionLogOffset` with strong types; developers should pay attention to compatibility") ·
  • Network accessline 114
    - **Migration recipe**: if your preset extends `ptc` and relied on `workflow`, either re-enable `tool-workflow` in your own preset layer or rewrite the instructions around `run_code`; if your preset does not extend `ptc`, nothing changes. D
  • Network accessline 116
    - **Source**: [alpha.4 release notes](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.4) ("Stop exposing the general-purpose `workflow` tool by default in Web PTC Mode") · `packages/preset/agent-presets/presets
  • Network accessline 127
    - **Migration recipe**: profiles that must not fetch override the row in their own patch layer (`- id: tool-web` with `config: { fetch: false }`); profiles that previously enabled fetch per preset can drop that override. Treat this as a pol
  • Network accessline 129
    - **Source**: [alpha.4 release notes](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.4) ("Enable `web_fetch` by default for the Python SDK, Headless, ACP, and custom Profiles") · `packages/bundle/base/cordis.p

skills/plugin-upgrade/references/v0.1.2-alpha.5.md

  • Network accessline 15
    > This file is a curated list of plugin-relevant changes, not a complete API diff. > > Upstream comparison: [dsh-v0.1.2-alpha.4...dsh-v0.1.2-alpha.5](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.2-alpha.4...dsh-v0.1.2-al
  • Network accessline 16
    > > Upstream comparison: [dsh-v0.1.2-alpha.4...dsh-v0.1.2-alpha.5](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.2-alpha.4...dsh-v0.1.2-alpha.5) > · Release Notes: [dsh-v0.1.2-alpha.5](https://github.com/deepseek-ai/deeps
  • Network accessline 17
    > Upstream comparison: [dsh-v0.1.2-alpha.4...dsh-v0.1.2-alpha.5](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.2-alpha.4...dsh-v0.1.2-alpha.5)
  • Network accessline 18
    > · Release Notes: [dsh-v0.1.2-alpha.5](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.5)
  • Network accessline 49
    3. Backend reach: the tolerance is implemented by the json per-record backend and its legacy bootstrap only. A backend without `compatibleVersions` support (the sqlite storage backend implements neither this nor `backupRecord`) keeps strict
  • Network accessline 50
    - **Verification**: `defineDomain({ version: 5, compatibleVersions: [4] })` passes while `[5]`, `[-1]`, and `[1.5]` throw; open a json per-record unit whose documents are stamped `4` → the records load, stamped `3` without the declaration →
  • Network accessline 51
    - **Source**: [compare dsh-v0.1.2-alpha.4...dsh-v0.1.2-alpha.5](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.2-alpha.4...dsh-v0.1.2-alpha.5) · `DomainSpec.compatibleVersions` and the `defineDomain` validation at [spec.ts
  • Network accessline 66
    3. Plan the rebuild: after a salvage the record is absent until the owning flow writes it again (the host's cache cold-refolds and checkpoints). Same-minute backups of the same key overwrite each other — the newer bytes win; distinct keys a
  • Network accessline 67
    - **Verification**: with the policy declared and a schema-failing record present, `open` resolves, the document is renamed to `*.json.bak.*` on disk, `loadAll` shows the key absent, a later `putRecord` recreates the record fresh, and the lo
  • Network accessline 68
    - **Source**: [compare dsh-v0.1.2-alpha.4...dsh-v0.1.2-alpha.5](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.2-alpha.4...dsh-v0.1.2-alpha.5) · `DomainSpec.invalidRecords` contract at [spec.ts:67](https://github.com/deeps
  • Network accessline 78
    - **Action level**: informational - **Symptoms**: two failure shapes on alpha.4 when an already-used home was upgraded. (1) From a v3 home (shipped by 0.1.1-rc.2, single-file `storages/session_projcache.json`): the per-record bootstrap migr
  • Network accessline 79
    - **Symptoms**: two failure shapes on alpha.4 when an already-used home was upgraded. (1) From a v3 home (shipped by 0.1.1-rc.2, single-file `storages/session_projcache.json`): the per-record bootstrap migrated the legacy file without check
  • Network accessline 80
    - **Migration recipe**: upgrade the host to alpha.5 — no plugin code change is required for any of these symptoms. The host's `session_projcache` domain now declares `version: 5, compatibleVersions: [3, 4]` with the two lineage fields optio
  • Network accessline 81
    - **Verification**: boot the host against `dsh-v0.1.2-alpha.5` on homes of all four shapes (pristine v3, poisoned v3, v4, fresh): the app starts and the SessionList RPC returns the recorded titles verbatim. Upstream's archived-fixture recov
  • Network accessline 82
    - **Source**: [release notes dsh-v0.1.2-alpha.5](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-alpha.5) ("Fix an issue where upgrading from 0.1.1-rc.2 or 0.1.2-alpha.3 could prevent the app from starting or make se

skills/plugin-upgrade/references/v0.1.2-rc.1.md

  • Network accessline 15
    > This file is a curated list of plugin-relevant changes, not a complete API diff. > > Upstream comparison: [dsh-v0.1.2-alpha.5...dsh-v0.1.2-rc.1](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.2-alpha.5...dsh-v0.1.2-rc.1)
  • Network accessline 16
    > > Upstream comparison: [dsh-v0.1.2-alpha.5...dsh-v0.1.2-rc.1](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.2-alpha.5...dsh-v0.1.2-rc.1) > · Release Notes: [dsh-v0.1.2-rc.1](https://github.com/deepseek-ai/deepseek-harne
  • Network accessline 17
    > Upstream comparison: [dsh-v0.1.2-alpha.5...dsh-v0.1.2-rc.1](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.2-alpha.5...dsh-v0.1.2-rc.1)
  • Network accessline 18
    > · Release Notes: [dsh-v0.1.2-rc.1](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-rc.1)

skills/plugin-upgrade/references/v0.1.3-alpha.1.md

  • Network accessline 60
    ~95/~94) out of a 6-session real-history batch (same writer family, all refused). Full   evidence chain (build identity, CDP timing, raw refusal strings, three-leg attribution):   [upstream-0.1.3 adaptation audit, pinned](https://raw.github
  • Network accessline 61
    evidence chain (build identity, CDP timing, raw refusal strings, three-leg attribution):   [upstream-0.1.3 adaptation audit, pinned](https://raw.githubusercontent.com/alex04130/dsh-forge/8ab0b148b2382b2a33158039fd10d7625b4e145a/docs/audits/
  • Network accessline 62
    [upstream-0.1.3 adaptation audit, pinned](https://raw.githubusercontent.com/alex04130/dsh-forge/8ab0b148b2382b2a33158039fd10d7625b4e145a/docs/audits/upstream-0.1.3-adaptation-audit.md)
  • Network accessline 124
    intentionally narrow, treat as a reproduction record pending wider confirmation.   Evidence context:   [upstream-0.1.3 adaptation audit, pinned](https://raw.githubusercontent.com/alex04130/dsh-forge/8ab0b148b2382b2a33158039fd10d7625b4e145a/
  • Network accessline 126
    [upstream-0.1.3 adaptation audit, pinned](https://raw.githubusercontent.com/alex04130/dsh-forge/8ab0b148b2382b2a33158039fd10d7625b4e145a/docs/audits/upstream-0.1.3-adaptation-audit.md).
  • Network accessline 155
    - **Verification**: `pnpm install` completes; `require('fs-ext')` loads and the flock callback   path warns once instead of throwing; `dsh web --no-open` boots and answers HTTP 200. - **Source**: [dsh-v0.1.3-alpha.1](https://github.com/deep
  • Network accessline 156
    path warns once instead of throwing; `dsh web --no-open` boots and answers HTTP 200. - **Source**: [dsh-v0.1.3-alpha.1](https://github.com/deepseek-ai/deepseek-harness/tree/dsh-v0.1.3-alpha.1)   (`d347e70`): `packages/session/session-persis
  • Network accessline 157
    - **Source**: [dsh-v0.1.3-alpha.1](https://github.com/deepseek-ai/deepseek-harness/tree/dsh-v0.1.3-alpha.1)
  • Network accessline 168
    - **Applies to**: host deployments and profile wrappers behind corporate proxies (or that   set `http_proxy`/`https_proxy`/`all_proxy`/`no_proxy`); plugins issuing outbound   `fetch()`/`globalThis.fetch` requests inside the host tree; launc
  • Network accessline 169
    set `http_proxy`/`https_proxy`/`all_proxy`/`no_proxy`); plugins issuing outbound   `fetch()`/`globalThis.fetch` requests inside the host tree; launcher scripts and CI that   previously set `NODE_USE_ENV_PROXY=1`.
  • Network accessline 170
    `fetch()`/`globalThis.fetch` requests inside the host tree; launcher scripts and CI that
  • Network accessline 177
    (`apps/cli/src/profile-boot.ts` at `dsh-v0.1.3-alpha.1`); the launcher gains the new   runtime dependency `@deepseek-ai/dsh-http-proxy`. Effect: outbound traffic on   `fetch()`/`globalThis.fetch` (LLM requests, web_search, MCP over HTTP, sa
  • Network accessline 178
    runtime dependency `@deepseek-ai/dsh-http-proxy`. Effect: outbound traffic on   `fetch()`/`globalThis.fetch` (LLM requests, web_search, MCP over HTTP, sandbox SDK   lanes) honors the proxy environment — lowercase variable names win, `ALL_PR
  • Network accessline 179
    `fetch()`/`globalThis.fetch` (LLM requests, web_search, MCP over HTTP, sandbox SDK
  • Network accessline 203
    is honored, while the same name in the invoking directory's `.env` makes the launch   refuse with the bootstrap-only message. - **Source**: [alpha.1 `dsh-http-proxy` README (resolution order, loopback, invalid-value behavior, child-env note
  • Network accessline 205
    - **Source**: [alpha.1 `dsh-http-proxy` README (resolution order, loopback, invalid-value behavior, child-env notes)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.3-alpha.1/packages/util/http-proxy/README.md) · [alpha.1 `pr
  • Network accessline 244
    agentLoop.create(...)` runs a full turn and its log appends persist; using a closed   handle rejects with `SessionHandleClosedError`. - **Source**: [alpha.1 `session-persistence/src/handle.ts` (new)](https://github.com/deepseek-ai/deepseek-
  • Network accessline 246
    - **Source**: [alpha.1 `session-persistence/src/handle.ts` (new)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.3-alpha.1/packages/session/session-persistence/src/handle.ts) · [alpha.1 `session-persistence/src/errors.ts`](ht
  • Network accessline 275
    through the official APIs; a raw-artifact reader using the catalog accepts current   artifacts and deterministically reports the refusal cases in DSH-0.1.3-A1-01/A1-02. - **Source**: [alpha.1 `session-format-catalog/src/current.ts` (new)](h
  • Network accessline 277
    - **Source**: [alpha.1 `session-format-catalog/src/current.ts` (new)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.3-alpha.1/packages/session/session-format-catalog/src/current.ts) · [released session-format migrations note
  • Network accessline 288
    - **Migration recipe**: use the source-launch host recipe — `git fetch <tag>` → clean → build → `pnpm dsh web`, keeping the global npm install as the rollback. - **Verification**: `-V` prints the tag version; the web client boots on the sou
  • Network accessline 290
    - **Source**: npm registry probe 2026-09-04 ([@deepseek-ai/dsh versions](https://www.npmjs.com/package/@deepseek-ai/dsh?activeTab=versions)); real-host source-launched verification the same day.
  • Network accessline 301
    - **Migration recipe**: no code change required by the edge; re-verify slot placement at runtime on the source-launched host (paste image/text, open preview/viewer) before declaring support. - **Verification**: manual runtime pass on the so
  • Network accessline 303
    - **Source**: [0.1.3-alpha.1 release notes](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.3-alpha.1) ("Web 支持上传任意类型的通用文件…", "`read_image` … 在 Web 工具卡中直接渲染图片"); first-hand paste-input verification 2026-09-04.

skills/plugin-upgrade/references/v0.1.3-alpha.2.md

  • Network accessline 15
    > This file is a curated list of plugin-relevant changes, not a complete API diff. > > Upstream comparison: [dsh-v0.1.3-alpha.1...dsh-v0.1.3-alpha.2](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.3-alpha.1...dsh-v0.1.3-al
  • Network accessline 16
    > > Upstream comparison: [dsh-v0.1.3-alpha.1...dsh-v0.1.3-alpha.2](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.3-alpha.1...dsh-v0.1.3-alpha.2) > · Release Notes: [dsh-v0.1.3-alpha.2](https://github.com/deepseek-ai/deeps
  • Network accessline 17
    > Upstream comparison: [dsh-v0.1.3-alpha.1...dsh-v0.1.3-alpha.2](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.3-alpha.1...dsh-v0.1.3-alpha.2)
  • Network accessline 18
    > · Release Notes: [dsh-v0.1.3-alpha.2](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.3-alpha.2)
  • Network accessline 80
    suffix after it (inspect the assembled system prompt); the old-key row shape is   confirmed gone, not silently ignored. - **Source**: [alpha.2 persona plugin source](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.3-alpha.2/pa
  • Network accessline 82
    - **Source**: [alpha.2 persona plugin source](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.3-alpha.2/packages/preset/persona/src/index.ts) · [alpha.1 persona plugin source (old `text` key)](https://github.com/deepseek-ai/de
  • Network accessline 112
    normal exit and kill escalation; UI/log surfaces that previously printed the pid show   the new identity or nothing. - **Source**: [alpha.2 subprocess types (no `SubprocessHandle.pid`; terminal handle keeps it)](https://github.com/deepseek-
  • Network accessline 114
    - **Source**: [alpha.2 subprocess types (no `SubprocessHandle.pid`; terminal handle keeps it)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.3-alpha.2/packages/subprocess/subprocess/src/types.ts) · [alpha.1 subprocess types 
  • Network accessline 142
    real edit round-trip through each affected profile's default editor tool succeeds;   sdk-minimal / web-minimal behavior is unchanged where the release notes promise it. - **Source**: [alpha.2 base bundle patch (row removed)](https://github.
  • Network accessline 144
    - **Source**: [alpha.2 base bundle patch (row removed)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.3-alpha.2/packages/bundle/base/cordis.patch.yml) · [alpha.1 base bundle patch (row present)](https://github.com/deepseek-a
  • Network accessline 172
    `node -e "import('@deepseek-ai/dsh/lib/bin.js').then(m => console.log(typeof m.runCli))"`   check prints `function` without running the CLI. - **Source**: [alpha.2 CLI entry](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.3-a
  • Network accessline 174
    - **Source**: [alpha.2 CLI entry](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.3-alpha.2/apps/cli/src/bin.ts) · [alpha.1 CLI entry (top-level dispatch)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.3-alpha.
  • Network accessline 203
    passes; any duplicate-instance symptoms (`instanceof` failures, two copies in the   dependency tree) are gone. - **Source**: [alpha.2 llm-pi-ai package.json (`^0.85.1`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.3-alpha.
  • Network accessline 205
    - **Source**: [alpha.2 llm-pi-ai package.json (`^0.85.1`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.3-alpha.2/packages/llm/llm-pi-ai/package.json) · [alpha.1 llm-pi-ai package.json (`^0.84.2`)](https://github.com/deepse

skills/plugin-upgrade/references/v0.1.5-alpha.1.md

  • Network accessline 15
    > This file is a curated list of plugin-relevant changes, not a complete API diff. > > Upstream comparison: [dsh-v0.1.3-alpha.2...dsh-v0.1.5-alpha.1](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.3-alpha.2...dsh-v0.1.5-al
  • Network accessline 16
    > > Upstream comparison: [dsh-v0.1.3-alpha.2...dsh-v0.1.5-alpha.1](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.3-alpha.2...dsh-v0.1.5-alpha.1) > · Release Notes: [dsh-v0.1.5-alpha.1](https://github.com/deepseek-ai/deeps
  • Network accessline 17
    > Upstream comparison: [dsh-v0.1.3-alpha.2...dsh-v0.1.5-alpha.1](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.3-alpha.2...dsh-v0.1.5-alpha.1)
  • Network accessline 18
    > · Release Notes: [dsh-v0.1.5-alpha.1](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.5-alpha.1)
  • Network accessline 92
    `packages/session/session-persistence-jsonl/tests/{v2-ptc-migration,v2-system-migration,migration-refusal,v3-event-admission}.spec.ts`   are the behavior baseline. - **Source**: [alpha.1 `session-format-v2-to-v3` README (single specificatio
  • Network accessline 94
    - **Source**: [alpha.1 `session-format-v2-to-v3` README (single specification)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/packages/session/session-format-v2-to-v3/README.md) · [alpha.1 `SESSION_FORMAT_VERSION =
  • Network accessline 127
    boot work; create/resume with and without `parentAgent` shows the expected ownership   (continuable subagents are not scheduled as roots). - **Source**: [alpha.1 `core/agent/src/index.ts` (no accessor; new `AgentSetup`, `parentAgent`, expli
  • Network accessline 129
    - **Source**: [alpha.1 `core/agent/src/index.ts` (no accessor; new `AgentSetup`, `parentAgent`, explicit root)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/packages/core/agent/src/index.ts) · [alpha.2 `core/agent
  • Network accessline 163
    next-turn/next-step boundary; a client built on the `inbox` projection updates after the   splice commits (not on the raw event) and behaves correctly when no loop is active. - **Source**: [alpha.1 `agent-loop/src/inbox.ts` (driver-owned pr
  • Network accessline 165
    - **Source**: [alpha.1 `agent-loop/src/inbox.ts` (driver-owned projection, `ReactLoopInbox`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/packages/core/agent-loop/src/inbox.ts) · [alpha.2 `core/agent/src/inbox.ts
  • Network accessline 204
    rejected; a header with `tools: []` is rejected; a client parsing wire events with the   new opaque fields handles unknown-field errors deterministically. - **Source**: [alpha.1 `core/session/src/surface.ts`](https://github.com/deepseek-ai/
  • Network accessline 206
    - **Source**: [alpha.1 `core/session/src/surface.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/packages/core/session/src/surface.ts) · [alpha.1 `core/session/src/types.ts`](https://github.com/deepseek-ai/deeps
  • Network accessline 231
    `source.plugin: 'tools-ptc'` and `<parent>:ptc:<n>` ids; a reader handles both old and   new generations without dropping rows. - **Source**: [alpha.1 `core/session/src/known-event-types.ts`](https://github.com/deepseek-ai/deepseek-harness/
  • Network accessline 233
    - **Source**: [alpha.1 `core/session/src/known-event-types.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/packages/core/session/src/known-event-types.ts) · [alpha.1 `core/tools/src/types.ts` (renamed event keys
  • Network accessline 259
    surface-node calculation; a pre-upgrade checkpoint row for `contextBreakdown` is   discarded/rebuilt rather than crashing the boot. - **Source**: [alpha.1 `token-meter/src/estimate.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/d
  • Network accessline 261
    - **Source**: [alpha.1 `token-meter/src/estimate.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/packages/llm/token-meter/src/estimate.ts) · [alpha.2 `token-meter/src/estimate.ts` (old exports)](https://github.c
  • Network accessline 303
    the cached prefix is preserved; an empty render clears active system nodes; a replace   that targets node 0 without `system/message` is rejected. - **Source**: [alpha.1 `agent-loop/src/runtime-context.ts` (`SystemPromptProjection`)](https:/
  • Network accessline 305
    - **Source**: [alpha.1 `agent-loop/src/runtime-context.ts` (`SystemPromptProjection`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/packages/core/agent-loop/src/runtime-context.ts) · [alpha.1 `llm/src/message.ts` 
  • Network accessline 327
    an Agent, or with a different Agent, throws `must carry its Agent directly`; gateway   tests read `agentId` from the context. - **Source**: [alpha.1 `api/remotes/src/index.ts` (carrier check)](https://github.com/deepseek-ai/deepseek-harness
  • Network accessline 329
    - **Source**: [alpha.1 `api/remotes/src/index.ts` (carrier check)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/packages/api/remotes/src/index.ts) · [alpha.1 `api/gateway/src/index.ts` (`agentId`)](https://github.
  • Network accessline 352
    `dsh plugin --profile DESKTOP …` all exit 1 with the message; a renamed profile starts   normally. - **Source**: [alpha.1 `apps/cli/src/args.ts` (`rejectElectronProfile`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alph
  • Network accessline 354
    - **Source**: [alpha.1 `apps/cli/src/args.ts` (`rejectElectronProfile`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/apps/cli/src/args.ts) · [alpha.1 `apps/cli/tests/args.spec.ts`](https://github.com/deepseek-ai/
  • Network accessline 381
    and starts; running it again refuses with EEXIST; an unknown template or a built-in name   fails before writing; `--dump-config` with the flag prints without starting. - **Source**: [alpha.1 `apps/cli/reference/README.md` (flag behavior)](h
  • Network accessline 383
    - **Source**: [alpha.1 `apps/cli/reference/README.md` (flag behavior)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/apps/cli/reference/README.md) · [alpha.1 `apps/cli/src/profile-boot.ts` (`initializeProfileFromDe
  • Network accessline 425
    window without buffering the file; `/api/file` returns an image with the security   headers and rejects non-images with the mapped status. - **Source**: [alpha.1 `api/workspace-files/README.md`](https://github.com/deepseek-ai/deepseek-harne
  • Network accessline 427
    - **Source**: [alpha.1 `api/workspace-files/README.md`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/packages/api/workspace-files/README.md) · [alpha.1 `session-controller/src/media-references.ts` (`/api/file`)](h
  • Network accessline 452
    - **Verification**: activating/pausing a goal emits the event through the Remote lane; a   Remote client receives it and `goals.get` returns the expected snapshot. - **Source**: [alpha.1 `api/remotes/src/remote-events.ts`](https://github.co
  • Network accessline 454
    - **Source**: [alpha.1 `api/remotes/src/remote-events.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/packages/api/remotes/src/remote-events.ts) · [alpha.1 `extensions/tool-cordis/src/api-catalog.ts`](https://gi
  • Network accessline 488
    session persistence still takes an exclusive lock (two writers on one session fail as   before); CI resolves `native/system` paths. - **Source**: [alpha.1 `session-persistence-jsonl/package.json` (no `fs-ext`)](https://github.com/deepseek-a
  • Network accessline 490
    - **Source**: [alpha.1 `session-persistence-jsonl/package.json` (no `fs-ext`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/packages/session/session-persistence-jsonl/package.json) · [alpha.1 `session-persistence-
  • Network accessline 529
    `data-rightbar-col` present and no `data-selected`; switching sessions does not leak   right-column state; narrow layouts respect the new 400px centre minimum. - **Source**: [alpha.1 `ui-layout/src/client/index.ts` (`rightbar` seat)](https:
  • Network accessline 531
    - **Source**: [alpha.1 `ui-layout/src/client/index.ts` (`rightbar` seat)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/packages/client/ui-layout/src/client/index.ts) · [alpha.1 `ui-layout/src/client/columns.ts`](h
  • Network accessline 571
    prompt update renders as a "system prompt update" row rather than a duplicate; the   deliverables turn-tail has no show-in-folder branch. - **Source**: [alpha.1 `ui-commands/src/client/contract.ts`](https://github.com/deepseek-ai/deepseek-h
  • Network accessline 573
    - **Source**: [alpha.1 `ui-commands/src/client/contract.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/packages/client/ui-commands/src/client/contract.ts) · [alpha.1 `ui-conversation/src/client/input/submission
  • Network accessline 619
    changes; a carrier without `webServer` still loads connection/modules; the new   header-corner slot renders without breaking header padding. - **Source**: [alpha.1 `client/resources/src/client/contract.ts`](https://github.com/deepseek-ai/de
  • Network accessline 621
    - **Source**: [alpha.1 `client/resources/src/client/contract.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/packages/client/resources/src/client/contract.ts) · [alpha.1 `ui-sidebar-right/src/client/contract/slo
  • Network accessline 648
    does not invoke an OS opener; a custom `openFile` implementation compiles with the new   signature; tool rows show the line-aware link. - **Source**: [alpha.1 `ui-chat/src/client/contract/slots.ts` (`openFile` signature)](https://github.com
  • Network accessline 650
    - **Source**: [alpha.1 `ui-chat/src/client/contract/slots.ts` (`openFile` signature)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/packages/client/ui-chat/src/client/contract/slots.ts) · [alpha.1 `ui-chat/src/clie
  • Network accessline 675
    `tests/model-selection-settings.spec.ts` and `tests/continuation-inheritance.spec.ts`   are the behavior baseline. - **Source**: [alpha.1 `tool-subagent/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/
  • Network accessline 677
    - **Source**: [alpha.1 `tool-subagent/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/packages/subagent/tool-subagent/src/index.ts) · [alpha.2 `tool-subagent/src/index.ts`](https://github.com/deepseek-
  • Network accessline 709
    no local apps; a permission or I/O error during project-root discovery surfaces instead   of loading an ancestor's instructions. - **Source**: [alpha.1 `directory-picker-auto/src/resolve.ts` (required `ssh` fact)](https://github.com/deepsee
  • Network accessline 711
    - **Source**: [alpha.1 `directory-picker-auto/src/resolve.ts` (required `ssh` fact)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.1/packages/host/directory-picker-auto/src/resolve.ts) · [alpha.1 `directory-picker-au
  • Network accessline 722
    - **Action level**: required-if-hit - **Symptoms**: after the in-place upgrade the browser reports `failed to import loader entry <id>`: the combined `/plugins/??…` script executes but never registers modules the boot roster lists — the fir
  • Network accessline 723
    - **Symptoms**: after the in-place upgrade the browser reports `failed to import loader entry <id>`: the combined `/plugins/??…` script executes but never registers modules the boot roster lists — the first unregistered entry is named (an i
  • Network accessline 724
    - **Migration recipe**: attribute before touching plugins — fetch one NEW bundle module and one OLD module at the same rev; old 200 + new 404 pins the gap to the host's artifact/rev set, not to the plugin. Then restart the host once: the ob
  • Network accessline 726
    - **Source**: real-host probes 2026-09-09 (HTTP 200/404 comparison at the same rev; npm-tree artifact file checks); [discussion #5999](https://github.com/deepseek-ai/deepseek-harness/discussions/5999) (comment [18371079](https://github.com/

skills/plugin-upgrade/references/v0.1.5-alpha.2.md

  • Network accessline 15
    > This file is a curated list of plugin-relevant changes, not a complete API diff. > > Upstream comparison: [dsh-v0.1.5-alpha.1...dsh-v0.1.5-alpha.2](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.5-alpha.1...dsh-v0.1.5-al
  • Network accessline 16
    > > Upstream comparison: [dsh-v0.1.5-alpha.1...dsh-v0.1.5-alpha.2](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.5-alpha.1...dsh-v0.1.5-alpha.2) > · Release Notes: [dsh-v0.1.5-alpha.2](https://github.com/deepseek-ai/deeps
  • Network accessline 17
    > Upstream comparison: [dsh-v0.1.5-alpha.1...dsh-v0.1.5-alpha.2](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.5-alpha.1...dsh-v0.1.5-alpha.2)
  • Network accessline 18
    > · Release Notes: [dsh-v0.1.5-alpha.2](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.5-alpha.2)
  • Network accessline 100
    a `reload` reference no longer compiles; `createFileResourceProvider(remote, changes)`   compiles with the two-argument call. - **Source**: [alpha.2 `api/workspace-files/src/index.ts` (scope lookup, `readAll`/`readRelated`)](https://github.
  • Network accessline 102
    - **Source**: [alpha.2 `api/workspace-files/src/index.ts` (scope lookup, `readAll`/`readRelated`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/api/workspace-files/src/index.ts) · [alpha.2 `client/types.t
  • Network accessline 132
    (no truncated content); the deployment's backend read policy is recorded in the   migration notes. - **Source**: [alpha.2 `api/workspace-files/src/index.ts` (`maxFileBytes`, unconfined `locateFile`)](https://github.com/deepseek-ai/deepseek-
  • Network accessline 134
    - **Source**: [alpha.2 `api/workspace-files/src/index.ts` (`maxFileBytes`, unconfined `locateFile`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/api/workspace-files/src/index.ts) · [alpha.2 `api/workspac
  • Network accessline 160
    conversation renders at the reserved `conversation` key; selecting an unregistered key   throws and leaves the previous panel selected; zero registrations render no list. - **Source**: [alpha.2 `client/ui-layout/src/client/index.ts` (`main`
  • Network accessline 162
    - **Source**: [alpha.2 `client/ui-layout/src/client/index.ts` (`main` keyed slot)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/client/ui-layout/src/client/index.ts) · [alpha.1 `client/ui-layout/src/clien
  • Network accessline 190
    subagent no longer receives guidance for the removed tools (see   [DSH-0.1.5-A2-07](v0.1.5-alpha.2.md)). - **Source**: [alpha.2 `presets/minimal/agent.cordis.yml` (single-tool composition)](https://github.com/deepseek-ai/deepseek-harness/bl
  • Network accessline 192
    - **Source**: [alpha.2 `presets/minimal/agent.cordis.yml` (single-tool composition)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/preset/agent-presets/presets/minimal/agent.cordis.yml) · [alpha.2 `bundle/
  • Network accessline 222
    `feedback/record` entry; the `subagentCatalog` projection populates after a subagent is   created. - **Source**: [alpha.2 `core/session/src/known-event-types.ts` (two new events)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.
  • Network accessline 224
    - **Source**: [alpha.2 `core/session/src/known-event-types.ts` (two new events)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/core/session/src/known-event-types.ts) · [alpha.2 `session-persistence/src/sto
  • Network accessline 250
    errors; a request for a broken model fails with `INVALID_CONFIG` while a healthy model   succeeds; a provider-level `error` renders in the settings surface. - **Source**: [alpha.2 `llm-pi-ai/src/config.ts` (`piProvider?`, `modelErrors`, `as
  • Network accessline 252
    - **Source**: [alpha.2 `llm-pi-ai/src/config.ts` (`piProvider?`, `modelErrors`, `assertServiceable`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/llm/llm-pi-ai/src/config.ts) · [alpha.2 `llm-pi-ai/src/ca
  • Network accessline 276
    tools; an unfiltered agent still gets the full guidance; tool schemas are unchanged   across scopes. - **Source**: [alpha.2 `fs/tool-fs/src/read.ts` (scope-aware guidance)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alp
  • Network accessline 278
    - **Source**: [alpha.2 `fs/tool-fs/src/read.ts` (scope-aware guidance)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/fs/tool-fs/src/read.ts) · [alpha.2 `fs/tool-fs-search/src/grep.ts`](https://github.com/
  • Network accessline 306
    the default application; the reveal action opens the containing folder with the file   selected on macOS/Windows/Linux. - **Source**: [alpha.2 `fs/tool-present/README.md`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alph
  • Network accessline 308
    - **Source**: [alpha.2 `fs/tool-present/README.md`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/fs/tool-present/README.md) · [alpha.2 `fs/tool-present/src/index.ts`](https://github.com/deepseek-ai/deepse
  • Network accessline 330
    - **Verification**: the renamed package resolves and the right sidebar renders Markdown,   code, HTML, PDF and image previews; the old package name resolves nowhere. - **Source**: [alpha.2 `client/ui-sidebar-documentpreview/package.json` (r
  • Network accessline 332
    - **Source**: [alpha.2 `client/ui-sidebar-documentpreview/package.json` (renamed)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/client/ui-sidebar-documentpreview/package.json) · [alpha.2 `client/ui-sideba
  • Network accessline 361
    `appendChunkedList`/`iterateChunkedList`; `npm ls fs-ext` is empty in a fresh install;   the Agent Teams profile only appears after an explicit add. - **Source**: [alpha.2 `util/chunked-list/src/index.ts`](https://github.com/deepseek-ai/dee
  • Network accessline 363
    - **Source**: [alpha.2 `util/chunked-list/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/util/chunked-list/src/index.ts) · [alpha.2 `fs/tool-present/package.json`](https://github.com/deepseek
  • Network accessline 383
    - **Verification**: a server that repeats a cursor produces the documented rejection   message and the session continues with the previous tool set. - **Source**: [alpha.2 headless MCP pagination expectation](https://github.com/deepseek-ai/
  • Network accessline 385
    - **Source**: [alpha.2 headless MCP pagination expectation](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/apps/cli/tests/profiles/headless/tests/mcp-pagination.expected.e2e.ts) · [alpha.2 expected stderr cause](htt
  • Network accessline 407
    - **Verification**: the status document lists `latestReleasedVersion: 3` and the evidence   tag; the v2-to-v3 README no longer carries the "not released" limitation. - **Source**: [alpha.2 `docs/session-format-status.md` (new)](https://gith
  • Network accessline 409
    - **Source**: [alpha.2 `docs/session-format-status.md` (new)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/docs/session-format-status.md) · [alpha.2 `session-format-v2-to-v3/README.md` (limitation removed)](https:
  • Network accessline 442
    typecheck fails on the old `PropsRuntime<'rightbar'>` usage and on `s.sidebar`; a root-level   panel renders with no Session. - **Source**: [alpha.2 `ui-layout/src/client/index.ts` (`main`/`rightbar` root, `usePanelInfo`)](https://github.co
  • Network accessline 444
    - **Source**: [alpha.2 `ui-layout/src/client/index.ts` (`main`/`rightbar` root, `usePanelInfo`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/client/ui-layout/src/client/index.ts) · [alpha.2 `ui-layout/sr
  • Network accessline 466
    - **Verification**: typecheck passes without `reload`; the old reference fails; a refresh   through the replacement path updates the rendered value. - **Source**: [alpha.2 `client/resources/src/client/contract.ts` (no `reload`)](https://git
  • Network accessline 468
    - **Source**: [alpha.2 `client/resources/src/client/contract.ts` (no `reload`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/client/resources/src/client/contract.ts) · [alpha.1 `client/resources/src/clien
  • Network accessline 493
    - **Verification**: no export named `DocumentFileIcon` resolves; the icon renders for a known   extension and honours the colour variable; the deep import compiles from the new package. - **Source**: [alpha.2 `ui-primitives/src/index.ts`](h
  • Network accessline 495
    - **Source**: [alpha.2 `ui-primitives/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/client/ui-primitives/src/index.ts) · [alpha.2 `ui-primitives/src/FileTypeIcon.tsx`](https://github.com/dee
  • Network accessline 520
    roles present; dropping a tab shows the dashed card with `labels.dropZone[zone]`; the sole   guide chip has no close affordance. - **Source**: [alpha.2 `ui-dockkit/src/contract/adapter.ts` (`dropZone`)](https://github.com/deepseek-ai/deepse
  • Network accessline 522
    - **Source**: [alpha.2 `ui-dockkit/src/contract/adapter.ts` (`dropZone`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/client/ui-dockkit/src/contract/adapter.ts) · [alpha.2 `ui-dockkit/src/components/rend
  • Network accessline 550
    dialog and records an entry with a category; `acknowledge()` shows the toast; a stale   `rate(...)` reference fails to compile. - **Source**: [alpha.2 `ui-message-feedback/src/client/slots.ts`](https://github.com/deepseek-ai/deepseek-harnes
  • Network accessline 552
    - **Source**: [alpha.2 `ui-message-feedback/src/client/slots.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/client/ui-message-feedback/src/client/slots.ts) · [alpha.2 `ui-message-feedback/src/client/in
  • Network accessline 577
    Conversation even when a custom panel was selected; `forkSession` opens the fork;   re-selecting the same Session still resets the panel. - **Source**: [alpha.2 `ui-workspace/src/client/navigation.ts`](https://github.com/deepseek-ai/deepsee
  • Network accessline 579
    - **Source**: [alpha.2 `ui-workspace/src/client/navigation.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/client/ui-workspace/src/client/navigation.ts) · [alpha.2 `ui-workspace/src/client/index.ts` (in
  • Network accessline 604
    fork Session; a presented file renders as a deliverable card and opens through   `openPresented`; "Files changed" no longer lists presented-but-untouched files. - **Source**: [alpha.2 `ui-chat/src/client/contract/slots.ts` (`forClosing(owne
  • Network accessline 606
    - **Source**: [alpha.2 `ui-chat/src/client/contract/slots.ts` (`forClosing(owner, sessionId)`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/client/ui-chat/src/client/contract/slots.ts) · [alpha.2 `ui-del
  • Network accessline 634
    the built `lib/client.js` still resolves its bundled imports; a standalone consumer that   needs React declares it itself. - **Source**: [alpha.2 `packages/client/AGENTS.md` (rules 3 and 5)](https://github.com/deepseek-ai/deepseek-harness/b
  • Network accessline 636
    - **Source**: [alpha.2 `packages/client/AGENTS.md` (rules 3 and 5)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/client/AGENTS.md) · [alpha.2 `ui-primitives/package.json` (empty `dependencies`)](https://g
  • Network accessline 662
    above the cap fails with the Host's `too-large` error; HTML preview scripts execute inside   the sandboxed iframe. - **Source**: [alpha.2 `ui-sidebar-documentpreview/src/client/document/registry.ts`](https://github.com/deepseek-ai/deepseek-
  • Network accessline 664
    - **Source**: [alpha.2 `ui-sidebar-documentpreview/src/client/document/registry.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/client/ui-sidebar-documentpreview/src/client/document/registry.ts) · [alph
  • Network accessline 681
    - **Verification**: invoking the decorated command opens the UI without appending a user   message; attaching a file to that invocation does not produce the submit-path rejection. - **Source**: [alpha.2 `ui-commands/src/client/contract.ts` 
  • Network accessline 683
    - **Source**: [alpha.2 `ui-commands/src/client/contract.ts` (`ActionSpec`, `CommandUiSpec`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/client/ui-commands/src/client/contract.ts) · [alpha.2 `ui-commands
  • Network accessline 708
    returns the documented `session-not-found` error; the subpath imports compile; the package   installs with its new `zod` dependency. - **Source**: [alpha.2 `feedback/command-feedback/package.json` (subpath exports, `zod`)](https://github.co
  • Network accessline 710
    - **Source**: [alpha.2 `feedback/command-feedback/package.json` (subpath exports, `zod`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/feedback/command-feedback/package.json) · [alpha.2 `feedback/command-
  • Network accessline 739
    seeded page; the sole guide has no close route; a corner whose occupant renders nothing   collapses so the tool area reaches the edge. - **Source**: [alpha.2 `ui-sidebar-right/src/client/tab-registry.ts` (no `description`)](https://github.c
  • Network accessline 741
    - **Source**: [alpha.2 `ui-sidebar-right/src/client/tab-registry.ts` (no `description`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-alpha.2/packages/client/ui-sidebar-right/src/client/tab-registry.ts) · [alpha.2 `ui-sid

skills/plugin-upgrade/references/v0.1.5-rc.1.md

  • Network accessline 15
    > This file is a curated list of plugin-relevant changes, not a complete API diff. > > Upstream comparison: [dsh-v0.1.5-alpha.2...dsh-v0.1.5-rc.1](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.5-alpha.2...dsh-v0.1.5-rc.1)
  • Network accessline 16
    > > Upstream comparison: [dsh-v0.1.5-alpha.2...dsh-v0.1.5-rc.1](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.5-alpha.2...dsh-v0.1.5-rc.1) > · Release Notes: [dsh-v0.1.5-rc.1](https://github.com/deepseek-ai/deepseek-harne
  • Network accessline 17
    > Upstream comparison: [dsh-v0.1.5-alpha.2...dsh-v0.1.5-rc.1](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.5-alpha.2...dsh-v0.1.5-rc.1)
  • Network accessline 18
    > · Release Notes: [dsh-v0.1.5-rc.1](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.5-rc.1)
  • Network accessline 58
    `agent-default-model` row; open a fresh Session and confirm the model id in its header,   then run one real turn. - **Source**: [rc.1 `packages/bundle/base/cordis.patch.yml`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-r
  • Network accessline 60
    - **Source**: [rc.1 `packages/bundle/base/cordis.patch.yml`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-rc.1/packages/bundle/base/cordis.patch.yml) · [rc.1 release notes](https://github.com/deepseek-ai/deepseek-harness/
  • Network accessline 87
    turn on an `in-history` model appends a changed system prompt after the cached history   instead of rewriting the leading system message. - **Source**: [rc.1 `packages/llm/llm-deepseek/src/index.ts`](https://github.com/deepseek-ai/deepseek-
  • Network accessline 89
    - **Source**: [rc.1 `packages/llm/llm-deepseek/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-rc.1/packages/llm/llm-deepseek/src/index.ts) · [rc.1 `packages/llm/llm-deepseek/README.md`](https://github.com/dee
  • Network accessline 105
    return — the reading position survives; a renderer that never scrolls does not disturb   the shared body's behavior. - **Source**: [rc.1 `packages/client/ui-sidebar-documentpreview/src/client/document/contract.ts`](https://github.com/deepse
  • Network accessline 107
    - **Source**: [rc.1 `packages/client/ui-sidebar-documentpreview/src/client/document/contract.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-rc.1/packages/client/ui-sidebar-documentpreview/src/client/document/contract.t
  • Network accessline 126
    switch the UI language — title and description update without a reload; a crowded guide   degrades to titles only. - **Source**: [rc.1 `packages/client/ui-sidebar-right/src/client/tab-registry.ts`](https://github.com/deepseek-ai/deepseek-ha
  • Network accessline 128
    - **Source**: [rc.1 `packages/client/ui-sidebar-right/src/client/tab-registry.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-rc.1/packages/client/ui-sidebar-right/src/client/tab-registry.ts) · [rc.1 `packages/client/ui
  • Network accessline 157
    local patches and are reported against the `0.1.5-alpha.1` edge cards; a deployment at or   above `0.1.5-alpha.1` must account for them until upstream fixes them. - **Source**: [rc.1 compare](https://github.com/deepseek-ai/deepseek-harness/
  • Network accessline 159
    - **Source**: [rc.1 compare](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.5-alpha.2...dsh-v0.1.5-rc.1) · [rc.1 `packages/core/session/src/types.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-rc.1/pa

skills/plugin-upgrade/references/v0.1.5-rc.2.md

  • Network accessline 15
    > This file is a curated list of plugin-relevant changes, not a complete API diff. > > Upstream comparison: [dsh-v0.1.5-rc.1...dsh-v0.1.5-rc.2](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.5-rc.1...dsh-v0.1.5-rc.2)
  • Network accessline 16
    > > Upstream comparison: [dsh-v0.1.5-rc.1...dsh-v0.1.5-rc.2](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.5-rc.1...dsh-v0.1.5-rc.2) > · Release Notes: [dsh-v0.1.5-rc.2](https://github.com/deepseek-ai/deepseek-harness/rel
  • Network accessline 17
    > Upstream comparison: [dsh-v0.1.5-rc.1...dsh-v0.1.5-rc.2](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.5-rc.1...dsh-v0.1.5-rc.2)
  • Network accessline 18
    > · Release Notes: [dsh-v0.1.5-rc.2](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.5-rc.2)
  • Network accessline 89
    the dialog; clicking an unrecorded rating opens the dialog and writes nothing until   Submit; no stale import of `MessageFeedbackToggleResult` remains. - **Source**: [rc.2 `packages/client/ui-message-feedback/src/client/slots.ts`](https://g
  • Network accessline 91
    - **Source**: [rc.2 `packages/client/ui-message-feedback/src/client/slots.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-rc.2/packages/client/ui-message-feedback/src/client/slots.ts) · [rc.2 `.../src/client/index.ts`](
  • Network accessline 117
    the draft, shows the warning toast for its hold window, and closes it through   `dismissFailure` without closing the modal. - **Source**: [rc.2 `packages/client/ui-message-feedback/src/client/MessageFeedbackActions.tsx`](https://github.com/
  • Network accessline 119
    - **Source**: [rc.2 `packages/client/ui-message-feedback/src/client/MessageFeedbackActions.tsx`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-rc.2/packages/client/ui-message-feedback/src/client/MessageFeedbackActions.tsx)
  • Network accessline 152
    `dsh-code-icon-` id; `--dsh-file-type-icon-color` still tints a traditional glyph such   as the generic file. - **Source**: [rc.2 `packages/client/ui-primitives/src/CodeFileIcon.tsx`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh
  • Network accessline 154
    - **Source**: [rc.2 `packages/client/ui-primitives/src/CodeFileIcon.tsx`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-rc.2/packages/client/ui-primitives/src/CodeFileIcon.tsx) · [rc.2 `src/code-file-icon-artwork.ts`](http
  • Network accessline 181
    default zoom, and a long delivery list stays inside its own section instead of pushing   the footer away. - **Source**: [rc.2 `packages/client/ui-chat/README.md`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-rc.2/packages
  • Network accessline 183
    - **Source**: [rc.2 `packages/client/ui-chat/README.md`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-rc.2/packages/client/ui-chat/README.md) · [rc.2 `ui-chat/src/client/chat/TurnTailNodeView.module.css`](https://github.c
  • Network accessline 204
    label in both languages, and a search for the retired strings in your own repository   comes back empty. - **Source**: [rc.2 `packages/client/ui-message-feedback/src/client/locales.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/d
  • Network accessline 206
    - **Source**: [rc.2 `packages/client/ui-message-feedback/src/client/locales.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-rc.2/packages/client/ui-message-feedback/src/client/locales.ts) · [rc.2 `packages/feedback/comm
  • Network accessline 230
    `packages/core`, `packages/session`, `packages/skill` and `packages/llm` shows version   strings only. - **Source**: [rc.1...rc.2 compare](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.5-rc.1...dsh-v0.1.5-rc.2) · [rc.2 ro
  • Network accessline 232
    - **Source**: [rc.1...rc.2 compare](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.5-rc.1...dsh-v0.1.5-rc.2) · [rc.2 root `package.json` (`engines`)](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.5-rc.2/pac

skills/plugin-upgrade/references/v0.1.6-alpha.1.md

  • Network accessline 15
    > This file is a curated list of plugin-relevant changes, not a complete API diff. > > Upstream comparison: [dsh-v0.1.5-rc.2...dsh-v0.1.6-alpha.1](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.5-rc.2...dsh-v0.1.6-alpha.1)
  • Network accessline 16
    > > Upstream comparison: [dsh-v0.1.5-rc.2...dsh-v0.1.6-alpha.1](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.5-rc.2...dsh-v0.1.6-alpha.1) > · Release Notes: [dsh-v0.1.6-alpha.1](https://github.com/deepseek-ai/deepseek-ha
  • Network accessline 17
    > Upstream comparison: [dsh-v0.1.5-rc.2...dsh-v0.1.6-alpha.1](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.1.5-rc.2...dsh-v0.1.6-alpha.1)
  • Network accessline 18
    > · Release Notes: [dsh-v0.1.6-alpha.1](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.6-alpha.1)
  • Network accessline 91
    - **Migration recipe**: replace every `ctx.on('agent/session-start', ({ agent, source }) => …)` with `ctx.on('agent/created', ({ agent, source, signal }) => …)`; the in-repo reference migration is `packages/hooks/hooks-claude-code/src/index
  • Network accessline 93
    - **Source**: [0.1.6-alpha.1 `packages/core/agent/src/runtime-types.ts#L245-L261`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/core/agent/src/runtime-types.ts#L245-L261) · [0.1.6-alpha.1 `packages/core/a
  • Network accessline 104
    - **Migration recipe**: replace `assertEntriesLoaded(ctx, bin)` + `assertEntriesActivated(ctx, bin)` with one `await auditStartupEntries(ctx, bin)`, optionally passing a `warn` sink to capture optional-failure warnings instead of letting th
  • Network accessline 106
    - **Source**: [0.1.6-alpha.1 `packages/boot/app-boot/src/index.ts#L700-L835`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/boot/app-boot/src/index.ts#L700-L835) · [0.1.6-alpha.1 `packages/boot/app-boot/sr
  • Network accessline 117
    - **Migration recipe**: for "what state does this session have now", read the registered projection instead of scanning history, and for user-requested history use the explicit asynchronous paged read path rather than `snapshotEvents()` ove
  • Network accessline 119
    - **Source**: [0.1.6-alpha.1 `packages/core/session/src/index.ts#L622-L666`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/core/session/src/index.ts#L622-L666) · [0.1.6-alpha.1 `.agents/notes/implemented/a
  • Network accessline 130
    - **Migration recipe**: if the plugin owns an event that rewrites an existing message's content, tag its `SessionEventMap` member with `@messageProjection`, implement a pure `SessionMessageProjection` (`type` plus `project()`), and register
  • Network accessline 132
    - **Source**: [0.1.6-alpha.1 `packages/core/session/src/index.ts#L911-L933`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/core/session/src/index.ts#L911-L933) · [0.1.6-alpha.1 `packages/core/session/src/s
  • Network accessline 142
    - **Migration recipe**: stop calling `ctx.hmr.registerConfig(...)` and stop listening for `hmr/config-update-failed` (it can never fire) — use `watchConfig` from `@deepseek-ai/dsh-app-boot` with `ctx.get('hmr')!.config`, or own a watcher, a
  • Network accessline 144
    - **Source**: [0.1.6-alpha.1 `vendor/hmr/src/index.ts#L20-L23`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/vendor/hmr/src/index.ts#L20-L23) · [0.1.6-alpha.1 `packages/boot/app-boot/src/watch-config.ts#L36-L80`](
  • Network accessline 155
    - **Migration recipe**: decide the policy per deployment and write it down explicitly — add `enabled: false` to the `session-log-deepseek` row in every profile, overlay or test composition that must not contribute the log, which is exactly 
  • Network accessline 157
    - **Source**: [0.1.6-alpha.1 `packages/session/session-log-deepseek/src/index.ts#L37-L46`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/session/session-log-deepseek/src/index.ts#L37-L46) · [0.1.6-alpha.1 
  • Network accessline 168
    - **Migration recipe**: (1) swap every `@deepseek-ai/dsh-code-runtime*` dependency/import for `@deepseek-ai/dsh-ptc-runtime` / `@deepseek-ai/dsh-ptc-runtime-node`, including `peerDependencies` and profile rows; (2) rename identifiers `CodeR
  • Network accessline 170
    - **Source**: [0.1.6-alpha.1 `packages/ptc-runtime/ptc-runtime/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/ptc-runtime/ptc-runtime/src/index.ts#L91-L150), [`packages/ptc-runtime/ptc-runtim
  • Network accessline 181
    - **Migration recipe**: (1) change each `extends SandboxProvider` method to `async confine(argv, policy, signal?): Promise<ConfinedArgv>` and call `signal?.throwIfAborted()` before resolving a runner; (2) convert every call site to `await c
  • Network accessline 183
    - **Source**: [0.1.6-alpha.1 `packages/sandbox/sandbox/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/sandbox/sandbox/src/index.ts#L164-L181), [`packages/sandbox/sandbox/src/diagnostics.ts`](
  • Network accessline 194
    - **Migration recipe**: (1) implementors: declare `start(spec): Promise<ShellProcess>`, `await` preparation (sandbox confinement, helper launch) before publishing, reject (never resolve) on cancellation or setup failure, and keep observing 
  • Network accessline 196
    - **Source**: [0.1.6-alpha.1 `packages/shell/shell/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/shell/shell/src/index.ts#L87-L101), [`packages/shell/tool-bash/src/index.ts`](https://github.
  • Network accessline 210
    - **Migration recipe**: (1) add `async terminalEnvironment(signal?)` to your `SubprocessRuntime` subclass returning `{ platform: 'posix' | 'windows' }` (plus `defaultShell` when resolvable) and honor the signal; (2) plain `spawn` consumers 
  • Network accessline 212
    - **Source**: [0.1.6-alpha.1 `packages/subprocess/subprocess/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/subprocess/subprocess/src/index.ts#L138-L143), [`packages/subprocess/subprocess/src
  • Network accessline 223
    - **Migration recipe**: (1) swap the package name in dependencies and profile rows, and update any patch layer that targets row id `workflow-worker-thread` (a stale id only warns — `patch: entry %C not found`, `vendor/include/src/index.ts:1
  • Network accessline 225
    - **Source**: [0.1.6-alpha.1 `packages/workflow/workflow-ptc/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/workflow/workflow-ptc/src/index.ts#L102-L174), [`packages/workflow/workflow-ptc/pac
  • Network accessline 236
    - **Migration recipe**: (1) a server whose instructions exceed ~32 KiB (or a row with `failOnStartupError: true`) now fails to publish — shorten the instructions or raise `maxInstructionBytes` explicitly; (2) if you imported `@modelcontextp
  • Network accessline 238
    - **Source**: [0.1.6-alpha.1 `packages/mcp/mcp-client/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/mcp/mcp-client/src/index.ts#L20-L27), [`packages/mcp/mcp-client/src/connection.ts`](https:
  • Network accessline 249
    - **Migration recipe**: (1) existing plugins need nothing — with no configured MCP server there is no prompt section, no tool schema, no PTC declaration and no PTC binding; (2) to offer resources, mount `@deepseek-ai/dsh-mcp-resources` in t
  • Network accessline 251
    - **Source**: [0.1.6-alpha.1 `packages/mcp/mcp-resources/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/mcp/mcp-resources/src/index.ts#L14-L126), [`packages/mcp/mcp-resources/src/tools.ts`](h
  • Network accessline 262
    - **Migration recipe**: (1) mount `@deepseek-ai/dsh-ssh` with verified helper coordinates, then mount `dsh-fs-ssh`, `dsh-subprocess-ssh` and `dsh-sandbox-ssh` in place of — not beside — their local counterparts so all consumers share one ex
  • Network accessline 264
    - **Source**: [0.1.6-alpha.1 `packages/ssh/ssh/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/ssh/ssh/src/index.ts#L17-L104), [`packages/ssh/fs-ssh/src/index.ts`](https://github.com/deepseek-
  • Network accessline 282
    - **Migration recipe**: delete every use of `offloadRequestImagesWithPolicy`, `RequestImageOffloadPolicy` and `offloadedImagePrefixCount` (grep those three names). Compute each retained occurrence's exact request-version byte length, call `
  • Network accessline 284
    - **Source**: [0.1.6-alpha.1 `packages/llm/llm/src/content.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/llm/llm/src/content.ts) · [0.1.6-alpha.1 `packages/llm/llm/src/types.ts`](https://github.com/de
  • Network accessline 293
    - **Action level**: required-if-hit - **Symptoms**: the same provider route and the same default model id now speak a different protocol to a different default endpoint.   - On rc.2 `Config` (`packages/llm/llm-deepseek/src/index.ts:134`) ha
  • Network accessline 294
    - **Symptoms**: the same provider route and the same default model id now speak a different protocol to a different default endpoint.   - On rc.2 `Config` (`packages/llm/llm-deepseek/src/index.ts:134`) had no protocol field, the endpoint de
  • Network accessline 295
    - On rc.2 `Config` (`packages/llm/llm-deepseek/src/index.ts:134`) had no protocol field, the endpoint default was `PUBLIC_BASE_URL = 'https://api.deepseek.com'` (`:210`), and the adapter appended a fixed path: `fetch(\`${connection.baseURL}
  • Network accessline 296
    - On 0.1.6-alpha.1 `packages/llm/llm-deepseek/src/config.ts:26-27` adds `protocol?: DeepSeekProtocol` with schema default `'messages'` at `:81`; the type is `DeepSeekProtocol = 'chat-completions' | 'messages'` at `packages/llm/llm-deepseek/
  • Network accessline 299
    - `packages/bundle/base/cordis.patch.yml` still sets `provider: deepseek-official` / `model: deepseek-flash` unchanged, so an overlay that only overrode `baseURL` at a Chat-Completions-only gateway now posts Anthropic-shaped requests there,
  • Network accessline 300
    - **Migration recipe**: grep your profile, overlay, plugin and provisioning scripts for `llm-deepseek`, `deepseek-official`, `DEEPSEEK_BASE_URL` and `chat/completions`. If you override the endpoint with a Chat-Completions-only URL, add `pro
  • Network accessline 301
    - **Verification**: call the plugin's exported `resolveAdapterOptions({}, undefined)` and confirm `baseURL === 'https://api.deepseek.com/anthropic'`; call it with `{ protocol: 'chat-completions' }` and confirm `https://api.deepseek.com`. Po
  • Network accessline 302
    - **Source**: [0.1.6-alpha.1 `packages/llm/llm-deepseek/src/config.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/llm/llm-deepseek/src/config.ts) · [0.1.6-alpha.1 `packages/llm/llm-deepseek/src/protoco
  • Network accessline 319
    - **Migration recipe**: grep `DEFAULT_REQUEST_IMAGE_PIXEL_BUDGET`, `resolveRequestImagePolicy` and `MAX_CHAT_IMAGE_BYTES`. Replace `resolveRequestImagePolicy(model)` with `resolveRequestImageTarget(model, ref)` (returns `{ width, height, ma
  • Network accessline 321
    - **Source**: [0.1.6-alpha.1 `packages/llm/llm-deepseek/src/common/request-pricing.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/llm/llm-deepseek/src/common/request-pricing.ts) · [0.1.6-alpha.1 `packa
  • Network accessline 338
    - **Migration recipe**: re-derive any persisted projection state — a version-4 `contextBreakdown` or `contextPressure` checkpoint is a cache miss on 0.1.6-alpha.1 and must not be asserted as current — and update pinned fixtures to `stateVer
  • Network accessline 340
    - **Source**: [0.1.6-alpha.1 `packages/llm/token-meter/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/llm/token-meter/src/index.ts) · [0.1.6-alpha.1 `packages/llm/token-meter/src/breakdown-pr
  • Network accessline 355
    - **Migration recipe**: grep `AssistantProvenance` and replace the host import with `AssistantProviderMetadata` from `@deepseek-ai/dsh-llm`. On the client face, replace `AssistantProvenanceView` with `AssistantProviderMetadataView` and the 
  • Network accessline 357
    - **Source**: [0.1.6-alpha.1 `packages/llm/llm/src/message.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/llm/llm/src/message.ts) · [0.1.6-alpha.1 `packages/llm/llm/src/types.ts`](https://github.com/de
  • Network accessline 375
    - **Migration recipe**: rename every import (`ContextProvenanceView` → `ContextProducerView`, `AssistantProvenanceView` → `AssistantProviderMetadataView`); update field reads (`AssistantMessageNode.providerMetadata`, `ContextMessageNode.pro
  • Network accessline 377
    - **Source**: [0.1.6-alpha.1 `packages/client/ui-conversation/src/client/contract/context-producer.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/client/ui-conversation/src/client/contract/context-prod
  • Network accessline 395
    - **Migration recipe**: add `name` to every `CommandClaim` you build — the catalog command name without the leading slash, i.e. what `/name args` executes — and keep your existing `token` as the spelling the composer draft shows; if a test 
  • Network accessline 397
    - **Source**: [0.1.6-alpha.1 `packages/client/ui-conversation/src/client/contract/input.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/client/ui-conversation/src/client/contract/input.ts) · [0.1.6-alph
  • Network accessline 415
    - **Migration recipe**: if you built your own picker from `faceOf('permissions').getSnapshot().options`, stop — read `currentValue` from the projection and fetch the options from `ctx.remote.permissionPresets.catalog()` (declare `remote.per
  • Network accessline 417
    - **Source**: [0.1.6-alpha.1 `packages/client/ui-conversation/src/client/contract/slots.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/client/ui-conversation/src/client/contract/slots.ts) · [0.1.6-alph
  • Network accessline 437
    - **Migration recipe**: give every guide entry a stable, provider-unique `id`; set `multiple: true` for a kind whose tabs must not collapse into one page; register `ctx.sidebarRight.registerCloseHandler(kind, handler)` (one per kind, effect
  • Network accessline 439
    - **Source**: [0.1.6-alpha.1 `packages/client/ui-sidebar-right/src/client/tab-registry.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/client/ui-sidebar-right/src/client/tab-registry.ts) · [0.1.6-alpha.
  • Network accessline 452
    - **Migration recipe**: delete `reconnectLabel` from every `<ConnectionIndicator>` call site and make `disconnectedLabel` itself name the retry action (that is the new copy contract: the outage label names what clicking does). No other prop
  • Network accessline 454
    - **Source**: [0.1.6-alpha.1 `packages/client/ui-primitives/src/ConnectionIndicator.tsx`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/client/ui-primitives/src/ConnectionIndicator.tsx) · [0.1.6-alpha.1 `p
  • Network accessline 467
    - **Migration recipe**: keep passing the raw before/after fragments including unchanged context — do not pre-split them. Refresh pinned `+/-` totals, rendered row strings, DOM snapshots and `diffTotals` expectations: they shrink to the chan
  • Network accessline 469
    - **Source**: [0.1.6-alpha.1 `packages/client/ui-primitives/src/DiffBlock.tsx`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/client/ui-primitives/src/DiffBlock.tsx) · [0.1.6-alpha.1 `packages/client/ui-pr
  • Network accessline 487
    - **Migration recipe**: stop opening the client with `?fixture`, and drop any CI job that does. For slot/component work keep `SlotTestRuntime.create()` from `@deepseek-ai/dsh-client-test-runtime` (unchanged). For plugin activation, reload, 
  • Network accessline 489
    - **Source**: [0.1.6-alpha.1 `packages/client/connection/src/client/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/client/connection/src/client/index.ts) · [0.1.6-alpha.1 `packages/test-support/c
  • Network accessline 500
    - **Migration recipe**: replace the old row with the two new rows in every overlay/patch you maintain, and move any `provider: spawn` config onto `workflow-ptc`; keep `ptc-runtime` config-free unless the deployment needs a different PTC run
  • Network accessline 502
    - **Source**: [0.1.6-alpha.1 `packages/bundle/base/cordis.patch.yml`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/bundle/base/cordis.patch.yml) · [rc.2 `packages/bundle/base/cordis.patch.yml`](https://gi
  • Network accessline 513
    - **Migration recipe**: do not widen a plugin's own message handling to assume images always arrive as image blocks — read the projection instead, because a selected occurrence arrives as `offloadedImageText` naming the attachment and its r
  • Network accessline 515
    - **Source**: [0.1.6-alpha.1 `packages/compaction/compaction-image-offload/src/projection.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/compaction/compaction-image-offload/src/projection.ts) · [0.1.6-
  • Network accessline 526
    - **Migration recipe**: restore the row from an overlay only where the deployment genuinely wants it, by adding `- id: tool-ralph` with `disabled: false` (and the previous `subagentProvider`/`maxRounds` config) to `$DSH_HOME/cordis.patch.ym
  • Network accessline 528
    - **Source**: [0.1.6-alpha.1 `packages/bundle/base/cordis.patch.yml`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/bundle/base/cordis.patch.yml) · [rc.2 `packages/bundle/base/cordis.patch.yml`](https://gi
  • Network accessline 539
    - **Migration recipe**: drop a hand-added `mcp-resources` row from overlays that inherit base or sdk-minimal, and keep only deployment-specific config in an overlay that overrides the shipped row. Adopt the resource surface through the plug
  • Network accessline 541
    - **Source**: [0.1.6-alpha.1 `packages/bundle/base/cordis.patch.yml`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/bundle/base/cordis.patch.yml) · [0.1.6-alpha.1 `packages/bundle/sdk-minimal/cordis.patch.
  • Network accessline 552
    - **Migration recipe**: remove `code-runtime` from Web overlays and manifests and let the base's PTC row serve execution; if an overlay pinned the row to keep PTC out of the Web bundle, re-express that intent against the new row ids. Audit 
  • Network accessline 554
    - **Source**: [0.1.6-alpha.1 `packages/bundle/web-app/cordis.patch.yml`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/bundle/web-app/cordis.patch.yml) · [rc.2 `packages/bundle/web-app/cordis.patch.yml`](h
  • Network accessline 565
    - **Migration recipe**: treat a dependency on a removed package as a broken coordinate, not as a version problem. Move worker-thread code runtime consumers to `@deepseek-ai/dsh-ptc-runtime-node` (composed by the base's `ptc-runtime` row) an
  • Network accessline 567
    - **Source**: [0.1.6-alpha.1 `packages/`](https://github.com/deepseek-ai/deepseek-harness/tree/dsh-v0.1.6-alpha.1/packages) · [rc.2 `packages/`](https://github.com/deepseek-ai/deepseek-harness/tree/dsh-v0.1.5-rc.2/packages) · [0.1.6-alpha.1
  • Network accessline 578
    - **Migration recipe**: for machine consumers, switch to `--json` and parse the documented fields instead of scraping text; when continuing existing work, pass `--session-id <id>` and assert the run appends to that session rather than creat
  • Network accessline 580
    - **Source**: [0.1.6-alpha.1 `packages/bundle/headless/cordis.patch.yml`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/bundle/headless/cordis.patch.yml) · [0.1.6-alpha.1 `packages/bundle/headless/src/inde
  • Network accessline 632
    `dsh.manifestVersion`; a lockfile pinned to the old declaration package passes typecheck   against stale bytes, so reinstall before believing a green build. - **Source**: [0.1.6-alpha.1 `packages/util/package-manifest/src/types.ts`](https:/
  • Network accessline 634
    - **Source**: [0.1.6-alpha.1 `packages/util/package-manifest/src/types.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/util/package-manifest/src/types.ts) · [0.1.6-alpha.1 `packages/util/package-manifes
  • Network accessline 703
    experimental manifest carries `publishConfig.access == "public"`; then confirm the intended   names resolve from npm at the new version. - **Source**: [0.1.6-alpha.1 `scripts/experimental-package-policy.ts`](https://github.com/deepseek-ai/d
  • Network accessline 705
    - **Source**: [0.1.6-alpha.1 `scripts/experimental-package-policy.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/scripts/experimental-package-policy.ts) · [0.1.6-alpha.1 `scripts/npm-baseline-packages.ts`](http
  • Network accessline 743
    the profile root), then start the host and mount a shipped profile — the addon load is on the   startup path, so a mismatch surfaces there rather than at first use. - **Source**: [0.1.6-alpha.1 `vendor/loader/package.json`](https://github.c
  • Network accessline 745
    - **Source**: [0.1.6-alpha.1 `vendor/loader/package.json`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/vendor/loader/package.json) · [0.1.6-alpha.1 `apps/cli/package.json`](https://github.com/deepseek-ai/deepseek
  • Network accessline 812
    rules, and `apps/desktop/tests/profile-mcp.spec.ts` covers the Desktop composition including   its Host overlay. Signed installed-artifact qualification remains a release-environment check. - **Source**: [0.1.6-alpha.1 `apps/desktop/README.
  • Network accessline 814
    - **Source**: [0.1.6-alpha.1 `apps/desktop/README.md`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/apps/desktop/README.md) · [0.1.6-alpha.1 `apps/desktop/src/core-package-set.ts`](https://github.com/deepseek-ai/d
  • Network accessline 831
    - **Migration recipe**: no source action. Spend the effort on the moved surfaces instead — the PTC runtime replacement, the package ledger, the required-on-read `image/offload` event, and the adapter image-budget seam. - **Verification**: `
  • Network accessline 833
    - **Source**: [0.1.6-alpha.1 `packages/core/session/src/types.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.1/packages/core/session/src/types.ts) · [rc.2 `packages/core/session/src/types.ts`](https://github.com/

skills/plugin-upgrade/scripts/ghost-host-check.check.mjs

  • Executable scriptline 1
    Executable file

skills/plugin-upgrade/scripts/ghost-host-check.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Network accessline 131
    if (portArg !== undefined) {     try {       const res = await fetch(`http://127.0.0.1:${portArg}/api/agentPreset.list`, {
  • Network accessline 132
    try {       const res = await fetch(`http://127.0.0.1:${portArg}/api/agentPreset.list`, {         method: 'POST',
  • Network accessline 133
    const res = await fetch(`http://127.0.0.1:${portArg}/api/agentPreset.list`, {

skills/plugin-upgrade/scripts/inject-lint.mjs

  • Executable scriptline 1
    #!/usr/bin/env node

skills/plugin-upgrade/scripts/inject-lint.test.mjs

  • Executable scriptline 1
    Executable file

skills/plugin-upgrade/scripts/plan-migration.check.mjs

  • Executable scriptline 1
    Executable file
  • Access to secretsline 43
    [Credential-related source omitted]
  • Access to secretsline 71
    [Credential-related source omitted]

skills/plugin-upgrade/scripts/plan-migration.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Access to secretsline 22
    [Credential-related source omitted]

skills/plugin-upgrade/scripts/verify-runtime.check.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 130
    assert.equal(classifySpec('@deepseek-ai/dsh-some-plugin'), 'npm-name')   assert.equal(classifySpec('dsh-better-sidebar'), 'npm-name')   assert.equal(classifySpec('https://github.com/user/plugin.git'), 'git-url')
  • Network accessline 131
    assert.equal(classifySpec('dsh-better-sidebar'), 'npm-name')   assert.equal(classifySpec('https://github.com/user/plugin.git'), 'git-url')   assert.equal(classifySpec('git@github.com:user/plugin.git'), 'git-url')
  • Network accessline 132
    assert.equal(classifySpec('https://github.com/user/plugin.git'), 'git-url')
  • Network accessline 161
    assert.equal(listKeyFor('https://github.com/user/plugin.git', 'git-url'), 'plugin')

skills/plugin-upgrade/scripts/verify-runtime.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Network accessline 56
    const DEAD_MODEL_BASE_URL = 'http://127.0.0.1:9/v1' // port 9 (discard): nothing listens -> immediate ECONNREFUSED
  • Network accessline 245
    * caller's mirror means the verdict was reached on a possibly-stale version. */ function pinNpmSpec(pkgName) {   const view = run('npm', ['view', pkgName, 'dist-tags.latest', '--registry=https://registry.npmjs.org'], { timeoutSeconds: 60 })
  • Network accessline 246
    function pinNpmSpec(pkgName) {   const view = run('npm', ['view', pkgName, 'dist-tags.latest', '--registry=https://registry.npmjs.org'], { timeoutSeconds: 60 })   const latest = (view.stdout ?? '').trim().replace(/^["']|["']$/g, '')
  • Network accessline 247
    const view = run('npm', ['view', pkgName, 'dist-tags.latest', '--registry=https://registry.npmjs.org'], { timeoutSeconds: 60 })
  • Access to secretsline 262
    [Credential-related source omitted]

skills/plugin-workflow/references/workflow-selection.schema.json

  • Network accessline 1
    {   "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 2
    "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 3
    "$id": "https://github.com/oh-my-dsh/dsh-plugin-upgrade-skill/blob/main/skills/plugin-workflow/references/workflow-selection.schema.json",

skills/plugin-workflow/scripts/plan-workflow.check.mjs

  • Executable scriptline 1
    Executable file

skills/plugin-workflow/scripts/plan-workflow.mjs

  • Executable scriptline 1
    #!/usr/bin/env node

skills/plugin-write/references/config-plugin.md

  • Access to secretsline 39
    [Credential-related source omitted]

skills/plugin-write/references/llm-adapter-plugin.md

  • Access to secretsline 23
    [Credential-related source omitted]

skills/plugin-write/references/naming-conventions.md

  • Network accessline 3
    This is a community compatibility profile, not an official DeepSeek Harness naming standard. It was verified on 2026-08-31 against [`dsh-v0.1.2-alpha.2`](https://github.com/deepseek-ai/deepseek-harness/tree/0a53fb55bea101816fa226bb964ae2bed
  • Network accessline 30
    Primary sources: [first plugin](https://github.com/deepseek-ai/deepseek-harness/blob/0a53fb55bea101816fa226bb964ae2bed71c343b/docs/user/develop/basic/index.zh.md), [bundle publishing and Loader layers](https://github.com/deepseek-ai/deepsee

skills/plugin-write/references/naming-policy.v1.json

  • Network accessline 7
    "appliesTo": "external-community-plugin",   "officialBaseline": {     "repository": "https://github.com/deepseek-ai/deepseek-harness",
  • Network accessline 8
    "officialBaseline": {     "repository": "https://github.com/deepseek-ai/deepseek-harness",     "ref": "dsh-v0.1.2-alpha.2",
  • Network accessline 9
    "repository": "https://github.com/deepseek-ai/deepseek-harness",
  • Network accessline 13
    },   "centralRegistry": {     "repository": "https://github.com/oh-my-dsh/dsh-plugin-registry",
  • Network accessline 14
    "centralRegistry": {     "repository": "https://github.com/oh-my-dsh/dsh-plugin-registry",     "contract": "dsh-plugin-registry/v2",
  • Network accessline 15
    "repository": "https://github.com/oh-my-dsh/dsh-plugin-registry",
  • Network accessline 16
    "contract": "dsh-plugin-registry/v2",     "indexSchemaUrl": "https://raw.githubusercontent.com/oh-my-dsh/dsh-plugin-registry/main/registry/schema/plugin-index.schema.json",     "defaultIndexUrl": "https://raw.githubusercontent.com/oh-my-dsh
  • Network accessline 17
    "indexSchemaUrl": "https://raw.githubusercontent.com/oh-my-dsh/dsh-plugin-registry/main/registry/schema/plugin-index.schema.json",
  • Network accessline 18
    "defaultIndexUrl": "https://raw.githubusercontent.com/oh-my-dsh/dsh-plugin-registry/main/registry/index.json"

skills/plugin-write/references/plugin-naming.schema.json

  • Network accessline 1
    {   "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 2
    "$schema": "https://json-schema.org/draft/2020-12/schema",

skills/plugin-write/references/registry-check.md

  • Network accessline 20
    https://raw.githubusercontent.com/oh-my-dsh/dsh-plugin-registry/main/registry/index.json
  • Network accessline 34
    https://raw.githubusercontent.com/oh-my-dsh/dsh-plugin-registry/main/registry/schema/plugin-index.schema.json
  • Network accessline 82
    1. Commit the validated `dsh-plugin.naming.json` to the public plugin repository. 2. Clone or update `https://github.com/oh-my-dsh/dsh-plugin-registry`, then copy its
  • Network accessline 83
    2. Clone or update `https://github.com/oh-my-dsh/dsh-plugin-registry`, then copy its

skills/plugin-write/scripts/query-registry.check.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 52
    plugin: {       id: `${namespace}/web-search`,       repository: `https://github.com/${namespace}/dsh-web-search`,
  • Network accessline 53
    id: `${namespace}/web-search`,       repository: `https://github.com/${namespace}/dsh-web-search`,       package: naming.plugin.packageName,
  • Network accessline 54
    repository: `https://github.com/${namespace}/dsh-web-search`,
  • Network accessline 124
    export async function runRegistryQueryChecks() {   const policy = await loadNamingPolicy()   assert.equal(policy.centralRegistry?.repository, 'https://github.com/oh-my-dsh/dsh-plugin-registry')
  • Network accessline 125
    const policy = await loadNamingPolicy()   assert.equal(policy.centralRegistry?.repository, 'https://github.com/oh-my-dsh/dsh-plugin-registry')   assert.equal(policy.centralRegistry?.contract, REGISTRY_CONTRACT)
  • Network accessline 126
    assert.equal(policy.centralRegistry?.repository, 'https://github.com/oh-my-dsh/dsh-plugin-registry')
  • Network accessline 153
    assertInvalidIndex(candidate, (value) => { value.$schema = 'https://example.com/plugin-index.schema.json' }, /index\.\$schema/)
  • Network accessline 294
    const strict = await runCli(['--manifest', manifestPath, '--index', indexPath, '--harness-version', '0.1.2-alpha.2', '--strict'])     assert.equal(strict.code, 1)     const unavailable = await runCli(['--manifest', manifestPath, '--registry
  • Network accessline 295
    assert.equal(strict.code, 1)     const unavailable = await runCli(['--manifest', manifestPath, '--registry-url', 'http://127.0.0.1:1/index.json', '--format', 'json'])     assert.equal(unavailable.code, 2)
  • Network accessline 296
    const unavailable = await runCli(['--manifest', manifestPath, '--registry-url', 'http://127.0.0.1:1/index.json', '--format', 'json'])

skills/plugin-write/scripts/query-registry.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Network accessline 9
    export const DEFAULT_REGISTRY_URL = 'https://raw.githubusercontent.com/oh-my-dsh/dsh-plugin-registry/main/registry/index.json'
  • Network accessline 11
    export const REGISTRY_INDEX_SCHEMA_URL = 'https://raw.githubusercontent.com/oh-my-dsh/dsh-plugin-registry/main/registry/schema/plugin-index.schema.json'
  • Network accessline 262
    checkString(plugin.repository, `${path}.plugin.repository`)   const repository = repositoryParts(plugin.repository)   if (!repository) invalid(`${path}.plugin.repository`, 'must be a canonical https://github.com/<owner>/<repo> URL')
  • Network accessline 263
    const repository = repositoryParts(plugin.repository)   if (!repository) invalid(`${path}.plugin.repository`, 'must be a canonical https://github.com/<owner>/<repo> URL')   const namespace = plugin.id.split('/')[0]
  • Network accessline 264
    if (!repository) invalid(`${path}.plugin.repository`, 'must be a canonical https://github.com/<owner>/<repo> URL')

skills/plugin-write/scripts/validate-names.check.mjs

  • Executable scriptline 1
    Executable file

skills/plugin-write/scripts/validate-names.mjs

  • Executable scriptline 1
    #!/usr/bin/env node

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

Signal confidence: 500 facts

and 450 more

Only the first 500 facts are listed.

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeCompatibleStandard SKILL.md .dsh/skills/dsh-benchmark-case/SKILL.md.claude/skills/<skill-name>/
CodexNativeManifest AGENTS.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md .dsh/skills/dsh-benchmark-case/SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md .dsh/skills/dsh-benchmark-case/SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md .dsh/skills/dsh-benchmark-case/SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md .dsh/skills/dsh-benchmark-case/SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.

Add this badge to your README

It updates every night and links to this page.

NanmiCoder/dsh-agent-teams: #441 on hotskills, 2.7k stars

[![NanmiCoder/dsh-agent-teams on hotskills](https://hotskills.dev/badge/nanmicoder-dsh-agent-teams.svg)](https://hotskills.dev/skill/nanmicoder-dsh-agent-teams/)