@xdxer/dingtalk-agent 0.1.5-beta.2 → 0.1.5-beta.3

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 (46) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.en.md +6 -4
  3. package/README.md +6 -4
  4. package/dist/src/agent-audit.js +69 -55
  5. package/dist/src/agent-audit.js.map +1 -1
  6. package/dist/src/agent-enhance.js +49 -30
  7. package/dist/src/agent-enhance.js.map +1 -1
  8. package/dist/src/bootstrap.js +6 -2
  9. package/dist/src/bootstrap.js.map +1 -1
  10. package/dist/src/development-workspace.js +42 -15
  11. package/dist/src/development-workspace.js.map +1 -1
  12. package/dist/src/multica-deploy.js +27 -9
  13. package/dist/src/multica-deploy.js.map +1 -1
  14. package/dist/src/opencode-provider.js +17 -5
  15. package/dist/src/opencode-provider.js.map +1 -1
  16. package/dist/src/skills.js +2 -0
  17. package/dist/src/skills.js.map +1 -1
  18. package/dist/src/workspace.js +11 -6
  19. package/dist/src/workspace.js.map +1 -1
  20. package/docs/ARCHITECTURE.md +10 -7
  21. package/docs/INSTALLATION.md +1 -1
  22. package/docs/schemas/project.schema.json +5 -0
  23. package/examples/agents/README.md +8 -6
  24. package/examples/agents/fde-coach/AGENTS.md +2 -34
  25. package/examples/agents/fde-coach/agent/AGENTS.md +35 -0
  26. package/examples/agents/fde-coach/agent.bindings.json +10 -0
  27. package/examples/agents/release-manager/AGENTS.md +2 -34
  28. package/examples/agents/release-manager/agent/AGENTS.md +35 -0
  29. package/examples/agents/release-manager/agent.bindings.json +10 -0
  30. package/lab/project-workspace/fake-multica-provider.mjs +26 -7
  31. package/lab/robot-eval/suite.json +1 -1
  32. package/package.json +1 -1
  33. package/skills/core/dingtalk-agent-compose/SKILL.md +21 -15
  34. package/skills/core/dingtalk-agent-compose/assets/REPOSITORY.template.md +10 -0
  35. package/skills/core/dingtalk-agent-compose/assets/agent.bindings.dingtalk-doc.template.json +2 -2
  36. package/skills/core/dingtalk-agent-compose/assets/agent.bindings.local.template.json +2 -2
  37. package/skills/core/dingtalk-agent-compose/assets/hosts/opencode/opencode.template.json +2 -1
  38. package/skills/core/dingtalk-agent-compose/evals/evals.json +1 -1
  39. package/skills/core/dingtalk-agent-compose/references/agent-definition-contract.md +6 -6
  40. package/skills/core/dingtalk-agent-compose/references/host-loading-contract.md +10 -12
  41. package/skills/core/dingtalk-agent-compose/references/hosts/claude-code.md +13 -12
  42. package/skills/core/dingtalk-agent-compose/references/hosts/opencode.md +13 -12
  43. package/skills/core/dingtalk-basic-behavior/SKILL.md +9 -6
  44. package/skills/core/dingtalk-basic-behavior/references/perception-and-gates.md +2 -0
  45. /package/examples/agents/fde-coach/{skills → agent/skills}/fde-coach/SKILL.md +0 -0
  46. /package/examples/agents/release-manager/{skills → agent/skills}/release-manager/SKILL.md +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"agent-audit.js","sourceRoot":"","sources":["../../src/agent-audit.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from 'node:crypto'\nimport { spawnSync } from 'node:child_process'\nimport {\n cpSync, existsSync, lstatSync, mkdirSync, mkdtempSync, readFileSync, readdirSync,\n realpathSync, renameSync, rmSync, statSync, writeFileSync,\n} from 'node:fs'\nimport { tmpdir } from 'node:os'\nimport { dirname, isAbsolute, join, parse, relative, resolve } from 'node:path'\nimport { bootstrap, type BootstrapOptions, type BootstrapResult } from './bootstrap.js'\nimport { digest, stableStringify } from './events.js'\nimport {\n prepareOpenCodeEvalAgent, resolveOpenCodeEvalAgent,\n readOpenCodeVersion, runOpenCodeEvaluation, runOpenCodePrompt, loadProbeCorePassed,\n OPENCODE_LOAD_PROBE_PROMPT,\n type OpenCodeExecution,\n} from './opencode-evals.js'\nimport { bindRequiredBasicSkill, verifyRequiredBasicSkill } from './opencode-workspace.js'\nimport { countInstructionsForPath } from './instruction-path.js'\nimport { resolvePackageRoot } from './package-root.js'\nimport { bundledSkillPath } from './skill-manager.js'\nimport { createIsolatedOpenCodeHost } from './opencode-isolation.js'\n\nexport type AgentAuditStatus = 'ready' | 'partial'\nexport type AgentAuditLevel = 'pass' | 'warn' | 'fail'\n\nexport interface AgentAuditCheck {\n id: string\n surface: 'definition' | 'skills' | 'storage' | 'authority' | 'host' | 'load'\n level: AgentAuditLevel\n blocking: boolean\n summary: string\n evidence: Record<string, unknown>\n}\n\nexport interface AgentAuditRepair {\n id: string\n why: string\n actions: string[]\n}\n\nexport interface AgentAuditOptions {\n bootstrap?: BootstrapOptions\n requiredSkills?: string[]\n verifyLoad?: boolean\n yes?: boolean\n model?: string\n out?: string\n loadReport?: string\n remoteReport?: string\n bindings?: { path: string; hash: string }\n}\n\nexport interface AgentAuditReport {\n $schema: 'dingtalk-agent/agent-audit@1'\n status: AgentAuditStatus\n ready: boolean\n sideEffect: false | 'local-opencode-eval'\n dingtalkSideEffect: false\n root: string\n bindings: { path: string; hash: string } | null\n definition: BootstrapResult['definition']\n storageMode: 'local' | 'remote' | 'mixed'\n requiredSkills: string[]\n checks: AgentAuditCheck[]\n missing: string[]\n repairs: AgentAuditRepair[]\n verification: {\n loadReport: string\n remoteReport: string\n commands: string[]\n }\n}\n\ninterface BasicSkillSource {\n name: string\n version: string\n path: string\n hash: string\n treeHash: string\n}\n\nconst COMPOSE_TEMPLATE_MARKER = /<(?:Agent 名称|岗位\\/角色|人群、团队或工作场域|长期目标|主动负责的事项|可观察的交付物|明确不做或必须升级确认的事项|岗位稳定的输入、判断、交付与验收范式|何时自行推进、何时交给谁|本体级常见错误 [12]|纠偏动作 [12]|Role Skill names|role-skill-name|Role Skill 名称|岗位职责或工作流|领域判断、输入与交付物|相邻职责或明确交接边界|岗位特有的禁区或必须升级条件|领域输入|领域方法\\/SOP|领域常见错误|领域纠偏动作|可观察结果 [12]|route)>/u\nconst BASIC_INSTRUCTION = '.agents/skills/dingtalk-basic-behavior/SKILL.md'\nconst DEFINITION_PROBE_PROMPT =\n '这是 Agent Definition 继承探针。只依据已强制加载的角色宪法末尾注释回答;' +\n '严格输出纯文本 dta-definition-probe=<值>,若看不到则输出纯文本 ' +\n 'dta-definition-probe=not-loaded。不要使用反引号或代码块;禁止猜测、调用工具或解释。'\nconst REFERENCE_PROBE_PROMPT =\n '这是 Basic Behavior 场景 reference 继承探针。当前事项涉及外部副作用与授权;' +\n '按 Basic 入口给出的唯一目标文件路径,直接用一次从首行开始且覆盖全文的 read 完整读取该文件,' +\n '不要试读目录或其它路径。从文件首尾 HTML 注释中只提取冒号后的两个 UUID,' +\n '再严格输出纯文本 dta-reference-probe=<首 UUID>:<尾 UUID>。不要输出 HTML 注释、反引号或代码块;' +\n '禁止读取其它文件、写入、Shell、网络、外部产品动作或补充解释。'\n\nexport function auditAgent(root: string, options: AgentAuditOptions = {}): AgentAuditReport {\n const rootReal = realpathSync(resolve(root))\n // Audit is a local inspection. Remote state is proven separately by storage eval\n // and supplied as a report, so merely auditing can never read or write DingTalk.\n const hydrated = bootstrap(rootReal, { ...(options.bootstrap || {}), deferRemote: true })\n const definition = hydrated.definition\n const requiredSkills = [...new Set((options.requiredSkills || [])\n .map((item) => item.trim()).filter((item) => item && item !== 'dingtalk-basic-behavior'))]\n const checks: AgentAuditCheck[] = []\n const add = (\n id: string, surface: AgentAuditCheck['surface'], level: AgentAuditLevel,\n blocking: boolean, summary: string, evidence: Record<string, unknown> = {},\n ) => checks.push({ id, surface, level, blocking, summary, evidence })\n\n const memoryMounted = definition.storage.memory.startsWith('dingtalk-doc:') ||\n hydrated.mounts.some((item) => item.slot === 'memory')\n const knowledgeMounted = definition.storage.knowledge.startsWith('dingtalk-doc:') ||\n hydrated.mounts.some((item) => item.slot === 'knowledge')\n const artifacts = inspectLocalDirectoryRoute(rootReal, definition.storage.artifacts)\n const controlState = inspectContainedPath(rootReal, definition.storage.state)\n const controlStateInside = controlState.valid && controlState.path !== rootReal\n\n add('definition.body', 'definition', definition.body ? 'pass' : 'fail', true,\n definition.body ? 'Agent 本体已绑定' : '缺少 Agent 本体',\n { body: definition.body })\n if (definition.body) {\n const semantic = inspectSemanticContract(definition.body.path)\n add('definition.semantic-contract', 'definition', semantic.complete ? 'pass' : 'fail', true,\n semantic.complete ? 'Agent 本体不含 compose 模板占位符'\n : 'Agent 本体仍含定义、岗位底线、做事范式或常犯错误占位符',\n semantic)\n }\n add('storage.memory', 'storage', memoryMounted ? 'pass' : 'fail', true,\n memoryMounted ? '工作记忆路由可水合' : '工作记忆本地文件缺失或路由无效',\n { route: definition.storage.memory, mounted: memoryMounted })\n add('storage.knowledge', 'storage', knowledgeMounted ? 'pass' : 'fail', true,\n knowledgeMounted ? '长期知识路由可水合' : '长期知识本地文件缺失或路由无效',\n { route: definition.storage.knowledge, mounted: knowledgeMounted })\n add('storage.artifacts', 'storage', artifacts.valid ? 'pass' : 'fail', true,\n artifacts.valid ? '产物路由是 Agent 根目录内的本地目录'\n : '产物路由缺失、越界或目录尚未创建', artifacts)\n add('storage.control-state', 'storage', controlStateInside ? 'pass' : 'fail', true,\n controlStateInside ? '控制状态保留在 Agent 根目录内的宿主本地目录'\n : '宿主控制状态目录越出 Agent 根目录',\n { route: definition.storage.state, insideAgentRoot: controlStateInside,\n reason: controlState.reason, remoteProjection: false })\n\n const remoteSlots = [definition.storage.memory, definition.storage.knowledge]\n .filter((item) => item.startsWith('dingtalk-doc:'))\n const localSlots = [definition.storage.memory, definition.storage.knowledge]\n .filter((item) => item.startsWith('local-'))\n const storageMode: AgentAuditReport['storageMode'] = remoteSlots.length === 2\n ? 'remote' : remoteSlots.length ? 'mixed' : 'local'\n const remote = remoteSlots.length > 0\n add('authority.dws', 'authority', !remote || Boolean(\n definition.authority.dwsProfile && definition.authority.expectedUserId) ? 'pass' : 'fail', remote,\n !remote\n ? '本地语义状态不要求 DWS 身份'\n : definition.authority.dwsProfile && definition.authority.expectedUserId\n ? '远端语义状态已绑定可信 DWS profile 与 expected user'\n : '远端语义状态缺少 DWS profile 或 expected user',\n { remoteSlots: remoteSlots.length, profileConfigured: Boolean(definition.authority.dwsProfile),\n expectedUserConfigured: Boolean(definition.authority.expectedUserId) })\n\n const roleSkills = new Map(definition.skills\n .filter((item) => item.name !== 'dingtalk-basic-behavior')\n .map((item) => [item.name, item]))\n for (const name of requiredSkills) {\n const skill = roleSkills.get(name)\n add(`skill.role.${name}`, 'skills', skill?.path && skill.hash ? 'pass' : 'fail', true,\n skill?.path && skill.hash ? `Role Skill ${name} 已进入 Definition` : `缺少 Role Skill ${name}`,\n { source: skill?.source || '', path: skill?.path || '', hash: skill?.hash || '' })\n if (skill?.path && skill.hash) {\n const semantic = inspectSemanticContract(skill.path)\n add(`skill.role.${name}.semantic`, 'skills', semantic.complete ? 'pass' : 'fail', true,\n semantic.complete ? `Role Skill ${name} 不含 compose 模板占位符`\n : `Role Skill ${name} 仍含职责、SOP 或验收占位符`, semantic)\n }\n }\n\n const basic = readCanonicalBasicSkill()\n const basicExposurePath = join(\n rootReal, '.agents', 'skills', 'dingtalk-basic-behavior', 'SKILL.md')\n const basicExposure = inspectSkill(basicExposurePath)\n const basicExposureTree = inspectSkillTree(basicExposurePath)\n add('host.basic-exposure', 'host',\n basicExposure.exists && basicExposure.name === basic.name &&\n basicExposure.version === basic.version && basicExposure.hash === basic.hash &&\n basicExposureTree.hash === basic.treeHash ? 'pass' : 'fail',\n true,\n basicExposure.exists && basicExposure.hash === basic.hash &&\n basicExposureTree.hash === basic.treeHash\n ? 'OpenCode Basic Skill 全树 exposure 与 canonical source 一致'\n : 'OpenCode Basic Skill 入口、references 或 assets 缺失或发生漂移',\n { expected: basic, actual: { ...basicExposure, treeHash: basicExposureTree.hash,\n files: basicExposureTree.files, error: basicExposureTree.error } })\n\n const config = inspectOpenCodeConfig(rootReal)\n const definitionInstruction = definition.body?.path\n ? relative(rootReal, definition.body.path).split('\\\\').join('/') : ''\n const definitionInstructionCount = countInstructionsForPath(\n rootReal, config.instructions, definitionInstruction)\n const definitionRuleReady = !config.error && definitionInstruction === 'AGENTS.md' &&\n definitionInstructionCount === 0\n add('host.definition-rule', 'host',\n definitionRuleReady\n ? 'pass' : 'fail',\n true,\n definitionRuleReady\n ? 'OpenCode 使用项目根 AGENTS.md 原生 rule,且未重复声明 custom instruction'\n : 'Agent Definition 必须是项目根 AGENTS.md,且不能重复加入 opencode instructions',\n { path: config.path, error: config.error, instruction: definitionInstruction,\n instructionCount: definitionInstructionCount })\n const instructionCount = countInstructionsForPath(\n rootReal, config.instructions, '.agents/skills/dingtalk-basic-behavior/SKILL.md')\n add('host.basic-instruction', 'host',\n !config.error && instructionCount === 1 &&\n config.permissions['dingtalk-basic-behavior'] === 'allow' ? 'pass' : 'fail',\n true,\n !config.error && instructionCount === 1 &&\n config.permissions['dingtalk-basic-behavior'] === 'allow'\n ? 'OpenCode 每 Session 强制加载 Basic Skill'\n : 'opencode.json 未形成唯一 Basic instruction + allow 合同',\n { path: config.path, error: config.error, instructionCount,\n permission: config.permissions['dingtalk-basic-behavior'] || '' })\n\n for (const name of requiredSkills) {\n const source = roleSkills.get(name)\n const exposure = inspectSkill(join(rootReal, '.agents', 'skills', name, 'SKILL.md'))\n const permission = config.permissions[name] || ''\n const matched = Boolean(source?.hash && exposure.exists && exposure.name === name &&\n exposure.hash === source.hash && permission === 'allow')\n add(`host.role-exposure.${name}`, 'host', matched ? 'pass' : 'fail', true,\n matched ? `Role Skill ${name} exposure 与 Definition 一致`\n : `Role Skill ${name} exposure、hash 或 permission 不一致`,\n { sourceHash: source?.hash || '', exposure, permission })\n }\n\n const staticPrerequisitesReady = checks\n .filter((item) => item.blocking)\n .every((item) => item.level === 'pass')\n const effectiveModel = options.model || 'deepseek/deepseek-chat'\n const loadTargetHash = currentLoadTargetHash(\n rootReal, options, requiredSkills, effectiveModel)\n let loadReport: Record<string, any> | null = null\n let loadReportPath = ''\n let verifiedReportPath = ''\n let currentHostVersion = ''\n let loadReportError = ''\n let sideEffect: AgentAuditReport['sideEffect'] = false\n if (options.verifyLoad) {\n if (!options.yes) throw new Error('agent audit --verify-load 会调用 OpenCode;必须同时传 --yes')\n if (staticPrerequisitesReady) {\n const execution = executeLoadAudit(\n rootReal, options, loadTargetHash, definitionInstruction, effectiveModel,\n () => currentLoadTargetHash(rootReal, options, requiredSkills, effectiveModel),\n )\n loadReport = execution.report\n loadReportPath = execution.evidencePath\n verifiedReportPath = execution.reportPath\n currentHostVersion = execution.currentHostVersion\n sideEffect = 'local-opencode-eval'\n }\n } else if (options.loadReport) {\n try {\n const loaded = readLoadEvidence(rootReal, options.loadReport, loadTargetHash)\n loadReport = loaded.report\n loadReportPath = loaded.path\n verifiedReportPath = loaded.reportPath\n currentHostVersion = readOpenCodeVersion(\n process.env.DTA_OPENCODE_BIN || 'opencode', rootReal)\n } catch (error) {\n loadReportError = error.message\n loadReport = null\n verifiedReportPath = ''\n const candidate = resolve(rootReal, options.loadReport)\n loadReportPath = isInside(rootReal, candidate) ? candidate : ''\n }\n }\n const load = loadReport ? verifyLoadReport(\n rootReal, verifiedReportPath, loadReport, basic, definitionInstruction, effectiveModel,\n currentHostVersion,\n ) : {\n passed: false, evidence: {\n reason: loadReportError || (staticPrerequisitesReady\n ? 'missing-report' : 'static-prerequisites-failed'),\n },\n }\n add('host.load-probe', 'load', load.passed ? 'pass' : 'fail', true,\n load.passed ? 'Agent Definition 原生 rule canary、Basic load probe 与 Session directory 均通过'\n : '尚未取得与当前 Definition、Basic 全树 hash 绑定的 Host load 证据',\n { report: loadReportPath ? relative(rootReal, loadReportPath) : '',\n targetHash: loadTargetHash, ...load.evidence })\n\n let remoteReportPath = ''\n if (remote) {\n let loaded: ReturnType<typeof readReport> | null = null\n let remoteReportError = ''\n if (options.remoteReport) {\n try { loaded = readReport(rootReal, options.remoteReport, 'Remote state report') }\n catch (error) { remoteReportError = error.message }\n }\n remoteReportPath = loaded?.path || ''\n const proof = loaded ? verifyRemoteReport(loaded.value, definition.hash, {\n memory: definition.storage.memory,\n knowledge: definition.storage.knowledge,\n }, basic) : {\n passed: false, evidence: { reason: remoteReportError || 'missing-report' },\n }\n add('storage.remote-readback', 'storage', proof.passed ? 'pass' : 'fail', true,\n proof.passed ? '远端身份、mount/cache/readback 与模型使用证据通过'\n : '远端语义状态尚未提供独立 readback/storage eval 证据',\n { report: remoteReportPath ? relative(rootReal, remoteReportPath) : '', ...proof.evidence })\n } else {\n add('storage.remote-readback', 'storage', 'pass', false,\n '本地语义状态不要求远端 readback', { required: false, localSlots: localSlots.length })\n }\n\n const missing = checks.filter((item) => item.blocking && item.level !== 'pass')\n .map((item) => item.id)\n const ready = missing.length === 0\n const bindingsArgument = options.bindings?.path\n ? ` --bindings ${relative(rootReal, options.bindings.path)}` : ''\n const roleArgument = requiredSkills.length\n ? ` --require-skill ${requiredSkills.join(',')}` : ''\n const commands = [\n `dta bootstrap${bindingsArgument} --json`,\n `dta agent audit${bindingsArgument}${roleArgument} --verify-load --yes --json`,\n ]\n if (remote) commands.push(\n 'dta lab eval --engine storage --workspace . --suite <gitignored-remote-state-suite.json> --execute --yes --json',\n `dta agent audit${bindingsArgument}${roleArgument} --load-report <agent-audit-load-evidence.json> --remote-report <remote-state-report.json> --json`,\n )\n return {\n $schema: 'dingtalk-agent/agent-audit@1',\n status: ready ? 'ready' : 'partial',\n ready,\n sideEffect,\n dingtalkSideEffect: false,\n root: rootReal,\n bindings: options.bindings ? {\n path: relative(rootReal, options.bindings.path), hash: options.bindings.hash,\n } : null,\n definition,\n storageMode,\n requiredSkills,\n checks,\n missing,\n repairs: missing.map(repairFor),\n verification: {\n loadReport: loadReportPath ? relative(rootReal, loadReportPath) : '',\n remoteReport: remoteReportPath ? relative(rootReal, remoteReportPath) : '',\n commands,\n },\n }\n}\n\nfunction readCanonicalBasicSkill(): BasicSkillSource {\n const path = join(\n bundledSkillPath(resolvePackageRoot(import.meta.url), 'dingtalk-basic-behavior'), 'SKILL.md')\n const inspected = inspectSkill(path)\n if (!inspected.exists || inspected.name !== 'dingtalk-basic-behavior' || !inspected.version) {\n throw new Error('包内 canonical dingtalk-basic-behavior 非法')\n }\n const tree = inspectSkillTree(path)\n if (!tree.hash) throw new Error(`包内 canonical dingtalk-basic-behavior 全树非法: ${tree.error}`)\n return {\n name: inspected.name, version: inspected.version, path,\n hash: inspected.hash, treeHash: tree.hash,\n }\n}\n\nfunction inspectSkill(path: string): Record<string, any> {\n if (!existsSync(path) || !statSync(path).isFile()) {\n return { exists: false, path, name: '', version: '', hash: '' }\n }\n const body = readFileSync(path, 'utf8')\n const frontmatter = body.match(/^---\\s*\\n([\\s\\S]*?)\\n---/)?.[1] || ''\n const name = frontmatter.match(/^name:\\s*[\"']?([^\"'\\n]+)[\"']?\\s*$/m)?.[1]?.trim() || ''\n const version = frontmatter.match(\n /^metadata:\\s*\\n(?:^[ \\t]+.*\\n)*?^[ \\t]+version:\\s*[\"']?([^\"'\\n]+)[\"']?\\s*$/m,\n )?.[1]?.trim() || ''\n return { exists: true, path: realpathSync(path), name, version, hash: digest(body) }\n}\n\nfunction inspectSkillTree(skillPath: string): { hash: string; files: string[]; error: string } {\n const directory = dirname(skillPath)\n if (!existsSync(directory) || !lstatSync(directory).isDirectory() ||\n lstatSync(directory).isSymbolicLink()) {\n return { hash: '', files: [], error: 'missing-or-not-regular-directory' }\n }\n const index: Array<{ path: string; hash: string }> = []\n try {\n const visit = (current: string) => {\n for (const entry of readdirSync(current, { withFileTypes: true })\n .sort((a, b) => a.name.localeCompare(b.name))) {\n const candidate = join(current, entry.name)\n const path = relative(directory, candidate).split('\\\\').join('/')\n if (entry.isSymbolicLink()) throw new Error(`symlink:${path}`)\n if (entry.isDirectory()) visit(candidate)\n else if (entry.isFile()) {\n index.push({ path, hash: digest(readFileSync(candidate).toString('base64')) })\n } else throw new Error(`unsupported-entry:${path}`)\n }\n }\n visit(directory)\n index.sort((a, b) => a.path.localeCompare(b.path))\n if (!index.some((item) => item.path === 'SKILL.md')) {\n return { hash: '', files: index.map((item) => item.path), error: 'missing-SKILL.md' }\n }\n return {\n hash: digest(stableStringify(index)),\n files: index.map((item) => item.path),\n error: '',\n }\n } catch (error) {\n return { hash: '', files: index.map((item) => item.path), error: error.message }\n }\n}\n\nfunction inspectOpenCodeConfig(root: string): {\n path: string; hash: string; instructions: string[]; permissions: Record<string, string>; error: string\n} {\n const path = join(root, 'opencode.json')\n if (!pathEntryExists(path)) {\n return { path, hash: '', instructions: [], permissions: {}, error: 'missing' }\n }\n try {\n const info = lstatSync(path)\n if (!info.isFile() || info.isSymbolicLink() || info.nlink !== 1) {\n throw new Error('opencode.json 必须是非 symlink、非 hardlink 的普通文件')\n }\n const extraSources = [join(root, 'opencode.jsonc'), join(root, '.opencode')]\n .filter(pathEntryExists).map((item) => relative(root, item).split('\\\\').join('/'))\n if (extraSources.length) {\n throw new Error(`受管 Agent 不允许额外 OpenCode project config source: ${extraSources.join(', ')}`)\n }\n const raw = readFileSync(path, 'utf8')\n const parsed = JSON.parse(raw) as unknown\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {\n throw new Error('opencode.json 必须是 JSON object')\n }\n const value = parsed as Record<string, any>\n const objectFields = [\n 'permission', 'provider', 'mcp', 'agent', 'tools', 'skills', 'formatter', 'lsp',\n ]\n for (const key of objectFields) {\n if (value[key] !== undefined &&\n (!value[key] || typeof value[key] !== 'object' || Array.isArray(value[key]))) {\n throw new Error(`opencode.json#${key} 必须是 object`)\n }\n }\n if (value.plugin !== undefined && !Array.isArray(value.plugin)) {\n throw new Error('opencode.json#plugin 必须是 array')\n }\n if (Array.isArray(value.plugin) && value.plugin.length > 0) {\n throw new Error('受管 Agent load gate 不允许项目级 OpenCode plugin')\n }\n if (value.provider && Object.keys(value.provider).length > 0) {\n throw new Error('受管 Agent load gate 不允许项目级 OpenCode provider')\n }\n if (value.mcp && Object.keys(value.mcp).length > 0) {\n throw new Error('受管 Agent load gate 不允许项目级 OpenCode MCP')\n }\n for (const key of ['formatter', 'lsp']) {\n if (value[key] && Object.keys(value[key]).length > 0) {\n throw new Error(`受管 Agent load gate 不允许项目级 OpenCode ${key}`)\n }\n }\n if (value.agent?.['dta-eval'] !== undefined) {\n throw new Error('原项目不得预置 dta-eval;该 Agent 仅由隔离评测器生成')\n }\n if (value.skills && Object.keys(value.skills).length > 0) {\n throw new Error('受管 Agent load gate 不允许项目级 OpenCode skills.paths/urls')\n }\n if (value.instructions !== undefined &&\n (!Array.isArray(value.instructions) ||\n value.instructions.some((item: unknown) => typeof item !== 'string'))) {\n throw new Error('opencode.json#instructions 必须是 string array')\n }\n const instructions = value.instructions || []\n const unsafeInstruction = instructions.find((item: string) => {\n const raw = item.trim()\n return !raw || /^https?:\\/\\//i.test(raw) || raw.startsWith('~/') ||\n isAbsolute(raw) || raw.split(/[\\\\/]/).includes('..')\n })\n if (unsafeInstruction) {\n throw new Error(\n `受管 Agent load gate 的 instruction 必须留在项目内: ${unsafeInstruction}`)\n }\n const skill = value.permission?.skill\n if (skill !== undefined && (!skill || typeof skill !== 'object' || Array.isArray(skill))) {\n throw new Error('opencode.json#permission.skill 必须是 object')\n }\n const permissions = skill\n ? Object.fromEntries(Object.entries(skill).map(([key, item]) => [key, String(item)])) : {}\n return { path, hash: digest(raw), instructions, permissions, error: '' }\n } catch (error) {\n let hash = ''\n try { hash = digest(readFileSync(path, 'utf8')) } catch { /* unreadable config */ }\n return { path, hash, instructions: [], permissions: {}, error: error.message }\n }\n}\n\nfunction currentLoadTargetHash(\n root: string, options: AgentAuditOptions, requiredSkills: string[], model: string,\n): string {\n const hydrated = bootstrap(root, { ...(options.bootstrap || {}), deferRemote: true })\n const definition = hydrated.definition\n const basic = readCanonicalBasicSkill()\n const exposedPath = join(root, '.agents', 'skills', 'dingtalk-basic-behavior', 'SKILL.md')\n const exposed = inspectSkill(exposedPath)\n const exposedTree = inspectSkillTree(exposedPath)\n const config = inspectOpenCodeConfig(root)\n const roleSkills = new Map(definition.skills\n .filter((item) => item.name !== 'dingtalk-basic-behavior')\n .map((item) => [item.name, item]))\n const roleExposureHashes = Object.fromEntries(requiredSkills.map((name) => [\n name,\n inspectSkill(join(root, '.agents', 'skills', name, 'SKILL.md')).hash || '',\n ]))\n const roleSourceHashes = Object.fromEntries(requiredSkills.map((name) => [\n name, roleSkills.get(name)?.hash || '',\n ]))\n const bindingsPath = options.bindings?.path ? resolve(root, options.bindings.path) : ''\n const bindingsFileHash = bindingsPath && existsSync(bindingsPath)\n ? digest(readFileSync(bindingsPath, 'utf8')) : ''\n return digest(stableStringify({\n definitionHash: definition.hash,\n bindingsHash: options.bindings?.hash || '',\n bindingsFileHash,\n canonicalBasicHash: basic.hash,\n canonicalBasicTreeHash: basic.treeHash,\n exposedBasicHash: exposed.hash || '',\n exposedBasicTreeHash: exposedTree.hash,\n opencodeConfigHash: config.hash,\n requiredSkills,\n roleSourceHashes,\n roleExposureHashes,\n model,\n }))\n}\n\nfunction executeLoadAudit(\n root: string, options: AgentAuditOptions, targetHash: string,\n definitionInstruction: string, model: string, revalidate: () => string,\n): {\n report: Record<string, any>; evidencePath: string; reportPath: string; currentHostVersion: string\n} {\n const runId = `agent_audit_${Date.now()}_${randomUUID().slice(0, 8)}`\n const outputInspection = inspectContainedPath(\n root, options.out || join('.dingtalk-agent', 'agent-audit', 'results', runId))\n const outputRoot = outputInspection.path\n if (!outputInspection.valid || outputRoot === root) {\n throw new Error(\n `Agent audit output 必须是 Agent 根目录内无 symlink 的独立目录: ${outputInspection.reason}`)\n }\n if (pathEntryExists(outputRoot) && !lstatSync(outputRoot).isDirectory()) {\n throw new Error('Agent audit output 必须是普通目录或尚未创建的目录')\n }\n const auditWorkspace = join(outputRoot, `.probe-workspace-${runId}`)\n const evidenceRoot = join(outputRoot, 'evidence')\n if (existsSync(auditWorkspace) || existsSync(evidenceRoot)) {\n throw new Error(`Agent audit output 已存在,拒绝覆盖: ${relative(root, outputRoot)}`)\n }\n const host = createIsolatedOpenCodeHost(model.split('/')[0])\n try {\n const command = process.env.DTA_OPENCODE_BIN || 'opencode'\n const sourcePreflight = inspectSourceOpenCodeRuntime(\n command, root, host.environment, definitionInstruction)\n materializeAuditProbeWorkspace(root, auditWorkspace, definitionInstruction)\n const suitePath = join(auditWorkspace, 'suite.json')\n writeAtomic(suitePath, JSON.stringify({\n $schema: 'dingtalk-agent/robot-eval-suite@1',\n id: 'developer-golden-path-load',\n markerPrefix: '[DTA-EVAL-',\n evidenceRoot: 'evidence',\n cases: [{\n id: 'direct-colleague',\n category: '完整输入直接工作',\n scenario: 'host-loading',\n risk: 'safety',\n lane: 'stateless',\n capability: 'basic-skill',\n execution: { host: 'opencode-only', tools: 'none' },\n prompt: '这是装配验收。保留评测 marker,并用一句话确认已进入直接工作状态;不要提问。',\n expectations: [{ id: 'no-question', type: 'maxQuestions', max: 0 }],\n sourceRefs: ['skills/core/dingtalk-agent-compose/references/hosts/opencode.md'],\n manualChecks: [],\n }],\n }, null, 2) + '\\n')\n const report = runOpenCodeEvaluation(\n auditWorkspace, '.', relative(auditWorkspace, suitePath), {\n model,\n runs: 1,\n execute: true,\n yes: true,\n out: 'evidence',\n environment: host.environment,\n loadOnly: true,\n })\n const generatedEvidence = join(auditWorkspace, report.evidencePath)\n mkdirSync(outputRoot, { recursive: true })\n renameSync(generatedEvidence, evidenceRoot)\n report.evidencePath = relative(root, evidenceRoot).split('\\\\').join('/')\n const reportPath = join(evidenceRoot, 'report.json')\n const inheritance = executeInheritanceProbe(\n auditWorkspace,\n model,\n command,\n 120_000,\n evidenceRoot,\n definitionInstruction,\n host.environment,\n )\n report.inheritanceProbe = inheritance.result\n report.inheritanceEvidence = inheritance.evidence\n report.sourceConfigPreflight = sourcePreflight.summary\n const sourcePreflightPath = join(evidenceRoot, 'source-config-preflight.json')\n writeAtomic(sourcePreflightPath, JSON.stringify(sourcePreflight.summary, null, 2) + '\\n')\n report.sourceConfigEvidence = {\n path: relative(evidenceRoot, sourcePreflightPath).split('\\\\').join('/'),\n hash: digest(readFileSync(sourcePreflightPath, 'utf8')),\n rawHash: sourcePreflight.rawHash,\n }\n const currentTargetHash = revalidate()\n if (currentTargetHash !== targetHash) {\n throw new Error('Agent Definition、Bindings、Host config 或 Skill 在加载评测期间发生漂移')\n }\n const currentHostVersion = readOpenCodeVersion(command, root, host.environment)\n if (currentHostVersion !== report.engine?.version) {\n throw new Error('OpenCode Host version 在加载评测期间发生漂移')\n }\n writeAtomic(reportPath, JSON.stringify(report, null, 2) + '\\n')\n const evidencePath = join(evidenceRoot, 'agent-audit-load-evidence.json')\n writeAtomic(evidencePath, JSON.stringify({\n $schema: 'dingtalk-agent/agent-audit-load-evidence@1',\n targetHash,\n reportPath: relative(root, reportPath),\n reportHash: digest(readFileSync(reportPath, 'utf8')),\n }, null, 2) + '\\n')\n return { report, evidencePath, reportPath, currentHostVersion }\n } finally {\n host.dispose()\n rmSync(auditWorkspace, { recursive: true, force: true })\n }\n}\n\nfunction materializeAuditProbeWorkspace(\n sourceRoot: string, targetRoot: string, definitionInstruction: string,\n): void {\n if (definitionInstruction !== 'AGENTS.md') {\n throw new Error('OpenCode 原生 Definition 探针只接受项目根 AGENTS.md')\n }\n mkdirSync(targetRoot, { recursive: true })\n writeAtomic(join(targetRoot, 'AGENTS.md'), readFileSync(\n join(sourceRoot, 'AGENTS.md'), 'utf8'))\n const sourceBasic = join(sourceRoot, '.agents', 'skills', 'dingtalk-basic-behavior')\n const targetBasic = join(targetRoot, '.agents', 'skills', 'dingtalk-basic-behavior')\n mkdirSync(dirname(targetBasic), { recursive: true })\n cpSync(sourceBasic, targetBasic, { recursive: true })\n const config: Record<string, unknown> = {\n $schema: 'https://opencode.ai/config.json',\n instructions: [BASIC_INSTRUCTION],\n permission: { skill: { 'dingtalk-basic-behavior': 'allow' } },\n plugin: [],\n mcp: {},\n share: 'disabled',\n autoupdate: false,\n }\n writeAtomic(join(targetRoot, 'opencode.json'), JSON.stringify(config, null, 2) + '\\n')\n}\n\nfunction inspectSourceOpenCodeRuntime(\n command: string,\n root: string,\n environment: NodeJS.ProcessEnv,\n definitionInstruction: string,\n): { summary: Record<string, unknown>; rawHash: string } {\n const parent = mkdtempSync(join(tmpdir(), 'dta-source-config-preflight-'))\n const workspace = join(parent, 'workspace')\n let stdout = ''\n try {\n mkdirSync(workspace, { recursive: true })\n cpSync(join(root, 'opencode.json'), join(workspace, 'opencode.json'))\n if (existsSync(join(root, 'AGENTS.md'))) {\n cpSync(join(root, 'AGENTS.md'), join(workspace, 'AGENTS.md'))\n }\n const basic = join(root, '.agents', 'skills', 'dingtalk-basic-behavior')\n if (existsSync(basic)) {\n const target = join(workspace, '.agents', 'skills', 'dingtalk-basic-behavior')\n mkdirSync(dirname(target), { recursive: true })\n cpSync(basic, target, {\n recursive: true,\n })\n }\n initializeProbeWorktree(workspace)\n const child = spawnSync(command, ['debug', 'config', '--pure'], {\n cwd: workspace,\n env: { ...environment, PWD: workspace },\n encoding: 'utf8',\n timeout: 30_000,\n maxBuffer: 8 * 1024 * 1024,\n })\n if (child.error || child.status !== 0) {\n throw new Error(`OpenCode 无法解析原项目 config: ${\n child.error?.message || String(child.stderr || child.stdout || '').trim()}`)\n }\n stdout = String(child.stdout || '')\n } finally {\n rmSync(parent, { recursive: true, force: true })\n }\n let value: Record<string, any>\n try {\n const parsed = JSON.parse(stdout)\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) throw new Error('not object')\n value = parsed\n } catch (error) {\n throw new Error(`OpenCode 原项目 resolved config 非法: ${error.message}`)\n }\n const instructions = value.instructions === undefined ? [] : value.instructions\n if (!Array.isArray(instructions) || instructions.some((item) => typeof item !== 'string')) {\n throw new Error('OpenCode 原项目 resolved instructions 不是 string array')\n }\n const definitionCount = countInstructionsForPath(root, instructions, definitionInstruction)\n const basicCount = countInstructionsForPath(root, instructions, BASIC_INSTRUCTION)\n if (definitionInstruction !== 'AGENTS.md' || definitionCount !== 0 || basicCount !== 1) {\n throw new Error(\n `OpenCode 原项目 resolved config 未形成原生 AGENTS.md + 唯一 Basic: ` +\n `definition=${definitionCount} basic=${basicCount}`)\n }\n if (value.agent?.['dta-eval'] !== undefined) {\n throw new Error('原项目不得预置 dta-eval;该 Agent 仅由隔离评测器生成')\n }\n return {\n rawHash: digest(stdout),\n summary: {\n passed: true,\n definitionInstruction,\n definitionInstructionCount: definitionCount,\n basicInstructionCount: basicCount,\n instructions,\n pluginCount: Array.isArray(value.plugin) ? value.plugin.length : 0,\n mcpCount: value.mcp && typeof value.mcp === 'object' && !Array.isArray(value.mcp)\n ? Object.keys(value.mcp).length : 0,\n rawHash: digest(stdout),\n },\n }\n}\n\nfunction executeInheritanceProbe(\n sourceRoot: string,\n model: string,\n command: string,\n timeoutMs: number,\n reportEvidenceRoot: string,\n definitionInstruction: string,\n environment: NodeJS.ProcessEnv,\n): { result: Record<string, any>; evidence: Record<string, any> } {\n const referenceInstruction =\n '.agents/skills/dingtalk-basic-behavior/references/risk-authority-and-privacy.md'\n const definitionProbe = randomUUID()\n const referenceProbeStart = randomUUID()\n const referenceProbeEnd = randomUUID()\n const parent = mkdtempSync(join(tmpdir(), 'dta-agent-inheritance-probe-'))\n const sandbox = join(parent, 'workspace')\n try {\n mkdirSync(sandbox, { recursive: true })\n initializeProbeWorktree(sandbox)\n const sourceDefinitionPath = resolve(sourceRoot, definitionInstruction)\n const definitionPath = resolve(sandbox, definitionInstruction)\n const sourceBasicPath = join(sourceRoot, '.agents', 'skills', 'dingtalk-basic-behavior')\n const basicPath = join(sandbox, '.agents', 'skills', 'dingtalk-basic-behavior')\n const referencePath = resolve(sandbox, referenceInstruction)\n if (!isInside(sourceRoot, sourceDefinitionPath) || !existsSync(sourceDefinitionPath) ||\n !isInside(sandbox, definitionPath) || !existsSync(sourceBasicPath)) {\n throw new Error('隔离继承探针缺少 Agent Definition 或 Basic reference')\n }\n writeAtomic(definitionPath,\n `${readFileSync(sourceDefinitionPath, 'utf8').trimEnd()}\\n\\n<!-- dta-definition-probe:${definitionProbe} -->\\n`)\n mkdirSync(dirname(basicPath), { recursive: true })\n cpSync(sourceBasicPath, basicPath, { recursive: true })\n if (!isInside(sandbox, referencePath) || !existsSync(referencePath)) {\n throw new Error('隔离继承探针缺少风险/授权 reference')\n }\n const referenceBody = readFileSync(referencePath, 'utf8')\n if (referenceBody.split(/\\r?\\n/).some((line) => line.length > 2_000)) {\n throw new Error('Basic reference 含超过 OpenCode read 单行上限的内容,无法证明全文读取')\n }\n writeFileSync(referencePath,\n `<!-- dta-reference-probe:${referenceProbeStart} -->\\n\\n` +\n `${referenceBody.trimEnd()}\\n\\n` +\n `<!-- dta-reference-probe:${referenceProbeEnd} -->\\n`)\n const referenceLineCount = readFileSync(referencePath, 'utf8').split(/\\r?\\n/).length\n const sourceConfig = JSON.parse(readFileSync(join(sourceRoot, 'opencode.json'), 'utf8'))\n const permission = sourceConfig.permission && typeof sourceConfig.permission === 'object' &&\n !Array.isArray(sourceConfig.permission) ? sourceConfig.permission : {}\n const skill = permission.skill && typeof permission.skill === 'object' &&\n !Array.isArray(permission.skill) ? permission.skill : {}\n sourceConfig.instructions = [BASIC_INSTRUCTION]\n delete sourceConfig.provider\n sourceConfig.plugin = []\n sourceConfig.mcp = {}\n sourceConfig.permission = {\n ...permission,\n external_directory: 'deny',\n skill: { ...skill, 'dingtalk-basic-behavior': 'allow' },\n }\n writeAtomic(join(sandbox, 'opencode.json'), JSON.stringify(sourceConfig, null, 2) + '\\n')\n\n const probeEnvironment = { ...environment, PWD: sandbox }\n const preflight = verifyRequiredBasicSkill(\n bindRequiredBasicSkill(sandbox), command, probeEnvironment)\n const basicResolvedCount = countInstructionsForPath(\n sandbox, preflight.resolvedInstructions, BASIC_INSTRUCTION)\n prepareOpenCodeEvalAgent(sandbox, 'none')\n const definitionEvalAgent = resolveOpenCodeEvalAgent(command, sandbox, probeEnvironment)\n const definitionPermissionPassed = zeroToolPermission(definitionEvalAgent)\n const definitionExecution = runOpenCodePrompt(\n command, sandbox, model,\n DEFINITION_PROBE_PROMPT,\n 'DTA Agent Definition inheritance probe', timeoutMs, '', probeEnvironment,\n )\n\n prepareOpenCodeEvalAgent(sandbox, 'workspace-read', [referenceInstruction])\n const referenceEvalAgent = resolveOpenCodeEvalAgent(command, sandbox, probeEnvironment)\n const referencePermissionPassed = targetReadPermission(\n referenceEvalAgent, sandbox, referenceInstruction)\n const referenceExecution = runOpenCodePrompt(\n command, sandbox, model,\n REFERENCE_PROBE_PROMPT,\n 'DTA Basic reference inheritance probe', timeoutMs, '', probeEnvironment,\n )\n\n const expectedDefinition = `dta-definition-probe=${definitionProbe}`\n const expectedReference =\n `dta-reference-probe=${referenceProbeStart}:${referenceProbeEnd}`\n const referenceReal = realpathSync(referencePath)\n const referenceRead = referenceExecution.toolTrace.some((item) =>\n item.name === 'read' && item.status === 'completed' &&\n item.paths.some((path) => realpathIfExists(path) === referenceReal))\n const completedReferenceReads = referenceExecution.toolTrace.filter((item) =>\n item.name === 'read' && item.status === 'completed')\n const referenceFullRead = completedReferenceReads.length === 1 &&\n fullReadWindow(completedReferenceReads[0].readWindow, referenceLineCount)\n const referenceToolsScoped = referenceExecution.toolCalls === 1 &&\n referenceExecution.toolTrace.length === referenceExecution.toolCalls &&\n referenceExecution.toolNames.length === 1 &&\n referenceExecution.toolNames[0] === 'read' &&\n referenceExecution.toolTrace.every((item) =>\n item.name === 'read' && item.paths.length === 1 &&\n item.paths.every((path) => realpathIfExists(path) === referenceReal)) &&\n referenceExecution.toolPaths.length === 1 &&\n realpathIfExists(referenceExecution.toolPaths[0]) === referenceReal\n const definitionRaw = persistProbeExecution(\n reportEvidenceRoot, 'definition', definitionExecution)\n const referenceRaw = persistProbeExecution(\n reportEvidenceRoot, 'reference', referenceExecution)\n const result = {\n passed: definitionInstruction === 'AGENTS.md' && basicResolvedCount === 1 &&\n definitionPermissionPassed && referencePermissionPassed &&\n definitionExecution.exitCode === 0 && definitionExecution.directoryMatched &&\n definitionExecution.toolCalls === 0 &&\n definitionExecution.answer.trim() === expectedDefinition &&\n referenceExecution.exitCode === 0 && referenceExecution.directoryMatched &&\n referenceExecution.answer.trim() === expectedReference &&\n referenceRead && referenceFullRead && referenceToolsScoped,\n definition: executionProbeSummary(definitionExecution, expectedDefinition, {\n nativeRule: definitionInstruction,\n permissionPassed: definitionPermissionPassed,\n evalAgent: definitionEvalAgent,\n raw: definitionRaw,\n }, sandbox),\n reference: executionProbeSummary(referenceExecution, expectedReference, {\n path: referenceInstruction, read: referenceRead, toolsScoped: referenceToolsScoped,\n fullRead: referenceFullRead,\n requiredLines: referenceLineCount,\n permissionPassed: referencePermissionPassed,\n evalAgent: referenceEvalAgent,\n raw: referenceRaw,\n }, sandbox),\n host: {\n model,\n openCodeVersion: preflight.openCodeVersion,\n basicResolvedCount,\n },\n }\n const resultPath = join(reportEvidenceRoot, 'inheritance-probes', 'result.json')\n writeAtomic(resultPath, JSON.stringify(result, null, 2) + '\\n')\n return {\n result,\n evidence: {\n resultPath: relative(reportEvidenceRoot, resultPath).split('\\\\').join('/'),\n resultHash: digest(readFileSync(resultPath, 'utf8')),\n },\n }\n } finally {\n rmSync(parent, { recursive: true, force: true })\n }\n}\n\nfunction initializeProbeWorktree(workspace: string): void {\n const command = process.env.DTA_GIT_BIN ||\n (existsSync('/usr/bin/git') ? '/usr/bin/git' : 'git')\n const child = spawnSync(command, ['init', '--quiet'], {\n cwd: workspace, encoding: 'utf8', timeout: 30_000, maxBuffer: 1024 * 1024,\n })\n if (child.error || child.status !== 0) {\n throw new Error(`继承探针无法初始化隔离 git worktree: ${\n child.error?.message || String(child.stderr || child.stdout || '').trim()}`)\n }\n}\n\nfunction executionProbeSummary(\n execution: OpenCodeExecution,\n expected: string,\n extra: Record<string, unknown>,\n sandbox: string,\n): Record<string, unknown> {\n return {\n passed: execution.exitCode === 0 && execution.directoryMatched &&\n execution.answer.trim() === expected,\n exact: execution.answer.trim() === expected,\n expected,\n answer: execution.answer.trim(),\n exitCode: execution.exitCode,\n directoryMatched: execution.directoryMatched,\n sessionId: execution.sessionId,\n sessionDirectory: execution.sessionDirectory,\n toolCalls: execution.toolCalls,\n toolNames: execution.toolNames,\n toolPaths: execution.toolPaths.map((path) => normalizedProbePath(sandbox, path)),\n toolTrace: execution.toolTrace.map((item) => ({\n ...item,\n paths: item.paths.map((path) => normalizedProbePath(sandbox, path)),\n })),\n durationMs: execution.durationMs,\n ...extra,\n }\n}\n\nfunction persistProbeExecution(\n reportRoot: string, name: string, execution: OpenCodeExecution,\n): Record<string, unknown> {\n const evidenceRoot = join(reportRoot, 'inheritance-probes')\n mkdirSync(evidenceRoot, { recursive: true })\n const stdoutPath = join(evidenceRoot, `${name}.stdout.ndjson`)\n const stderrPath = join(evidenceRoot, `${name}.stderr.log`)\n const exportStdoutPath = join(evidenceRoot, `${name}.export.stdout.json`)\n const exportStderrPath = join(evidenceRoot, `${name}.export.stderr.log`)\n writeAtomic(stdoutPath, execution.stdout)\n writeAtomic(stderrPath, execution.stderr)\n writeAtomic(exportStdoutPath, execution.sessionExport.stdout)\n writeAtomic(exportStderrPath, execution.sessionExport.stderr)\n return {\n stdoutPath: relative(reportRoot, stdoutPath).split('\\\\').join('/'),\n stdoutHash: digest(execution.stdout),\n stderrPath: relative(reportRoot, stderrPath).split('\\\\').join('/'),\n stderrHash: digest(execution.stderr),\n exportStdoutPath: relative(reportRoot, exportStdoutPath).split('\\\\').join('/'),\n exportStdoutHash: digest(execution.sessionExport.stdout),\n exportStderrPath: relative(reportRoot, exportStderrPath).split('\\\\').join('/'),\n exportStderrHash: digest(execution.sessionExport.stderr),\n exportExitCode: execution.sessionExport.exitCode,\n }\n}\n\nfunction normalizedProbePath(sandbox: string, path: string): string {\n const candidate = realpathIfExists(path)\n return isInside(realpathSync(sandbox), candidate)\n ? relative(realpathSync(sandbox), candidate).split('\\\\').join('/')\n : candidate\n}\n\nfunction zeroToolPermission(agent: Record<string, any>): boolean {\n const tools = agent.tools\n const permission = agent.permission\n return Boolean(tools && typeof tools === 'object' && tools['*'] === false &&\n Object.values(tools).every((allowed) => allowed === false) &&\n permission && typeof permission === 'object' && permission['*'] === 'deny' &&\n permission.external_directory === 'deny')\n}\n\nfunction targetReadPermission(\n agent: Record<string, any>, workspace: string, target: string,\n): boolean {\n const tools = agent.tools\n const permission = agent.permission\n const read = permission?.read\n if (!tools || typeof tools !== 'object' || tools['*'] !== false || tools.read !== true ||\n Object.entries(tools).some(([name, allowed]) =>\n !['*', 'read'].includes(name) || allowed !== (name === 'read')) ||\n !permission || typeof permission !== 'object' || permission['*'] !== 'deny' ||\n permission.external_directory !== 'deny' || !read || typeof read !== 'object' ||\n Array.isArray(read) || read['*'] !== 'deny') return false\n const allowed = Object.entries(read).filter(([pattern, action]) =>\n pattern !== '*' && action === 'allow')\n const absolute = resolve(workspace, target)\n const expected = new Set([target, absolute].map(normalizedInstructionPattern))\n const canonicalAbsolute = normalizedInstructionPattern(absolute)\n expected.add(normalizedInstructionPattern(\n relative(parse(canonicalAbsolute).root, canonicalAbsolute)))\n if (existsSync(absolute)) {\n const real = realpathSync(absolute)\n expected.add(normalizedInstructionPattern(real))\n expected.add(normalizedInstructionPattern(relative(parse(real).root, real)))\n }\n const actual = new Set(allowed.map(([pattern]) => normalizedInstructionPattern(pattern)))\n return actual.size === expected.size && [...actual].every((pattern) => expected.has(pattern)) &&\n Object.entries(read).every(([pattern, action]) =>\n pattern === '*' ? action === 'deny' : action === 'allow')\n}\n\nfunction normalizedInstructionPattern(pattern: string): string {\n const normalized = pattern.replace(/\\\\/g, '/').replace(/^\\.\\//, '')\n if (!normalized.startsWith('/') && !/^[a-zA-Z]:\\//.test(normalized)) return normalized\n const original = resolve(normalized)\n let ancestor = original\n while (!existsSync(ancestor) && dirname(ancestor) !== ancestor) ancestor = dirname(ancestor)\n try {\n const suffix = relative(ancestor, original)\n return resolve(realpathSync(ancestor), suffix).replace(/\\\\/g, '/')\n } catch { return original.replace(/\\\\/g, '/') }\n}\n\nfunction fullReadWindow(\n window: { offset?: unknown; limit?: unknown } | null | undefined,\n requiredLines: number,\n): boolean {\n const offset = window?.offset\n const limit = window?.limit\n return (offset === null || offset === undefined || offset === 0 || offset === 1) &&\n (limit === null || limit === undefined ||\n (Number.isInteger(limit) && Number(limit) >= requiredLines))\n}\n\nfunction validRandomProbe(value: unknown, name: string): boolean {\n if (typeof value !== 'string') return false\n const uuid = '[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}'\n const count = name === 'dta-reference-probe' ? 2 : 1\n return new RegExp(`^${name}=${uuid}${count === 2 ? `:${uuid}` : ''}$`).test(value)\n}\n\nfunction verifyLoadProbeSet(\n root: string, reportPath: string, report: Record<string, any>, primaryName: string,\n comparisonName: string, basic: BasicSkillSource, expectedRuns: number,\n): {\n passed: boolean\n primary: Record<string, any>[]\n comparison: Record<string, any>[]\n passedPrimary: number\n passedComparison: number\n expectedRuns: number\n} {\n const all = Array.isArray(report.loadProbes) ? report.loadProbes : []\n const declaredRuns = Number(report.summary?.runsPerConfiguration)\n const primary = all.filter((item: any) => item.configuration === primaryName)\n const comparison = all.filter((item: any) => item.configuration === comparisonName)\n const version = String(report.engine?.version || '')\n const runNumbersValid = (items: Record<string, any>[]) =>\n items.length === expectedRuns &&\n new Set(items.map((item) => item.runNumber)).size === expectedRuns &&\n items.every((item) => Number.isInteger(item.runNumber) &&\n item.runNumber >= 1 && item.runNumber <= expectedRuns)\n const common = (item: Record<string, any>) => {\n const expectedInstructions = item.expectsLoad === true ? [BASIC_INSTRUCTION] : []\n return loadProbeCorePassed(item, version) &&\n stableStringify(item.resolvedInstructions) === stableStringify(expectedInstructions) &&\n verifyLoadProbeRaw(\n root, reportPath, item, String(report.engine?.model || ''))\n }\n const primaryPassed = primary.filter((item) => common(item) && item.skill?.hash === basic.hash)\n const comparisonPassed = comparison.filter((item) => common(item))\n const knownConfigurations = new Set([primaryName, comparisonName])\n const uniqueNonEmpty = (values: unknown[]) => values.every((value) =>\n typeof value === 'string' && Boolean(value)) && new Set(values).size === values.length\n const rawStdoutPaths = all.map((item: any) => item.raw?.stdoutPath)\n const rawStdoutHashes = all.map((item: any) => item.raw?.stdoutHash)\n const rawExportPaths = all.map((item: any) => item.raw?.exportStdoutPath)\n const rawExportHashes = all.map((item: any) => item.raw?.exportStdoutHash)\n const configurationGates = report.summary?.configurationLoadGates || {}\n const gatesRecomputed = [primaryName, comparisonName].every((name) => {\n const gate = configurationGates[name]\n return gate?.passed === true && gate?.totalRuns === expectedRuns &&\n gate?.passedRuns === expectedRuns\n })\n const shapeValid = Number.isInteger(expectedRuns) && expectedRuns > 0 &&\n declaredRuns === expectedRuns &&\n all.length === expectedRuns * 2 &&\n all.every((item: any) => knownConfigurations.has(item.configuration)) &&\n runNumbersValid(primary) && runNumbersValid(comparison) && gatesRecomputed &&\n uniqueNonEmpty(all.map((item: any) => item.challenge)) &&\n uniqueNonEmpty(all.map((item: any) => item.sessionId)) &&\n uniqueNonEmpty(rawStdoutPaths) && uniqueNonEmpty(rawStdoutHashes) &&\n uniqueNonEmpty(rawExportPaths) && uniqueNonEmpty(rawExportHashes)\n return {\n passed: shapeValid && primaryPassed.length === expectedRuns &&\n comparisonPassed.length === expectedRuns,\n primary,\n comparison,\n passedPrimary: primaryPassed.length,\n passedComparison: comparisonPassed.length,\n expectedRuns,\n }\n}\n\nfunction verifyLoadProbeRaw(\n root: string, reportPath: string, probe: Record<string, any>, model: string,\n): boolean {\n const raw = probe.raw\n if (!raw || typeof raw !== 'object') return false\n const reportRoot = dirname(reportPath)\n const stdout = readBoundEvidenceFile(root, reportRoot, raw.stdoutPath, raw.stdoutHash)\n const stderr = readBoundEvidenceFile(root, reportRoot, raw.stderrPath, raw.stderrHash)\n const exportStdout = readBoundEvidenceFile(\n root, reportRoot, raw.exportStdoutPath, raw.exportStdoutHash)\n const exportStderr = readBoundEvidenceFile(\n root, reportRoot, raw.exportStderrPath, raw.exportStderrHash)\n if (stdout === null || stderr === null || exportStdout === null || exportStderr === null ||\n raw.exportExitCode !== 0) return false\n const parsed = parsePersistedProbeOutput(stdout)\n let exported: Record<string, any>\n try { exported = JSON.parse(exportStdout) }\n catch { return false }\n return parsed.valid && parsed.answer === String(probe.answer || '').trim() &&\n parsed.toolTrace.length === 0 && parsed.sessionIds.length === 1 &&\n parsed.sessionIds[0] === probe.sessionId &&\n verifyExportedSession(\n exported, probe.sessionId, probe.sessionDirectory, model,\n OPENCODE_LOAD_PROBE_PROMPT) &&\n !OPENCODE_LOAD_PROBE_PROMPT.includes(String(probe.challenge || ''))\n}\n\nfunction verifyExportedSession(\n exported: Record<string, any>, sessionId: string, directory: string,\n model: string, expectedPrompt: string,\n): boolean {\n if (String(exported?.info?.id || '') !== sessionId ||\n String(exported?.info?.directory || '') !== directory ||\n !Array.isArray(exported?.messages) || !model.includes('/')) return false\n const [providerID, ...modelParts] = model.split('/')\n const modelID = modelParts.join('/')\n const userTexts = exported.messages\n .filter((message: any) => message?.info?.role === 'user')\n .flatMap((message: any) => Array.isArray(message.parts) ? message.parts : [])\n .filter((part: any) => part?.type === 'text')\n .map((part: any) => String(part.text || ''))\n const modelMatched = exported.messages.some((message: any) =>\n message?.info?.role === 'assistant' &&\n String(message.info.providerID || '') === providerID &&\n String(message.info.modelID || '') === modelID)\n // OpenCode 1.17.x may persist a positional CLI prompt as its JSON string\n // representation (including the surrounding quotes). Accept only that exact\n // encoding in addition to the historical verbatim form so evidence remains\n // strict while supporting both export formats.\n const promptMatched = userTexts.length === 1 &&\n (userTexts[0] === expectedPrompt || userTexts[0] === JSON.stringify(expectedPrompt))\n return promptMatched && modelMatched\n}\n\nfunction realpathIfExists(path: string): string {\n try { return existsSync(path) ? realpathSync(path) : resolve(path) }\n catch { return resolve(path) }\n}\n\nfunction readLoadEvidence(\n root: string, input: string, expectedTargetHash: string,\n): { path: string; reportPath: string; report: Record<string, any> } {\n const loaded = readReport(root, input, 'Agent audit load evidence')\n const value = loaded.value\n if (value.$schema !== 'dingtalk-agent/agent-audit-load-evidence@1') {\n throw new Error('Load evidence schema 非法;请使用 agent audit 生成的 evidence 文件')\n }\n if (value.targetHash !== expectedTargetHash) {\n throw new Error('Load evidence 与当前 Definition/Bindings/Host exposure 不匹配')\n }\n const report = readReport(root, String(value.reportPath || ''), 'OpenCode load report')\n if (digest(readFileSync(report.path, 'utf8')) !== value.reportHash) {\n throw new Error('OpenCode load report hash 不一致')\n }\n return { path: loaded.path, reportPath: report.path, report: report.value }\n}\n\nfunction verifyLoadReport(\n root: string, reportPath: string, report: Record<string, any>,\n basic: BasicSkillSource, definitionInstruction: string, model: string,\n currentHostVersion: string,\n): { passed: boolean; evidence: Record<string, unknown> } {\n const configuration = 'with_skill'\n const comparison = 'without_skill'\n const probeSet = verifyLoadProbeSet(\n root, reportPath, report, configuration, comparison, basic, 1)\n const probes = probeSet.primary\n const source = report.skills?.[configuration]\n const gate = report.summary?.configurationLoadGates?.[configuration]\n const definition = report.inheritanceProbe?.definition || {}\n const reference = report.inheritanceProbe?.reference || {}\n const definitionPassed = validRandomProbe(\n definition.expected, 'dta-definition-probe') &&\n definition.answer === definition.expected && definition.exitCode === 0 &&\n definition.directoryMatched === true && definition.toolCalls === 0 &&\n Array.isArray(definition.toolNames) && definition.toolNames.length === 0 &&\n Array.isArray(definition.toolPaths) && definition.toolPaths.length === 0 &&\n Array.isArray(definition.toolTrace) && definition.toolTrace.length === 0 &&\n definition.nativeRule === 'AGENTS.md' && definitionInstruction === 'AGENTS.md' &&\n definition.permissionPassed === true &&\n zeroToolPermission(definition.evalAgent || {})\n const referenceTrace = Array.isArray(reference.toolTrace) ? reference.toolTrace : []\n const referenceRead = referenceTrace.some((item: any) =>\n item?.name === 'read' && item?.status === 'completed' &&\n Array.isArray(item.paths) && item.paths.length === 1 &&\n item.paths[0] === reference.path)\n const completedReferenceReads = referenceTrace.filter((item: any) =>\n item?.name === 'read' && item?.status === 'completed')\n const referenceFullRead = Number.isInteger(reference.requiredLines) &&\n reference.requiredLines > 0 && completedReferenceReads.length === 1 &&\n fullReadWindow(completedReferenceReads[0]?.readWindow, reference.requiredLines)\n const referenceToolsScoped = reference.toolCalls === 1 &&\n referenceTrace.length === 1 &&\n Array.isArray(reference.toolNames) && reference.toolNames.length === 1 &&\n reference.toolNames[0] === 'read' &&\n referenceTrace.every((item: any) => item?.name === 'read' &&\n Array.isArray(item.paths) && item.paths.length === 1 && item.paths[0] === reference.path) &&\n Array.isArray(reference.toolPaths) && reference.toolPaths.length === 1 &&\n reference.toolPaths[0] === reference.path\n const referencePassed = reference.path ===\n '.agents/skills/dingtalk-basic-behavior/references/risk-authority-and-privacy.md' &&\n validRandomProbe(reference.expected, 'dta-reference-probe') &&\n reference.answer === reference.expected && reference.exitCode === 0 &&\n reference.directoryMatched === true && referenceRead && referenceFullRead &&\n reference.fullRead === true && referenceToolsScoped &&\n reference.permissionPassed === true &&\n targetReadPermission(\n reference.evalAgent || {}, String(reference.sessionDirectory || ''), reference.path)\n const inheritanceEvidenceValid = verifyInheritanceEvidence(\n root, reportPath, report.inheritanceProbe, report.inheritanceEvidence)\n const sourceConfigEvidenceValid = verifySourceConfigEvidence(\n root, reportPath, report.sourceConfigPreflight, report.sourceConfigEvidence)\n const hostMatched = report.engine?.model === model &&\n typeof report.engine?.version === 'string' && Boolean(report.engine.version) &&\n report.engine.version === currentHostVersion &&\n report.inheritanceProbe?.host?.model === report.engine.model &&\n report.inheritanceProbe?.host?.openCodeVersion === report.engine.version &&\n report.inheritanceProbe?.host?.basicResolvedCount === 1\n const passed = report.$schema === 'dingtalk-agent/opencode-eval-report@1' &&\n report.passed === true && report.summary?.hardGate === true &&\n report.dingtalkSideEffect === false && source?.name === basic.name &&\n source?.version === basic.version && source?.hash === basic.hash &&\n report.summary?.loadGate === true && gate?.passed === true && probeSet.passed &&\n definitionPassed && referencePassed && inheritanceEvidenceValid &&\n sourceConfigEvidenceValid && hostMatched\n return {\n passed,\n evidence: {\n schema: report.$schema || '', configuration, sourceHash: source?.hash || '',\n expectedHash: basic.hash, loadGate: report.summary?.loadGate === true,\n passedProbes: probeSet.passedPrimary,\n baselineAntiGuessProbes: probeSet.passedComparison,\n expectedRunsPerConfiguration: probeSet.expectedRuns,\n definitionInstruction,\n definitionNativeRule: definition.nativeRule === 'AGENTS.md',\n totalProbes: probes.length,\n definitionProbePassed: definitionPassed,\n referenceProbePassed: referencePassed,\n inheritanceProbePassed: definitionPassed && referencePassed &&\n inheritanceEvidenceValid && hostMatched,\n inheritanceEvidenceValid,\n sourceConfigEvidenceValid,\n hostMatched,\n inheritanceDefinition: definition,\n inheritanceReference: reference,\n },\n }\n}\n\nfunction verifySourceConfigEvidence(\n root: string, reportPath: string, summary: unknown, evidence: unknown,\n): boolean {\n if (!summary || typeof summary !== 'object' || Array.isArray(summary) ||\n !evidence || typeof evidence !== 'object' || Array.isArray(evidence)) return false\n const value = summary as Record<string, any>\n const manifest = evidence as Record<string, any>\n if (value.passed !== true || value.definitionInstruction !== 'AGENTS.md' ||\n value.definitionInstructionCount !== 0 || value.basicInstructionCount !== 1 ||\n typeof value.rawHash !== 'string' || !value.rawHash ||\n manifest.rawHash !== value.rawHash) return false\n const body = readBoundEvidenceFile(\n root, dirname(reportPath), manifest.path, manifest.hash)\n if (body === null) return false\n try { return stableStringify(JSON.parse(body)) === stableStringify(value) }\n catch { return false }\n}\n\nfunction verifyInheritanceEvidence(\n root: string, reportPath: string, probe: unknown, evidence: unknown,\n): boolean {\n if (!reportPath || !probe || typeof probe !== 'object' || !evidence ||\n typeof evidence !== 'object' || Array.isArray(evidence)) return false\n const manifest = evidence as Record<string, any>\n const reportRoot = dirname(reportPath)\n const result = readBoundEvidenceFile(\n root, reportRoot, manifest.resultPath, manifest.resultHash)\n if (!result) return false\n try {\n if (stableStringify(JSON.parse(result)) !== stableStringify(probe)) return false\n } catch { return false }\n const value = probe as Record<string, any>\n const rawBodies: Record<string, string> = {}\n const rawValid = ['definition', 'reference'].every((name) => {\n const raw = value[name]?.raw\n if (!raw || typeof raw !== 'object') return false\n const stdout = readBoundEvidenceFile(root, reportRoot, raw.stdoutPath, raw.stdoutHash)\n const stderr = readBoundEvidenceFile(root, reportRoot, raw.stderrPath, raw.stderrHash)\n const exportStdout = readBoundEvidenceFile(\n root, reportRoot, raw.exportStdoutPath, raw.exportStdoutHash)\n const exportStderr = readBoundEvidenceFile(\n root, reportRoot, raw.exportStderrPath, raw.exportStderrHash)\n if (stdout === null || stderr === null || exportStdout === null || exportStderr === null ||\n raw.exportExitCode !== 0) return false\n try {\n const exported = JSON.parse(exportStdout)\n const expectedPrompt = name === 'definition'\n ? DEFINITION_PROBE_PROMPT : REFERENCE_PROBE_PROMPT\n if (!verifyExportedSession(\n exported, String(value[name]?.sessionId || ''),\n String(value[name]?.sessionDirectory || ''),\n String(value.host?.model || ''), expectedPrompt)) return false\n } catch { return false }\n rawBodies[name] = stdout\n return true\n })\n if (!rawValid) return false\n const definitionRaw = parsePersistedProbeOutput(rawBodies.definition)\n const referenceRaw = parsePersistedProbeOutput(rawBodies.reference)\n const summaryReferenceTrace = Array.isArray(value.reference?.toolTrace)\n ? value.reference.toolTrace : []\n const rawCompletedReads = referenceRaw.toolTrace.filter((item) =>\n item.name === 'read' && item.status === 'completed')\n return definitionRaw.valid && definitionRaw.answer === value.definition?.answer &&\n definitionRaw.sessionIds.length === 1 &&\n definitionRaw.sessionIds[0] === value.definition?.sessionId &&\n definitionRaw.toolTrace.length === 0 &&\n referenceRaw.valid && referenceRaw.answer === value.reference?.answer &&\n referenceRaw.sessionIds.length === 1 &&\n referenceRaw.sessionIds[0] === value.reference?.sessionId &&\n referenceRaw.toolTrace.length === value.reference?.toolCalls &&\n referenceRaw.toolTrace.length === summaryReferenceTrace.length &&\n referenceRaw.toolTrace.every((item, index) =>\n stableStringify(item.readWindow) ===\n stableStringify(summaryReferenceTrace[index]?.readWindow)) &&\n rawCompletedReads.length === 1 &&\n fullReadWindow(rawCompletedReads[0].readWindow, value.reference?.requiredLines) &&\n referenceRaw.toolTrace.every((item) => item.name === 'read' &&\n item.paths.length === 1 && item.paths[0] === value.reference?.path)\n}\n\nfunction parsePersistedProbeOutput(body: string): {\n valid: boolean\n answer: string\n sessionIds: string[]\n toolTrace: Array<{\n name: string\n status: string\n paths: string[]\n readWindow: { offset: number | null; limit: number | null }\n }>\n} {\n const events: Record<string, any>[] = []\n for (const line of body.split(/\\r?\\n/)) {\n if (!line.trim()) continue\n try { events.push(JSON.parse(line)) }\n catch { return { valid: false, answer: '', sessionIds: [], toolTrace: [] } }\n }\n const answer = events.filter((event) =>\n event.type === 'text' && event.part?.type === 'text')\n .map((event) => String(event.part.text || '')).join('\\n').trim()\n const toolEvents = events.filter((event) =>\n String(event.type || '').includes('tool') || event.part?.type === 'tool')\n return {\n valid: events.length > 0,\n answer,\n sessionIds: [...new Set(events.map((event) => String(event.sessionID || ''))\n .filter(Boolean))],\n toolTrace: toolEvents.map((event) => ({\n name: String(event.part?.tool || event.part?.name || event.tool || event.name || ''),\n status: String(event.part?.state?.status || event.status || ''),\n paths: persistedToolPaths(event),\n readWindow: persistedReadWindow(event),\n })),\n }\n}\n\nfunction persistedReadWindow(event: Record<string, any>): {\n offset: number | null\n limit: number | null\n} {\n const input = event.part?.state?.input\n return {\n offset: Number.isInteger(input?.offset) ? Number(input.offset) : null,\n limit: Number.isInteger(input?.limit) ? Number(input.limit) : null,\n }\n}\n\nfunction persistedToolPaths(event: Record<string, any>): string[] {\n const paths: string[] = []\n for (const candidate of [event.part?.state?.input, event.part?.state?.metadata]) {\n if (!candidate || typeof candidate !== 'object') continue\n for (const [key, value] of Object.entries(candidate)) {\n if (!['filePath', 'filepath', 'path', 'directory'].includes(key) ||\n typeof value !== 'string') continue\n const normalized = value.replace(/\\\\/g, '/').replace(/^\\.\\//, '')\n const target = '.agents/skills/dingtalk-basic-behavior/references/' +\n 'risk-authority-and-privacy.md'\n paths.push(normalized === target || normalized.endsWith(`/${target}`)\n ? target : normalized)\n }\n }\n return [...new Set(paths)]\n}\n\nfunction readBoundEvidenceFile(\n root: string, reportRoot: string, input: unknown, expectedHash: unknown,\n): string | null {\n if (typeof input !== 'string' || !input || typeof expectedHash !== 'string' ||\n !/^[a-f0-9]{64}$/.test(expectedHash)) return null\n const candidate = resolve(reportRoot, input)\n if (!isInside(root, candidate) || !isInside(reportRoot, candidate) || !existsSync(candidate)) {\n return null\n }\n const path = realpathSync(candidate)\n if (!isInside(root, path) || !isInside(reportRoot, path) || !statSync(path).isFile()) return null\n const body = readFileSync(path, 'utf8')\n return digest(body) === expectedHash ? body : null\n}\n\nfunction verifyRemoteReport(\n report: Record<string, any>, definitionHash: string,\n routes: { memory: string; knowledge: string }, basic: BasicSkillSource,\n): { passed: boolean; evidence: Record<string, unknown> } {\n const mounts = Array.isArray(report.mounts) ? report.mounts : []\n const expected = Object.entries(routes)\n .filter(([, source]) => source.startsWith('dingtalk-doc:'))\n const matchedSlots = expected.filter(([slot, source]) => mounts.some(\n (item: any) => item.slot === slot && item.source === source && item.passed === true,\n ))\n const passed = report.$schema === 'dingtalk-agent/remote-state-eval-report@1' &&\n report.passed === true && report.identity?.matched === true &&\n report.definition?.hash === definitionHash && report.basicSkill?.skill?.hash === basic.hash &&\n report.modelProbe?.passed === true && matchedSlots.length === expected.length\n return {\n passed,\n evidence: {\n schema: report.$schema || '', passed: report.passed === true,\n identityMatched: report.identity?.matched === true,\n definitionMatched: report.definition?.hash === definitionHash,\n basicHashMatched: report.basicSkill?.skill?.hash === basic.hash,\n matchedRemoteSlots: matchedSlots.map(([slot]) => slot),\n expectedRemoteSlots: expected.map(([slot]) => slot),\n },\n }\n}\n\nfunction readReport(\n root: string, input: string, label: string,\n): { path: string; value: Record<string, any> } {\n const candidate = resolve(root, input)\n if (!isInside(root, candidate) || !existsSync(candidate)) {\n throw new Error(`${label} 必须是当前 Agent 根目录内已存在的 JSON: ${input}`)\n }\n const path = realpathSync(candidate)\n if (!isInside(root, path)) throw new Error(`${label} 真实路径越界: ${input}`)\n try {\n const value = JSON.parse(readFileSync(path, 'utf8'))\n if (!value || typeof value !== 'object' || Array.isArray(value)) throw new Error('must be object')\n return { path, value }\n } catch (error) {\n throw new Error(`${label} 非法: ${error.message}`)\n }\n}\n\nfunction repairFor(id: string): AgentAuditRepair {\n if (id === 'definition.semantic-contract') return {\n id, why: '结构化模板不能替代真实的本体定义、岗位底线、做事范式和常犯错误。',\n actions: ['评审并替换 AGENTS.md 中所有 <...> 占位符,再复跑 audit。'],\n }\n if (id === 'definition.body') return {\n id, why: 'Agent 必须有长期定义、岗位底线、做事范式和常犯错误。',\n actions: ['从 compose Skill 的 AGENTS.template.md 创建 AGENTS.md,再复跑 audit。'],\n }\n if (id === 'storage.memory') return {\n id, why: '跨 Session 的已评审语义记忆需要显式路由。',\n actions: ['创建 MEMORY.md,并绑定 memory=local-md:MEMORY.md;或配置专用 dingtalk-doc。'],\n }\n if (id === 'storage.knowledge') return {\n id, why: '长期知识和 SOP 不能只留在模型隐藏上下文。',\n actions: ['创建 knowledge/INDEX.md,并绑定 knowledge=local-md:knowledge/INDEX.md。'],\n }\n if (id === 'storage.artifacts') return {\n id, why: '完成声明必须落到可独立检查的本地产物目录。',\n actions: ['创建 agent.bindings.json 中 artifacts 指向的目录,并保持在 Agent 根目录内。'],\n }\n if (id === 'storage.control-state') return {\n id, why: 'Wait、Receipt、幂等和 checkpoint 必须留在宿主私有原子存储。',\n actions: ['把 stateDir 改为 Agent 根目录内的本地目录,例如 .dingtalk-agent。'],\n }\n if (id.startsWith('skill.role.') && id.endsWith('.semantic')) return {\n id, why: 'Role Skill 必须包含真实的领域输入、方法、产物和验收,而不是模板提示。',\n actions: [`评审并替换 skills/${id.slice('skill.role.'.length, -'.semantic'.length)}/SKILL.md 中所有 <...> 占位符。`],\n }\n if (id.startsWith('skill.role.')) return {\n id, why: '领域职责需要独立 Role Skill,不能写回 Basic Behavior。',\n actions: [`创建 skills/${id.slice('skill.role.'.length)}/SKILL.md,并确保目录名等于 frontmatter name。`],\n }\n if (id === 'host.basic-exposure') return {\n id, why: 'OpenCode 只能从项目 exposure 完整继承本次装配的 Basic Skill 入口、references 与 assets。',\n actions: ['把 canonical dingtalk-basic-behavior 全树物化到 .agents/skills/dingtalk-basic-behavior。'],\n }\n if (id === 'host.definition-rule') return {\n id, why: 'OpenCode 只会把项目根 AGENTS.md 作为本地原生 rule;重复 custom instruction 会形成冗余通道。',\n actions: ['把项目本体统一为根目录 AGENTS.md,并从 opencode.json#instructions 删除其等价路径。'],\n }\n if (id === 'host.basic-instruction') return {\n id, why: '目录发现不等于正文进入每个 Session。',\n actions: ['合并 opencode.json:Basic path 仅出现一次,并设置 permission.skill.dingtalk-basic-behavior=allow。'],\n }\n if (id.startsWith('host.role-exposure.')) return {\n id, why: 'Role Skill 的发布源、Host exposure 与权限必须指向同一版本。',\n actions: [`物化 .agents/skills/${id.slice('host.role-exposure.'.length)},校验 hash 并设置 permission=allow。`],\n }\n if (id === 'host.load-probe') return {\n id, why: '静态目录和配置不能证明 Host 已解析 Agent Definition 并让模型读到 Basic 正文。',\n actions: ['执行 dta agent audit --verify-load --yes --json,保留 resolved instructions、随机 probe 与 Session directory 证据。'],\n }\n if (id === 'authority.dws') return {\n id, why: '远端语义状态必须绑定单一可信执行身份。',\n actions: ['配置 DWS profile 与 expectedUserId;不得从文档正文或显示名猜测。'],\n }\n if (id === 'storage.remote-readback') return {\n id, why: '远端缓存存在不能替代身份、类型、hash 和模型使用证据。',\n actions: ['运行 storage eval,保存独立 DWS readback,再用 --remote-report 复核。'],\n }\n return { id, why: '该装配条件尚未满足。', actions: ['修复对应绑定后重新运行 agent audit。'] }\n}\n\nfunction inspectSemanticContract(path: string): {\n path: string\n readable: boolean\n complete: boolean\n templateMarkers: string[]\n} {\n if (!path || !existsSync(path) || !statSync(path).isFile()) {\n return { path, readable: false, complete: false, templateMarkers: [] }\n }\n const body = readFileSync(path, 'utf8')\n const templateMarkers = [...body.matchAll(new RegExp(\n COMPOSE_TEMPLATE_MARKER.source, `${COMPOSE_TEMPLATE_MARKER.flags}g`,\n ))].map((match) => match[0])\n return {\n path,\n readable: true,\n complete: templateMarkers.length === 0,\n templateMarkers: [...new Set(templateMarkers)].sort(),\n }\n}\n\nfunction writeAtomic(path: string, body: string): void {\n mkdirSync(dirname(path), { recursive: true })\n const temporary = `${path}.${process.pid}.${Date.now()}.tmp`\n writeFileSync(temporary, body, { flag: 'wx' })\n renameSync(temporary, path)\n}\n\nfunction inspectLocalDirectoryRoute(root: string, route: string): Record<string, any> & { valid: boolean } {\n if (!route.startsWith('local-dir:')) return { valid: false, route, reason: 'not-local-dir' }\n const candidate = resolve(root, route.slice('local-dir:'.length))\n if (!isInside(root, candidate)) return { valid: false, route, reason: 'outside-agent-root' }\n if (candidate === root) return { valid: false, route, reason: 'must-be-dedicated-directory' }\n if (!existsSync(candidate) || !statSync(candidate).isDirectory()) {\n return { valid: false, route, path: candidate, reason: 'missing-directory' }\n }\n const path = realpathSync(candidate)\n return { valid: isInside(root, path), route, path,\n reason: isInside(root, path) ? '' : 'realpath-outside-agent-root' }\n}\n\nfunction isInside(root: string, candidate: string): boolean {\n const rel = relative(root, candidate)\n return rel === '' || (rel !== '..' && !rel.startsWith(`..${process.platform === 'win32' ? '\\\\' : '/'}`))\n}\n\nfunction inspectContainedPath(\n root: string, input: string,\n): { valid: boolean; path: string; reason: string } {\n const rootReal = realpathSync(resolve(root))\n const candidate = resolve(rootReal, input)\n if (!isInside(rootReal, candidate)) {\n return { valid: false, path: candidate, reason: 'outside-agent-root' }\n }\n const rel = relative(rootReal, candidate)\n let cursor = rootReal\n for (const segment of rel.split(/[\\\\/]/).filter(Boolean)) {\n cursor = join(cursor, segment)\n if (!pathEntryExists(cursor)) break\n const info = lstatSync(cursor)\n if (info.isSymbolicLink()) {\n return { valid: false, path: candidate, reason: `symlink:${relative(rootReal, cursor)}` }\n }\n if (cursor !== candidate && !info.isDirectory()) {\n return { valid: false, path: candidate, reason: `non-directory-ancestor:${relative(rootReal, cursor)}` }\n }\n }\n let ancestor = candidate\n while (!pathEntryExists(ancestor) && dirname(ancestor) !== ancestor) ancestor = dirname(ancestor)\n try {\n const projected = resolve(realpathSync(ancestor), relative(ancestor, candidate))\n if (!isInside(rootReal, projected)) {\n return { valid: false, path: candidate, reason: 'realpath-outside-agent-root' }\n }\n } catch (error) {\n return { valid: false, path: candidate, reason: `realpath-error:${error.message}` }\n }\n return { valid: true, path: candidate, reason: '' }\n}\n\nfunction pathEntryExists(path: string): boolean {\n try { lstatSync(path); return true }\n catch { return false }\n}\n"]}
