FN-7913: add fn plugin publish --dry-run preflight command
Adds a non-mutating `fn plugin publish` CLI command that preflights a plugin before manual pack/publish, giving external plugin authors an offline readiness check.
- New `packages/cli/src/commands/plugin-publish.ts` with `runPluginPublish`, `collectPluginPreflight`, and `classifyVersionBump` (strict x.y.z semver bump classification), reusing `loadManifestFromPath` / `resolvePluginEntryFile` from the install path
- Wire `fn plugin publish <path> [--dry-run] [--previous-version <semver>]` into `bin.ts` command routing, dynamic import list, and help text
- Add test coverage in `plugin-publish.test.ts` and update `bin.test.ts` for the new subcommand
- Update `docs/PLUGIN_AUTHORING.md`, `docs/cli-reference.md`, and `docs/plugins/external-authoring.md` to document the new preflight command
- Add changeset `.changeset/fn-7913-plugin-publish-dry-run.md` (minor, @runfusion/fusion)
Files changed:
.changeset/fn-7913-plugin-publish-dry-run.md | 7 +
docs/PLUGIN_AUTHORING.md | 9 +-
docs/cli-reference.md | 5 +-
docs/plugins/external-authoring.md | 14 +-
packages/cli/src/__tests__/bin.test.ts | 2 +-
packages/cli/src/__tests__/plugin-publish.test.ts | 197 ++++++++++++++++
packages/cli/src/bin.ts | 22 +-
packages/cli/src/commands/plugin-publish.ts | 272 ++++++++++++++++++++++
8 files changed, 521 insertions(+), 7 deletions(-)
Fusion-Task-Id: FN-7913
Fusion-Task-Lineage: 27bdf937-3195-4619-9d01-b6af4fbba487
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>