@xdxer/dingtalk-agent 0.1.5-beta.1 → 0.1.5-beta.10

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 (175) hide show
  1. package/CHANGELOG.md +201 -0
  2. package/README.en.md +99 -66
  3. package/README.md +99 -66
  4. package/dist/bin/dingtalk-agent.js +735 -149
  5. package/dist/bin/dingtalk-agent.js.map +1 -1
  6. package/dist/src/actions.js +3 -2
  7. package/dist/src/actions.js.map +1 -1
  8. package/dist/src/agent-audit.js +202 -85
  9. package/dist/src/agent-audit.js.map +1 -1
  10. package/dist/src/agent-definition.js +7 -3
  11. package/dist/src/agent-definition.js.map +1 -1
  12. package/dist/src/agent-enhance.js +51 -32
  13. package/dist/src/agent-enhance.js.map +1 -1
  14. package/dist/src/agent-platform.js +3 -3
  15. package/dist/src/agent-platform.js.map +1 -1
  16. package/dist/src/bootstrap.js +6 -2
  17. package/dist/src/bootstrap.js.map +1 -1
  18. package/dist/src/development-workspace.js +210 -34
  19. package/dist/src/development-workspace.js.map +1 -1
  20. package/dist/src/doctor.js +65 -9
  21. package/dist/src/doctor.js.map +1 -1
  22. package/dist/src/dws.js +67 -3
  23. package/dist/src/dws.js.map +1 -1
  24. package/dist/src/init.js +2 -1
  25. package/dist/src/init.js.map +1 -1
  26. package/dist/src/memory/noop-receipt.js +306 -0
  27. package/dist/src/memory/noop-receipt.js.map +1 -0
  28. package/dist/src/memory/operational.js +27 -3
  29. package/dist/src/memory/operational.js.map +1 -1
  30. package/dist/src/memory/remote-state.js +2 -1
  31. package/dist/src/memory/remote-state.js.map +1 -1
  32. package/dist/src/multica-deploy.js +692 -125
  33. package/dist/src/multica-deploy.js.map +1 -1
  34. package/dist/src/multica-provider.js +303 -25
  35. package/dist/src/multica-provider.js.map +1 -1
  36. package/dist/src/multica-runtime-vocabulary.js +110 -0
  37. package/dist/src/multica-runtime-vocabulary.js.map +1 -0
  38. package/dist/src/opencode-evals.js +6 -6
  39. package/dist/src/opencode-evals.js.map +1 -1
  40. package/dist/src/opencode-provider.js +21 -7
  41. package/dist/src/opencode-provider.js.map +1 -1
  42. package/dist/src/opencode-workspace.js +3 -3
  43. package/dist/src/opencode-workspace.js.map +1 -1
  44. package/dist/src/personal-event-evals.js +4 -2
  45. package/dist/src/personal-event-evals.js.map +1 -1
  46. package/dist/src/promotion.js +2 -1
  47. package/dist/src/promotion.js.map +1 -1
  48. package/dist/src/remote-semantic-state-live-evals.js +14 -8
  49. package/dist/src/remote-semantic-state-live-evals.js.map +1 -1
  50. package/dist/src/remote-state-evals.js +2 -2
  51. package/dist/src/remote-state-evals.js.map +1 -1
  52. package/dist/src/robot-evals.js +3 -3
  53. package/dist/src/robot-evals.js.map +1 -1
  54. package/dist/src/schedule-plan.js +380 -0
  55. package/dist/src/schedule-plan.js.map +1 -0
  56. package/dist/src/sessions.js +1 -1
  57. package/dist/src/sessions.js.map +1 -1
  58. package/dist/src/skill-manager.js +145 -13
  59. package/dist/src/skill-manager.js.map +1 -1
  60. package/dist/src/skills.js +2 -0
  61. package/dist/src/skills.js.map +1 -1
  62. package/dist/src/tui.js +369 -0
  63. package/dist/src/tui.js.map +1 -0
  64. package/dist/src/upgrade.js +113 -33
  65. package/dist/src/upgrade.js.map +1 -1
  66. package/dist/src/waits.js +2 -1
  67. package/dist/src/waits.js.map +1 -1
  68. package/dist/src/workspace.js +12 -7
  69. package/dist/src/workspace.js.map +1 -1
  70. package/docs/AGENT-IN-PRODUCTION.md +255 -0
  71. package/docs/ARCHITECTURE.md +165 -31
  72. package/docs/INSTALLATION.md +7 -7
  73. package/docs/PLATFORM-GUARDRAILS.md +188 -0
  74. package/docs/PRIOR-ART.md +4 -0
  75. package/docs/SELF-TEST.md +4 -4
  76. package/docs/architecture/agent-platform-connection-layer.svg +120 -0
  77. package/docs/architecture/digital-employee-composition.svg +92 -0
  78. package/docs/architecture/dingtalk-agent-architecture.svg +125 -0
  79. package/docs/assets/digital-employee-at-work.svg +77 -0
  80. package/docs/schemas/multica-deployment-plan.schema.json +3 -1
  81. package/docs/schemas/multica-deployment-receipt.schema.json +17 -3
  82. package/docs/schemas/multica-deployment-status.schema.json +6 -2
  83. package/docs/schemas/multica-workspace-inspection.schema.json +16 -0
  84. package/docs/schemas/multica-workspace-run-plan.schema.json +31 -0
  85. package/docs/schemas/multica-workspace-run.schema.json +161 -0
  86. package/docs/schemas/multica-workspace-status.schema.json +2 -0
  87. package/docs/schemas/project.schema.json +54 -3
  88. package/docs/schemas/workspace-scaffold.schema.json +38 -0
  89. package/examples/agents/README.md +10 -8
  90. package/examples/agents/fde-coach/AGENTS.md +2 -34
  91. package/examples/agents/fde-coach/agent/AGENTS.md +35 -0
  92. package/examples/agents/fde-coach/agent.bindings.json +10 -0
  93. package/examples/agents/release-manager/AGENTS.md +2 -34
  94. package/examples/agents/release-manager/agent/AGENTS.md +35 -0
  95. package/examples/agents/release-manager/agent.bindings.json +10 -0
  96. package/lab/agent-eval/catalog.json +5 -5
  97. package/lab/agent-eval/classic-failures.json +4 -4
  98. package/lab/agent-eval/completion-gate-regression.json +9 -9
  99. package/lab/agent-eval/personal-event-live.example.json +3 -3
  100. package/lab/agent-eval/remote-semantic-state-live.example.json +1 -1
  101. package/lab/agent-eval/workspace/opencode.json +2 -2
  102. package/lab/project-workspace/fake-multica-provider.mjs +171 -17
  103. package/lab/project-workspace/multica-deploy.fixture.json +2 -2
  104. package/lab/project-workspace/multica-readonly.fixture.json +4 -16
  105. package/lab/project-workspace/opencode-provider-suite.json +3 -3
  106. package/lab/project-workspace/project.fixture.json +2 -6
  107. package/lab/robot-eval/suite.json +1 -1
  108. package/lab/robot-eval/workspace/AGENTS.md +1 -1
  109. package/lab/robot-eval/workspace/opencode.json +2 -2
  110. package/lab/schemas/personal-event-eval.schema.json +1 -1
  111. package/package.json +12 -9
  112. package/skills/README.md +10 -8
  113. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/SKILL.md +48 -23
  114. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/assets/AGENTS.template.md +1 -1
  115. package/skills/core/dta-agent-compose/assets/REPOSITORY.template.md +10 -0
  116. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/assets/agent.bindings.dingtalk-doc.template.json +2 -2
  117. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/assets/agent.bindings.local.template.json +2 -2
  118. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/assets/hosts/opencode/opencode.template.json +3 -2
  119. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/evals/evals.json +4 -4
  120. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/references/agent-definition-contract.md +7 -7
  121. package/skills/core/dta-agent-compose/references/drive-and-schedules.md +166 -0
  122. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/references/host-loading-contract.md +11 -13
  123. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/references/hosts/claude-code.md +13 -12
  124. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/references/hosts/opencode.md +14 -13
  125. package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/SKILL.md +2 -2
  126. package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/assets/eval-catalog.template.json +1 -1
  127. package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/evals/evals.json +1 -1
  128. package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/eval-topology.md +3 -3
  129. package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/interactive-debug-channels.md +10 -4
  130. package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/SKILL.md +21 -5
  131. package/skills/core/dta-basic-behavior/references/event-to-behavior.md +38 -0
  132. package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/memory-and-evolution.md +3 -1
  133. package/skills/core/dta-basic-behavior/references/perception-and-gates.md +87 -0
  134. package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/risk-authority-and-privacy.md +12 -0
  135. package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/truth-and-recovery.md +4 -2
  136. package/skills/core/dta-people-group-memory/COMPLETENESS.md +36 -0
  137. package/skills/core/dta-people-group-memory/SKILL.md +69 -0
  138. package/skills/core/dta-people-group-memory/references/adapters.md +273 -0
  139. package/skills/core/dta-people-group-memory/references/assembly-guidance.md +40 -0
  140. package/skills/core/dta-people-group-memory/references/binding.md +110 -0
  141. package/skills/core/dta-people-group-memory/references/cold-start.md +70 -0
  142. package/skills/core/dta-people-group-memory/references/config-binding.md +89 -0
  143. package/skills/core/dta-people-group-memory/references/consent-and-visibility.md +83 -0
  144. package/skills/core/dta-people-group-memory/references/consolidation.md +162 -0
  145. package/skills/core/dta-people-group-memory/references/event-ingest.md +103 -0
  146. package/skills/core/dta-people-group-memory/references/guided-setup.md +70 -0
  147. package/skills/core/dta-people-group-memory/references/model.md +148 -0
  148. package/skills/core/dta-people-group-memory/references/storage-port.md +107 -0
  149. package/skills/platforms/deap/PLATFORM.md +30 -1
  150. package/skills/platforms/multica-dingtalk/PLATFORM.md +34 -8
  151. package/skills/platforms/multica-dingtalk/{dingtalk-agent-deploy-multica → dta-deploy-multica}/SKILL.md +10 -8
  152. package/skills/platforms/multica-dingtalk/dta-deploy-multica/references/multica-deployment-contract.md +67 -0
  153. package/skills/platforms/multica-dingtalk/{multica-external → dta-ops-multica}/SKILL.md +81 -11
  154. package/skills/platforms/multica-dingtalk/{multica-external → dta-ops-multica}/scripts/bootstrap.sh +2 -2
  155. package/skills/platforms/multica-dingtalk/{multica-external → dta-ops-multica}/scripts/multica_ext.py +264 -16
  156. package/docs/assets/agent-delivery-lifecycle.svg +0 -103
  157. package/skills/core/dingtalk-basic-behavior/references/event-to-behavior.md +0 -24
  158. package/skills/core/dingtalk-basic-behavior/references/perception-and-gates.md +0 -28
  159. package/skills/platforms/multica-dingtalk/dingtalk-agent-boot-multica/SKILL.md +0 -40
  160. package/skills/platforms/multica-dingtalk/dingtalk-agent-deploy-multica/references/multica-deployment-contract.md +0 -49
  161. /package/examples/agents/fde-coach/{skills → agent/skills}/fde-coach/SKILL.md +0 -0
  162. /package/examples/agents/release-manager/{skills → agent/skills}/release-manager/SKILL.md +0 -0
  163. /package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/assets/role-skill.template.md +0 -0
  164. /package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/references/storage-routing.md +0 -0
  165. /package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/evidence-contract.md +0 -0
  166. /package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/failure-to-case.md +0 -0
  167. /package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/local-connector-smoke.md +0 -0
  168. /package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/scenario-taxonomy.md +0 -0
  169. /package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/storage-modes.md +0 -0
  170. /package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/assets/memory-candidate-proposal.json +0 -0
  171. /package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/assets/task-checkpoint.json +0 -0
  172. /package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/action-contract.md +0 -0
  173. /package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/runtime-modes.md +0 -0
  174. /package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/task-lifecycle.md +0 -0
  175. /package/skills/platforms/multica-dingtalk/{dingtalk-agent-deploy-multica → dta-deploy-multica}/references/promotion-observation-contract.md +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"remote-state-evals.js","sourceRoot":"","sources":["../../src/remote-state-evals.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from 'node:crypto'\nimport {\n copyFileSync, cpSync, existsSync, lstatSync, mkdirSync, mkdtempSync, readFileSync,\n realpathSync, readdirSync, renameSync, rmSync, writeFileSync,\n} from 'node:fs'\nimport { tmpdir } from 'node:os'\nimport { dirname, isAbsolute, join, relative, resolve } from 'node:path'\nimport { bootstrap, type BootstrapMount } from './bootstrap.js'\nimport * as dws from './dws.js'\nimport { digest } from './events.js'\nimport { isWorkspacePathInside, relativeWorkspacePath } from './eval-evidence.js'\nimport {\n prepareOpenCodeEvalAgent, runOpenCodePrompt, type OpenCodeExecution,\n} from './opencode-evals.js'\nimport {\n bindRequiredBasicSkill, relativeBinding, verifyRequiredBasicSkill,\n} from './opencode-workspace.js'\nimport { resolvePackageRoot } from './package-root.js'\nimport { bundledSkillPath } from './skill-manager.js'\n\ntype RemoteStateSlot = 'memory' | 'knowledge'\n\ninterface RemoteStateBinding {\n slot: RemoteStateSlot\n uri: string\n requiredText: string[]\n writeProbe: boolean\n}\n\ninterface RemoteStateEvalSpec {\n $schema: 'dingtalk-agent/remote-state-eval@1'\n id: string\n description: string\n scenario: 'memory-and-storage'\n dws: { profile: string; expectedUserId: string }\n stateDir: string\n requiredSkills: string[]\n bindings: RemoteStateBinding[]\n modelProbe: {\n model: string\n prompt: string\n expectedText: string[]\n }\n}\n\nexport interface RemoteStateEvalOptions {\n execute?: boolean\n live?: boolean\n yes?: boolean\n model?: string\n command?: string\n timeoutMs?: number\n out?: string\n}\n\ninterface RemoteMountEvidence {\n slot: RemoteStateSlot\n source: string\n provider: string\n remoteHash: string\n mountHash: string\n cacheHash: string\n cachePath: string\n manifestPath: string\n requiredTextMatched: boolean\n typeAccepted: boolean\n sourceMatched: boolean\n cacheContained: boolean\n manifestMatched: boolean\n hashesMatched: boolean\n passed: boolean\n}\n\nexport function runRemoteStateEvaluation(\n root: string,\n workspacePath: string,\n suitePath: string,\n options: RemoteStateEvalOptions = {},\n): Record<string, any> {\n const workspace = safeInside(root, workspacePath, true)\n const suiteFile = safeInside(root, suitePath, true)\n const suite = validateSpec(readJson(suiteFile))\n assertRemoteOnlyProbes(workspace, suite.modelProbe.prompt, suite.modelProbe.expectedText)\n safeStateDir(workspace, suite.stateDir)\n const model = options.model || suite.modelProbe.model\n if (!model.startsWith('deepseek/')) {\n throw new Error('Remote State Eval 模型必须固定为 deepseek/*')\n }\n const timeoutMs = options.timeoutMs ?? 120_000\n if (!Number.isInteger(timeoutMs) || timeoutMs < 10_000 || timeoutMs > 300_000) {\n throw new Error('Remote State Eval timeoutMs 必须为 10000..300000')\n }\n const writeBindings = suite.bindings.filter((item) => item.writeProbe)\n if (options.live && writeBindings.length !== 1) {\n throw new Error('Remote State Eval Live 必须且只能声明一个 writeProbe binding')\n }\n const plan = {\n $schema: 'dingtalk-agent/remote-state-eval-plan@1',\n id: suite.id,\n scenario: suite.scenario,\n sideEffect: options.live ? 'append-one-unique-marker-to-dedicated-test-document' : false,\n remoteRead: Boolean(options.execute),\n engine: 'storage',\n host: 'opencode',\n model,\n workspace: relative(realpathSync(root), workspace),\n suite: relative(realpathSync(root), suiteFile),\n definition: 'local AGENTS.md + local Role Skills',\n semanticState: suite.bindings.map((item) => ({\n slot: item.slot,\n provider: 'dingtalk-doc',\n uri: item.uri,\n writeProbe: item.writeProbe,\n })),\n controlState: 'local atomic host store',\n hardGates: [\n 'fixed DWS profile and exact expectedUserId',\n 'ALIDOC/adoc document type',\n 'local Definition and required Role Skills',\n 'forced Basic Skill OpenCode binding',\n 'remote readback = mount hash = cache bytes = cache manifest',\n 'model recalls remote-only probes with zero tools',\n 'optional unique write marker independently read back exactly once',\n ],\n }\n if (!options.execute) return { ...plan, ready: true, executeRequired: true }\n if (!options.yes) {\n throw new Error('Remote State Eval 会读取 DWS 并调用模型;必须同时传 --execute --yes')\n }\n if (options.live && !options.execute) {\n throw new Error('Remote State Eval Live 必须同时传 --execute --live --yes')\n }\n\n const runId = `remote_state_eval_${Date.now()}_${randomUUID().slice(0, 8)}`\n const evidenceRoot = safeInside(\n root,\n options.out || join('.dingtalk-agent', 'remote-state-eval-results', runId),\n false,\n )\n mkdirSync(evidenceRoot, { recursive: true })\n writeJson(join(evidenceRoot, 'plan.json'), plan)\n\n const sandboxParent = mkdtempSync(join(tmpdir(), 'dta-remote-state-eval-'))\n const sandbox = join(sandboxParent, 'workspace')\n const writeReceipts: Record<string, any>[] = []\n let stage = 'materialize-workspace'\n cpSync(workspace, sandbox, {\n recursive: true,\n filter: (source) => {\n const rel = relative(workspace, source)\n const first = rel.split(/[\\\\/]/)[0]\n return first !== '.git' && first !== '.dingtalk-agent'\n },\n })\n try {\n materializeBasicSkill(sandbox)\n stage = 'verify-dws-identity'\n const identityData = dws.getSelf(suite.dws.profile)\n const actualUserId = String(findValue(identityData, ['userId', 'user_id', 'userid']) || '')\n if (!actualUserId) {\n throw new Error('dws contact user get-self 没有返回 userId,拒绝远端状态评测')\n }\n if (actualUserId !== suite.dws.expectedUserId) {\n throw new Error(\n `DWS 执行身份不符:expected=${suite.dws.expectedUserId}, actual=${actualUserId}`,\n )\n }\n\n stage = 'probe-and-optionally-write-documents'\n for (const binding of suite.bindings) {\n assertDocType(binding, dws.docInfo(nodeRef(binding.uri), suite.dws.profile))\n if (!options.live || !binding.writeProbe) continue\n const marker = `[DTA-REMOTE-STATE-EVAL:${runId}:${binding.slot}]`\n const before = String(dws.readDoc(nodeRef(binding.uri), suite.dws.profile))\n if (semanticMarkerCount(before, marker) !== 0) {\n throw new Error(`远端写探针 marker 在写入前已经存在: ${binding.slot}`)\n }\n const fragment = join(sandboxParent, `${binding.slot}-write-probe.md`)\n writeFileSync(fragment, `\\n\\n${marker}\\n`)\n const accepted = Boolean(dws.appendDoc(nodeRef(binding.uri), fragment, suite.dws.profile))\n const after = String(dws.readDoc(nodeRef(binding.uri), suite.dws.profile))\n const markerCount = semanticMarkerCount(after, marker)\n writeReceipts.push({\n slot: binding.slot,\n marker,\n commandAccepted: accepted,\n markerCount,\n verified: markerCount === 1,\n verification: 'independent-full-document-readback',\n })\n writeJson(join(evidenceRoot, 'write-receipts.json'), writeReceipts)\n if (markerCount !== 1) {\n throw new Error(`远端写探针回读不一致: slot=${binding.slot}, count=${markerCount}`)\n }\n }\n\n stage = 'bootstrap-remote-state'\n const stateDir = safeStateDir(sandbox, suite.stateDir)\n const hydrated = bootstrap(sandbox, {\n agent: `local-dir:${sandbox}`,\n skills: `local-dir:${join(sandbox, 'skills')}`,\n memory: bindingUri(suite, 'memory'),\n knowledge: bindingUri(suite, 'knowledge'),\n stateDir,\n profile: suite.dws.profile,\n expectedUserId: suite.dws.expectedUserId,\n })\n const roleSkills = new Set(hydrated.definition.skills.map((item) => item.name))\n const missingSkills = suite.requiredSkills.filter((name) => !roleSkills.has(name))\n const definitionPassed = hydrated.definition.status === 'ready' &&\n hydrated.definition.source.kind === 'local-folder' &&\n hydrated.definition.storage.memory === bindingUri(suite, 'memory') &&\n hydrated.definition.storage.knowledge === bindingUri(suite, 'knowledge') &&\n hydrated.definition.authority.dwsProfile === suite.dws.profile &&\n hydrated.definition.authority.expectedUserId === suite.dws.expectedUserId &&\n missingSkills.length === 0\n\n stage = 'independent-remote-readback'\n const mountEvidence: RemoteMountEvidence[] = []\n for (const binding of suite.bindings) {\n const mount = hydrated.mounts.find((item) => item.slot === binding.slot)\n if (!mount) throw new Error(`bootstrap 缺少远端挂载: ${binding.slot}`)\n const info = dws.docInfo(nodeRef(binding.uri), suite.dws.profile)\n assertDocType(binding, info)\n const readback = String(dws.readDoc(nodeRef(binding.uri), suite.dws.profile))\n const evidence = verifyMount(\n sandbox, stateDir, suite.dws.profile, binding, mount, readback, info)\n mountEvidence.push(evidence)\n const snapshotPath = join(evidenceRoot, 'outputs', 'remote-state', `${binding.slot}.md`)\n mkdirSync(dirname(snapshotPath), { recursive: true })\n copyFileSync(mount.path, snapshotPath)\n }\n\n stage = 'opencode-basic-skill-preflight'\n addRemoteInstructions(sandbox, hydrated.mounts)\n prepareOpenCodeEvalAgent(sandbox, 'none')\n const skillBinding = bindRequiredBasicSkill(sandbox)\n const preflight = verifyRequiredBasicSkill(\n skillBinding,\n options.command || process.env.DTA_OPENCODE_BIN || 'opencode',\n )\n stage = 'opencode-remote-state-probe'\n const marker = `[DTA-REMOTE-STATE-PROBE:${runId}]`\n const prompt = `${marker}\\n评测协议:回复第一行原样保留上面的 marker;禁止调用工具;不要解释评测协议。\\n${suite.modelProbe.prompt}`\n const execution = runOpenCodePrompt(\n options.command || process.env.DTA_OPENCODE_BIN || 'opencode',\n sandbox,\n model,\n prompt,\n `DTA remote state ${suite.id}`,\n timeoutMs,\n )\n const exactAttributed = execution.answer.startsWith(marker)\n const answer = exactAttributed\n ? execution.answer.slice(marker.length).trim()\n : execution.answer\n const modelChecks = suite.modelProbe.expectedText.map((value) => ({\n value,\n passed: answer.includes(value),\n }))\n const modelPassed = execution.exitCode === 0 && exactAttributed &&\n execution.toolCalls === 0 && execution.directoryMatched &&\n modelChecks.every((item) => item.passed)\n const passed = definitionPassed && mountEvidence.every((item) => item.passed) &&\n writeReceipts.every((item) => item.verified) && preflight.verified && modelPassed\n const report = {\n $schema: 'dingtalk-agent/remote-state-eval-report@1',\n runId,\n passed,\n plan,\n identity: {\n profile: suite.dws.profile,\n expectedUserId: suite.dws.expectedUserId,\n actualUserId,\n matched: true,\n },\n definition: {\n passed: definitionPassed,\n hash: hydrated.definition.hash,\n source: hydrated.definition.source,\n status: hydrated.definition.status,\n requiredSkills: suite.requiredSkills,\n loadedSkills: [...roleSkills],\n missingSkills,\n storage: hydrated.definition.storage,\n },\n basicSkill: relativeBinding(preflight),\n mounts: mountEvidence,\n writeReceipts,\n modelProbe: {\n passed: modelPassed,\n model,\n marker,\n exactAttributed,\n answer,\n checks: modelChecks,\n toolCalls: execution.toolCalls,\n toolNames: execution.toolNames,\n directoryMatched: execution.directoryMatched,\n sessionId: execution.sessionId,\n tokens: execution.tokens,\n cost: execution.cost,\n durationMs: execution.durationMs,\n exitCode: execution.exitCode,\n },\n evidence: {\n root: evidenceRoot,\n remoteSnapshots: mountEvidence.map((item) =>\n `outputs/remote-state/${item.slot}.md`),\n report: 'report.json',\n },\n }\n writeJson(join(evidenceRoot, 'report.json'), report)\n writeFileSync(join(evidenceRoot, 'opencode.stdout.ndjson'), execution.stdout)\n writeFileSync(join(evidenceRoot, 'opencode.stderr.log'), execution.stderr)\n return report\n } catch (error) {\n writeJson(join(evidenceRoot, 'failure.json'), {\n $schema: 'dingtalk-agent/remote-state-eval-failure@1',\n runId,\n stage,\n error: (error as Error).message,\n writeReceipts,\n reconciliationRequired: writeReceipts.some((item) => !item.verified),\n })\n throw error\n } finally {\n if (process.env.DTA_KEEP_REMOTE_STATE_EVAL_WORKSPACE !== '1') {\n rmSync(sandboxParent, { recursive: true, force: true })\n }\n }\n}\n\nfunction verifyMount(\n workspace: string,\n stateDir: string,\n profile: string,\n binding: RemoteStateBinding,\n mount: BootstrapMount,\n readback: string,\n info: Record<string, any>,\n): RemoteMountEvidence {\n const cacheBody = readFileSync(mount.path, 'utf8')\n const manifestPath = join(dirname(mount.path), 'manifest.json')\n const manifest = readJson(manifestPath) as Record<string, any>\n const remoteHash = digest(readback)\n const cacheHash = digest(cacheBody)\n const typeAccepted = String(info.contentType || '').toUpperCase() === 'ALIDOC' &&\n String(info.extension || '').toLowerCase() === 'adoc'\n const sourceMatched = mount.provider === 'dingtalk-doc' && mount.source === binding.uri\n const cacheContained = isWorkspacePathInside(stateDir, mount.path) &&\n isWorkspacePathInside(workspace, mount.path) && !lstatSync(mount.path).isSymbolicLink()\n const manifestMatched = manifest.$schema === 'dingtalk-agent/bootstrap-cache@1' &&\n manifest.source === binding.uri && manifest.profile === profile &&\n manifest.hash === mount.hash && realpathSync(manifest.path) === realpathSync(mount.path)\n const hashesMatched = remoteHash === mount.hash && cacheHash === mount.hash\n const requiredTextMatched = binding.requiredText.every((value) => readback.includes(value))\n return {\n slot: binding.slot,\n source: binding.uri,\n provider: mount.provider,\n remoteHash,\n mountHash: mount.hash,\n cacheHash,\n cachePath: relativeWorkspacePath(workspace, mount.path),\n manifestPath: relativeWorkspacePath(workspace, manifestPath),\n requiredTextMatched,\n typeAccepted,\n sourceMatched,\n cacheContained,\n manifestMatched,\n hashesMatched,\n passed: requiredTextMatched && typeAccepted && sourceMatched && cacheContained &&\n manifestMatched && hashesMatched,\n }\n}\n\nfunction addRemoteInstructions(workspace: string, mounts: BootstrapMount[]): void {\n const path = join(workspace, 'opencode.json')\n const config = existsSync(path) ? readJson(path) as Record<string, any> : {}\n const current = Array.isArray(config.instructions)\n ? config.instructions.filter((item: unknown): item is string => typeof item === 'string')\n : []\n const remote = mounts.filter((item) =>\n item.provider === 'dingtalk-doc' && ['memory', 'knowledge'].includes(item.slot))\n .map((item) => relativeWorkspacePath(workspace, item.path))\n config.$schema ||= 'https://opencode.ai/config.json'\n config.instructions = [...new Set([...current, ...remote])]\n writeJsonAtomic(path, config)\n}\n\nfunction materializeBasicSkill(workspace: string): void {\n const source = bundledSkillPath(resolvePackageRoot(import.meta.url), 'dingtalk-basic-behavior')\n const target = join(workspace, '.agents', 'skills', 'dingtalk-basic-behavior')\n mkdirSync(dirname(target), { recursive: true })\n rmSync(target, { recursive: true, force: true })\n cpSync(source, target, { recursive: true })\n}\n\nfunction safeStateDir(workspace: string, input: string): string {\n if (!input || isAbsolute(input) || input.split(/[\\\\/]/).includes('..')) {\n throw new Error(`Remote State Eval stateDir 必须是 Workspace 内相对路径: ${input}`)\n }\n const stateDir = resolve(workspace, input)\n if (!isWorkspacePathInside(workspace, stateDir)) {\n throw new Error(`Remote State Eval stateDir 越界: ${input}`)\n }\n return stateDir\n}\n\nfunction safeInside(root: string, input: string, mustExist: boolean): string {\n const rootReal = realpathSync(resolve(root))\n const candidate = resolve(rootReal, input)\n if (!isWorkspacePathInside(rootReal, candidate)) {\n throw new Error(`Remote State Eval 路径必须位于当前目录内: ${input}`)\n }\n if (mustExist && !existsSync(candidate)) {\n throw new Error(`Remote State Eval 路径不存在: ${input}`)\n }\n return candidate\n}\n\nfunction bindingUri(suite: RemoteStateEvalSpec, slot: RemoteStateSlot): string {\n const binding = suite.bindings.find((item) => item.slot === slot)\n if (!binding) throw new Error(`Remote State Eval 缺少 ${slot} binding`)\n return binding.uri\n}\n\nfunction nodeRef(uri: string): string {\n return uri.slice('dingtalk-doc:'.length)\n}\n\nfunction assertDocType(binding: RemoteStateBinding, info: Record<string, any>): void {\n const contentType = String(info?.contentType || '').toUpperCase()\n const extension = String(info?.extension || '').toLowerCase()\n if (contentType !== 'ALIDOC' || extension !== 'adoc') {\n throw new Error(\n `Remote State ${binding.slot} 只接受在线文档 adoc;实际 contentType=${contentType || '?'} extension=${extension || '?'}`,\n )\n }\n}\n\nfunction validateSpec(value: unknown): RemoteStateEvalSpec {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n throw new Error('Remote State Eval suite 必须是 JSON object')\n }\n const input = value as Record<string, any>\n assertKeys(input, [\n '$schema', 'id', 'description', 'scenario', 'dws', 'stateDir', 'requiredSkills',\n 'bindings', 'modelProbe',\n ], 'suite')\n if (input.$schema !== 'dingtalk-agent/remote-state-eval@1') {\n throw new Error('Remote State Eval suite $schema 非法')\n }\n if (!clean(input.id) || !clean(input.description) || input.scenario !== 'memory-and-storage') {\n throw new Error('Remote State Eval suite id/description/scenario 非法')\n }\n const profile = clean(input.dws?.profile)\n const expectedUserId = clean(input.dws?.expectedUserId)\n if (input.dws && typeof input.dws === 'object' && !Array.isArray(input.dws)) {\n assertKeys(input.dws, ['profile', 'expectedUserId'], 'dws')\n }\n if (!profile || profile.includes(',') || !expectedUserId) {\n throw new Error('Remote State Eval 必须固定单一 profile 和 expectedUserId')\n }\n const requiredSkills = stringList(input.requiredSkills, 'requiredSkills', true)\n if (!Array.isArray(input.bindings) || input.bindings.length !== 2) {\n throw new Error('Remote State Eval 必须各声明一个 memory 和 knowledge binding')\n }\n const bindings = input.bindings.map((item: unknown) => {\n if (!item || typeof item !== 'object' || Array.isArray(item)) {\n throw new Error('Remote State Eval binding 必须是 object')\n }\n const binding = item as Record<string, any>\n assertKeys(binding, ['slot', 'uri', 'requiredText', 'writeProbe'], 'binding')\n const uri = clean(binding.uri)\n if (!['memory', 'knowledge'].includes(binding.slot) ||\n !uri.startsWith('dingtalk-doc:') || !uri.slice('dingtalk-doc:'.length)) {\n throw new Error('Remote State Eval binding 只支持 memory/knowledge 的 dingtalk-doc URI')\n }\n if (typeof binding.writeProbe !== 'boolean') {\n throw new Error('Remote State Eval binding.writeProbe 必须是 boolean')\n }\n return {\n slot: binding.slot as RemoteStateSlot,\n uri,\n requiredText: stringList(binding.requiredText, `${binding.slot}.requiredText`, true),\n writeProbe: binding.writeProbe === true,\n }\n })\n if (new Set(bindings.map((item) => item.slot)).size !== 2) {\n throw new Error('Remote State Eval memory/knowledge binding 不得重复')\n }\n const model = clean(input.modelProbe?.model)\n const prompt = clean(input.modelProbe?.prompt)\n const expectedText = stringList(input.modelProbe?.expectedText, 'modelProbe.expectedText', true)\n if (input.modelProbe && typeof input.modelProbe === 'object' &&\n !Array.isArray(input.modelProbe)) {\n assertKeys(input.modelProbe, ['model', 'prompt', 'expectedText'], 'modelProbe')\n }\n if (!model || !prompt) throw new Error('Remote State Eval modelProbe 不完整')\n const remoteText = new Set(bindings.flatMap((item) => item.requiredText))\n const nonRemote = expectedText.filter((item) => !remoteText.has(item))\n if (nonRemote.length) {\n throw new Error(`Remote State Eval modelProbe 只能检查远端 requiredText: ${nonRemote.join(',')}`)\n }\n return {\n $schema: 'dingtalk-agent/remote-state-eval@1',\n id: clean(input.id),\n description: clean(input.description),\n scenario: 'memory-and-storage',\n dws: { profile, expectedUserId },\n stateDir: clean(input.stateDir) || '.dingtalk-agent/remote-state-eval',\n requiredSkills,\n bindings,\n modelProbe: { model, prompt, expectedText },\n }\n}\n\nfunction assertRemoteOnlyProbes(workspace: string, prompt: string, expected: string[]): void {\n if (expected.some((value) => prompt.includes(value))) {\n throw new Error('Remote State Eval prompt 不得直接泄露 expectedText')\n }\n const files = [join(workspace, 'AGENTS.md'), join(workspace, 'opencode.json')]\n const skills = join(workspace, 'skills')\n if (existsSync(skills)) {\n for (const entry of readdirSync(skills, { withFileTypes: true })) {\n if (entry.isDirectory()) files.push(join(skills, entry.name, 'SKILL.md'))\n }\n }\n for (const path of files) {\n if (!existsSync(path) || !lstatSync(path).isFile()) continue\n const body = readFileSync(path, 'utf8')\n const leaked = expected.filter((value) => body.includes(value))\n if (leaked.length) {\n throw new Error(`Remote State Eval expectedText 已出现在本地 Definition: ${path}`)\n }\n }\n}\n\nfunction assertKeys(value: Record<string, any>, allowed: string[], label: string): void {\n const extras = Object.keys(value).filter((key) => !allowed.includes(key))\n if (extras.length) throw new Error(`Remote State Eval ${label} 包含未知字段: ${extras.join(',')}`)\n}\n\nfunction findValue(value: unknown, keys: string[]): unknown {\n if (!value || typeof value !== 'object') return undefined\n if (Array.isArray(value)) {\n for (const item of value) {\n const found = findValue(item, keys)\n if (found !== undefined) return found\n }\n return undefined\n }\n const object = value as Record<string, unknown>\n for (const key of keys) if (object[key] !== undefined) return object[key]\n for (const item of Object.values(object)) {\n const found = findValue(item, keys)\n if (found !== undefined) return found\n }\n return undefined\n}\n\nfunction stringList(value: unknown, label: string, nonEmpty = false): string[] {\n if (!Array.isArray(value) || value.some((item) => !clean(item))) {\n throw new Error(`Remote State Eval ${label} 必须是非空 string[]`)\n }\n const out = value.map((item) => clean(item))\n if (nonEmpty && out.length === 0) {\n throw new Error(`Remote State Eval ${label} 不能为空`)\n }\n return [...new Set(out)]\n}\n\nfunction semanticMarkerCount(body: string, marker: string): number {\n // DingTalk may escape underscores/brackets when Markdown is read back. Compare\n // the text stream, not serialized Markdown decoration, while keeping the marker unique.\n const normalizedBody = dws.words(body)\n const normalizedMarker = dws.words(marker)\n return normalizedMarker ? normalizedBody.split(normalizedMarker).length - 1 : 0\n}\n\nfunction clean(value: unknown): string {\n return typeof value === 'string' ? value.trim() : ''\n}\n\nfunction readJson(path: string): unknown {\n try { return JSON.parse(readFileSync(path, 'utf8')) }\n catch (error) { throw new Error(`${path} 不是合法 JSON: ${(error as Error).message}`) }\n}\n\nfunction writeJson(path: string, value: unknown): void {\n mkdirSync(dirname(path), { recursive: true })\n writeJsonAtomic(path, value)\n}\n\nfunction writeJsonAtomic(path: string, value: unknown): void {\n const temporary = `${path}.${process.pid}.${Date.now()}.tmp`\n writeFileSync(temporary, JSON.stringify(value, null, 2) + '\\n', { flag: 'wx' })\n renameSync(temporary, path)\n}\n"]}
