paperclipai/paperclip · error · Error
This exact package was already imported by a completed trans
Error message
This exact package was already imported by a completed transfer. Re-export the package to import it again.
What it means
Idempotency guard in the import transfer flow: the server reports that a completed transfer with this exact content hash already exists, so the client refuses to re-upload/re-import the identical package. Re-exporting the package produces a new hash and is required to import again.
Source
Thrown at ui/src/pages/CompanyImport.tsx:943
// The whole file is read once here for hashing; parts are later uploaded
// as Blob slices of the File, so this buffer is not retained past hashing.
const manifest = await buildImportTransferManifest(await file.arrayBuffer());
transferManifestRef.current = { file, manifest };
return manifest;
}
/**
* Declare (or resume) the transfer for this file and upload every part the
* server reports missing, sequentially with per-part retries. Resolves with
* the transfer id once the server holds every part.
*/
async function uploadImportTransfer(file: File): Promise<string> {
const manifest = await ensureTransferManifest(file);
const created = await companiesApi.importTransferCreate(manifest);
if (created.alreadyCompleted) {
// The server keys transfers by content, and this exact zip already
// finished an apply — its parts are gone, so it cannot be re-run.
throw new Error(
"This exact package was already imported by a completed transfer. Re-export the package to import it again.",
);
}
const missing = new Set(created.missingParts);
let uploadedParts = manifest.parts.length - missing.size;
let uploadedBytes = manifest.parts.reduce(
(sum, part) => (missing.has(part.index) ? sum : sum + part.byteSize),
0,
);
try {
setTransferProgress({
uploadedParts,
totalParts: manifest.parts.length,
uploadedBytes,
totalBytes: manifest.totalBytes,
});
for (const part of manifest.parts) {
if (!missing.has(part.index)) continue;View on GitHub (pinned to a7e689b3c3)
Solutions
- Re-export the company package from the source to get a new package identity, then import it.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at ui/src/pages/CompanyImport.tsx:943 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of paperclipai/paperclip@a7e689b3c3 (2026-08-18).
Data as JSON: /api/errors/8f3060a017edcd5c.
Report an issue: GitHub.