Skip to content

Resolve and safely archive local deployment source - #4862

Draft
parkedwards wants to merge 7 commits into
mainfrom
edward/hrzn-1361-resolve-and-archive-local-fastmcp-deployment-source
Draft

Resolve and safely archive local deployment source#4862
parkedwards wants to merge 7 commits into
mainfrom
edward/hrzn-1361-resolve-and-archive-local-fastmcp-deployment-source

Conversation

@parkedwards

@parkedwards parkedwards commented Aug 19, 2026

Copy link
Copy Markdown
Member

Creates deterministic SourceBundle archives for local Horizon deployments without importing application code or using AST analysis.
File inputs include an optional discovered dependency path.
Selected config inputs exclude the original file and emit a canonical hosted fastmcp.json with no dependency override.
Horizon #5054 then applies authoritative FastMCP project, additional dependency, and Python resolution.

The hosted config projection keeps only supported build intent and deployment.cwd.
FastMCP fails before upload for environment.editable, deployment.env, and deployment.args.
It also rejects malformed or sensitive dependency URLs and source paths that cross the archive boundary.
The archive applies hard credential exclusions plus .gitignore and .git/info/exclude rules.

The transport boundary is:

file.py[:object] -> source + optional dependency path -> manual Horizon build
fastmcp.json     -> source + hosted config             -> FastMCP Horizon build

chatgpt-codex-connector[bot]

This comment was marked as resolved.

@parkedwards
parkedwards marked this pull request as draft August 19, 2026 16:17
@parkedwards
parkedwards marked this pull request as ready for review August 19, 2026 16:48
chatgpt-codex-connector[bot]

This comment was marked as resolved.

@parkedwards
parkedwards marked this pull request as draft August 19, 2026 17:05
@parkedwards
parkedwards marked this pull request as ready for review August 20, 2026 00:18
@parkedwards

Copy link
Copy Markdown
Member Author

@codex review

chatgpt-codex-connector[bot]

This comment was marked as resolved.

chatgpt-codex-connector[bot]

This comment was marked as resolved.

@parkedwards
parkedwards marked this pull request as draft August 20, 2026 00:39
@parkedwards
parkedwards marked this pull request as ready for review August 20, 2026 07:21
chatgpt-codex-connector[bot]

This comment was marked as resolved.

馃 Generated with an OpenAI coding agent.
@parkedwards
parkedwards marked this pull request as draft August 20, 2026 07:32
@parkedwards
parkedwards marked this pull request as ready for review August 20, 2026 07:32

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

馃挕 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 781d4ccf6c

鈩癸笍 About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 馃憤.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread fastmcp_slim/fastmcp/cli/deploy/source_archive.py
Comment thread fastmcp_slim/fastmcp/cli/deploy/source_bundle.py Outdated
@parkedwards
parkedwards marked this pull request as draft August 24, 2026 22:00

@jlowin jlowin 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.

Thanks, the latest head fixes the junction and malformed-URL failures. One archive-integrity issue remains for config-based deployments.

environment.requirements and environment.project are written into the archived fastmcp.json, but existing paths are never added to _collect_entries(..., required_paths=...); dependency_files is empty whenever a config is selected. A gitignored requirements file or project can therefore be omitted while create_source_bundle() succeeds, leaving Horizon a config that references a file or directory absent from the archive. I reproduced this with an existing gitignored requirements.txt: bundle creation succeeds and the archive contains the reference but not the file.

Resolve existing configured dependency paths and treat them as required archive inputs, including the required build contents for a project directory. Genuinely missing paths can still be preserved for Horizon to validate remotely.

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