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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/CHANGELOG.md +232 -0
  2. package/README.en.md +115 -89
  3. package/README.md +111 -86
  4. package/dist/bin/dingtalk-agent.js +742 -152
  5. package/dist/bin/dingtalk-agent.js.map +1 -1
  6. package/dist/src/actions.js +3 -2
  7. package/dist/src/actions.js.map +1 -1
  8. package/dist/src/agent-audit.js +202 -85
  9. package/dist/src/agent-audit.js.map +1 -1
  10. package/dist/src/agent-definition.js +7 -3
  11. package/dist/src/agent-definition.js.map +1 -1
  12. package/dist/src/agent-enhance.js +51 -32
  13. package/dist/src/agent-enhance.js.map +1 -1
  14. package/dist/src/agent-platform.js +4 -4
  15. package/dist/src/agent-platform.js.map +1 -1
  16. package/dist/src/bootstrap.js +6 -2
  17. package/dist/src/bootstrap.js.map +1 -1
  18. package/dist/src/development-workspace.js +210 -34
  19. package/dist/src/development-workspace.js.map +1 -1
  20. package/dist/src/doctor.js +65 -9
  21. package/dist/src/doctor.js.map +1 -1
  22. package/dist/src/dws.js +67 -3
  23. package/dist/src/dws.js.map +1 -1
  24. package/dist/src/init.js +2 -1
  25. package/dist/src/init.js.map +1 -1
  26. package/dist/src/memory/noop-receipt.js +306 -0
  27. package/dist/src/memory/noop-receipt.js.map +1 -0
  28. package/dist/src/memory/operational.js +27 -3
  29. package/dist/src/memory/operational.js.map +1 -1
  30. package/dist/src/memory/remote-state.js +2 -1
  31. package/dist/src/memory/remote-state.js.map +1 -1
  32. package/dist/src/multica-deploy.js +692 -125
  33. package/dist/src/multica-deploy.js.map +1 -1
  34. package/dist/src/multica-provider.js +303 -25
  35. package/dist/src/multica-provider.js.map +1 -1
  36. package/dist/src/multica-runtime-vocabulary.js +110 -0
  37. package/dist/src/multica-runtime-vocabulary.js.map +1 -0
  38. package/dist/src/opencode-evals.js +6 -6
  39. package/dist/src/opencode-evals.js.map +1 -1
  40. package/dist/src/opencode-provider.js +21 -7
  41. package/dist/src/opencode-provider.js.map +1 -1
  42. package/dist/src/opencode-workspace.js +3 -3
  43. package/dist/src/opencode-workspace.js.map +1 -1
  44. package/dist/src/personal-event-evals.js +4 -2
  45. package/dist/src/personal-event-evals.js.map +1 -1
  46. package/dist/src/promotion.js +2 -1
  47. package/dist/src/promotion.js.map +1 -1
  48. package/dist/src/remote-semantic-state-live-evals.js +14 -8
  49. package/dist/src/remote-semantic-state-live-evals.js.map +1 -1
  50. package/dist/src/remote-state-evals.js +2 -2
  51. package/dist/src/remote-state-evals.js.map +1 -1
  52. package/dist/src/robot-evals.js +3 -3
  53. package/dist/src/robot-evals.js.map +1 -1
  54. package/dist/src/schedule-plan.js +380 -0
  55. package/dist/src/schedule-plan.js.map +1 -0
  56. package/dist/src/sessions.js +1 -1
  57. package/dist/src/sessions.js.map +1 -1
  58. package/dist/src/skill-manager.js +145 -13
  59. package/dist/src/skill-manager.js.map +1 -1
  60. package/dist/src/skills.js +2 -0
  61. package/dist/src/skills.js.map +1 -1
  62. package/dist/src/tui.js +369 -0
  63. package/dist/src/tui.js.map +1 -0
  64. package/dist/src/upgrade.js +113 -33
  65. package/dist/src/upgrade.js.map +1 -1
  66. package/dist/src/waits.js +2 -1
  67. package/dist/src/waits.js.map +1 -1
  68. package/dist/src/workspace.js +12 -7
  69. package/dist/src/workspace.js.map +1 -1
  70. package/docs/AGENT-IN-PRODUCTION.md +255 -0
  71. package/docs/ARCHITECTURE.md +366 -0
  72. package/docs/INSTALLATION.md +8 -8
  73. package/docs/PLATFORM-GUARDRAILS.md +188 -0
  74. package/docs/PRIOR-ART.md +126 -0
  75. package/docs/SELF-TEST.md +182 -0
  76. package/docs/architecture/agent-platform-connection-layer.svg +120 -0
  77. package/docs/architecture/digital-employee-composition.svg +92 -0
  78. package/docs/architecture/dingtalk-agent-architecture.svg +125 -0
  79. package/docs/assets/digital-employee-at-work.svg +77 -0
  80. package/docs/schemas/multica-deployment-plan.schema.json +3 -1
  81. package/docs/schemas/multica-deployment-receipt.schema.json +17 -3
  82. package/docs/schemas/multica-deployment-status.schema.json +6 -2
  83. package/docs/schemas/multica-workspace-inspection.schema.json +16 -0
  84. package/docs/schemas/multica-workspace-run-plan.schema.json +31 -0
  85. package/docs/schemas/multica-workspace-run.schema.json +161 -0
  86. package/docs/schemas/multica-workspace-status.schema.json +2 -0
  87. package/docs/schemas/project.schema.json +54 -3
  88. package/docs/schemas/workspace-scaffold.schema.json +38 -0
  89. package/examples/agents/README.md +45 -0
  90. package/examples/agents/fde-coach/AGENTS.md +2 -25
  91. package/examples/agents/fde-coach/agent/AGENTS.md +35 -0
  92. package/examples/agents/fde-coach/agent.bindings.json +10 -0
  93. package/examples/agents/release-manager/AGENTS.md +2 -25
  94. package/examples/agents/release-manager/agent/AGENTS.md +35 -0
  95. package/examples/agents/release-manager/agent.bindings.json +10 -0
  96. package/lab/agent-eval/catalog.json +5 -5
  97. package/lab/agent-eval/classic-failures.json +4 -4
  98. package/lab/agent-eval/completion-gate-regression.json +9 -9
  99. package/lab/agent-eval/personal-event-live.example.json +3 -3
  100. package/lab/agent-eval/remote-semantic-state-live.example.json +1 -1
  101. package/lab/agent-eval/workspace/opencode.json +2 -2
  102. package/lab/project-workspace/fake-multica-provider.mjs +171 -17
  103. package/lab/project-workspace/multica-deploy.fixture.json +2 -2
  104. package/lab/project-workspace/multica-readonly.fixture.json +4 -16
  105. package/lab/project-workspace/opencode-provider-suite.json +3 -3
  106. package/lab/project-workspace/project.fixture.json +2 -6
  107. package/lab/robot-eval/suite.json +1 -1
  108. package/lab/robot-eval/workspace/AGENTS.md +1 -1
  109. package/lab/robot-eval/workspace/opencode.json +2 -2
  110. package/lab/schemas/personal-event-eval.schema.json +1 -1
  111. package/package.json +18 -11
  112. package/skills/README.md +10 -8
  113. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/SKILL.md +49 -24
  114. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/assets/AGENTS.template.md +1 -1
  115. package/skills/core/dta-agent-compose/assets/REPOSITORY.template.md +10 -0
  116. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/assets/agent.bindings.dingtalk-doc.template.json +2 -2
  117. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/assets/agent.bindings.local.template.json +2 -2
  118. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/assets/hosts/opencode/opencode.template.json +3 -2
  119. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/evals/evals.json +4 -4
  120. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/references/agent-definition-contract.md +7 -7
  121. package/skills/core/dta-agent-compose/references/drive-and-schedules.md +166 -0
  122. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/references/host-loading-contract.md +11 -13
  123. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/references/hosts/claude-code.md +13 -12
  124. package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/references/hosts/opencode.md +14 -13
  125. package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/SKILL.md +28 -3
  126. package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/assets/eval-catalog.template.json +1 -1
  127. package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/evals/evals.json +1 -1
  128. package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/eval-topology.md +3 -3
  129. package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/interactive-debug-channels.md +10 -4
  130. package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/SKILL.md +21 -5
  131. package/skills/core/dta-basic-behavior/references/event-to-behavior.md +38 -0
  132. package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/memory-and-evolution.md +3 -1
  133. package/skills/core/dta-basic-behavior/references/perception-and-gates.md +87 -0
  134. package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/risk-authority-and-privacy.md +12 -0
  135. package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/truth-and-recovery.md +4 -2
  136. package/skills/core/dta-people-group-memory/COMPLETENESS.md +36 -0
  137. package/skills/core/dta-people-group-memory/SKILL.md +69 -0
  138. package/skills/core/dta-people-group-memory/references/adapters.md +273 -0
  139. package/skills/core/dta-people-group-memory/references/assembly-guidance.md +40 -0
  140. package/skills/core/dta-people-group-memory/references/binding.md +110 -0
  141. package/skills/core/dta-people-group-memory/references/cold-start.md +70 -0
  142. package/skills/core/dta-people-group-memory/references/config-binding.md +89 -0
  143. package/skills/core/dta-people-group-memory/references/consent-and-visibility.md +83 -0
  144. package/skills/core/dta-people-group-memory/references/consolidation.md +162 -0
  145. package/skills/core/dta-people-group-memory/references/event-ingest.md +103 -0
  146. package/skills/core/dta-people-group-memory/references/guided-setup.md +70 -0
  147. package/skills/core/dta-people-group-memory/references/model.md +148 -0
  148. package/skills/core/dta-people-group-memory/references/storage-port.md +107 -0
  149. package/skills/platforms/deap/PLATFORM.md +30 -1
  150. package/skills/platforms/multica-dingtalk/PLATFORM.md +35 -9
  151. package/skills/platforms/multica-dingtalk/{dingtalk-agent-deploy-multica → dta-deploy-multica}/SKILL.md +10 -8
  152. package/skills/platforms/multica-dingtalk/dta-deploy-multica/references/multica-deployment-contract.md +67 -0
  153. package/skills/platforms/multica-dingtalk/{multica-external → dta-ops-multica}/SKILL.md +81 -11
  154. package/skills/platforms/multica-dingtalk/{multica-external → dta-ops-multica}/scripts/bootstrap.sh +2 -2
  155. package/skills/platforms/multica-dingtalk/{multica-external → dta-ops-multica}/scripts/multica_ext.py +264 -16
  156. package/dist/src/map.js +0 -157
  157. package/dist/src/map.js.map +0 -1
  158. package/docs/SECOND-AGENT-ACCEPTANCE.md +0 -62
  159. package/docs/architecture/agent-memory-topology.png +0 -0
  160. package/docs/architecture/agent-memory-topology.svg +0 -132
  161. package/docs/architecture/dingtalk-agent-blueprint.png +0 -0
  162. package/docs/architecture/durable-async-agent-runtime.png +0 -0
  163. package/docs/architecture/general-agent-kernel-topology.png +0 -0
  164. package/docs/architecture/provider-bound-development-workspace.png +0 -0
  165. package/docs/architecture/task-completion-gate.png +0 -0
  166. package/docs/assets/agent-delivery-lifecycle.svg +0 -103
  167. package/skills/core/dingtalk-basic-behavior/references/event-to-behavior.md +0 -24
  168. package/skills/core/dingtalk-basic-behavior/references/perception-and-gates.md +0 -28
  169. package/skills/platforms/deap/README.md +0 -3
  170. package/skills/platforms/multica-dingtalk/dingtalk-agent-boot-multica/SKILL.md +0 -40
  171. package/skills/platforms/multica-dingtalk/dingtalk-agent-deploy-multica/references/multica-deployment-contract.md +0 -49
  172. /package/examples/agents/fde-coach/{skills → agent/skills}/fde-coach/SKILL.md +0 -0
  173. /package/examples/agents/release-manager/{skills → agent/skills}/release-manager/SKILL.md +0 -0
  174. /package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/assets/role-skill.template.md +0 -0
  175. /package/skills/core/{dingtalk-agent-compose → dta-agent-compose}/references/storage-routing.md +0 -0
  176. /package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/evidence-contract.md +0 -0
  177. /package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/failure-to-case.md +0 -0
  178. /package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/local-connector-smoke.md +0 -0
  179. /package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/scenario-taxonomy.md +0 -0
  180. /package/skills/core/{dingtalk-agent-eval → dta-agent-eval}/references/storage-modes.md +0 -0
  181. /package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/assets/memory-candidate-proposal.json +0 -0
  182. /package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/assets/task-checkpoint.json +0 -0
  183. /package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/action-contract.md +0 -0
  184. /package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/runtime-modes.md +0 -0
  185. /package/skills/core/{dingtalk-basic-behavior → dta-basic-behavior}/references/task-lifecycle.md +0 -0
  186. /package/skills/platforms/multica-dingtalk/{dingtalk-agent-deploy-multica → dta-deploy-multica}/references/promotion-observation-contract.md +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"multica-deploy.js","sourceRoot":"","sources":["../../src/multica-deploy.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash, randomUUID } from 'node:crypto'\nimport { spawnSync } from 'node:child_process'\nimport {\n existsSync, lstatSync, mkdirSync, mkdtempSync, readFileSync, readdirSync,\n realpathSync, renameSync, rmSync, writeFileSync,\n} from 'node:fs'\nimport { tmpdir } from 'node:os'\nimport { basename, dirname, join, relative, resolve } from 'node:path'\nimport {\n WORKSPACE_STATE_ROOT, inspectAgentProject, showDevelopmentWorkspace,\n type DevelopmentWorkspaceState, type DevelopmentWorkspaceView,\n} from './development-workspace.js'\nimport { digest, stableStringify } from './events.js'\nimport {\n MULTICA_BOOT_SKILL, MULTICA_EVIDENCE_ROOT,\n inspectMulticaWorkspace, planMulticaWorkspace, statusMulticaWorkspace,\n type MulticaWorkspaceInspection,\n} from './multica-provider.js'\nimport { resolvePackageRoot } from './package-root.js'\nimport { bundledSkillPath } from './skill-manager.js'\n\nexport const MULTICA_DEPLOYMENT_SCHEMA = 'dingtalk-agent/multica-deployment-receipt@1'\nconst MAX_DEPLOY_SKILLS = 32\nconst MAX_SKILL_SUPPORTING_FILES = 128\nconst deploymentWriteBudgets = new WeakMap<MulticaDeploymentCall[], {\n forward: number; rollback: number\n}>()\n\ntype DeploymentAction = 'apply' | 'retire'\ntype DeploymentStatus = 'applying' | 'reconciling' | 'verifying' | 'ready' | 'failed' | 'retired'\n\nexport interface MulticaDeploymentPlan {\n $schema: 'dingtalk-agent/multica-deployment-plan@1'\n planId: string\n action: DeploymentAction\n workspace: string\n provider: 'multica'\n profile: string\n inspectionId: string\n desiredHash: string\n deploymentHash: string\n expected: {\n workspaceId: string\n runtimeId: string\n agentId: string\n agentName: string\n skills: Array<{ name: string; hash: string; files: number }>\n definitionHash: string\n instructionsHash: string\n }\n operations: string[]\n writeBudget: { forward: number; rollback: number }\n blocking: string[]\n requiresPlanId: true\n requiresExplicitYes: true\n remoteRead: false\n remoteWrite: false\n triggerWrite: false\n sideEffect: false\n dingtalkSideEffect: false\n}\n\nexport interface MulticaDeploymentCall {\n id: string\n kind: 'read' | 'write' | 'rollback'\n argv: string[]\n exitCode: number\n stdoutHash: string\n stderrHash: string\n passed: boolean\n ambiguous: boolean\n}\n\nexport interface MulticaDeploymentSmoke {\n status: 'not-run' | 'pending' | 'passed' | 'failed'\n marker: string\n markerHash: string\n issueId: string\n taskId: string\n taskStatus: string\n requiredSkills: string[]\n loadedSkills: string[]\n toolTracePassed: boolean\n responsePassed: boolean\n responseHash: string\n failures: string[]\n}\n\nexport interface MulticaDeploymentReceipt {\n $schema: 'dingtalk-agent/multica-deployment-receipt@1'\n receiptId: string\n operationId: string\n planId: string\n action: DeploymentAction\n workspace: string\n provider: 'multica'\n profile: string\n status: DeploymentStatus\n passed: boolean\n providerReady: boolean\n idempotent: boolean\n inspectionId: string\n inspectionObservedHash: string\n inspectionEvidencePath: string\n desiredHash: string\n deploymentHash: string\n observedHash: string\n agent: {\n id: string\n runtimeId: string\n instructionsHash: string\n archived: boolean\n action: 'create' | 'update' | 'restore' | 'archive' | 'noop' | 'unknown'\n }\n skills: Array<{\n id: string\n name: string\n sourceHash: string\n remoteHash: string\n action: 'create' | 'update' | 'noop' | 'unknown'\n }>\n assignmentHash: string\n calls: MulticaDeploymentCall[]\n smoke: MulticaDeploymentSmoke\n rollback: {\n attempted: boolean\n passed: boolean\n actions: string[]\n failures: string[]\n }\n failures: string[]\n evidencePath: string\n remoteRead: true\n remoteWrite: boolean\n triggerWrite: false\n sideEffect: 'multica-read-write' | 'multica-read' | 'none'\n dingtalkSideEffect: false\n}\n\nexport interface MulticaDeploymentOperation {\n $schema: 'dingtalk-agent/multica-deployment-operation@1'\n operationId: string\n planId: string\n workspace: string\n action: DeploymentAction\n status: DeploymentStatus\n profile: string\n workspaceId: string\n runtimeId: string\n agentId: string\n deploymentHash: string\n ambiguousAction: string\n receiptId: string\n receiptPath: string\n calls: MulticaDeploymentCall[]\n failures: string[]\n updatedAt: string\n}\n\nexport interface MulticaDeploymentStatusReport {\n $schema: 'dingtalk-agent/multica-deployment-status@1'\n workspace: string\n provider: 'multica'\n available: boolean\n operationId: string\n receiptId: string\n status: DeploymentStatus | 'missing'\n passed: boolean\n providerReady: boolean\n operationIntegrity: boolean\n receiptIntegrity: boolean\n reconciled: boolean\n failures: string[]\n receipt: MulticaDeploymentReceipt | null\n remoteRead: boolean\n remoteWrite: false\n triggerWrite: false\n sideEffect: false | 'multica-read'\n dingtalkSideEffect: false\n}\n\nexport interface MulticaDeploymentList {\n $schema: 'dingtalk-agent/multica-deployment-list@1'\n workspace: string\n provider: 'multica'\n deployments: Array<{\n receiptId: string\n operationId: string\n action: DeploymentAction\n status: DeploymentStatus\n passed: boolean\n providerReady: boolean\n planId: string\n deploymentHash: string\n }>\n remoteRead: false\n remoteWrite: false\n triggerWrite: false\n sideEffect: false\n dingtalkSideEffect: false\n}\n\nexport interface MulticaDeploymentOptions {\n yes?: boolean\n planId?: string\n noWait?: boolean\n execute?: boolean\n command?: string\n env?: NodeJS.ProcessEnv\n timeoutMs?: number\n smokeTimeoutMs?: number\n cliVersion?: string\n operationId?: string\n}\n\ninterface LocalSkillFile {\n path: string\n absolutePath: string\n hash: string\n bytes: number\n}\n\ninterface LocalSkillBundle {\n name: string\n root: string\n mainPath: string\n content: string\n files: LocalSkillFile[]\n hash: string\n}\n\ninterface DeploymentSource {\n definition: string\n definitionHash: string\n instructions: string\n instructionsHash: string\n skills: LocalSkillBundle[]\n deploymentHash: string\n}\n\ninterface RemoteSkillFile {\n id: string\n path: string\n content: string\n hash: string\n}\n\ninterface RemoteSkill {\n id: string\n name: string\n content: string\n files: RemoteSkillFile[]\n hash: string\n}\n\ninterface RemoteAgent {\n id: string\n name: string\n runtimeId: string\n instructions: string\n status: string\n archived: boolean\n}\n\ninterface RemoteSnapshot {\n agent: RemoteAgent | null\n skills: Map<string, RemoteSkill | null>\n assignedIds: string[]\n}\n\ninterface ProviderResult {\n stdout: string\n stderr: string\n}\n\ninterface RollbackContext {\n createdSkillIds: string[]\n updatedSkills: RemoteSkill[]\n createdAgentId: string\n updatedAgent: RemoteAgent | null\n assignmentChanged: boolean\n previousAssignedIds: string[]\n}\n\nclass DeploymentFailure extends Error {\n constructor(readonly category: string, readonly ambiguous = false) {\n super(category)\n }\n}\n\nexport function planMulticaDeployment(\n start: string,\n name: string,\n options: { action?: DeploymentAction; env?: NodeJS.ProcessEnv; cliVersion?: string } = {},\n): MulticaDeploymentPlan {\n const action = options.action || 'apply'\n const env = options.env || process.env\n const cliVersion = options.cliVersion || ''\n const info = inspectAgentProject(start, cliVersion)\n const workspace = requireMulticaWorkspace(info.root, name, cliVersion)\n const source = loadDeploymentSource(info.root)\n const readPlan = planMulticaWorkspace(info.root, name, { env, cliVersion })\n const blocking = [...readPlan.blocking]\n let inspectionId = ''\n try {\n const status = statusMulticaWorkspace(info.root, name, cliVersion)\n inspectionId = status.inspectionId\n if (!status.readyForApply || !status.evidenceIntegrity || !status.stateMatched) {\n blocking.push(...status.failures.map((item) => `inspection.${item}`))\n }\n } catch {\n blocking.push('inspection.invalid')\n }\n if (!inspectionId) blocking.push('inspection.missing')\n if (action === 'retire' && !readPlan.expected.agentId) blocking.push('agent-id.missing')\n const expectedSkills = source.skills.map((skill) => ({\n name: skill.name, hash: skill.hash, files: skill.files.length + 1,\n }))\n const operations = action === 'retire'\n ? ['scope.reinspect', 'agent.archive', 'agent.readback', 'receipt.persist']\n : [\n 'scope.reinspect', 'skills.readback', 'skills.reconcile', 'agent.reconcile',\n 'skills.assign-exact', 'provider.readback', 'load-smoke.create',\n 'load-smoke.readback', 'receipt.persist',\n ]\n const writeBudget = action === 'retire'\n ? { forward: 1, rollback: 0 }\n : {\n forward: source.skills.length * (1 + MAX_SKILL_SUPPORTING_FILES * 2) + 4,\n rollback: source.skills.length * (1 + MAX_SKILL_SUPPORTING_FILES * 2) + 3,\n }\n const planId = `multica_deploy_plan_${digest(stableStringify({\n action, workspace: name, profile: readPlan.profile, inspectionId,\n desiredHash: workspace.desiredHash, deploymentHash: source.deploymentHash,\n expected: readPlan.expected, operations, writeBudget,\n blocking: [...new Set(blocking)].sort(),\n })).slice(0, 24)}`\n return {\n $schema: 'dingtalk-agent/multica-deployment-plan@1',\n planId,\n action,\n workspace: name,\n provider: 'multica',\n profile: readPlan.profile,\n inspectionId,\n desiredHash: workspace.desiredHash,\n deploymentHash: source.deploymentHash,\n expected: {\n workspaceId: readPlan.expected.workspaceId,\n runtimeId: readPlan.expected.runtimeId,\n agentId: readPlan.expected.agentId,\n agentName: info.project.displayName,\n skills: expectedSkills,\n definitionHash: source.definitionHash,\n instructionsHash: source.instructionsHash,\n },\n operations,\n writeBudget,\n blocking: [...new Set(blocking)].sort(),\n requiresPlanId: true,\n requiresExplicitYes: true,\n remoteRead: false,\n remoteWrite: false,\n triggerWrite: false,\n sideEffect: false,\n dingtalkSideEffect: false,\n }\n}\n\nexport function applyMulticaDeployment(\n start: string,\n name: string,\n options: MulticaDeploymentOptions = {},\n action: DeploymentAction = 'apply',\n): MulticaDeploymentReceipt {\n if (!options.yes) {\n throw new Error('dta deploy 会修改 Multica 远端资源;必须显式传 --yes 和当前 --plan-id')\n }\n if (!options.planId) throw new Error('dta deploy 必须传 dry-run 返回的 --plan-id')\n const env = options.env || process.env\n const cliVersion = options.cliVersion || ''\n const plan = planMulticaDeployment(start, name, { action, env, cliVersion })\n if (options.planId !== plan.planId) {\n throw new Error(`deploy plan 已失效;期望当前 planId ${plan.planId}`)\n }\n if (plan.blocking.length) throw new Error(`deploy 前置条件不完整: ${plan.blocking.join(', ')}`)\n const info = inspectAgentProject(start, cliVersion)\n const workspace = requireMulticaWorkspace(info.root, name, cliVersion)\n const source = loadDeploymentSource(info.root)\n const command = options.command || env.DTA_MULTICA_BIN || 'multica'\n const timeoutMs = positiveTimeout(options.timeoutMs, 30_000, 300_000)\n const calls: MulticaDeploymentCall[] = []\n deploymentWriteBudgets.set(calls, plan.writeBudget)\n const preflight = inspectMulticaWorkspace(info.root, name, {\n execute: true, yes: true, persist: false, command, env, timeoutMs, cliVersion,\n }) as MulticaWorkspaceInspection\n if (!preflight.passed || preflight.inspectionId !== plan.inspectionId ||\n preflight.profile !== plan.profile ||\n preflight.expected.workspaceId !== plan.expected.workspaceId ||\n preflight.expected.runtimeId !== plan.expected.runtimeId) {\n throw new Error('deploy scope/readback 与冻结 plan 不一致;未执行任何远端写入')\n }\n appendInspectionCalls(preflight, 'preflight', calls)\n\n const operationId = `multica_operation_${Date.now()}_${randomUUID().slice(0, 12)}`\n const operation = createOperation(operationId, plan)\n operation.calls = [...calls]\n persistOperation(info.root, operation)\n const rollback: RollbackContext = {\n createdSkillIds: [], updatedSkills: [], createdAgentId: '', updatedAgent: null,\n assignmentChanged: false, previousAssignedIds: [],\n }\n let receipt: MulticaDeploymentReceipt\n const temp = mkdtempSync(join(tmpdir(), `dta-multica-deploy-${safeName(name)}-`))\n try {\n if (action === 'retire') {\n receipt = retireDeployment(\n info.root, workspace, source, plan, preflight, operation, command, env, timeoutMs, calls,\n )\n } else {\n receipt = executeApply(\n info.root, workspace, source, plan, preflight, operation, command, env,\n timeoutMs, positiveTimeout(options.smokeTimeoutMs, 30_000, 60_000),\n Boolean(options.noWait), calls, rollback, temp,\n )\n }\n } catch (error) {\n const failure = error instanceof DeploymentFailure\n ? error : new DeploymentFailure('deploy.internal-failure')\n const rollbackReport = failure.ambiguous\n ? emptyRollback(false)\n : rollbackConfirmed(\n info.root, plan, command, env, timeoutMs, calls, rollback, temp,\n )\n const status: DeploymentStatus = failure.ambiguous ? 'reconciling' : 'failed'\n operation.status = status\n operation.ambiguousAction = failure.ambiguous ? failure.category : ''\n operation.calls = calls\n operation.failures = [failure.category, ...rollbackReport.failures]\n operation.updatedAt = new Date().toISOString()\n receipt = failureReceipt(\n info.root, workspace, source, plan, preflight, operation, calls,\n rollbackReport, status, failure.category,\n )\n } finally {\n rmSync(temp, { recursive: true, force: true })\n deploymentWriteBudgets.delete(calls)\n }\n persistReceiptAndState(info.root, workspace, operation, receipt)\n return receipt\n}\n\nfunction executeApply(\n root: string,\n workspace: DevelopmentWorkspaceView,\n source: DeploymentSource,\n plan: MulticaDeploymentPlan,\n preflight: MulticaWorkspaceInspection,\n operation: MulticaDeploymentOperation,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n smokeTimeoutMs: number,\n noWait: boolean,\n calls: MulticaDeploymentCall[],\n rollback: RollbackContext,\n temp: string,\n): MulticaDeploymentReceipt {\n const snapshot = readRemoteSnapshot(\n root, source, preflight, command, env, timeoutMs, calls,\n )\n const exactBefore = remoteMatchesDesired(snapshot, source, plan.expected.runtimeId)\n const previous = loadLatestReceipt(root, workspace.name)\n if (exactBefore && workspace.state?.status === 'ready' &&\n workspace.state.binding.deploymentHash === source.deploymentHash &&\n previous?.passed && previous.providerReady && previous.deploymentHash === source.deploymentHash) {\n const receiptId = `multica_receipt_${digest(stableStringify({\n operationId: operation.operationId, planId: plan.planId, reuse: previous.receiptId,\n })).slice(0, 24)}`\n return {\n ...previous,\n receiptId,\n operationId: operation.operationId,\n planId: plan.planId,\n idempotent: true,\n calls: [...calls],\n agent: { ...previous.agent, action: 'noop' },\n skills: previous.skills.map((skill) => ({ ...skill, action: 'noop' })),\n evidencePath: receiptRelativePath(workspace.name, receiptId),\n remoteWrite: false,\n sideEffect: 'multica-read',\n }\n }\n\n operation.status = 'applying'\n operation.calls = calls\n operation.updatedAt = new Date().toISOString()\n persistOperation(root, operation)\n\n const skillResults: MulticaDeploymentReceipt['skills'] = []\n const skillIds: string[] = []\n for (const local of source.skills) {\n const remote = snapshot.skills.get(local.name) || null\n const result = reconcileSkill(\n root, plan, local, remote, command, env, timeoutMs, calls, rollback, temp,\n )\n skillIds.push(result.skill.id)\n skillResults.push({\n id: result.skill.id,\n name: local.name,\n sourceHash: local.hash,\n remoteHash: result.skill.hash,\n action: result.action,\n })\n }\n\n const agentResult = reconcileAgent(\n root, plan, source, snapshot.agent, command, env, timeoutMs, calls, rollback,\n )\n const agentId = agentResult.agent.id\n operation.agentId = agentId\n const expectedAssignments = [...skillIds].sort()\n rollback.previousAssignedIds = [...snapshot.assignedIds]\n if (stableStringify([...snapshot.assignedIds].sort()) !== stableStringify(expectedAssignments)) {\n runProvider(\n command, scopedArgs(plan, [\n 'agent', 'skills', 'set', agentId, '--skill-ids', expectedAssignments.join(','), '--output', 'json',\n ]), 'agent.skills.set', 'write', root, env, timeoutMs, calls,\n )\n rollback.assignmentChanged = true\n }\n\n const readback = inspectMulticaWorkspace(root, workspace.name, {\n execute: true, yes: true, persist: true, command, env, timeoutMs,\n agentIdOverride: agentId,\n }) as MulticaWorkspaceInspection\n if (!readback.passed || !readback.resources.agent ||\n readback.resources.agent.id !== agentId ||\n readback.resources.agent.runtimeId !== plan.expected.runtimeId) {\n throw new DeploymentFailure('readback.agent-mismatch')\n }\n const finalSnapshot = readRemoteSnapshot(\n root, source, readback, command, env, timeoutMs, calls,\n )\n if (!remoteMatchesDesired(finalSnapshot, source, plan.expected.runtimeId)) {\n throw new DeploymentFailure('readback.deployment-mismatch')\n }\n const observedHash = deploymentObservedHash(finalSnapshot, readback.inspectionId)\n const smoke = createAndReadSmoke(\n root, plan, source, agentId, command, env, timeoutMs, smokeTimeoutMs, noWait, calls,\n )\n const status: DeploymentStatus = smoke.status === 'passed'\n ? 'ready' : smoke.status === 'pending' ? 'verifying' : 'failed'\n const receiptId = `multica_receipt_${digest(stableStringify({\n operationId: operation.operationId, planId: plan.planId, observedHash,\n smoke: { markerHash: smoke.markerHash, issueId: smoke.issueId, taskId: smoke.taskId },\n })).slice(0, 24)}`\n return {\n $schema: MULTICA_DEPLOYMENT_SCHEMA,\n receiptId,\n operationId: operation.operationId,\n planId: plan.planId,\n action: 'apply',\n workspace: workspace.name,\n provider: 'multica',\n profile: plan.profile,\n status,\n passed: status === 'ready',\n providerReady: status === 'ready',\n idempotent: false,\n inspectionId: readback.inspectionId,\n inspectionObservedHash: readback.observedHash,\n inspectionEvidencePath: readback.evidencePath,\n desiredHash: workspace.desiredHash,\n deploymentHash: source.deploymentHash,\n observedHash,\n agent: {\n id: finalSnapshot.agent?.id || agentId,\n runtimeId: finalSnapshot.agent?.runtimeId || '',\n instructionsHash: sha256(finalSnapshot.agent?.instructions || ''),\n archived: Boolean(finalSnapshot.agent?.archived),\n action: agentResult.action,\n },\n skills: skillResults.sort((a, b) => a.name.localeCompare(b.name)),\n assignmentHash: digest(stableStringify(expectedAssignments)),\n calls: [...calls],\n smoke,\n rollback: emptyRollback(false),\n failures: [...smoke.failures],\n evidencePath: receiptRelativePath(workspace.name, receiptId),\n remoteRead: true,\n remoteWrite: calls.some((call) => call.kind === 'write'),\n triggerWrite: false,\n sideEffect: 'multica-read-write',\n dingtalkSideEffect: false,\n }\n}\n\nfunction retireDeployment(\n root: string,\n workspace: DevelopmentWorkspaceView,\n source: DeploymentSource,\n plan: MulticaDeploymentPlan,\n preflight: MulticaWorkspaceInspection,\n operation: MulticaDeploymentOperation,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n): MulticaDeploymentReceipt {\n const agentId = preflight.resources.agent?.id || plan.expected.agentId\n if (!agentId) throw new DeploymentFailure('retire.agent-id-missing')\n if (!preflight.resources.agent?.archived) {\n runProvider(\n command, scopedArgs(plan, ['agent', 'archive', agentId, '--output', 'json']),\n 'agent.archive', 'write', root, env, timeoutMs, calls,\n )\n }\n const agent = parseRemoteAgent(jsonObject(runProvider(\n command, scopedArgs(plan, ['agent', 'get', agentId, '--output', 'json']),\n 'agent.get.retire-readback', 'read', root, env, timeoutMs, calls,\n ).stdout, 'retire agent'))\n if (!agent.archived || agent.id !== agentId) throw new DeploymentFailure('retire.readback-mismatch')\n const observedHash = digest(stableStringify({ agentId, archived: true, deploymentHash: source.deploymentHash }))\n const receiptId = `multica_receipt_${digest(stableStringify({\n operationId: operation.operationId, action: 'retire', observedHash,\n })).slice(0, 24)}`\n return {\n $schema: MULTICA_DEPLOYMENT_SCHEMA,\n receiptId,\n operationId: operation.operationId,\n planId: plan.planId,\n action: 'retire',\n workspace: workspace.name,\n provider: 'multica',\n profile: plan.profile,\n status: 'retired',\n passed: true,\n providerReady: false,\n idempotent: Boolean(preflight.resources.agent?.archived),\n inspectionId: preflight.inspectionId,\n inspectionObservedHash: preflight.observedHash,\n inspectionEvidencePath: preflight.evidencePath,\n desiredHash: workspace.desiredHash,\n deploymentHash: source.deploymentHash,\n observedHash,\n agent: {\n id: agent.id,\n runtimeId: agent.runtimeId,\n instructionsHash: sha256(agent.instructions),\n archived: true,\n action: preflight.resources.agent?.archived ? 'noop' : 'archive',\n },\n skills: [],\n assignmentHash: '',\n calls: [...calls],\n smoke: emptySmoke('not-run', source.skills.map((item) => item.name)),\n rollback: emptyRollback(false),\n failures: [],\n evidencePath: receiptRelativePath(workspace.name, receiptId),\n remoteRead: true,\n remoteWrite: calls.some((call) => call.kind === 'write'),\n triggerWrite: false,\n sideEffect: 'multica-read-write',\n dingtalkSideEffect: false,\n }\n}\n\nfunction loadDeploymentSource(root: string): DeploymentSource {\n const info = inspectAgentProject(root)\n const definitionPath = safeProjectPath(root, info.project.definition, true)\n const definition = readUtf8(definitionPath, 'Agent Definition', 512 * 1024)\n rejectCredentialMaterial(definition, 'Agent Definition')\n const definitionHash = sha256(definition)\n const skillRoots: Array<{ name: string; root: string }> = []\n for (const name of info.project.skills) {\n const ref = name === 'dingtalk-basic-behavior'\n ? `.agents/skills/${name}` : `skills/${name}`\n skillRoots.push({ name, root: safeProjectPath(root, ref, true) })\n }\n const packageRoot = resolvePackageRoot(import.meta.url)\n skillRoots.push({\n name: MULTICA_BOOT_SKILL,\n root: safeExternalSkillRoot(bundledSkillPath(packageRoot, MULTICA_BOOT_SKILL)),\n })\n if (skillRoots.length > MAX_DEPLOY_SKILLS) {\n throw new Error(`Multica deploy 最多支持 ${MAX_DEPLOY_SKILLS} 个受管 Skills`)\n }\n const skills = skillRoots.map(({ name, root: skillRoot }) => loadSkillBundle(name, skillRoot))\n .sort((a, b) => a.name.localeCompare(b.name))\n if (new Set(skills.map((item) => item.name)).size !== skills.length) {\n throw new Error('Multica deploy required Skills 不能重名')\n }\n const required = skills.map((item) => ({ name: item.name, sha256: item.hash }))\n const deploymentSourceHash = digest(stableStringify({ definitionHash, required }))\n const instructions = [\n '<!-- DTA Multica Boot: managed; do not edit remotely -->',\n `definition_sha256=${definitionHash}`,\n `deployment_sha256=${deploymentSourceHash}`,\n `required_skills=${JSON.stringify(required)}`,\n 'Before every task, use dingtalk-agent-boot-multica and follow its startup order.',\n 'Never create a robot, webhook, autopilot, schedule, or other Trigger as part of deployment.',\n '<!-- /DTA Multica Boot -->',\n '',\n definition.trimEnd(),\n '',\n ].join('\\n')\n const instructionsHash = sha256(instructions)\n const deploymentHash = digest(stableStringify({\n definitionHash, instructionsHash,\n skills: skills.map((item) => ({ name: item.name, hash: item.hash })),\n }))\n return { definition, definitionHash, instructions, instructionsHash, skills, deploymentHash }\n}\n\nfunction loadSkillBundle(name: string, root: string): LocalSkillBundle {\n const actual = realpathSync(root)\n if (!lstatSync(actual).isDirectory()) throw new Error(`Skill ${name} source 不是目录`)\n const files: LocalSkillFile[] = []\n const visit = (directory: string, prefix = ''): void => {\n for (const entry of readdirSync(directory, { withFileTypes: true })\n .sort((a, b) => a.name.localeCompare(b.name))) {\n const path = join(directory, entry.name)\n const ref = prefix ? `${prefix}/${entry.name}` : entry.name\n if (entry.isSymbolicLink()) throw new Error(`Skill ${name} 不允许符号链接: ${ref}`)\n if (entry.isDirectory()) visit(path, ref)\n else if (entry.isFile()) {\n const content = readFileSync(path)\n if (content.length > 1024 * 1024) throw new Error(`Skill ${name} 文件超过 1 MiB: ${ref}`)\n const text = content.toString('utf8')\n if (Buffer.from(text, 'utf8').compare(content) !== 0 || content.includes(0)) {\n throw new Error(`Skill ${name} 只支持 UTF-8 supporting files: ${ref}`)\n }\n rejectCredentialMaterial(text, `Skill ${name}/${ref}`)\n files.push({ path: ref, absolutePath: path, hash: sha256(content), bytes: content.length })\n if (files.length > MAX_SKILL_SUPPORTING_FILES + 1) {\n throw new Error(`Skill ${name} files 超过 ${MAX_SKILL_SUPPORTING_FILES + 1} 个`)\n }\n } else throw new Error(`Skill ${name} 包含特殊文件: ${ref}`)\n }\n }\n visit(actual)\n if (files.reduce((sum, item) => sum + item.bytes, 0) > 8 * 1024 * 1024) {\n throw new Error(`Skill ${name} 总大小超过 8 MiB`)\n }\n const main = files.find((item) => item.path === 'SKILL.md')\n if (!main) throw new Error(`Skill ${name} 缺少 SKILL.md`)\n const content = readUtf8(main.absolutePath, `Skill ${name}`, 1024 * 1024)\n const declared = frontmatterName(content)\n if (declared !== name) throw new Error(`Skill ${name} frontmatter name 不一致: ${declared || '<missing>'}`)\n rejectCredentialMaterial(content, `Skill ${name}`)\n const supporting = files.filter((item) => item.path !== 'SKILL.md')\n if (supporting.length > MAX_SKILL_SUPPORTING_FILES) {\n throw new Error(`Skill ${name} supporting files 超过 ${MAX_SKILL_SUPPORTING_FILES} 个`)\n }\n const hash = skillTreeHash(content, supporting.map((item) => ({ path: item.path, hash: item.hash })))\n return { name, root: actual, mainPath: main.absolutePath, content, files: supporting, hash }\n}\n\nfunction readRemoteSnapshot(\n root: string,\n source: DeploymentSource,\n inspection: MulticaWorkspaceInspection,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n): RemoteSnapshot {\n const planLike = {\n profile: inspection.profile,\n expected: inspection.expected,\n }\n const skills = new Map<string, RemoteSkill | null>()\n for (const local of source.skills) {\n const candidates = inspection.resources.catalogSkills.filter((item) => item.name === local.name)\n if (candidates.length > 1) throw new DeploymentFailure(`skills.duplicate:${local.name}`)\n if (!candidates.length) {\n skills.set(local.name, null)\n continue\n }\n const raw = jsonObject(runProvider(\n command, scopedArgs(planLike, ['skill', 'get', candidates[0].id, '--output', 'json']),\n `skill.get:${local.name}`, 'read', root, env, timeoutMs, calls,\n ).stdout, `skill ${local.name}`)\n const skill = parseRemoteSkill(raw)\n if (skill.id !== candidates[0].id || skill.name !== local.name) {\n throw new DeploymentFailure(`skills.binding-mismatch:${local.name}`)\n }\n skills.set(local.name, skill)\n }\n let agent: RemoteAgent | null = null\n if (inspection.resources.agent) {\n agent = parseRemoteAgent(jsonObject(runProvider(\n command, scopedArgs(planLike, [\n 'agent', 'get', inspection.resources.agent.id, '--output', 'json',\n ]), 'agent.get.deploy', 'read', root, env, timeoutMs, calls,\n ).stdout, 'agent deploy'))\n if (agent.id !== inspection.resources.agent.id) throw new DeploymentFailure('agent.binding-mismatch')\n }\n return {\n agent,\n skills,\n assignedIds: inspection.resources.assignedSkills.filter((item) => item.enabled)\n .map((item) => item.id).sort(),\n }\n}\n\nfunction reconcileSkill(\n root: string,\n plan: MulticaDeploymentPlan,\n local: LocalSkillBundle,\n remote: RemoteSkill | null,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n rollback: RollbackContext,\n temp: string,\n): { skill: RemoteSkill; action: 'create' | 'update' | 'noop' } {\n let id = remote?.id || ''\n let action: 'create' | 'update' | 'noop' = 'noop'\n if (!remote) {\n const created = jsonObject(runProvider(\n command, scopedArgs(plan, [\n 'skill', 'create', '--name', local.name,\n '--description', `Managed by dingtalk-agent (${local.hash.slice(0, 12)})`,\n '--content-file', local.mainPath, '--output', 'json',\n ]), `skill.create:${local.name}`, 'write', root, env, timeoutMs, calls,\n ).stdout, `created skill ${local.name}`)\n id = resourceId(created.id, `created skill ${local.name}.id`)\n rollback.createdSkillIds.push(id)\n action = 'create'\n for (const file of local.files) upsertSkillFile(\n root, plan, id, file.path, file.absolutePath, command, env, timeoutMs, calls,\n )\n } else if (remote.hash !== local.hash) {\n rollback.updatedSkills.push(remote)\n runProvider(\n command, scopedArgs(plan, [\n 'skill', 'update', id, '--content-file', local.mainPath, '--output', 'json',\n ]), `skill.update:${local.name}`, 'write', root, env, timeoutMs, calls,\n )\n syncSkillFiles(root, plan, id, local, remote, command, env, timeoutMs, calls)\n action = 'update'\n }\n const readback = parseRemoteSkill(jsonObject(runProvider(\n command, scopedArgs(plan, ['skill', 'get', id, '--output', 'json']),\n `skill.get.readback:${local.name}`, 'read', root, env, timeoutMs, calls,\n ).stdout, `skill readback ${local.name}`))\n if (readback.name !== local.name || readback.hash !== local.hash) {\n throw new DeploymentFailure(`skill.readback-mismatch:${local.name}`)\n }\n return { skill: readback, action }\n}\n\nfunction reconcileAgent(\n root: string,\n plan: MulticaDeploymentPlan,\n source: DeploymentSource,\n remote: RemoteAgent | null,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n rollback: RollbackContext,\n): { agent: RemoteAgent; action: 'create' | 'update' | 'restore' | 'noop' } {\n let id = remote?.id || ''\n let action: 'create' | 'update' | 'restore' | 'noop' = 'noop'\n if (!remote) {\n const created = jsonObject(runProvider(\n command, scopedArgs(plan, [\n 'agent', 'create', '--name', plan.expected.agentName,\n '--description', `Managed dingtalk-agent ${plan.deploymentHash.slice(0, 12)}`,\n '--instructions', source.instructions,\n '--runtime-id', plan.expected.runtimeId,\n '--permission-mode', 'private', '--output', 'json',\n ]), 'agent.create', 'write', root, env, timeoutMs, calls,\n ).stdout, 'created agent')\n id = resourceId(created.id, 'created agent.id')\n rollback.createdAgentId = id\n action = 'create'\n } else {\n if (remote.archived) {\n rollback.updatedAgent = remote\n runProvider(\n command, scopedArgs(plan, ['agent', 'restore', id, '--output', 'json']),\n 'agent.restore', 'write', root, env, timeoutMs, calls,\n )\n action = 'restore'\n }\n if (remote.name !== plan.expected.agentName || remote.runtimeId !== plan.expected.runtimeId ||\n remote.instructions !== source.instructions) {\n rollback.updatedAgent ||= remote\n runProvider(\n command, scopedArgs(plan, [\n 'agent', 'update', id, '--name', plan.expected.agentName,\n '--instructions', source.instructions, '--runtime-id', plan.expected.runtimeId,\n '--output', 'json',\n ]), 'agent.update', 'write', root, env, timeoutMs, calls,\n )\n action = action === 'restore' ? 'restore' : 'update'\n }\n }\n const agent = parseRemoteAgent(jsonObject(runProvider(\n command, scopedArgs(plan, ['agent', 'get', id, '--output', 'json']),\n 'agent.get.readback', 'read', root, env, timeoutMs, calls,\n ).stdout, 'agent readback'))\n if (agent.id !== id || agent.name !== plan.expected.agentName ||\n agent.runtimeId !== plan.expected.runtimeId || agent.instructions !== source.instructions || agent.archived) {\n throw new DeploymentFailure('agent.readback-mismatch')\n }\n return { agent, action }\n}\n\nfunction syncSkillFiles(\n root: string,\n plan: MulticaDeploymentPlan,\n skillId: string,\n local: LocalSkillBundle,\n remote: RemoteSkill,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n): void {\n const remoteByPath = new Map(remote.files.map((item) => [item.path, item]))\n const localPaths = new Set(local.files.map((item) => item.path))\n for (const file of remote.files) {\n if (localPaths.has(file.path)) continue\n runProvider(\n command, scopedArgs(plan, ['skill', 'files', 'delete', skillId, file.id]),\n `skill.file.delete:${local.name}:${file.path}`, 'write', root, env, timeoutMs, calls,\n )\n }\n for (const file of local.files) {\n if (remoteByPath.get(file.path)?.hash === file.hash) continue\n upsertSkillFile(root, plan, skillId, file.path, file.absolutePath, command, env, timeoutMs, calls)\n }\n}\n\nfunction upsertSkillFile(\n root: string,\n plan: MulticaDeploymentPlan,\n skillId: string,\n path: string,\n contentFile: string,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n): void {\n runProvider(\n command, scopedArgs(plan, [\n 'skill', 'files', 'upsert', skillId, '--path', path,\n '--content-file', contentFile, '--output', 'json',\n ]), `skill.file.upsert:${path}`, 'write', root, env, timeoutMs, calls,\n )\n}\n\nfunction createAndReadSmoke(\n root: string,\n plan: MulticaDeploymentPlan,\n source: DeploymentSource,\n agentId: string,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n smokeTimeoutMs: number,\n noWait: boolean,\n calls: MulticaDeploymentCall[],\n): MulticaDeploymentSmoke {\n const marker = `DTA-MULTICA-LOAD-${randomUUID()}`\n const requiredSkills = source.skills.map((item) => item.name).sort()\n const issue = jsonObject(runProvider(\n command, scopedArgs(plan, [\n 'issue', 'create', '--title', `[DTA load smoke] ${marker}`,\n '--description', [\n 'DTA_MULTICA_LOAD_SMOKE@1', `marker=${marker}`,\n 'Use only the trusted DTA Multica Boot required_skills list.',\n 'Do not call DWS, Shell, network, or write tools.',\n ].join('\\n'),\n '--assignee-id', agentId, '--output', 'json',\n ]), 'smoke.issue.create', 'write', root, env, timeoutMs, calls,\n ).stdout, 'smoke issue')\n const issueId = resourceId(issue.id, 'smoke issue.id')\n if (noWait) return readSmoke(\n root, plan, marker, issueId, agentId, requiredSkills, command, env, timeoutMs, calls,\n )\n const started = Date.now()\n let smoke = readSmoke(\n root, plan, marker, issueId, agentId, requiredSkills, command, env, timeoutMs, calls,\n )\n while (smoke.status === 'pending' && Date.now() - started < smokeTimeoutMs) {\n Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, 250)\n smoke = readSmoke(\n root, plan, marker, issueId, agentId, requiredSkills, command, env, timeoutMs, calls,\n )\n }\n return smoke\n}\n\nfunction readSmoke(\n root: string,\n plan: MulticaDeploymentPlan,\n marker: string,\n issueId: string,\n agentId: string,\n requiredSkills: string[],\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n): MulticaDeploymentSmoke {\n const runs = jsonArray(runProvider(\n command, scopedArgs(plan, ['issue', 'runs', issueId, '--full-id', '--output', 'json']),\n 'smoke.issue.runs', 'read', root, env, timeoutMs, calls,\n ).stdout, 'smoke runs')\n const candidates = runs.filter((item) => !optionalString(item.agent_id) ||\n optionalString(item.agent_id) === agentId)\n const run = candidates.sort((a, b) => optionalString(b.created_at).localeCompare(optionalString(a.created_at)))[0]\n if (!run) return {\n ...emptySmoke('pending', requiredSkills), marker, markerHash: sha256(marker), issueId,\n }\n const taskId = resourceId(run.id, 'smoke task.id')\n const taskStatus = optionalString(run.status)\n if (!['completed', 'failed', 'cancelled'].includes(taskStatus)) return {\n ...emptySmoke('pending', requiredSkills), marker, markerHash: sha256(marker), issueId, taskId, taskStatus,\n }\n const messages = jsonArray(runProvider(\n command, scopedArgs(plan, [\n 'issue', 'run-messages', taskId, '--issue', issueId, '--output', 'json',\n ]), 'smoke.issue.messages', 'read', root, env, timeoutMs, calls,\n ).stdout, 'smoke messages')\n const toolUses = messages.filter((item) => optionalString(item.type) === 'tool_use')\n const skillToolUses = toolUses.filter((item) => optionalString(item.tool) === 'skill')\n const skillNames = skillToolUses.map((item) => smokeToolInput(item).name)\n .filter((item): item is string => typeof item === 'string' && Boolean(item)).sort()\n const loadedSkills = requiredSkills.filter((name) => skillNames.includes(name)).sort()\n const texts = messages.filter((item) => optionalString(item.type) === 'text')\n .map((item) => optionalString(item.content)).filter(Boolean)\n const finalText = texts.at(-1) || ''\n const matchesResponse = (value: string): boolean => smokeResponseMatches(\n value, marker, requiredSkills,\n )\n const replyWrites = toolUses.filter((item) => optionalString(item.tool) === 'write')\n .map((item) => smokeToolInput(item)).filter((input) =>\n optionalString(input.filePath).endsWith('/reply.md'))\n .map((input) => optionalString(input.content)).filter(Boolean)\n const responseEvidence = [...texts, ...replyWrites].find(matchesResponse) || ''\n const responsePassed = Boolean(responseEvidence)\n const toolTracePassed = toolUses.every((item) => allowedSmokeToolUse(\n item, issueId, marker, requiredSkills,\n )) && stableStringify(skillNames) === stableStringify(requiredSkills)\n const failures: string[] = []\n if (taskStatus !== 'completed') failures.push(`smoke.task.${taskStatus || 'unknown'}`)\n if (!toolTracePassed) failures.push('smoke.skill-tool-trace')\n if (!responsePassed) failures.push('smoke.response')\n return {\n status: failures.length ? 'failed' : 'passed',\n marker, markerHash: sha256(marker), issueId, taskId, taskStatus, requiredSkills, loadedSkills,\n toolTracePassed, responsePassed, responseHash: sha256(responseEvidence || finalText), failures,\n }\n}\n\nfunction smokeToolInput(item: Record<string, unknown>): Record<string, unknown> {\n return item.input && typeof item.input === 'object' && !Array.isArray(item.input)\n ? item.input as Record<string, unknown> : {}\n}\n\nfunction smokeResponseMatches(value: string, marker: string, requiredSkills: string[]): boolean {\n try {\n const parsed = JSON.parse(value)\n return parsed?.schema === 'dta-multica-load-smoke@1' && parsed?.marker === marker &&\n stableStringify(Array.isArray(parsed?.loaded) ? [...parsed.loaded].sort() : []) ===\n stableStringify(requiredSkills)\n } catch { return false }\n}\n\nfunction allowedSmokeToolUse(\n item: Record<string, unknown>,\n issueId: string,\n marker: string,\n requiredSkills: string[],\n): boolean {\n const tool = optionalString(item.tool)\n if (tool === 'skill') return true\n const input = smokeToolInput(item)\n if (tool === 'write') {\n return safeSmokeReplyPath(optionalString(input.filePath)) &&\n smokeResponseMatches(optionalString(input.content), marker, requiredSkills)\n }\n if (tool !== 'bash') return false\n const command = optionalString(input.command)\n if (new Set([\n `multica issue get ${issueId} --output json`,\n `multica issue metadata list ${issueId} --output json`,\n `multica issue comment list ${issueId} --recent 10 --output json`,\n `multica issue status ${issueId} in_progress`,\n `multica issue status ${issueId} in_review`,\n ]).has(command)) return true\n const commentPrefix = `multica issue comment add ${issueId} --content-file `\n if (command.startsWith(commentPrefix)) {\n return safeSmokeReplyPath(command.slice(commentPrefix.length))\n }\n const cleanupFirstPrefix = 'rm '\n const cleanupFirstSuffix = ` && multica issue status ${issueId} in_review`\n if (command.startsWith(cleanupFirstPrefix) && command.endsWith(cleanupFirstSuffix)) {\n return safeSmokeReplyPath(command.slice(\n cleanupFirstPrefix.length, command.length - cleanupFirstSuffix.length,\n ))\n }\n const statusFirstPrefix = `multica issue status ${issueId} in_review && rm `\n if (command.startsWith(statusFirstPrefix)) {\n return safeSmokeReplyPath(command.slice(statusFirstPrefix.length))\n }\n if (command.startsWith(cleanupFirstPrefix)) {\n return safeSmokeReplyPath(command.slice(cleanupFirstPrefix.length))\n }\n return false\n}\n\nfunction safeSmokeReplyPath(value: string): boolean {\n if (value === './reply.md') return true\n if (!value.startsWith('/') || !value.endsWith('/reply.md')) return false\n return value.split('/').every((part) => !part ||\n (part !== '.' && part !== '..' && /^[A-Za-z0-9._-]+$/.test(part)))\n}\n\nfunction rollbackConfirmed(\n root: string,\n plan: MulticaDeploymentPlan,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n rollback: RollbackContext,\n temp: string,\n): MulticaDeploymentReceipt['rollback'] {\n const report = emptyRollback(true)\n const attempt = (id: string, argv: string[]): void => {\n try {\n runProvider(command, scopedArgs(plan, argv), id, 'rollback', root, env, timeoutMs, calls)\n report.actions.push(id)\n } catch { report.failures.push(id) }\n }\n const assignmentAgentId = rollback.createdAgentId || rollback.updatedAgent?.id || ''\n if (rollback.assignmentChanged && assignmentAgentId) {\n attempt('rollback.agent.skills', [\n 'agent', 'skills', 'set', assignmentAgentId,\n '--skill-ids', rollback.previousAssignedIds.join(','), '--output', 'json',\n ])\n }\n if (rollback.createdAgentId) {\n attempt('rollback.agent.archive', ['agent', 'archive', rollback.createdAgentId, '--output', 'json'])\n } else if (rollback.updatedAgent) {\n const previous = rollback.updatedAgent\n const argv = [\n 'agent', 'update', previous.id, '--name', previous.name,\n '--instructions', previous.instructions, '--runtime-id', previous.runtimeId,\n ]\n if (previous.status) argv.push('--status', previous.status)\n argv.push('--output', 'json')\n attempt('rollback.agent.update', argv)\n if (previous.archived) {\n attempt('rollback.agent.archive', ['agent', 'archive', previous.id, '--output', 'json'])\n }\n }\n for (const previous of [...rollback.updatedSkills].reverse()) {\n const main = writeTemporaryContent(temp, `${previous.id}-SKILL.md`, previous.content)\n attempt(`rollback.skill.update:${previous.name}`, [\n 'skill', 'update', previous.id, '--content-file', main, '--output', 'json',\n ])\n try {\n const current = parseRemoteSkill(jsonObject(runProvider(\n command, scopedArgs(plan, ['skill', 'get', previous.id, '--output', 'json']),\n `rollback.skill.get:${previous.name}`, 'read', root, env, timeoutMs, calls,\n ).stdout, `rollback skill ${previous.name}`))\n const previousPaths = new Set(previous.files.map((file) => file.path))\n for (const extra of current.files.filter((file) => !previousPaths.has(file.path))) {\n attempt(`rollback.skill.file.delete:${previous.name}:${extra.path}`, [\n 'skill', 'files', 'delete', previous.id, extra.id,\n ])\n }\n } catch { report.failures.push(`rollback.skill.verify:${previous.name}`) }\n for (const file of previous.files) {\n const path = writeTemporaryContent(temp, `${previous.id}-${sha256(file.path).slice(0, 8)}`, file.content)\n attempt(`rollback.skill.file:${previous.name}:${file.path}`, [\n 'skill', 'files', 'upsert', previous.id, '--path', file.path,\n '--content-file', path, '--output', 'json',\n ])\n }\n }\n for (const id of [...rollback.createdSkillIds].reverse()) {\n attempt(`rollback.skill.delete:${id}`, ['skill', 'delete', id, '--yes'])\n }\n verifyRollback(\n root, plan, command, env, timeoutMs, calls, rollback, report,\n )\n report.passed = report.failures.length === 0\n return report\n}\n\nfunction verifyRollback(\n root: string,\n plan: MulticaDeploymentPlan,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n rollback: RollbackContext,\n report: MulticaDeploymentReceipt['rollback'],\n): void {\n const verify = (id: string, action: () => boolean): void => {\n try { if (!action()) report.failures.push(id) }\n catch { report.failures.push(id) }\n }\n if (rollback.createdSkillIds.length || rollback.updatedSkills.length) {\n verify('rollback.verify.skills', () => {\n const catalog = jsonArray(runProvider(\n command, scopedArgs(plan, ['skill', 'list', '--output', 'json']),\n 'rollback.verify.skill-list', 'read', root, env, timeoutMs, calls,\n ).stdout, 'rollback skill list')\n const ids = new Set(catalog.map((item) => resourceId(item.id, 'rollback skill.id')))\n return rollback.createdSkillIds.every((id) => !ids.has(id))\n })\n for (const previous of rollback.updatedSkills) {\n verify(`rollback.verify.skill:${previous.name}`, () => {\n const restored = parseRemoteSkill(jsonObject(runProvider(\n command, scopedArgs(plan, ['skill', 'get', previous.id, '--output', 'json']),\n `rollback.verify.skill-get:${previous.name}`, 'read', root, env, timeoutMs, calls,\n ).stdout, `rollback verify skill ${previous.name}`))\n return restored.id === previous.id && restored.name === previous.name &&\n restored.hash === previous.hash\n })\n }\n }\n const agentId = rollback.createdAgentId || rollback.updatedAgent?.id || ''\n if (!agentId) return\n verify('rollback.verify.agent', () => {\n const restored = parseRemoteAgent(jsonObject(runProvider(\n command, scopedArgs(plan, ['agent', 'get', agentId, '--output', 'json']),\n 'rollback.verify.agent-get', 'read', root, env, timeoutMs, calls,\n ).stdout, 'rollback verify agent'))\n if (rollback.createdAgentId) return restored.archived\n const previous = rollback.updatedAgent\n return Boolean(previous && restored.id === previous.id && restored.name === previous.name &&\n restored.runtimeId === previous.runtimeId && restored.instructions === previous.instructions &&\n restored.archived === previous.archived)\n })\n if (rollback.assignmentChanged) {\n verify('rollback.verify.assignment', () => {\n const assigned = jsonArray(runProvider(\n command, scopedArgs(plan, [\n 'agent', 'skills', 'list', agentId, '--output', 'json',\n ]), 'rollback.verify.agent-skills', 'read', root, env, timeoutMs, calls,\n ).stdout, 'rollback verify assignments')\n const ids = assigned.map((item) => resourceId(item.id, 'rollback assignment.id')).sort()\n return stableStringify(ids) === stableStringify([...rollback.previousAssignedIds].sort())\n })\n }\n}\n\nfunction failureReceipt(\n root: string,\n workspace: DevelopmentWorkspaceView,\n source: DeploymentSource,\n plan: MulticaDeploymentPlan,\n preflight: MulticaWorkspaceInspection,\n operation: MulticaDeploymentOperation,\n calls: MulticaDeploymentCall[],\n rollback: MulticaDeploymentReceipt['rollback'],\n status: 'failed' | 'reconciling',\n failure: string,\n): MulticaDeploymentReceipt {\n const receiptId = `multica_receipt_${digest(stableStringify({\n operationId: operation.operationId, status, failure,\n })).slice(0, 24)}`\n return {\n $schema: MULTICA_DEPLOYMENT_SCHEMA,\n receiptId,\n operationId: operation.operationId,\n planId: plan.planId,\n action: plan.action,\n workspace: workspace.name,\n provider: 'multica',\n profile: plan.profile,\n status,\n passed: false,\n providerReady: false,\n idempotent: false,\n inspectionId: preflight.inspectionId,\n inspectionObservedHash: preflight.observedHash,\n inspectionEvidencePath: preflight.evidencePath,\n desiredHash: workspace.desiredHash,\n deploymentHash: source.deploymentHash,\n observedHash: '',\n agent: {\n id: operation.agentId,\n runtimeId: plan.expected.runtimeId,\n instructionsHash: source.instructionsHash,\n archived: false,\n action: 'unknown',\n },\n skills: source.skills.map((item) => ({\n id: '', name: item.name, sourceHash: item.hash, remoteHash: '', action: 'unknown',\n })),\n assignmentHash: '',\n calls: [...calls],\n smoke: emptySmoke('not-run', source.skills.map((item) => item.name)),\n rollback,\n failures: [failure, ...rollback.failures],\n evidencePath: receiptRelativePath(workspace.name, receiptId),\n remoteRead: true,\n remoteWrite: calls.some((call) => call.kind === 'write' || call.kind === 'rollback'),\n triggerWrite: false,\n sideEffect: calls.some((call) => call.kind === 'write' || call.kind === 'rollback')\n ? 'multica-read-write' : 'multica-read',\n dingtalkSideEffect: false,\n }\n}\n\nexport function statusMulticaDeployment(\n start: string,\n name: string,\n options: MulticaDeploymentOptions = {},\n): MulticaDeploymentStatusReport {\n const info = inspectAgentProject(start, options.cliVersion || '')\n requireMulticaWorkspace(info.root, name, options.cliVersion || '')\n const loaded = loadOperationAndReceipt(info.root, name, options.operationId)\n if (!loaded) return {\n $schema: 'dingtalk-agent/multica-deployment-status@1',\n workspace: name, provider: 'multica', available: false, operationId: '', receiptId: '',\n status: 'missing', passed: false, providerReady: false,\n operationIntegrity: false, receiptIntegrity: false, reconciled: false,\n failures: ['deployment.missing'], receipt: null,\n remoteRead: false, remoteWrite: false, triggerWrite: false,\n sideEffect: false, dingtalkSideEffect: false,\n }\n let { operation, receipt } = loaded\n let reconciled = false\n let remoteRead = false\n if (options.execute) {\n if (!options.yes) throw new Error('deploy --status 远端 reconcile 必须同时传 --execute --yes')\n const command = options.command || options.env?.DTA_MULTICA_BIN || process.env.DTA_MULTICA_BIN || 'multica'\n const env = options.env || process.env\n const timeoutMs = positiveTimeout(options.timeoutMs, 30_000, 300_000)\n if (receipt.status === 'verifying' && receipt.smoke.issueId) {\n remoteRead = true\n const smokeReadback = readSmokeFromReceipt(\n info.root, receipt, command, env, timeoutMs,\n )\n const smoke = smokeReadback.smoke\n receipt = { ...receipt, calls: smokeReadback.calls, smoke, status: smoke.status === 'passed' ? 'ready'\n : smoke.status === 'pending' ? 'verifying' : 'failed',\n passed: smoke.status === 'passed', providerReady: smoke.status === 'passed',\n failures: [...smoke.failures] }\n reconciled = true\n persistReceiptAndState(info.root, showDevelopmentWorkspace(info.root, name), operation, receipt)\n } else if (receipt.status === 'reconciling') {\n remoteRead = true\n const source = loadDeploymentSource(info.root)\n const calls = [...receipt.calls]\n const reconciledTarget = reconcileRemoteTarget(\n info.root, name, operation, source, command, env, timeoutMs, calls,\n )\n const inspection = reconciledTarget.inspection\n const snapshot = reconciledTarget.snapshot\n const matched = Boolean(snapshot && remoteMatchesDesired(\n snapshot, source, operation.runtimeId,\n ))\n const safelyBound = Boolean(snapshot?.agent && inspection.passed &&\n snapshot.agent.id === operation.agentId &&\n snapshot.agent.name === info.project.displayName &&\n snapshot.agent.runtimeId === operation.runtimeId &&\n snapshot.agent.instructions === source.instructions && !snapshot.agent.archived)\n receipt = { ...receipt,\n calls,\n inspectionId: inspection.inspectionId,\n inspectionObservedHash: inspection.observedHash,\n inspectionEvidencePath: inspection.evidencePath,\n agent: { ...receipt.agent, id: operation.agentId },\n status: matched || safelyBound ? 'verifying' : 'failed',\n failures: matched ? ['smoke.required-after-recovery']\n : safelyBound ? ['apply.required-after-recovery']\n : reconciledTarget.failures.length ? reconciledTarget.failures\n : inspection.passed ? ['reconcile.remote-mismatch'] : [...inspection.failures],\n }\n reconciled = true\n persistReceiptAndState(info.root, showDevelopmentWorkspace(info.root, name), operation, receipt)\n }\n operation = loadOperationAndReceipt(info.root, name, operation.operationId)?.operation || operation\n }\n return {\n $schema: 'dingtalk-agent/multica-deployment-status@1',\n workspace: name,\n provider: 'multica',\n available: true,\n operationId: operation.operationId,\n receiptId: receipt.receiptId,\n status: receipt.status,\n passed: receipt.passed,\n providerReady: receipt.providerReady,\n operationIntegrity: true,\n receiptIntegrity: true,\n reconciled,\n failures: [...receipt.failures],\n receipt,\n remoteRead,\n remoteWrite: false,\n triggerWrite: false,\n sideEffect: remoteRead ? 'multica-read' : false,\n dingtalkSideEffect: false,\n }\n}\n\nexport function listMulticaDeployments(\n start: string, name: string, cliVersion = '',\n): MulticaDeploymentList {\n const info = inspectAgentProject(start, cliVersion)\n requireMulticaWorkspace(info.root, name, cliVersion)\n const directory = safeProjectPath(info.root, receiptsRoot(name), false)\n const deployments: MulticaDeploymentList['deployments'] = []\n if (existsSync(directory)) {\n for (const entry of readdirSync(directory, { withFileTypes: true })\n .filter((item) => item.isFile() && item.name.endsWith('.json'))\n .sort((a, b) => b.name.localeCompare(a.name))) {\n const path = join(directory, entry.name)\n if (lstatSync(path).isSymbolicLink()) throw new Error('Multica Receipt 不能是符号链接')\n const candidate = parseReceipt(readJson(path, 'Multica Receipt'))\n const loaded = loadOperationAndReceipt(info.root, name, candidate.operationId)\n if (!loaded || loaded.receipt.receiptId !== candidate.receiptId ||\n safeProjectPath(info.root, loaded.receipt.evidencePath, true) !== path) {\n throw new Error('Multica deployment 历史 Receipt 绑定不一致')\n }\n const receipt = loaded.receipt\n deployments.push({\n receiptId: receipt.receiptId,\n operationId: receipt.operationId,\n action: receipt.action,\n status: receipt.status,\n passed: receipt.passed,\n providerReady: receipt.providerReady,\n planId: receipt.planId,\n deploymentHash: receipt.deploymentHash,\n })\n }\n }\n return {\n $schema: 'dingtalk-agent/multica-deployment-list@1',\n workspace: name, provider: 'multica', deployments,\n remoteRead: false, remoteWrite: false, triggerWrite: false,\n sideEffect: false, dingtalkSideEffect: false,\n }\n}\n\nfunction reconcileRemoteTarget(\n root: string,\n name: string,\n operation: MulticaDeploymentOperation,\n source: DeploymentSource,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n): { inspection: MulticaWorkspaceInspection; snapshot: RemoteSnapshot | null; failures: string[] } {\n if (operation.agentId) {\n const inspection = inspectMulticaWorkspace(root, name, {\n execute: true, yes: true, persist: true, command, env, timeoutMs,\n agentIdOverride: operation.agentId,\n }) as MulticaWorkspaceInspection\n appendInspectionCalls(inspection, 'reconcile.scope', calls)\n const snapshot = inspection.passed ? readRemoteSnapshot(\n root, source, inspection, command, env, timeoutMs, calls,\n ) : null\n return { inspection, snapshot, failures: [] }\n }\n\n const discovery = inspectMulticaWorkspace(root, name, {\n execute: true, yes: true, persist: false, command, env, timeoutMs,\n }) as MulticaWorkspaceInspection\n appendInspectionCalls(discovery, 'reconcile.discovery', calls)\n const candidates = discovery.resources.agentCandidates\n if (!candidates.length) {\n return { inspection: discovery, snapshot: null, failures: ['reconcile.agent-not-found'] }\n }\n if (candidates.length > 10) {\n return { inspection: discovery, snapshot: null, failures: ['reconcile.agent-candidate-budget'] }\n }\n const projectName = inspectAgentProject(root).project.displayName\n const matches: Array<{ id: string }> = []\n for (const [index, candidate] of candidates.entries()) {\n const inspection = inspectMulticaWorkspace(root, name, {\n execute: true, yes: true, persist: false, command, env, timeoutMs,\n agentIdOverride: candidate.id,\n }) as MulticaWorkspaceInspection\n appendInspectionCalls(inspection, `reconcile.candidate.${index + 1}`, calls)\n if (!inspection.passed) continue\n const snapshot = readRemoteSnapshot(\n root, source, inspection, command, env, timeoutMs, calls,\n )\n if (snapshot.agent && snapshot.agent.id === candidate.id &&\n snapshot.agent.name === projectName && snapshot.agent.runtimeId === operation.runtimeId &&\n snapshot.agent.instructions === source.instructions && !snapshot.agent.archived) {\n matches.push({ id: candidate.id })\n }\n }\n if (matches.length !== 1) {\n return {\n inspection: discovery,\n snapshot: null,\n failures: [matches.length ? 'reconcile.agent-ambiguous' : 'reconcile.agent-fingerprint-mismatch'],\n }\n }\n operation.agentId = matches[0].id\n const inspection = inspectMulticaWorkspace(root, name, {\n execute: true, yes: true, persist: true, command, env, timeoutMs,\n agentIdOverride: operation.agentId,\n }) as MulticaWorkspaceInspection\n appendInspectionCalls(inspection, 'reconcile.bound', calls)\n const snapshot = inspection.passed ? readRemoteSnapshot(\n root, source, inspection, command, env, timeoutMs, calls,\n ) : null\n return { inspection, snapshot, failures: inspection.passed ? [] : [...inspection.failures] }\n}\n\nfunction appendInspectionCalls(\n inspection: MulticaWorkspaceInspection,\n prefix: string,\n calls: MulticaDeploymentCall[],\n): void {\n calls.push(...inspection.calls.map((call) => ({\n id: `${prefix}.${call.id}`,\n kind: 'read' as const,\n argv: [...call.argv],\n exitCode: call.exitCode,\n stdoutHash: call.stdoutHash,\n stderrHash: call.stderrHash,\n passed: call.passed,\n ambiguous: false,\n })))\n}\n\nfunction readSmokeFromReceipt(\n root: string,\n receipt: MulticaDeploymentReceipt,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n): { smoke: MulticaDeploymentSmoke; calls: MulticaDeploymentCall[] } {\n const plan = {\n profile: receipt.profile,\n expected: { workspaceId: '', runtimeId: receipt.agent.runtimeId },\n } as MulticaDeploymentPlan\n const operation = loadOperationAndReceipt(root, receipt.workspace, receipt.operationId)?.operation\n if (!operation) throw new Error('Multica deployment operation 缺失')\n plan.expected.workspaceId = operation.workspaceId\n const calls = [...receipt.calls]\n const markerValue = receipt.smoke.marker\n if (!markerValue || sha256(markerValue) !== receipt.smoke.markerHash) {\n return { calls, smoke: {\n ...receipt.smoke,\n status: 'failed',\n failures: ['smoke.marker-not-recoverable'],\n } }\n }\n const smoke = readSmoke(\n root, plan, markerValue, receipt.smoke.issueId, receipt.agent.id,\n receipt.smoke.requiredSkills, command, env, timeoutMs, calls,\n )\n return { smoke, calls }\n}\n\nfunction persistReceiptAndState(\n root: string,\n workspace: DevelopmentWorkspaceView,\n operation: MulticaDeploymentOperation,\n receipt: MulticaDeploymentReceipt,\n): void {\n assertReportRedacted(receipt)\n const receiptPath = safeProjectPath(root, receipt.evidencePath, false)\n atomicJson(receiptPath, receipt)\n const receiptHash = sha256(readFileSync(receiptPath))\n operation.status = receipt.status\n operation.agentId = receipt.agent.id || operation.agentId\n operation.receiptId = receipt.receiptId\n operation.receiptPath = receipt.evidencePath\n operation.calls = receipt.calls\n operation.failures = receipt.failures\n operation.updatedAt = new Date().toISOString()\n persistOperation(root, operation)\n const operationPath = operationRelativePath(workspace.name, operation.operationId)\n const operationHash = sha256(readFileSync(safeProjectPath(root, operationPath, true)))\n const binding = {\n $schema: 'dingtalk-agent/multica-deployment-pointer@1',\n operationId: operation.operationId,\n operationPath,\n operationHash,\n receiptId: receipt.receiptId,\n receiptPath: receipt.evidencePath,\n receiptHash,\n }\n atomicJson(safeProjectPath(root, operationBindingPath(\n workspace.name, operation.operationId,\n ), false), binding)\n atomicJson(safeProjectPath(root, latestDeploymentPointer(workspace.name), false), binding)\n const stateStatus = receipt.status === 'ready' ? 'ready'\n : receipt.status === 'retired' ? 'retired'\n : receipt.status === 'failed' ? 'failed' : 'verifying'\n const state: DevelopmentWorkspaceState = {\n $schema: 'dingtalk-agent/workspace-state@1',\n workspace: workspace.name,\n provider: 'multica',\n status: stateStatus,\n binding: {\n ...(workspace.state?.binding || {}),\n profile: receipt.profile,\n remoteWorkspaceId: operation.workspaceId,\n runtimeId: operation.runtimeId,\n agentId: receipt.agent.id || operation.agentId,\n deploymentHash: receipt.deploymentHash,\n inspectionId: receipt.inspectionId,\n inspectionObservedHash: receipt.inspectionObservedHash,\n inspectionEvidencePath: receipt.inspectionEvidencePath,\n receiptPath: receipt.evidencePath,\n operationId: operation.operationId,\n sourceHash: workspace.sourceHash,\n },\n desiredHash: workspace.desiredHash,\n observedHash: receipt.inspectionObservedHash || receipt.observedHash,\n lastPlanId: receipt.planId,\n lastReceiptId: receipt.receiptId,\n lastEvalId: receipt.smoke.taskId,\n }\n atomicJson(safeProjectPath(root, join(\n WORKSPACE_STATE_ROOT, `${workspace.name}.json`,\n ), false), state)\n}\n\nfunction createOperation(\n operationId: string, plan: MulticaDeploymentPlan,\n): MulticaDeploymentOperation {\n return {\n $schema: 'dingtalk-agent/multica-deployment-operation@1',\n operationId,\n planId: plan.planId,\n workspace: plan.workspace,\n action: plan.action,\n status: 'applying',\n profile: plan.profile,\n workspaceId: plan.expected.workspaceId,\n runtimeId: plan.expected.runtimeId,\n agentId: plan.expected.agentId,\n deploymentHash: plan.deploymentHash,\n ambiguousAction: '',\n receiptId: '',\n receiptPath: '',\n calls: [],\n failures: [],\n updatedAt: new Date().toISOString(),\n }\n}\n\nfunction persistOperation(root: string, operation: MulticaDeploymentOperation): void {\n assertReportRedacted(operation)\n atomicJson(safeProjectPath(root, operationRelativePath(\n operation.workspace, operation.operationId,\n ), false), operation)\n}\n\nfunction loadOperationAndReceipt(\n root: string,\n name: string,\n operationId = '',\n): { operation: MulticaDeploymentOperation; receipt: MulticaDeploymentReceipt } | null {\n let operationPath = ''\n let expectedOperationHash = ''\n let receiptPath = ''\n let expectedReceiptHash = ''\n let expectedOperationId = ''\n let expectedReceiptId = ''\n const requestedOperationId = operationId ? resourceId(operationId, 'operation-id') : ''\n const pointerPath = safeProjectPath(root, requestedOperationId\n ? operationBindingPath(name, requestedOperationId)\n : latestDeploymentPointer(name), false)\n if (!existsSync(pointerPath)) {\n if (requestedOperationId) throw new Error('Multica deployment operation binding 不存在')\n return null\n }\n const pointer = readJson(pointerPath, 'Multica deployment pointer') as Record<string, unknown>\n if (pointer.$schema !== 'dingtalk-agent/multica-deployment-pointer@1') {\n throw new Error('Multica deployment pointer schema 非法')\n }\n expectedOperationId = resourceId(pointer.operationId, 'pointer.operationId')\n expectedReceiptId = resourceId(pointer.receiptId, 'pointer.receiptId')\n if (requestedOperationId && expectedOperationId !== requestedOperationId) {\n throw new Error('Multica deployment operation binding ID 不一致')\n }\n operationPath = stringField(pointer.operationPath, 'pointer.operationPath')\n expectedOperationHash = stringField(pointer.operationHash, 'pointer.operationHash')\n receiptPath = stringField(pointer.receiptPath, 'pointer.receiptPath')\n expectedReceiptHash = stringField(pointer.receiptHash, 'pointer.receiptHash')\n const operationFile = safeProjectPath(root, operationPath, true)\n const operationBytes = readFileSync(operationFile)\n if (expectedOperationHash && sha256(operationBytes) !== expectedOperationHash) {\n throw new Error('Multica deployment operation hash 不一致')\n }\n const operation = parseOperation(JSON.parse(operationBytes.toString('utf8')))\n if (operation.workspace !== name || operation.operationId !== expectedOperationId) {\n throw new Error('Multica deployment operation 绑定不一致')\n }\n if (!receiptPath) receiptPath = operation.receiptPath\n if (!receiptPath) throw new Error('Multica deployment operation 尚无 Receipt')\n const receiptFile = safeProjectPath(root, receiptPath, true)\n const receiptBytes = readFileSync(receiptFile)\n if (expectedReceiptHash && sha256(receiptBytes) !== expectedReceiptHash) {\n throw new Error('Multica deployment Receipt hash 不一致')\n }\n const receipt = parseReceipt(JSON.parse(receiptBytes.toString('utf8')))\n if (receipt.operationId !== operation.operationId || receipt.workspace !== name ||\n receipt.receiptId !== expectedReceiptId || receipt.evidencePath !== receiptPath ||\n operation.receiptId !== receipt.receiptId || operation.receiptPath !== receiptPath ||\n operation.planId !== receipt.planId || operation.action !== receipt.action ||\n operation.profile !== receipt.profile || operation.deploymentHash !== receipt.deploymentHash) {\n throw new Error('Multica deployment Receipt 绑定不一致')\n }\n assertReportRedacted({ operation, receipt })\n return { operation, receipt }\n}\n\nfunction loadLatestReceipt(\n root: string, name: string,\n): MulticaDeploymentReceipt | null {\n // A missing pointer means this is the first deployment. Once a pointer exists,\n // any integrity or binding failure is evidence corruption and must fail closed.\n return loadOperationAndReceipt(root, name)?.receipt || null\n}\n\nfunction parseOperation(value: unknown): MulticaDeploymentOperation {\n const item = objectValue(value, 'Multica deployment operation')\n if (item.$schema !== 'dingtalk-agent/multica-deployment-operation@1') {\n throw new Error('Multica deployment operation schema 非法')\n }\n return item as unknown as MulticaDeploymentOperation\n}\n\nfunction parseReceipt(value: unknown): MulticaDeploymentReceipt {\n const item = objectValue(value, 'Multica deployment Receipt')\n if (item.$schema !== MULTICA_DEPLOYMENT_SCHEMA) {\n throw new Error('Multica deployment Receipt schema 非法')\n }\n return item as unknown as MulticaDeploymentReceipt\n}\n\nfunction runProvider(\n command: string,\n argv: string[],\n id: string,\n kind: MulticaDeploymentCall['kind'],\n cwd: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n): ProviderResult {\n const budget = deploymentWriteBudgets.get(calls)\n if (kind === 'write' && budget && calls.filter((call) => call.kind === 'write').length >= budget.forward) {\n throw new DeploymentFailure('budget.forward-exhausted')\n }\n if (kind === 'rollback' && budget && calls.filter((call) => call.kind === 'rollback').length >= budget.rollback) {\n throw new DeploymentFailure('budget.rollback-exhausted')\n }\n const run = spawnSync(command, argv, {\n cwd, env, encoding: 'utf8', timeout: timeoutMs,\n maxBuffer: 32 * 1024 * 1024, stdio: ['ignore', 'pipe', 'pipe'],\n })\n const stdout = String(run.stdout || '')\n const stderr = String(run.stderr || '')\n const exitCode = typeof run.status === 'number' ? run.status : 1\n const ambiguous = Boolean(run.error && (run.error as NodeJS.ErrnoException).code === 'ETIMEDOUT')\n const passed = !run.error && exitCode === 0\n calls.push({\n id, kind, argv: redactArgv(argv), exitCode,\n stdoutHash: sha256(stdout), stderrHash: sha256(stderr), passed, ambiguous,\n })\n if (!passed) throw new DeploymentFailure(`command.${id}`, ambiguous)\n return { stdout, stderr }\n}\n\nfunction scopedArgs(\n plan: { profile: string; expected: { workspaceId: string } },\n args: string[],\n): string[] {\n return ['--profile', plan.profile, '--workspace-id', plan.expected.workspaceId, ...args]\n}\n\nfunction redactArgv(argv: string[]): string[] {\n const redactNext = new Set([\n '--instructions', '--description', '--title', '--content', '--content-file',\n '--custom-env', '--mcp-config',\n ])\n const result: string[] = []\n let redact = false\n for (const arg of argv) {\n if (redact) {\n result.push(`[redacted:${sha256(arg).slice(0, 12)}]`)\n redact = false\n continue\n }\n result.push(arg)\n if (redactNext.has(arg)) redact = true\n }\n return result\n}\n\nfunction parseRemoteSkill(value: Record<string, unknown>): RemoteSkill {\n const id = resourceId(value.id, 'remote skill.id')\n const name = stringField(value.name, 'remote skill.name')\n const content = optionalString(value.content)\n const rawFiles = Array.isArray(value.files) ? value.files : []\n if (rawFiles.length > MAX_SKILL_SUPPORTING_FILES) {\n throw new Error(`远端 Skill supporting files 超过 ${MAX_SKILL_SUPPORTING_FILES} 个`)\n }\n const files = rawFiles.map((raw, index) => {\n const item = objectValue(raw, `remote skill.files[${index}]`)\n const fileContent = optionalString(item.content)\n const path = safeSkillPath(stringField(item.path, `remote skill.files[${index}].path`))\n return {\n id: resourceId(item.id, `remote skill.files[${index}].id`),\n path, content: fileContent, hash: sha256(fileContent),\n }\n }).sort((a, b) => a.path.localeCompare(b.path))\n const hash = skillTreeHash(content, files.map((item) => ({ path: item.path, hash: item.hash })))\n return { id, name, content, files, hash }\n}\n\nfunction parseRemoteAgent(value: Record<string, unknown>): RemoteAgent {\n return {\n id: resourceId(value.id, 'remote agent.id'),\n name: stringField(value.name, 'remote agent.name'),\n runtimeId: resourceId(value.runtime_id, 'remote agent.runtime_id'),\n instructions: optionalString(value.instructions),\n status: optionalString(value.status),\n archived: Boolean(optionalString(value.archived_at)) || value.archived === true,\n }\n}\n\nfunction remoteMatchesDesired(\n snapshot: RemoteSnapshot, source: DeploymentSource, runtimeId: string,\n): boolean {\n if (!snapshot.agent || snapshot.agent.archived || snapshot.agent.runtimeId !== runtimeId ||\n snapshot.agent.instructions !== source.instructions) return false\n const ids: string[] = []\n for (const local of source.skills) {\n const remote = snapshot.skills.get(local.name)\n if (!remote || remote.hash !== local.hash) return false\n ids.push(remote.id)\n }\n return stableStringify(ids.sort()) === stableStringify([...snapshot.assignedIds].sort())\n}\n\nfunction deploymentObservedHash(snapshot: RemoteSnapshot, inspectionId: string): string {\n return digest(stableStringify({\n inspectionId,\n agent: snapshot.agent ? {\n id: snapshot.agent.id,\n runtimeId: snapshot.agent.runtimeId,\n instructionsHash: sha256(snapshot.agent.instructions),\n archived: snapshot.agent.archived,\n } : null,\n skills: [...snapshot.skills.entries()].map(([name, skill]) => ({\n name, id: skill?.id || '', hash: skill?.hash || '',\n })).sort((a, b) => a.name.localeCompare(b.name)),\n assignments: [...snapshot.assignedIds].sort(),\n }))\n}\n\nfunction skillTreeHash(content: string, files: Array<{ path: string; hash: string }>): string {\n return digest(stableStringify({\n main: sha256(content),\n files: [...files].sort((a, b) => a.path.localeCompare(b.path)),\n }))\n}\n\nfunction frontmatterName(content: string): string {\n const block = content.match(/^---\\s*\\n([\\s\\S]*?)\\n---(?:\\s*\\n|$)/)\n if (!block) return ''\n const match = block[1].match(/^name:\\s*[\"']?([^\"'\\n]+?)[\"']?\\s*$/m)\n return match ? match[1].trim() : ''\n}\n\nfunction rejectCredentialMaterial(content: string, label: string): void {\n const patterns = [\n /-----BEGIN (?:RSA |EC |OPENSSH )?PRIVATE KEY-----/,\n /\\bBearer\\s+[A-Za-z0-9._~+\\/-]{20,}/i,\n /\\b(?:sk|pat|token)[-_][A-Za-z0-9_-]{24,}\\b/i,\n /(?:access[_-]?token|client[_-]?secret|password)\\s*[:=]\\s*[\"']?(?!<|\\*|replace|example|redacted)[A-Za-z0-9._~+\\/-]{16,}/i,\n ]\n if (patterns.some((pattern) => pattern.test(content))) {\n throw new Error(`${label} 检测到疑似真实凭据,拒绝部署`)\n }\n}\n\nfunction assertReportRedacted(value: unknown): void {\n const source = JSON.stringify(value)\n if (/-----BEGIN (?:RSA |EC |OPENSSH )?PRIVATE KEY-----|\\bBearer\\s+[A-Za-z0-9._~+\\/-]{20,}|\\b(?:sk|pat|token)[-_][A-Za-z0-9_-]{24,}\\b/i.test(source)) {\n throw new Error('Multica deployment evidence 脱敏失败')\n }\n if (/\"(?:instructions|content|stdout|stderr|email|serverUrl|server_url)\"\\s*:/i.test(source)) {\n throw new Error('Multica deployment evidence 包含禁止的原始内容字段')\n }\n}\n\nfunction emptySmoke(\n status: MulticaDeploymentSmoke['status'], requiredSkills: string[],\n): MulticaDeploymentSmoke {\n return {\n status, marker: '', markerHash: '', issueId: '', taskId: '', taskStatus: '',\n requiredSkills: [...requiredSkills].sort(), loadedSkills: [],\n toolTracePassed: false, responsePassed: false, responseHash: '', failures: [],\n }\n}\n\nfunction emptyRollback(attempted: boolean): MulticaDeploymentReceipt['rollback'] {\n return { attempted, passed: !attempted, actions: [], failures: [] }\n}\n\nfunction writeTemporaryContent(root: string, name: string, content: string): string {\n const path = join(root, `${safeFileName(name)}.txt`)\n writeFileSync(path, content, { mode: 0o600 })\n return path\n}\n\nfunction safeFileName(value: string): string {\n return value.replace(/[^A-Za-z0-9._-]/g, '_').slice(0, 120)\n}\n\nfunction readUtf8(path: string, label: string, limit: number): string {\n const bytes = readFileSync(path)\n if (bytes.length > limit) throw new Error(`${label} 超过 ${limit} bytes`)\n if (bytes.includes(0)) throw new Error(`${label} 不是 UTF-8 文本`)\n const content = bytes.toString('utf8')\n if (Buffer.from(content, 'utf8').compare(bytes) !== 0) throw new Error(`${label} 不是合法 UTF-8`)\n return content\n}\n\nfunction readJson(path: string, label: string): unknown {\n if (lstatSync(path).isSymbolicLink()) throw new Error(`${label} 不能是符号链接`)\n try { return JSON.parse(readFileSync(path, 'utf8')) }\n catch { throw new Error(`${label} 不是合法 JSON`) }\n}\n\nfunction jsonObject(value: string | unknown, label: string): Record<string, unknown> {\n let parsed = value\n if (typeof value === 'string') {\n try { parsed = JSON.parse(value) } catch { throw new DeploymentFailure(`json.${label}`) }\n }\n return objectValue(parsed, label)\n}\n\nfunction jsonArray(value: string, label: string): Record<string, unknown>[] {\n let parsed: unknown\n try { parsed = JSON.parse(value) } catch { throw new DeploymentFailure(`json.${label}`) }\n if (!Array.isArray(parsed) || parsed.some((item) => !item || typeof item !== 'object' || Array.isArray(item))) {\n throw new DeploymentFailure(`shape.${label}`)\n }\n return parsed as Record<string, unknown>[]\n}\n\nfunction objectValue(value: unknown, label: string): Record<string, unknown> {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n throw new Error(`${label} 必须是 object`)\n }\n return value as Record<string, unknown>\n}\n\nfunction stringField(value: unknown, label: string): string {\n if (typeof value !== 'string' || !value) throw new Error(`${label} 必须是非空字符串`)\n return value\n}\n\nfunction optionalString(value: unknown): string {\n return typeof value === 'string' ? value : ''\n}\n\nfunction resourceId(value: unknown, label: string): string {\n const item = stringField(value, label)\n if (!/^[A-Za-z0-9][A-Za-z0-9._:-]{1,127}$/.test(item) ||\n /^(?:sk-|bearer|token[-_])/i.test(item)) {\n throw new Error(`${label} 不是安全稳定 ID`)\n }\n return item\n}\n\nfunction safeSkillPath(value: string): string {\n if (!value || value === 'SKILL.md' || value.startsWith('/') || value.includes('\\\\') ||\n value.split('/').some((part) => !part || part === '.' || part === '..')) {\n throw new Error(`远端 Skill supporting file 路径非法: ${value}`)\n }\n return value\n}\n\nfunction requireMulticaWorkspace(\n start: string, name: string, cliVersion = '',\n): DevelopmentWorkspaceView {\n const workspace = showDevelopmentWorkspace(start, name, cliVersion)\n if (workspace.provider.kind !== 'multica' || workspace.legacy) {\n throw new Error(`Workspace ${name} 不是 multica Provider;deploy 不执行 ${workspace.provider.kind}`)\n }\n return workspace\n}\n\nfunction safeExternalSkillRoot(path: string): string {\n if (!existsSync(path) || lstatSync(path).isSymbolicLink()) {\n throw new Error(`Canonical Multica Boot Skill 不存在或是符号链接: ${path}`)\n }\n return realpathSync(path)\n}\n\nfunction safeProjectPath(root: string, ref: string, mustExist: boolean): string {\n const rootReal = realpathSync(resolve(root))\n const candidate = resolve(rootReal, ref)\n const rel = relative(rootReal, candidate)\n if (!isInside(rootReal, candidate)) throw new Error(`Multica deployment 路径越出 Project: ${ref}`)\n if (mustExist && !existsSync(candidate)) throw new Error(`Multica deployment 路径不存在: ${ref}`)\n if (existsSync(candidate)) {\n if (lstatSync(candidate).isSymbolicLink()) throw new Error(`Multica deployment 路径不能是符号链接: ${ref}`)\n if (!isInside(rootReal, realpathSync(candidate))) throw new Error(`Multica deployment 真实路径越界: ${ref}`)\n }\n let ancestor = dirname(candidate)\n while (!existsSync(ancestor)) {\n const parent = dirname(ancestor)\n if (parent === ancestor) break\n ancestor = parent\n }\n if (!existsSync(ancestor) || !isInside(rootReal, realpathSync(ancestor))) {\n throw new Error(`Multica deployment 父目录真实路径越界: ${ref}`)\n }\n void rel\n return candidate\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 deploymentsRoot(name: string): string {\n return join(MULTICA_EVIDENCE_ROOT, safeName(name), 'multica-deployments')\n}\n\nfunction receiptsRoot(name: string): string {\n return join(deploymentsRoot(name), 'receipts')\n}\n\nfunction receiptRelativePath(name: string, receiptId: string): string {\n return join(receiptsRoot(name), `${resourceId(receiptId, 'receipt-id')}.json`)\n}\n\nfunction operationRelativePath(name: string, operationId: string): string {\n return join(deploymentsRoot(name), 'operations', `${resourceId(operationId, 'operation-id')}.json`)\n}\n\nfunction latestDeploymentPointer(name: string): string {\n return join(deploymentsRoot(name), 'latest.json')\n}\n\nfunction operationBindingPath(name: string, operationId: string): string {\n return join(deploymentsRoot(name), 'bindings', `${resourceId(operationId, 'operation-id')}.json`)\n}\n\nfunction safeName(value: string): string {\n if (!/^[a-z0-9](?:[a-z0-9._-]{0,62}[a-z0-9])?$/.test(value)) {\n throw new Error(`Workspace name 非法: ${value}`)\n }\n return value\n}\n\nfunction positiveTimeout(value: number | undefined, fallback: number, max: number): number {\n if (value === undefined) return fallback\n if (!Number.isFinite(value) || value < 100 || value > max) {\n throw new Error(`Multica timeout 必须在 100..${max} ms`)\n }\n return Math.floor(value)\n}\n\nfunction atomicJson(path: string, value: unknown): void {\n mkdirSync(dirname(path), { recursive: true })\n const temp = `${path}.tmp-${process.pid}-${randomUUID().slice(0, 8)}`\n const source = `${JSON.stringify(value, null, 2)}\\n`\n writeFileSync(temp, source, { mode: 0o600, flag: 'wx' })\n renameSync(temp, path)\n if (readFileSync(path, 'utf8') !== source) throw new Error(`原子写后回读不一致: ${path}`)\n}\n\nfunction sha256(value: string | Buffer): string {\n return createHash('sha256').update(value).digest('hex')\n}\n"]}
