@xdxer/dingtalk-agent 0.1.5-beta.1 → 0.1.5-beta.2
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.
- package/CHANGELOG.md +32 -0
- package/README.en.md +5 -2
- package/README.md +5 -2
- package/dist/bin/dingtalk-agent.js +16 -5
- package/dist/bin/dingtalk-agent.js.map +1 -1
- package/dist/src/agent-platform.js +0 -1
- package/dist/src/agent-platform.js.map +1 -1
- package/dist/src/development-workspace.js +25 -8
- package/dist/src/development-workspace.js.map +1 -1
- package/dist/src/doctor.js +6 -1
- package/dist/src/doctor.js.map +1 -1
- package/dist/src/multica-deploy.js +265 -50
- package/dist/src/multica-deploy.js.map +1 -1
- package/dist/src/multica-provider.js +1 -2
- package/dist/src/multica-provider.js.map +1 -1
- package/dist/src/opencode-provider.js +3 -1
- package/dist/src/opencode-provider.js.map +1 -1
- package/dist/src/skill-manager.js +2 -3
- package/dist/src/skill-manager.js.map +1 -1
- package/docs/ARCHITECTURE.md +12 -0
- package/docs/schemas/multica-deployment-receipt.schema.json +2 -2
- package/docs/schemas/multica-workspace-run-plan.schema.json +31 -0
- package/docs/schemas/multica-workspace-run.schema.json +44 -0
- package/docs/schemas/project.schema.json +10 -2
- package/lab/project-workspace/fake-multica-provider.mjs +39 -10
- package/lab/project-workspace/multica-readonly.fixture.json +0 -12
- package/lab/project-workspace/project.fixture.json +0 -4
- package/lab/robot-eval/suite.json +1 -1
- package/package.json +1 -2
- package/skills/README.md +0 -1
- package/skills/core/dingtalk-agent-compose/SKILL.md +5 -5
- package/skills/core/dingtalk-agent-compose/assets/AGENTS.template.md +1 -1
- package/skills/core/dingtalk-agent-compose/references/agent-definition-contract.md +1 -1
- package/skills/core/dingtalk-agent-eval/SKILL.md +1 -1
- package/skills/core/dingtalk-agent-eval/references/interactive-debug-channels.md +9 -3
- package/skills/core/dingtalk-basic-behavior/SKILL.md +15 -3
- package/skills/core/dingtalk-basic-behavior/references/perception-and-gates.md +54 -0
- package/skills/core/dingtalk-basic-behavior/references/truth-and-recovery.md +4 -2
- package/skills/platforms/multica-dingtalk/PLATFORM.md +6 -5
- package/skills/platforms/multica-dingtalk/dingtalk-agent-deploy-multica/SKILL.md +4 -4
- package/skills/platforms/multica-dingtalk/dingtalk-agent-deploy-multica/references/multica-deployment-contract.md +14 -6
- package/skills/platforms/multica-dingtalk/dingtalk-agent-boot-multica/SKILL.md +0 -40
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,38 @@
|
|
|
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.5-beta.2 - 2026-07-21
|
|
6
|
+
|
|
7
|
+
Multica native-Skill refactor and DingTalk IM context recovery (PR #9, #10). Ships on the `beta` dist-tag; `latest` stays at 0.1.4.
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
|
|
11
|
+
- Basic Behavior 0.11.10 makes DWS original-message recovery an executable priority gate: when the Host gives current actor/title/text/time but omits a rich-message href or quote, the Agent must run the bounded `chat search` → `message list` verification path before any local `find`/`glob`/`ls`; an empty workspace can no longer stand in for DingTalk IM evidence.
|
|
12
|
+
- Basic Behavior 0.11.9 closes DingTalk IM context recovery without coupling to a managed platform: when the Host projection is incomplete, DWS may recover the current conversation's raw Markdown href, file IDs and `quotedMessage`, but a title-based group candidate becomes trusted only after the current actor/text/time trigger is independently matched; ambiguous candidates fail closed.
|
|
13
|
+
- Basic Behavior 0.11.8 treats a stable DingTalk node URL/file ID in the current trusted message as the object to read: ordinary files are classified with `drive info`, downloaded read-only, and never replaced by Issue, workspace or old-task filename searches.
|
|
14
|
+
- Basic Behavior 0.11.7 makes previous-file recovery mandatory when a trusted conversation is readable: it resolves the recent IM fileId/dentryId/URL and reads that object directly instead of treating workspace, memory, knowledge or an old task's read list as conversation history.
|
|
15
|
+
- Basic Behavior 0.11.6 adds focused Chat-history enrichment: when the Host exposes a trusted ChatSession/conversation mapping, the Agent may use a bounded read-only DWS history window to resolve the current message's omitted referent or prior attachment, while the triggering message remains the only source of this Run's goal and authorization.
|
|
16
|
+
- Basic Behavior 0.11.5 turns a real Multica IM regression into a hard evidence-scope rule: a Run that lacks the previous quote/file projection may report only that Run-level gap, never claim the conversation did not receive the message; conversation-level absence requires an independent history readback.
|
|
17
|
+
- Basic Behavior 0.11.4 closes the IM file-read loop: a trusted URL/file ID is used directly, online docs use doc read, ordinary files use read-only drive download into the current task, and the Agent no longer asks for confirmation merely to perform that read.
|
|
18
|
+
- Basic Behavior now freezes the current Run's trusted time and rich-message projection before reasoning. Relative dates can no longer reuse a stale Session/UTC clock, and visible filenames, file IDs, URLs or quoted fields cannot be negated by an empty workspace scan or a missing content reader.
|
|
19
|
+
- Multica native Project Workspaces no longer require fake local memory/knowledge/artifacts routes; OpenCode Workspaces retain the complete semantic-storage gate.
|
|
20
|
+
- Multica Agent instructions are exactly the human-authored `AGENTS.md`. Definition/deployment hashes and the required Skill manifest remain in the deployment plan, operation and Receipt instead of being prepended to the System Prompt.
|
|
21
|
+
- Removed `dingtalk-agent-boot-multica`. Multica assigns only Basic and Role Skills, and the deployment Issue smoke directly asks the Host-native Skill tool to load that frozen set.
|
|
22
|
+
- Workspace inspection, platform registration, package contents and deterministic W4/W5 contracts enforce native Skill assignment and reject the obsolete Boot layer.
|
|
23
|
+
- Multica deploy 0.3.2 recovers exactly once when a persisted load-smoke Issue has no task after assignment. It posts one stable-ID Agent mention on that Issue only for the empty-run state and never duplicates an already queued, running, or terminal smoke task.
|
|
24
|
+
- Multica deploy load-smoke accepts the platform's two constrained result-file conventions, `reply.md` and `result.json`. Both remain fail-closed: the path must use an approved response filename without traversal, the payload must exactly match the marker and required Skill set, and any unapproved tool call still fails the gate.
|
|
25
|
+
- Eval 0.7.3 adds the managed Multica `workspace run` path, current DWS `list-direct` readback, capability-aware event-subscription fallback, and a required IM matrix for continuation, quote, file, document and correction cases.
|
|
26
|
+
- Compose 0.13.1 strengthens the readable Basic inheritance anchor: every task must load Basic through the Host-native Skill tool before analysis, reply, or Role Skill use. This introduces no Boot Skill or machine metadata in the System Prompt.
|
|
27
|
+
- `doctor.ready` now treats Claude Code/Codex/OpenCode discovery conflicts as client-specific observations rather than runtime blockers; canonical Skill absence, DWS/auth, CLI and Node failures remain fail-closed.
|
|
28
|
+
|
|
29
|
+
### Fixed
|
|
30
|
+
|
|
31
|
+
- Synced the robot-eval suite's `exact-basic-version` expectation to the canonical Basic Behavior version (0.11.8 → 0.11.10). Contract 43 asserts the load-probe version tracks `metadata.version`; the earlier Basic bumps left this fixture behind, so a full run failed until it was re-synced.
|
|
32
|
+
|
|
33
|
+
### Release boundary
|
|
34
|
+
|
|
35
|
+
- These changes require a new Multica deployment so existing Agents drop the old Boot assignment and receive the readable Definition. The first `dta deploy` after upgrade rewrites each managed Agent's System Prompt to the raw `AGENTS.md`, so it is a content update rather than a no-op.
|
|
36
|
+
|
|
5
37
|
## 0.1.5-beta.1 - 2026-07-20
|
|
6
38
|
|
|
7
39
|
Documentation and evaluation-tooling release. **No runtime code changes** — `bin/` and `src/` behavior is identical to 0.1.4; the only `bin/` edit is a header comment. Ships on the `beta` dist-tag; `latest` stays at 0.1.4.
|
package/README.en.md
CHANGED
|
@@ -84,12 +84,13 @@ dta agent enhance --project-name release-agent --role-skill release-manager \
|
|
|
84
84
|
|
|
85
85
|
# 2. Audit, run, and evaluate
|
|
86
86
|
dta agent audit --bindings agent.bindings.json --require-skill release-manager --json
|
|
87
|
-
dta workspace run local-dev --json
|
|
88
|
-
dta workspace eval local-dev --json
|
|
87
|
+
dta workspace run local-dev --prompt-file prompt.md --execute --yes --json
|
|
88
|
+
dta workspace eval local-dev --suite evals/suite.json --execute --yes --json
|
|
89
89
|
|
|
90
90
|
# 3. Cloud preflight, promotion, and observation
|
|
91
91
|
dta workspace inspect multica-dev --execute --yes --json
|
|
92
92
|
dta workspace remote-list multica-dev --execute --yes --json
|
|
93
|
+
dta workspace run multica-dev --prompt-file readonly-question.md --execute --yes --json
|
|
93
94
|
dta promote --source local-dev --target multica-dev --dry-run --json
|
|
94
95
|
dta observe --promotion-id <promotion-id> --input <observation.json> --dry-run --json
|
|
95
96
|
```
|
|
@@ -117,6 +118,8 @@ dta agent audit --json # Expect partial — the role semantics are still temp
|
|
|
117
118
|
|
|
118
119
|
None of this needs a DingTalk account or a managed platform, and none of it has side effects. Fill in the real role semantics in `AGENTS.md`, run `agent audit` again, and the only remaining gap is `host.load-probe` — which needs an Agent Host, see the [Compose Skill](skills/core/dingtalk-agent-compose/SKILL.md). The third command group above only applies once you have a Multica binding and declared Workspaces.
|
|
119
120
|
|
|
121
|
+
When deploying to Multica, the remote System Prompt must equal the versioned `AGENTS.md` source. Deployment hashes, the Skill manifest, and assignment evidence stay in the plan/operation/Receipt control plane. Basic and Role Skills use the platform's native assignment instead of an extra startup prompt or startup Skill.
|
|
122
|
+
|
|
120
123
|
## Support
|
|
121
124
|
|
|
122
125
|
A **Managed Agent Platform** (owning Workspace, Runtime, identity binding, and observation), an **Agent Host** (a.k.a. Harness — loads Definition/Skills and isolates execution), and the **dta Kernel** are three separate concepts:
|
package/README.md
CHANGED
|
@@ -83,12 +83,13 @@ dta agent enhance --project-name release-agent --role-skill release-manager \
|
|
|
83
83
|
|
|
84
84
|
# 2. 审计、运行与评测
|
|
85
85
|
dta agent audit --bindings agent.bindings.json --require-skill release-manager --json
|
|
86
|
-
dta workspace run local-dev --json
|
|
87
|
-
dta workspace eval local-dev --json
|
|
86
|
+
dta workspace run local-dev --prompt-file prompt.md --execute --yes --json
|
|
87
|
+
dta workspace eval local-dev --suite evals/suite.json --execute --yes --json
|
|
88
88
|
|
|
89
89
|
# 3. 云端预检、发布与观测
|
|
90
90
|
dta workspace inspect multica-dev --execute --yes --json
|
|
91
91
|
dta workspace remote-list multica-dev --execute --yes --json
|
|
92
|
+
dta workspace run multica-dev --prompt-file readonly-question.md --execute --yes --json
|
|
92
93
|
dta promote --source local-dev --target multica-dev --dry-run --json
|
|
93
94
|
dta observe --promotion-id <promotion-id> --input <observation.json> --dry-run --json
|
|
94
95
|
```
|
|
@@ -116,6 +117,8 @@ dta agent audit --json # 预期 partial —— 岗位语义还是模板,这
|
|
|
116
117
|
|
|
117
118
|
到这一步不需要钉钉账号、不需要托管平台、不产生任何副作用。把 `AGENTS.md` 里的岗位语义填成真的,再跑一次 `agent audit`,缺口就只剩 `host.load-probe`——那需要一个 Agent Host,见 [Compose Skill](skills/core/dingtalk-agent-compose/SKILL.md)。上面第 3 组云端命令要等你有了 Multica 归属和已声明的 Workspace 才用得上。
|
|
118
119
|
|
|
120
|
+
发布到 Multica 时,远端 System Prompt 必须与版本化的 `AGENTS.md` 原文一致;部署哈希、Skill 清单和 assignment 证据只存在于 plan/operation/Receipt 控制面。Basic 与 Role Skills 通过平台原生 assignment 挂载,不再用额外启动 Prompt 或启动 Skill 承载机器协议。
|
|
121
|
+
|
|
119
122
|
## 支持范围
|
|
120
123
|
|
|
121
124
|
**Managed Agent Platform**(管 Workspace、Runtime、身份绑定与观测)、**Agent Host**(也叫 Harness,加载 Definition/Skills 并隔离执行)和 **dta Kernel** 三者彼此独立:
|
|
@@ -35,7 +35,7 @@ import { doctor } from '../src/doctor.js';
|
|
|
35
35
|
import { doctorDevelopmentWorkspace, inspectAgentProject, showDevelopmentWorkspace, } from '../src/development-workspace.js';
|
|
36
36
|
import { applyOpenCodeWorkspace, evalOpenCodeWorkspace, planOpenCodeWorkspace, runOpenCodeWorkspace, useOpenCodeWorkspace, } from '../src/opencode-provider.js';
|
|
37
37
|
import { inspectMulticaWorkspace, listMulticaWorkspaceResources, planMulticaWorkspace, statusMulticaWorkspace, } from '../src/multica-provider.js';
|
|
38
|
-
import { applyMulticaDeployment, listMulticaDeployments, planMulticaDeployment, statusMulticaDeployment, } from '../src/multica-deploy.js';
|
|
38
|
+
import { applyMulticaDeployment, listMulticaDeployments, planMulticaDeployment, runMulticaWorkspaceIssue, statusMulticaDeployment, } from '../src/multica-deploy.js';
|
|
39
39
|
import { applyObservation, applyPromotion, listPromotions, planObservation, planPromotion, statusPromotion, } from '../src/promotion.js';
|
|
40
40
|
import { setup } from '../src/setup.js';
|
|
41
41
|
import { upgradeAgent } from '../src/upgrade.js';
|
|
@@ -578,18 +578,29 @@ async function main() {
|
|
|
578
578
|
}
|
|
579
579
|
const timeoutMs = o.timeout === undefined ? undefined : Number(o.timeout);
|
|
580
580
|
const prompt = readProjectText(PROJECT_START, o['prompt-file'], 'workspace run prompt');
|
|
581
|
-
const
|
|
582
|
-
|
|
583
|
-
|
|
581
|
+
const workspace = showDevelopmentWorkspace(PROJECT_START, positionals[0], PACKAGE_JSON.version);
|
|
582
|
+
const out = workspace.provider.kind === 'multica'
|
|
583
|
+
? runMulticaWorkspaceIssue(PROJECT_START, positionals[0], prompt, {
|
|
584
|
+
execute: o.execute, yes: o.yes, timeoutMs, out: o.out,
|
|
585
|
+
cliVersion: PACKAGE_JSON.version,
|
|
586
|
+
})
|
|
587
|
+
: runOpenCodeWorkspace(PROJECT_START, positionals[0], prompt, {
|
|
588
|
+
execute: o.execute, yes: o.yes, timeoutMs, out: o.out,
|
|
589
|
+
});
|
|
584
590
|
if (o.json)
|
|
585
591
|
console.log(JSON.stringify(out, null, 2));
|
|
586
592
|
else if (out.$schema === 'dingtalk-agent/opencode-workspace-run-plan@1') {
|
|
587
593
|
console.log(`DRY-RUN workspace=${out.workspace} model=${out.model} prompt=${out.promptHash}`);
|
|
588
594
|
}
|
|
595
|
+
else if (out.$schema === 'dingtalk-agent/multica-workspace-run-plan@1') {
|
|
596
|
+
console.log(`DRY-RUN workspace=${out.workspace} agent=${out.agentId || '-'} prompt=${out.promptHash}`);
|
|
597
|
+
}
|
|
589
598
|
else {
|
|
590
599
|
console.log(`${out.passed ? '✅' : '❌'} workspace run ${out.runId}`);
|
|
591
|
-
if (out.execution?.answer)
|
|
600
|
+
if ('execution' in out && out.execution?.answer)
|
|
592
601
|
console.log(out.execution.answer);
|
|
602
|
+
if ('answer' in out && out.answer)
|
|
603
|
+
console.log(out.answer);
|
|
593
604
|
if (out.evidencePath)
|
|
594
605
|
console.log(`evidence=${out.evidencePath}`);
|
|
595
606
|
}
|