OpenAgent requires text-based approval before executing write/edit tools.
Updated tests to use multi-turn prompts:
1. First prompt: Request the task
2. Second prompt: 'Yes, proceed' to approve
Also added TESTING_CONFIDENCE.md documenting current test reliability:
- Opencoder: HIGH confidence (4/4 tests passing)
- OpenAgent: MEDIUM confidence (multi-turn works, context loading needs verification)
- Create evals/test_tmp/ directory for test-created files
- Update all tests to write files to test_tmp/ instead of project root
- Add cleanup logic to test runner (before and after tests)
- Add comprehensive HOW_TESTS_WORK.md documentation
- Remove src/ directory that was accidentally created by tests
This prevents tests from polluting the project directory with test artifacts.
- Create separate test folder for opencoder agent with 4 tests
- Update openagent tests to use multi-turn prompts for approval workflow
- Fix test runner to properly handle expectedViolations with shouldViolate: true
- Add mustUseAnyOf behavior expectation for flexible tool matching
- Add unit tests for timeline-builder and context-loading-evaluator
- Update documentation to reflect agent-specific test structure
- Remove outdated AGENT_DETECTION_STATUS.md
Opencoder tests: 4/4 passing
Key insight: openagent uses text-based approval, opencoder uses tool permissions only
- Replace planned framework with working SDK implementation using @opencode-ai/sdk
- Add 6 YAML test cases across developer/business/edge-case categories (100% passing)
- Implement 4 evaluators for openagent.md rule compliance (approval-gate, context-loading, delegation, tool-usage)
- Add real-time event streaming and session recording
- Configure opencode/grok-code-fast as default model (zero API costs)
- Add comprehensive documentation (SDK_EVAL_README.md, test-design-guide.md, TEST_SCENARIOS.md)
- Support v2 schema with behavior-based expectations instead of message counts
- Enable model-agnostic test design that works across Claude, GPT-4, and Grok
- Add subagent invocation syntax documentation to openagent.md
- Add explicit task() invocation syntax to codebase-agent with examples
- Include when-to-use guidance for each subagent (4+ files, simple tasks, etc.)
- Add comprehensive OpenCode context reference cheatsheet covering:
- File references with @ symbol (immediate vs lazy loading)
- Agent invocation patterns (task tool vs @ syntax)
- Shell command execution with backtick syntax
- Best practices and anti-patterns
- Complete real-world examples and templates
This improves AI agent reliability in delegating to subagents by providing
clear, explicit invocation patterns following research-backed progressive
disclosure principles.
- Update all subagent references to use full paths (subagents/core/ and subagents/code/)
- Remove @ prefix to fix compatibility issues with some models
- Replace non-existent 'write-test' agent with 'subagents/code/tester'
- Fixes issue reported in GitHub issue
- Add central context index at .opencode/context/index.md (120 tokens)
- Add compact metadata to all 9 context files (10 tokens each)
- Update OpenAgent prompt to reference index system (73% token reduction)
- Update context-guide.md with index usage documentation
Benefits:
- Single index file for context discovery
- Human-readable and machine-parseable format
- Clear dependency tracking (tests→code, review→code+patterns, etc.)
- Priority levels (critical/high/medium) for all contexts
- Reduced prompt overhead from ~200 to ~53 tokens
Context files updated:
- standards/code.md, docs.md, tests.md, patterns.md, analysis.md
- workflows/delegation.md, review.md, task-breakdown.md, sessions.md
This implements a scalable, maintainable context system with
efficient token usage and clear navigation structure.
Add support for custom global installation paths with automatic context
reference transformation. This enables users to install to any location
while maintaining working context references.
Changes:
- Add universal path transformation for ANY global installation path
(not just ~/.config/opencode)
- Implement automatic cleanup trap for temp files on exit/crash/interrupt
- Add early validation for --install-dir argument with clear error messages
- Add developer documentation for context reference convention
Technical Details:
- Path transformation detects local vs global by checking if path ends
in .opencode (local) or not (global)
- Transformation applies to ALL file types during installation
- sed transforms both @ references and shell command paths
- Cleanup trap handles EXIT, INT, and TERM signals
Testing:
- 31 unit and integration tests (100% pass rate)
- All README installation scenarios verified
- Edge cases tested and handled
- Cross-platform compatible (macOS, Linux, Windows Git Bash)
Documentation:
- Added dev/docs/context-reference-convention.md explaining the required
@.opencode/context/ format and why it's necessary
- Includes examples, validation instructions, and test results
Breaking changes: None
New capabilities: Custom global path support
- Add research-backed-prompt-design.md with Stanford/Anthropic patterns
- Add openagent.md documentation with workflow and delegation details
- Add developer guides for slash commands and context system
- Document position sensitivity, nesting limits, and instruction ratios
- Include examples and best practices for prompt optimization
- Add get_install_path() helper to convert registry paths to installation paths
- Fix collision detection to check files in custom install directory
- Fix file installation to use custom directory instead of hardcoded .opencode
- Fix env.example path check in post-install message
- Tested with .test-install-dir and .openffff directories - all files now install to correct location
- Position OpenAgent as recommended default for new users
- Add detailed stage diagrams for all 6 workflow stages
- Replace bright purple colors with softer slate blue for better accessibility
- Update all documentation to show OpenAgent as universal coordinator
- Keep codebase-agent as specialized development alternative
- Fix set -e bug: Change ((variable++)) to variable=$((variable + 1)) to prevent script exit on bash 5.2.21 (Ubuntu 24.04)
- Fix collision handling UX: Display menu options correctly by redirecting to stderr
- Add custom installation directory support with --install-dir flag and OPENCODE_INSTALL_DIR env var
- Add interactive location selection menu (Local/Global/Custom)
- Implement cross-platform path handling (Linux/macOS/Windows) with tilde expansion, backslash conversion, and validation
- Enhance help documentation with comprehensive examples and platform support information
Fixes installation failures on modern Linux systems and enables flexible installation to any directory including ~/.config/opencode
Major Changes:
- Rename repository from opencode-agents to OpenAgents
- Remove all hardcoded model specifications (now model-agnostic)
- Fix documentation: profile names, component counts, add Business profile
- Add future plans note for other AI coding tools
Repository Rename:
- Update all URLs to github.com/darrenhinde/OpenAgents
- Update git remote, README, install scripts, documentation
- 15 files updated with new repository name
Model-Agnostic Framework:
- Remove model specifications from 6 agent files
- Framework now works with any AI provider (Claude, GPT, Gemini, local models)
- Users control model selection via OpenCode CLI settings
Documentation Fixes:
- Correct profile name: Core → Essential
- Add missing Business profile documentation
- Fix component counts: Developer (19), Advanced (32)
- Document all 5 profiles with accurate descriptions
Future Plans:
- Add note about support for other AI tools (Cursor, Claude Code, etc.)
- Clear focus on stabilizing OpenCode integration first
This makes OpenAgents a truly universal, model-agnostic framework
accessible to all users regardless of their AI provider preference.
Problem:
- When running 'curl ... | bash -s core' the screen would clear
- This made it appear like nothing was happening after preview
- Users couldn't see the installation progress
Solution:
- Only call 'clear' in interactive mode
- Skip clear when NON_INTERACTIVE=true
- Allows users to see full output when piped from curl
Now users can see:
- Dependency checks
- Registry fetch
- Installation preview
- 'Installing automatically' message
- Full installation progress
- Completion message
This makes the installation process transparent and debuggable.
Problem:
- Running 'curl ... | bash -s core' showed preview and waited for input
- User had to press Y to proceed even though profile was specified
- Defeats the purpose of one-command installation
Solution:
- Add NON_INTERACTIVE flag to track command-line profile usage
- Set NON_INTERACTIVE=true when profile argument provided
- Skip confirmation prompt when NON_INTERACTIVE=true
- Show 'Installing automatically (profile specified)...' message
Behavior:
Before:
curl ... | bash -s core
→ Shows preview, waits for Y/n input
After:
curl ... | bash -s core
→ Shows preview, installs automatically
Interactive mode still works:
bash install.sh
→ Shows menu, asks for confirmation (as expected)
This makes profile-based installation truly one-command with no interaction needed.
Problem:
- Running 'curl ... | bash' without arguments showed interactive menu
- But stdin was the curl stream, not terminal
- Script couldn't read user input and would exit silently
- Confusing user experience
Solution:
- Add check_interactive_mode() to detect if stdin is a terminal
- If running in pipe without arguments, show helpful error message
- Provide clear instructions for both interactive and profile-based install
- Update README to clarify installation methods
Changes:
- Add [ ! -t 0 ] check to detect non-terminal stdin
- Show helpful error with examples when piped without profile
- Update README to recommend profile-based install (fastest)
- Clarify that interactive mode requires downloading first
User Experience:
Before: Silent exit or confusing behavior
After: Clear error message with exact commands to run
Examples shown to user:
- Download first: curl ... -o install.sh && bash install.sh
- Or use profile: curl ... | bash -s core
This fixes the issue reported when running on another computer.
New Features:
- Add system-builder agent for generating custom AI systems
- Add 5 new subagents for system building:
- domain-analyzer: Analyzes domains and recommends architectures
- agent-generator: Generates XML-optimized agent files
- context-organizer: Organizes modular context files
- workflow-designer: Designs workflow definitions
- command-creator: Creates custom slash commands
- Add build-context-system command for interactive system generation
- Add system builder templates and guide
Project Reorganization:
- Move GITHUB_SETTINGS.md to docs/github/
- Move AGENT-SYSTEM-BLUEPRINT.md to docs/features/
- Move CODE_OF_CONDUCT.md to docs/contributing/
- Move CONTRIBUTING.md to docs/contributing/
- Consolidate documentation in docs/ directory
Registry Updates:
- Add system-builder agent to registry
- Add 5 new subagents to registry
- Add build-context-system command to registry
- Update advanced profile to include system builder components
This enables users to generate complete custom AI systems tailored to their domain through an interactive interview process.
- Replace complex auto-scanning with simple validation script
- Prevents registry from being emptied by buggy scan functions
- Auto-scanning feature can be added later after more testing
- Registry now stays intact and works correctly
- Recreate registry.json with all component definitions
- Fix bash 3.2 compatibility (replace ${var^} with awk)
- Registry was accidentally emptied by registration script
- Make codebase-agent work with TypeScript, Python, Go, Rust, and more
- Add clear runtime/type-check/lint command examples for each language
- Update build-agent to support all languages (tsc, mypy, go build, cargo check)
- Make essential-patterns universal by removing language-specific code examples
- Update README to mention multi-language support
- Remove auto-detection overhead - agents naturally adapt based on project files