@xdxer/dingtalk-agent 0.1.4-beta.9 → 0.1.4

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 (118) hide show
  1. package/CHANGELOG.md +198 -0
  2. package/README.en.md +98 -326
  3. package/README.md +95 -673
  4. package/dist/bin/dingtalk-agent.js +200 -18
  5. package/dist/bin/dingtalk-agent.js.map +1 -1
  6. package/dist/src/agent-audit.js +1014 -89
  7. package/dist/src/agent-audit.js.map +1 -1
  8. package/dist/src/agent-enhance.js +41 -8
  9. package/dist/src/agent-enhance.js.map +1 -1
  10. package/dist/src/agent-platform.js +299 -0
  11. package/dist/src/agent-platform.js.map +1 -0
  12. package/dist/src/config.js +1 -7
  13. package/dist/src/config.js.map +1 -1
  14. package/dist/src/development-workspace.js +31 -5
  15. package/dist/src/development-workspace.js.map +1 -1
  16. package/dist/src/doctor.js +74 -15
  17. package/dist/src/doctor.js.map +1 -1
  18. package/dist/src/host-detect.js +146 -0
  19. package/dist/src/host-detect.js.map +1 -0
  20. package/dist/src/instruction-path.js +270 -0
  21. package/dist/src/instruction-path.js.map +1 -0
  22. package/dist/src/map.js +157 -0
  23. package/dist/src/map.js.map +1 -0
  24. package/dist/src/multica-deploy.js +78 -20
  25. package/dist/src/multica-deploy.js.map +1 -1
  26. package/dist/src/multica-provider.js +1 -1
  27. package/dist/src/multica-provider.js.map +1 -1
  28. package/dist/src/opencode-evals.js +710 -225
  29. package/dist/src/opencode-evals.js.map +1 -1
  30. package/dist/src/opencode-isolation.js +124 -0
  31. package/dist/src/opencode-isolation.js.map +1 -0
  32. package/dist/src/opencode-provider.js +1 -0
  33. package/dist/src/opencode-provider.js.map +1 -1
  34. package/dist/src/opencode-workspace.js +21 -10
  35. package/dist/src/opencode-workspace.js.map +1 -1
  36. package/dist/src/remote-state-evals.js +2 -1
  37. package/dist/src/remote-state-evals.js.map +1 -1
  38. package/dist/src/robot-evals.js +2 -1
  39. package/dist/src/robot-evals.js.map +1 -1
  40. package/dist/src/setup.js +6 -5
  41. package/dist/src/setup.js.map +1 -1
  42. package/dist/src/skill-manager.js +141 -12
  43. package/dist/src/skill-manager.js.map +1 -1
  44. package/dist/src/skills.js +2 -1
  45. package/dist/src/skills.js.map +1 -1
  46. package/dist/src/types.js.map +1 -1
  47. package/dist/src/upgrade.js +23 -27
  48. package/dist/src/upgrade.js.map +1 -1
  49. package/dist/src/version.js +73 -0
  50. package/dist/src/version.js.map +1 -0
  51. package/docs/INSTALLATION.md +3 -3
  52. package/docs/assets/agent-delivery-lifecycle.svg +103 -0
  53. package/docs/schemas/agent-platform.schema.json +13 -0
  54. package/docs/schemas/project.schema.json +3 -0
  55. package/docs/schemas/release-readiness.schema.json +2 -1
  56. package/evals/README.md +17 -0
  57. package/lab/README.md +3 -3
  58. package/lab/agent-eval/catalog.json +5 -5
  59. package/lab/agent-eval/classic-failures.json +9 -9
  60. package/lab/agent-eval/completion-gate-regression.json +6 -6
  61. package/lab/agent-eval/remote-state-workspace/opencode.json +1 -1
  62. package/lab/agent-eval/workspace/AGENTS.md +1 -1
  63. package/lab/project-workspace/fake-multica-provider.mjs +17 -6
  64. package/lab/project-workspace/opencode-provider-suite.json +1 -1
  65. package/lab/robot-eval/suite.json +1 -1
  66. package/lab/robot-eval/workspace/AGENTS.md +1 -1
  67. package/lab/schemas/agent-eval-catalog.schema.json +1 -1
  68. package/package.json +13 -12
  69. package/skills/README.md +23 -0
  70. package/skills/core/dingtalk-agent-compose/SKILL.md +151 -0
  71. package/skills/core/dingtalk-agent-compose/assets/AGENTS.template.md +35 -0
  72. package/skills/core/dingtalk-agent-compose/assets/role-skill.template.md +32 -0
  73. package/skills/core/dingtalk-agent-compose/evals/evals.json +129 -0
  74. package/skills/{dingtalk-agent-compose → core/dingtalk-agent-compose}/references/agent-definition-contract.md +3 -3
  75. package/skills/core/dingtalk-agent-compose/references/host-loading-contract.md +58 -0
  76. package/skills/core/dingtalk-agent-compose/references/hosts/claude-code.md +48 -0
  77. package/skills/core/dingtalk-agent-compose/references/hosts/opencode.md +77 -0
  78. package/skills/{dingtalk-agent-eval → core/dingtalk-agent-eval}/SKILL.md +31 -7
  79. package/skills/{dingtalk-agent-eval → core/dingtalk-agent-eval}/assets/eval-catalog.template.json +1 -1
  80. package/skills/{dingtalk-agent-eval → core/dingtalk-agent-eval}/evals/evals.json +22 -0
  81. package/skills/{dingtalk-agent-eval → core/dingtalk-agent-eval}/references/eval-topology.md +14 -0
  82. package/skills/{dingtalk-agent-eval → core/dingtalk-agent-eval}/references/evidence-contract.md +21 -0
  83. package/skills/core/dingtalk-agent-eval/references/failure-to-case.md +35 -0
  84. package/skills/core/dingtalk-agent-eval/references/interactive-debug-channels.md +93 -0
  85. package/skills/core/dingtalk-agent-eval/references/local-connector-smoke.md +75 -0
  86. package/skills/core/dingtalk-basic-behavior/SKILL.md +87 -0
  87. package/skills/{dingtalk-basic-behavior → core/dingtalk-basic-behavior}/references/memory-and-evolution.md +12 -0
  88. package/skills/core/dingtalk-basic-behavior/references/risk-authority-and-privacy.md +62 -0
  89. package/skills/{dingtalk-basic-behavior → core/dingtalk-basic-behavior}/references/task-lifecycle.md +15 -3
  90. package/skills/core/dingtalk-basic-behavior/references/truth-and-recovery.md +65 -0
  91. package/skills/platforms/deap/PLATFORM.md +3 -0
  92. package/skills/platforms/deap/README.md +3 -0
  93. package/skills/platforms/multica-dingtalk/PLATFORM.md +40 -0
  94. package/skills/{dingtalk-agent-boot-multica → platforms/multica-dingtalk/dingtalk-agent-boot-multica}/SKILL.md +4 -4
  95. package/skills/{dingtalk-agent-deploy → platforms/multica-dingtalk/dingtalk-agent-deploy-multica}/SKILL.md +1 -1
  96. package/skills/platforms/multica-dingtalk/multica-external/SKILL.md +282 -0
  97. package/skills/platforms/multica-dingtalk/multica-external/scripts/bootstrap.sh +78 -0
  98. package/skills/platforms/multica-dingtalk/multica-external/scripts/multica_ext.py +1180 -0
  99. package/skills/dingtalk-agent-compose/SKILL.md +0 -110
  100. package/skills/dingtalk-agent-compose/assets/AGENTS.template.md +0 -26
  101. package/skills/dingtalk-agent-compose/assets/role-skill.template.md +0 -24
  102. package/skills/dingtalk-agent-compose/evals/evals.json +0 -94
  103. package/skills/dingtalk-agent-compose/references/opencode-host-contract.md +0 -65
  104. package/skills/dingtalk-basic-behavior/SKILL.md +0 -146
  105. /package/skills/{dingtalk-agent-compose → core/dingtalk-agent-compose}/assets/agent.bindings.dingtalk-doc.template.json +0 -0
  106. /package/skills/{dingtalk-agent-compose → core/dingtalk-agent-compose}/assets/agent.bindings.local.template.json +0 -0
  107. /package/skills/{dingtalk-agent-compose/assets → core/dingtalk-agent-compose/assets/hosts/opencode}/opencode.template.json +0 -0
  108. /package/skills/{dingtalk-agent-compose → core/dingtalk-agent-compose}/references/storage-routing.md +0 -0
  109. /package/skills/{dingtalk-agent-eval → core/dingtalk-agent-eval}/references/scenario-taxonomy.md +0 -0
  110. /package/skills/{dingtalk-agent-eval → core/dingtalk-agent-eval}/references/storage-modes.md +0 -0
  111. /package/skills/{dingtalk-basic-behavior → core/dingtalk-basic-behavior}/assets/memory-candidate-proposal.json +0 -0
  112. /package/skills/{dingtalk-basic-behavior → core/dingtalk-basic-behavior}/assets/task-checkpoint.json +0 -0
  113. /package/skills/{dingtalk-basic-behavior → core/dingtalk-basic-behavior}/references/action-contract.md +0 -0
  114. /package/skills/{dingtalk-basic-behavior → core/dingtalk-basic-behavior}/references/event-to-behavior.md +0 -0
  115. /package/skills/{dingtalk-basic-behavior → core/dingtalk-basic-behavior}/references/perception-and-gates.md +0 -0
  116. /package/skills/{dingtalk-basic-behavior → core/dingtalk-basic-behavior}/references/runtime-modes.md +0 -0
  117. /package/skills/{dingtalk-agent-deploy → platforms/multica-dingtalk/dingtalk-agent-deploy-multica}/references/multica-deployment-contract.md +0 -0
  118. /package/skills/{dingtalk-agent-deploy → platforms/multica-dingtalk/dingtalk-agent-deploy-multica}/references/promotion-observation-contract.md +0 -0
