Files
openclaw/docs/refactor/tlon-package-migration.md
Josh Lehman 584f6bea5b fix: migrate tlon installs to tloncorp package
Switch new Tlon installs to @tloncorp/openclaw, add an on-load config migration for existing plugins.installs.tlon npm records, and document the rollout contract for the package rename. Preserve the tlon plugin/channel id and clear stale npm resolution metadata when rewriting old install specs so future plugin updates resolve cleanly.

Regeneration-Prompt: |
  Migrate the Tlon OpenClaw plugin package from @openclaw/tlon to @tloncorp/openclaw without breaking existing installs. Keep the plugin id and channel id as tlon, switch onboarding and docs for new installs to the new npm package, and add an automatic config migration for existing plugins.installs.tlon npm records that still reference the old package. When rewriting stored install specs, clear old npm resolution metadata such as integrity and resolvedSpec so the next plugin update does not compare the new package against the old package artifact. Also capture the migration contract in repo docs so the companion tloncorp package can preserve version continuity and manifest invariants.
2026-03-11 09:12:08 -07:00

2.9 KiB

title, summary, read_when
title summary read_when
Tlon Package Migration Plan for migrating the Tlon plugin package from @openclaw/tlon to @tloncorp/openclaw
Updating Tlon onboarding/install metadata
Migrating existing Tlon plugin installs

Tlon Package Migration

This document captures the OpenClaw-side plan for migrating the Tlon plugin package from @openclaw/tlon to @tloncorp/openclaw without breaking existing installs.

Goals

  • Keep the plugin id and channel id as tlon.
  • Switch new onboarding and docs to install @tloncorp/openclaw.
  • Auto-migrate existing plugins.installs.tlon records that still point at @openclaw/tlon.
  • Preserve version continuity on the Tlon side so pinned or version-qualified specs can move cleanly.
  • Keep local checkout installs (./extensions/tlon) working as before.

Required invariants

The published @tloncorp/openclaw package must remain a drop-in replacement for the Tlon plugin.

  • package.json.name should be @tloncorp/openclaw.
  • package.json.version should continue the existing 2026.x.y line instead of resetting to 0.x.
  • openclaw.channel.id must stay tlon.
  • openclaw.install.npmSpec must be @tloncorp/openclaw.
  • openclaw.extensions must point at the real published entrypoint.
  • openclaw.plugin.json.id must stay tlon.
  • openclaw.plugin.json.channels must contain tlon.

OpenClaw migration behavior

On config load, OpenClaw should detect old Tlon npm install specs and rewrite them in place.

  • Rewrite plugins.installs.tlon.spec from @openclaw/tlon to @tloncorp/openclaw.
  • Rewrite version-qualified specs the same way, preserving the suffix after the package name.
  • Apply this to any plugins.installs.tlon record that still references the old package name.
  • Clear stale npm resolution metadata so the next openclaw plugins update tlon resolves against the new package without comparing the old package integrity hash to the new package artifact.

Fields to clear when the spec is rewritten:

  • resolvedName
  • resolvedVersion
  • resolvedSpec
  • integrity
  • shasum
  • resolvedAt

Fields to preserve:

  • source
  • installPath
  • sourcePath
  • version
  • installedAt

Rollout

  1. Publish @tloncorp/openclaw with the correct manifest and version continuity.
  2. Update OpenClaw onboarding metadata and docs to point new installs at @tloncorp/openclaw.
  3. Ship the config migration so existing installs start updating from the new package name.
  4. Keep @openclaw/tlon available during the transition window.
  5. Deprecate @openclaw/tlon after OpenClaw releases with the migration have had time to land.

External follow-up in tloncorp/openclaw-tlon

  • Publish the next 2026.x.y version under @tloncorp/openclaw.
  • Update the README to say the plugin is installed separately, not “included with OpenClaw”.
  • Verify the published tarball contains the correct openclaw.plugin.json.