Commit Graph

6953 Commits

Author SHA1 Message Date
YeonGyu-Kim 8d2e6bea62 feat(omo-codex): add PLUGIN_BUNDLED rule source to codex-rules engine
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-28 13:58:12 +09:00
YeonGyu-Kim db00bb3d42 wip 2026-05-28 13:58:12 +09:00
YeonGyu-Kim 73e8988f31 feat(omo-codex): enumerate 4 manual-QA channels + forbid tests-alone verification in ultrawork/ultragoal
Promote the four real-usage QA channels (HTTP call, tmux, Browser use, Computer use) into a dedicated top-level `# Manual-QA channels` section in both the Codex ultrawork directive and the ultragoal skill. Each channel ships with the concrete invocation (`curl -i`, `tmux new-session` + `send-keys` + `capture-pane`, Playwright / puppeteer / Chromium, OS-level GUI automation) and the artifact to capture. The Goal section now declares `TESTS ALONE NEVER PROVE DONE` and requires every criterion to build a fresh real-usage scenario and run it through one of the four channels every time. Auxiliary surfaces (CLI stdout / DB diff / parsed config dump) are explicitly demoted: they only satisfy genuinely CLI- or data-shaped criteria, never user-facing behavior.

Bootstrap criterion item 2 and execution step 4 used to repeat the same surface enumeration; they now collapse onto the new channel table (single source of truth, less drift). EXECUTE-AS-SCENARIO in the ultragoal skill follows the same compression. The previous CLEANUP (paired teardown + receipt) + leftover-state stop rule from the prior commit are preserved.

Regression tests in `components/ultrawork/hooks/ultrawork-hooks.test.mjs` pin: the `# Manual-QA channels` heading, all four channel labels (`HTTP call`, `tmux`, `Browser use`, `Computer use`), `TESTS ALONE NEVER PROVE DONE`, `every criterion needs its own real-usage scenario`, and `every time`. README + CHANGELOGs document the restructure and the new size (11,005 chars / 232 lines). All 11 ultrawork hook tests + 7 aggregate tests pass. Installed locally via `runCodexInstaller` into `~/.codex/plugins/cache/code-yeongyu-codex-plugins/omo/0.1.0/`; cache hooks emit the new directive end-to-end and the identifier-like `ulw_helper.ts` keyword-boundary check still suppresses.
2026-05-28 13:58:12 +09:00
YeonGyu-Kim e746dcf0d8 feat(omo-codex): mandate manual-QA-as-scenario + paired cleanup in ultrawork/ultragoal
Both the Codex ultrawork directive and the ultragoal skill now force the agent to actually invoke the real user-facing surface (HTTP via `curl -i`, terminal/TUI via `tmux new-session` + `send-keys` + `capture-pane`, GUI via computer-use / Playwright, CLI stdout, DB diff) instead of treating evidence as a free-form artifact list. A paired CLEANUP step requires teardown of every QA-spawned process, tmux session, browser context, container, bound port, temp file/dir, and QA-only env var, with a one-line cleanup receipt recorded next to the artifact path (ultrawork) or embedded in the `--evidence` string (ultragoal). Missing receipt keeps the criterion in_progress / records BLOCKED. New Stop rule: leftover state from QA means NOT done.

Regression tests in `components/ultrawork/hooks/ultrawork-hooks.test.mjs` pin SURFACE-AS-SCENARIO, the concrete `curl -i` / `tmux new-session` / `computer-use / Playwright` invocations, the paired CLEANUP block with cleanup receipt + `tmux kill-session`, and the leftover-state Stop rule so the mandates cannot be silently regressed. README and CHANGELOGs refreshed; stale 5,821-char claim replaced with measured 10,037 chars / 213 lines. All 9 ultrawork hook tests + 7 aggregate tests pass.
2026-05-28 13:58:12 +09:00
YeonGyu-Kim d18c2c078d fix(omo-codex): adapt synced skills for Codex tools 2026-05-28 13:58:12 +09:00
YeonGyu-Kim 9dccf613e3 fix(builtin-skills): resolve shared templates after bundling 2026-05-28 13:58:12 +09:00
YeonGyu-Kim 22c91629b3 feat(omo-codex): sync shared skills into plugin 2026-05-28 13:58:12 +09:00
YeonGyu-Kim 35ec4a2dbe refactor(builtin-skills): load shared skill templates 2026-05-28 13:58:12 +09:00
YeonGyu-Kim cdb923a329 feat(shared-skills): extract builtin skill prompts 2026-05-28 13:58:12 +09:00
YeonGyu-Kim 3ccbe2fd4f feat(shared-skills): add user skill sources 2026-05-28 13:58:12 +09:00
YeonGyu-Kim 74ece8181a feat(shared-skills): scaffold shared skills workspace package 2026-05-28 13:58:11 +09:00
YeonGyu-Kim f77338b4a2 refactor(omo-codex): sync telemetry component sources 2026-05-28 13:58:11 +09:00
YeonGyu-Kim b164cb94be docs(omo-codex): document session_start telemetry source
Spell out that omo_codex_daily_active now fires from two sources -
install_completed (CLI installer) and session_start (Codex plugin
SessionStart hook) - so readers understand DAU/WAU/MAU reflects real
Codex usage and not just install events. Opt-out env vars are unchanged.

