Commit Graph

7013 Commits

Author SHA1 Message Date
YeonGyu-Kim 6f9dfb080d chore(omo-claude): re-sync vendored lsp with upstream lazy-mcp backend
sync-components pulled the upstream codex-lsp lazy-start MCP backend (lazy-*
modules + cli.ts) into the vendored lsp component. Rebuilds + F3 cache boot verified.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 13:50:17 +09:00
YeonGyu-Kim a548707699 chore(omo-claude): add omo-claude workspace to bun.lock
Keeps package.json workspaces and bun.lock consistent so CI bun install
--frozen-lockfile resolves @oh-my-opencode/omo-claude.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 13:40:11 +09:00
YeonGyu-Kim 5b35673f0e chore(omo-claude): wire omo-claude into root workspace, files, bin, scripts
Add packages/omo-claude to workspaces + files; lazyclaudecode bin alias;
typecheck:packages covers omo-claude; new test:claude script. test:codex stays
green (no regression), test:claude green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 13:40:11 +09:00
YeonGyu-Kim b68b6be2ff feat(omo-claude): aggregate 14 skills + author root hooks.json and plugin test
sync-skills aggregates 4 component skills + 10 shared; 6 harness-tool skills get
the Claude Code Harness Tool Compatibility block; start-work's embedded Codex
section is demoted. Root hooks.json uses ${CLAUDE_PLUGIN_ROOT}, widens PostToolUse
to Write|Edit|MultiEdit, and registers no create_goal PreToolUse (D4). Plugin
aggregate test pins hooks/skills/mcp shape.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 13:40:11 +09:00
YeonGyu-Kim 71e4e2a6d0 feat(omo-claude): port ultragoal to per-session file-based goals
Goal content under ./.omo/ultragoal/sessions/claude-<id>/ keyed by Claude Code
session_id (claude: prefix); UltragoalScope struct threaded; plan version 2 +
index.json registry with read-only v1 forward-migration (never deletes v1);
create_goal/get_goal/update_goal dependency dropped (file/steering-based); the
PreToolUse create_goal budget guard kept compiled+unit-tested but its hooks.json
registration removed (inert in CC). 26 tests pass. ultragoal removed from
sync-components HANDLED set — it is a hand-fork, not patch-synced.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 13:40:11 +09:00
YeonGyu-Kim 6123fd8a43 ci: add claudecode-compatibility job + gated publish-claude workflow
ci.yml claudecode-compatibility (3-OS, runs test:claude) wired into build.needs.
publish-claude.yml: workflow_dispatch-only, identity guard, missing-secret hard-fail
(off by default), syncs to lazyclaudecode, bumps 3 omo-claude version locations.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 13:40:11 +09:00
YeonGyu-Kim f5a2fa1cf6 feat(omo-claude): add 6 CC subagent definitions
reviewer/metis/explorer/librarian/planner/momus converted TOML->MD; Codex
spawn_agent re-described as the Task tool; read-only agents lack Write/Task.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 13:40:11 +09:00
YeonGyu-Kim c284d8cf6b feat(omo-claude): vendor start-work-continuation with claude session prefix
codex:->claude: session prefix; model/turn_id optional in Stop validator. QA: no-op without boulder.json, no crash.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 13:40:11 +09:00
YeonGyu-Kim 743671b43f feat(omo-claude): vendor ultrawork component
Keyword detector injects directive.md on ulw/ultrawork; silent otherwise. QA: directive injects, no crash.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 13:40:11 +09:00
YeonGyu-Kim 3272037c3e feat(omo-claude): vendor rules component with CC patches
model/turn_id optional (SessionStart keeps model), CLAUDE_PLUGIN_ROOT/DATA env
fallback, .claude-plugin manifest path, PostToolUse matcher Write|Edit|MultiEdit,
OMO_CLAUDE_RULES_* env aliases, bundled-rules vendored. Injects w/o turn_id (QA).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 13:40:11 +09:00
YeonGyu-Kim e20c51c77f feat(omo-claude): re-vendor MCP servers self-contained with CLAUDE_PLUGIN_ROOT
ast_grep + lsp servers vendored under plugin/mcp via sync-mcp.mjs; .mcp.json uses
${CLAUDE_PLUGIN_ROOT} (no ../). Both boot from a node_modules-free tree (verified
JSON-RPC initialize handshakes). lsp hook bundled to inline lsp-tools-mcp. mcp/
dist is gitignored (regenerated by build).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 13:40:11 +09:00
YeonGyu-Kim 186fade2e5 feat(omo-claude): vendor lsp component
Builds to dist/cli.js; hook bundled self-contained by sync-mcp. dist/ ignored.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 13:40:11 +09:00
YeonGyu-Kim b61010e942 feat(omo-claude): vendor lsp scripts, directive.md, bundled-rules in sync-components
Per-component COPY_DIRS_BY_COMPONENT (lsp:scripts, rules:bundled-rules) and
directive.md in COPY_FILES — ultrawork/start-work-continuation read directive.md
from the component root at runtime; rules needs its bundled-rules.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 13:40:10 +09:00
YeonGyu-Kim 69bca167fa feat(omo-claude): vendor comment-checker component with CC patches
Vendored from omo-codex via sync-components: model/turn_id optional in the
PostToolUse validator (permission_mode kept), CLAUDE_PLUGIN_ROOT hook path.
Builds clean; runs without crash on a CC-shaped PostToolUse payload (no turn_id).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 13:40:10 +09:00
YeonGyu-Kim 64d5c77a27 fix(omo-claude): copy base tsconfig.json + ignore build artifacts in sync-components
tsconfig.build.json extends ./tsconfig.json (types:[node], strict); without the
base, vendored components lost @types/node and strict config. Also exclude
dist/ and node_modules/ from the --check comparison (they are build artifacts,
not synced source).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 13:40:10 +09:00
YeonGyu-Kim 7590c7df04 feat(script): add lazyclaudecode marketplace syncer with CC paths and filter
Forks sync-lazycodex-marketplace: reads .claude-plugin/plugin.json, writes
.claude-plugin/marketplace.json + plugins/omo, asserts sisyphuslabs/omo
identity, excludes src/test/tsconfig*/.omo from the shipped tree. RED->GREEN
test (6 pass).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 13:40:10 +09:00
YeonGyu-Kim 5d72506836 feat(omo-claude): add CC sync-skills script
Mirrors the codex sync-skills structure; injects a Claude Code Harness Tool
Compatibility block (maps task()/call_omo_agent()/spawn_agent()/background_output/
team_* -> the Task + Skill tools), extends the detection regex to Codex-native
verbs, and demotes any embedded Codex compat heading to (superseded).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 13:40:10 +09:00
YeonGyu-Kim 024788c823 feat(omo-claude): fork telemetry with distinct identity and derived literals
omo_claude_daily_active event + omo-claude: distinct-id salt; PostHog key/host/
LEGACY_PARENT_PACKAGE kept identical (shared project). platform + tmp-fallback
derived from constants (no literals). 4-flag opt-out incl inherited OMO_*.
cross-package-equivalence + cross-product distinctness tests (RED->GREEN).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 13:40:10 +09:00
YeonGyu-Kim c39d16c378 feat(omo-claude): copy telemetry component sync script
Product-agnostic sync-telemetry-component.mjs (verbatim from omo-codex) +
test; generates the telemetry component's atomic-write/data-path/env-flags/
posthog-activity-state from src/telemetry. product-identity is authored
per-package, not synced.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 13:40:10 +09:00
YeonGyu-Kim 234429737a feat(omo-claude): add sync-components vendoring script with --check drift gate
Copies 6 omo-codex components (rules, comment-checker, lsp, ultrawork,
ultragoal, start-work-continuation) into the CC plugin tree and applies a
declarative patch manifest: relax model/turn_id validators, CLAUDE_PLUGIN_ROOT/
DATA env fallbacks, .codex-plugin->.claude-plugin, rules matcher widened to
Write|Edit|MultiEdit, start-work-continuation claude: session prefix. ultragoal
copied verbatim (deep refactor is a later task). --check detects vendor drift.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 13:40:10 +09:00
YeonGyu-Kim 21a80de3bc feat(omo-claude): add marketplace manifest with CC owner schema
Marketplace 'sisyphuslabs' / plugin 'omo' reused verbatim; CC native
{name,owner,plugins[]} schema with explicit source ./plugins/omo (no
metadata.pluginRoot, no Codex interface block).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 13:40:10 +09:00
YeonGyu-Kim 53a1c633a5 feat(omo-claude): add CC plugin manifest
Distinct omo-claude branding (brandColor #D97757, Claude Code copy), same
plugin name 'omo'. Declares skills/hooks/mcpServers paths; homepage/repository
point at code-yeongyu/lazyclaudecode.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 13:40:10 +09:00
YeonGyu-Kim 9ecbbd443f feat(omo-claude): scaffold package skeleton
Mirror packages/omo-codex layout for the Claude Code port: package.json
(@oh-my-opencode/omo-claude), tsconfig, index.d.ts, src/ + src/telemetry
stubs, and the plugin/ tree (.claude-plugin, components, agents, hooks,
scripts, skills, test, mcp) with a CC-worded plugin README + placeholder
package.json.

Plan: .omo/plans/omo-claude-plugin-port.md

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 13:40:10 +09:00
YeonGyu-Kim 26ec219bcd test(codex-lsp): cover lazy metadata fallback 2026-05-29 13:18:46 +09:00
YeonGyu-Kim 8896db9806 fix(codex): install lsp from local cache 2026-05-29 12:41:54 +09:00
YeonGyu-Kim 8c6e8e4986 refactor(omo-codex): rename ultragoal component to ulw-loop
Fully rename the ultragoal component to ulw-loop so the identifier
matches the ulw-loop skill it powers. Renames the component directory,
nested skill, TS identifiers (UlwLoop / ULW_LOOP_* / ulwLoop*), the
omo ulw-loop CLI subcommand, the .omo/ulw-loop state directory, the
OMO_ULW_LOOP_STEER directive token, and the @code-yeongyu/codex-ulw-loop
package. Also threads Atlas-style right-sized parallel worker delegation
and a Prometheus-style QA + maximum-parallelism plan into the ulw-loop
skill, with a critical post-subagent QA gate.

Updates aggregate wiring (plugin package components, hooks.json,
sync-skills), the install-codex agent-link test fixture, and user docs.
2026-05-29 12:38:22 +09:00
YeonGyu-Kim 0edf087117 ci(lazycodex): gate publish and install 2026-05-29 12:18:42 +09:00
YeonGyu-Kim 4bf9095456 feat(codex-lsp): lazy-start mcp backend 2026-05-29 12:18:24 +09:00
YeonGyu-Kim 5030a116f3 feat(omo-codex): rework skill set around ulw-loop and planner agents
Rename ultragoal skill to ulw-loop with a CLI bootstrap fallback and
openai.yaml hint metadata, while keeping ultragoal as a discoverable
alias. Drop the metis and momus skills in favor of bundled ultrawork
planner agents and rewrite the planing-prometheustic skill. Update
aggregate and sync-skills tests to match.
2026-05-29 11:19:00 +09:00
YeonGyu-Kim a49acecc3a feat(omo-codex): link bundled component agents into codex home
Discover component .toml agent files and symlink (or copy on Windows)
them into the Codex agents dir during install, recording an installed
agent manifest and wiring agent config_file entries into config.toml.
Add CodexAgentConfig type and support local marketplace source.
2026-05-29 11:18:01 +09:00
YeonGyu-Kim bb8ef30bbe feat(omo-codex): add post-compact rule budget to codex hook
Trim rule and result char budgets after compaction via new
postCompactMaxRuleChars/postCompactMaxResultChars config, applied
through withPostCompactBudget. Extract codex-hook helpers into
dynamic-target-fingerprints, hook-output, path-utils,
rules-engine-factory, and transcript-rule-filter modules.
2026-05-29 11:17:24 +09:00
YeonGyu-Kim 58871c4301 feat(shared-skills): move init-deep to shared skill 2026-05-28 17:03:33 +09:00
YeonGyu-Kim 5662144283 feat(omo-codex): add start-work skill markdown
Ports the OpenCode /start-work flow onto Codex as a discoverable skill.
The skill drives plan selection, Boulder state with codex:<session_id>
prefixed ids, worktree binding, parallel spawn_agent sub-tasks with
6-section prompts, 4-channel Manual-QA evidence (HTTP / tmux / browser /
computer use), ledger append at .omo/start-work/ledger.jsonl, and a
4-phase verification gate. Pairs with the start-work-continuation Codex
Stop / SubagentStop hook component that re-injects continuation while
boulder.json shows incomplete work for the active codex: session.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-28 17:03:33 +09:00
YeonGyu-Kim 67930c1598 chore(omo-codex): wire start-work continuation hooks
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-28 17:03:33 +09:00
YeonGyu-Kim ced472dedf feat(omo-codex): add start-work continuation component
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-28 17:03:33 +09:00
YeonGyu-Kim 38265c5993 fix(omo-codex): use sisyphuslabs plugin identity 2026-05-28 15:45:21 +09:00
YeonGyu-Kim 1c5e251a62 feat(boulder-state): add platform-prefixed session ids
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-28 15:45:13 +09:00
YeonGyu-Kim 615ed40ba3 fix(omo-codex): reuse shared lsp mcp 2026-05-28 15:30:24 +09:00
YeonGyu-Kim 4f75a56ce5 feat(omo-codex): embed ast-grep MCP for Codex 2026-05-28 15:26:18 +09:00
YeonGyu-Kim 091550b94d refactor(omo-codex): port ultrawork hook to typescript 2026-05-28 15:07:51 +09:00
YeonGyu-Kim 0f0c6d0850 test(package): harden layout exclusion fixtures 2026-05-28 15:04:59 +09:00
YeonGyu-Kim ae757005a3 refactor(omo-codex): move metis/momus from skills to agent TOMLs, rewrite prometheustic
metis/momus are Codex subagents, not skills. Move them to
components/ultrawork/agents/ as TOML agent role files:

- metis.toml: gpt-5.5 high, pre-planning analyst that detects
  contradictions, ambiguity, missing constraints, and execution risks.
  Ouroboros/ralplan-inspired gap analysis. Read-only.

- momus.toml: gpt-5.5 xhigh, plan reviewer with OKAY/ITERATE/REJECT
  three-verdict system. Blocker-finder with approval bias. Read-only.

planing-prometheustic SKILL.md rewritten to match the structure of
packages/prompts-core/prompts/prometheus/gpt.md (the omo Prometheus
GPT-5.5 prompt):
- Same XML-tagged sections: identity, mission, core_principles,
  output_verbosity_spec, scope_constraints, phases, plan_template,
  critical_rules, stop_rules
- Same phase flow: Classify Intent -> Ground -> Interview -> Plan
  Generation (with Metis) -> High Accuracy Review (with Momus)
- Metis called via spawn_agent(agent_type="metis") not skill load
- Momus called via spawn_agent(agent_type="momus") not skill load
- "Rigorous Review" renamed to "High Accuracy Review"
- Removed shared-skills/skills/metis/ and momus/ (deleted)
- sync-skills.mjs no longer copies metis/momus into plugin/skills/
2026-05-28 14:57:05 +09:00
YeonGyu-Kim f0af25aab1 fix(codex-rules): dedupe compacted context 2026-05-28 14:44:14 +09:00
YeonGyu-Kim 16c0844421 feat(shared-skills): incorporate ouroboros/gajae-code patterns into planning skills
Improvements inspired by Q00/ouroboros and Yeachan-Heo/gajae-code:

planing-prometheustic:
- Add brownfield detection (greenfield vs brownfield context awareness)
- Add topology enumeration (Round 0) to lock component list before
  deep interview, preventing depth-first overfitting to one component
- Add interview routing rule (facts→code, tradeoffs→user, mixed→both)
- Add retrieval budget (direct reads first, subagents only when needed)
- Add challenge perspective shifts (Contrarian/Simplifier/Ontologist)
- Per-component clearance checklist (every component must pass)
- Handle ITERATE verdict from Momus (max 2 auto-fix rounds)
- NO numeric scoring — qualitative clearance only, per Prometheus style

metis:
- Add brownfield/greenfield detection with evidence to output
- Add topology enumeration (top-level components) to output format
- Add topology directives (planner must cover every active component)
- Add per-component coverage tracking guidance
- Explicit prohibition on numeric scoring formulas

momus:
- Add ITERATE verdict between OKAY and REJECT (fixable gaps the
  planner can patch without user input, max 2 auto-fix rounds)
- Update output format for three-verdict system
- Update review process step 6 for three-way decision
- REJECT now reserved for fundamental blockers or missing user decisions
2026-05-28 14:38:52 +09:00
YeonGyu-Kim 1d3847a6d3 feat(omo-codex): block budgeted create_goal calls 2026-05-28 14:19:14 +09:00
YeonGyu-Kim 68848233c4 docs(omo-codex): translate bundled prompts to English 2026-05-28 14:14:11 +09:00
YeonGyu-Kim cabd9b0960 feat(shared-skills): add planing-prometheustic, metis, momus skills for omo-codex
Add three GPT-5.5 optimized skills to the shared-skills package:

- planing-prometheustic: Prometheus-style strategic planning consultant
  that produces decision-complete work plans through interview, context
  gathering, gap analysis, and optional rigorous review.

- metis: Pre-planning consultant that classifies intent, discovers
  codebase patterns, identifies hidden requirements, flags AI-slop
  risks, and outputs actionable directives for the planner.

- momus: Practical work plan reviewer that verifies plans are executable
  and references are valid. Blocker-finder with OKAY/REJECT verdicts
  and max 3 blocking issues per rejection.

All three use GPT-5.5 prompting style (XML-tagged blocks, outcome-first
structure, personality/collaboration separation) and are auto-synced
into omo-codex plugin/skills/ by sync-skills.mjs.
2026-05-28 14:10:47 +09:00
YeonGyu-Kim 9c428091b6 docs(omo-codex): clarify sisyphuslabs marketplace install 2026-05-28 13:58:12 +09:00
YeonGyu-Kim 56f39d60fc feat(omo-codex): install through sisyphuslabs marketplace 2026-05-28 13:58:12 +09:00
YeonGyu-Kim a3567056c0 test(omo-codex): allow rules resource manifest
The aggregate plugin test originally asserted that every component lacked .codex-plugin/plugin.json. That was correct when omo was only an aggregate Codex namespace: the root manifest owned plugin identity and components were implementation details.

PLUGIN_BUNDLED changes the invariant for rules. The rules component now ships bundled-rules/hephaestus.md and uses a plugin-root marker to resolve bundled resources when it runs as a component package, while Codex still sees the aggregate omo manifest as the installable plugin.

Chose Path A and touched only packages/omo-codex/plugin/test/aggregate.test.mjs. The test now allowlists the rules manifest and still asserts every other component has no plugin manifest, preventing accidental sprawl.

Verified npm test from packages/omo-codex/plugin, bun run test:codex, and bun test src/cli/install-codex/. bun run test:codex exits 0 and covers the Linux, macOS, and Windows Codex adapter code paths.
2026-05-28 13:58:12 +09:00