feat: env/egress injection, LLM loop fixes, Dockerfile and GHCR release#46
Merged
initializ-mk merged 5 commits intomainfrom Apr 17, 2026
Merged
feat: env/egress injection, LLM loop fixes, Dockerfile and GHCR release#46initializ-mk merged 5 commits intomainfrom
initializ-mk merged 5 commits intomainfrom
Conversation
…and GHCR release - Export ExtractForgeReqs in parser for reuse by skill save flow - Add SkillSaveResult return type with egress_added, env_configured, env_missing - Create shared utilities (MergeEgressDomains, AppendEnvVars, CheckMissingEnv) - Wire env var and egress domain handling into UI skill builder save and CLI skills add - Update frontend to display egress/env info and prompt for missing env vars - Fix LLM loop to execute tool calls even when FinishReason is "stop" - Deduplicate user messages on session recovery - Handle OAuth credentials and __oauth__ sentinels in skill builder provider - Add multi-arch Dockerfile (linux/amd64, linux/arm64) with multi-stage build - Add Docker build+push job to release workflow targeting ghcr.io
…cker image - Update runtime.md: fix loop termination docs (FinishReason ignored), add session recovery dedup - Update skills.md: document egress domain auto-merge on skill add and Skill Builder save - Update dashboard.md: add egress/env features, update save endpoint and workflow - Update deployment.md: add pre-built Docker image section (ghcr.io/initializ/forge) - Update commands.md: clarify forge skills add egress merging - Bump Dockerfile runtime to alpine:3.22.4
- PortAllocator.Allocate() now probes port availability via net.Listen before allocating, preventing collisions after UI restart - detectExternalAgent() checks PID liveness before TCP probe and cleans up stale serve.json files, preventing ghost agents - OAuth credential loading in skill builder and runner now surfaces errors instead of silently falling through to a client with no auth
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
forge skills add, declaredegress_domainsare automatically merged intoforge.yamlallowlist and env vars are written to.env. Missing env vars are reported back to the UI for user input.FinishReason="stop"alongside tool calls. Add session recovery deduplication to prevent duplicate user messages on retry.__oauth__sentinel handling in Skill Builder provider detection and LLM stream setup.ghcr.io/initializ/forge.Changes
forge-skills/parser/parser.goExtractForgeReqsfor reuseforge-ui/types.goSkillSaveResult,SkillEnvEntry; updateSkillSaveFuncsignatureforge-cli/cmd/skill_env.goMergeEgressDomains,AppendEnvVars,CheckMissingEnv,ParseSkillRequirementsforge-cli/cmd/skill_env_test.goforge-ui/handlers_skill_builder.goSkillSaveResultforge-cli/cmd/ui.goforge-cli/cmd/skills.goforge skills addforge-ui/static/dist/app.jsforge-core/runtime/loop.goforge-core/runtime/loop_test.goDockerfile,.dockerignore.github/workflows/release.yamldocs/{runtime,skills,dashboard,deployment,commands}.mdTest plan
forge-skillstests passforge-uitests pass (updated mock for new return type)forge-cli/cmdtests pass (12 new utility tests)golangci-lintpasses with 0 issues across all modulesgofmtcleandocker build .)forge ui→ Skill Builder → save skill with egress domains → verifyforge.yamlupdatedforge skills add github→ verify egress domains added