@xdxer/dingtalk-agent 0.1.4-beta.17 → 0.1.4-beta.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/dist/bin/dingtalk-agent.js +20 -0
  3. package/dist/bin/dingtalk-agent.js.map +1 -1
  4. package/dist/src/agent-audit.js +1 -1
  5. package/dist/src/agent-audit.js.map +1 -1
  6. package/dist/src/doctor.js +9 -1
  7. package/dist/src/doctor.js.map +1 -1
  8. package/dist/src/host-detect.js +146 -0
  9. package/dist/src/host-detect.js.map +1 -0
  10. package/lab/agent-eval/catalog.json +1 -1
  11. package/lab/agent-eval/classic-failures.json +1 -1
  12. package/package.json +1 -1
  13. package/skills/core/dingtalk-agent-compose/SKILL.md +24 -23
  14. package/skills/core/dingtalk-agent-compose/evals/evals.json +20 -8
  15. package/skills/core/dingtalk-agent-compose/references/agent-definition-contract.md +1 -1
  16. package/skills/core/dingtalk-agent-compose/references/host-loading-contract.md +58 -0
  17. package/skills/core/dingtalk-agent-compose/references/hosts/claude-code.md +48 -0
  18. package/skills/core/dingtalk-agent-compose/references/{opencode-host-contract.md → hosts/opencode.md} +4 -0
  19. package/skills/core/dingtalk-agent-eval/SKILL.md +17 -5
  20. package/skills/core/dingtalk-agent-eval/assets/eval-catalog.template.json +1 -1
  21. package/skills/core/dingtalk-agent-eval/references/eval-topology.md +12 -0
  22. package/skills/core/dingtalk-agent-eval/references/evidence-contract.md +17 -0
  23. package/skills/core/dingtalk-agent-eval/references/failure-to-case.md +35 -0
  24. package/skills/core/dingtalk-agent-eval/references/interactive-debug-channels.md +4 -4
  25. package/skills/core/dingtalk-agent-eval/references/local-connector-smoke.md +75 -0
  26. package/skills/platforms/multica-dingtalk/PLATFORM.md +1 -1
  27. /package/skills/core/dingtalk-agent-compose/assets/{opencode.template.json → hosts/opencode/opencode.template.json} +0 -0
package/CHANGELOG.md CHANGED
@@ -2,6 +2,46 @@
2
2
 
3
3
  All notable changes to `@xdxer/dingtalk-agent` are documented here. The project follows semantic versioning; prerelease entries describe release candidates and do not imply that Live canaries or registry publication have completed.
4
4
 
