{"version":3,"file":"replay.d.ts","sourceRoot":"","sources":["../../../src/core/evaluation/replay.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqB,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AA6BxE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,kBAAkB,GAAG,kBAAkB,CAE/E;AAED,wBAAgB,eAAe,CAC9B,QAAQ,EAAE,kBAAkB,EAC5B,gBAAgB,SAAiC,GAC/C,kBAAkB,CAEpB","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport { createArtifact, verifyArtifact } from \"./artifacts.js\";\nimport { EVALUATOR_VERSION, type EvaluationArtifact } from \"./types.js\";\n\nfunction cloneWithoutHash(artifact: EvaluationArtifact): Omit<EvaluationArtifact, \"artifactHash\"> {\n\tconst { artifactHash: _artifactHash, ...unsigned } = artifact;\n\treturn unsigned;\n}\n\nfunction createReplay(artifact: EvaluationArtifact, evaluatorVersion: string): EvaluationArtifact {\n\tif (!verifyArtifact(artifact)) throw new Error(\"cannot replay an invalid evaluation artifact\");\n\tif (artifact.run.status !== \"completed\") throw new Error(\"cannot replay an incomplete evaluation\");\n\tif (artifact.evidenceIds.length === 0) throw new Error(\"cannot replay evaluation without immutable evidence\");\n\tconst now = new Date().toISOString();\n\treturn createArtifact({\n\t\t...cloneWithoutHash(artifact),\n\t\trun: {\n\t\t\t...artifact.run,\n\t\t\tevaluationRunId: randomUUID(),\n\t\t\tstartedAt: now,\n\t\t\tcompletedAt: now,\n\t\t\tstatus: \"completed\",\n\t\t},\n\t\tprovenance: {\n\t\t\tcreatedAt: now,\n\t\t\tsourceRunIds: [artifact.run.evaluationRunId],\n\t\t\tevaluatorVersion,\n\t\t},\n\t});\n}\n\nexport function replayArtifact(artifact: EvaluationArtifact): EvaluationArtifact {\n\treturn createReplay(artifact, `${EVALUATOR_VERSION}:replay`);\n}\n\nexport function rescoreArtifact(\n\tartifact: EvaluationArtifact,\n\tevaluatorVersion = `${EVALUATOR_VERSION}:rescore`,\n): EvaluationArtifact {\n\treturn createReplay(artifact, evaluatorVersion);\n}\n"]}