package/CHANGELOG.md CHANGED
@@ -2,6 +2,204 @@
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 - 2026-07-20
6
+
7
+ First stable release of the 0.1.4 line. It promotes the beta series to the `latest` dist-tag, which until now still pointed at 0.1.2. No code changes relative to `0.1.4-beta.19`; the entries below describe what accumulated across the beta line.
8
+
9
+ ### Highlights since 0.1.2
10
+
11
+ - **Agent definition is harness-agnostic.** The minimal Agent directory holds only `AGENTS.md`, storage bindings, memory/knowledge, Role Skills and the Field. Host configuration and skill exposure are appended per chosen host, not part of the body. The loading contract is stated as four host-agnostic invariants; OpenCode remains the only host with a complete adapter, and the documentation says so rather than implying broader support.
12
+ - **Skill versioning and update gates.** Installed skills report `missing / current / modified / outdated / ahead / unknown` against a whole-tree content hash. Upgrades refuse to downgrade without `--allow-downgrade` and re-read the canonical copy afterwards, so an exit code of 0 with a non-current readback is an error. A release-time guard fails the build when a skill's body changed without a version bump.
13
+ - **Testing methods consolidated into `dingtalk-agent-eval`.** Three interactive channels for a delivered Agent, the local connector smoke route for one that is not yet deployed, the L0–L4 tier table, the hard-gate checklist, and the failure-to-case iteration path all ship inside the skill instead of living in repository docs that the package does not contain.
14
+ - **`platform trace` as an evidence surface**, alongside response, filesystem, workspace, artifact and remote readback.
15
+ - **`doctor` reports locally installed coding agents** — binary path, version and config roots — with CLI presence and skill visibility as separate fields.
16
+
17
+ ### Release boundary
18
+
19
+ - Published to the public npm `latest` dist-tag as `0.1.4`; the `beta` dist-tag continues to point at `0.1.4-beta.19`.
20
+ - **Live gates remain waived.** The Live waivers carried since beta.9 are unchanged: no real DingTalk egress, personal-event canary, remote semantic state Live run, or Multica acceptance was executed for this release. Stable here means the deterministic contract and assembly gates hold and the public interfaces are settled — it does not mean the Live evidence chain has been exercised.
21
+ - Verification used targeted contract scenarios per the project's fast-verification discipline, not the full suite.
22
+
23
+ ## 0.1.4-beta.19 - 2026-07-20
24
+
25
+ ### Added
26
+
27
+ - `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.
28
+ - `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`.
29
+ - `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.
30
+
31
+ ### Changed
32
+
33
+ - 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.
34
+ - 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.
35
+ - Not selecting a host is not an exemption: an unselected host, or one without an adapter, yields `partial` and never `ready`.
36
+ - `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.
37
+ - `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.
38
+ - 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.
39
+
40
+ ### Release boundary
41
+
42
+ - 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).
43
+
44
+ ## 0.1.4-beta.18 - 2026-07-20
45
+
46
+ ### Added
47
+
48
+ - `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.
49
+ - `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.
50
+ - 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`.
51
+
52
+ ### Changed
53
+
54
+ - 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.
55
+ - 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.
56
+ - Fixed an error in the eval SKILL channel table: channel B's egress owner is the platform-side Agent, not the connector.
57
+ - `dingtalk-agent-eval` 0.6.0 → 0.7.0.
58
+
59
+ ### Release boundary
60
+
61
+ - 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.
62
+
63
+ ## 0.1.4-beta.17 - 2026-07-20
64
+
65
+ ### Added
66
+
67
+ - Interactive debug channels for a delivered Agent (`dingtalk-agent-eval/references/interactive-debug-channels.md`): three channels — platform CLI dispatch, your own DingTalk identity to a bound robot, and digital-employee identity (in development) — each with what it proves and explicitly does not prove, an A→B→C one-way escalation rule, and a four-way attribution tree for "no reply" (eligibility silence / channel not connected / runtime or task failure / genuinely wrong answer). The Compose skill hands off to eval after assembly instead of improvising acceptance criteria.
68
+ - `platform trace` as a first-class evidence surface: the managed platform's persisted execution trace (task and session id, reasoning, every tool call, `failure_reason`, the skills actually in effect) is the only surface that reliably catches "the reply reads correctly but the assembly is broken". Synced across the eval SKILL, the evidence contract, the topology table and the lab catalog schema enum.
69
+ - Skill version state model replacing a single boolean: `missing / current / modified / outdated / ahead / unknown`, backed by a whole-tree `contentHash` so a body edit that skips a version bump is still detected. `skill status` reports `installedVersion → skillVersion (state)`; `doctor` prints the same and folds already-installed platform skills into the report without letting opt-in skills affect `ready`; `dta upgrade` reports before/after/bundled/state per skill.
70
+ - `scripts/check-skill-versions.mjs`, wired into `release:check`: a skill whose body changed against the baseline without a version bump, or whose version regressed, fails the gate.
71
+ - Contract scenario 62 `SkillVersionDrift` covering the four drift states, the downgrade refusal and its `--allow-downgrade` recovery, doctor grading, and content-hash detection.
72
+
73
+ ### Changed
74
+
75
+ - `dingtalk-agent-eval` joins the default skill suite. Testing methods are consolidated into that skill, so a machine without it has no path to any testing guidance; `setup` and `skill install` now install three skills.
76
+ - Skill updates fail closed: a local copy newer than the bundled one is refused unless `--allow-downgrade`, and every install/upgrade re-reads the canonical copy afterwards — exit code 0 with a non-`current` readback is now an error rather than a silent success.
77
+ - `multica-external` declares `metadata.version` for the first time. Without it the empty-string comparison was always true, so the skill reported `current` permanently and could never be upgraded.
78
+ - `src/version.ts` extracted so the npm package and skills share one semver implementation; prerelease comparison changed from whole-string collation to dot-identifier segments.
79
+ - OpenCode/Multica real acceptance chain (from the branch's earlier work): JSON-stringified prompts accepted, `agent.displayName` added, and the skill load smoke verified against a strict structured allowlist.
80
+ - Stale `skills/<name>/` paths left by the core/platforms reorganization corrected in AGENTS.md, CLAUDE.md, CONTRIBUTING.md, the eval catalog template and three lab fixtures; the frozen 2026-07-16 baselines are deliberately left untouched.
81
+
82
+ ### Release boundary
83
+
84
+ - Distribution is limited to the public npm `beta` dist-tag and a Git tag. No DingTalk write, robot binding, or Live canary was executed for this release: the interactive-channel documentation is verified against source and CLI help output only, and the version mechanism is verified by deterministic contract scenarios. Live waivers from beta.9 remain unchanged.
85
+
86
+ ## 0.1.4-beta.16 - 2026-07-20
87
+
88
+ ### Added
89
+
90
+ - Contract eval runner terminal UI: per-scenario progress lines with duration on stderr (live line rewriting and colors on a TTY, plain append-only lines in CI), a closing summary with the slowest scenarios, and a failure block per failed scenario listing the unmet expectations with truncated evidence plus actionable hints — the exact rerun command, the implementing function, the grading/output artifact paths, and the scenario fixtures. A scenario that throws now counts as all-expectations-failed and the suite keeps running, so one run surfaces every failure. stdout stays byte-stable (default JSON, `--smoke` four lines).
91
+ - Runner ergonomics: `--list` prints the scenario catalog; `--only` now accepts scenario names as well as ids (`--only=20,CliErrorHints`); malformed `--only` values fail with `错误:/提示:` guidance instead of running nothing.
92
+ - `evals/README.md` documenting the evals directory layout and the subset-first regression discipline (the full 61-scenario suite is a minutes-long deep-regression gate, not a per-change loop).
93
+ - Creation-inheritance contract from main: the four-part agent body template gains a Basic boot declaration, identity/authorization/privacy/completion bottom lines and a standard loop; the Compose skill and deterministic assertions are synced.
94
+
95
+ ### Changed
96
+
97
+ - Basic Behavior 0.11 / Compose 0.9 layered contracts: a slimmer entry point plus risk-authorization, privacy, fact-recovery and forgetting boundaries; the Compose agent body is fixed to definition, bottom lines, paradigm and common mistakes with Role/Gate layering and template audits.
98
+ - Inheritance and assembly gates hardened with OpenCode-native AGENTS rules, full Basic-tree integrity and isolated load probes, least-privilege defaults, raw-evidence retention and drift re-verification.
99
+ - The contract runner clears `evals/results/contract` only after arguments validate, so `--list` or a mistyped `--only` no longer wipes the previous run's evidence; result artifacts now carry scenario names in `summary.md` headers and `benchmark.json` eval names.
100
+ - README (zh/en) converged to positioning, quick start, core model, support scope and documentation entries; the multi-platform agent lifecycle narrative is completed and the three-step delivery path is redrawn as a native SVG, replacing the previous JPG assets.
101
+
102
+ ### Release boundary
103
+
104
+ - Distribution is limited to the public npm `beta` dist-tag, a Git tag, and a GitHub pre-release. The eval-runner terminal UI is repository tooling and does not ship in the package; the shipped deltas relative to beta.15 are the skill/template/README commits from main summarized above. Live waivers from beta.9 remain unchanged.
105
+
106
+ ## 0.1.4-beta.15 - 2026-07-19
107
+
108
+ ### Added
109
+
110
+ - Multica endpoint resolution and display: `agent-platform show|use` now print the resolved endpoint and its source unconditionally — even when multica is not installed or logged in — so you always know where you'd connect and how to switch. `resolveEndpoint()` uses a single source of truth aligned with the executor (`multica_ext.py` reads `MULTICA_SERVER_URL`/`--profile`): `MULTICA_SERVER_URL` env > project config (`dingtalk-agent.json#multicaEndpoint` or `.dingtalk-agent/agent-platform.json.endpoint`) > exactly one logged-in profile's server_url (multiple = ambiguous, never auto-picked) > the platform's suggested endpoint (pre, flagged unconfirmed, never a silent direct-connect). The login readiness hint emits a full copyable `multica login --server-url <resolved> --token ...` with the source annotated.
111
+ - The project manifest gains an optional `multicaEndpoint` field (schema + validation) for a persistent per-project endpoint override.
112
+
113
+ ### Changed
114
+
115
+ - Scattered pre-fde endpoint literals in `PLATFORM.md` and the compose skill now point to `dta agent-platform show` as the single source instead of hardcoding the URL, so docs cannot drift from the resolver.
116
+
117
+ ### Release boundary
118
+
119
+ - Distribution is limited to the public npm `beta` dist-tag, a Git tag, and a GitHub pre-release. The suggested endpoint is an explicitly-unconfirmed hint only; the executor stays fail-closed and deploy-time confirmation is unchanged. Live waivers from beta.9 remain unchanged.
120
+
121
+ ## 0.1.4-beta.14 - 2026-07-19
122
+
123
+ ### Added
124
+
125
+ - Per-platform `PLATFORM.md`: switching to a platform now loads a document explaining what each bundled skill does. `agent-platform use|show` print the doc path, and `list|show` display every skill's role and purpose (the registry skill bindings gained a `purpose` field). `multica-dingtalk`'s doc covers the three skills by role, the delivery chain, readiness, the dws-first robot-binding priority (including `--allow-unbound` for connect-to-customers mode), DWS-conversation acceptance, and both unbind paths; `deap` is a coming-soon stub.
126
+
127
+ ### Fixed
128
+
129
+ - `multica-external`'s `dingtalk-bind` now sends `robot_code` (defaulting to `client_id`, with a `--robot-code` flag). Manual robot binding previously failed with `400 robot_code is required`, blocking real DingTalk robot delivery; a live 10-chain regression on the pre environment now confirms real DWS→robot→agent replies.
130
+
131
+ ### Validated
132
+
133
+ - End-to-end regression on the dedicated pre environment (authorized): from-zero token login, ten role-diverse agents each carrying basic-behavior (verified silent on un-@mentioned group messages), DWS-created robots bound via the dws path with credentials, and acceptance by real DWS conversation. Five robots were reused via revoke+rebind, confirming messages reroute to the newly bound agent. Both unbind APIs (robot `dingtalk-revoke`, account `dingtalk-account-unbind`) were confirmed.
134
+
135
+ ### Release boundary
136
+
137
+ - Distribution is limited to the public npm `beta` dist-tag, a Git tag, and a GitHub pre-release. The regression's platform side effects (agents, robot bindings, messages) occurred only on the user-authorized pre environment with dedicated test objects. Live waivers from beta.9 remain unchanged.
138
+
139
+ ## 0.1.4-beta.13 - 2026-07-19
140
+
141
+ ### Changed
142
+
143
+ - Bundled skills reorganize by platform: `skills/core/` carries the universal suite (basic-behavior, compose, eval) and `skills/platforms/multica-dingtalk/` carries the platform pack, with a `deap` coming-soon placeholder; all code resolves sources through the `bundledSkillPath` registry. Installed canonical layout stays flat.
144
+ - Platform skill names disclose their platform: `dingtalk-agent-deploy` → `dingtalk-agent-deploy-multica`, `multica-fde-external` → `multica-external`. The platform registry binds roles to exact skills (deploy/boot/ops); `agent-platform list|show` display the mapping, `platformSkillForRole` exposes it programmatically, and `deploy`/`promote`/`observe` disclose the carrying skill on stderr.
145
+ - `agent-platform show|use` list local Multica login targets (profile, server URL, workspace — never tokens), and compose 0.8.0 makes user confirmation of endpoint/workspace/agent-name the first hard rule of the Multica publish chain, alongside plain-Markdown instructions with readback, empty `--model` by default, mandatory basic-behavior push/attach with a boot declaration, two-probe chat acceptance, and the dws-first robot-binding priority (list or user-confirmed create + `dingtalk-bind`, reuse existing installs, scan-QR as fallback, never a blocking `--wait`).
146
+ - The contract runner gains `--only=<ids>` for targeted verification; AGENTS.md reserves the full 61-scenario suite and `release:check` for deep regression and release acceptance.
147
+
148
+ ### Release boundary
149
+
150
+ - Distribution is limited to the public npm `beta` dist-tag, a Git tag, and a GitHub pre-release. The renamed skill was also pushed to the dedicated pre-environment registry with explicit user authorization; no robot, webhook, schedule, Trigger, or other DingTalk/Multica side effect is created. Live waivers from beta.9 remain unchanged.
151
+
152
+ ## 0.1.4-beta.12 - 2026-07-19
153
+
154
+ ### Added
155
+
156
+ - The `multica-fde-external` skill is bundled verbatim from the pre-fde registry into the `multica-dingtalk` platform pack: a self-contained Python wrapper (stdlib only, Python ≥3.9) covering the full delivery chain — workspace/runtime/agent provisioning, skill push/pull, DingTalk robot and account binding, the `chat-send --wait` DingTalk-free test channel, `task-trace` observability, autopilot scheduling, and `agent-check` health checks. Selecting `multica-dingtalk` now installs three platform skills.
157
+ - `agent-platform show|use` emit advisory readiness checks for the selected platform: multica CLI presence (with the official install command), login state (with `multica login --server-url <endpoint>` guidance), and a proxy-environment warning with an `env -u` workaround.
158
+
159
+ ### Changed
160
+
161
+ - Compose Skill 0.6.0: the workflow now requires offering the user a managed-agent-platform choice (multica-dingtalk / deap coming-soon / local-only) before assembly, guides through readiness gaps, and documents the two paths to a DingTalk robot — local `dta listen` streaming debugging versus publishing through Multica (`dingtalk-begin`/`dingtalk-bind` plus the `chat-send --wait` acceptance channel). Creating a bare DingTalk app via `dws dev app robot submit` without asking the user is explicitly forbidden.
162
+ - Contract case 61 now verifies the three-skill lazy install for `multica-dingtalk`.
163
+
164
+ ### Release boundary
165
+
166
+ - Distribution is limited to the public npm `beta` dist-tag, a Git tag, and a GitHub pre-release. No robot, webhook, schedule, Trigger, or DingTalk/Multica side effect is created by the release itself. The end-to-end evidence recorded for this line was produced on the dedicated pre environment with explicit user authorization.
167
+
168
+ ## 0.1.4-beta.11 - 2026-07-19
169
+
170
+ ### Added
171
+
172
+ - A managed agent platform abstraction: `dta agent-platform list|show|use` with a fixed resolution order (`DTA_AGENT_PLATFORM` env > `dingtalk-agent.json#agentPlatform` > `.dingtalk-agent/agent-platform.json` > inference from declared Multica providers). `multica-dingtalk` is supported; `deap` is registered as coming-soon and fails closed everywhere.
173
+ - Platform skill packs load lazily: selecting `multica-dingtalk` installs `dingtalk-agent-deploy` and `dingtalk-agent-boot-multica`; they are no longer implied by the default install. Platform-specific methodology ships in these packs, not in the CLI.
174
+ - `deploy`, `promote`, and `observe` now pass a fail-closed platform-membership gate; missing, unknown, or coming-soon platforms are rejected with guidance.
175
+ - Contract case 61 covers the registry, the gate, the coming-soon rejection, membership writing, and lazy skill installation; `agent-platform@1` schema added and `project@1` gains the optional `agentPlatform` field.
176
+
177
+ ### Changed
178
+
179
+ - `dta skill install|status|upgrade|uninstall` without a name now operate on all default bundled Skills (basic-behavior + compose) with a `skill-status-suite@1` JSON envelope; an explicit name keeps the single-skill contract. `setup` installs the full default suite and `doctor` aggregates per-client discovery across it.
180
+ - The compose Skill (0.5.1) names 创建/新建/装配 Agent triggers and drops its placeholder wording, so "帮我创建一个 Agent" reaches it on OpenCode and other hosts.
181
+ - Isolated-HOME eval and release environments strip host `CLAUDE_*` variables so the upstream skills CLI cannot escape the sandbox into the real Claude config directory.
182
+ - Unknown-command suggestions now include `lab`, `listen`, `deploy`, `promote`, `observe`, and `agent-platform`.
183
+
184
+ ### Release boundary
185
+
186
+ - Distribution is limited to the public npm `beta` dist-tag, a Git tag, and a GitHub pre-release. No robot, webhook, schedule, Trigger, or DingTalk/Multica side effect is created. The Live waivers recorded for beta.9 remain unchanged.
187
+
188
+ ## 0.1.4-beta.10 - 2026-07-19
189
+
190
+ ### Removed
191
+
192
+ - Legacy pre-kernel modules `src/boot.ts`, `src/duty.ts`, `src/kb.ts`, `src/runs.ts` and the unused `templates/ontology/` tree. They were dead code outside the current CLI, were already excluded from the published package, and `runs.ts` conflicted with the documented "Markdown is not a lock, idempotency store, or Receipt" boundary.
193
+ - The `kb`/`duties`/`eval` fields from the default AgentConfig. Existing workspace configs keep unknown fields through passthrough normalization; no migration is required.
194
+
195
+ ### Changed
196
+
197
+ - Entry documents now match repository reality: CLAUDE.md gains run-mode criteria, the eval-Skill reading path, and an annotated command list; README lists all five bundled Skills; the English README is marked as a condensed overview; SECURITY.md states the actually maintained dist-tag; the eval Skill's L1 wording matches the real `dta lab eval` plan/`--execute --yes` flow (Skill 0.5.1).
198
+
199
+ ### Release boundary
200
+
201
+ - Distribution is limited to the public npm `beta` dist-tag. No robot, webhook, schedule, Trigger, or DingTalk/Multica side effect is created. The Live waivers recorded for beta.9 remain unchanged.
202
+
5
203
  ## 0.1.4-beta.9 - 2026-07-19
6
204
 
7
205
  ### Added