5
+ ## 0.1.4-beta.19 - 2026-07-20
6
+
7
+ ### Added
8
+
9
+ - `references/host-loading-contract.md`: the loading contract stated as four host-agnostic invariants — the Definition is loaded by the host's native project rule and must not also enter custom instructions; the Basic Skill's body is the single resolved forced instruction of every session, not merely "discoverable"; the Basic exposure must be materialized as a whole tree matching the canonical hash; Role Skills stay discoverable-and-authorized without joining the forced set. The three evidence classes are described in general form, with the binding fields (host name, host version, model, raw trace) supplied by each host adapter.
10
+ - `references/hosts/claude-code.md`: Claude Code's mechanism differences, most importantly that it does **not** natively read `AGENTS.md` (the body must be referenced via `@AGENTS.md` in `CLAUDE.md` or a symlink) and that its skill exposure root `.claude/skills` is not shared with `.agents/skills`. The file states plainly that the adapter is unimplemented and that choosing Claude Code therefore caps the verdict at `partial`.
11
+ - `src/host-detect.ts` and a `hosts` section in `doctor`: which coding agent CLIs are installed locally, with binary path, version, config roots (honoring `CLAUDE_CONFIG_DIR`, `CODEX_HOME`, `XDG_CONFIG_HOME`) and skill exposure root reported separately.
12
+
13
+ ### Changed
14
+
15
+ - The minimal Agent directory is now harness-agnostic: `opencode.json` and `.agents/skills/` are no longer part of the core, matching what `examples/agents/*` have always contained. Host config and exposure directories are listed as "appended per chosen host, not part of the body". Compose gains a step for letting the user choose the Agent Host instead of defaulting silently.
16
+ - OpenCode-specific material moved to `references/hosts/opencode.md` and `assets/hosts/opencode/`. OpenCode remains the only host with a complete adapter, and the documentation says so rather than implying broader support.
17
+ - Not selecting a host is not an exemption: an unselected host, or one without an adapter, yields `partial` and never `ready`.
18
+ - `doctor` no longer derives Codex and OpenCode status from one shared boolean. `cli.found` (binary on PATH) and skill visibility are separate fields, so a machine with neither client installed no longer reports both as `ok`. The `hosts` array is additive and does not participate in `ready`; the three existing client checks keep their level semantics.
19
+ - `scripts/check-skill-versions.mjs` compares the baseline tree against the working tree instead of `base...HEAD`, which only saw committed changes and passed vacuously before a commit.
20
+ - Host lists, per-host directory conventions and multi-host installation continue to be delegated to the upstream `skills` CLI rather than reimplemented; this repository only owns the loading contract and the loading evidence, which upstream does not provide.
21
+
22
+ ### Release boundary
23
+
24
+ - Distribution is limited to the public npm `beta` dist-tag and a Git tag. No DingTalk write, robot binding, or Live canary was executed. The Claude Code adapter is documented but not implemented, and no evidence class is claimed for it. Verification used targeted contract scenarios (24/27/28/30/34/50/56/60/62).
25
+
26
+ ## 0.1.4-beta.18 - 2026-07-20
27
+
28
+ ### Added
29
+
30
+ - `dingtalk-agent-eval/references/local-connector-smoke.md`: the local route for an Agent that is **not yet deployed** — a dedicated test robot driven by a `dws dev connect` connector against a local workspace. Covers egress ownership (`robot-connect`/`connector`), the workspace constraints that must hold before starting, a five-step runbook, `status=not_running` as the only teardown truth, and how it differs from the Robot Pool. It is explicitly not a fourth interactive channel: the other three test deployed artifacts.
31
+ - `dingtalk-agent-eval/references/failure-to-case.md`: how a real failure becomes a regression case — the iteration path, the CLI-versus-Skill discrimination rule ("would bypassing this produce a worse reply, or a wrong side effect?"), and how to set up the with/without and current/previous comparisons without letting ordering effects read as gains.
32
+ - The L0–L4 tier table with promotion rules now lives in the eval SKILL; the eight-item hard-gate checklist and the sandbox containment audit now live in `evidence-contract.md`; egress ownership and the Role Principal / Execution Subject / Input Channel split now live in `eval-topology.md`.
33
+
34
+ ### Changed
35
+
36
+ - Testing methods are consolidated into the eval skill as the single source of truth. `docs/SELF-TEST.md` loses 191 lines of method content and keeps only this repository's own evidence, baselines and historical conclusions; `docs/ARCHITECTURE.md` and the Multica `PLATFORM.md` converge to pointers. This fixes a real defect: `docs/` is not part of the npm tarball, so shipped skill text was pointing users at files their installation does not contain.
37
+ - The local smoke route no longer hardcodes `--channel claudecode`. It selects by whichever coding agent is actually installed, and states plainly that the Robot Pool still pins a single channel.
38
+ - Fixed an error in the eval SKILL channel table: channel B's egress owner is the platform-side Agent, not the connector.
39
+ - `dingtalk-agent-eval` 0.6.0 → 0.7.0.
40
+
41
+ ### Release boundary
42
+
43
+ - Distribution is limited to the public npm `beta` dist-tag and a Git tag. No DingTalk write, robot binding, or Live canary was executed. Verification used targeted contract scenarios (20/28/34/56/62) plus a link check over the packaged skill tree, per the repository's current fast-verification discipline.
44
+
5
45
  ## 0.1.4-beta.17 - 2026-07-20
6
46
 
7
47
  ### Added
@@ -1562,12 +1562,32 @@ function printDoctor(out) {
1562
1562
  if (check.fix)
1563
1563
  console.log(` 修复: ${check.fix}`);
1564
1564
  }
1565
+ if (out.hosts.length) {
1566
+ // Host 面回答"本地能在哪跑",不改变上面的 ready 结论。
1567
+ console.log('\n本机 Coding Agent:');
1568
+ const width = Math.max(...out.hosts.map((host) => displayWidth(host.label)));
1569
+ for (const host of out.hosts) {
1570
+ const label = host.label + ' '.repeat(width - displayWidth(host.label));
1571
+ const where = host.cli.found
1572
+ ? [host.cli.path, host.cli.version].filter(Boolean).join(' ')
1573
+ : `未找到 ${host.cli.command}`;
1574
+ console.log(` ${host.cli.found ? '✅' : '❌'} ${label} ${where}`);
1575
+ console.log(` Skill 可见性: ${host.skillExposure.exists ? '已暴露' : '未暴露'} · ${host.skillExposureRoot}`);
1576
+ }
1577
+ }
1565
1578
  if (out.nextSteps.length) {
1566
1579
  console.log('\n下一步:');
1567
1580
  for (const step of out.nextSteps)
1568
1581
  console.log(` ${step}`);
1569
1582
  }
1570
1583
  }
1584
+ /** 全角字符按两列计宽,避免中英混排的 Host 列表错位。 */
1585
+ function displayWidth(text) {
1586
+ let width = 0;
1587
+ for (const char of text)
1588
+ width += /[ᄀ-ᅟ⺀-꓏가-힣豈-﫿︰-﹯＀-⦆¢-₩]/.test(char) ? 2 : 1;
1589
+ return width;
1590
+ }
1571
1591
  function printProjectInfo(out) {
1572
1592
  console.log(`dingtalk-agent Project · ${out.project.name}`);
1573
1593
  console.log(` root=${out.root}`);