import { addComposeHash } from "@phala/cloud";
// Phase 1: attempt the update
const result = await client.updateCvmEnvs({
id: "my-app",
encrypted_env: newEncrypted,
env_keys: ["API_KEY", "NEW_VAR"], // env_keys changed
});
if (result.status === "precondition_required") {
// Phase 2a: register the new compose hash on-chain
const receipt = await addComposeHash({
chain: result.kms_info.chain,
kmsContractAddress: result.kms_info.kms_contract_address,
appId: result.app_id as `0x${string}`,
composeHash: result.compose_hash,
privateKey: privateKey,
});
// Phase 2b: retry with on-chain proof
await client.updateCvmEnvs({
id: "my-app",
encrypted_env: newEncrypted,
env_keys: ["API_KEY", "NEW_VAR"],
compose_hash: result.compose_hash,
transaction_hash: receipt.transactionHash,
});
}