1
+ {"version":3,"file":"multica-deploy.js","sourceRoot":"","sources":["../../src/multica-deploy.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash, randomUUID } from 'node:crypto'\nimport { spawnSync } from 'node:child_process'\nimport {\n existsSync, lstatSync, mkdirSync, mkdtempSync, readFileSync, readdirSync,\n realpathSync, renameSync, rmSync, writeFileSync,\n} from 'node:fs'\nimport { tmpdir } from 'node:os'\nimport { basename, dirname, join, relative, resolve } from 'node:path'\nimport {\n WORKSPACE_STATE_ROOT, inspectAgentProject, projectSkillRef, showDevelopmentWorkspace,\n type DevelopmentWorkspaceState, type DevelopmentWorkspaceView,\n} from './development-workspace.js'\nimport { digest, stableStringify } from './events.js'\nimport {\n MULTICA_EVIDENCE_ROOT,\n emitProviderDiagnostic, inspectMulticaWorkspace, planMulticaWorkspace, sanitizeProviderEnv,\n statusMulticaWorkspace,\n type MulticaFailureDetail, type MulticaWorkspaceInspection,\n} from './multica-provider.js'\nimport {\n allRuntimeVocabularies, commandInvokesDws, forbiddenSmokeTool, skillsLoadedInContent,\n vocabulariesForRuntimeProvider,\n type RuntimeTraceVocabulary, type TraceToolMessage,\n} from './multica-runtime-vocabulary.js'\n\nexport const MULTICA_DEPLOYMENT_SCHEMA = 'dingtalk-agent/multica-deployment-receipt@1'\nconst MAX_DEPLOY_SKILLS = 32\nconst MAX_SKILL_SUPPORTING_FILES = 128\nconst deploymentWriteBudgets = new WeakMap<MulticaDeploymentCall[], {\n forward: number; rollback: number\n}>()\n\ntype DeploymentAction = 'apply' | 'retire'\ntype DeploymentStatus = 'applying' | 'reconciling' | 'verifying' | 'ready' | 'failed' | 'retired'\n\nexport interface MulticaDeploymentPlan {\n $schema: 'dingtalk-agent/multica-deployment-plan@1'\n planId: string\n action: DeploymentAction\n workspace: string\n provider: 'multica'\n profile: string\n inspectionId: string\n desiredHash: string\n deploymentHash: string\n expected: {\n workspaceId: string\n runtimeId: string\n agentId: string\n agentName: string\n skills: Array<{ name: string; hash: string; files: number }>\n definitionHash: string\n instructionsHash: string\n /** Runtime the Agent currently sits on when this plan is an explicit rebind migration. */\n previousRuntimeId?: string\n }\n rebindRuntime: boolean\n operations: string[]\n writeBudget: { forward: number; rollback: number }\n blocking: string[]\n requiresPlanId: true\n requiresExplicitYes: true\n remoteRead: false\n remoteWrite: false\n triggerWrite: false\n sideEffect: false\n dingtalkSideEffect: false\n}\n\nexport interface MulticaDeploymentCall {\n id: string\n kind: 'read' | 'write' | 'rollback'\n argv: string[]\n exitCode: number\n stdoutHash: string\n stderrHash: string\n passed: boolean\n ambiguous: boolean\n}\n\nexport interface MulticaDeploymentSmoke {\n status: 'not-run' | 'pending' | 'passed' | 'failed'\n marker: string\n markerHash: string\n issueId: string\n taskId: string\n taskStatus: string\n taskDiagnostic: string\n requiredSkills: string[]\n loadedSkills: string[]\n toolTracePassed: boolean\n responsePassed: boolean\n responseHash: string\n failures: string[]\n /** Runtime provider whose trace vocabularies judged this smoke ('' on legacy receipts). */\n runtimeProvider: string\n vocabularyIds: string[]\n /** Distinct tool names seen in the trace (names only, never inputs). */\n toolNames: string[]\n /** Tool names no active vocabulary knows — recorded for diagnosis, not judged fatal. */\n unrecognizedTools: string[]\n /**\n * 'skills-not-visible': the task failed because pushed Skills had not materialized into the\n * sandbox yet (cold-start race) — retryable, not a real deployment failure.\n */\n classification: '' | 'skills-not-visible'\n failureDetails: MulticaFailureDetail[]\n}\n\nexport interface MulticaDeploymentReceipt {\n $schema: 'dingtalk-agent/multica-deployment-receipt@1'\n receiptId: string\n operationId: string\n planId: string\n action: DeploymentAction\n workspace: string\n provider: 'multica'\n profile: string\n status: DeploymentStatus\n passed: boolean\n providerReady: boolean\n idempotent: boolean\n inspectionId: string\n inspectionObservedHash: string\n inspectionEvidencePath: string\n desiredHash: string\n deploymentHash: string\n observedHash: string\n agent: {\n id: string\n runtimeId: string\n instructionsHash: string\n archived: boolean\n action: 'create' | 'update' | 'restore' | 'archive' | 'noop' | 'unknown'\n }\n skills: Array<{\n id: string\n name: string\n sourceHash: string\n remoteHash: string\n action: 'create' | 'update' | 'noop' | 'unknown'\n }>\n assignmentHash: string\n calls: MulticaDeploymentCall[]\n smoke: MulticaDeploymentSmoke\n rollback: {\n attempted: boolean\n passed: boolean\n actions: string[]\n failures: string[]\n }\n failures: string[]\n failureDetails: MulticaFailureDetail[]\n /** Present when this apply was an explicit --rebind-runtime migration. */\n rebind?: { fromRuntimeId: string; toRuntimeId: string }\n evidencePath: string\n remoteRead: true\n remoteWrite: boolean\n triggerWrite: false\n sideEffect: 'multica-read-write' | 'multica-read' | 'none'\n dingtalkSideEffect: false\n}\n\nexport interface MulticaDeploymentOperation {\n $schema: 'dingtalk-agent/multica-deployment-operation@1'\n operationId: string\n planId: string\n workspace: string\n action: DeploymentAction\n status: DeploymentStatus\n profile: string\n workspaceId: string\n runtimeId: string\n agentId: string\n deploymentHash: string\n ambiguousAction: string\n receiptId: string\n receiptPath: string\n calls: MulticaDeploymentCall[]\n failures: string[]\n updatedAt: string\n}\n\nexport interface MulticaDeploymentStatusReport {\n $schema: 'dingtalk-agent/multica-deployment-status@1'\n workspace: string\n provider: 'multica'\n available: boolean\n operationId: string\n receiptId: string\n status: DeploymentStatus | 'missing'\n passed: boolean\n providerReady: boolean\n operationIntegrity: boolean\n receiptIntegrity: boolean\n reconciled: boolean\n /**\n * Without --execute this is the receipt frozen at apply time — smoke fields may be the\n * pending snapshot (empty/null-looking), not the remote now. `nextAction` carries the\n * exact refresh command.\n */\n receiptFrozen: boolean\n smokeStale: boolean\n nextAction: string\n failures: string[]\n receipt: MulticaDeploymentReceipt | null\n remoteRead: boolean\n /** True only when a --execute reconcile retried a skills-not-visible smoke (one mention). */\n remoteWrite: boolean\n triggerWrite: false\n sideEffect: false | 'multica-read' | 'multica-read-write'\n dingtalkSideEffect: false\n}\n\nexport interface MulticaDeploymentList {\n $schema: 'dingtalk-agent/multica-deployment-list@1'\n workspace: string\n provider: 'multica'\n deployments: Array<{\n receiptId: string\n operationId: string\n action: DeploymentAction\n status: DeploymentStatus\n passed: boolean\n providerReady: boolean\n planId: string\n deploymentHash: string\n }>\n remoteRead: false\n remoteWrite: false\n triggerWrite: false\n sideEffect: false\n dingtalkSideEffect: false\n}\n\nexport interface MulticaDeploymentOptions {\n yes?: boolean\n planId?: string\n noWait?: boolean\n execute?: boolean\n command?: string\n env?: NodeJS.ProcessEnv\n timeoutMs?: number\n smokeTimeoutMs?: number\n cliVersion?: string\n operationId?: string\n /** Explicit, plan-gated migration of the Agent to the runtime the env now points at. */\n rebindRuntime?: boolean\n}\n\nexport interface MulticaWorkspaceRunOptions {\n execute?: boolean\n yes?: boolean\n command?: string\n env?: NodeJS.ProcessEnv\n timeoutMs?: number\n cliVersion?: string\n out?: string\n}\n\nexport interface MulticaWorkspaceRunPlan {\n $schema: 'dingtalk-agent/multica-workspace-run-plan@1'\n workspace: string\n provider: 'multica'\n profile: string\n workspaceId: string\n runtimeId: string\n agentId: string\n promptHash: string\n operations: string[]\n blocking: string[]\n requiresExecute: true\n requiresExplicitYes: true\n remoteRead: false\n remoteWrite: false\n triggerWrite: false\n sideEffect: false\n dingtalkSideEffect: false\n}\n\nexport interface MulticaWorkspaceRunReport {\n $schema: 'dingtalk-agent/multica-workspace-run@1'\n passed: boolean\n runId: string\n workspace: string\n provider: 'multica'\n profile: string\n workspaceId: string\n runtimeId: string\n agentId: string\n promptHash: string\n issueId: string\n issueStatus: string\n taskId: string\n taskStatus: string\n taskDiagnostic: string\n pollAttempts: number\n pollIntervalMs: number\n answer: string\n answerHash: string\n toolNames: string[]\n loadedSkills: string[]\n failures: string[]\n calls: MulticaDeploymentCall[]\n evidencePath: string\n remoteRead: true\n remoteWrite: boolean\n triggerWrite: false\n sideEffect: 'multica-issue-read-write'\n dingtalkSideEffect: false\n}\n\ninterface LocalSkillFile {\n path: string\n absolutePath: string\n hash: string\n bytes: number\n}\n\ninterface LocalSkillBundle {\n name: string\n root: string\n mainPath: string\n content: string\n files: LocalSkillFile[]\n hash: string\n}\n\ninterface DeploymentSource {\n definitionHash: string\n instructions: string\n instructionsHash: string\n skills: LocalSkillBundle[]\n deploymentHash: string\n}\n\ninterface RemoteSkillFile {\n id: string\n path: string\n content: string\n hash: string\n}\n\ninterface RemoteSkill {\n id: string\n name: string\n content: string\n files: RemoteSkillFile[]\n hash: string\n}\n\ninterface RemoteAgent {\n id: string\n name: string\n runtimeId: string\n instructions: string\n status: string\n archived: boolean\n}\n\ninterface RemoteSnapshot {\n agent: RemoteAgent | null\n skills: Map<string, RemoteSkill | null>\n assignedIds: string[]\n}\n\ninterface ProviderResult {\n stdout: string\n stderr: string\n}\n\ninterface RollbackContext {\n createdSkillIds: string[]\n updatedSkills: RemoteSkill[]\n createdAgentId: string\n updatedAgent: RemoteAgent | null\n assignmentChanged: boolean\n previousAssignedIds: string[]\n}\n\nclass DeploymentFailure extends Error {\n constructor(\n readonly category: string,\n readonly ambiguous = false,\n readonly detail?: MulticaFailureDetail,\n ) {\n super(category)\n }\n}\n\nexport function runMulticaWorkspaceIssue(\n start: string,\n name: string,\n prompt: string,\n options: MulticaWorkspaceRunOptions = {},\n): MulticaWorkspaceRunPlan | MulticaWorkspaceRunReport {\n const normalizedPrompt = prompt.trim()\n if (!normalizedPrompt) throw new Error('workspace run prompt 不能为空')\n if (Buffer.byteLength(normalizedPrompt, 'utf8') > 64 * 1024) {\n throw new Error('workspace run prompt 不能超过 65536 bytes')\n }\n rejectCredentialMaterial(normalizedPrompt, 'workspace run prompt')\n const env = options.env || process.env\n const cliVersion = options.cliVersion || ''\n const info = inspectAgentProject(start, cliVersion)\n requireMulticaWorkspace(info.root, name, cliVersion)\n const providerPlan = planMulticaWorkspace(info.root, name, { env, cliVersion })\n const blocking = [...providerPlan.blocking]\n if (!providerPlan.expected.agentId) blocking.push('agent-id.missing')\n const plan: MulticaWorkspaceRunPlan = {\n $schema: 'dingtalk-agent/multica-workspace-run-plan@1',\n workspace: name,\n provider: 'multica',\n profile: providerPlan.profile,\n workspaceId: providerPlan.expected.workspaceId,\n runtimeId: providerPlan.expected.runtimeId,\n agentId: providerPlan.expected.agentId,\n promptHash: sha256(normalizedPrompt),\n operations: ['scope.inspect', 'issue.create', 'issue.runs', 'issue.run-messages', 'evidence.persist'],\n blocking: [...new Set(blocking)].sort(),\n requiresExecute: true,\n requiresExplicitYes: true,\n remoteRead: false,\n remoteWrite: false,\n triggerWrite: false,\n sideEffect: false,\n dingtalkSideEffect: false,\n }\n if (!options.execute) return plan\n if (!options.yes) {\n throw new Error('Multica workspace run 会创建远端 Issue;必须同时传 --execute --yes')\n }\n if (plan.blocking.length) {\n throw new Error(`Multica workspace run 前置条件不完整: ${plan.blocking.join(', ')}`)\n }\n\n const command = options.command || env.DTA_MULTICA_BIN || 'multica'\n // A real Issue-channel run does agent work plus issue get/comment/status side-tasks and\n // routinely needs minutes; the old 30s default timed out on almost every honest run. Wait\n // 4 minutes by default (still capped at 5). A run that overruns is resumable via\n // `workspace run --status --run-id` against the same Issue — no duplicate Issue.\n const timeoutMs = positiveTimeout(options.timeoutMs, 240_000, 300_000)\n const calls: MulticaDeploymentCall[] = []\n const inspection = inspectMulticaWorkspace(info.root, name, {\n execute: true, yes: true, persist: false, command, env,\n timeoutMs: Math.min(timeoutMs, 30_000), cliVersion,\n }) as MulticaWorkspaceInspection\n appendInspectionCalls(inspection, 'run.preflight', calls)\n const assignedSkills = inspection.resources.assignedSkills\n .filter((item) => item.enabled).map((item) => item.name).sort()\n const expectedSkills = [...providerPlan.expected.skills].sort()\n if (!inspection.passed || inspection.resources.workspace?.id !== plan.workspaceId ||\n inspection.resources.runtime?.id !== plan.runtimeId ||\n inspection.resources.agent?.id !== plan.agentId ||\n inspection.diff.includes('agent.runtime-drift') ||\n stableStringify(assignedSkills) !== stableStringify(expectedSkills)) {\n throw new Error('Multica workspace run scope 或 Skill assignment 与 Project 不一致;未创建 Issue')\n }\n\n const runId = `multica_workspace_run_${Date.now()}_${randomUUID().slice(0, 8)}`\n const marker = `DTA-WORKSPACE-RUN-${randomUUID()}`\n const issue = jsonObject(runProvider(\n command, scopedArgs({ profile: plan.profile, expected: { workspaceId: plan.workspaceId } }, [\n 'issue', 'create', '--title', `[DTA workspace run] ${marker}`,\n '--description', normalizedPrompt, '--assignee-id', plan.agentId, '--output', 'json',\n ]), 'workspace-run.issue.create', 'write', info.root, env,\n Math.min(timeoutMs, 30_000), calls,\n ).stdout, 'workspace run issue')\n const issueId = resourceId(issue.id, 'workspace run issue.id')\n return readbackWorkspaceRun({\n root: info.root, name, plan, issueId, runId, command, env, timeoutMs, calls, out: options.out,\n runtimeProvider: inspection.resources.runtime?.provider || '',\n })\n}\n\ninterface WorkspaceRunReadback {\n root: string\n name: string\n plan: { profile: string; workspaceId: string; runtimeId: string; agentId: string; promptHash: string }\n issueId: string\n runId: string\n command: string\n env: NodeJS.ProcessEnv\n timeoutMs: number\n calls: MulticaDeploymentCall[]\n out?: string\n runtimeProvider?: string\n}\n\n/**\n * Poll an existing Issue's assignee-agent task to a terminal state, then reconstruct the\n * run report from its trace. Shared by the initial `workspace run` (right after it creates the\n * Issue) and `workspace run --status --run-id` (resume against the SAME Issue, no new write) so\n * a timed-out run reconciles instead of spawning a duplicate Issue.\n */\nfunction readbackWorkspaceRun(ctx: WorkspaceRunReadback): MulticaWorkspaceRunReport {\n const { root, name, plan, issueId, runId, command, env, timeoutMs, calls } = ctx\n const started = Date.now()\n const pollIntervalMs = 2_000\n const pollCalls: MulticaDeploymentCall[] = []\n let pollAttempts = 0\n let task: Record<string, unknown> | undefined\n while (Date.now() - started < timeoutMs) {\n pollAttempts += 1\n const runs = jsonArray(runProvider(\n command, scopedArgs({ profile: plan.profile, expected: { workspaceId: plan.workspaceId } }, [\n 'issue', 'runs', issueId, '--full-id', '--output', 'json',\n ]), 'workspace-run.issue.runs', 'read', root, env,\n Math.min(timeoutMs, 30_000), pollCalls,\n ).stdout, 'workspace run issue runs')\n task = runs.filter((item) => !optionalString(item.agent_id) ||\n optionalString(item.agent_id) === plan.agentId)\n .sort((a, b) => optionalString(b.created_at).localeCompare(optionalString(a.created_at)))[0]\n const status = optionalString(task?.status)\n if (['completed', 'failed', 'cancelled'].includes(status)) break\n Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, pollIntervalMs)\n }\n calls.push(...uniqueCalls(pollCalls))\n\n const taskId = task?.id ? resourceId(task.id, 'workspace run task.id') : ''\n const taskStatus = optionalString(task?.status) || 'not-created'\n let messages: Record<string, unknown>[] = []\n if (taskId && ['completed', 'failed', 'cancelled'].includes(taskStatus)) {\n messages = jsonArray(runProvider(\n command, scopedArgs({ profile: plan.profile, expected: { workspaceId: plan.workspaceId } }, [\n 'issue', 'run-messages', taskId, '--issue', issueId, '--output', 'json',\n ]), 'workspace-run.issue.messages', 'read', root, env,\n Math.min(timeoutMs, 30_000), calls,\n ).stdout, 'workspace run messages')\n }\n const toolUses = messages.filter((item) => optionalString(item.type) === 'tool_use')\n const toolNames = toolUses.map((item) => optionalString(item.tool)).filter(Boolean)\n // Skill 装载与文件写入按 runtime 词汇解读(并集),并叠加 tool_result 的\n // `**Skill loaded**` 正向证据 —— 与 smoke 判定同一套词汇,不再假定工具名叫 skill。\n const vocabularies = ctx.runtimeProvider\n ? vocabulariesForRuntimeProvider(ctx.runtimeProvider) : []\n const active: readonly RuntimeTraceVocabulary[] = vocabularies.length\n ? vocabularies : allRuntimeVocabularies()\n const loadedSet = new Set<string>()\n const runBannerTools = new Set(active.flatMap((item) => [...item.skillResultTools]))\n for (const item of messages) {\n const type = optionalString(item.type)\n const tool = optionalString(item.tool)\n if (type === 'tool_use') {\n const message: TraceToolMessage = { tool, input: smokeToolInput(item) }\n for (const vocabulary of active) {\n const name = vocabulary.skillLoadFromToolUse(message)\n if (name) loadedSet.add(name)\n }\n } else if (type === 'tool_result' && runBannerTools.has(tool)) {\n for (const name of skillsLoadedInContent(optionalString(item.content))) loadedSet.add(name)\n }\n }\n const loadedSkills = [...loadedSet].sort()\n const texts = messages.filter((item) => optionalString(item.type) === 'text')\n .map((item) => optionalString(item.content)).filter(Boolean)\n const replyWrites = toolUses.flatMap((item) => {\n const message: TraceToolMessage = {\n tool: optionalString(item.tool), input: smokeToolInput(item),\n }\n return active.map((vocabulary) => vocabulary.writeEvidence(message))\n .filter((write): write is { path: string; content: string } => Boolean(write))\n // 裸文件名与 ./、绝对路径等价(平台常见写法,与 smoke 白名单同一课)。\n .filter((write) => write.path === 'reply.md' || write.path.endsWith('/reply.md'))\n .map((write) => write.content)\n }).filter(Boolean)\n const answer = safeRemoteOutput(replyWrites.at(-1) || texts.at(-1) || '', 64 * 1024)\n const issueReadback = jsonObject(runProvider(\n command, scopedArgs({ profile: plan.profile, expected: { workspaceId: plan.workspaceId } }, [\n 'issue', 'get', issueId, '--output', 'json',\n ]), 'workspace-run.issue.readback', 'read', root, env,\n Math.min(timeoutMs, 30_000), calls,\n ).stdout, 'workspace run issue readback')\n const issueStatus = optionalString(issueReadback.status)\n const failures: string[] = []\n if (!task) failures.push('task.not-created')\n else if (!['completed', 'failed', 'cancelled'].includes(taskStatus)) failures.push('task.timeout')\n else if (taskStatus !== 'completed') failures.push(`task.${taskStatus}`)\n if (!answer) failures.push('answer.missing')\n const taskDiagnostic = task\n ? remoteTaskDiagnostic(task)\n : `未发现关联 task;Issue 状态=${issueStatus || 'unknown'},已轮询 ${pollAttempts} 次`\n const report: MulticaWorkspaceRunReport = {\n $schema: 'dingtalk-agent/multica-workspace-run@1',\n passed: failures.length === 0,\n runId,\n workspace: name,\n provider: 'multica',\n profile: plan.profile,\n workspaceId: plan.workspaceId,\n runtimeId: plan.runtimeId,\n agentId: plan.agentId,\n promptHash: plan.promptHash,\n issueId,\n issueStatus,\n taskId,\n taskStatus,\n taskDiagnostic,\n pollAttempts,\n pollIntervalMs,\n answer,\n answerHash: sha256(answer),\n toolNames,\n loadedSkills,\n failures,\n calls,\n evidencePath: '',\n remoteRead: true,\n remoteWrite: calls.some((call) => call.kind === 'write'),\n triggerWrite: false,\n sideEffect: 'multica-issue-read-write',\n dingtalkSideEffect: false,\n }\n const defaultEvidence = join(\n MULTICA_EVIDENCE_ROOT, safeName(name), 'multica-runs', `${runId}.json`,\n )\n report.evidencePath = relative(root, safeProjectPath(\n root, ctx.out || defaultEvidence, false,\n ))\n assertReportRedacted(report)\n atomicJson(safeProjectPath(root, report.evidencePath, false), report)\n return report\n}\n\n/**\n * Resume a `workspace run` by re-reading the SAME Issue's task instead of creating a new one.\n * Loads the persisted run evidence by runId, confirms the workspace scope still resolves to the\n * same target (fail closed on drift), then polls that Issue's assignee-agent task to a terminal\n * state and rewrites the run report. Read-only against Multica — never enqueues a second Issue.\n */\nexport function statusMulticaWorkspaceRun(\n start: string,\n name: string,\n options: MulticaWorkspaceRunOptions & { runId?: string } = {},\n): MulticaWorkspaceRunReport {\n const env = options.env || process.env\n const cliVersion = options.cliVersion || ''\n const runId = String(options.runId || '').trim()\n if (!/^multica_workspace_run_[0-9]+_[a-f0-9]{8}$/.test(runId)) {\n throw new Error('workspace run --status 需要一个合法的 --run-id(来自上次 run 的 runId)')\n }\n if (!options.execute) {\n throw new Error('workspace run --status 会向 Multica 独立回读同一 Issue;必须传 --execute')\n }\n if (!options.yes) throw new Error('workspace run --status 远端回读必须同时传 --execute --yes')\n const info = inspectAgentProject(start, cliVersion)\n requireMulticaWorkspace(info.root, name, cliVersion)\n // The original run persists evidence to `--out` when given, else the default runId path. Resume\n // must look where the run actually wrote, so honor the same `--out` (and rewrite back to it).\n const evidenceRel = options.out || join(\n MULTICA_EVIDENCE_ROOT, safeName(name), 'multica-runs', `${runId}.json`)\n const evidenceAbs = safeProjectPath(info.root, evidenceRel, false)\n if (!existsSync(evidenceAbs)) {\n throw new Error(\n `找不到 run 证据 ${evidenceRel};--run-id 必须是本 Workspace 已有的 runId` +\n `${options.out ? '' : '(若原 run 用了 --out,请对 --status 传相同 --out)'}`)\n }\n const prior = JSON.parse(readFileSync(evidenceAbs, 'utf8')) as MulticaWorkspaceRunReport\n if (prior.$schema !== 'dingtalk-agent/multica-workspace-run@1' ||\n prior.provider !== 'multica' || prior.workspace !== name || !prior.issueId) {\n throw new Error('run 证据不是本 Workspace 的 multica run,或缺少 issueId;已 fail closed')\n }\n // The evidence file must belong to THIS runId. Two runs sharing one --out overwrite each\n // other, so resuming the first runId against that path would otherwise read the second run's\n // Issue while reporting the first runId — cross-wiring answer and run. Fail closed on mismatch.\n if (prior.runId !== runId) {\n throw new Error(\n `run 证据 ${evidenceRel} 属于 runId ${prior.runId},与 --run-id ${runId} 不一致;已 fail closed` +\n `(同一 --out 被后一次 run 覆盖时会这样)`)\n }\n // Re-resolve scope offline and refuse unless the WHOLE frozen target still matches: an env\n // pointing at a different runtime/agent/profile (or an invalid ref surfacing in blocking) must\n // not let the resume mis-record the old task or overwrite the frozen values. workspaceId alone\n // is not enough.\n const providerPlan = planMulticaWorkspace(info.root, name, { env, cliVersion })\n const scopeDrift = providerPlan.blocking.length ? ['blocking:' + providerPlan.blocking.join(',')] : []\n if (providerPlan.profile !== prior.profile) scopeDrift.push('profile')\n if (providerPlan.expected.workspaceId !== prior.workspaceId) scopeDrift.push('workspace')\n if (providerPlan.expected.runtimeId !== prior.runtimeId) scopeDrift.push('runtime')\n if (providerPlan.expected.agentId !== prior.agentId) scopeDrift.push('agent')\n if (scopeDrift.length) {\n throw new Error(\n `workspace run --status: 当前 workspace scope 与 run 证据不一致 [${scopeDrift.join(', ')}];已 fail closed`)\n }\n const command = options.command || env.DTA_MULTICA_BIN || 'multica'\n const timeoutMs = positiveTimeout(options.timeoutMs, 240_000, 300_000)\n const plan = {\n profile: providerPlan.profile,\n workspaceId: providerPlan.expected.workspaceId,\n runtimeId: providerPlan.expected.runtimeId,\n agentId: providerPlan.expected.agentId,\n promptHash: prior.promptHash,\n }\n return readbackWorkspaceRun({\n root: info.root, name, plan, issueId: prior.issueId, runId,\n command, env, timeoutMs, calls: [], out: options.out,\n })\n}\n\nexport function planMulticaDeployment(\n start: string,\n name: string,\n options: {\n action?: DeploymentAction; env?: NodeJS.ProcessEnv; cliVersion?: string\n rebindRuntime?: boolean\n } = {},\n): MulticaDeploymentPlan {\n const action = options.action || 'apply'\n const rebindRuntime = Boolean(options.rebindRuntime) && action === 'apply'\n const env = options.env || process.env\n const cliVersion = options.cliVersion || ''\n const info = inspectAgentProject(start, cliVersion)\n const workspace = requireMulticaWorkspace(info.root, name, cliVersion)\n const source = loadDeploymentSource(info.root)\n const readPlan = planMulticaWorkspace(info.root, name, { env, cliVersion })\n const blocking = [...readPlan.blocking]\n let inspectionId = ''\n let previousRuntimeId = ''\n try {\n const status = statusMulticaWorkspace(info.root, name, cliVersion)\n inspectionId = status.inspectionId\n if (!status.readyForApply || !status.evidenceIntegrity || !status.stateMatched) {\n blocking.push(...status.failures.map((item) => `inspection.${item}`))\n }\n // Runtime 归属漂移只挡「普通 apply」:没有显式 --rebind-runtime 时不允许悄悄把\n // Agent 搬到新 runtime。retire 是收敛动作,不受漂移阻挡(否则 deploy 与 retire\n // 会被同一把锁一起锁死)。\n if (status.diff.includes('agent.runtime-drift')) {\n previousRuntimeId = status.observedAgentRuntimeId || ''\n if (action === 'apply' && !rebindRuntime) blocking.push('agent.runtime-drift')\n }\n } catch {\n blocking.push('inspection.invalid')\n }\n if (!inspectionId) blocking.push('inspection.missing')\n if (action === 'retire' && !readPlan.expected.agentId) blocking.push('agent-id.missing')\n if (rebindRuntime && !readPlan.expected.agentId) blocking.push('rebind.agent-id-missing')\n const expectedSkills = source.skills.map((skill) => ({\n name: skill.name, hash: skill.hash, files: skill.files.length + 1,\n }))\n const operations = action === 'retire'\n ? ['scope.reinspect', 'agent.archive', 'agent.readback', 'receipt.persist']\n : [\n 'scope.reinspect', 'skills.readback', 'skills.reconcile',\n ...(rebindRuntime ? ['agent.rebind-runtime'] : []), 'agent.reconcile',\n 'skills.assign-exact', 'provider.readback', 'load-smoke.create',\n 'load-smoke.recover-if-unstarted', 'load-smoke.readback', 'receipt.persist',\n ]\n const writeBudget = action === 'retire'\n ? { forward: 1, rollback: 0 }\n : {\n // +3 on top of the base 5: bounded skills-not-visible smoke retries (cold sandbox).\n forward: source.skills.length * (1 + MAX_SKILL_SUPPORTING_FILES * 2) + 8,\n rollback: source.skills.length * (1 + MAX_SKILL_SUPPORTING_FILES * 2) + 3,\n }\n const planId = `multica_deploy_plan_${digest(stableStringify({\n action, workspace: name, profile: readPlan.profile, inspectionId,\n desiredHash: workspace.desiredHash, deploymentHash: source.deploymentHash,\n expected: readPlan.expected, operations, writeBudget, rebindRuntime, previousRuntimeId,\n blocking: [...new Set(blocking)].sort(),\n })).slice(0, 24)}`\n return {\n $schema: 'dingtalk-agent/multica-deployment-plan@1',\n planId,\n action,\n workspace: name,\n provider: 'multica',\n profile: readPlan.profile,\n inspectionId,\n desiredHash: workspace.desiredHash,\n deploymentHash: source.deploymentHash,\n expected: {\n workspaceId: readPlan.expected.workspaceId,\n runtimeId: readPlan.expected.runtimeId,\n agentId: readPlan.expected.agentId,\n agentName: info.project.displayName,\n skills: expectedSkills,\n definitionHash: source.definitionHash,\n instructionsHash: source.instructionsHash,\n ...(rebindRuntime ? { previousRuntimeId } : {}),\n },\n rebindRuntime,\n operations,\n writeBudget,\n blocking: [...new Set(blocking)].sort(),\n requiresPlanId: true,\n requiresExplicitYes: true,\n remoteRead: false,\n remoteWrite: false,\n triggerWrite: false,\n sideEffect: false,\n dingtalkSideEffect: false,\n }\n}\n\nexport function applyMulticaDeployment(\n start: string,\n name: string,\n options: MulticaDeploymentOptions = {},\n action: DeploymentAction = 'apply',\n): MulticaDeploymentReceipt {\n if (!options.yes) {\n throw new Error('dta deploy 会修改 Multica 远端资源;必须显式传 --yes 和当前 --plan-id')\n }\n if (!options.planId) throw new Error('dta deploy 必须传 dry-run 返回的 --plan-id')\n const env = options.env || process.env\n const cliVersion = options.cliVersion || ''\n const rebindRuntime = Boolean(options.rebindRuntime) && action === 'apply'\n const plan = planMulticaDeployment(start, name, { action, env, cliVersion, rebindRuntime })\n if (options.planId !== plan.planId) {\n throw new Error(`deploy plan 已失效;期望当前 planId ${plan.planId}。` +\n 'plan 对中间状态敏感:dry-run 之后、apply 之前不要插入 workspace inspect 等操作;' +\n '重跑 --dry-run 取新 planId 后立即 apply')\n }\n if (plan.blocking.length) throw new Error(`deploy 前置条件不完整: ${plan.blocking.join(', ')}`)\n const info = inspectAgentProject(start, cliVersion)\n const workspace = requireMulticaWorkspace(info.root, name, cliVersion)\n const source = loadDeploymentSource(info.root)\n const command = options.command || env.DTA_MULTICA_BIN || 'multica'\n const timeoutMs = positiveTimeout(options.timeoutMs, 30_000, 300_000)\n const calls: MulticaDeploymentCall[] = []\n deploymentWriteBudgets.set(calls, plan.writeBudget)\n const preflight = inspectMulticaWorkspace(info.root, name, {\n execute: true, yes: true, persist: false, command, env, timeoutMs, cliVersion,\n }) as MulticaWorkspaceInspection\n if (!preflight.passed || preflight.inspectionId !== plan.inspectionId ||\n preflight.profile !== plan.profile ||\n preflight.expected.workspaceId !== plan.expected.workspaceId ||\n preflight.expected.runtimeId !== plan.expected.runtimeId) {\n throw new Error('deploy scope/readback 与冻结 plan 不一致;未执行任何远端写入' +\n '(dry-run 与 apply 之间若插入过 inspect 或远端有变化,重跑 --dry-run 后立即 apply)')\n }\n if (action === 'apply' && !rebindRuntime && preflight.diff.includes('agent.runtime-drift')) {\n throw new Error('deploy 前置条件不完整: agent.runtime-drift' +\n '(Agent 当前绑定在其他 runtime;显式迁移用 --rebind-runtime,退役用 --retire)')\n }\n appendInspectionCalls(preflight, 'preflight', calls)\n\n const operationId = `multica_operation_${Date.now()}_${randomUUID().slice(0, 12)}`\n const operation = createOperation(operationId, plan)\n operation.calls = [...calls]\n persistOperation(info.root, operation)\n const rollback: RollbackContext = {\n createdSkillIds: [], updatedSkills: [], createdAgentId: '', updatedAgent: null,\n assignmentChanged: false, previousAssignedIds: [],\n }\n let receipt: MulticaDeploymentReceipt\n const temp = mkdtempSync(join(tmpdir(), `dta-multica-deploy-${safeName(name)}-`))\n try {\n if (action === 'retire') {\n receipt = retireDeployment(\n info.root, workspace, source, plan, preflight, operation, command, env, timeoutMs, calls,\n )\n } else {\n receipt = executeApply(\n info.root, workspace, source, plan, preflight, operation, command, env,\n timeoutMs, positiveTimeout(options.smokeTimeoutMs, 30_000, 300_000),\n Boolean(options.noWait), calls, rollback, temp,\n )\n }\n } catch (error) {\n const failure = error instanceof DeploymentFailure\n ? error : new DeploymentFailure('deploy.internal-failure')\n const rollbackReport = failure.ambiguous\n ? emptyRollback(false)\n : rollbackConfirmed(\n info.root, plan, command, env, timeoutMs, calls, rollback, temp,\n )\n const status: DeploymentStatus = failure.ambiguous ? 'reconciling' : 'failed'\n operation.status = status\n operation.ambiguousAction = failure.ambiguous ? failure.category : ''\n operation.calls = calls\n operation.failures = [failure.category, ...rollbackReport.failures]\n operation.updatedAt = new Date().toISOString()\n receipt = failureReceipt(\n info.root, workspace, source, plan, preflight, operation, calls,\n rollbackReport, status, failure.category, failure.detail,\n )\n } finally {\n rmSync(temp, { recursive: true, force: true })\n deploymentWriteBudgets.delete(calls)\n }\n persistReceiptAndState(info.root, workspace, operation, receipt)\n return receipt\n}\n\nfunction executeApply(\n root: string,\n workspace: DevelopmentWorkspaceView,\n source: DeploymentSource,\n plan: MulticaDeploymentPlan,\n preflight: MulticaWorkspaceInspection,\n operation: MulticaDeploymentOperation,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n smokeTimeoutMs: number,\n noWait: boolean,\n calls: MulticaDeploymentCall[],\n rollback: RollbackContext,\n temp: string,\n): MulticaDeploymentReceipt {\n const snapshot = readRemoteSnapshot(\n root, source, preflight, command, env, timeoutMs, calls,\n )\n const exactBefore = remoteMatchesDesired(snapshot, source, plan.expected.runtimeId)\n const previous = loadLatestReceipt(root, workspace.name)\n if (exactBefore && workspace.state?.status === 'ready' &&\n workspace.state.binding.deploymentHash === source.deploymentHash &&\n previous?.passed && previous.providerReady && previous.deploymentHash === source.deploymentHash) {\n const receiptId = `multica_receipt_${digest(stableStringify({\n operationId: operation.operationId, planId: plan.planId, reuse: previous.receiptId,\n })).slice(0, 24)}`\n return {\n ...previous,\n receiptId,\n operationId: operation.operationId,\n planId: plan.planId,\n idempotent: true,\n calls: [...calls],\n agent: { ...previous.agent, action: 'noop' },\n skills: previous.skills.map((skill) => ({ ...skill, action: 'noop' })),\n failureDetails: Array.isArray(previous.failureDetails) ? previous.failureDetails : [],\n evidencePath: receiptRelativePath(workspace.name, receiptId),\n remoteWrite: false,\n sideEffect: 'multica-read',\n }\n }\n\n operation.status = 'applying'\n operation.calls = calls\n operation.updatedAt = new Date().toISOString()\n persistOperation(root, operation)\n\n const skillResults: MulticaDeploymentReceipt['skills'] = []\n const skillIds: string[] = []\n for (const local of source.skills) {\n const remote = snapshot.skills.get(local.name) || null\n const result = reconcileSkill(\n root, plan, local, remote, command, env, timeoutMs, calls, rollback, temp,\n )\n skillIds.push(result.skill.id)\n skillResults.push({\n id: result.skill.id,\n name: local.name,\n sourceHash: local.hash,\n remoteHash: result.skill.hash,\n action: result.action,\n })\n }\n\n const agentResult = reconcileAgent(\n root, plan, source, snapshot.agent, command, env, timeoutMs, calls, rollback,\n )\n const agentId = agentResult.agent.id\n operation.agentId = agentId\n const expectedAssignments = [...skillIds].sort()\n rollback.previousAssignedIds = [...snapshot.assignedIds]\n if (stableStringify([...snapshot.assignedIds].sort()) !== stableStringify(expectedAssignments)) {\n runProvider(\n command, scopedArgs(plan, [\n 'agent', 'skills', 'set', agentId, '--skill-ids', expectedAssignments.join(','), '--output', 'json',\n ]), 'agent.skills.set', 'write', root, env, timeoutMs, calls,\n )\n rollback.assignmentChanged = true\n }\n\n const readback = inspectMulticaWorkspace(root, workspace.name, {\n execute: true, yes: true, persist: true, command, env, timeoutMs,\n agentIdOverride: agentId,\n }) as MulticaWorkspaceInspection\n if (!readback.passed || !readback.resources.agent ||\n readback.resources.agent.id !== agentId ||\n readback.resources.agent.runtimeId !== plan.expected.runtimeId) {\n throw new DeploymentFailure('readback.agent-mismatch')\n }\n const finalSnapshot = readRemoteSnapshot(\n root, source, readback, command, env, timeoutMs, calls,\n )\n if (!remoteMatchesDesired(finalSnapshot, source, plan.expected.runtimeId)) {\n throw new DeploymentFailure('readback.deployment-mismatch')\n }\n const observedHash = deploymentObservedHash(finalSnapshot, readback.inspectionId)\n const smoke = createAndReadSmoke(\n root, plan, source, agentId, readback.resources.runtime?.provider || '',\n command, env, timeoutMs, smokeTimeoutMs, noWait, calls,\n )\n // skills-not-visible 是冷沙箱竞态(推送的 Skill 尚未物化),不是真实部署失败:落\n // verifying 而非 failed,避免把一次正常部署误判成失败、把人推去改本体换模板。\n const status: DeploymentStatus = smoke.status === 'passed'\n ? 'ready' : smoke.status === 'pending' ? 'verifying'\n : smoke.classification === 'skills-not-visible' ? 'verifying' : 'failed'\n const receiptId = `multica_receipt_${digest(stableStringify({\n operationId: operation.operationId, planId: plan.planId, observedHash,\n smoke: { markerHash: smoke.markerHash, issueId: smoke.issueId, taskId: smoke.taskId },\n })).slice(0, 24)}`\n return {\n $schema: MULTICA_DEPLOYMENT_SCHEMA,\n receiptId,\n operationId: operation.operationId,\n planId: plan.planId,\n action: 'apply',\n workspace: workspace.name,\n provider: 'multica',\n profile: plan.profile,\n status,\n passed: status === 'ready',\n providerReady: status === 'ready',\n idempotent: false,\n inspectionId: readback.inspectionId,\n inspectionObservedHash: readback.observedHash,\n inspectionEvidencePath: readback.evidencePath,\n desiredHash: workspace.desiredHash,\n deploymentHash: source.deploymentHash,\n observedHash,\n agent: {\n id: finalSnapshot.agent?.id || agentId,\n runtimeId: finalSnapshot.agent?.runtimeId || '',\n instructionsHash: sha256(finalSnapshot.agent?.instructions || ''),\n archived: Boolean(finalSnapshot.agent?.archived),\n action: agentResult.action,\n },\n skills: skillResults.sort((a, b) => a.name.localeCompare(b.name)),\n assignmentHash: digest(stableStringify(expectedAssignments)),\n calls: [...calls],\n smoke,\n rollback: emptyRollback(false),\n failures: [...smoke.failures],\n failureDetails: [...smoke.failureDetails],\n ...(plan.rebindRuntime && plan.expected.previousRuntimeId ? {\n rebind: {\n fromRuntimeId: plan.expected.previousRuntimeId,\n toRuntimeId: plan.expected.runtimeId,\n },\n } : {}),\n evidencePath: receiptRelativePath(workspace.name, receiptId),\n remoteRead: true,\n remoteWrite: calls.some((call) => call.kind === 'write'),\n triggerWrite: false,\n sideEffect: 'multica-read-write',\n dingtalkSideEffect: false,\n }\n}\n\nfunction retireDeployment(\n root: string,\n workspace: DevelopmentWorkspaceView,\n source: DeploymentSource,\n plan: MulticaDeploymentPlan,\n preflight: MulticaWorkspaceInspection,\n operation: MulticaDeploymentOperation,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n): MulticaDeploymentReceipt {\n const agentId = preflight.resources.agent?.id || plan.expected.agentId\n if (!agentId) throw new DeploymentFailure('retire.agent-id-missing')\n if (!preflight.resources.agent?.archived) {\n runProvider(\n command, scopedArgs(plan, ['agent', 'archive', agentId, '--output', 'json']),\n 'agent.archive', 'write', root, env, timeoutMs, calls,\n )\n }\n const agent = parseRemoteAgent(jsonObject(runProvider(\n command, scopedArgs(plan, ['agent', 'get', agentId, '--output', 'json']),\n 'agent.get.retire-readback', 'read', root, env, timeoutMs, calls,\n ).stdout, 'retire agent'))\n if (!agent.archived || agent.id !== agentId) throw new DeploymentFailure('retire.readback-mismatch')\n const observedHash = digest(stableStringify({ agentId, archived: true, deploymentHash: source.deploymentHash }))\n const receiptId = `multica_receipt_${digest(stableStringify({\n operationId: operation.operationId, action: 'retire', observedHash,\n })).slice(0, 24)}`\n return {\n $schema: MULTICA_DEPLOYMENT_SCHEMA,\n receiptId,\n operationId: operation.operationId,\n planId: plan.planId,\n action: 'retire',\n workspace: workspace.name,\n provider: 'multica',\n profile: plan.profile,\n status: 'retired',\n passed: true,\n providerReady: false,\n idempotent: Boolean(preflight.resources.agent?.archived),\n inspectionId: preflight.inspectionId,\n inspectionObservedHash: preflight.observedHash,\n inspectionEvidencePath: preflight.evidencePath,\n desiredHash: workspace.desiredHash,\n deploymentHash: source.deploymentHash,\n observedHash,\n agent: {\n id: agent.id,\n runtimeId: agent.runtimeId,\n instructionsHash: sha256(agent.instructions),\n archived: true,\n action: preflight.resources.agent?.archived ? 'noop' : 'archive',\n },\n skills: [],\n assignmentHash: '',\n calls: [...calls],\n smoke: emptySmoke('not-run', source.skills.map((item) => item.name)),\n rollback: emptyRollback(false),\n failures: [],\n failureDetails: [],\n evidencePath: receiptRelativePath(workspace.name, receiptId),\n remoteRead: true,\n remoteWrite: calls.some((call) => call.kind === 'write'),\n triggerWrite: false,\n sideEffect: 'multica-read-write',\n dingtalkSideEffect: false,\n }\n}\n\nfunction loadDeploymentSource(root: string): DeploymentSource {\n const info = inspectAgentProject(root)\n const definitionPath = safeProjectPath(root, info.project.definition, true)\n const definition = readUtf8(definitionPath, 'Agent Definition', 512 * 1024)\n rejectCredentialMaterial(definition, 'Agent Definition')\n const definitionHash = sha256(definition)\n const skillRoots: Array<{ name: string; root: string }> = []\n for (const name of info.project.skills) {\n const ref = projectSkillRef(info.project, name)\n skillRoots.push({ name, root: safeProjectPath(root, ref, true) })\n }\n if (skillRoots.length > MAX_DEPLOY_SKILLS) {\n throw new Error(`Multica deploy 最多支持 ${MAX_DEPLOY_SKILLS} 个受管 Skills`)\n }\n const skills = skillRoots.map(({ name, root: skillRoot }) => loadSkillBundle(name, skillRoot))\n .sort((a, b) => a.name.localeCompare(b.name))\n if (new Set(skills.map((item) => item.name)).size !== skills.length) {\n throw new Error('Multica deploy required Skills 不能重名')\n }\n // Agent instructions are the human-authored Definition, byte for byte. Deployment\n // hashes and the managed Skill set belong to the control plane and its Receipt;\n // injecting them into the System Prompt makes the role unreadable and creates a\n // second runtime protocol beside the Host's native Skill assignment.\n const instructions = definition\n const instructionsHash = sha256(instructions)\n const deploymentHash = digest(stableStringify({\n definitionHash, instructionsHash,\n skills: skills.map((item) => ({ name: item.name, hash: item.hash })),\n }))\n return { definitionHash, instructions, instructionsHash, skills, deploymentHash }\n}\n\nfunction loadSkillBundle(name: string, root: string): LocalSkillBundle {\n const actual = realpathSync(root)\n if (!lstatSync(actual).isDirectory()) throw new Error(`Skill ${name} source 不是目录`)\n const files: LocalSkillFile[] = []\n const visit = (directory: string, prefix = ''): void => {\n for (const entry of readdirSync(directory, { withFileTypes: true })\n .sort((a, b) => a.name.localeCompare(b.name))) {\n const path = join(directory, entry.name)\n const ref = prefix ? `${prefix}/${entry.name}` : entry.name\n if (entry.isSymbolicLink()) throw new Error(`Skill ${name} 不允许符号链接: ${ref}`)\n if (entry.isDirectory()) visit(path, ref)\n else if (entry.isFile()) {\n const content = readFileSync(path)\n if (content.length > 1024 * 1024) throw new Error(`Skill ${name} 文件超过 1 MiB: ${ref}`)\n const text = content.toString('utf8')\n if (Buffer.from(text, 'utf8').compare(content) !== 0 || content.includes(0)) {\n throw new Error(`Skill ${name} 只支持 UTF-8 supporting files: ${ref}`)\n }\n rejectCredentialMaterial(text, `Skill ${name}/${ref}`)\n files.push({ path: ref, absolutePath: path, hash: sha256(content), bytes: content.length })\n if (files.length > MAX_SKILL_SUPPORTING_FILES + 1) {\n throw new Error(`Skill ${name} files 超过 ${MAX_SKILL_SUPPORTING_FILES + 1} 个`)\n }\n } else throw new Error(`Skill ${name} 包含特殊文件: ${ref}`)\n }\n }\n visit(actual)\n if (files.reduce((sum, item) => sum + item.bytes, 0) > 8 * 1024 * 1024) {\n throw new Error(`Skill ${name} 总大小超过 8 MiB`)\n }\n const main = files.find((item) => item.path === 'SKILL.md')\n if (!main) throw new Error(`Skill ${name} 缺少 SKILL.md`)\n const content = readUtf8(main.absolutePath, `Skill ${name}`, 1024 * 1024)\n const declared = frontmatterName(content)\n if (declared !== name) throw new Error(`Skill ${name} frontmatter name 不一致: ${declared || '<missing>'}`)\n rejectCredentialMaterial(content, `Skill ${name}`)\n const supporting = files.filter((item) => item.path !== 'SKILL.md')\n if (supporting.length > MAX_SKILL_SUPPORTING_FILES) {\n throw new Error(`Skill ${name} supporting files 超过 ${MAX_SKILL_SUPPORTING_FILES} 个`)\n }\n const hash = skillTreeHash(content, supporting.map((item) => ({ path: item.path, hash: item.hash })))\n return { name, root: actual, mainPath: main.absolutePath, content, files: supporting, hash }\n}\n\nfunction readRemoteSnapshot(\n root: string,\n source: DeploymentSource,\n inspection: MulticaWorkspaceInspection,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n): RemoteSnapshot {\n const planLike = {\n profile: inspection.profile,\n expected: inspection.expected,\n }\n const skills = new Map<string, RemoteSkill | null>()\n for (const local of source.skills) {\n const candidates = inspection.resources.catalogSkills.filter((item) => item.name === local.name)\n if (candidates.length > 1) throw new DeploymentFailure(`skills.duplicate:${local.name}`)\n if (!candidates.length) {\n skills.set(local.name, null)\n continue\n }\n const raw = jsonObject(runProvider(\n command, scopedArgs(planLike, ['skill', 'get', candidates[0].id, '--output', 'json']),\n `skill.get:${local.name}`, 'read', root, env, timeoutMs, calls,\n ).stdout, `skill ${local.name}`)\n const skill = parseRemoteSkill(raw)\n if (skill.id !== candidates[0].id || skill.name !== local.name) {\n throw new DeploymentFailure(`skills.binding-mismatch:${local.name}`)\n }\n skills.set(local.name, skill)\n }\n let agent: RemoteAgent | null = null\n if (inspection.resources.agent) {\n agent = parseRemoteAgent(jsonObject(runProvider(\n command, scopedArgs(planLike, [\n 'agent', 'get', inspection.resources.agent.id, '--output', 'json',\n ]), 'agent.get.deploy', 'read', root, env, timeoutMs, calls,\n ).stdout, 'agent deploy'))\n if (agent.id !== inspection.resources.agent.id) throw new DeploymentFailure('agent.binding-mismatch')\n }\n return {\n agent,\n skills,\n assignedIds: inspection.resources.assignedSkills.filter((item) => item.enabled)\n .map((item) => item.id).sort(),\n }\n}\n\nfunction reconcileSkill(\n root: string,\n plan: MulticaDeploymentPlan,\n local: LocalSkillBundle,\n remote: RemoteSkill | null,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n rollback: RollbackContext,\n temp: string,\n): { skill: RemoteSkill; action: 'create' | 'update' | 'noop' } {\n let id = remote?.id || ''\n let action: 'create' | 'update' | 'noop' = 'noop'\n if (!remote) {\n const created = jsonObject(runProvider(\n command, scopedArgs(plan, [\n 'skill', 'create', '--name', local.name,\n '--description', `Managed by dingtalk-agent (${local.hash.slice(0, 12)})`,\n '--content-file', local.mainPath, '--output', 'json',\n ]), `skill.create:${local.name}`, 'write', root, env, timeoutMs, calls,\n ).stdout, `created skill ${local.name}`)\n id = resourceId(created.id, `created skill ${local.name}.id`)\n rollback.createdSkillIds.push(id)\n action = 'create'\n for (const file of local.files) upsertSkillFile(\n root, plan, id, file.path, file.absolutePath, command, env, timeoutMs, calls,\n )\n } else if (remote.hash !== local.hash) {\n rollback.updatedSkills.push(remote)\n runProvider(\n command, scopedArgs(plan, [\n 'skill', 'update', id, '--content-file', local.mainPath, '--output', 'json',\n ]), `skill.update:${local.name}`, 'write', root, env, timeoutMs, calls,\n )\n syncSkillFiles(root, plan, id, local, remote, command, env, timeoutMs, calls)\n action = 'update'\n }\n const readback = parseRemoteSkill(jsonObject(runProvider(\n command, scopedArgs(plan, ['skill', 'get', id, '--output', 'json']),\n `skill.get.readback:${local.name}`, 'read', root, env, timeoutMs, calls,\n ).stdout, `skill readback ${local.name}`))\n if (readback.name !== local.name || readback.hash !== local.hash) {\n throw new DeploymentFailure(`skill.readback-mismatch:${local.name}`)\n }\n return { skill: readback, action }\n}\n\nfunction reconcileAgent(\n root: string,\n plan: MulticaDeploymentPlan,\n source: DeploymentSource,\n remote: RemoteAgent | null,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n rollback: RollbackContext,\n): { agent: RemoteAgent; action: 'create' | 'update' | 'restore' | 'noop' } {\n let id = remote?.id || ''\n let action: 'create' | 'update' | 'restore' | 'noop' = 'noop'\n if (!remote) {\n const created = jsonObject(runProvider(\n command, scopedArgs(plan, [\n 'agent', 'create', '--name', plan.expected.agentName,\n '--description', `Managed dingtalk-agent ${plan.deploymentHash.slice(0, 12)}`,\n '--instructions', source.instructions,\n '--runtime-id', plan.expected.runtimeId,\n '--permission-mode', 'private', '--output', 'json',\n ]), 'agent.create', 'write', root, env, timeoutMs, calls,\n ).stdout, 'created agent')\n id = resourceId(created.id, 'created agent.id')\n rollback.createdAgentId = id\n action = 'create'\n } else {\n if (remote.archived) {\n rollback.updatedAgent = remote\n runProvider(\n command, scopedArgs(plan, ['agent', 'restore', id, '--output', 'json']),\n 'agent.restore', 'write', root, env, timeoutMs, calls,\n )\n action = 'restore'\n }\n if (remote.name !== plan.expected.agentName || remote.runtimeId !== plan.expected.runtimeId ||\n remote.instructions !== source.instructions) {\n rollback.updatedAgent ||= remote\n runProvider(\n command, scopedArgs(plan, [\n 'agent', 'update', id, '--name', plan.expected.agentName,\n '--instructions', source.instructions, '--runtime-id', plan.expected.runtimeId,\n '--output', 'json',\n ]), 'agent.update', 'write', root, env, timeoutMs, calls,\n )\n action = action === 'restore' ? 'restore' : 'update'\n }\n }\n const agent = parseRemoteAgent(jsonObject(runProvider(\n command, scopedArgs(plan, ['agent', 'get', id, '--output', 'json']),\n 'agent.get.readback', 'read', root, env, timeoutMs, calls,\n ).stdout, 'agent readback'))\n if (agent.id !== id || agent.name !== plan.expected.agentName ||\n agent.runtimeId !== plan.expected.runtimeId || agent.instructions !== source.instructions || agent.archived) {\n throw new DeploymentFailure('agent.readback-mismatch')\n }\n return { agent, action }\n}\n\nfunction syncSkillFiles(\n root: string,\n plan: MulticaDeploymentPlan,\n skillId: string,\n local: LocalSkillBundle,\n remote: RemoteSkill,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n): void {\n const remoteByPath = new Map(remote.files.map((item) => [item.path, item]))\n const localPaths = new Set(local.files.map((item) => item.path))\n for (const file of remote.files) {\n if (localPaths.has(file.path)) continue\n runProvider(\n command, scopedArgs(plan, ['skill', 'files', 'delete', skillId, file.id]),\n `skill.file.delete:${local.name}:${file.path}`, 'write', root, env, timeoutMs, calls,\n )\n }\n for (const file of local.files) {\n if (remoteByPath.get(file.path)?.hash === file.hash) continue\n upsertSkillFile(root, plan, skillId, file.path, file.absolutePath, command, env, timeoutMs, calls)\n }\n}\n\nfunction upsertSkillFile(\n root: string,\n plan: MulticaDeploymentPlan,\n skillId: string,\n path: string,\n contentFile: string,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n): void {\n runProvider(\n command, scopedArgs(plan, [\n 'skill', 'files', 'upsert', skillId, '--path', path,\n '--content-file', contentFile, '--output', 'json',\n ]), `skill.file.upsert:${path}`, 'write', root, env, timeoutMs, calls,\n )\n}\n\nfunction createAndReadSmoke(\n root: string,\n plan: MulticaDeploymentPlan,\n source: DeploymentSource,\n agentId: string,\n runtimeProvider: string,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n smokeTimeoutMs: number,\n noWait: boolean,\n calls: MulticaDeploymentCall[],\n): MulticaDeploymentSmoke {\n const marker = `DTA-MULTICA-LOAD-${randomUUID()}`\n const requiredSkills = source.skills.map((item) => item.name).sort()\n const expectedResponse = JSON.stringify({\n schema: 'dta-multica-load-smoke@1', marker, loaded: requiredSkills,\n })\n const issue = jsonObject(runProvider(\n command, scopedArgs(plan, [\n 'issue', 'create', '--title', `[DTA load smoke] ${marker}`,\n '--description', [\n 'DTA_MULTICA_LOAD_SMOKE@1', `marker=${marker}`,\n `required_skills=${JSON.stringify(requiredSkills)}`,\n 'This is a deployment control-plane verification task.',\n 'Load every required skill above through the Host skill mechanism, in the listed order.',\n 'Do not call DWS, network, or business tools. Only the Host Issue control-plane calls needed to read this Issue and persist the exact result are exempt.',\n `Post exactly this JSON as an Issue comment (and nothing else): ${expectedResponse}`,\n ].join('\\n'),\n '--assignee-id', agentId, '--output', 'json',\n ]), 'smoke.issue.create', 'write', root, env, timeoutMs, calls,\n ).stdout, 'smoke issue')\n const issueId = resourceId(issue.id, 'smoke issue.id')\n const read = (): MulticaDeploymentSmoke => readSmoke(\n root, plan, marker, issueId, agentId, requiredSkills, runtimeProvider,\n command, env, timeoutMs, calls,\n )\n let smoke = read()\n // Multica persists the Issue before attempting the initial agent enqueue. If\n // that enqueue loses a transient readiness race, the API still returns a\n // valid assigned todo Issue but issue runs remains empty forever. Recover\n // exactly that observable state once through an explicit ID-bound mention on\n // the same Issue. A visible task — queued, running or terminal — is never\n // duplicated. The mention route is used instead of issue rerun because it is\n // the platform's normal first-run trigger and does not require a prior task.\n if (smoke.status === 'pending' && !smoke.taskId) {\n try {\n runProvider(\n command, scopedArgs(plan, [\n 'issue', 'comment', 'add', issueId,\n '--content', `[@DTA load smoke](mention://agent/${agentId}) Execute the deployment verification exactly as specified in this Issue description.`,\n '--output', 'json',\n ]), 'smoke.issue.recover', 'write', root, env, timeoutMs, calls,\n )\n smoke = read()\n } catch {\n // 与重试 mention 同一不变量:部署本体已回读验证,一次评论写入的抖动只让 smoke\n // 停在 pending(收敛为 verifying,由 --status 收口),不允许升级为回滚。\n }\n }\n if (noWait) return smoke\n const started = Date.now()\n const pollToTerminal = (): void => {\n while (smoke.status === 'pending' && Date.now() - started < smokeTimeoutMs) {\n Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, 2_000)\n smoke = read()\n }\n }\n pollToTerminal()\n // 冷沙箱竞态:推送的 Skill 要数分钟才对运行时可见,任务报 `Skill not found` 不是\n // 真失败。在预算内用 mention 触发新 task(新沙箱有机会看到新 Skill),有限次重试。\n // 默认 30s 预算下基本轮不到重试;--wait / --smoke-timeout 放宽后才生效。\n const retryDelayMs = Math.min(20_000, Math.max(500, Math.floor(smokeTimeoutMs / 12)))\n let retries = 0\n while (smoke.status === 'failed' && smoke.classification === 'skills-not-visible' &&\n retries < 3 && Date.now() - started < smokeTimeoutMs) {\n Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, retryDelayMs)\n try {\n runProvider(\n command, scopedArgs(plan, [\n 'issue', 'comment', 'add', issueId,\n '--content', `[@DTA load smoke](mention://agent/${agentId}) Skills were not yet visible in the sandbox; re-run the deployment verification exactly as specified in this Issue description.`,\n '--output', 'json',\n ]), 'smoke.issue.retry', 'write', root, env, timeoutMs, calls,\n )\n } catch {\n // 一次评论写入的抖动不允许升级为对已验证部署的回滚:失败已记入 calls,\n // 停止重试并保持当前 smoke 判定(skills-not-visible → verifying)。\n break\n }\n retries += 1\n // mention 触发的新 run 在平台上是异步创建的:只有当最新 run 的 taskId 变化后\n // 才重新判定;等不到新 run 就停手——绝不因为还读到旧终态 run 而重复 mention。\n const staleTaskId = smoke.taskId\n let sawNewRun = false\n while (Date.now() - started < smokeTimeoutMs) {\n Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, 2_000)\n smoke = read()\n if (smoke.taskId && smoke.taskId !== staleTaskId) { sawNewRun = true; break }\n }\n if (!sawNewRun) break\n pollToTerminal()\n }\n if (smoke.status === 'pending' && !smoke.taskDiagnostic) {\n const detail = smoke.taskId\n ? `task ${smoke.taskId} 在 ${smokeTimeoutMs}ms 内未进入终态(当前 ${smoke.taskStatus || 'unknown'})`\n : `Issue ${issueId} 在 ${smokeTimeoutMs}ms 内未创建关联 task`\n return { ...smoke, taskDiagnostic: detail }\n }\n return smoke\n}\n\n/**\n * Judge a smoke run from positive evidence instead of a tool-name whitelist. The old judge\n * required every tool_use to match hardcoded `skill`/`write`/`bash` shapes, so a healthy\n * cloud runtime emitting `read_file`/`terminal` could never reach ready — and one extra\n * harmless tool failed the whole trace. Now: each required skill needs load evidence\n * (vocabulary tool_use or host-generated `**Skill loaded**` tool_result), the response is\n * taken from the Issue comments themselves first (platform readback, vocabulary-independent),\n * and only the explicit dws denylist is fatal. Unknown tool names are recorded, not judged.\n */\nfunction readSmoke(\n root: string,\n plan: MulticaDeploymentPlan,\n marker: string,\n issueId: string,\n agentId: string,\n requiredSkills: string[],\n runtimeProvider: string,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n): MulticaDeploymentSmoke {\n const provider = runtimeProvider || ''\n const registered = vocabulariesForRuntimeProvider(provider)\n const active: readonly RuntimeTraceVocabulary[] = registered.length\n ? registered : allRuntimeVocabularies()\n const vocabularyIds = active.map((item) => item.id)\n const base = {\n ...emptySmoke('pending', requiredSkills), marker, markerHash: sha256(marker), issueId,\n runtimeProvider: provider, vocabularyIds,\n }\n const runs = jsonArray(runProvider(\n command, scopedArgs(plan, ['issue', 'runs', issueId, '--full-id', '--output', 'json']),\n 'smoke.issue.runs', 'read', root, env, timeoutMs, calls,\n ).stdout, 'smoke runs')\n const candidates = runs.filter((item) => !optionalString(item.agent_id) ||\n optionalString(item.agent_id) === agentId)\n const run = candidates.sort((a, b) => optionalString(b.created_at).localeCompare(optionalString(a.created_at)))[0]\n if (!run) return base\n const taskId = resourceId(run.id, 'smoke task.id')\n const taskStatus = optionalString(run.status)\n if (!['completed', 'failed', 'cancelled'].includes(taskStatus)) return {\n ...base, taskId, taskStatus,\n }\n const messages = jsonArray(runProvider(\n command, scopedArgs(plan, [\n 'issue', 'run-messages', taskId, '--issue', issueId, '--output', 'json',\n ]), 'smoke.issue.messages', 'read', root, env, timeoutMs, calls,\n ).stdout, 'smoke messages')\n const toolUses = messages.filter((item) => optionalString(item.type) === 'tool_use')\n const toolNames = [...new Set(toolUses.map((item) => optionalString(item.tool))\n .filter(Boolean))].sort()\n\n // Skill-load evidence: a native skill tool_use (the host mechanism itself), or the\n // host-generated `**Skill loaded**` banner in a skill-capable tool's tool_result. Two\n // things are deliberately NOT evidence: model text (a reply can claim anything), and\n // load ATTEMPTS — a failed cold-sandbox load emits the same \"Loading skill\" tool_use\n // before its error result, and a terminal/bash result echoes whatever the model printed.\n const evidence = new Set<string>()\n const attempted = new Set<string>()\n const evidenceTools = new Set<string>()\n const bannerTools = new Set(active.flatMap((item) => [...item.skillResultTools]))\n for (const item of messages) {\n const type = optionalString(item.type)\n const tool = optionalString(item.tool)\n if (type === 'tool_use') {\n const message: TraceToolMessage = { tool, input: smokeToolInput(item) }\n for (const vocabulary of active) {\n const name = vocabulary.skillLoadFromToolUse(message)\n if (name) { evidence.add(name); evidenceTools.add(tool) }\n const attempt = vocabulary.skillAttemptFromToolUse(message)\n if (attempt) { attempted.add(attempt); evidenceTools.add(tool) }\n }\n } else if (type === 'tool_result' && bannerTools.has(tool)) {\n for (const name of skillsLoadedInContent(optionalString(item.content))) {\n evidence.add(name)\n evidenceTools.add(tool)\n }\n }\n }\n const loadedSkills = requiredSkills.filter((name) => evidence.has(name)).sort()\n const skillEvidencePassed = loadedSkills.length === requiredSkills.length\n\n // dws is the DingTalk side-effect boundary: as a named tool or shelled out in a command.\n const commandTexts = toolUses.flatMap((item) => {\n const message: TraceToolMessage = {\n tool: optionalString(item.tool), input: smokeToolInput(item),\n }\n return active.map((vocabulary) => vocabulary.commandText(message)).filter(Boolean)\n })\n const forbiddenTools = toolNames.filter((name) => forbiddenSmokeTool(name))\n const forbiddenCommands = commandTexts.some((text) => commandInvokesDws(text))\n const knownTools = new Set(active.flatMap((item) => [...item.tools]))\n const unrecognizedTools = toolNames.filter((name) =>\n !knownTools.has(name) && !evidenceTools.has(name) && !forbiddenSmokeTool(name))\n\n // Response evidence, most stable source first: the Issue's own comments (platform\n // readback — no tool vocabulary involved), then trace texts, writes and shell heredocs.\n const matchesResponse = (value: string): boolean => smokeResponseMatches(\n value, marker, requiredSkills,\n )\n let commentContents: string[] = []\n try {\n commentContents = jsonArray(runProvider(\n command, scopedArgs(plan, [\n 'issue', 'comment', 'list', issueId, '--recent', '20', '--output', 'json',\n ]), 'smoke.issue.comments', 'read', root, env, timeoutMs, calls,\n ).stdout, 'smoke comments').map((item) => optionalString(item.content)).filter(Boolean)\n } catch {\n commentContents = [] // 旧版 provider CLI 可能没有 comment list;回退 trace 内取证\n }\n const texts = messages.filter((item) => optionalString(item.type) === 'text')\n .map((item) => optionalString(item.content)).filter(Boolean)\n const finalText = texts.at(-1) || ''\n const responseWrites: string[] = []\n const responseShells: string[] = []\n for (const item of toolUses) {\n const message: TraceToolMessage = {\n tool: optionalString(item.tool), input: smokeToolInput(item),\n }\n for (const vocabulary of active) {\n const write = vocabulary.writeEvidence(message)\n if (write && safeSmokeResponsePath(write.path)) responseWrites.push(write.content)\n const text = vocabulary.commandText(message)\n if (text && safeCombinedSmokeResponse(text, issueId, marker, requiredSkills)) {\n responseShells.push(JSON.stringify({\n schema: 'dta-multica-load-smoke@1', marker, loaded: requiredSkills,\n }))\n }\n }\n }\n const responseEvidence = [...commentContents, ...texts, ...responseWrites, ...responseShells]\n .find(matchesResponse) || ''\n const responsePassed = Boolean(responseEvidence)\n const toolTracePassed = skillEvidencePassed && !forbiddenTools.length && !forbiddenCommands\n\n const failures: string[] = []\n const failureDetails: MulticaFailureDetail[] = []\n if (taskStatus !== 'completed') failures.push(`smoke.task.${taskStatus || 'unknown'}`)\n if (!skillEvidencePassed) {\n failures.push('smoke.skill-load-evidence')\n const attemptedMissing = requiredSkills.filter((name) =>\n attempted.has(name) && !evidence.has(name))\n failureDetails.push({\n code: 'smoke.skill-load-evidence',\n expected: requiredSkills,\n actual: loadedSkills,\n hint: attemptedMissing.length\n ? `有装载尝试但无成功证据(tool_result 缺 **Skill loaded**): ${attemptedMissing.join(', ')};` +\n '尝试不算装载成功'\n : unrecognizedTools.length\n ? `轨迹里有词汇表不认识的工具名: ${unrecognizedTools.join(', ')};` +\n '若属新 runtime 词汇,需要在 multica-runtime-vocabulary 注册'\n : '轨迹中没有这些 Skill 的装载证据(tool_result 的 **Skill loaded** 或 Skill 工具调用)',\n })\n }\n for (const tool of forbiddenTools) failures.push(`smoke.forbidden-tool:${tool}`)\n if (forbiddenCommands) failures.push('smoke.forbidden-command:dws')\n if (!responsePassed) {\n failures.push('smoke.response')\n failureDetails.push({\n code: 'smoke.response',\n actual: `comments=${commentContents.length} texts=${texts.length} writes=${responseWrites.length}`,\n hint: '未在 Issue comment、回复文本或落盘文件中找到精确的 dta-multica-load-smoke@1 JSON',\n })\n }\n\n // 分类冷沙箱竞态:任务终态且缺装载证据,轨迹里出现 skill not found 类措辞 → 可重试,\n // 与「配置/模板真错了」区分开(B7 的两个误导方向都来自不区分这两态)。\n let classification: MulticaDeploymentSmoke['classification'] = ''\n if (!skillEvidencePassed) {\n const searchable = messages.map((item) => optionalString(item.content)).join('\\n')\n if (/skill[^\\n]{0,80}?not\\s+found|not\\s+found[^\\n]{0,60}?skill|skill\\s+view\\s+failed/i.test(searchable)) {\n classification = 'skills-not-visible'\n failures.unshift('smoke.skills-not-visible')\n failureDetails.unshift({\n code: 'smoke.skills-not-visible',\n hint: '推送的 Skill 尚未物化进沙箱(冷启动竞态,通常数分钟内自愈);' +\n '用 deploy --status --execute --yes 重试,或部署时用 --wait 放宽预算',\n })\n }\n }\n return {\n status: failures.length ? 'failed' : 'passed', marker, markerHash: sha256(marker),\n issueId, taskId, taskStatus, taskDiagnostic: remoteTaskDiagnostic(run), requiredSkills, loadedSkills,\n toolTracePassed, responsePassed, responseHash: sha256(responseEvidence || finalText), failures,\n runtimeProvider: provider, vocabularyIds, toolNames, unrecognizedTools, classification,\n failureDetails,\n }\n}\n\nfunction smokeToolInput(item: Record<string, unknown>): Record<string, unknown> {\n return item.input && typeof item.input === 'object' && !Array.isArray(item.input)\n ? item.input as Record<string, unknown> : {}\n}\n\nfunction smokeResponseMatches(value: string, marker: string, requiredSkills: string[]): boolean {\n try {\n const parsed = JSON.parse(value)\n return parsed?.schema === 'dta-multica-load-smoke@1' && parsed?.marker === marker &&\n stableStringify(Array.isArray(parsed?.loaded) ? [...parsed.loaded].sort() : []) ===\n stableStringify(requiredSkills)\n } catch { return false }\n}\n\nfunction safeCombinedSmokeResponse(\n command: string,\n issueId: string,\n marker: string,\n requiredSkills: string[],\n): boolean {\n const response = JSON.stringify({ schema: 'dta-multica-load-smoke@1', marker, loaded: requiredSkills })\n return command === [\n \"cat > ./reply.md << 'REPLY_EOF'\",\n response,\n 'REPLY_EOF',\n `multica issue comment add ${issueId} --content-file ./reply.md && rm ./reply.md`,\n ].join('\\n')\n}\n\nfunction safeSmokeResponsePath(value: string): boolean {\n const names = new Set(['reply.md', 'result.md', 'result.json'])\n if (value.startsWith('./')) return names.has(value.slice(2))\n // 裸文件名与 `./` 前缀等价:Agent 在 workdir 里写绝对路径、随后用裸名引用同一个文件是\n // 平台的常见写法。只放行精确 basename —— `foo/result.md` 与 `../result.md` 仍然落到\n // 下面的绝对路径分支并被拒绝,白名单没有变宽。\n if (!value.startsWith('/')) return names.has(value)\n if (!names.has(value.split('/').at(-1) || '')) return false\n return value.split('/').every((part) => !part ||\n (part !== '.' && part !== '..' && /^[A-Za-z0-9._-]+$/.test(part)))\n}\n\nfunction rollbackConfirmed(\n root: string,\n plan: MulticaDeploymentPlan,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n rollback: RollbackContext,\n temp: string,\n): MulticaDeploymentReceipt['rollback'] {\n const report = emptyRollback(true)\n const attempt = (id: string, argv: string[]): void => {\n try {\n runProvider(command, scopedArgs(plan, argv), id, 'rollback', root, env, timeoutMs, calls)\n report.actions.push(id)\n } catch { report.failures.push(id) }\n }\n const assignmentAgentId = rollback.createdAgentId || rollback.updatedAgent?.id || ''\n if (rollback.assignmentChanged && assignmentAgentId) {\n attempt('rollback.agent.skills', [\n 'agent', 'skills', 'set', assignmentAgentId,\n '--skill-ids', rollback.previousAssignedIds.join(','), '--output', 'json',\n ])\n }\n if (rollback.createdAgentId) {\n attempt('rollback.agent.archive', ['agent', 'archive', rollback.createdAgentId, '--output', 'json'])\n } else if (rollback.updatedAgent) {\n const previous = rollback.updatedAgent\n const argv = [\n 'agent', 'update', previous.id, '--name', previous.name,\n '--instructions', previous.instructions, '--runtime-id', previous.runtimeId,\n ]\n if (previous.status) argv.push('--status', previous.status)\n argv.push('--output', 'json')\n attempt('rollback.agent.update', argv)\n if (previous.archived) {\n attempt('rollback.agent.archive', ['agent', 'archive', previous.id, '--output', 'json'])\n }\n }\n for (const previous of [...rollback.updatedSkills].reverse()) {\n const main = writeTemporaryContent(temp, `${previous.id}-SKILL.md`, previous.content)\n attempt(`rollback.skill.update:${previous.name}`, [\n 'skill', 'update', previous.id, '--content-file', main, '--output', 'json',\n ])\n try {\n const current = parseRemoteSkill(jsonObject(runProvider(\n command, scopedArgs(plan, ['skill', 'get', previous.id, '--output', 'json']),\n `rollback.skill.get:${previous.name}`, 'read', root, env, timeoutMs, calls,\n ).stdout, `rollback skill ${previous.name}`))\n const previousPaths = new Set(previous.files.map((file) => file.path))\n for (const extra of current.files.filter((file) => !previousPaths.has(file.path))) {\n attempt(`rollback.skill.file.delete:${previous.name}:${extra.path}`, [\n 'skill', 'files', 'delete', previous.id, extra.id,\n ])\n }\n } catch { report.failures.push(`rollback.skill.verify:${previous.name}`) }\n for (const file of previous.files) {\n const path = writeTemporaryContent(temp, `${previous.id}-${sha256(file.path).slice(0, 8)}`, file.content)\n attempt(`rollback.skill.file:${previous.name}:${file.path}`, [\n 'skill', 'files', 'upsert', previous.id, '--path', file.path,\n '--content-file', path, '--output', 'json',\n ])\n }\n }\n for (const id of [...rollback.createdSkillIds].reverse()) {\n attempt(`rollback.skill.delete:${id}`, ['skill', 'delete', id, '--yes'])\n }\n verifyRollback(\n root, plan, command, env, timeoutMs, calls, rollback, report,\n )\n report.passed = report.failures.length === 0\n return report\n}\n\nfunction verifyRollback(\n root: string,\n plan: MulticaDeploymentPlan,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n rollback: RollbackContext,\n report: MulticaDeploymentReceipt['rollback'],\n): void {\n const verify = (id: string, action: () => boolean): void => {\n try { if (!action()) report.failures.push(id) }\n catch { report.failures.push(id) }\n }\n if (rollback.createdSkillIds.length || rollback.updatedSkills.length) {\n verify('rollback.verify.skills', () => {\n const catalog = jsonArray(runProvider(\n command, scopedArgs(plan, ['skill', 'list', '--output', 'json']),\n 'rollback.verify.skill-list', 'read', root, env, timeoutMs, calls,\n ).stdout, 'rollback skill list')\n const ids = new Set(catalog.map((item) => resourceId(item.id, 'rollback skill.id')))\n return rollback.createdSkillIds.every((id) => !ids.has(id))\n })\n for (const previous of rollback.updatedSkills) {\n verify(`rollback.verify.skill:${previous.name}`, () => {\n const restored = parseRemoteSkill(jsonObject(runProvider(\n command, scopedArgs(plan, ['skill', 'get', previous.id, '--output', 'json']),\n `rollback.verify.skill-get:${previous.name}`, 'read', root, env, timeoutMs, calls,\n ).stdout, `rollback verify skill ${previous.name}`))\n return restored.id === previous.id && restored.name === previous.name &&\n restored.hash === previous.hash\n })\n }\n }\n const agentId = rollback.createdAgentId || rollback.updatedAgent?.id || ''\n if (!agentId) return\n verify('rollback.verify.agent', () => {\n const restored = parseRemoteAgent(jsonObject(runProvider(\n command, scopedArgs(plan, ['agent', 'get', agentId, '--output', 'json']),\n 'rollback.verify.agent-get', 'read', root, env, timeoutMs, calls,\n ).stdout, 'rollback verify agent'))\n if (rollback.createdAgentId) return restored.archived\n const previous = rollback.updatedAgent\n return Boolean(previous && restored.id === previous.id && restored.name === previous.name &&\n restored.runtimeId === previous.runtimeId && restored.instructions === previous.instructions &&\n restored.archived === previous.archived)\n })\n if (rollback.assignmentChanged) {\n verify('rollback.verify.assignment', () => {\n const assigned = jsonArray(runProvider(\n command, scopedArgs(plan, [\n 'agent', 'skills', 'list', agentId, '--output', 'json',\n ]), 'rollback.verify.agent-skills', 'read', root, env, timeoutMs, calls,\n ).stdout, 'rollback verify assignments')\n const ids = assigned.map((item) => resourceId(item.id, 'rollback assignment.id')).sort()\n return stableStringify(ids) === stableStringify([...rollback.previousAssignedIds].sort())\n })\n }\n}\n\nfunction failureReceipt(\n root: string,\n workspace: DevelopmentWorkspaceView,\n source: DeploymentSource,\n plan: MulticaDeploymentPlan,\n preflight: MulticaWorkspaceInspection,\n operation: MulticaDeploymentOperation,\n calls: MulticaDeploymentCall[],\n rollback: MulticaDeploymentReceipt['rollback'],\n status: 'failed' | 'reconciling',\n failure: string,\n failureDetail?: MulticaFailureDetail,\n): MulticaDeploymentReceipt {\n const receiptId = `multica_receipt_${digest(stableStringify({\n operationId: operation.operationId, status, failure,\n })).slice(0, 24)}`\n return {\n $schema: MULTICA_DEPLOYMENT_SCHEMA,\n receiptId,\n operationId: operation.operationId,\n planId: plan.planId,\n action: plan.action,\n workspace: workspace.name,\n provider: 'multica',\n profile: plan.profile,\n status,\n passed: false,\n providerReady: false,\n idempotent: false,\n inspectionId: preflight.inspectionId,\n inspectionObservedHash: preflight.observedHash,\n inspectionEvidencePath: preflight.evidencePath,\n desiredHash: workspace.desiredHash,\n deploymentHash: source.deploymentHash,\n observedHash: '',\n agent: {\n id: operation.agentId,\n runtimeId: plan.expected.runtimeId,\n instructionsHash: source.instructionsHash,\n archived: false,\n action: 'unknown',\n },\n skills: source.skills.map((item) => ({\n id: '', name: item.name, sourceHash: item.hash, remoteHash: '', action: 'unknown',\n })),\n assignmentHash: '',\n calls: [...calls],\n smoke: emptySmoke('not-run', source.skills.map((item) => item.name)),\n rollback,\n failures: [failure, ...rollback.failures],\n failureDetails: failureDetail ? [failureDetail] : [],\n evidencePath: receiptRelativePath(workspace.name, receiptId),\n remoteRead: true,\n remoteWrite: calls.some((call) => call.kind === 'write' || call.kind === 'rollback'),\n triggerWrite: false,\n sideEffect: calls.some((call) => call.kind === 'write' || call.kind === 'rollback')\n ? 'multica-read-write' : 'multica-read',\n dingtalkSideEffect: false,\n }\n}\n\nexport function statusMulticaDeployment(\n start: string,\n name: string,\n options: MulticaDeploymentOptions = {},\n): MulticaDeploymentStatusReport {\n const info = inspectAgentProject(start, options.cliVersion || '')\n requireMulticaWorkspace(info.root, name, options.cliVersion || '')\n const loaded = loadOperationAndReceipt(info.root, name, options.operationId)\n if (!loaded) return {\n $schema: 'dingtalk-agent/multica-deployment-status@1',\n workspace: name, provider: 'multica', available: false, operationId: '', receiptId: '',\n status: 'missing', passed: false, providerReady: false,\n operationIntegrity: false, receiptIntegrity: false, reconciled: false,\n receiptFrozen: false, smokeStale: false, nextAction: '',\n failures: ['deployment.missing'], receipt: null,\n remoteRead: false, remoteWrite: false, triggerWrite: false,\n sideEffect: false, dingtalkSideEffect: false,\n }\n let { operation, receipt } = loaded\n let reconciled = false\n let remoteRead = false\n let remoteWrite = false\n if (options.execute) {\n if (!options.yes) throw new Error('deploy --status 远端 reconcile 必须同时传 --execute --yes')\n const command = options.command || options.env?.DTA_MULTICA_BIN || process.env.DTA_MULTICA_BIN || 'multica'\n const env = options.env || process.env\n const timeoutMs = positiveTimeout(options.timeoutMs, 30_000, 300_000)\n if (receipt.status === 'verifying' && receipt.smoke.issueId) {\n remoteRead = true\n let smokeReadback = readSmokeFromReceipt(\n info.root, receipt, command, env, timeoutMs,\n )\n let smoke = smokeReadback.smoke\n let calls = smokeReadback.calls\n // 冷沙箱竞态的收口入口:终态失败但分类为 skills-not-visible 时,补一次 mention\n // 触发新 task(唯一的写;如实上报 remoteWrite/sideEffect)。新 run 是异步创建的:\n // 以 taskId 变化为「新 run 出现」的判据再判定,等不到就按旧判定收场(仍 verifying),\n // 不再重复 mention。\n if (smoke.status === 'failed' && smoke.classification === 'skills-not-visible' &&\n receipt.agent.id) {\n const planLike = {\n profile: receipt.profile, expected: { workspaceId: operation.workspaceId },\n }\n const staleTaskId = smoke.taskId\n runProvider(\n command, scopedArgs(planLike, [\n 'issue', 'comment', 'add', receipt.smoke.issueId,\n '--content', `[@DTA load smoke](mention://agent/${receipt.agent.id}) Skills were not yet visible in the sandbox; re-run the deployment verification exactly as specified in this Issue description.`,\n '--output', 'json',\n ]), 'smoke.issue.retry', 'write', info.root, env, timeoutMs, calls,\n )\n remoteWrite = true\n const deadline = Date.now() + timeoutMs\n do {\n Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, 2_000)\n smokeReadback = readSmokeFromReceipt(\n info.root, { ...receipt, calls }, command, env, timeoutMs,\n )\n smoke = smokeReadback.smoke\n calls = smokeReadback.calls\n } while ((smoke.status === 'pending' ||\n (Boolean(staleTaskId) && smoke.taskId === staleTaskId)) && Date.now() < deadline)\n }\n const nextStatus: DeploymentStatus = smoke.status === 'passed' ? 'ready'\n : smoke.status === 'pending' ? 'verifying'\n : smoke.classification === 'skills-not-visible' ? 'verifying' : 'failed'\n receipt = { ...receipt, calls, smoke, status: nextStatus,\n passed: smoke.status === 'passed', providerReady: smoke.status === 'passed',\n failures: [...smoke.failures],\n failureDetails: [...smoke.failureDetails] }\n reconciled = true\n persistReceiptAndState(info.root, showDevelopmentWorkspace(info.root, name), operation, receipt)\n } else if (receipt.status === 'reconciling') {\n remoteRead = true\n const source = loadDeploymentSource(info.root)\n const calls = [...receipt.calls]\n const reconciledTarget = reconcileRemoteTarget(\n info.root, name, operation, source, command, env, timeoutMs, calls,\n )\n const inspection = reconciledTarget.inspection\n const snapshot = reconciledTarget.snapshot\n const matched = Boolean(snapshot && remoteMatchesDesired(\n snapshot, source, operation.runtimeId,\n ))\n const safelyBound = Boolean(snapshot?.agent && inspection.passed &&\n snapshot.agent.id === operation.agentId &&\n snapshot.agent.name === info.project.displayName &&\n snapshot.agent.runtimeId === operation.runtimeId &&\n snapshot.agent.instructions === source.instructions && !snapshot.agent.archived)\n receipt = { ...receipt,\n calls,\n inspectionId: inspection.inspectionId,\n inspectionObservedHash: inspection.observedHash,\n inspectionEvidencePath: inspection.evidencePath,\n agent: { ...receipt.agent, id: operation.agentId },\n status: matched || safelyBound ? 'verifying' : 'failed',\n failures: matched ? ['smoke.required-after-recovery']\n : safelyBound ? ['apply.required-after-recovery']\n : reconciledTarget.failures.length ? reconciledTarget.failures\n : inspection.passed ? ['reconcile.remote-mismatch'] : [...inspection.failures],\n }\n reconciled = true\n persistReceiptAndState(info.root, showDevelopmentWorkspace(info.root, name), operation, receipt)\n }\n operation = loadOperationAndReceipt(info.root, name, operation.operationId)?.operation || operation\n }\n const receiptFrozen = !options.execute\n return {\n $schema: 'dingtalk-agent/multica-deployment-status@1',\n workspace: name,\n provider: 'multica',\n available: true,\n operationId: operation.operationId,\n receiptId: receipt.receiptId,\n status: receipt.status,\n passed: receipt.passed,\n providerReady: receipt.providerReady,\n operationIntegrity: true,\n receiptIntegrity: true,\n reconciled,\n receiptFrozen,\n smokeStale: receiptFrozen && receipt.status === 'verifying',\n nextAction: ['verifying', 'reconciling'].includes(receipt.status)\n ? `dta deploy --workspace ${name} --status --operation-id ${operation.operationId} --execute --yes`\n : '',\n failures: [...receipt.failures],\n receipt,\n remoteRead,\n remoteWrite,\n triggerWrite: false,\n sideEffect: remoteWrite ? 'multica-read-write' : remoteRead ? 'multica-read' : false,\n dingtalkSideEffect: false,\n }\n}\n\nexport function listMulticaDeployments(\n start: string, name: string, cliVersion = '',\n): MulticaDeploymentList {\n const info = inspectAgentProject(start, cliVersion)\n requireMulticaWorkspace(info.root, name, cliVersion)\n const directory = safeProjectPath(info.root, receiptsRoot(name), false)\n const deployments: MulticaDeploymentList['deployments'] = []\n if (existsSync(directory)) {\n for (const entry of readdirSync(directory, { withFileTypes: true })\n .filter((item) => item.isFile() && item.name.endsWith('.json'))\n .sort((a, b) => b.name.localeCompare(a.name))) {\n const path = join(directory, entry.name)\n if (lstatSync(path).isSymbolicLink()) throw new Error('Multica Receipt 不能是符号链接')\n const candidate = parseReceipt(readJson(path, 'Multica Receipt'))\n const loaded = loadOperationAndReceipt(info.root, name, candidate.operationId)\n if (!loaded || loaded.receipt.receiptId !== candidate.receiptId ||\n safeProjectPath(info.root, loaded.receipt.evidencePath, true) !== path) {\n throw new Error('Multica deployment 历史 Receipt 绑定不一致')\n }\n const receipt = loaded.receipt\n deployments.push({\n receiptId: receipt.receiptId,\n operationId: receipt.operationId,\n action: receipt.action,\n status: receipt.status,\n passed: receipt.passed,\n providerReady: receipt.providerReady,\n planId: receipt.planId,\n deploymentHash: receipt.deploymentHash,\n })\n }\n }\n return {\n $schema: 'dingtalk-agent/multica-deployment-list@1',\n workspace: name, provider: 'multica', deployments,\n remoteRead: false, remoteWrite: false, triggerWrite: false,\n sideEffect: false, dingtalkSideEffect: false,\n }\n}\n\nfunction reconcileRemoteTarget(\n root: string,\n name: string,\n operation: MulticaDeploymentOperation,\n source: DeploymentSource,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n): { inspection: MulticaWorkspaceInspection; snapshot: RemoteSnapshot | null; failures: string[] } {\n if (operation.agentId) {\n const inspection = inspectMulticaWorkspace(root, name, {\n execute: true, yes: true, persist: true, command, env, timeoutMs,\n agentIdOverride: operation.agentId,\n }) as MulticaWorkspaceInspection\n appendInspectionCalls(inspection, 'reconcile.scope', calls)\n const snapshot = inspection.passed ? readRemoteSnapshot(\n root, source, inspection, command, env, timeoutMs, calls,\n ) : null\n return { inspection, snapshot, failures: [] }\n }\n\n const discovery = inspectMulticaWorkspace(root, name, {\n execute: true, yes: true, persist: false, command, env, timeoutMs,\n }) as MulticaWorkspaceInspection\n appendInspectionCalls(discovery, 'reconcile.discovery', calls)\n const candidates = discovery.resources.agentCandidates\n if (!candidates.length) {\n return { inspection: discovery, snapshot: null, failures: ['reconcile.agent-not-found'] }\n }\n if (candidates.length > 10) {\n return { inspection: discovery, snapshot: null, failures: ['reconcile.agent-candidate-budget'] }\n }\n const projectName = inspectAgentProject(root).project.displayName\n const matches: Array<{ id: string }> = []\n for (const [index, candidate] of candidates.entries()) {\n const inspection = inspectMulticaWorkspace(root, name, {\n execute: true, yes: true, persist: false, command, env, timeoutMs,\n agentIdOverride: candidate.id,\n }) as MulticaWorkspaceInspection\n appendInspectionCalls(inspection, `reconcile.candidate.${index + 1}`, calls)\n if (!inspection.passed) continue\n const snapshot = readRemoteSnapshot(\n root, source, inspection, command, env, timeoutMs, calls,\n )\n if (snapshot.agent && snapshot.agent.id === candidate.id &&\n snapshot.agent.name === projectName && snapshot.agent.runtimeId === operation.runtimeId &&\n snapshot.agent.instructions === source.instructions && !snapshot.agent.archived) {\n matches.push({ id: candidate.id })\n }\n }\n if (matches.length !== 1) {\n return {\n inspection: discovery,\n snapshot: null,\n failures: [matches.length ? 'reconcile.agent-ambiguous' : 'reconcile.agent-fingerprint-mismatch'],\n }\n }\n operation.agentId = matches[0].id\n const inspection = inspectMulticaWorkspace(root, name, {\n execute: true, yes: true, persist: true, command, env, timeoutMs,\n agentIdOverride: operation.agentId,\n }) as MulticaWorkspaceInspection\n appendInspectionCalls(inspection, 'reconcile.bound', calls)\n const snapshot = inspection.passed ? readRemoteSnapshot(\n root, source, inspection, command, env, timeoutMs, calls,\n ) : null\n return { inspection, snapshot, failures: inspection.passed ? [] : [...inspection.failures] }\n}\n\nfunction appendInspectionCalls(\n inspection: MulticaWorkspaceInspection,\n prefix: string,\n calls: MulticaDeploymentCall[],\n): void {\n calls.push(...inspection.calls.map((call) => ({\n id: `${prefix}.${call.id}`,\n kind: 'read' as const,\n argv: [...call.argv],\n exitCode: call.exitCode,\n stdoutHash: call.stdoutHash,\n stderrHash: call.stderrHash,\n passed: call.passed,\n ambiguous: false,\n })))\n}\n\nfunction readSmokeFromReceipt(\n root: string,\n receipt: MulticaDeploymentReceipt,\n command: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n): { smoke: MulticaDeploymentSmoke; calls: MulticaDeploymentCall[] } {\n const plan = {\n profile: receipt.profile,\n expected: { workspaceId: '', runtimeId: receipt.agent.runtimeId },\n } as MulticaDeploymentPlan\n const operation = loadOperationAndReceipt(root, receipt.workspace, receipt.operationId)?.operation\n if (!operation) throw new Error('Multica deployment operation 缺失')\n plan.expected.workspaceId = operation.workspaceId\n const calls = [...receipt.calls]\n const markerValue = receipt.smoke.marker\n if (!markerValue || sha256(markerValue) !== receipt.smoke.markerHash) {\n return { calls, smoke: {\n ...receipt.smoke,\n status: 'failed',\n failures: ['smoke.marker-not-recoverable'],\n } }\n }\n const smoke = readSmoke(\n root, plan, markerValue, receipt.smoke.issueId, receipt.agent.id,\n receipt.smoke.requiredSkills, receipt.smoke.runtimeProvider || '',\n command, env, timeoutMs, calls,\n )\n return { smoke, calls }\n}\n\nfunction persistReceiptAndState(\n root: string,\n workspace: DevelopmentWorkspaceView,\n operation: MulticaDeploymentOperation,\n receipt: MulticaDeploymentReceipt,\n): void {\n assertReportRedacted(receipt)\n const receiptPath = safeProjectPath(root, receipt.evidencePath, false)\n atomicJson(receiptPath, receipt)\n const receiptHash = sha256(readFileSync(receiptPath))\n operation.status = receipt.status\n operation.agentId = receipt.agent.id || operation.agentId\n operation.receiptId = receipt.receiptId\n operation.receiptPath = receipt.evidencePath\n operation.calls = receipt.calls\n operation.failures = receipt.failures\n operation.updatedAt = new Date().toISOString()\n persistOperation(root, operation)\n const operationPath = operationRelativePath(workspace.name, operation.operationId)\n const operationHash = sha256(readFileSync(safeProjectPath(root, operationPath, true)))\n const binding = {\n $schema: 'dingtalk-agent/multica-deployment-pointer@1',\n operationId: operation.operationId,\n operationPath,\n operationHash,\n receiptId: receipt.receiptId,\n receiptPath: receipt.evidencePath,\n receiptHash,\n }\n atomicJson(safeProjectPath(root, operationBindingPath(\n workspace.name, operation.operationId,\n ), false), binding)\n atomicJson(safeProjectPath(root, latestDeploymentPointer(workspace.name), false), binding)\n const stateStatus = receipt.status === 'ready' ? 'ready'\n : receipt.status === 'retired' ? 'retired'\n : receipt.status === 'failed' ? 'failed' : 'verifying'\n const state: DevelopmentWorkspaceState = {\n $schema: 'dingtalk-agent/workspace-state@1',\n workspace: workspace.name,\n provider: 'multica',\n status: stateStatus,\n binding: {\n ...(workspace.state?.binding || {}),\n profile: receipt.profile,\n remoteWorkspaceId: operation.workspaceId,\n runtimeId: operation.runtimeId,\n agentId: receipt.agent.id || operation.agentId,\n deploymentHash: receipt.deploymentHash,\n inspectionId: receipt.inspectionId,\n inspectionObservedHash: receipt.inspectionObservedHash,\n inspectionEvidencePath: receipt.inspectionEvidencePath,\n receiptPath: receipt.evidencePath,\n operationId: operation.operationId,\n sourceHash: workspace.sourceHash,\n },\n desiredHash: workspace.desiredHash,\n observedHash: receipt.inspectionObservedHash || receipt.observedHash,\n lastPlanId: receipt.planId,\n lastReceiptId: receipt.receiptId,\n lastEvalId: receipt.smoke.taskId,\n }\n atomicJson(safeProjectPath(root, join(\n WORKSPACE_STATE_ROOT, `${workspace.name}.json`,\n ), false), state)\n}\n\nfunction createOperation(\n operationId: string, plan: MulticaDeploymentPlan,\n): MulticaDeploymentOperation {\n return {\n $schema: 'dingtalk-agent/multica-deployment-operation@1',\n operationId,\n planId: plan.planId,\n workspace: plan.workspace,\n action: plan.action,\n status: 'applying',\n profile: plan.profile,\n workspaceId: plan.expected.workspaceId,\n runtimeId: plan.expected.runtimeId,\n agentId: plan.expected.agentId,\n deploymentHash: plan.deploymentHash,\n ambiguousAction: '',\n receiptId: '',\n receiptPath: '',\n calls: [],\n failures: [],\n updatedAt: new Date().toISOString(),\n }\n}\n\nfunction persistOperation(root: string, operation: MulticaDeploymentOperation): void {\n assertReportRedacted(operation)\n atomicJson(safeProjectPath(root, operationRelativePath(\n operation.workspace, operation.operationId,\n ), false), operation)\n}\n\nfunction loadOperationAndReceipt(\n root: string,\n name: string,\n operationId = '',\n): { operation: MulticaDeploymentOperation; receipt: MulticaDeploymentReceipt } | null {\n let operationPath = ''\n let expectedOperationHash = ''\n let receiptPath = ''\n let expectedReceiptHash = ''\n let expectedOperationId = ''\n let expectedReceiptId = ''\n const requestedOperationId = operationId ? resourceId(operationId, 'operation-id') : ''\n const pointerPath = safeProjectPath(root, requestedOperationId\n ? operationBindingPath(name, requestedOperationId)\n : latestDeploymentPointer(name), false)\n if (!existsSync(pointerPath)) {\n if (requestedOperationId) throw new Error('Multica deployment operation binding 不存在')\n return null\n }\n const pointer = readJson(pointerPath, 'Multica deployment pointer') as Record<string, unknown>\n if (pointer.$schema !== 'dingtalk-agent/multica-deployment-pointer@1') {\n throw new Error('Multica deployment pointer schema 非法')\n }\n expectedOperationId = resourceId(pointer.operationId, 'pointer.operationId')\n expectedReceiptId = resourceId(pointer.receiptId, 'pointer.receiptId')\n if (requestedOperationId && expectedOperationId !== requestedOperationId) {\n throw new Error('Multica deployment operation binding ID 不一致')\n }\n operationPath = stringField(pointer.operationPath, 'pointer.operationPath')\n expectedOperationHash = stringField(pointer.operationHash, 'pointer.operationHash')\n receiptPath = stringField(pointer.receiptPath, 'pointer.receiptPath')\n expectedReceiptHash = stringField(pointer.receiptHash, 'pointer.receiptHash')\n const operationFile = safeProjectPath(root, operationPath, true)\n const operationBytes = readFileSync(operationFile)\n if (expectedOperationHash && sha256(operationBytes) !== expectedOperationHash) {\n throw new Error('Multica deployment operation hash 不一致')\n }\n const operation = parseOperation(JSON.parse(operationBytes.toString('utf8')))\n if (operation.workspace !== name || operation.operationId !== expectedOperationId) {\n throw new Error('Multica deployment operation 绑定不一致')\n }\n if (!receiptPath) receiptPath = operation.receiptPath\n if (!receiptPath) throw new Error('Multica deployment operation 尚无 Receipt')\n const receiptFile = safeProjectPath(root, receiptPath, true)\n const receiptBytes = readFileSync(receiptFile)\n if (expectedReceiptHash && sha256(receiptBytes) !== expectedReceiptHash) {\n throw new Error('Multica deployment Receipt hash 不一致')\n }\n const receipt = parseReceipt(JSON.parse(receiptBytes.toString('utf8')))\n if (receipt.operationId !== operation.operationId || receipt.workspace !== name ||\n receipt.receiptId !== expectedReceiptId || receipt.evidencePath !== receiptPath ||\n operation.receiptId !== receipt.receiptId || operation.receiptPath !== receiptPath ||\n operation.planId !== receipt.planId || operation.action !== receipt.action ||\n operation.profile !== receipt.profile || operation.deploymentHash !== receipt.deploymentHash) {\n throw new Error('Multica deployment Receipt 绑定不一致')\n }\n assertReportRedacted({ operation, receipt })\n return { operation, receipt }\n}\n\nfunction loadLatestReceipt(\n root: string, name: string,\n): MulticaDeploymentReceipt | null {\n // A missing pointer means this is the first deployment. Once a pointer exists,\n // any integrity or binding failure is evidence corruption and must fail closed.\n return loadOperationAndReceipt(root, name)?.receipt || null\n}\n\nfunction parseOperation(value: unknown): MulticaDeploymentOperation {\n const item = objectValue(value, 'Multica deployment operation')\n if (item.$schema !== 'dingtalk-agent/multica-deployment-operation@1') {\n throw new Error('Multica deployment operation schema 非法')\n }\n return item as unknown as MulticaDeploymentOperation\n}\n\nfunction parseReceipt(value: unknown): MulticaDeploymentReceipt {\n const item = objectValue(value, 'Multica deployment Receipt')\n if (item.$schema !== MULTICA_DEPLOYMENT_SCHEMA) {\n throw new Error('Multica deployment Receipt schema 非法')\n }\n return item as unknown as MulticaDeploymentReceipt\n}\n\nfunction runProvider(\n command: string,\n argv: string[],\n id: string,\n kind: MulticaDeploymentCall['kind'],\n cwd: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n calls: MulticaDeploymentCall[],\n): ProviderResult {\n const budget = deploymentWriteBudgets.get(calls)\n if (kind === 'write' && budget && calls.filter((call) => call.kind === 'write').length >= budget.forward) {\n throw new DeploymentFailure('budget.forward-exhausted')\n }\n if (kind === 'rollback' && budget && calls.filter((call) => call.kind === 'rollback').length >= budget.rollback) {\n throw new DeploymentFailure('budget.rollback-exhausted')\n }\n const run = spawnSync(command, argv, {\n cwd, env: sanitizeProviderEnv(env).env, encoding: 'utf8', timeout: timeoutMs,\n maxBuffer: 32 * 1024 * 1024, stdio: ['ignore', 'pipe', 'pipe'],\n })\n const stdout = String(run.stdout || '')\n const stderr = String(run.stderr || '')\n const exitCode = typeof run.status === 'number' ? run.status : 1\n const ambiguous = Boolean(run.error && (run.error as NodeJS.ErrnoException).code === 'ETIMEDOUT')\n const passed = !run.error && exitCode === 0\n calls.push({\n id, kind, argv: redactArgv(argv), exitCode,\n stdoutHash: sha256(stdout), stderrHash: sha256(stderr), passed, ambiguous,\n })\n if (!passed) {\n emitProviderDiagnostic(id, exitCode, stderr || stdout)\n throw new DeploymentFailure(`command.${id}`, ambiguous)\n }\n return { stdout, stderr }\n}\n\nfunction scopedArgs(\n plan: { profile: string; expected: { workspaceId: string } },\n args: string[],\n): string[] {\n return ['--profile', plan.profile, '--workspace-id', plan.expected.workspaceId, ...args]\n}\n\nfunction redactArgv(argv: string[]): string[] {\n const redactNext = new Set([\n '--instructions', '--description', '--title', '--content', '--content-file',\n '--custom-env', '--mcp-config',\n ])\n const result: string[] = []\n let redact = false\n for (const arg of argv) {\n if (redact) {\n result.push(`[redacted:${sha256(arg).slice(0, 12)}]`)\n redact = false\n continue\n }\n result.push(arg)\n if (redactNext.has(arg)) redact = true\n }\n return result\n}\n\nfunction parseRemoteSkill(value: Record<string, unknown>): RemoteSkill {\n const id = resourceId(value.id, 'remote skill.id')\n const name = stringField(value.name, 'remote skill.name')\n const content = optionalString(value.content)\n const rawFiles = Array.isArray(value.files) ? value.files : []\n if (rawFiles.length > MAX_SKILL_SUPPORTING_FILES) {\n throw new Error(`远端 Skill supporting files 超过 ${MAX_SKILL_SUPPORTING_FILES} 个`)\n }\n const files = rawFiles.map((raw, index) => {\n const item = objectValue(raw, `remote skill.files[${index}]`)\n const fileContent = optionalString(item.content)\n const path = safeSkillPath(stringField(item.path, `remote skill.files[${index}].path`))\n return {\n id: resourceId(item.id, `remote skill.files[${index}].id`),\n path, content: fileContent, hash: sha256(fileContent),\n }\n }).sort((a, b) => a.path.localeCompare(b.path))\n const hash = skillTreeHash(content, files.map((item) => ({ path: item.path, hash: item.hash })))\n return { id, name, content, files, hash }\n}\n\nfunction parseRemoteAgent(value: Record<string, unknown>): RemoteAgent {\n return {\n id: resourceId(value.id, 'remote agent.id'),\n name: stringField(value.name, 'remote agent.name'),\n runtimeId: resourceId(value.runtime_id, 'remote agent.runtime_id'),\n instructions: optionalString(value.instructions),\n status: optionalString(value.status),\n archived: Boolean(optionalString(value.archived_at)) || value.archived === true,\n }\n}\n\nfunction remoteMatchesDesired(\n snapshot: RemoteSnapshot, source: DeploymentSource, runtimeId: string,\n): boolean {\n if (!snapshot.agent || snapshot.agent.archived || snapshot.agent.runtimeId !== runtimeId ||\n snapshot.agent.instructions !== source.instructions) return false\n const ids: string[] = []\n for (const local of source.skills) {\n const remote = snapshot.skills.get(local.name)\n if (!remote || remote.hash !== local.hash) return false\n ids.push(remote.id)\n }\n return stableStringify(ids.sort()) === stableStringify([...snapshot.assignedIds].sort())\n}\n\nfunction deploymentObservedHash(snapshot: RemoteSnapshot, inspectionId: string): string {\n return digest(stableStringify({\n inspectionId,\n agent: snapshot.agent ? {\n id: snapshot.agent.id,\n runtimeId: snapshot.agent.runtimeId,\n instructionsHash: sha256(snapshot.agent.instructions),\n archived: snapshot.agent.archived,\n } : null,\n skills: [...snapshot.skills.entries()].map(([name, skill]) => ({\n name, id: skill?.id || '', hash: skill?.hash || '',\n })).sort((a, b) => a.name.localeCompare(b.name)),\n assignments: [...snapshot.assignedIds].sort(),\n }))\n}\n\nfunction skillTreeHash(content: string, files: Array<{ path: string; hash: string }>): string {\n return digest(stableStringify({\n main: sha256(content),\n files: [...files].sort((a, b) => a.path.localeCompare(b.path)),\n }))\n}\n\nfunction frontmatterName(content: string): string {\n const block = content.match(/^---\\s*\\n([\\s\\S]*?)\\n---(?:\\s*\\n|$)/)\n if (!block) return ''\n const match = block[1].match(/^name:\\s*[\"']?([^\"'\\n]+?)[\"']?\\s*$/m)\n return match ? match[1].trim() : ''\n}\n\nfunction rejectCredentialMaterial(content: string, label: string): void {\n const patterns = [\n /-----BEGIN (?:RSA |EC |OPENSSH )?PRIVATE KEY-----/,\n /\\bBearer\\s+[A-Za-z0-9._~+\\/-]{20,}/i,\n /\\b(?:sk|pat|token)[-_][A-Za-z0-9_-]{24,}\\b/i,\n /(?:access[_-]?token|client[_-]?secret|password)\\s*[:=]\\s*[\"']?(?!<|\\*|replace|example|redacted)[A-Za-z0-9._~+\\/-]{16,}/i,\n ]\n if (patterns.some((pattern) => pattern.test(content))) {\n throw new Error(`${label} 检测到疑似真实凭据,拒绝部署`)\n }\n}\n\nfunction assertReportRedacted(value: unknown): void {\n const source = JSON.stringify(value)\n if (/-----BEGIN (?:RSA |EC |OPENSSH )?PRIVATE KEY-----|\\bBearer\\s+[A-Za-z0-9._~+\\/-]{20,}|\\b(?:sk|pat|token)[-_][A-Za-z0-9_-]{24,}\\b/i.test(source)) {\n throw new Error('Multica deployment evidence 脱敏失败')\n }\n if (/\"(?:instructions|content|stdout|stderr|email|serverUrl|server_url)\"\\s*:/i.test(source)) {\n throw new Error('Multica deployment evidence 包含禁止的原始内容字段')\n }\n}\n\nfunction emptySmoke(\n status: MulticaDeploymentSmoke['status'], requiredSkills: string[],\n): MulticaDeploymentSmoke {\n return {\n status, marker: '', markerHash: '', issueId: '', taskId: '', taskStatus: '', taskDiagnostic: '',\n requiredSkills: [...requiredSkills].sort(), loadedSkills: [],\n toolTracePassed: false, responsePassed: false, responseHash: '', failures: [],\n runtimeProvider: '', vocabularyIds: [], toolNames: [], unrecognizedTools: [],\n classification: '', failureDetails: [],\n }\n}\n\nfunction emptyRollback(attempted: boolean): MulticaDeploymentReceipt['rollback'] {\n return { attempted, passed: !attempted, actions: [], failures: [] }\n}\n\nfunction writeTemporaryContent(root: string, name: string, content: string): string {\n const path = join(root, `${safeFileName(name)}.txt`)\n writeFileSync(path, content, { mode: 0o600 })\n return path\n}\n\nfunction safeFileName(value: string): string {\n return value.replace(/[^A-Za-z0-9._-]/g, '_').slice(0, 120)\n}\n\nfunction readUtf8(path: string, label: string, limit: number): string {\n const bytes = readFileSync(path)\n if (bytes.length > limit) throw new Error(`${label} 超过 ${limit} bytes`)\n if (bytes.includes(0)) throw new Error(`${label} 不是 UTF-8 文本`)\n const content = bytes.toString('utf8')\n if (Buffer.from(content, 'utf8').compare(bytes) !== 0) throw new Error(`${label} 不是合法 UTF-8`)\n return content\n}\n\nfunction readJson(path: string, label: string): unknown {\n if (lstatSync(path).isSymbolicLink()) throw new Error(`${label} 不能是符号链接`)\n try { return JSON.parse(readFileSync(path, 'utf8')) }\n catch { throw new Error(`${label} 不是合法 JSON`) }\n}\n\nfunction jsonObject(value: string | unknown, label: string): Record<string, unknown> {\n let parsed = value\n if (typeof value === 'string') {\n try { parsed = JSON.parse(value) } catch { throw new DeploymentFailure(`json.${label}`) }\n }\n return objectValue(parsed, label)\n}\n\nfunction jsonArray(value: string, label: string): Record<string, unknown>[] {\n let parsed: unknown\n try { parsed = JSON.parse(value) } catch { throw new DeploymentFailure(`json.${label}`) }\n if (!Array.isArray(parsed) || parsed.some((item) => !item || typeof item !== 'object' || Array.isArray(item))) {\n throw new DeploymentFailure(`shape.${label}`)\n }\n return parsed as Record<string, unknown>[]\n}\n\nfunction objectValue(value: unknown, label: string): Record<string, unknown> {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n throw new Error(`${label} 必须是 object`)\n }\n return value as Record<string, unknown>\n}\n\nfunction stringField(value: unknown, label: string): string {\n if (typeof value !== 'string' || !value) throw new Error(`${label} 必须是非空字符串`)\n return value\n}\n\nfunction optionalString(value: unknown): string {\n return typeof value === 'string' ? value : ''\n}\n\nfunction safeRemoteOutput(value: string, maxBytes: number): string {\n const redacted = value\n .replace(/-----BEGIN (?:RSA |EC |OPENSSH )?PRIVATE KEY-----[\\s\\S]*?-----END (?:RSA |EC |OPENSSH )?PRIVATE KEY-----/g,\n '[redacted-private-key]')\n .replace(/\\bBearer\\s+[A-Za-z0-9._~+\\/-]{20,}/gi, 'Bearer [redacted]')\n .replace(/\\b(?:mul_|mcn_|sk-)[A-Za-z0-9._~+\\/-]{12,}/gi, '[redacted-token]')\n const bytes = Buffer.from(redacted, 'utf8')\n return bytes.length <= maxBytes ? redacted : `${bytes.subarray(0, maxBytes).toString('utf8')}…`\n}\n\nfunction uniqueCalls(calls: MulticaDeploymentCall[]): MulticaDeploymentCall[] {\n const seen = new Set<string>()\n return calls.filter((call) => {\n const key = stableStringify({\n id: call.id,\n kind: call.kind,\n argv: call.argv,\n exitCode: call.exitCode,\n stdoutHash: call.stdoutHash,\n stderrHash: call.stderrHash,\n passed: call.passed,\n ambiguous: call.ambiguous,\n })\n if (seen.has(key)) return false\n seen.add(key)\n return true\n })\n}\n\nfunction remoteTaskDiagnostic(task: Record<string, unknown> | undefined): string {\n if (!task) return ''\n const values: string[] = []\n const add = (label: string, value: unknown): void => {\n if (typeof value === 'string' && value.trim()) values.push(`${label}=${value.trim()}`)\n else if (typeof value === 'number' || typeof value === 'boolean') values.push(`${label}=${value}`)\n else if (value && typeof value === 'object' && !Array.isArray(value)) {\n const nested = value as Record<string, unknown>\n for (const key of ['code', 'category', 'message', 'reason', 'detail']) {\n if (nested[key] !== undefined) add(`${label}.${key}`, nested[key])\n }\n }\n }\n for (const key of [\n 'error', 'error_message', 'failure_reason', 'status_message', 'reason', 'message', 'detail',\n ]) {\n if (task[key] !== undefined) add(key, task[key])\n }\n return safeRemoteOutput(values.join('; '), 2_000)\n}\n\nfunction resourceId(value: unknown, label: string): string {\n const item = stringField(value, label)\n if (!/^[A-Za-z0-9][A-Za-z0-9._:-]{1,127}$/.test(item) ||\n /^(?:sk-|bearer|token[-_])/i.test(item)) {\n throw new Error(`${label} 不是安全稳定 ID`)\n }\n return item\n}\n\nfunction safeSkillPath(value: string): string {\n if (!value || value === 'SKILL.md' || value.startsWith('/') || value.includes('\\\\') ||\n value.split('/').some((part) => !part || part === '.' || part === '..')) {\n throw new Error(`远端 Skill supporting file 路径非法: ${value}`)\n }\n return value\n}\n\nfunction requireMulticaWorkspace(\n start: string, name: string, cliVersion = '',\n): DevelopmentWorkspaceView {\n const workspace = showDevelopmentWorkspace(start, name, cliVersion)\n if (workspace.provider.kind !== 'multica' || workspace.legacy) {\n throw new Error(`Workspace ${name} 不是 multica Provider;deploy 不执行 ${workspace.provider.kind}`)\n }\n return workspace\n}\n\nfunction safeProjectPath(root: string, ref: string, mustExist: boolean): string {\n const rootReal = realpathSync(resolve(root))\n const candidate = resolve(rootReal, ref)\n const rel = relative(rootReal, candidate)\n if (!isInside(rootReal, candidate)) throw new Error(`Multica deployment 路径越出 Project: ${ref}`)\n if (mustExist && !existsSync(candidate)) throw new Error(`Multica deployment 路径不存在: ${ref}`)\n if (existsSync(candidate)) {\n if (lstatSync(candidate).isSymbolicLink()) throw new Error(`Multica deployment 路径不能是符号链接: ${ref}`)\n if (!isInside(rootReal, realpathSync(candidate))) throw new Error(`Multica deployment 真实路径越界: ${ref}`)\n }\n let ancestor = dirname(candidate)\n while (!existsSync(ancestor)) {\n const parent = dirname(ancestor)\n if (parent === ancestor) break\n ancestor = parent\n }\n if (!existsSync(ancestor) || !isInside(rootReal, realpathSync(ancestor))) {\n throw new Error(`Multica deployment 父目录真实路径越界: ${ref}`)\n }\n void rel\n return candidate\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 deploymentsRoot(name: string): string {\n return join(MULTICA_EVIDENCE_ROOT, safeName(name), 'multica-deployments')\n}\n\nfunction receiptsRoot(name: string): string {\n return join(deploymentsRoot(name), 'receipts')\n}\n\nfunction receiptRelativePath(name: string, receiptId: string): string {\n return join(receiptsRoot(name), `${resourceId(receiptId, 'receipt-id')}.json`)\n}\n\nfunction operationRelativePath(name: string, operationId: string): string {\n return join(deploymentsRoot(name), 'operations', `${resourceId(operationId, 'operation-id')}.json`)\n}\n\nfunction latestDeploymentPointer(name: string): string {\n return join(deploymentsRoot(name), 'latest.json')\n}\n\nfunction operationBindingPath(name: string, operationId: string): string {\n return join(deploymentsRoot(name), 'bindings', `${resourceId(operationId, 'operation-id')}.json`)\n}\n\nfunction safeName(value: string): string {\n if (!/^[a-z0-9](?:[a-z0-9._-]{0,62}[a-z0-9])?$/.test(value)) {\n throw new Error(`Workspace name 非法: ${value}`)\n }\n return value\n}\n\nfunction positiveTimeout(value: number | undefined, fallback: number, max: number): number {\n if (value === undefined) return fallback\n if (!Number.isFinite(value) || value < 100 || value > max) {\n throw new Error(`Multica timeout 必须在 100..${max} ms`)\n }\n return Math.floor(value)\n}\n\nfunction atomicJson(path: string, value: unknown): void {\n mkdirSync(dirname(path), { recursive: true })\n const temp = `${path}.tmp-${process.pid}-${randomUUID().slice(0, 8)}`\n const source = `${JSON.stringify(value, null, 2)}\\n`\n writeFileSync(temp, source, { mode: 0o600, flag: 'wx' })\n renameSync(temp, path)\n if (readFileSync(path, 'utf8') !== source) throw new Error(`原子写后回读不一致: ${path}`)\n}\n\nfunction sha256(value: string | Buffer): string {\n return createHash('sha256').update(value).digest('hex')\n}\n"]}