import { embedManifest } from "@provenancekit/media";
import { ProvenanceKit } from "@provenancekit/sdk";
async function publishAIGeneratedImage(
imageBuffer: Buffer,
generatingModel: { provider: string; model: string }
) {
const pk = new ProvenanceKit({ apiKey: "pk_live_..." });
// 1. Record EAA provenance
const { cid, actionId } = await pk.file(imageBuffer, {
entity: { id: "org:myapp", role: "organization" },
action: {
type: "create",
extensions: {
"ext:ai@1.0.0": {
provider: generatingModel.provider,
model: generatingModel.model,
autonomyLevel: "autonomous",
},
},
},
resourceType: "image",
});
// 2. Embed C2PA manifest for interoperability
const signedBuffer = await embedManifest({
inputBuffer: imageBuffer,
mimeType: "image/jpeg",
manifest: {
title: `AI-generated image (${generatingModel.model})`,
generator: {
name: generatingModel.provider,
version: generatingModel.model,
},
aiDisclosure: "ai_generated", // required by EU AI Act Art. 50
actions: [
{
action: "c2pa.created",
softwareAgent: `${generatingModel.provider}/${generatingModel.model}`,
when: new Date().toISOString(),
},
],
// Link to EAA provenance record
metadata: {
"provenancekit:cid": cid,
"provenancekit:actionId": actionId,
},
},
});
return { cid, signedBuffer };
}