- README.md (root + packages/omo-codex/): both reasons listed.
- docs/legal/privacy-policy.md: discloses session_start as a second
  trigger for the same event, same opt-out posture.
- docs/reference/cli.md: telemetry section now describes both PostHog
  streams (omo_daily_active vs omo_codex_daily_active) and both Codex
  reasons.
- CHANGELOG.md: adds the plugin-runtime wiring under Unreleased.
2026-05-28 13:58:11 +09:00
YeonGyu-Kim bd867019f9 feat(omo-codex): wire Codex SessionStart telemetry for DAU/WAU/MAU
Adds a new Codex plugin component `telemetry` that emits a single
omo_codex_daily_active event (reason: session_start) from every Codex
SessionStart hook, with the same UTC-day deduplication, hashed
installation identifier, and four-flag opt-out as the install-time
event. Previously omo-codex telemetry only fired on install_completed,
so DAU/WAU/MAU under-reported real Codex usage.

- New plugin component packages/omo-codex/plugin/components/telemetry/
  mirrors the rules/comment-checker/lsp pattern: own src/, tsc build,
  vitest tests, package.json (posthog-node dep), hooks/hooks.json.
- src/codex-hook.ts wraps createPluginPostHog().trackActive(..., "session_start")
  with safeShutdown so Codex session startup never blocks on telemetry.
- Plugin root hooks.json + workspaces register the new component
  alongside rules and ultrawork on SessionStart.
- Aggregate test expectations updated to include the telemetry directory.
- cross-package-equivalence.test.ts pins product-identity constants and
  shouldDisablePostHog behavior to stay byte-equivalent between the CLI
  installer (src/telemetry/) and the plugin runtime
  (plugin/components/telemetry/src/), so the two PostHog sources never
  drift on event name, distinct_id base, dedup file path, or opt-out
  flags.
- PostHogActivityReason union in the CLI-side posthog.ts gains
  "session_start" so future CLI paths can emit the same reason without
  a type break.
