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

  1. Correct or remove the contentTransform property so it is exactly 'antigravity-agent-frontmatter' or absent
  2. If the name looks like a real new transform, bring scripts/ and manifests/ to the same repo ref (git pull both, reinstall the package)
  3. Re-run npm run catalog:sync so manifests are regenerated from the current code
  4. 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

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


AI-assisted analysis of affaan-m/ECC@d8409a4b08 (2026-08-26). Data as JSON: /api/errors/cc774736820629dd. Report an issue: GitHub.