Skip to content

feat(gateway): warn that forest-mcp-server and forest-bff are deprecated - #1990

Merged
nbouliol merged 1 commit into
feature/prd-1337-create-the-forestadmingateway-package-that-serves-bothfrom
feature/prd-1342-deprecate-the-standalone-bins
Oct 8, 2026
Merged

nbouliol merged 1 commit into
feature/prd-1337-create-the-forestadmingateway-package-that-serves-bothfrom
feature/prd-1342-deprecate-the-standalone-bins

Conversation

@nbouliol

@nbouliol nbouliol commented Oct 8, 2026 •

Copy link
Copy Markdown
Member

Summary

forest-mcp-server and forest-bff log one warning at boot naming forest-gateway; both READMEs flag the package as an internal building block of @forestadmin/gateway.

 forest-bff (no subcommand)
+  logger('Warn', DEPRECATION_WARNING)
   runCli(env, logger)
 forest-bff openapi            # unchanged, no warning
 forest-mcp-server
+  console.warn(DEPRECATION_WARNING)
   parseMcpEnv → ForestMCPServer.run()

Both bins keep serving exactly as before. The link points to the standalone Gateway page added by the docs PR (ForestAdmin/docs, stacked on #53).

Evidence

  • Before: npx forest-bff / npx forest-mcp-server boot silently.
    After:
    • openapi-cli.test.ts: dispatchCli([]) logs ['Warn', DEPRECATION_WARNING] once; dispatchCli(['openapi']) does not.
    • mcp-server/test/cli.test.ts: starting the bin logs one console.warn containing forest-mcp-server is deprecated and forest-gateway.
    • Both suites green (58 + 13 tests).

Merge Danger

Door: two-way

Revert the commit. Must ship with or after the standalone Gateway docs, so the link resolves.

Blast Radius: logs

One extra warning line at boot, including on the API service Forest hosts until it moves to the Gateway image.

Part of PRD-1342

🤖 Generated with Claude Code

Note

Warn that forest-mcp-server and forest-bff are deprecated, add gateway Docker pipeline

  • Adds deprecation warnings to the forest-mcp-server and forest-bff CLIs that direct users to the forest-gateway package, with matching README notices in mcp-server/README.md and agent-bff/README.md
  • Reworks gateway-env.ts so configuration uses FOREST_GATEWAY_* variable names, with old BFF_* and AGENT_URL names kept as warned aliases; conflicting alias values now fail startup
  • Adds a production Docker image: three-stage Dockerfile, isolated dependency manifest generation, closure validation, Trivy scan gating, smoke tests, and a docker-publish-gateway.yml workflow that builds amd64/arm64 images and publishes multi-arch tags to GHCR
  • Marks the gateway package as non-private and releases it via the build workflow
  • Behavioral Change: API public URLs must end in the configured base path plus /api, agent URLs must be absolute HTTP(S) without query or fragment, and conflicting legacy environment aliases now cause startup errors instead of being ignored; existing forest-bff deployments relying on legacy names still work but see warnings

Macroscope summarized a2ad56c.

@linear-code

linear-code Bot commented Oct 8, 2026

Copy link
Copy Markdown

PRD-1342

@qltysh

qltysh Bot commented Oct 8, 2026 •

Copy link
Copy Markdown

1 new issue

Tool Category Rule Count
qlty Structure Function with many returns (count = 7): dispatchCli 1

@qltysh

qltysh Bot commented Oct 8, 2026 •

Copy link
Copy Markdown

Qlty


Coverage Impact

This PR will not change total coverage.

Modified Files with Diff Coverage (1)

RatingFile% DiffUncovered Line #s
Coverage rating: A Coverage rating: A
packages/agent-bff/src/cli-dispatch.ts100.0%
Total100.0%
🚦 See full report on Qlty Cloud »

🛟 Help
  • Diff Coverage: Coverage for added or modified lines of code (excludes deleted files). Learn more.

  • Total Coverage: Coverage for the whole repository, calculated as the sum of all File Coverage. Learn more.

  • File Coverage: Covered Lines divided by Covered Lines plus Missed Lines. (Excludes non-executable lines including blank lines and comments.)

    • Indirect Changes: Changes to File Coverage for files that were not modified in this PR. Learn more.

@Tonours Tonours left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved after /validator run 1990-20261008132500-Tonours: nothing at or above should-fix posted, 0 suppressed.

Base automatically changed from feature/prd-1338-unify-the-standalone-gateway-configuration-on-one-set-of-env to feature/prd-1337-create-the-forestadmingateway-package-that-serves-both October 8, 2026 13:38
@nbouliol
nbouliol marked this pull request as ready for review October 8, 2026 13:41
Both bins log one line at boot pointing to forest-gateway; READMEs flag
both packages as internal building blocks of @forestadmin/gateway.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@nbouliol
nbouliol force-pushed the feature/prd-1342-deprecate-the-standalone-bins branch from 3e8e284 to a2ad56c Compare October 8, 2026 13:42
@nbouliol
nbouliol merged commit f65b49f into feature/prd-1337-create-the-forestadmingateway-package-that-serves-both Oct 8, 2026
43 checks passed
@nbouliol
nbouliol deleted the feature/prd-1342-deprecate-the-standalone-bins branch October 8, 2026 13:52
Tonours pushed a commit that referenced this pull request Oct 12, 2026
* feat(gateway): serve the MCP and the API on one port

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* ci: lint and test the gateway package

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(gateway): build against the workspace agent-bff and mcp-server

Exact pins fall behind the workspace on each release, since a private
package is skipped by multi-semantic-release, and Yarn then pulls the
published versions instead of linking the local ones.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* feat(mcp-server): export the listener variables parseMcpEnv reads

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(gateway): follow the listener variable names agent-bff and mcp-server own

A rename on their side now fails the gateway's typecheck, or carries
over through the exported name, instead of silently moving the API's
public url and port.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* feat(agent-bff): export the openapi --output handling for other CLIs

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* refactor(gateway): reuse agent-bff's openapi --output handling

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* feat(gateway): read one set of env vars, legacy names as aliases (#1980)

* feat(gateway): warn that forest-mcp-server and forest-bff are deprecated (#1990)

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants