Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
4.9 KiB
packages/ — Monorepo Packages
Generated: 2026-05-20
OVERVIEW
23 sibling packages across 4 roles. None of these are published as part of the main oh-my-opencode / oh-my-openagent npm dist (root package.json files only ships dist/, bin/, postinstall.mjs). They are sibling packages with their own publication / deployment targets.
ROLE MAP
| Role | Count | Packages |
|---|---|---|
| Platform binaries | 11 | One per (OS × arch × variant). Uniform layout: bin/ + package.json only. Selected at install time by bin/ shim + postinstall.mjs. |
| MCP packages | 2 | lsp-tools-mcp (git submodule), ast-grep-mcp |
| Core packages | 9 | utils, model-core, prompts-core, rules-engine (was rules-core), agents-md-core, ast-grep-core, comment-checker-core, hashline-core, boulder-state |
| Web | 1 | web |
PLATFORM BINARIES (11)
oh-my-opencode-darwin-arm64, oh-my-opencode-darwin-x64, oh-my-opencode-darwin-x64-baseline, oh-my-opencode-linux-arm64, oh-my-opencode-linux-arm64-musl, oh-my-opencode-linux-x64, oh-my-opencode-linux-x64-baseline, oh-my-opencode-linux-x64-musl, oh-my-opencode-linux-x64-musl-baseline, oh-my-opencode-windows-x64, oh-my-opencode-windows-x64-baseline.
Each contains only a bin/<binary> and a package.json. Built by script/build-binaries.ts via bun compile. Published by the publish-platform.yml workflow.
-baseline variants are pure x86_64 (no AVX2) for older CPUs. -musl variants link against musl libc for Alpine. Runtime selection happens in bin/ and postinstall.mjs.
MCP PACKAGES
| Package | Layout | Purpose |
|---|---|---|
lsp-tools-mcp/ |
Full standalone project (own .git submodule, .github/, CHANGELOG.md, LICENSE, src/, test/, biome.json, vitest.config.ts) |
Serves lsp_diagnostics, lsp_goto_definition, lsp_find_references, lsp_symbols, lsp_prepare_rename, lsp_rename, lsp_status tools via stdio MCP. Registered as tier-1 MCP lsp in src/mcp/. |
ast-grep-mcp/ |
Internal package (src/, dist/, tsconfig.json) |
Serves ast_grep_search + ast_grep_replace tools via stdio MCP. Registered as tier-1 MCP ast_grep. |
CORE PACKAGES
| Package | Layout | Purpose |
|---|---|---|
utils/ |
src/, tsconfig.json |
Shared utilities: deep-merge, snake-case, frontmatter, file-utils, etc. |
model-core/ |
src/, tsconfig.json |
Model resolution pipeline with ProviderCache dependency injection. |
prompts-core/ |
src/, prompts/, test/, tsconfig.json |
Harness-neutral markdown prompt loading, model-variant routing, and bundled mode prompts for search/analyze/team/hyperplan. |
rules-engine/ |
src/, tsconfig.json |
Rule discovery + matching engine (renamed from rules-core). |
agents-md-core/ |
src/, tsconfig.json |
AGENTS.md walk-up discovery and injection logic. |
ast-grep-core/ |
src/, tsconfig.json |
ast-grep types, pattern-hints, and runner core with injectable spawn. |
comment-checker-core/ |
src/, tsconfig.json |
apply-patch parser and binary runner with injectable spawn. |
hashline-core/ |
src/, tsconfig.json |
Hashline edit primitives and diff helpers shared by adapter shims. |
boulder-state/ |
src/, tsconfig.json |
Work tracking state machine with split storage. |
WEB
| Package | Sub-AGENTS.md | Purpose |
|---|---|---|
web/ |
yes (packages/web/AGENTS.md) | Marketing site. Next.js 15 + Cloudflare Workers via @opennextjs/cloudflare. Independent bun.lock + tsconfig.json. Only place in the repo where @/* path aliases are allowed. |
CONVENTIONS
- No new package without explicit need. Adding a sibling package complicates publish + CI. Justify the boundary first.
- Platform binaries are generated. Do NOT edit by hand. Modify
script/build-binaries.ts. lsp-tools-mcpis a git submodule. Initialize withgit submodule update --init --recursiveafter fresh clone.packages/web/is excluded from rootbun testviabunfig.toml. It has its ownweb-ci.ymlworkflow.- CI builds for non-platform packages run as part of the root
ci.yml. Platform binaries build only viapublish-platform.ymlwhen triggered bypublish.yml.
ANTI-PATTERNS
- Never publish a sibling package manually. Use the GitHub Actions workflows.
- Never copy code between packages by hand. Either share via a core package or accept the duplication and document it.
- Never modify
bin/<binary>inside a platform package — those are compiled artifacts.