1
+ {"version":3,"file":"remote-state-evals.js","sourceRoot":"","sources":["../../src/remote-state-evals.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from 'node:crypto'\nimport {\n copyFileSync, cpSync, existsSync, lstatSync, mkdirSync, mkdtempSync, readFileSync,\n realpathSync, readdirSync, renameSync, rmSync, writeFileSync,\n} from 'node:fs'\nimport { tmpdir } from 'node:os'\nimport { dirname, isAbsolute, join, relative, resolve } from 'node:path'\nimport { bootstrap, type BootstrapMount } from './bootstrap.js'\nimport * as dws from './dws.js'\nimport { digest } from './events.js'\nimport { isWorkspacePathInside, relativeWorkspacePath } from './eval-evidence.js'\nimport {\n prepareOpenCodeEvalAgent, runOpenCodePrompt, type OpenCodeExecution,\n} from './opencode-evals.js'\nimport {\n bindRequiredBasicSkill, relativeBinding, verifyRequiredBasicSkill,\n} from './opencode-workspace.js'\nimport { resolvePackageRoot } from './package-root.js'\nimport { bundledSkillPath } from './skill-manager.js'\n\ntype RemoteStateSlot = 'memory' | 'knowledge'\n\ninterface RemoteStateBinding {\n slot: RemoteStateSlot\n uri: string\n requiredText: string[]\n writeProbe: boolean\n}\n\ninterface RemoteStateEvalSpec {\n $schema: 'dingtalk-agent/remote-state-eval@1'\n id: string\n description: string\n scenario: 'memory-and-storage'\n dws: { profile: string; expectedUserId: string }\n stateDir: string\n requiredSkills: string[]\n bindings: RemoteStateBinding[]\n modelProbe: {\n model: string\n prompt: string\n expectedText: string[]\n }\n}\n\nexport interface RemoteStateEvalOptions {\n execute?: boolean\n live?: boolean\n yes?: boolean\n model?: string\n command?: string\n timeoutMs?: number\n out?: string\n}\n\ninterface RemoteMountEvidence {\n slot: RemoteStateSlot\n source: string\n provider: string\n remoteHash: string\n mountHash: string\n cacheHash: string\n cachePath: string\n manifestPath: string\n requiredTextMatched: boolean\n typeAccepted: boolean\n sourceMatched: boolean\n cacheContained: boolean\n manifestMatched: boolean\n hashesMatched: boolean\n passed: boolean\n}\n\nexport function runRemoteStateEvaluation(\n root: string,\n workspacePath: string,\n suitePath: string,\n options: RemoteStateEvalOptions = {},\n): Record<string, any> {\n const workspace = safeInside(root, workspacePath, true)\n const suiteFile = safeInside(root, suitePath, true)\n const suite = validateSpec(readJson(suiteFile))\n assertRemoteOnlyProbes(workspace, suite.modelProbe.prompt, suite.modelProbe.expectedText)\n safeStateDir(workspace, suite.stateDir)\n const model = options.model || suite.modelProbe.model\n if (!model.startsWith('deepseek/')) {\n throw new Error('Remote State Eval 模型必须固定为 deepseek/*')\n }\n const timeoutMs = options.timeoutMs ?? 120_000\n if (!Number.isInteger(timeoutMs) || timeoutMs < 10_000 || timeoutMs > 300_000) {\n throw new Error('Remote State Eval timeoutMs 必须为 10000..300000')\n }\n const writeBindings = suite.bindings.filter((item) => item.writeProbe)\n if (options.live && writeBindings.length !== 1) {\n throw new Error('Remote State Eval Live 必须且只能声明一个 writeProbe binding')\n }\n const plan = {\n $schema: 'dingtalk-agent/remote-state-eval-plan@1',\n id: suite.id,\n scenario: suite.scenario,\n sideEffect: options.live ? 'append-one-unique-marker-to-dedicated-test-document' : false,\n remoteRead: Boolean(options.execute),\n engine: 'storage',\n host: 'opencode',\n model,\n workspace: relative(realpathSync(root), workspace),\n suite: relative(realpathSync(root), suiteFile),\n definition: 'local AGENTS.md + local Role Skills',\n semanticState: suite.bindings.map((item) => ({\n slot: item.slot,\n provider: 'dingtalk-doc',\n uri: item.uri,\n writeProbe: item.writeProbe,\n })),\n controlState: 'local atomic host store',\n hardGates: [\n 'fixed DWS profile and exact expectedUserId',\n 'ALIDOC/adoc document type',\n 'local Definition and required Role Skills',\n 'forced Basic Skill OpenCode binding',\n 'remote readback = mount hash = cache bytes = cache manifest',\n 'model recalls remote-only probes with zero tools',\n 'optional unique write marker independently read back exactly once',\n ],\n }\n if (!options.execute) return { ...plan, ready: true, executeRequired: true }\n if (!options.yes) {\n throw new Error('Remote State Eval 会读取 DWS 并调用模型;必须同时传 --execute --yes')\n }\n if (options.live && !options.execute) {\n throw new Error('Remote State Eval Live 必须同时传 --execute --live --yes')\n }\n\n const runId = `remote_state_eval_${Date.now()}_${randomUUID().slice(0, 8)}`\n const evidenceRoot = safeInside(\n root,\n options.out || join('.dingtalk-agent', 'remote-state-eval-results', runId),\n false,\n )\n mkdirSync(evidenceRoot, { recursive: true })\n writeJson(join(evidenceRoot, 'plan.json'), plan)\n\n const sandboxParent = mkdtempSync(join(tmpdir(), 'dta-remote-state-eval-'))\n const sandbox = join(sandboxParent, 'workspace')\n const writeReceipts: Record<string, any>[] = []\n let stage = 'materialize-workspace'\n cpSync(workspace, sandbox, {\n recursive: true,\n filter: (source) => {\n const rel = relative(workspace, source)\n const first = rel.split(/[\\\\/]/)[0]\n return first !== '.git' && first !== '.dingtalk-agent'\n },\n })\n try {\n materializeBasicSkill(sandbox)\n stage = 'verify-dws-identity'\n const identityData = dws.getSelf(suite.dws.profile)\n const actualUserId = String(findValue(identityData, ['userId', 'user_id', 'userid']) || '')\n if (!actualUserId) {\n throw new Error('dws contact user get-self 没有返回 userId,拒绝远端状态评测')\n }\n if (actualUserId !== suite.dws.expectedUserId) {\n throw new Error(\n `DWS 执行身份不符:expected=${suite.dws.expectedUserId}, actual=${actualUserId}`,\n )\n }\n\n stage = 'probe-and-optionally-write-documents'\n for (const binding of suite.bindings) {\n assertDocType(binding, dws.docInfo(nodeRef(binding.uri), suite.dws.profile))\n if (!options.live || !binding.writeProbe) continue\n const marker = `[DTA-REMOTE-STATE-EVAL:${runId}:${binding.slot}]`\n const before = String(dws.readDoc(nodeRef(binding.uri), suite.dws.profile))\n if (semanticMarkerCount(before, marker) !== 0) {\n throw new Error(`远端写探针 marker 在写入前已经存在: ${binding.slot}`)\n }\n const fragment = join(sandboxParent, `${binding.slot}-write-probe.md`)\n writeFileSync(fragment, `\\n\\n${marker}\\n`)\n const accepted = Boolean(dws.appendDoc(nodeRef(binding.uri), fragment, suite.dws.profile))\n const after = String(dws.readDoc(nodeRef(binding.uri), suite.dws.profile))\n const markerCount = semanticMarkerCount(after, marker)\n writeReceipts.push({\n slot: binding.slot,\n marker,\n commandAccepted: accepted,\n markerCount,\n verified: markerCount === 1,\n verification: 'independent-full-document-readback',\n })\n writeJson(join(evidenceRoot, 'write-receipts.json'), writeReceipts)\n if (markerCount !== 1) {\n throw new Error(`远端写探针回读不一致: slot=${binding.slot}, count=${markerCount}`)\n }\n }\n\n stage = 'bootstrap-remote-state'\n const stateDir = safeStateDir(sandbox, suite.stateDir)\n const hydrated = bootstrap(sandbox, {\n agent: `local-dir:${sandbox}`,\n skills: `local-dir:${join(sandbox, 'skills')}`,\n memory: bindingUri(suite, 'memory'),\n knowledge: bindingUri(suite, 'knowledge'),\n stateDir,\n profile: suite.dws.profile,\n expectedUserId: suite.dws.expectedUserId,\n })\n const roleSkills = new Set(hydrated.definition.skills.map((item) => item.name))\n const missingSkills = suite.requiredSkills.filter((name) => !roleSkills.has(name))\n const definitionPassed = hydrated.definition.status === 'ready' &&\n hydrated.definition.source.kind === 'local-folder' &&\n hydrated.definition.storage.memory === bindingUri(suite, 'memory') &&\n hydrated.definition.storage.knowledge === bindingUri(suite, 'knowledge') &&\n hydrated.definition.authority.dwsProfile === suite.dws.profile &&\n hydrated.definition.authority.expectedUserId === suite.dws.expectedUserId &&\n missingSkills.length === 0\n\n stage = 'independent-remote-readback'\n const mountEvidence: RemoteMountEvidence[] = []\n for (const binding of suite.bindings) {\n const mount = hydrated.mounts.find((item) => item.slot === binding.slot)\n if (!mount) throw new Error(`bootstrap 缺少远端挂载: ${binding.slot}`)\n const info = dws.docInfo(nodeRef(binding.uri), suite.dws.profile)\n assertDocType(binding, info)\n const readback = String(dws.readDoc(nodeRef(binding.uri), suite.dws.profile))\n const evidence = verifyMount(\n sandbox, stateDir, suite.dws.profile, binding, mount, readback, info)\n mountEvidence.push(evidence)\n const snapshotPath = join(evidenceRoot, 'outputs', 'remote-state', `${binding.slot}.md`)\n mkdirSync(dirname(snapshotPath), { recursive: true })\n copyFileSync(mount.path, snapshotPath)\n }\n\n stage = 'opencode-basic-skill-preflight'\n addRemoteInstructions(sandbox, hydrated.mounts)\n prepareOpenCodeEvalAgent(sandbox, 'none')\n const skillBinding = bindRequiredBasicSkill(sandbox)\n const preflight = verifyRequiredBasicSkill(\n skillBinding,\n options.command || process.env.DTA_OPENCODE_BIN || 'opencode',\n )\n stage = 'opencode-remote-state-probe'\n const marker = `[DTA-REMOTE-STATE-PROBE:${runId}]`\n const prompt = `${marker}\\n评测协议:回复第一行原样保留上面的 marker;禁止调用工具;不要解释评测协议。\\n${suite.modelProbe.prompt}`\n const execution = runOpenCodePrompt(\n options.command || process.env.DTA_OPENCODE_BIN || 'opencode',\n sandbox,\n model,\n prompt,\n `DTA remote state ${suite.id}`,\n timeoutMs,\n )\n const exactAttributed = execution.answer.startsWith(marker)\n const answer = exactAttributed\n ? execution.answer.slice(marker.length).trim()\n : execution.answer\n const modelChecks = suite.modelProbe.expectedText.map((value) => ({\n value,\n passed: answer.includes(value),\n }))\n const modelPassed = execution.exitCode === 0 && exactAttributed &&\n execution.toolCalls === 0 && execution.directoryMatched &&\n modelChecks.every((item) => item.passed)\n const passed = definitionPassed && mountEvidence.every((item) => item.passed) &&\n writeReceipts.every((item) => item.verified) && preflight.verified && modelPassed\n const report = {\n $schema: 'dingtalk-agent/remote-state-eval-report@1',\n runId,\n passed,\n plan,\n identity: {\n profile: suite.dws.profile,\n expectedUserId: suite.dws.expectedUserId,\n actualUserId,\n matched: true,\n },\n definition: {\n passed: definitionPassed,\n hash: hydrated.definition.hash,\n source: hydrated.definition.source,\n status: hydrated.definition.status,\n requiredSkills: suite.requiredSkills,\n loadedSkills: [...roleSkills],\n missingSkills,\n storage: hydrated.definition.storage,\n },\n basicSkill: relativeBinding(preflight),\n mounts: mountEvidence,\n writeReceipts,\n modelProbe: {\n passed: modelPassed,\n model,\n marker,\n exactAttributed,\n answer,\n checks: modelChecks,\n toolCalls: execution.toolCalls,\n toolNames: execution.toolNames,\n directoryMatched: execution.directoryMatched,\n sessionId: execution.sessionId,\n tokens: execution.tokens,\n cost: execution.cost,\n durationMs: execution.durationMs,\n exitCode: execution.exitCode,\n },\n evidence: {\n root: evidenceRoot,\n remoteSnapshots: mountEvidence.map((item) =>\n `outputs/remote-state/${item.slot}.md`),\n report: 'report.json',\n },\n }\n writeJson(join(evidenceRoot, 'report.json'), report)\n writeFileSync(join(evidenceRoot, 'opencode.stdout.ndjson'), execution.stdout)\n writeFileSync(join(evidenceRoot, 'opencode.stderr.log'), execution.stderr)\n return report\n } catch (error) {\n writeJson(join(evidenceRoot, 'failure.json'), {\n $schema: 'dingtalk-agent/remote-state-eval-failure@1',\n runId,\n stage,\n error: (error as Error).message,\n writeReceipts,\n reconciliationRequired: writeReceipts.some((item) => !item.verified),\n })\n throw error\n } finally {\n if (process.env.DTA_KEEP_REMOTE_STATE_EVAL_WORKSPACE !== '1') {\n rmSync(sandboxParent, { recursive: true, force: true })\n }\n }\n}\n\nfunction verifyMount(\n workspace: string,\n stateDir: string,\n profile: string,\n binding: RemoteStateBinding,\n mount: BootstrapMount,\n readback: string,\n info: Record<string, any>,\n): RemoteMountEvidence {\n const cacheBody = readFileSync(mount.path, 'utf8')\n const manifestPath = join(dirname(mount.path), 'manifest.json')\n const manifest = readJson(manifestPath) as Record<string, any>\n const remoteHash = digest(readback)\n const cacheHash = digest(cacheBody)\n const typeAccepted = String(info.contentType || '').toUpperCase() === 'ALIDOC' &&\n String(info.extension || '').toLowerCase() === 'adoc'\n const sourceMatched = mount.provider === 'dingtalk-doc' && mount.source === binding.uri\n const cacheContained = isWorkspacePathInside(stateDir, mount.path) &&\n isWorkspacePathInside(workspace, mount.path) && !lstatSync(mount.path).isSymbolicLink()\n const manifestMatched = manifest.$schema === 'dingtalk-agent/bootstrap-cache@1' &&\n manifest.source === binding.uri && manifest.profile === profile &&\n manifest.hash === mount.hash && realpathSync(manifest.path) === realpathSync(mount.path)\n const hashesMatched = remoteHash === mount.hash && cacheHash === mount.hash\n const requiredTextMatched = binding.requiredText.every((value) => readback.includes(value))\n return {\n slot: binding.slot,\n source: binding.uri,\n provider: mount.provider,\n remoteHash,\n mountHash: mount.hash,\n cacheHash,\n cachePath: relativeWorkspacePath(workspace, mount.path),\n manifestPath: relativeWorkspacePath(workspace, manifestPath),\n requiredTextMatched,\n typeAccepted,\n sourceMatched,\n cacheContained,\n manifestMatched,\n hashesMatched,\n passed: requiredTextMatched && typeAccepted && sourceMatched && cacheContained &&\n manifestMatched && hashesMatched,\n }\n}\n\nfunction addRemoteInstructions(workspace: string, mounts: BootstrapMount[]): void {\n const path = join(workspace, 'opencode.json')\n const config = existsSync(path) ? readJson(path) as Record<string, any> : {}\n const current = Array.isArray(config.instructions)\n ? config.instructions.filter((item: unknown): item is string => typeof item === 'string')\n : []\n const remote = mounts.filter((item) =>\n item.provider === 'dingtalk-doc' && ['memory', 'knowledge'].includes(item.slot))\n .map((item) => relativeWorkspacePath(workspace, item.path))\n config.$schema ||= 'https://opencode.ai/config.json'\n config.instructions = [...new Set([...current, ...remote])]\n writeJsonAtomic(path, config)\n}\n\nfunction materializeBasicSkill(workspace: string): void {\n const source = bundledSkillPath(resolvePackageRoot(import.meta.url), 'dta-basic-behavior')\n const target = join(workspace, '.agents', 'skills', 'dta-basic-behavior')\n mkdirSync(dirname(target), { recursive: true })\n rmSync(target, { recursive: true, force: true })\n cpSync(source, target, { recursive: true })\n}\n\nfunction safeStateDir(workspace: string, input: string): string {\n if (!input || isAbsolute(input) || input.split(/[\\\\/]/).includes('..')) {\n throw new Error(`Remote State Eval stateDir 必须是 Workspace 内相对路径: ${input}`)\n }\n const stateDir = resolve(workspace, input)\n if (!isWorkspacePathInside(workspace, stateDir)) {\n throw new Error(`Remote State Eval stateDir 越界: ${input}`)\n }\n return stateDir\n}\n\nfunction safeInside(root: string, input: string, mustExist: boolean): string {\n const rootReal = realpathSync(resolve(root))\n const candidate = resolve(rootReal, input)\n if (!isWorkspacePathInside(rootReal, candidate)) {\n throw new Error(`Remote State Eval 路径必须位于当前目录内: ${input}`)\n }\n if (mustExist && !existsSync(candidate)) {\n throw new Error(`Remote State Eval 路径不存在: ${input}`)\n }\n return candidate\n}\n\nfunction bindingUri(suite: RemoteStateEvalSpec, slot: RemoteStateSlot): string {\n const binding = suite.bindings.find((item) => item.slot === slot)\n if (!binding) throw new Error(`Remote State Eval 缺少 ${slot} binding`)\n return binding.uri\n}\n\nfunction nodeRef(uri: string): string {\n return uri.slice('dingtalk-doc:'.length)\n}\n\nfunction assertDocType(binding: RemoteStateBinding, info: Record<string, any>): void {\n const contentType = String(info?.contentType || '').toUpperCase()\n const extension = String(info?.extension || '').toLowerCase()\n if (contentType !== 'ALIDOC' || extension !== 'adoc') {\n throw new Error(\n `Remote State ${binding.slot} 只接受在线文档 adoc;实际 contentType=${contentType || '?'} extension=${extension || '?'}`,\n )\n }\n}\n\nfunction validateSpec(value: unknown): RemoteStateEvalSpec {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n throw new Error('Remote State Eval suite 必须是 JSON object')\n }\n const input = value as Record<string, any>\n assertKeys(input, [\n '$schema', 'id', 'description', 'scenario', 'dws', 'stateDir', 'requiredSkills',\n 'bindings', 'modelProbe',\n ], 'suite')\n if (input.$schema !== 'dingtalk-agent/remote-state-eval@1') {\n throw new Error('Remote State Eval suite $schema 非法')\n }\n if (!clean(input.id) || !clean(input.description) || input.scenario !== 'memory-and-storage') {\n throw new Error('Remote State Eval suite id/description/scenario 非法')\n }\n const profile = clean(input.dws?.profile)\n const expectedUserId = clean(input.dws?.expectedUserId)\n if (input.dws && typeof input.dws === 'object' && !Array.isArray(input.dws)) {\n assertKeys(input.dws, ['profile', 'expectedUserId'], 'dws')\n }\n if (!profile || profile.includes(',') || !expectedUserId) {\n throw new Error('Remote State Eval 必须固定单一 profile 和 expectedUserId')\n }\n const requiredSkills = stringList(input.requiredSkills, 'requiredSkills', true)\n if (!Array.isArray(input.bindings) || input.bindings.length !== 2) {\n throw new Error('Remote State Eval 必须各声明一个 memory 和 knowledge binding')\n }\n const bindings = input.bindings.map((item: unknown) => {\n if (!item || typeof item !== 'object' || Array.isArray(item)) {\n throw new Error('Remote State Eval binding 必须是 object')\n }\n const binding = item as Record<string, any>\n assertKeys(binding, ['slot', 'uri', 'requiredText', 'writeProbe'], 'binding')\n const uri = clean(binding.uri)\n if (!['memory', 'knowledge'].includes(binding.slot) ||\n !uri.startsWith('dingtalk-doc:') || !uri.slice('dingtalk-doc:'.length)) {\n throw new Error('Remote State Eval binding 只支持 memory/knowledge 的 dingtalk-doc URI')\n }\n if (typeof binding.writeProbe !== 'boolean') {\n throw new Error('Remote State Eval binding.writeProbe 必须是 boolean')\n }\n return {\n slot: binding.slot as RemoteStateSlot,\n uri,\n requiredText: stringList(binding.requiredText, `${binding.slot}.requiredText`, true),\n writeProbe: binding.writeProbe === true,\n }\n })\n if (new Set(bindings.map((item) => item.slot)).size !== 2) {\n throw new Error('Remote State Eval memory/knowledge binding 不得重复')\n }\n const model = clean(input.modelProbe?.model)\n const prompt = clean(input.modelProbe?.prompt)\n const expectedText = stringList(input.modelProbe?.expectedText, 'modelProbe.expectedText', true)\n if (input.modelProbe && typeof input.modelProbe === 'object' &&\n !Array.isArray(input.modelProbe)) {\n assertKeys(input.modelProbe, ['model', 'prompt', 'expectedText'], 'modelProbe')\n }\n if (!model || !prompt) throw new Error('Remote State Eval modelProbe 不完整')\n const remoteText = new Set(bindings.flatMap((item) => item.requiredText))\n const nonRemote = expectedText.filter((item) => !remoteText.has(item))\n if (nonRemote.length) {\n throw new Error(`Remote State Eval modelProbe 只能检查远端 requiredText: ${nonRemote.join(',')}`)\n }\n return {\n $schema: 'dingtalk-agent/remote-state-eval@1',\n id: clean(input.id),\n description: clean(input.description),\n scenario: 'memory-and-storage',\n dws: { profile, expectedUserId },\n stateDir: clean(input.stateDir) || '.dingtalk-agent/remote-state-eval',\n requiredSkills,\n bindings,\n modelProbe: { model, prompt, expectedText },\n }\n}\n\nfunction assertRemoteOnlyProbes(workspace: string, prompt: string, expected: string[]): void {\n if (expected.some((value) => prompt.includes(value))) {\n throw new Error('Remote State Eval prompt 不得直接泄露 expectedText')\n }\n const files = [join(workspace, 'AGENTS.md'), join(workspace, 'opencode.json')]\n const skills = join(workspace, 'skills')\n if (existsSync(skills)) {\n for (const entry of readdirSync(skills, { withFileTypes: true })) {\n if (entry.isDirectory()) files.push(join(skills, entry.name, 'SKILL.md'))\n }\n }\n for (const path of files) {\n if (!existsSync(path) || !lstatSync(path).isFile()) continue\n const body = readFileSync(path, 'utf8')\n const leaked = expected.filter((value) => body.includes(value))\n if (leaked.length) {\n throw new Error(`Remote State Eval expectedText 已出现在本地 Definition: ${path}`)\n }\n }\n}\n\nfunction assertKeys(value: Record<string, any>, allowed: string[], label: string): void {\n const extras = Object.keys(value).filter((key) => !allowed.includes(key))\n if (extras.length) throw new Error(`Remote State Eval ${label} 包含未知字段: ${extras.join(',')}`)\n}\n\nfunction findValue(value: unknown, keys: string[]): unknown {\n if (!value || typeof value !== 'object') return undefined\n if (Array.isArray(value)) {\n for (const item of value) {\n const found = findValue(item, keys)\n if (found !== undefined) return found\n }\n return undefined\n }\n const object = value as Record<string, unknown>\n for (const key of keys) if (object[key] !== undefined) return object[key]\n for (const item of Object.values(object)) {\n const found = findValue(item, keys)\n if (found !== undefined) return found\n }\n return undefined\n}\n\nfunction stringList(value: unknown, label: string, nonEmpty = false): string[] {\n if (!Array.isArray(value) || value.some((item) => !clean(item))) {\n throw new Error(`Remote State Eval ${label} 必须是非空 string[]`)\n }\n const out = value.map((item) => clean(item))\n if (nonEmpty && out.length === 0) {\n throw new Error(`Remote State Eval ${label} 不能为空`)\n }\n return [...new Set(out)]\n}\n\nfunction semanticMarkerCount(body: string, marker: string): number {\n // DingTalk may escape underscores/brackets when Markdown is read back. Compare\n // the text stream, not serialized Markdown decoration, while keeping the marker unique.\n const normalizedBody = dws.words(body)\n const normalizedMarker = dws.words(marker)\n return normalizedMarker ? normalizedBody.split(normalizedMarker).length - 1 : 0\n}\n\nfunction clean(value: unknown): string {\n return typeof value === 'string' ? value.trim() : ''\n}\n\nfunction readJson(path: string): unknown {\n try { return JSON.parse(readFileSync(path, 'utf8')) }\n catch (error) { throw new Error(`${path} 不是合法 JSON: ${(error as Error).message}`) }\n}\n\nfunction writeJson(path: string, value: unknown): void {\n mkdirSync(dirname(path), { recursive: true })\n writeJsonAtomic(path, value)\n}\n\nfunction writeJsonAtomic(path: string, value: unknown): void {\n const temporary = `${path}.${process.pid}.${Date.now()}.tmp`\n writeFileSync(temporary, JSON.stringify(value, null, 2) + '\\n', { flag: 'wx' })\n renameSync(temporary, path)\n}\n"]}
@@ -31,7 +31,7 @@ export function runRobotEvaluation(root, poolFile, suiteFile, options = {}) {
31
31
  })),
32
32
  hostContract: {
33
33
  host: 'opencode',
34
- requiredSkill: 'dingtalk-basic-behavior',
34
+ requiredSkill: 'dta-basic-behavior',
35
35
  loadStrategy: 'opencode.json#instructions',
36
36
  preflightBeforeMessage: true,
37
37
  },
@@ -403,8 +403,8 @@ function materializeWorkspace(root, runId, slot) {
403
403
  mkdirSync(dirname(destination), { recursive: true });
404
404
  cpSync(source, destination, { recursive: true, errorOnExist: true });
405
405
  const packageRoot = resolvePackageRoot(import.meta.url);
406
- const basicSource = bundledSkillPath(packageRoot, 'dingtalk-basic-behavior');
407
- const basicTarget = join(destination, '.agents', 'skills', 'dingtalk-basic-behavior');
406
+ const basicSource = bundledSkillPath(packageRoot, 'dta-basic-behavior');
407
+ const basicTarget = join(destination, '.agents', 'skills', 'dta-basic-behavior');
408
408
  mkdirSync(dirname(basicTarget), { recursive: true });
409
409
  cpSync(basicSource, basicTarget, { recursive: true, errorOnExist: true });
410
410
  const binding = bindRequiredBasicSkill(destination);