@xdxer/dingtalk-agent 0.1.4-beta.9 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +198 -0
- package/README.en.md +98 -326
- package/README.md +95 -673
- package/dist/bin/dingtalk-agent.js +200 -18
- package/dist/bin/dingtalk-agent.js.map +1 -1
- package/dist/src/agent-audit.js +1014 -89
- package/dist/src/agent-audit.js.map +1 -1
- package/dist/src/agent-enhance.js +41 -8
- package/dist/src/agent-enhance.js.map +1 -1
- package/dist/src/agent-platform.js +299 -0
- package/dist/src/agent-platform.js.map +1 -0
- package/dist/src/config.js +1 -7
- package/dist/src/config.js.map +1 -1
- package/dist/src/development-workspace.js +31 -5
- package/dist/src/development-workspace.js.map +1 -1
- package/dist/src/doctor.js +74 -15
- package/dist/src/doctor.js.map +1 -1
- package/dist/src/host-detect.js +146 -0
- package/dist/src/host-detect.js.map +1 -0
- package/dist/src/instruction-path.js +270 -0
- package/dist/src/instruction-path.js.map +1 -0
- package/dist/src/map.js +157 -0
- package/dist/src/map.js.map +1 -0
- package/dist/src/multica-deploy.js +78 -20
- package/dist/src/multica-deploy.js.map +1 -1
- package/dist/src/multica-provider.js +1 -1
- package/dist/src/multica-provider.js.map +1 -1
- package/dist/src/opencode-evals.js +710 -225
- package/dist/src/opencode-evals.js.map +1 -1
- package/dist/src/opencode-isolation.js +124 -0
- package/dist/src/opencode-isolation.js.map +1 -0
- package/dist/src/opencode-provider.js +1 -0
- package/dist/src/opencode-provider.js.map +1 -1
- package/dist/src/opencode-workspace.js +21 -10
- package/dist/src/opencode-workspace.js.map +1 -1
- package/dist/src/remote-state-evals.js +2 -1
- package/dist/src/remote-state-evals.js.map +1 -1
- package/dist/src/robot-evals.js +2 -1
- package/dist/src/robot-evals.js.map +1 -1
- package/dist/src/setup.js +6 -5
- package/dist/src/setup.js.map +1 -1
- package/dist/src/skill-manager.js +141 -12
- package/dist/src/skill-manager.js.map +1 -1
- package/dist/src/skills.js +2 -1
- package/dist/src/skills.js.map +1 -1
- package/dist/src/types.js.map +1 -1
- package/dist/src/upgrade.js +23 -27
- package/dist/src/upgrade.js.map +1 -1
- package/dist/src/version.js +73 -0
- package/dist/src/version.js.map +1 -0
- package/docs/INSTALLATION.md +3 -3
- package/docs/assets/agent-delivery-lifecycle.svg +103 -0
- package/docs/schemas/agent-platform.schema.json +13 -0
- package/docs/schemas/project.schema.json +3 -0
- package/docs/schemas/release-readiness.schema.json +2 -1
- package/evals/README.md +17 -0
- package/lab/README.md +3 -3
- package/lab/agent-eval/catalog.json +5 -5
- package/lab/agent-eval/classic-failures.json +9 -9
- package/lab/agent-eval/completion-gate-regression.json +6 -6
- package/lab/agent-eval/remote-state-workspace/opencode.json +1 -1
- package/lab/agent-eval/workspace/AGENTS.md +1 -1
- package/lab/project-workspace/fake-multica-provider.mjs +17 -6
- package/lab/project-workspace/opencode-provider-suite.json +1 -1
- package/lab/robot-eval/suite.json +1 -1
- package/lab/robot-eval/workspace/AGENTS.md +1 -1
- package/lab/schemas/agent-eval-catalog.schema.json +1 -1
- package/package.json +13 -12
- package/skills/README.md +23 -0
- package/skills/core/dingtalk-agent-compose/SKILL.md +151 -0
- package/skills/core/dingtalk-agent-compose/assets/AGENTS.template.md +35 -0
- package/skills/core/dingtalk-agent-compose/assets/role-skill.template.md +32 -0
- package/skills/core/dingtalk-agent-compose/evals/evals.json +129 -0
- package/skills/{dingtalk-agent-compose → core/dingtalk-agent-compose}/references/agent-definition-contract.md +3 -3
- package/skills/core/dingtalk-agent-compose/references/host-loading-contract.md +58 -0
- package/skills/core/dingtalk-agent-compose/references/hosts/claude-code.md +48 -0
- package/skills/core/dingtalk-agent-compose/references/hosts/opencode.md +77 -0
- package/skills/{dingtalk-agent-eval → core/dingtalk-agent-eval}/SKILL.md +31 -7
- package/skills/{dingtalk-agent-eval → core/dingtalk-agent-eval}/assets/eval-catalog.template.json +1 -1
- package/skills/{dingtalk-agent-eval → core/dingtalk-agent-eval}/evals/evals.json +22 -0
- package/skills/{dingtalk-agent-eval → core/dingtalk-agent-eval}/references/eval-topology.md +14 -0
- package/skills/{dingtalk-agent-eval → core/dingtalk-agent-eval}/references/evidence-contract.md +21 -0
- package/skills/core/dingtalk-agent-eval/references/failure-to-case.md +35 -0
- package/skills/core/dingtalk-agent-eval/references/interactive-debug-channels.md +93 -0
- package/skills/core/dingtalk-agent-eval/references/local-connector-smoke.md +75 -0
- package/skills/core/dingtalk-basic-behavior/SKILL.md +87 -0
- package/skills/{dingtalk-basic-behavior → core/dingtalk-basic-behavior}/references/memory-and-evolution.md +12 -0
- package/skills/core/dingtalk-basic-behavior/references/risk-authority-and-privacy.md +62 -0
- package/skills/{dingtalk-basic-behavior → core/dingtalk-basic-behavior}/references/task-lifecycle.md +15 -3
- package/skills/core/dingtalk-basic-behavior/references/truth-and-recovery.md +65 -0
- package/skills/platforms/deap/PLATFORM.md +3 -0
- package/skills/platforms/deap/README.md +3 -0
- package/skills/platforms/multica-dingtalk/PLATFORM.md +40 -0
- package/skills/{dingtalk-agent-boot-multica → platforms/multica-dingtalk/dingtalk-agent-boot-multica}/SKILL.md +4 -4
- package/skills/{dingtalk-agent-deploy → platforms/multica-dingtalk/dingtalk-agent-deploy-multica}/SKILL.md +1 -1
- package/skills/platforms/multica-dingtalk/multica-external/SKILL.md +282 -0
- package/skills/platforms/multica-dingtalk/multica-external/scripts/bootstrap.sh +78 -0
- package/skills/platforms/multica-dingtalk/multica-external/scripts/multica_ext.py +1180 -0
- package/skills/dingtalk-agent-compose/SKILL.md +0 -110
- package/skills/dingtalk-agent-compose/assets/AGENTS.template.md +0 -26
- package/skills/dingtalk-agent-compose/assets/role-skill.template.md +0 -24
- package/skills/dingtalk-agent-compose/evals/evals.json +0 -94
- package/skills/dingtalk-agent-compose/references/opencode-host-contract.md +0 -65
- package/skills/dingtalk-basic-behavior/SKILL.md +0 -146
- /package/skills/{dingtalk-agent-compose → core/dingtalk-agent-compose}/assets/agent.bindings.dingtalk-doc.template.json +0 -0
- /package/skills/{dingtalk-agent-compose → core/dingtalk-agent-compose}/assets/agent.bindings.local.template.json +0 -0
- /package/skills/{dingtalk-agent-compose/assets → core/dingtalk-agent-compose/assets/hosts/opencode}/opencode.template.json +0 -0
- /package/skills/{dingtalk-agent-compose → core/dingtalk-agent-compose}/references/storage-routing.md +0 -0
- /package/skills/{dingtalk-agent-eval → core/dingtalk-agent-eval}/references/scenario-taxonomy.md +0 -0
- /package/skills/{dingtalk-agent-eval → core/dingtalk-agent-eval}/references/storage-modes.md +0 -0
- /package/skills/{dingtalk-basic-behavior → core/dingtalk-basic-behavior}/assets/memory-candidate-proposal.json +0 -0
- /package/skills/{dingtalk-basic-behavior → core/dingtalk-basic-behavior}/assets/task-checkpoint.json +0 -0
- /package/skills/{dingtalk-basic-behavior → core/dingtalk-basic-behavior}/references/action-contract.md +0 -0
- /package/skills/{dingtalk-basic-behavior → core/dingtalk-basic-behavior}/references/event-to-behavior.md +0 -0
- /package/skills/{dingtalk-basic-behavior → core/dingtalk-basic-behavior}/references/perception-and-gates.md +0 -0
- /package/skills/{dingtalk-basic-behavior → core/dingtalk-basic-behavior}/references/runtime-modes.md +0 -0
- /package/skills/{dingtalk-agent-deploy → platforms/multica-dingtalk/dingtalk-agent-deploy-multica}/references/multica-deployment-contract.md +0 -0
- /package/skills/{dingtalk-agent-deploy → platforms/multica-dingtalk/dingtalk-agent-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'\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.name,\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(join(packageRoot, 'skills', 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 nonSkillTools = toolUses.filter((item) => !/skill/i.test(optionalString(item.tool)))\n const loadedSkills = requiredSkills.filter((name) => toolUses.some((item) =>\n JSON.stringify(item.input || {}).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 let responsePassed = false\n try {\n const parsed = JSON.parse(finalText)\n responsePassed = parsed?.schema === 'dta-multica-load-smoke@1' &&\n parsed?.marker === marker &&\n stableStringify(Array.isArray(parsed?.loaded) ? [...parsed.loaded].sort() : []) ===\n stableStringify(requiredSkills)\n } catch { responsePassed = false }\n const toolTracePassed = nonSkillTools.length === 0 &&\n stableStringify(loadedSkills) === 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(finalText), failures,\n }\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.name &&\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.name\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, 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"]}
|