2026-05-28 13:58:11 +09:00
YeonGyu-Kim b886ca9ca4 ci(codex): run adapter checks across OS matrix 2026-05-28 13:58:11 +09:00
YeonGyu-Kim f87eceadae fix(cli): protect existing Windows Codex shims
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-28 13:58:11 +09:00
YeonGyu-Kim b664b413d4 ci: test Codex Windows compatibility
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-28 13:58:11 +09:00
YeonGyu-Kim 3de8bb2578 fix(omo-codex): write local installer command shims on Windows
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-28 13:58:11 +09:00
YeonGyu-Kim 22bcb4b45a fix(cli): write Codex bin command shims on Windows
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-28 13:58:11 +09:00
YeonGyu-Kim cc98f90bd0 docs: document --codex installer, lazycodex shortcut, omo_codex_daily_active telemetry 2026-05-28 13:58:11 +09:00
YeonGyu-Kim 02e24c5394 feat(publish): triple-publish lazycodex alongside oh-my-opencode + oh-my-openagent 2026-05-28 13:58:11 +09:00
YeonGyu-Kim 60a4a12cf0 feat(cli): add --codex installer + lazycodex auto-routing via OMO_INVOCATION_NAME 2026-05-28 13:58:11 +09:00
YeonGyu-Kim 737dae8d9e feat(omo-codex): add PostHog telemetry with omo_codex_daily_active event + 4-flag opt-out 2026-05-28 13:58:11 +09:00
YeonGyu-Kim 400006ec2c feat(omo-codex): scaffold @oh-my-opencode/omo-codex workspace package 2026-05-28 13:58:11 +09:00
YeonGyu-Kim 2415f37bc0 vendor: import codex-plugins as packages/omo-codex/{plugin,scripts,marketplace.json,MARKETPLACE.md} 2026-05-28 13:58:11 +09:00
github-actions[bot] 06c86f526a @ZK-Andy has signed the CLA in code-yeongyu/oh-my-openagent#4568 2026-05-27 10:26:23 +00:00
github-actions[bot] 9b037c53a3 @yangyaofei has signed the CLA in code-yeongyu/oh-my-openagent#4566 2026-05-27 08:47:09 +00:00
YeonGyu-Kim 4635d61ada fix(background-agent): defer parent wake during active turns 2026-05-27 16:17:30 +09:00
YeonGyu-Kim fe051ebab7 Merge pull request #4553 from code-yeongyu/ulw/codex-hephaestus-dup
fix: skip claude hook injection for internal prompts
2026-05-27 14:31:51 +09:00
YeonGyu-Kim f204390b43 fix: reserve completed heading for final background wake 2026-05-27 14:27:26 +09:00
YeonGyu-Kim 80fa692b34 Merge pull request #4554 from code-yeongyu/code-yeongyu/fix-opencode-session-stall
fix(delegate-task): start sync prompts asynchronously
2026-05-27 14:26:23 +09:00
YeonGyu-Kim 27f956ecec fix(delegate-task): start sync prompts asynchronously 2026-05-27 14:22:14 +09:00
YeonGyu-Kim 77a268f91e fix: skip claude hook injection for internal prompts 2026-05-27 14:17:46 +09:00
ToToKr c0d3044629 Merge pull request #4278 from MoerAI/fix/log-agent-skip-on-missing-model
fix(agents): log warning when a builtin agent is silently skipped due to model availability (fixes #4150)
2026-05-27 13:42:21 +09:00
ToToKr b7ac05a9b5 Merge pull request #4248 from MoerAI/fix/getskillbyname-short-name
fix(opencode-skill-loader): align getSkillByName with short-name matching (fixes #4183)
2026-05-27 13:40:46 +09:00
ToToKr eaa73e9d08 Merge pull request #4245 from MoerAI/fix/runtime-fallback-zai-limit-exhausted
fix(runtime-fallback): match ZAI 'Limit Exhausted' quota errors (fixes #4207)
2026-05-27 13:38:43 +09:00
github-actions[bot] 68d84d9eaf @Ruifeng-Zhang has signed the CLA in code-yeongyu/oh-my-openagent#4541 2026-05-27 04:19:13 +00:00
github-actions[bot] c731969872 @HyeokjaeLee has signed the CLA in code-yeongyu/oh-my-openagent#4532 2026-05-26 16:41:24 +00:00
YeonGyu-Kim f70d9644c5 Merge pull request #4531 from code-yeongyu/debug/subagent-calling-dev
fix(builtin-skills): document Codex tool mapping
2026-05-27 00:37:02 +09:00
YeonGyu-Kim 9a9ff8674e fix(builtin-skills): document Codex tool mapping 2026-05-27 00:34:37 +09:00
github-actions[bot] e8f8ce9ccb @sigvardt has signed the CLA in code-yeongyu/oh-my-openagent#4529 2026-05-26 14:48:36 +00:00
github-actions[bot] 36e69f8b3c release: v4.5.1 2026-05-26 10:08:16 +00:00
YeonGyu-Kim f9bbe0517b fix(team-mode): fix lifecycle-test-fixture ask type + update bun.lock 2026-05-26 18:51:25 +09:00
YeonGyu-Kim b03d8de34a chore: update lockfile after #4469 merge 2026-05-26 18:47:32 +09:00
YeonGyu-Kim 03396344f9 Merge pull request #4469 from SoShymKing/add-support-tool-result
Add support for OpenCode 1.15 DB
2026-05-26 18:45:21 +09:00
github-actions[bot] d7b4072a90 release: v4.5.0 2026-05-26 07:54:27 +00:00
YeonGyu-Kim 52ba1257b6 Merge branch 'fix/pre-publish-blockers-v4.5.0'
Pre-publish blockers for v4.5.0:
- fix(runtime-fallback): gate retryable signal on status-code allowlist (f05e0cbe9)
- fix(parent-wake): bound assistant-text defer to escape stuck sessions (69c955f61)
- fix(ralph-loop): time-bound oracle dispatch wait to prevent stall (14b3523af)
- test(dist-bundle): assert inlined prompt content survives bundling (3e0a975d1)
- fix(package): block internal-only assets from publish payload (8e28e29c2)

Verified via publish-debate-vortex hyperultradebate (6 hostile agents, 3 rounds).
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-26 16:44:50 +09:00
YeonGyu-Kim 8e28e29c26 fix(package): block internal-only assets from publish payload
Validator finding #12 from the publish-debate-vortex hyperultradebate flagged that internal-only skill and command assets could leak into the npm payload once the dot asset roots are included.

Bun 1.3.x ignores a root .npmignore for directories listed in package.json#files, so the exclusion rules live in nested .npmignore files co-located with each published command and skill directory.

RED before nested ignores: bun test script/package-layout-exclusion.test.ts failed with expect(received).toEqual(expected), receiving .opencode/skills/__internal-fake-do-not-ship-test-artifact/SKILL.md, .agents/skills/__internal-fake-do-not-ship-test-artifact/SKILL.md, .opencode/command/__internal-fake-do-not-ship-test-artifact.md, and .agents/command/__internal-fake-do-not-ship-test-artifact.md instead of [].

GREEN after nested ignores: bun test script/package-layout-exclusion.test.ts reported 2 pass, 0 fail, 5 expect() calls.

This is the exclusion companion to script/package-layout.test.ts, the inclusion test arriving through the dev merge.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-26 16:29:47 +09:00
github-actions[bot] 5c0cc0de34 @Hungdoan565 has signed the CLA in code-yeongyu/oh-my-openagent#4492 2026-05-26 05:45:28 +00:00
YeonGyu-Kim ec552bcf34 fix(ralph-loop): stop loop when latest assistant turn made no model progress
Add no-progress turn detector that inspects the most recent assistant
message: if finish is 'unknown', all token counts are zero, and there
is no meaningful content beyond step-start/step-finish markers, the
turn is classified as no-progress.

Integrate the check at all three idle/completion/error continuation
points in the event handler so the loop stops cleanly with a warning
toast instead of injecting another internal prompt.
2026-05-26 14:28:35 +09:00