Skip to content

Feature/setup separate concerns#67

Open
Christiantyemele wants to merge 50 commits into
mainfrom
feature/setup-separate-concerns
Open

Feature/setup separate concerns#67
Christiantyemele wants to merge 50 commits into
mainfrom
feature/setup-separate-concerns

Conversation

@Christiantyemele

Copy link
Copy Markdown
Collaborator

No description provided.

AgentFlow and others added 30 commits May 3, 2026 11:01
Split the API key setup into two separate concerns:
- GitHub authentication step for agent tokens (NEXUS, FORGE, etc.)
- LLM provider step for API keys (Anthropic, OpenAI, Fireworks, etc.)

Added visible cursor indicator in input widgets for better UX.
- Calculate visible fields based on available height
- Auto-scroll to keep focused field visible
- Add Up/Down key navigation
- Show field counter in help text
- Dark background (10,10,15) with neon accent colors
- Cyan (0,255,170) for focused borders and success
- Magenta (180,100,255) for LLM provider step
- Glowing border effect when fields are focused
- Pipe cursor (│) instead of block cursor
- Bullet mask (•) for password fields
- Cleaner headers with title + subtitle layout
- Removed cluttered borders from select list
- Sleek navigation hints in footer
- New centered ASCII logo with box drawing characters
- Tagline embedded in logo: 'Autonomous AI Orchestration'
- Cleaner version display in footer
- Minimal, professional CLI tool aesthetic
- Remove complex ASCII art that doesn't render well
- Clean centered 'OPENFLOWS' title with tagline
- Proper vertical centering with percentages
- Version and prompt in footer
- Rename cargo package from agent-team to openflows
- Add Makefile for unified build/release workflow
- Add .cargo/config.toml for cross-compilation
- Add .dockerignore for clean Docker builds
- Add Dockerfile with multi-stage, non-root user
- Add .github/workflows/release.yml for automated releases
- Add npm package (packaging/npm/) with postinstall binary download
- Add Homebrew formula (packaging/homebrew/openflows.rb)
- Add PACKAGING.md with full distribution docs
- Rewrite scripts/install.sh with OpenFlows branding
- Update README with 6 installation methods
- Update CONTRIBUTING.md with renamed package
… and tokens

The TUI setup wizard now properly collects per-agent configuration including:
- Number of instances per agent (user-selectable via arrow keys)
- Model backend selection from available providers
- Per-agent GitHub token environment variables
- Writes configured agents to registry.json instead of hardcoded defaults
- Single-screen table layout showing all agents at once
- Tab cycles through fields: active toggle, instances, model backend
- Space toggles agent active/on-off status
- Left/Right arrows adjust instance count (1-10)
- Enter on model field opens model picker
- Shift+Tab or BackTab to finish and continue
…artifacts to ~/.agentflow

- Nexus agent instances are now hardcoded to 1 with visual 'locked' indicator
- GitHub PATs from TUI now properly written to github_token_env in registry.json
- Workspace directories now always anchored to ~/.agentflow/workspaces (non-editable)
- All default agents now have proper github_token_env values set
- Correct package name to @the-agenticflow/openflows
- Add detailed npm global install/update/uninstall instructions
- Add npx usage examples for running without installation
- Add package.json scripts integration example
- Add programmatic Node.js API example
- Clarify binary auto-download during postinstall
- Reorder steps: provider selection before agent config
- Filter model list based on selected provider
- Add 'Edit existing values' option to modify configs
- Load agents from registry.json in existing config detection

Fixes issue where model backend was selected before provider,
and adds flexibility for users to edit existing configurations.
- Set github_token_env to None for lore agent (inactive by default)
- Prevents system from trying to read non-existent env var
- write_registry_file already properly handles inactive agents in custom config path

Fixes issue where inactive agents with github_token_env set would cause
env var lookup failures even though the agent is not active.
Documents how MIT license and assets (orchestration/, README.md) flow through:
- GitHub Releases (tarballs with binaries + assets)
- npm package (@the-agenticflow/openflows with binary downloader)
- Docker images (ghcr.io with embedded assets)
- crates.io (library crates with MIT metadata)

Includes verification steps, troubleshooting, and distribution matrix.
- Add better GitHub API error handling with timeout
- Fall back to v0.1.3 if GitHub API fails
- Use package-local .tmp directory instead of /tmp to avoid permission issues with sudo
- Add HTTP status code checking for API responses
- Validate tag_name exists in response before using
- Clean up temp directory after extraction
- Add 'files' field to package.json for cleaner packaging
- Update version to 0.1.3

Fixes EACCES permission denied error when installing with sudo
Fixes 'undefined' version in tarball filename when API fails
AgentFlow added 20 commits May 7, 2026 22:31
Documents:
- Installation methods (npm install -g, npx)
- What gets downloaded and installed
- Available commands
- Troubleshooting for common issues
- Publishing process for maintainers
- Platform detection and fallback logic
- Add intelligent openflows.js wrapper that auto-detects config mode
- Auto-install mcp-proxy during npm postinstall
- Add pre-flight checks in doctor for duplicate keys and invalid tokens
- Validate GitHub token formats (detects Firebase/OpenAI keys misused as GitHub PATs)
- Include anthropic-proxy binary in releases for gateway users
- Add .env.example for npm package users
- Enhance doctor with mcp-proxy check and API key validation
- Test GitHub/Fireworks/Anthropic API credentials during doctor run
Users need to know about the doctor command to validate their setup
before running the main orchestration.
The npm package was trying to install 'mcp-proxy' as an npm dependency,
but the correct mcp-proxy is a Python tool from PyPI (sparfenyuk/mcp-proxy)
that bridges stdio to HTTP MCP servers.

