OpenWriterControle/docs
Darren Hinde d2a633d7dc
feat(cli): Bun-first CLI migration with 7 commands and comprehensive test suite (#259)
* 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
2026-03-24 21:54:03 +00:00
..
agents docs: fix agent name casing in documentation (#117) 2026-01-25 03:40:21 +00:00
contributing refactor: Rename repository to OpenAgents Control (#100) 2026-01-18 09:31:35 +00:00
features docs: fix agent name casing in documentation (#117) 2026-01-25 03:40:21 +00:00
getting-started fix: correct context path defaults and add preview gates (Issues #175, #177) (#183) 2026-02-06 01:01:25 +00:00
github refactor: Rename repository to OpenAgents Control (#100) 2026-01-18 09:31:35 +00:00
guides ✨ feat: introduce OpenAgent universal agent with session management 2025-11-18 18:45:42 +00:00
images feat: add ExternalScout and optimize ContextScout with research-backed patterns (#128) 2026-01-29 11:16:12 +00:00
maintenance fix: resolve installer failures and add comprehensive validation (#189) 2026-02-06 17:07:42 +00:00
model-providers/oss Rename to OpenAgents, remove model specs, and update documentation 2025-11-18 22:37:41 +00:00
planning feat(cli): Bun-first CLI migration with 7 commands and comprehensive test suite (#259) 2026-03-24 21:54:03 +00:00
README.md feat: Context path configuration and documentation reorganization (#143) 2026-01-30 17:18:05 +00:00

OpenAgents Control Documentation

Welcome to the OpenAgents Control documentation! This directory contains all documentation organized by topic.

📚 Documentation Index

Getting Started

Features

Contributing

GitHub

For New Users

For Contributors

For Advanced Users

📖 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

📌 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

📝 License

This project is licensed under the MIT License. See LICENSE for details.


Need help? Check the Contributing Guide or open an issue.