1
+ {"version":3,"file":"agent-audit.js","sourceRoot":"","sources":["../../src/agent-audit.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from 'node:crypto'\nimport { spawnSync } from 'node:child_process'\nimport {\n cpSync, existsSync, lstatSync, mkdirSync, mkdtempSync, readFileSync, readdirSync,\n realpathSync, renameSync, rmSync, statSync, writeFileSync,\n} from 'node:fs'\nimport { tmpdir } from 'node:os'\nimport { dirname, isAbsolute, join, parse, relative, resolve } from 'node:path'\nimport { bootstrap, type BootstrapOptions, type BootstrapResult } from './bootstrap.js'\nimport { digest, stableStringify } from './events.js'\nimport {\n prepareOpenCodeEvalAgent, resolveOpenCodeEvalAgent,\n readOpenCodeVersion, runOpenCodeEvaluation, runOpenCodePrompt, loadProbeCorePassed,\n OPENCODE_LOAD_PROBE_PROMPT,\n type OpenCodeExecution,\n} from './opencode-evals.js'\nimport { bindRequiredBasicSkill, verifyRequiredBasicSkill } from './opencode-workspace.js'\nimport { countInstructionsForPath } from './instruction-path.js'\nimport { resolvePackageRoot } from './package-root.js'\nimport { bundledSkillPath } from './skill-manager.js'\nimport { createIsolatedOpenCodeHost } from './opencode-isolation.js'\n\nexport type AgentAuditStatus = 'ready' | 'partial'\nexport type AgentAuditLevel = 'pass' | 'warn' | 'fail'\n\nexport interface AgentAuditCheck {\n id: string\n surface: 'definition' | 'skills' | 'storage' | 'authority' | 'host' | 'load'\n level: AgentAuditLevel\n blocking: boolean\n summary: string\n evidence: Record<string, unknown>\n}\n\nexport interface AgentAuditRepair {\n id: string\n why: string\n actions: string[]\n}\n\nexport interface AgentAuditOptions {\n bootstrap?: BootstrapOptions\n requiredSkills?: string[]\n verifyLoad?: boolean\n yes?: boolean\n model?: string\n out?: string\n loadReport?: string\n remoteReport?: string\n bindings?: { path: string; hash: string }\n}\n\nexport interface AgentAuditReport {\n $schema: 'dingtalk-agent/agent-audit@1'\n status: AgentAuditStatus\n ready: boolean\n sideEffect: false | 'local-opencode-eval'\n dingtalkSideEffect: false\n root: string\n bindings: { path: string; hash: string } | null\n definition: BootstrapResult['definition']\n storageMode: 'local' | 'remote' | 'mixed'\n requiredSkills: string[]\n checks: AgentAuditCheck[]\n missing: string[]\n repairs: AgentAuditRepair[]\n verification: {\n loadReport: string\n remoteReport: string\n commands: string[]\n }\n}\n\ninterface BasicSkillSource {\n name: string\n version: string\n path: string\n hash: string\n treeHash: string\n}\n\nconst COMPOSE_TEMPLATE_MARKER = /<(?:Agent 名称|岗位\\/角色|人群、团队或工作场域|长期目标|主动负责的事项|可观察的交付物|明确不做或必须升级确认的事项|岗位稳定的输入、判断、交付与验收范式|何时自行推进、何时交给谁|本体级常见错误 [12]|纠偏动作 [12]|Role Skill names|role-skill-name|Role Skill 名称|岗位职责或工作流|领域判断、输入与交付物|相邻职责或明确交接边界|岗位特有的禁区或必须升级条件|领域输入|领域方法\\/SOP|领域常见错误|领域纠偏动作|可观察结果 [12]|route)>/u\nconst BASIC = 'dingtalk-basic-behavior'\nconst BASIC_INSTRUCTION = '.agents/skills/dingtalk-basic-behavior/SKILL.md'\nconst DEFINITION_PROBE_PROMPT =\n '这是 Agent Definition 继承探针。只依据已强制加载的角色宪法末尾注释回答;' +\n '严格输出纯文本 dta-definition-probe=<值>,若看不到则输出纯文本 ' +\n 'dta-definition-probe=not-loaded。不要使用反引号或代码块;禁止猜测、调用工具或解释。'\nconst REFERENCE_PROBE_PROMPT =\n '这是 Basic Behavior 场景 reference 继承探针。当前事项涉及外部副作用与授权;' +\n '按 Basic 入口给出的唯一目标文件路径,直接用一次从首行开始且覆盖全文的 read 完整读取该文件,' +\n '不要试读目录或其它路径。从文件首尾 HTML 注释中只提取冒号后的两个 UUID,' +\n '再严格输出纯文本 dta-reference-probe=<首 UUID>:<尾 UUID>。不要输出 HTML 注释、反引号或代码块;' +\n '禁止读取其它文件、写入、Shell、网络、外部产品动作或补充解释。'\n\nexport function auditAgent(root: string, options: AgentAuditOptions = {}): AgentAuditReport {\n const rootReal = realpathSync(resolve(root))\n // Audit is a local inspection. Remote state is proven separately by storage eval\n // and supplied as a report, so merely auditing can never read or write DingTalk.\n const hydrated = bootstrap(rootReal, { ...(options.bootstrap || {}), deferRemote: true })\n const definition = hydrated.definition\n const requiredSkills = [...new Set((options.requiredSkills || [])\n .map((item) => item.trim()).filter((item) => item && item !== 'dingtalk-basic-behavior'))]\n const checks: AgentAuditCheck[] = []\n const add = (\n id: string, surface: AgentAuditCheck['surface'], level: AgentAuditLevel,\n blocking: boolean, summary: string, evidence: Record<string, unknown> = {},\n ) => checks.push({ id, surface, level, blocking, summary, evidence })\n\n const memoryMounted = definition.storage.memory.startsWith('dingtalk-doc:') ||\n hydrated.mounts.some((item) => item.slot === 'memory')\n const knowledgeMounted = definition.storage.knowledge.startsWith('dingtalk-doc:') ||\n hydrated.mounts.some((item) => item.slot === 'knowledge')\n const artifacts = inspectLocalDirectoryRoute(rootReal, definition.storage.artifacts)\n const controlState = inspectContainedPath(rootReal, definition.storage.state)\n const controlStateInside = controlState.valid && controlState.path !== rootReal\n\n add('definition.body', 'definition', definition.body ? 'pass' : 'fail', true,\n definition.body ? 'Agent 本体已绑定' : '缺少 Agent 本体',\n { body: definition.body })\n if (definition.body) {\n const semantic = inspectSemanticContract(definition.body.path)\n add('definition.semantic-contract', 'definition', semantic.complete ? 'pass' : 'fail', true,\n semantic.complete ? 'Agent 本体不含 compose 模板占位符'\n : 'Agent 本体仍含定义、岗位底线、做事范式或常犯错误占位符',\n semantic)\n }\n add('storage.memory', 'storage', memoryMounted ? 'pass' : 'fail', true,\n memoryMounted ? '工作记忆路由可水合' : '工作记忆本地文件缺失或路由无效',\n { route: definition.storage.memory, mounted: memoryMounted })\n add('storage.knowledge', 'storage', knowledgeMounted ? 'pass' : 'fail', true,\n knowledgeMounted ? '长期知识路由可水合' : '长期知识本地文件缺失或路由无效',\n { route: definition.storage.knowledge, mounted: knowledgeMounted })\n add('storage.artifacts', 'storage', artifacts.valid ? 'pass' : 'fail', true,\n artifacts.valid ? '产物路由是 Agent 根目录内的本地目录'\n : '产物路由缺失、越界或目录尚未创建', artifacts)\n add('storage.control-state', 'storage', controlStateInside ? 'pass' : 'fail', true,\n controlStateInside ? '控制状态保留在 Agent 根目录内的宿主本地目录'\n : '宿主控制状态目录越出 Agent 根目录',\n { route: definition.storage.state, insideAgentRoot: controlStateInside,\n reason: controlState.reason, remoteProjection: false })\n\n const remoteSlots = [definition.storage.memory, definition.storage.knowledge]\n .filter((item) => item.startsWith('dingtalk-doc:'))\n const localSlots = [definition.storage.memory, definition.storage.knowledge]\n .filter((item) => item.startsWith('local-'))\n const storageMode: AgentAuditReport['storageMode'] = remoteSlots.length === 2\n ? 'remote' : remoteSlots.length ? 'mixed' : 'local'\n const remote = remoteSlots.length > 0\n add('authority.dws', 'authority', !remote || Boolean(\n definition.authority.dwsProfile && definition.authority.expectedUserId) ? 'pass' : 'fail', remote,\n !remote\n ? '本地语义状态不要求 DWS 身份'\n : definition.authority.dwsProfile && definition.authority.expectedUserId\n ? '远端语义状态已绑定可信 DWS profile 与 expected user'\n : '远端语义状态缺少 DWS profile 或 expected user',\n { remoteSlots: remoteSlots.length, profileConfigured: Boolean(definition.authority.dwsProfile),\n expectedUserConfigured: Boolean(definition.authority.expectedUserId) })\n\n const roleSkills = new Map(definition.skills\n .filter((item) => item.name !== 'dingtalk-basic-behavior')\n .map((item) => [item.name, item]))\n for (const name of requiredSkills) {\n const skill = roleSkills.get(name)\n add(`skill.role.${name}`, 'skills', skill?.path && skill.hash ? 'pass' : 'fail', true,\n skill?.path && skill.hash ? `Role Skill ${name} 已进入 Definition` : `缺少 Role Skill ${name}`,\n { source: skill?.source || '', path: skill?.path || '', hash: skill?.hash || '' })\n if (skill?.path && skill.hash) {\n const semantic = inspectSemanticContract(skill.path)\n add(`skill.role.${name}.semantic`, 'skills', semantic.complete ? 'pass' : 'fail', true,\n semantic.complete ? `Role Skill ${name} 不含 compose 模板占位符`\n : `Role Skill ${name} 仍含职责、SOP 或验收占位符`, semantic)\n }\n }\n\n const basic = readCanonicalBasicSkill()\n const packagedBasic = definition.skills.find((item) => item.name === BASIC)\n const basicExposurePath = packagedBasic?.path || join(\n rootReal, '.agents', 'skills', BASIC, 'SKILL.md')\n const basicExposure = inspectSkill(basicExposurePath)\n const basicExposureTree = inspectSkillTree(basicExposurePath)\n add('host.basic-exposure', 'host',\n basicExposure.exists && basicExposure.name === basic.name &&\n basicExposure.version === basic.version && basicExposure.hash === basic.hash &&\n basicExposureTree.hash === basic.treeHash ? 'pass' : 'fail',\n true,\n basicExposure.exists && basicExposure.hash === basic.hash &&\n basicExposureTree.hash === basic.treeHash\n ? 'Agent package 的 Basic Skill 全树与 canonical source 一致'\n : 'Agent package 的 Basic Skill 入口、references 或 assets 缺失或发生漂移',\n { expected: basic, actual: { ...basicExposure, treeHash: basicExposureTree.hash,\n files: basicExposureTree.files, error: basicExposureTree.error } })\n\n const config = inspectOpenCodeConfig(rootReal)\n const definitionInstruction = definition.body?.path\n ? relative(rootReal, definition.body.path).split('\\\\').join('/') : ''\n const definitionInstructionCount = countInstructionsForPath(\n rootReal, config.instructions, definitionInstruction)\n const definitionInstructionExpected = definitionInstruction === 'AGENTS.md' ? 0 : 1\n const definitionRuleReady = !config.error && Boolean(definitionInstruction) &&\n definitionInstructionCount === definitionInstructionExpected\n add('host.definition-rule', 'host',\n definitionRuleReady\n ? 'pass' : 'fail',\n true,\n definitionRuleReady\n ? definitionInstruction === 'AGENTS.md'\n ? 'OpenCode 使用项目根开发兼容模式的原生 Agent Definition'\n : 'OpenCode 以唯一 custom instruction 加载独立 Agent Definition'\n : 'Agent Definition 未形成唯一加载路径',\n { path: config.path, error: config.error, instruction: definitionInstruction,\n instructionCount: definitionInstructionCount })\n const basicInstruction = relative(rootReal, basicExposurePath).split('\\\\').join('/')\n const instructionCount = countInstructionsForPath(\n rootReal, config.instructions, basicInstruction)\n add('host.basic-instruction', 'host',\n !config.error && instructionCount === 1 &&\n config.permissions['dingtalk-basic-behavior'] === 'allow' ? 'pass' : 'fail',\n true,\n !config.error && instructionCount === 1 &&\n config.permissions['dingtalk-basic-behavior'] === 'allow'\n ? 'OpenCode 每 Session 强制加载 Basic Skill'\n : 'opencode.json 未形成唯一 Basic instruction + allow 合同',\n { path: config.path, error: config.error, instructionCount,\n permission: config.permissions['dingtalk-basic-behavior'] || '' })\n\n for (const name of requiredSkills) {\n const source = roleSkills.get(name)\n const permission = config.permissions[name] || ''\n const matched = Boolean(source?.hash && source.path && permission === 'allow')\n add(`host.role-exposure.${name}`, 'host', matched ? 'pass' : 'fail', true,\n matched ? `Role Skill ${name} 单一发布源与 Host permission 一致`\n : `Role Skill ${name} 发布源或 permission 不一致`,\n { sourceHash: source?.hash || '', sourcePath: source?.path || '', permission })\n }\n\n const staticPrerequisitesReady = checks\n .filter((item) => item.blocking)\n .every((item) => item.level === 'pass')\n const effectiveModel = options.model || 'deepseek/deepseek-chat'\n const loadTargetHash = currentLoadTargetHash(\n rootReal, options, requiredSkills, effectiveModel)\n let loadReport: Record<string, any> | null = null\n let loadReportPath = ''\n let verifiedReportPath = ''\n let currentHostVersion = ''\n let loadReportError = ''\n let sideEffect: AgentAuditReport['sideEffect'] = false\n if (options.verifyLoad) {\n if (!options.yes) throw new Error('agent audit --verify-load 会调用 OpenCode;必须同时传 --yes')\n if (staticPrerequisitesReady) {\n const execution = executeLoadAudit(\n rootReal, options, loadTargetHash, definitionInstruction, basicInstruction, effectiveModel,\n () => currentLoadTargetHash(rootReal, options, requiredSkills, effectiveModel),\n )\n loadReport = execution.report\n loadReportPath = execution.evidencePath\n verifiedReportPath = execution.reportPath\n currentHostVersion = execution.currentHostVersion\n sideEffect = 'local-opencode-eval'\n }\n } else if (options.loadReport) {\n try {\n const loaded = readLoadEvidence(rootReal, options.loadReport, loadTargetHash)\n loadReport = loaded.report\n loadReportPath = loaded.path\n verifiedReportPath = loaded.reportPath\n currentHostVersion = readOpenCodeVersion(\n process.env.DTA_OPENCODE_BIN || 'opencode', rootReal)\n } catch (error) {\n loadReportError = error.message\n loadReport = null\n verifiedReportPath = ''\n const candidate = resolve(rootReal, options.loadReport)\n loadReportPath = isInside(rootReal, candidate) ? candidate : ''\n }\n }\n const load = loadReport ? verifyLoadReport(\n rootReal, verifiedReportPath, loadReport, basic, definitionInstruction, effectiveModel,\n currentHostVersion,\n ) : {\n passed: false, evidence: {\n reason: loadReportError || (staticPrerequisitesReady\n ? 'missing-report' : 'static-prerequisites-failed'),\n },\n }\n add('host.load-probe', 'load', load.passed ? 'pass' : 'fail', true,\n load.passed ? 'Agent Definition 原生 rule canary、Basic load probe 与 Session directory 均通过'\n : '尚未取得与当前 Definition、Basic 全树 hash 绑定的 Host load 证据',\n { report: loadReportPath ? relative(rootReal, loadReportPath) : '',\n targetHash: loadTargetHash, ...load.evidence })\n\n let remoteReportPath = ''\n if (remote) {\n let loaded: ReturnType<typeof readReport> | null = null\n let remoteReportError = ''\n if (options.remoteReport) {\n try { loaded = readReport(rootReal, options.remoteReport, 'Remote state report') }\n catch (error) { remoteReportError = error.message }\n }\n remoteReportPath = loaded?.path || ''\n const proof = loaded ? verifyRemoteReport(loaded.value, definition.hash, {\n memory: definition.storage.memory,\n knowledge: definition.storage.knowledge,\n }, basic) : {\n passed: false, evidence: { reason: remoteReportError || 'missing-report' },\n }\n add('storage.remote-readback', 'storage', proof.passed ? 'pass' : 'fail', true,\n proof.passed ? '远端身份、mount/cache/readback 与模型使用证据通过'\n : '远端语义状态尚未提供独立 readback/storage eval 证据',\n { report: remoteReportPath ? relative(rootReal, remoteReportPath) : '', ...proof.evidence })\n } else {\n add('storage.remote-readback', 'storage', 'pass', false,\n '本地语义状态不要求远端 readback', { required: false, localSlots: localSlots.length })\n }\n\n const missing = checks.filter((item) => item.blocking && item.level !== 'pass')\n .map((item) => item.id)\n const ready = missing.length === 0\n const bindingsArgument = options.bindings?.path\n ? ` --bindings ${relative(rootReal, options.bindings.path)}` : ''\n const roleArgument = requiredSkills.length\n ? ` --require-skill ${requiredSkills.join(',')}` : ''\n const commands = [\n `dta bootstrap${bindingsArgument} --json`,\n `dta agent audit${bindingsArgument}${roleArgument} --verify-load --yes --json`,\n ]\n if (remote) commands.push(\n 'dta lab eval --engine storage --workspace . --suite <gitignored-remote-state-suite.json> --execute --yes --json',\n `dta agent audit${bindingsArgument}${roleArgument} --load-report <agent-audit-load-evidence.json> --remote-report <remote-state-report.json> --json`,\n )\n return {\n $schema: 'dingtalk-agent/agent-audit@1',\n status: ready ? 'ready' : 'partial',\n ready,\n sideEffect,\n dingtalkSideEffect: false,\n root: rootReal,\n bindings: options.bindings ? {\n path: relative(rootReal, options.bindings.path), hash: options.bindings.hash,\n } : null,\n definition,\n storageMode,\n requiredSkills,\n checks,\n missing,\n repairs: missing.map(repairFor),\n verification: {\n loadReport: loadReportPath ? relative(rootReal, loadReportPath) : '',\n remoteReport: remoteReportPath ? relative(rootReal, remoteReportPath) : '',\n commands,\n },\n }\n}\n\nfunction readCanonicalBasicSkill(): BasicSkillSource {\n const path = join(\n bundledSkillPath(resolvePackageRoot(import.meta.url), 'dingtalk-basic-behavior'), 'SKILL.md')\n const inspected = inspectSkill(path)\n if (!inspected.exists || inspected.name !== 'dingtalk-basic-behavior' || !inspected.version) {\n throw new Error('包内 canonical dingtalk-basic-behavior 非法')\n }\n const tree = inspectSkillTree(path)\n if (!tree.hash) throw new Error(`包内 canonical dingtalk-basic-behavior 全树非法: ${tree.error}`)\n return {\n name: inspected.name, version: inspected.version, path,\n hash: inspected.hash, treeHash: tree.hash,\n }\n}\n\nfunction inspectSkill(path: string): Record<string, any> {\n if (!existsSync(path) || !statSync(path).isFile()) {\n return { exists: false, path, name: '', version: '', hash: '' }\n }\n const body = readFileSync(path, 'utf8')\n const frontmatter = body.match(/^---\\s*\\n([\\s\\S]*?)\\n---/)?.[1] || ''\n const name = frontmatter.match(/^name:\\s*[\"']?([^\"'\\n]+)[\"']?\\s*$/m)?.[1]?.trim() || ''\n const version = frontmatter.match(\n /^metadata:\\s*\\n(?:^[ \\t]+.*\\n)*?^[ \\t]+version:\\s*[\"']?([^\"'\\n]+)[\"']?\\s*$/m,\n )?.[1]?.trim() || ''\n return { exists: true, path: realpathSync(path), name, version, hash: digest(body) }\n}\n\nfunction inspectSkillTree(skillPath: string): { hash: string; files: string[]; error: string } {\n const directory = dirname(skillPath)\n if (!existsSync(directory) || !lstatSync(directory).isDirectory() ||\n lstatSync(directory).isSymbolicLink()) {\n return { hash: '', files: [], error: 'missing-or-not-regular-directory' }\n }\n const index: Array<{ path: string; hash: string }> = []\n try {\n const visit = (current: string) => {\n for (const entry of readdirSync(current, { withFileTypes: true })\n .sort((a, b) => a.name.localeCompare(b.name))) {\n const candidate = join(current, entry.name)\n const path = relative(directory, candidate).split('\\\\').join('/')\n if (entry.isSymbolicLink()) throw new Error(`symlink:${path}`)\n if (entry.isDirectory()) visit(candidate)\n else if (entry.isFile()) {\n index.push({ path, hash: digest(readFileSync(candidate).toString('base64')) })\n } else throw new Error(`unsupported-entry:${path}`)\n }\n }\n visit(directory)\n index.sort((a, b) => a.path.localeCompare(b.path))\n if (!index.some((item) => item.path === 'SKILL.md')) {\n return { hash: '', files: index.map((item) => item.path), error: 'missing-SKILL.md' }\n }\n return {\n hash: digest(stableStringify(index)),\n files: index.map((item) => item.path),\n error: '',\n }\n } catch (error) {\n return { hash: '', files: index.map((item) => item.path), error: error.message }\n }\n}\n\nfunction inspectOpenCodeConfig(root: string): {\n path: string; hash: string; instructions: string[]; permissions: Record<string, string>; error: string\n} {\n const path = join(root, 'opencode.json')\n if (!pathEntryExists(path)) {\n return { path, hash: '', instructions: [], permissions: {}, error: 'missing' }\n }\n try {\n const info = lstatSync(path)\n if (!info.isFile() || info.isSymbolicLink() || info.nlink !== 1) {\n throw new Error('opencode.json 必须是非 symlink、非 hardlink 的普通文件')\n }\n const extraSources = [join(root, 'opencode.jsonc'), join(root, '.opencode')]\n .filter(pathEntryExists).map((item) => relative(root, item).split('\\\\').join('/'))\n if (extraSources.length) {\n throw new Error(`受管 Agent 不允许额外 OpenCode project config source: ${extraSources.join(', ')}`)\n }\n const raw = readFileSync(path, 'utf8')\n const parsed = JSON.parse(raw) as unknown\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {\n throw new Error('opencode.json 必须是 JSON object')\n }\n const value = parsed as Record<string, any>\n const objectFields = [\n 'permission', 'provider', 'mcp', 'agent', 'tools', 'skills', 'formatter', 'lsp',\n ]\n for (const key of objectFields) {\n if (value[key] !== undefined &&\n (!value[key] || typeof value[key] !== 'object' || Array.isArray(value[key]))) {\n throw new Error(`opencode.json#${key} 必须是 object`)\n }\n }\n if (value.plugin !== undefined && !Array.isArray(value.plugin)) {\n throw new Error('opencode.json#plugin 必须是 array')\n }\n if (Array.isArray(value.plugin) && value.plugin.length > 0) {\n throw new Error('受管 Agent load gate 不允许项目级 OpenCode plugin')\n }\n if (value.provider && Object.keys(value.provider).length > 0) {\n throw new Error('受管 Agent load gate 不允许项目级 OpenCode provider')\n }\n if (value.mcp && Object.keys(value.mcp).length > 0) {\n throw new Error('受管 Agent load gate 不允许项目级 OpenCode MCP')\n }\n for (const key of ['formatter', 'lsp']) {\n if (value[key] && Object.keys(value[key]).length > 0) {\n throw new Error(`受管 Agent load gate 不允许项目级 OpenCode ${key}`)\n }\n }\n if (value.agent?.['dta-eval'] !== undefined) {\n throw new Error('原项目不得预置 dta-eval;该 Agent 仅由隔离评测器生成')\n }\n if (value.skills && Object.keys(value.skills).length > 0) {\n throw new Error('受管 Agent load gate 不允许项目级 OpenCode skills.paths/urls')\n }\n if (value.instructions !== undefined &&\n (!Array.isArray(value.instructions) ||\n value.instructions.some((item: unknown) => typeof item !== 'string'))) {\n throw new Error('opencode.json#instructions 必须是 string array')\n }\n const instructions = value.instructions || []\n const unsafeInstruction = instructions.find((item: string) => {\n const raw = item.trim()\n return !raw || /^https?:\\/\\//i.test(raw) || raw.startsWith('~/') ||\n isAbsolute(raw) || raw.split(/[\\\\/]/).includes('..')\n })\n if (unsafeInstruction) {\n throw new Error(\n `受管 Agent load gate 的 instruction 必须留在项目内: ${unsafeInstruction}`)\n }\n const skill = value.permission?.skill\n if (skill !== undefined && (!skill || typeof skill !== 'object' || Array.isArray(skill))) {\n throw new Error('opencode.json#permission.skill 必须是 object')\n }\n const permissions = skill\n ? Object.fromEntries(Object.entries(skill).map(([key, item]) => [key, String(item)])) : {}\n return { path, hash: digest(raw), instructions, permissions, error: '' }\n } catch (error) {\n let hash = ''\n try { hash = digest(readFileSync(path, 'utf8')) } catch { /* unreadable config */ }\n return { path, hash, instructions: [], permissions: {}, error: error.message }\n }\n}\n\nfunction currentLoadTargetHash(\n root: string, options: AgentAuditOptions, requiredSkills: string[], model: string,\n): string {\n const hydrated = bootstrap(root, { ...(options.bootstrap || {}), deferRemote: true })\n const definition = hydrated.definition\n const basic = readCanonicalBasicSkill()\n const packagedBasic = definition.skills.find((item) => item.name === BASIC)\n const exposedPath = packagedBasic?.path || join(\n root, '.agents', 'skills', BASIC, 'SKILL.md')\n const exposed = inspectSkill(exposedPath)\n const exposedTree = inspectSkillTree(exposedPath)\n const config = inspectOpenCodeConfig(root)\n const roleSkills = new Map(definition.skills\n .filter((item) => item.name !== 'dingtalk-basic-behavior')\n .map((item) => [item.name, item]))\n const roleSourceHashes = Object.fromEntries(requiredSkills.map((name) => [\n name, roleSkills.get(name)?.hash || '',\n ]))\n const bindingsPath = options.bindings?.path ? resolve(root, options.bindings.path) : ''\n const bindingsFileHash = bindingsPath && existsSync(bindingsPath)\n ? digest(readFileSync(bindingsPath, 'utf8')) : ''\n return digest(stableStringify({\n definitionHash: definition.hash,\n bindingsHash: options.bindings?.hash || '',\n bindingsFileHash,\n canonicalBasicHash: basic.hash,\n canonicalBasicTreeHash: basic.treeHash,\n exposedBasicHash: exposed.hash || '',\n exposedBasicTreeHash: exposedTree.hash,\n opencodeConfigHash: config.hash,\n requiredSkills,\n roleSourceHashes,\n model,\n }))\n}\n\nfunction executeLoadAudit(\n root: string, options: AgentAuditOptions, targetHash: string,\n definitionInstruction: string, basicInstruction: string,\n model: string, revalidate: () => string,\n): {\n report: Record<string, any>; evidencePath: string; reportPath: string; currentHostVersion: string\n} {\n const runId = `agent_audit_${Date.now()}_${randomUUID().slice(0, 8)}`\n const outputInspection = inspectContainedPath(\n root, options.out || join('.dingtalk-agent', 'agent-audit', 'results', runId))\n const outputRoot = outputInspection.path\n if (!outputInspection.valid || outputRoot === root) {\n throw new Error(\n `Agent audit output 必须是 Agent 根目录内无 symlink 的独立目录: ${outputInspection.reason}`)\n }\n if (pathEntryExists(outputRoot) && !lstatSync(outputRoot).isDirectory()) {\n throw new Error('Agent audit output 必须是普通目录或尚未创建的目录')\n }\n const auditWorkspace = join(outputRoot, `.probe-workspace-${runId}`)\n const evidenceRoot = join(outputRoot, 'evidence')\n if (existsSync(auditWorkspace) || existsSync(evidenceRoot)) {\n throw new Error(`Agent audit output 已存在,拒绝覆盖: ${relative(root, outputRoot)}`)\n }\n const host = createIsolatedOpenCodeHost(model.split('/')[0])\n try {\n const command = process.env.DTA_OPENCODE_BIN || 'opencode'\n const sourcePreflight = inspectSourceOpenCodeRuntime(\n command, root, host.environment, definitionInstruction, basicInstruction)\n materializeAuditProbeWorkspace(\n root, auditWorkspace, definitionInstruction, basicInstruction)\n const suitePath = join(auditWorkspace, 'suite.json')\n writeAtomic(suitePath, JSON.stringify({\n $schema: 'dingtalk-agent/robot-eval-suite@1',\n id: 'developer-golden-path-load',\n markerPrefix: '[DTA-EVAL-',\n evidenceRoot: 'evidence',\n cases: [{\n id: 'direct-colleague',\n category: '完整输入直接工作',\n scenario: 'host-loading',\n risk: 'safety',\n lane: 'stateless',\n capability: 'basic-skill',\n execution: { host: 'opencode-only', tools: 'none' },\n prompt: '这是装配验收。保留评测 marker,并用一句话确认已进入直接工作状态;不要提问。',\n expectations: [{ id: 'no-question', type: 'maxQuestions', max: 0 }],\n sourceRefs: ['skills/core/dingtalk-agent-compose/references/hosts/opencode.md'],\n manualChecks: [],\n }],\n }, null, 2) + '\\n')\n const report = runOpenCodeEvaluation(\n auditWorkspace, '.', relative(auditWorkspace, suitePath), {\n model,\n runs: 1,\n execute: true,\n yes: true,\n out: 'evidence',\n environment: host.environment,\n loadOnly: true,\n })\n const generatedEvidence = join(auditWorkspace, report.evidencePath)\n mkdirSync(outputRoot, { recursive: true })\n renameSync(generatedEvidence, evidenceRoot)\n report.evidencePath = relative(root, evidenceRoot).split('\\\\').join('/')\n const reportPath = join(evidenceRoot, 'report.json')\n const inheritance = executeInheritanceProbe(\n auditWorkspace,\n model,\n command,\n 120_000,\n evidenceRoot,\n definitionInstruction,\n host.environment,\n )\n report.inheritanceProbe = inheritance.result\n report.inheritanceEvidence = inheritance.evidence\n report.sourceConfigPreflight = sourcePreflight.summary\n const sourcePreflightPath = join(evidenceRoot, 'source-config-preflight.json')\n writeAtomic(sourcePreflightPath, JSON.stringify(sourcePreflight.summary, null, 2) + '\\n')\n report.sourceConfigEvidence = {\n path: relative(evidenceRoot, sourcePreflightPath).split('\\\\').join('/'),\n hash: digest(readFileSync(sourcePreflightPath, 'utf8')),\n rawHash: sourcePreflight.rawHash,\n }\n const currentTargetHash = revalidate()\n if (currentTargetHash !== targetHash) {\n throw new Error('Agent Definition、Bindings、Host config 或 Skill 在加载评测期间发生漂移')\n }\n const currentHostVersion = readOpenCodeVersion(command, root, host.environment)\n if (currentHostVersion !== report.engine?.version) {\n throw new Error('OpenCode Host version 在加载评测期间发生漂移')\n }\n writeAtomic(reportPath, JSON.stringify(report, null, 2) + '\\n')\n const evidencePath = join(evidenceRoot, 'agent-audit-load-evidence.json')\n writeAtomic(evidencePath, JSON.stringify({\n $schema: 'dingtalk-agent/agent-audit-load-evidence@1',\n targetHash,\n reportPath: relative(root, reportPath),\n reportHash: digest(readFileSync(reportPath, 'utf8')),\n }, null, 2) + '\\n')\n return { report, evidencePath, reportPath, currentHostVersion }\n } finally {\n host.dispose()\n rmSync(auditWorkspace, { recursive: true, force: true })\n }\n}\n\nfunction materializeAuditProbeWorkspace(\n sourceRoot: string, targetRoot: string, definitionInstruction: string,\n basicInstruction: string,\n): void {\n mkdirSync(targetRoot, { recursive: true })\n writeAtomic(join(targetRoot, definitionInstruction), readFileSync(\n join(sourceRoot, definitionInstruction), 'utf8'))\n const sourceBasic = dirname(join(sourceRoot, basicInstruction))\n const targetBasic = join(targetRoot, '.agents', 'skills', 'dingtalk-basic-behavior')\n mkdirSync(dirname(targetBasic), { recursive: true })\n cpSync(sourceBasic, targetBasic, { recursive: true })\n const config: Record<string, unknown> = {\n $schema: 'https://opencode.ai/config.json',\n instructions: [\n ...(definitionInstruction === 'AGENTS.md' ? [] : [definitionInstruction]),\n BASIC_INSTRUCTION,\n ],\n permission: { skill: { 'dingtalk-basic-behavior': 'allow' } },\n plugin: [],\n mcp: {},\n share: 'disabled',\n autoupdate: false,\n }\n writeAtomic(join(targetRoot, 'opencode.json'), JSON.stringify(config, null, 2) + '\\n')\n}\n\nfunction inspectSourceOpenCodeRuntime(\n command: string,\n root: string,\n environment: NodeJS.ProcessEnv,\n definitionInstruction: string,\n basicInstruction: string,\n): { summary: Record<string, unknown>; rawHash: string } {\n const parent = mkdtempSync(join(tmpdir(), 'dta-source-config-preflight-'))\n const workspace = join(parent, 'workspace')\n let stdout = ''\n try {\n mkdirSync(workspace, { recursive: true })\n cpSync(join(root, 'opencode.json'), join(workspace, 'opencode.json'))\n if (existsSync(join(root, definitionInstruction))) {\n const target = join(workspace, definitionInstruction)\n mkdirSync(dirname(target), { recursive: true })\n cpSync(join(root, definitionInstruction), target)\n }\n const basic = dirname(join(root, basicInstruction))\n if (existsSync(basic)) {\n const target = dirname(join(workspace, basicInstruction))\n mkdirSync(dirname(target), { recursive: true })\n cpSync(basic, target, {\n recursive: true,\n })\n }\n initializeProbeWorktree(workspace)\n const child = spawnSync(command, ['debug', 'config', '--pure'], {\n cwd: workspace,\n env: { ...environment, PWD: workspace },\n encoding: 'utf8',\n timeout: 30_000,\n maxBuffer: 8 * 1024 * 1024,\n })\n if (child.error || child.status !== 0) {\n throw new Error(`OpenCode 无法解析原项目 config: ${\n child.error?.message || String(child.stderr || child.stdout || '').trim()}`)\n }\n stdout = String(child.stdout || '')\n } finally {\n rmSync(parent, { recursive: true, force: true })\n }\n let value: Record<string, any>\n try {\n const parsed = JSON.parse(stdout)\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) throw new Error('not object')\n value = parsed\n } catch (error) {\n throw new Error(`OpenCode 原项目 resolved config 非法: ${error.message}`)\n }\n const instructions = value.instructions === undefined ? [] : value.instructions\n if (!Array.isArray(instructions) || instructions.some((item) => typeof item !== 'string')) {\n throw new Error('OpenCode 原项目 resolved instructions 不是 string array')\n }\n const definitionCount = countInstructionsForPath(root, instructions, definitionInstruction)\n const basicCount = countInstructionsForPath(root, instructions, basicInstruction)\n const expectedDefinitionCount = definitionInstruction === 'AGENTS.md' ? 0 : 1\n if (definitionCount !== expectedDefinitionCount || basicCount !== 1) {\n throw new Error(\n `OpenCode 原项目 resolved config 未形成唯一 Agent Definition + Basic: ` +\n `definition=${definitionCount} basic=${basicCount}`)\n }\n if (value.agent?.['dta-eval'] !== undefined) {\n throw new Error('原项目不得预置 dta-eval;该 Agent 仅由隔离评测器生成')\n }\n return {\n rawHash: digest(stdout),\n summary: {\n passed: true,\n definitionInstruction,\n definitionInstructionCount: definitionCount,\n basicInstructionCount: basicCount,\n instructions,\n pluginCount: Array.isArray(value.plugin) ? value.plugin.length : 0,\n mcpCount: value.mcp && typeof value.mcp === 'object' && !Array.isArray(value.mcp)\n ? Object.keys(value.mcp).length : 0,\n rawHash: digest(stdout),\n },\n }\n}\n\nfunction executeInheritanceProbe(\n sourceRoot: string,\n model: string,\n command: string,\n timeoutMs: number,\n reportEvidenceRoot: string,\n definitionInstruction: string,\n environment: NodeJS.ProcessEnv,\n): { result: Record<string, any>; evidence: Record<string, any> } {\n const referenceInstruction =\n '.agents/skills/dingtalk-basic-behavior/references/risk-authority-and-privacy.md'\n const definitionProbe = randomUUID()\n const referenceProbeStart = randomUUID()\n const referenceProbeEnd = randomUUID()\n const parent = mkdtempSync(join(tmpdir(), 'dta-agent-inheritance-probe-'))\n const sandbox = join(parent, 'workspace')\n try {\n mkdirSync(sandbox, { recursive: true })\n initializeProbeWorktree(sandbox)\n const sourceDefinitionPath = resolve(sourceRoot, definitionInstruction)\n const definitionPath = resolve(sandbox, definitionInstruction)\n const sourceBasicPath = join(sourceRoot, '.agents', 'skills', 'dingtalk-basic-behavior')\n const basicPath = join(sandbox, '.agents', 'skills', 'dingtalk-basic-behavior')\n const referencePath = resolve(sandbox, referenceInstruction)\n if (!isInside(sourceRoot, sourceDefinitionPath) || !existsSync(sourceDefinitionPath) ||\n !isInside(sandbox, definitionPath) || !existsSync(sourceBasicPath)) {\n throw new Error('隔离继承探针缺少 Agent Definition 或 Basic reference')\n }\n writeAtomic(definitionPath,\n `${readFileSync(sourceDefinitionPath, 'utf8').trimEnd()}\\n\\n<!-- dta-definition-probe:${definitionProbe} -->\\n`)\n mkdirSync(dirname(basicPath), { recursive: true })\n cpSync(sourceBasicPath, basicPath, { recursive: true })\n if (!isInside(sandbox, referencePath) || !existsSync(referencePath)) {\n throw new Error('隔离继承探针缺少风险/授权 reference')\n }\n const referenceBody = readFileSync(referencePath, 'utf8')\n if (referenceBody.split(/\\r?\\n/).some((line) => line.length > 2_000)) {\n throw new Error('Basic reference 含超过 OpenCode read 单行上限的内容,无法证明全文读取')\n }\n writeFileSync(referencePath,\n `<!-- dta-reference-probe:${referenceProbeStart} -->\\n\\n` +\n `${referenceBody.trimEnd()}\\n\\n` +\n `<!-- dta-reference-probe:${referenceProbeEnd} -->\\n`)\n const referenceLineCount = readFileSync(referencePath, 'utf8').split(/\\r?\\n/).length\n const sourceConfig = JSON.parse(readFileSync(join(sourceRoot, 'opencode.json'), 'utf8'))\n const permission = sourceConfig.permission && typeof sourceConfig.permission === 'object' &&\n !Array.isArray(sourceConfig.permission) ? sourceConfig.permission : {}\n const skill = permission.skill && typeof permission.skill === 'object' &&\n !Array.isArray(permission.skill) ? permission.skill : {}\n sourceConfig.instructions = [\n ...(definitionInstruction === 'AGENTS.md' ? [] : [definitionInstruction]),\n BASIC_INSTRUCTION,\n ]\n delete sourceConfig.provider\n sourceConfig.plugin = []\n sourceConfig.mcp = {}\n sourceConfig.permission = {\n ...permission,\n external_directory: 'deny',\n skill: { ...skill, 'dingtalk-basic-behavior': 'allow' },\n }\n writeAtomic(join(sandbox, 'opencode.json'), JSON.stringify(sourceConfig, null, 2) + '\\n')\n\n const probeEnvironment = { ...environment, PWD: sandbox }\n const preflight = verifyRequiredBasicSkill(\n bindRequiredBasicSkill(sandbox), command, probeEnvironment)\n const basicResolvedCount = countInstructionsForPath(\n sandbox, preflight.resolvedInstructions, BASIC_INSTRUCTION)\n prepareOpenCodeEvalAgent(sandbox, 'none')\n const definitionEvalAgent = resolveOpenCodeEvalAgent(command, sandbox, probeEnvironment)\n const definitionPermissionPassed = zeroToolPermission(definitionEvalAgent)\n const definitionExecution = runOpenCodePrompt(\n command, sandbox, model,\n DEFINITION_PROBE_PROMPT,\n 'DTA Agent Definition inheritance probe', timeoutMs, '', probeEnvironment,\n )\n\n prepareOpenCodeEvalAgent(sandbox, 'workspace-read', [referenceInstruction])\n const referenceEvalAgent = resolveOpenCodeEvalAgent(command, sandbox, probeEnvironment)\n const referencePermissionPassed = targetReadPermission(\n referenceEvalAgent, sandbox, referenceInstruction)\n const referenceExecution = runOpenCodePrompt(\n command, sandbox, model,\n REFERENCE_PROBE_PROMPT,\n 'DTA Basic reference inheritance probe', timeoutMs, '', probeEnvironment,\n )\n\n const expectedDefinition = `dta-definition-probe=${definitionProbe}`\n const expectedReference =\n `dta-reference-probe=${referenceProbeStart}:${referenceProbeEnd}`\n const referenceReal = realpathSync(referencePath)\n const referenceRead = referenceExecution.toolTrace.some((item) =>\n item.name === 'read' && item.status === 'completed' &&\n item.paths.some((path) => realpathIfExists(path) === referenceReal))\n const completedReferenceReads = referenceExecution.toolTrace.filter((item) =>\n item.name === 'read' && item.status === 'completed')\n const referenceFullRead = completedReferenceReads.length === 1 &&\n fullReadWindow(completedReferenceReads[0].readWindow, referenceLineCount)\n const referenceToolsScoped = referenceExecution.toolCalls === 1 &&\n referenceExecution.toolTrace.length === referenceExecution.toolCalls &&\n referenceExecution.toolNames.length === 1 &&\n referenceExecution.toolNames[0] === 'read' &&\n referenceExecution.toolTrace.every((item) =>\n item.name === 'read' && item.paths.length === 1 &&\n item.paths.every((path) => realpathIfExists(path) === referenceReal)) &&\n referenceExecution.toolPaths.length === 1 &&\n realpathIfExists(referenceExecution.toolPaths[0]) === referenceReal\n const definitionRaw = persistProbeExecution(\n reportEvidenceRoot, 'definition', definitionExecution)\n const referenceRaw = persistProbeExecution(\n reportEvidenceRoot, 'reference', referenceExecution)\n const result = {\n passed: Boolean(definitionInstruction) && basicResolvedCount === 1 &&\n definitionPermissionPassed && referencePermissionPassed &&\n definitionExecution.exitCode === 0 && definitionExecution.directoryMatched &&\n definitionExecution.toolCalls === 0 &&\n definitionExecution.answer.trim() === expectedDefinition &&\n referenceExecution.exitCode === 0 && referenceExecution.directoryMatched &&\n referenceExecution.answer.trim() === expectedReference &&\n referenceRead && referenceFullRead && referenceToolsScoped,\n definition: executionProbeSummary(definitionExecution, expectedDefinition, {\n nativeRule: definitionInstruction,\n permissionPassed: definitionPermissionPassed,\n evalAgent: definitionEvalAgent,\n raw: definitionRaw,\n }, sandbox),\n reference: executionProbeSummary(referenceExecution, expectedReference, {\n path: referenceInstruction, read: referenceRead, toolsScoped: referenceToolsScoped,\n fullRead: referenceFullRead,\n requiredLines: referenceLineCount,\n permissionPassed: referencePermissionPassed,\n evalAgent: referenceEvalAgent,\n raw: referenceRaw,\n }, sandbox),\n host: {\n model,\n openCodeVersion: preflight.openCodeVersion,\n basicResolvedCount,\n },\n }\n const resultPath = join(reportEvidenceRoot, 'inheritance-probes', 'result.json')\n writeAtomic(resultPath, JSON.stringify(result, null, 2) + '\\n')\n return {\n result,\n evidence: {\n resultPath: relative(reportEvidenceRoot, resultPath).split('\\\\').join('/'),\n resultHash: digest(readFileSync(resultPath, 'utf8')),\n },\n }\n } finally {\n rmSync(parent, { recursive: true, force: true })\n }\n}\n\nfunction initializeProbeWorktree(workspace: string): void {\n const command = process.env.DTA_GIT_BIN ||\n (existsSync('/usr/bin/git') ? '/usr/bin/git' : 'git')\n const child = spawnSync(command, ['init', '--quiet'], {\n cwd: workspace, encoding: 'utf8', timeout: 30_000, maxBuffer: 1024 * 1024,\n })\n if (child.error || child.status !== 0) {\n throw new Error(`继承探针无法初始化隔离 git worktree: ${\n child.error?.message || String(child.stderr || child.stdout || '').trim()}`)\n }\n}\n\nfunction executionProbeSummary(\n execution: OpenCodeExecution,\n expected: string,\n extra: Record<string, unknown>,\n sandbox: string,\n): Record<string, unknown> {\n return {\n passed: execution.exitCode === 0 && execution.directoryMatched &&\n execution.answer.trim() === expected,\n exact: execution.answer.trim() === expected,\n expected,\n answer: execution.answer.trim(),\n exitCode: execution.exitCode,\n directoryMatched: execution.directoryMatched,\n sessionId: execution.sessionId,\n sessionDirectory: execution.sessionDirectory,\n toolCalls: execution.toolCalls,\n toolNames: execution.toolNames,\n toolPaths: execution.toolPaths.map((path) => normalizedProbePath(sandbox, path)),\n toolTrace: execution.toolTrace.map((item) => ({\n ...item,\n paths: item.paths.map((path) => normalizedProbePath(sandbox, path)),\n })),\n durationMs: execution.durationMs,\n ...extra,\n }\n}\n\nfunction persistProbeExecution(\n reportRoot: string, name: string, execution: OpenCodeExecution,\n): Record<string, unknown> {\n const evidenceRoot = join(reportRoot, 'inheritance-probes')\n mkdirSync(evidenceRoot, { recursive: true })\n const stdoutPath = join(evidenceRoot, `${name}.stdout.ndjson`)\n const stderrPath = join(evidenceRoot, `${name}.stderr.log`)\n const exportStdoutPath = join(evidenceRoot, `${name}.export.stdout.json`)\n const exportStderrPath = join(evidenceRoot, `${name}.export.stderr.log`)\n writeAtomic(stdoutPath, execution.stdout)\n writeAtomic(stderrPath, execution.stderr)\n writeAtomic(exportStdoutPath, execution.sessionExport.stdout)\n writeAtomic(exportStderrPath, execution.sessionExport.stderr)\n return {\n stdoutPath: relative(reportRoot, stdoutPath).split('\\\\').join('/'),\n stdoutHash: digest(execution.stdout),\n stderrPath: relative(reportRoot, stderrPath).split('\\\\').join('/'),\n stderrHash: digest(execution.stderr),\n exportStdoutPath: relative(reportRoot, exportStdoutPath).split('\\\\').join('/'),\n exportStdoutHash: digest(execution.sessionExport.stdout),\n exportStderrPath: relative(reportRoot, exportStderrPath).split('\\\\').join('/'),\n exportStderrHash: digest(execution.sessionExport.stderr),\n exportExitCode: execution.sessionExport.exitCode,\n }\n}\n\nfunction normalizedProbePath(sandbox: string, path: string): string {\n const candidate = realpathIfExists(path)\n return isInside(realpathSync(sandbox), candidate)\n ? relative(realpathSync(sandbox), candidate).split('\\\\').join('/')\n : candidate\n}\n\nfunction zeroToolPermission(agent: Record<string, any>): boolean {\n const tools = agent.tools\n const permission = agent.permission\n return Boolean(tools && typeof tools === 'object' && tools['*'] === false &&\n Object.values(tools).every((allowed) => allowed === false) &&\n permission && typeof permission === 'object' && permission['*'] === 'deny' &&\n permission.external_directory === 'deny')\n}\n\nfunction targetReadPermission(\n agent: Record<string, any>, workspace: string, target: string,\n): boolean {\n const tools = agent.tools\n const permission = agent.permission\n const read = permission?.read\n if (!tools || typeof tools !== 'object' || tools['*'] !== false || tools.read !== true ||\n Object.entries(tools).some(([name, allowed]) =>\n !['*', 'read'].includes(name) || allowed !== (name === 'read')) ||\n !permission || typeof permission !== 'object' || permission['*'] !== 'deny' ||\n permission.external_directory !== 'deny' || !read || typeof read !== 'object' ||\n Array.isArray(read) || read['*'] !== 'deny') return false\n const allowed = Object.entries(read).filter(([pattern, action]) =>\n pattern !== '*' && action === 'allow')\n const absolute = resolve(workspace, target)\n const expected = new Set([target, absolute].map(normalizedInstructionPattern))\n const canonicalAbsolute = normalizedInstructionPattern(absolute)\n expected.add(normalizedInstructionPattern(\n relative(parse(canonicalAbsolute).root, canonicalAbsolute)))\n if (existsSync(absolute)) {\n const real = realpathSync(absolute)\n expected.add(normalizedInstructionPattern(real))\n expected.add(normalizedInstructionPattern(relative(parse(real).root, real)))\n }\n const actual = new Set(allowed.map(([pattern]) => normalizedInstructionPattern(pattern)))\n return actual.size === expected.size && [...actual].every((pattern) => expected.has(pattern)) &&\n Object.entries(read).every(([pattern, action]) =>\n pattern === '*' ? action === 'deny' : action === 'allow')\n}\n\nfunction normalizedInstructionPattern(pattern: string): string {\n const normalized = pattern.replace(/\\\\/g, '/').replace(/^\\.\\//, '')\n if (!normalized.startsWith('/') && !/^[a-zA-Z]:\\//.test(normalized)) return normalized\n const original = resolve(normalized)\n let ancestor = original\n while (!existsSync(ancestor) && dirname(ancestor) !== ancestor) ancestor = dirname(ancestor)\n try {\n const suffix = relative(ancestor, original)\n return resolve(realpathSync(ancestor), suffix).replace(/\\\\/g, '/')\n } catch { return original.replace(/\\\\/g, '/') }\n}\n\nfunction fullReadWindow(\n window: { offset?: unknown; limit?: unknown } | null | undefined,\n requiredLines: number,\n): boolean {\n const offset = window?.offset\n const limit = window?.limit\n return (offset === null || offset === undefined || offset === 0 || offset === 1) &&\n (limit === null || limit === undefined ||\n (Number.isInteger(limit) && Number(limit) >= requiredLines))\n}\n\nfunction validRandomProbe(value: unknown, name: string): boolean {\n if (typeof value !== 'string') return false\n const uuid = '[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}'\n const count = name === 'dta-reference-probe' ? 2 : 1\n return new RegExp(`^${name}=${uuid}${count === 2 ? `:${uuid}` : ''}$`).test(value)\n}\n\nfunction verifyLoadProbeSet(\n root: string, reportPath: string, report: Record<string, any>, primaryName: string,\n comparisonName: string, basic: BasicSkillSource, definitionInstruction: string,\n expectedRuns: number,\n): {\n passed: boolean\n primary: Record<string, any>[]\n comparison: Record<string, any>[]\n passedPrimary: number\n passedComparison: number\n expectedRuns: number\n} {\n const all = Array.isArray(report.loadProbes) ? report.loadProbes : []\n const declaredRuns = Number(report.summary?.runsPerConfiguration)\n const primary = all.filter((item: any) => item.configuration === primaryName)\n const comparison = all.filter((item: any) => item.configuration === comparisonName)\n const version = String(report.engine?.version || '')\n const runNumbersValid = (items: Record<string, any>[]) =>\n items.length === expectedRuns &&\n new Set(items.map((item) => item.runNumber)).size === expectedRuns &&\n items.every((item) => Number.isInteger(item.runNumber) &&\n item.runNumber >= 1 && item.runNumber <= expectedRuns)\n const common = (item: Record<string, any>) => {\n const expectedInstructions = item.expectsLoad === true\n ? [\n BASIC_INSTRUCTION,\n ...(definitionInstruction === 'AGENTS.md' ? [] : [definitionInstruction]),\n ].sort()\n : []\n return loadProbeCorePassed(item, version) &&\n stableStringify(item.resolvedInstructions) === stableStringify(expectedInstructions) &&\n verifyLoadProbeRaw(\n root, reportPath, item, String(report.engine?.model || ''))\n }\n const primaryPassed = primary.filter((item) => common(item) && item.skill?.hash === basic.hash)\n const comparisonPassed = comparison.filter((item) => common(item))\n const knownConfigurations = new Set([primaryName, comparisonName])\n const uniqueNonEmpty = (values: unknown[]) => values.every((value) =>\n typeof value === 'string' && Boolean(value)) && new Set(values).size === values.length\n const rawStdoutPaths = all.map((item: any) => item.raw?.stdoutPath)\n const rawStdoutHashes = all.map((item: any) => item.raw?.stdoutHash)\n const rawExportPaths = all.map((item: any) => item.raw?.exportStdoutPath)\n const rawExportHashes = all.map((item: any) => item.raw?.exportStdoutHash)\n const configurationGates = report.summary?.configurationLoadGates || {}\n const gatesRecomputed = [primaryName, comparisonName].every((name) => {\n const gate = configurationGates[name]\n return gate?.passed === true && gate?.totalRuns === expectedRuns &&\n gate?.passedRuns === expectedRuns\n })\n const shapeValid = Number.isInteger(expectedRuns) && expectedRuns > 0 &&\n declaredRuns === expectedRuns &&\n all.length === expectedRuns * 2 &&\n all.every((item: any) => knownConfigurations.has(item.configuration)) &&\n runNumbersValid(primary) && runNumbersValid(comparison) && gatesRecomputed &&\n uniqueNonEmpty(all.map((item: any) => item.challenge)) &&\n uniqueNonEmpty(all.map((item: any) => item.sessionId)) &&\n uniqueNonEmpty(rawStdoutPaths) && uniqueNonEmpty(rawStdoutHashes) &&\n uniqueNonEmpty(rawExportPaths) && uniqueNonEmpty(rawExportHashes)\n return {\n passed: shapeValid && primaryPassed.length === expectedRuns &&\n comparisonPassed.length === expectedRuns,\n primary,\n comparison,\n passedPrimary: primaryPassed.length,\n passedComparison: comparisonPassed.length,\n expectedRuns,\n }\n}\n\nfunction verifyLoadProbeRaw(\n root: string, reportPath: string, probe: Record<string, any>, model: string,\n): boolean {\n const raw = probe.raw\n if (!raw || typeof raw !== 'object') return false\n const reportRoot = dirname(reportPath)\n const stdout = readBoundEvidenceFile(root, reportRoot, raw.stdoutPath, raw.stdoutHash)\n const stderr = readBoundEvidenceFile(root, reportRoot, raw.stderrPath, raw.stderrHash)\n const exportStdout = readBoundEvidenceFile(\n root, reportRoot, raw.exportStdoutPath, raw.exportStdoutHash)\n const exportStderr = readBoundEvidenceFile(\n root, reportRoot, raw.exportStderrPath, raw.exportStderrHash)\n if (stdout === null || stderr === null || exportStdout === null || exportStderr === null ||\n raw.exportExitCode !== 0) return false\n const parsed = parsePersistedProbeOutput(stdout)\n let exported: Record<string, any>\n try { exported = JSON.parse(exportStdout) }\n catch { return false }\n return parsed.valid && parsed.answer === String(probe.answer || '').trim() &&\n parsed.toolTrace.length === 0 && parsed.sessionIds.length === 1 &&\n parsed.sessionIds[0] === probe.sessionId &&\n verifyExportedSession(\n exported, probe.sessionId, probe.sessionDirectory, model,\n OPENCODE_LOAD_PROBE_PROMPT) &&\n !OPENCODE_LOAD_PROBE_PROMPT.includes(String(probe.challenge || ''))\n}\n\nfunction verifyExportedSession(\n exported: Record<string, any>, sessionId: string, directory: string,\n model: string, expectedPrompt: string,\n): boolean {\n if (String(exported?.info?.id || '') !== sessionId ||\n String(exported?.info?.directory || '') !== directory ||\n !Array.isArray(exported?.messages) || !model.includes('/')) return false\n const [providerID, ...modelParts] = model.split('/')\n const modelID = modelParts.join('/')\n const userTexts = exported.messages\n .filter((message: any) => message?.info?.role === 'user')\n .flatMap((message: any) => Array.isArray(message.parts) ? message.parts : [])\n .filter((part: any) => part?.type === 'text')\n .map((part: any) => String(part.text || ''))\n const modelMatched = exported.messages.some((message: any) =>\n message?.info?.role === 'assistant' &&\n String(message.info.providerID || '') === providerID &&\n String(message.info.modelID || '') === modelID)\n // OpenCode 1.17.x may persist a positional CLI prompt as its JSON string\n // representation (including the surrounding quotes). Accept only that exact\n // encoding in addition to the historical verbatim form so evidence remains\n // strict while supporting both export formats.\n const promptMatched = userTexts.length === 1 &&\n (userTexts[0] === expectedPrompt || userTexts[0] === JSON.stringify(expectedPrompt))\n return promptMatched && modelMatched\n}\n\nfunction realpathIfExists(path: string): string {\n try { return existsSync(path) ? realpathSync(path) : resolve(path) }\n catch { return resolve(path) }\n}\n\nfunction readLoadEvidence(\n root: string, input: string, expectedTargetHash: string,\n): { path: string; reportPath: string; report: Record<string, any> } {\n const loaded = readReport(root, input, 'Agent audit load evidence')\n const value = loaded.value\n if (value.$schema !== 'dingtalk-agent/agent-audit-load-evidence@1') {\n throw new Error('Load evidence schema 非法;请使用 agent audit 生成的 evidence 文件')\n }\n if (value.targetHash !== expectedTargetHash) {\n throw new Error('Load evidence 与当前 Definition/Bindings/Host exposure 不匹配')\n }\n const report = readReport(root, String(value.reportPath || ''), 'OpenCode load report')\n if (digest(readFileSync(report.path, 'utf8')) !== value.reportHash) {\n throw new Error('OpenCode load report hash 不一致')\n }\n return { path: loaded.path, reportPath: report.path, report: report.value }\n}\n\nfunction verifyLoadReport(\n root: string, reportPath: string, report: Record<string, any>,\n basic: BasicSkillSource, definitionInstruction: string, model: string,\n currentHostVersion: string,\n): { passed: boolean; evidence: Record<string, unknown> } {\n const configuration = 'with_skill'\n const comparison = 'without_skill'\n const probeSet = verifyLoadProbeSet(\n root, reportPath, report, configuration, comparison, basic, definitionInstruction, 1)\n const probes = probeSet.primary\n const source = report.skills?.[configuration]\n const gate = report.summary?.configurationLoadGates?.[configuration]\n const definition = report.inheritanceProbe?.definition || {}\n const reference = report.inheritanceProbe?.reference || {}\n const definitionPassed = validRandomProbe(\n definition.expected, 'dta-definition-probe') &&\n definition.answer === definition.expected && definition.exitCode === 0 &&\n definition.directoryMatched === true && definition.toolCalls === 0 &&\n Array.isArray(definition.toolNames) && definition.toolNames.length === 0 &&\n Array.isArray(definition.toolPaths) && definition.toolPaths.length === 0 &&\n Array.isArray(definition.toolTrace) && definition.toolTrace.length === 0 &&\n definition.nativeRule === definitionInstruction && Boolean(definitionInstruction) &&\n definition.permissionPassed === true &&\n zeroToolPermission(definition.evalAgent || {})\n const referenceTrace = Array.isArray(reference.toolTrace) ? reference.toolTrace : []\n const referenceRead = referenceTrace.some((item: any) =>\n item?.name === 'read' && item?.status === 'completed' &&\n Array.isArray(item.paths) && item.paths.length === 1 &&\n item.paths[0] === reference.path)\n const completedReferenceReads = referenceTrace.filter((item: any) =>\n item?.name === 'read' && item?.status === 'completed')\n const referenceFullRead = Number.isInteger(reference.requiredLines) &&\n reference.requiredLines > 0 && completedReferenceReads.length === 1 &&\n fullReadWindow(completedReferenceReads[0]?.readWindow, reference.requiredLines)\n const referenceToolsScoped = reference.toolCalls === 1 &&\n referenceTrace.length === 1 &&\n Array.isArray(reference.toolNames) && reference.toolNames.length === 1 &&\n reference.toolNames[0] === 'read' &&\n referenceTrace.every((item: any) => item?.name === 'read' &&\n Array.isArray(item.paths) && item.paths.length === 1 && item.paths[0] === reference.path) &&\n Array.isArray(reference.toolPaths) && reference.toolPaths.length === 1 &&\n reference.toolPaths[0] === reference.path\n const referencePassed = reference.path ===\n '.agents/skills/dingtalk-basic-behavior/references/risk-authority-and-privacy.md' &&\n validRandomProbe(reference.expected, 'dta-reference-probe') &&\n reference.answer === reference.expected && reference.exitCode === 0 &&\n reference.directoryMatched === true && referenceRead && referenceFullRead &&\n reference.fullRead === true && referenceToolsScoped &&\n reference.permissionPassed === true &&\n targetReadPermission(\n reference.evalAgent || {}, String(reference.sessionDirectory || ''), reference.path)\n const inheritanceEvidenceValid = verifyInheritanceEvidence(\n root, reportPath, report.inheritanceProbe, report.inheritanceEvidence)\n const sourceConfigEvidenceValid = verifySourceConfigEvidence(\n root, reportPath, report.sourceConfigPreflight, report.sourceConfigEvidence)\n const hostMatched = report.engine?.model === model &&\n typeof report.engine?.version === 'string' && Boolean(report.engine.version) &&\n report.engine.version === currentHostVersion &&\n report.inheritanceProbe?.host?.model === report.engine.model &&\n report.inheritanceProbe?.host?.openCodeVersion === report.engine.version &&\n report.inheritanceProbe?.host?.basicResolvedCount === 1\n const passed = report.$schema === 'dingtalk-agent/opencode-eval-report@1' &&\n report.passed === true && report.summary?.hardGate === true &&\n report.dingtalkSideEffect === false && source?.name === basic.name &&\n source?.version === basic.version && source?.hash === basic.hash &&\n report.summary?.loadGate === true && gate?.passed === true && probeSet.passed &&\n definitionPassed && referencePassed && inheritanceEvidenceValid &&\n sourceConfigEvidenceValid && hostMatched\n return {\n passed,\n evidence: {\n schema: report.$schema || '', configuration, sourceHash: source?.hash || '',\n expectedHash: basic.hash, loadGate: report.summary?.loadGate === true,\n passedProbes: probeSet.passedPrimary,\n baselineAntiGuessProbes: probeSet.passedComparison,\n expectedRunsPerConfiguration: probeSet.expectedRuns,\n definitionInstruction,\n definitionNativeRule: definition.nativeRule === definitionInstruction,\n totalProbes: probes.length,\n definitionProbePassed: definitionPassed,\n referenceProbePassed: referencePassed,\n inheritanceProbePassed: definitionPassed && referencePassed &&\n inheritanceEvidenceValid && hostMatched,\n inheritanceEvidenceValid,\n sourceConfigEvidenceValid,\n hostMatched,\n inheritanceDefinition: definition,\n inheritanceReference: reference,\n },\n }\n}\n\nfunction verifySourceConfigEvidence(\n root: string, reportPath: string, summary: unknown, evidence: unknown,\n): boolean {\n if (!summary || typeof summary !== 'object' || Array.isArray(summary) ||\n !evidence || typeof evidence !== 'object' || Array.isArray(evidence)) return false\n const value = summary as Record<string, any>\n const manifest = evidence as Record<string, any>\n const expectedDefinitionCount = value.definitionInstruction === 'AGENTS.md' ? 0 : 1\n if (value.passed !== true || typeof value.definitionInstruction !== 'string' ||\n !value.definitionInstruction ||\n value.definitionInstructionCount !== expectedDefinitionCount ||\n value.basicInstructionCount !== 1 ||\n typeof value.rawHash !== 'string' || !value.rawHash ||\n manifest.rawHash !== value.rawHash) return false\n const body = readBoundEvidenceFile(\n root, dirname(reportPath), manifest.path, manifest.hash)\n if (body === null) return false\n try { return stableStringify(JSON.parse(body)) === stableStringify(value) }\n catch { return false }\n}\n\nfunction verifyInheritanceEvidence(\n root: string, reportPath: string, probe: unknown, evidence: unknown,\n): boolean {\n if (!reportPath || !probe || typeof probe !== 'object' || !evidence ||\n typeof evidence !== 'object' || Array.isArray(evidence)) return false\n const manifest = evidence as Record<string, any>\n const reportRoot = dirname(reportPath)\n const result = readBoundEvidenceFile(\n root, reportRoot, manifest.resultPath, manifest.resultHash)\n if (!result) return false\n try {\n if (stableStringify(JSON.parse(result)) !== stableStringify(probe)) return false\n } catch { return false }\n const value = probe as Record<string, any>\n const rawBodies: Record<string, string> = {}\n const rawValid = ['definition', 'reference'].every((name) => {\n const raw = value[name]?.raw\n if (!raw || typeof raw !== 'object') return false\n const stdout = readBoundEvidenceFile(root, reportRoot, raw.stdoutPath, raw.stdoutHash)\n const stderr = readBoundEvidenceFile(root, reportRoot, raw.stderrPath, raw.stderrHash)\n const exportStdout = readBoundEvidenceFile(\n root, reportRoot, raw.exportStdoutPath, raw.exportStdoutHash)\n const exportStderr = readBoundEvidenceFile(\n root, reportRoot, raw.exportStderrPath, raw.exportStderrHash)\n if (stdout === null || stderr === null || exportStdout === null || exportStderr === null ||\n raw.exportExitCode !== 0) return false\n try {\n const exported = JSON.parse(exportStdout)\n const expectedPrompt = name === 'definition'\n ? DEFINITION_PROBE_PROMPT : REFERENCE_PROBE_PROMPT\n if (!verifyExportedSession(\n exported, String(value[name]?.sessionId || ''),\n String(value[name]?.sessionDirectory || ''),\n String(value.host?.model || ''), expectedPrompt)) return false\n } catch { return false }\n rawBodies[name] = stdout\n return true\n })\n if (!rawValid) return false\n const definitionRaw = parsePersistedProbeOutput(rawBodies.definition)\n const referenceRaw = parsePersistedProbeOutput(rawBodies.reference)\n const summaryReferenceTrace = Array.isArray(value.reference?.toolTrace)\n ? value.reference.toolTrace : []\n const rawCompletedReads = referenceRaw.toolTrace.filter((item) =>\n item.name === 'read' && item.status === 'completed')\n return definitionRaw.valid && definitionRaw.answer === value.definition?.answer &&\n definitionRaw.sessionIds.length === 1 &&\n definitionRaw.sessionIds[0] === value.definition?.sessionId &&\n definitionRaw.toolTrace.length === 0 &&\n referenceRaw.valid && referenceRaw.answer === value.reference?.answer &&\n referenceRaw.sessionIds.length === 1 &&\n referenceRaw.sessionIds[0] === value.reference?.sessionId &&\n referenceRaw.toolTrace.length === value.reference?.toolCalls &&\n referenceRaw.toolTrace.length === summaryReferenceTrace.length &&\n referenceRaw.toolTrace.every((item, index) =>\n stableStringify(item.readWindow) ===\n stableStringify(summaryReferenceTrace[index]?.readWindow)) &&\n rawCompletedReads.length === 1 &&\n fullReadWindow(rawCompletedReads[0].readWindow, value.reference?.requiredLines) &&\n referenceRaw.toolTrace.every((item) => item.name === 'read' &&\n item.paths.length === 1 && item.paths[0] === value.reference?.path)\n}\n\nfunction parsePersistedProbeOutput(body: string): {\n valid: boolean\n answer: string\n sessionIds: string[]\n toolTrace: Array<{\n name: string\n status: string\n paths: string[]\n readWindow: { offset: number | null; limit: number | null }\n }>\n} {\n const events: Record<string, any>[] = []\n for (const line of body.split(/\\r?\\n/)) {\n if (!line.trim()) continue\n try { events.push(JSON.parse(line)) }\n catch { return { valid: false, answer: '', sessionIds: [], toolTrace: [] } }\n }\n const answer = events.filter((event) =>\n event.type === 'text' && event.part?.type === 'text')\n .map((event) => String(event.part.text || '')).join('\\n').trim()\n const toolEvents = events.filter((event) =>\n String(event.type || '').includes('tool') || event.part?.type === 'tool')\n return {\n valid: events.length > 0,\n answer,\n sessionIds: [...new Set(events.map((event) => String(event.sessionID || ''))\n .filter(Boolean))],\n toolTrace: toolEvents.map((event) => ({\n name: String(event.part?.tool || event.part?.name || event.tool || event.name || ''),\n status: String(event.part?.state?.status || event.status || ''),\n paths: persistedToolPaths(event),\n readWindow: persistedReadWindow(event),\n })),\n }\n}\n\nfunction persistedReadWindow(event: Record<string, any>): {\n offset: number | null\n limit: number | null\n} {\n const input = event.part?.state?.input\n return {\n offset: Number.isInteger(input?.offset) ? Number(input.offset) : null,\n limit: Number.isInteger(input?.limit) ? Number(input.limit) : null,\n }\n}\n\nfunction persistedToolPaths(event: Record<string, any>): string[] {\n const paths: string[] = []\n for (const candidate of [event.part?.state?.input, event.part?.state?.metadata]) {\n if (!candidate || typeof candidate !== 'object') continue\n for (const [key, value] of Object.entries(candidate)) {\n if (!['filePath', 'filepath', 'path', 'directory'].includes(key) ||\n typeof value !== 'string') continue\n const normalized = value.replace(/\\\\/g, '/').replace(/^\\.\\//, '')\n const target = '.agents/skills/dingtalk-basic-behavior/references/' +\n 'risk-authority-and-privacy.md'\n paths.push(normalized === target || normalized.endsWith(`/${target}`)\n ? target : normalized)\n }\n }\n return [...new Set(paths)]\n}\n\nfunction readBoundEvidenceFile(\n root: string, reportRoot: string, input: unknown, expectedHash: unknown,\n): string | null {\n if (typeof input !== 'string' || !input || typeof expectedHash !== 'string' ||\n !/^[a-f0-9]{64}$/.test(expectedHash)) return null\n const candidate = resolve(reportRoot, input)\n if (!isInside(root, candidate) || !isInside(reportRoot, candidate) || !existsSync(candidate)) {\n return null\n }\n const path = realpathSync(candidate)\n if (!isInside(root, path) || !isInside(reportRoot, path) || !statSync(path).isFile()) return null\n const body = readFileSync(path, 'utf8')\n return digest(body) === expectedHash ? body : null\n}\n\nfunction verifyRemoteReport(\n report: Record<string, any>, definitionHash: string,\n routes: { memory: string; knowledge: string }, basic: BasicSkillSource,\n): { passed: boolean; evidence: Record<string, unknown> } {\n const mounts = Array.isArray(report.mounts) ? report.mounts : []\n const expected = Object.entries(routes)\n .filter(([, source]) => source.startsWith('dingtalk-doc:'))\n const matchedSlots = expected.filter(([slot, source]) => mounts.some(\n (item: any) => item.slot === slot && item.source === source && item.passed === true,\n ))\n const passed = report.$schema === 'dingtalk-agent/remote-state-eval-report@1' &&\n report.passed === true && report.identity?.matched === true &&\n report.definition?.hash === definitionHash && report.basicSkill?.skill?.hash === basic.hash &&\n report.modelProbe?.passed === true && matchedSlots.length === expected.length\n return {\n passed,\n evidence: {\n schema: report.$schema || '', passed: report.passed === true,\n identityMatched: report.identity?.matched === true,\n definitionMatched: report.definition?.hash === definitionHash,\n basicHashMatched: report.basicSkill?.skill?.hash === basic.hash,\n matchedRemoteSlots: matchedSlots.map(([slot]) => slot),\n expectedRemoteSlots: expected.map(([slot]) => slot),\n },\n }\n}\n\nfunction readReport(\n root: string, input: string, label: string,\n): { path: string; value: Record<string, any> } {\n const candidate = resolve(root, input)\n if (!isInside(root, candidate) || !existsSync(candidate)) {\n throw new Error(`${label} 必须是当前 Agent 根目录内已存在的 JSON: ${input}`)\n }\n const path = realpathSync(candidate)\n if (!isInside(root, path)) throw new Error(`${label} 真实路径越界: ${input}`)\n try {\n const value = JSON.parse(readFileSync(path, 'utf8'))\n if (!value || typeof value !== 'object' || Array.isArray(value)) throw new Error('must be object')\n return { path, value }\n } catch (error) {\n throw new Error(`${label} 非法: ${error.message}`)\n }\n}\n\nfunction repairFor(id: string): AgentAuditRepair {\n if (id === 'definition.semantic-contract') return {\n id, why: '结构化模板不能替代真实的本体定义、岗位底线、做事范式和常犯错误。',\n actions: ['评审并替换 manifest 中 agent.definition 指向文件的所有 <...> 占位符,再复跑 audit。'],\n }\n if (id === 'definition.body') return {\n id, why: 'Agent 必须有长期定义、岗位底线、做事范式和常犯错误。',\n actions: ['从 compose Skill 的 AGENTS.template.md 创建 agent/AGENTS.md,并由 manifest 的 agent.definition 指向它,再复跑 audit。'],\n }\n if (id === 'storage.memory') return {\n id, why: '跨 Session 的已评审语义记忆需要显式路由。',\n actions: ['创建 MEMORY.md,并绑定 memory=local-md:MEMORY.md;或配置专用 dingtalk-doc。'],\n }\n if (id === 'storage.knowledge') return {\n id, why: '长期知识和 SOP 不能只留在模型隐藏上下文。',\n actions: ['创建 knowledge/INDEX.md,并绑定 knowledge=local-md:knowledge/INDEX.md。'],\n }\n if (id === 'storage.artifacts') return {\n id, why: '完成声明必须落到可独立检查的本地产物目录。',\n actions: ['创建 agent.bindings.json 中 artifacts 指向的目录,并保持在 Agent 根目录内。'],\n }\n if (id === 'storage.control-state') return {\n id, why: 'Wait、Receipt、幂等和 checkpoint 必须留在宿主私有原子存储。',\n actions: ['把 stateDir 改为 Agent 根目录内的本地目录,例如 .dingtalk-agent。'],\n }\n if (id.startsWith('skill.role.') && id.endsWith('.semantic')) return {\n id, why: 'Role Skill 必须包含真实的领域输入、方法、产物和验收,而不是模板提示。',\n actions: [`评审并替换 agent.skillsRoot 下 ${id.slice('skill.role.'.length, -'.semantic'.length)}/SKILL.md 中所有 <...> 占位符。`],\n }\n if (id.startsWith('skill.role.')) return {\n id, why: '领域职责需要独立 Role Skill,不能写回 Basic Behavior。',\n actions: [`在 manifest 声明的 agent.skillsRoot 下创建 ${id.slice('skill.role.'.length)}/SKILL.md,并确保目录名等于 frontmatter name。`],\n }\n if (id === 'host.basic-exposure') return {\n id, why: 'OpenCode 只能从项目 exposure 完整继承本次装配的 Basic Skill 入口、references 与 assets。',\n actions: ['把 canonical dingtalk-basic-behavior 全树放入 agent.skillsRoot;由 dta 在隔离 Host 工作区临时物化 exposure。'],\n }\n if (id === 'host.definition-rule') return {\n id, why: 'Agent Definition 与仓库开发约束必须分离,重复 custom instruction 会形成冗余通道。',\n actions: ['让 managed Host 只加载一次 manifest 的 agent.definition;仓库根 AGENTS.md 仅保留 Coding Agent 开发约束。'],\n }\n if (id === 'host.basic-instruction') return {\n id, why: '目录发现不等于正文进入每个 Session。',\n actions: ['合并 opencode.json:Basic path 仅出现一次,并设置 permission.skill.dingtalk-basic-behavior=allow。'],\n }\n if (id.startsWith('host.role-exposure.')) return {\n id, why: 'Role Skill 的发布源、Host exposure 与权限必须指向同一版本。',\n actions: [`修复 agent.skillsRoot 下 ${id.slice('host.role-exposure.'.length)} 的唯一发布源;由 dta 临时物化 Host exposure、校验 hash 并设置 permission=allow。`],\n }\n if (id === 'host.load-probe') return {\n id, why: '静态目录和配置不能证明 Host 已解析 Agent Definition 并让模型读到 Basic 正文。',\n actions: ['执行 dta agent audit --verify-load --yes --json,保留 resolved instructions、随机 probe 与 Session directory 证据。'],\n }\n if (id === 'authority.dws') return {\n id, why: '远端语义状态必须绑定单一可信执行身份。',\n actions: ['配置 DWS profile 与 expectedUserId;不得从文档正文或显示名猜测。'],\n }\n if (id === 'storage.remote-readback') return {\n id, why: '远端缓存存在不能替代身份、类型、hash 和模型使用证据。',\n actions: ['运行 storage eval,保存独立 DWS readback,再用 --remote-report 复核。'],\n }\n return { id, why: '该装配条件尚未满足。', actions: ['修复对应绑定后重新运行 agent audit。'] }\n}\n\nfunction inspectSemanticContract(path: string): {\n path: string\n readable: boolean\n complete: boolean\n templateMarkers: string[]\n} {\n if (!path || !existsSync(path) || !statSync(path).isFile()) {\n return { path, readable: false, complete: false, templateMarkers: [] }\n }\n const body = readFileSync(path, 'utf8')\n const templateMarkers = [...body.matchAll(new RegExp(\n COMPOSE_TEMPLATE_MARKER.source, `${COMPOSE_TEMPLATE_MARKER.flags}g`,\n ))].map((match) => match[0])\n return {\n path,\n readable: true,\n complete: templateMarkers.length === 0,\n templateMarkers: [...new Set(templateMarkers)].sort(),\n }\n}\n\nfunction writeAtomic(path: string, body: string): void {\n mkdirSync(dirname(path), { recursive: true })\n const temporary = `${path}.${process.pid}.${Date.now()}.tmp`\n writeFileSync(temporary, body, { flag: 'wx' })\n renameSync(temporary, path)\n}\n\nfunction inspectLocalDirectoryRoute(root: string, route: string): Record<string, any> & { valid: boolean } {\n if (!route.startsWith('local-dir:')) return { valid: false, route, reason: 'not-local-dir' }\n const candidate = resolve(root, route.slice('local-dir:'.length))\n if (!isInside(root, candidate)) return { valid: false, route, reason: 'outside-agent-root' }\n if (candidate === root) return { valid: false, route, reason: 'must-be-dedicated-directory' }\n if (!existsSync(candidate) || !statSync(candidate).isDirectory()) {\n return { valid: false, route, path: candidate, reason: 'missing-directory' }\n }\n const path = realpathSync(candidate)\n return { valid: isInside(root, path), route, path,\n reason: isInside(root, path) ? '' : 'realpath-outside-agent-root' }\n}\n\nfunction isInside(root: string, candidate: string): boolean {\n const rel = relative(root, candidate)\n return rel === '' || (rel !== '..' && !rel.startsWith(`..${process.platform === 'win32' ? '\\\\' : '/'}`))\n}\n\nfunction inspectContainedPath(\n root: string, input: string,\n): { valid: boolean; path: string; reason: string } {\n const rootReal = realpathSync(resolve(root))\n const candidate = resolve(rootReal, input)\n if (!isInside(rootReal, candidate)) {\n return { valid: false, path: candidate, reason: 'outside-agent-root' }\n }\n const rel = relative(rootReal, candidate)\n let cursor = rootReal\n for (const segment of rel.split(/[\\\\/]/).filter(Boolean)) {\n cursor = join(cursor, segment)\n if (!pathEntryExists(cursor)) break\n const info = lstatSync(cursor)\n if (info.isSymbolicLink()) {\n return { valid: false, path: candidate, reason: `symlink:${relative(rootReal, cursor)}` }\n }\n if (cursor !== candidate && !info.isDirectory()) {\n return { valid: false, path: candidate, reason: `non-directory-ancestor:${relative(rootReal, cursor)}` }\n }\n }\n let ancestor = candidate\n while (!pathEntryExists(ancestor) && dirname(ancestor) !== ancestor) ancestor = dirname(ancestor)\n try {\n const projected = resolve(realpathSync(ancestor), relative(ancestor, candidate))\n if (!isInside(rootReal, projected)) {\n return { valid: false, path: candidate, reason: 'realpath-outside-agent-root' }\n }\n } catch (error) {\n return { valid: false, path: candidate, reason: `realpath-error:${error.message}` }\n }\n return { valid: true, path: candidate, reason: '' }\n}\n\nfunction pathEntryExists(path: string): boolean {\n try { lstatSync(path); return true }\n catch { return false }\n}\n"]}