{"record":{"id":"bb41b5694a23108a","repo":"EveryInc/compound-engineering-plugin","slug":"target-targetname-is-registered-but-not-impleme","errorCode":null,"errorMessage":"Target ${targetName} is registered but not implemented yet.","messagePattern":"Target (.+?) is registered but not implemented yet\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"src/commands/convert.ts","lineNumber":151,"sourceCode":"        const writeScope =\n          tool.name === \"opencode\" ? resolveOpenCodeWriteScope(hasExplicitOutput, undefined) : undefined\n        await handler.write(root, bundle, writeScope)\n        console.log(`Converted ${plugin.manifest.name} to ${tool.name} at ${root}`)\n      }\n\n      if (activeTargets.some((t) => t.name === \"codex\")) {\n        await stripCodexAgentsToolMap(codexHome)\n      }\n      return\n    }\n\n    const target = targets[targetName]\n    if (!target) {\n      throw new Error(`Unknown target: ${targetName}`)\n    }\n\n    if (!target.implemented) {\n      throw new Error(`Target ${targetName} is registered but not implemented yet.`)\n    }\n\n    const resolvedScope = validateScope(targetName, target, args.scope ? String(args.scope) : undefined)\n\n    const primaryOutputRoot = resolveTargetOutputRoot({\n      targetName,\n      outputRoot,\n      codexHome,\n      piHome,\n      pluginName: plugin.manifest.name,\n      hasExplicitOutput,\n      scope: resolvedScope,\n    })\n    const bundle = target.convert(plugin, options)\n    if (!bundle) {\n      throw new Error(`Target ${targetName} did not return a bundle.`)\n    }\n","sourceCodeStart":133,"sourceCodeEnd":169,"githubUrl":"https://github.com/EveryInc/compound-engineering-plugin/blob/c9c10f8c75412c7232cb2bd663e5fd1cea98d84e/src/commands/convert.ts#L133-L169","documentation":"The `targets` registry can contain placeholder entries marked `implemented: false` (per the documented provider-addition checklist, a handler is added with implemented:false until complete). If you select such a target, `run` throws this error after the registry lookup succeeds — the target exists but its convert/write pipeline is not built yet.","triggerScenarios":"Running `convert --to <name>` where targets[<name>] exists but has implemented:false — e.g. an in-development target added by a contributor following the new-provider checklist, in a branch or unreleased build.","commonSituations":"Working on a feature branch where a new target stub was registered; running from source at a commit mid-development; documentation mentioning a forthcoming target before its release.","solutions":["Use a fully implemented target instead: opencode, codex, pi, or antigravity.","If you're developing the target, implement its `convert` and `write` handlers and flip `implemented: true` in src/targets/index.ts.","If you need the target in production, upgrade to a CLI version where the target's implementation landed."],"exampleFix":"// in src/targets/index.ts, before\nmytarget: { name: \"mytarget\", implemented: false, ... }\n// after (once convert/write are implemented)\nmytarget: { name: \"mytarget\", implemented: true, convert: convertClaudeToMyTarget, write: writeMyTargetBundle }","handlingStrategy":"validation","validationCode":"import { targets } from \"./src/targets/index\"\nconst t = targets[targetName]\nif (!t) throw new Error(`Unknown target: ${targetName}`)\nif (!t.implemented) throw new Error(`Target '${targetName}' is a stub in this build — use opencode/codex/pi/antigravity or upgrade the CLI.`)","typeGuard":"function isImplementedTarget(name: string): boolean {\n  const t = (targets as Record<string, { implemented?: boolean }>)[name]\n  return Boolean(t?.implemented)\n}","tryCatchPattern":"try {\n  await convert({ to: targetName })\n} catch (e) {\n  if (e instanceof Error && /registered but not implemented/.test(e.message)) {\n    console.error(`Target '${targetName}' is not finished in this build; pick an implemented target.`)\n  } else throw e\n}","preventionTips":["Only use targets marked implemented:true in your checked-out version of src/targets/index.ts.","On feature branches, remember new targets land as implemented:false stubs first.","Track the new-provider checklist: a target becomes usable only after convert/write are implemented and the flag flips."],"tags":["cli","not-implemented","configuration"],"backgroundTag":"feature-not-implemented","analyzedSha":"c9c10f8c75412c7232cb2bd663e5fd1cea98d84e","analyzedAt":"2026-08-31T15:18:07.959Z","schemaVersion":2},"datasetVersion":"2026-08-31T19:17:28.585Z"}