Commit Graph

20 Commits

Author SHA1 Message Date
YeonGyu-Kim 9ddb2b9819 test(omo-claude): make sync-mcp self-healing and test:claude order-independent
sync-mcp rebuilds the lsp component if a prior sync wiped its dist; sync-mcp.test
builds in a before hook; checkVendored flags only real unbundled imports (a guarded
require.resolve fallback is allowed); test:claude runs the destructive sync-components
test in its own node --test pass so it never races the build-checking tests.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 14:11:57 +09:00
YeonGyu-Kim 027c543340 chore(omo-claude): re-sync lsp to cache-safe vendored-mcp path resolution
Upstream lazy-lsp-mcp resolves the lsp server via new URL('../../../mcp/lsp/cli.js',
import.meta.url) -> the vendored plugin/mcp/lsp/cli.js, so the bundled hook boots
from a node_modules-free cache without require.resolve.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 14:11:57 +09:00
YeonGyu-Kim c6bfc14268 feat(omo-claude): vendor telemetry component with claude identity
SessionStart daily-active component: omo_claude_daily_active, omo-claude: salt,
platform derived from PRODUCT_NAME, shared PostHog key/host. model/permission_mode
optional in validator. Equivalence + distinctness tests pass; SessionStart smoke
exits 0 with OMO_DISABLE_POSTHOG=1 (no send). Builds; 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 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 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 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 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 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 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