* feat(cli): migrate packages/cli to Bun-first with full test suite
- Replace fs-extra with Bun.file/Bun.write/node:fs/promises across all 9 source files
- Fix --help fast-path so all 8 subcommands are visible
- Replace tsup/tsx/vitest with bun build/bun run/bun:test
- Replace __dirname with import.meta.dir; use JSON import assertion for version
- Fix hardcoded OAC_VERSION in add.ts; add hashesMatch import to status.ts
- Replace computeFileHash with Bun.file().bytes() in sha256.ts
- Rename checkNodeVersion → checkBunVersion; parallelise doctor checks
- Fix TypeScript void-inference errors in update.ts, list.ts, status.ts
by replacing .catch() with let/try-catch where result is used downstream
- Add ManifestError named error class; remove unsafe type casts
- Add 43 bun:test unit tests (sha256, manifest, installer, version) — 0 failures
* fix(cli): resolve critical bugs and standards violations found in review
Critical bug fixes:
- ide-detect.ts: replace Bun.file(dir).exists() with stat().isDirectory()
for all directory checks — Bun.file().exists() always returns false for
directories, breaking Cursor/Windsurf/OpenCode/Claude detection entirely
- bundled.ts: add registry.json exclusion anchor to findPackageRoot() to
prevent monorepo root from matching before the CLI package root
Standards cleanup (§4.1, §5.1, §6.1, §15.3, §21.1):
- status.ts: parallelise findModifiedFiles + detectIdes with Promise.all
- apply.ts: fix duplicate warn/limit messages; remove else after return in
reportWarnings; remove redundant mkdir before Bun.write
- version.ts: remove unnecessary (pkgJson as {version?:string}) cast
- manifest.ts: remove redundant mkdir before Bun.write; remove as unknown cast
- installer.ts: remove redundant mkdir calls before Bun.write throughout
- add.ts: add comment explaining why node:fs/promises rm is used
Tests (43 → 142, +99 new tests across 4 new files):
- ide-detect.test.ts: 26 tests covering all 4 IDEs, both claude indicators,
detectIdes parallel, isIdePresent — directly validates the directory fix
- bundled.test.ts: 27 tests for classifyBundledFile, findPackageRoot,
listBundledFiles, getBundledFilePath, bundledFileExists
- config.test.ts: 25 tests for readConfig/writeConfig round-trips,
createDefaultConfig, mergeConfig, isYoloMode, isAutoBackup
- installer-update.test.ts: 14 tests covering all 5 updateFiles decision
branches (install/update/skip/yolo/dry-run) plus isProjectRoot
- sha256.test.ts: +4 tests for empty file, large file, binary content
* fix(cli): fix P0 bugs — global flags, .git detection, package root resolution
- Remove duplicate --dry-run/--yolo/--verbose from parent program; Commander.js
global option stealing caused all safety flags to be silently dropped in every
subcommand action callback
- Fix isProjectRoot() to use stat() for .git detection; Bun.file().exists()
returns false for directories, breaking oac init in standard git repos
- Add OAC_PACKAGE_ROOT env var override to getPackageRoot() for dev/monorepo mode;
registry.json heuristic excluded the repo root causing oac init/add/update to
throw when run from source
- Fix build script: remove --banner flag that caused double shebang in dist/index.js
- Rewrite bin/oac.js to invoke bun instead of node (dist is bun-only target)
- Refactor installer.ts let accumulators to const using Promise.all + reduce
- Add MVP planning docs (00-MVP-PLAN.md, master synthesis, project breakdown)
* fix(install.sh): handle both singular and plural component type formats
The get_registry_key() function was always adding 's' to the type,
causing 'contexts' to become 'contextss' which doesn't exist in registry.json.
Now handles:
- Singular forms: context → contexts, agent → agents, skill → skills
- Plural forms: contexts → contexts (unchanged), agents → agents
- Config stays singular
- Fallback for any type ending in 's'
Fixes #257
|
||
|---|---|---|
| .. | ||
| agents | ||
| contributing | ||
| features | ||
| getting-started | ||
| github | ||
| guides | ||
| images | ||
| maintenance | ||
| model-providers/oss | ||
| planning | ||
| README.md | ||
OpenAgents Control Documentation
Welcome to the OpenAgents Control documentation! This directory contains all documentation organized by topic.
📚 Documentation Index
Getting Started
- Installation Guide - Complete installation guide with collision handling
- Collision Handling - Quick reference for install script collision strategies
Features
- System Builder - Build complete AI systems tailored to your domain
- Quick Start - Get started with the system builder
- Complete Guide - Detailed documentation and examples
- Agent System Blueprint - Architecture patterns and how to extend the system
Contributing
- Contributing Guide - How to contribute to the project
- Code of Conduct - Community guidelines
GitHub
- GitHub Settings - Repository settings checklist
🚀 Quick Links
For New Users
- Start with the main README in the repository root
- Follow the Installation Guide
- Use
opencode --agent OpenAgentto start building - Read the OpenAgent Guide to understand the workflow
For Contributors
- Read the Contributing Guide
- Review the Code of Conduct
- Check out good first issues
For Advanced Users
- Study the Agent System Blueprint
- Try the System Builder
- Create custom agents and commands
📖 Documentation Structure
docs/
├── README.md # This file
├── getting-started/
│ ├── installation.md # Installation guide
│ └── collision-handling.md # Collision handling reference
├── features/
│ ├── system-builder/
│ │ ├── README.md # System builder quick start
│ │ └── guide.md # System builder complete guide
│ └── agent-system-blueprint.md # Architecture patterns
├── contributing/
│ ├── CODE_OF_CONDUCT.md # Community guidelines
│ └── CONTRIBUTING.md # Contribution guide
└── github/
└── GITHUB_SETTINGS.md # Repository settings
🔍 Finding What You Need
I want to...
...install OpenAgents Control → Installation Guide
...understand collision handling → Collision Handling
...build a custom AI system → System Builder
...understand the architecture → Agent System Blueprint
...contribute to the project → Contributing Guide
...report a bug or request a feature → GitHub Issues
💡 Additional Resources
- Main README: ../README.md - Complete overview and quick start
- CHANGELOG: ../CHANGELOG.md - Version history and updates
- GitHub Repository: https://github.com/darrenhinde/OpenAgentsControl
- OpenCode CLI Docs: https://opencode.ai/docs
- Component Registry: ../registry.json
📌 Current Version
v0.6.0 (January 28, 2026)
Latest updates:
- ExternalScout subagent for fetching live library documentation (18+ libraries)
- Enhanced ContextScout with multi-model optimization
- Complete command and agent documentation
- Simplified agent architecture (OpenAgent + OpenCoder)
🤝 Community
- Issues: Report bugs or request features
- Discussions: Ask questions and share ideas
- Pull Requests: Contribute code
📝 License
This project is licensed under the MIT License. See LICENSE for details.
Need help? Check the Contributing Guide or open an issue.