affaan-m/ECC · error · Error
Unknown install content transform: ${operation.contentTransf
Error message
Unknown install content transform: ${operation.contentTransform} What it means
During install/repair/verification, a copy-file operation may declare a contentTransform that rewrites content as it is copied. transformCopyFileContent() in scripts/lib/install-lifecycle.js supports exactly one value: 'antigravity-agent-frontmatter'. Any other non-empty contentTransform falls through to the final throw.
Source
Thrown at scripts/lib/install-lifecycle.js:187
function buildLinkIndexForOperations(operations, trustedRoot) {
const mappings = (operations || [])
.filter(operation => operation.kind === 'copy-file' && operation.sourceRelativePath)
.map(operation => ({
sourceRel: operation.sourceRelativePath,
destRel: path.relative(trustedRoot, operation.destinationPath),
}));
return buildInstallIndex(mappings);
}
function transformCopyFileContent(operation, content) {
if (!operation.contentTransform) {
return content;
}
if (operation.contentTransform === 'antigravity-agent-frontmatter') {
return adaptAntigravityAgent(content, operation.sourceRelativePath);
}
throw new Error(`Unknown install content transform: ${operation.contentTransform}`);
}
function getExpectedCopyFileContent(operation, content, linkIndex) {
const transformed = transformCopyFileContent(operation, content);
if (!linkIndex || !operation.sourceRelativePath || !isMarkdownPath(operation.destinationPath)) {
return transformed;
}
return rewriteRelativeLinks(transformed, {
sourceRel: operation.sourceRelativePath,
index: linkIndex,
});
}
function isPlainObject(value) {
return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
}
function cloneJsonValue(value) {View on GitHub (pinned to d8409a4b08)
Solutions
- Correct or remove the contentTransform property so it is exactly 'antigravity-agent-frontmatter' or absent
- If the name looks like a real new transform, bring scripts/ and manifests/ to the same repo ref (git pull both, reinstall the package)
- Re-run npm run catalog:sync so manifests are regenerated from the current code
- Search for the bad value with rg "contentTransform" to find the generating entry
Example fix
// before — manifest operation
{ "source": "agents/foo.md", "contentTransform": "antigravity-frontmatter" }
// after
{ "source": "agents/foo.md", "contentTransform": "antigravity-agent-frontmatter" } Defensive patterns
Strategy: validation
Validate before calling
const SUPPORTED_TRANSFORMS = new Set(['antigravity-agent-frontmatter']);
function assertSupportedTransform(operation) {
const t = operation.contentTransform;
if (t !== undefined && !SUPPORTED_TRANSFORMS.has(t)) {
throw new Error(`contentTransform '${t}' is not supported here; supported: ${[...SUPPORTED_TRANSFORMS].join(', ')}`);
}
} Type guard
function isSupportedContentTransform(value) {
return value === undefined || value === 'antigravity-agent-frontmatter';
} Try / catch
try {
await install(operations);
} catch (err) {
if (/Unknown install content transform/.test(err.message)) {
// manifest/scripts version skew: align repo refs and re-run, or drop the transform
throw new Error('Version skew: regenerate manifests or update scripts to the same ref');
}
throw err;
} Prevention
- Keep scripts/ and manifests/ at the same git ref; regenerate manifests whenever scripts change
- Treat transform names as an API contract — search for all call sites before renaming
- Add a test enumerating every contentTransform value in manifests against the supported set
When it happens
Trigger: An operation/manifest carrying "contentTransform": "antigravity-frontmatter" (typo), a newly invented transform name, or a transform name emitted by a newer ECC version being executed by older scripts/lib/install-lifecycle.js.
Common situations: Version skew: manifests regenerated by new code but old scripts still cached/installed (or vice versa); hand-editing manifests; adding a new transform to the executor without updating the lifecycle/verify side.
Related errors
- Install module ${moduleId} has invalid targets; expected an
- Install module ${moduleId} has unsupported targets: ${unsupp
- Install manifests not found under ${repoRoot}
- Refusing to replace modified legacy Codex artifact: ${filePa
- Legacy Codex sync state requires recovery before reinstall:
AI-assisted analysis of affaan-m/ECC@d8409a4b08 (2026-08-26).
Data as JSON: /api/errors/cc774736820629dd.
Report an issue: GitHub.