Changes:
- Updated postinstall script to install mcp-proxy via uv/pipx/pip3
- Fixed Rust code to use correct mcp-proxy command format with
  Streamable HTTP transport for GitHub Copilot MCP endpoint
- Updated doctor check for mcp-proxy installation
- Removed incorrect npm mcp-proxy dependency
- Updated README with correct installation instructions

Fixes the 'Failed to spawn hosted MCP npx bridge' error on fresh installs.
- Binary rebuilt with correct --transport streamablehttp --headers arguments
- Fixes 'unrecognized arguments: --auth --protocol' error with mcp-proxy 0.11.0+
- Updated fallback version in install.js to v0.1.6
…rbosity

- Add FIREWORKS_API_FORMAT env var for switching between Anthropic/OpenAI compatibility
- Default to Anthropic format for Claude CLI compatibility
- Update setup wizard to let users choose API format when selecting Fireworks
- Reduce store operation logging from DEBUG to TRACE
- Update default RUST_LOG to info (was enabling debug for specific modules)
- Inject Fireworks Anthropic endpoint for CLI agents (FORGE/SENTINEL)
- Add check_forge_api_error() to detect credit/rate-limit errors
- Add has_meaningful_worklog() to check for actual progress
- Stop respawn loop when API errors detected (insufficient credits, etc.)
- Write ERROR_FEEDBACK.md with actionable guidance for API issues
- Return Blocked outcome instead of infinite respawn

This prevents the issue where FORGE would infinitely respawn when
the API has insufficient credits or other recoverable errors.
- Fireworks doesn't have a native Anthropic endpoint
- Claude CLI agents (FORGE, SENTINEL, etc.) require proxy for Fireworks
- Internal FireworksClient uses OpenAI format directly (for Nexus)
- Auto-detect proxy for Claude CLI when FIREWORKS_API_KEY set
- Remove format selector from TUI (Fireworks only supports OpenAI)
- Fix model names in setup (remove incorrect fireworks/ prefix)
- Update npm wrapper to auto-start proxy for Fireworks users
- Update .env.example to recommend Anthropic for direct mode
- Fix proxy binary path detection (anthropic-proxy vs anthropic-proxy-bin)
- Add anthropic-proxy to binary rename list in install script
- Ensure proxy is executable even if not renamed
- Add debug logging for proxy configuration
- Pass GATEWAY_URL, GATEWAY_API_KEY, and MODEL_MAP to FORGE process
- Log when proxy environment is being injected
- Log ProcessManager initialization with proxy settings
- When Fireworks AI is selected, setup writes complete .env config:
  - FIREWORKS_API_KEY
  - PROXY_URL, PROXY_API_KEY (for Claude CLI agents)
  - GATEWAY_URL, GATEWAY_API_KEY (Fireworks gateway)
  - MODEL_MAP (Anthropic -> Fireworks model mapping)
  - PORT (proxy port)
- Registry.json uses Fireworks models when Fireworks is selected
- Organized .env file with clear sections
- npm wrapper loads .env before checking API config
- Add PROXY_TARGET_MODEL field to TUI proxy config step (always shown for Fireworks)
- Update anthropic-proxy to support PROXY_TARGET_MODEL with ANSI stripping and Claude detection
- Update openflows.js to use PROXY_TARGET_MODEL instead of hardcoded MODEL_MAP
- Document Fireworks AI setup flow in both READMEs
- Document npm and cargo installation flows with what-each-does explanations
- Update .env.example with PROXY_TARGET_MODEL variable
- Bump npm package to 0.1.15
- Add 'model' field to PairConfig to store model override from registry
- Add 'with_model()' builder method to PairConfig
- Update ForgePairNode to read PROXY_URL from environment and model_backend from registry
- Update ForgeSentinelPair::new() to use ProcessManager::with_model() when model is set
- Improve error detection for model access issues including ANSI escape codes in model names
- Bump npm package version to 0.1.21

This fixes the issue where FORGE was connecting directly to Anthropic API
instead of using the proxy configured by openflows, causing 'credit balance is too low'
errors when the user had a valid Fireworks API key.
Claude Code validates models by calling GET /v1/models. Without this
endpoint, the proxy returned 404, causing Claude Code to reject the
model and exit instantly with 'There's an issue with the selected model'.

This fix returns a list of Claude model names so Claude Code's
validation passes, allowing the request to proceed to /v1/messages.
…anager

Pass model name through ProcessManager to Claude CLI via --model flag.
The proxy will map the model alias to the target backend model.
This function is intentionally kept for future use but is currently unused.
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.

1 participant