oh-my-opencode 5.0.0-beta.85 → 5.0.0-beta.87
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/codex-qa/SKILL.md +2 -0
- package/.agents/skills/hyperplan/SKILL.md +1 -1
- package/.agents/skills/senpi-qa/SKILL.md +9 -3
- package/.agents/skills/senpi-qa/scripts/resolve-evidence-dir.mjs +4 -4
- package/.opencode/skills/hyperplan/SKILL.md +1 -1
- package/README.md +1 -1
- package/dist/cli/index.js +68 -41
- package/dist/cli-node/index.js +68 -41
- package/dist/index.js +126 -107
- package/dist/skills/browser/ATTRIBUTION.md +26 -14
- package/dist/skills/browser/SKILL.md +65 -52
- package/dist/skills/browser/references/commands.md +81 -66
- package/dist/skills/browser/references/install.md +31 -34
- package/dist/skills/browser/references/owned-engine/README.md +41 -21
- package/dist/skills/browser/references/owned-engine/frames-and-humans.md +33 -20
- package/dist/skills/browser/references/owned-engine/ladder.md +24 -22
- package/dist/skills/browser/references/owned-engine/network.md +35 -15
- package/dist/skills/browser/references/recipes/1password.md +13 -11
- package/dist/skills/browser/references/remote.md +5 -4
- package/dist/skills/browser/runtime/omowright/index.js +1534 -0
- package/dist/skills/browser/runtime/omowright/manifest.json +9 -0
- package/dist/skills/browser/runtime/omowright/page-bundle.js +1395 -0
- package/dist/skills/browser/scripts/browser-doctor.mjs +37 -32
- package/dist/skills/browser/scripts/browser-install.mjs +31 -44
- package/dist/skills/browser/scripts/omowright.mjs +25 -0
- package/dist/skills/debugging/SKILL.md +2 -2
- package/dist/skills/debugging/references/methodology/06-fix.md +3 -3
- package/dist/skills/debugging/references/methodology/08-qa.md +1 -1
- package/dist/skills/debugging/references/tools/browser-qa.md +104 -0
- package/dist/skills/frontend/SKILL.md +1 -1
- package/dist/skills/frontend/references/design/clone-from-url.md +1 -1
- package/dist/skills/programming/SKILL.md +12 -18
- package/dist/skills/programming/references/rust/README.md +43 -15
- package/dist/skills/programming/references/rust/api-design.md +81 -0
- package/dist/skills/programming/references/rust/async-tokio.md +60 -28
- package/dist/skills/programming/references/rust/axum-stack.md +1 -13
- package/dist/skills/programming/references/rust/cargo-strict.md +44 -8
- package/dist/skills/programming/references/rust/clap-stack.md +8 -3
- package/dist/skills/programming/references/rust/concurrency.md +66 -52
- package/dist/skills/programming/references/rust/libraries.md +35 -25
- package/dist/skills/programming/references/rust/macros.md +63 -0
- package/dist/skills/programming/references/rust/one-liners.md +5 -3
- package/dist/skills/programming/references/rust/proptest-insta.md +8 -0
- package/dist/skills/programming/references/rust/type-state.md +50 -12
- package/dist/skills/programming/references/rust/unsafe-discipline.md +34 -6
- package/dist/skills/programming/references/rust/zero-cost-safety.md +62 -52
- package/dist/skills/programming/references/rust-ub/miri-sanitizers-loom.md +1 -1
- package/dist/skills/programming/references/rust-ub/ub-taxonomy.md +6 -3
- package/dist/skills/programming/scripts/rust/check-no-excuse-rules.sh +86 -75
- package/dist/skills/programming/scripts/rust/check-no-excuse-rules.test.ts +83 -0
- package/dist/skills/programming/scripts/rust/new-project.py +31 -28
- package/dist/skills/review-work/SKILL.md +1 -1
- package/dist/skills/ultimate-browsing/SKILL.md +27 -20
- package/dist/skills/ultimate-browsing/engine/AGENTS.md +1 -1
- package/dist/skills/ultimate-browsing/references/chrome-stealth.md +32 -100
- package/dist/skills/ultimate-browsing/references/insane-search/README.md +5 -11
- package/dist/skills/ultimate-browsing/references/insane-search/playwright.md +20 -37
- package/dist/skills/ulw-execute/SKILL.md +4 -4
- package/dist/skills/visual-qa/SKILL.md +1 -1
- package/dist/skills/visual-qa/references/browser-setup.md +46 -46
- package/dist/tui.js +47 -23
- package/package.json +15 -14
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +2 -0
- package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
- package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
- package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
- package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus/gpt-6.md +1 -1
- package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/rules/package.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/README.md +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/plan.toml +2 -2
- package/packages/omo-codex/plugin/components/ultrawork/dist/cli.js +63 -89
- package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/src/directive-content.ts +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/directive.md +2 -2
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/directive.md +63 -89
- package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
- package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/define-goal.md +2 -3
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +2 -2
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
- package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/package-lock.json +12 -12
- package/packages/omo-codex/plugin/package.json +1 -1
- package/packages/omo-codex/plugin/scripts/materialize-shared-upstreams.mjs +8 -2
- package/packages/omo-codex/plugin/scripts/sync-skills.mjs +2 -2
- package/packages/omo-codex/plugin/skills/browser/ATTRIBUTION.md +26 -14
- package/packages/omo-codex/plugin/skills/browser/SKILL.md +65 -52
- package/packages/omo-codex/plugin/skills/browser/references/commands.md +81 -66
- package/packages/omo-codex/plugin/skills/browser/references/install.md +31 -34
- package/packages/omo-codex/plugin/skills/browser/references/owned-engine/README.md +41 -21
- package/packages/omo-codex/plugin/skills/browser/references/owned-engine/frames-and-humans.md +33 -20
- package/packages/omo-codex/plugin/skills/browser/references/owned-engine/ladder.md +24 -22
- package/packages/omo-codex/plugin/skills/browser/references/owned-engine/network.md +35 -15
- package/packages/omo-codex/plugin/skills/browser/references/recipes/1password.md +13 -11
- package/packages/omo-codex/plugin/skills/browser/references/remote.md +5 -4
- package/packages/omo-codex/plugin/skills/browser/runtime/omowright/index.js +1534 -0
- package/packages/omo-codex/plugin/skills/browser/runtime/omowright/manifest.json +9 -0
- package/packages/omo-codex/plugin/skills/browser/runtime/omowright/page-bundle.js +1395 -0
- package/packages/omo-codex/plugin/skills/browser/scripts/browser-doctor.mjs +37 -32
- package/packages/omo-codex/plugin/skills/browser/scripts/browser-install.mjs +31 -44
- package/packages/omo-codex/plugin/skills/browser/scripts/omowright.mjs +25 -0
- package/packages/omo-codex/plugin/skills/debugging/SKILL.md +2 -2
- package/packages/omo-codex/plugin/skills/debugging/references/methodology/06-fix.md +3 -3
- package/packages/omo-codex/plugin/skills/debugging/references/methodology/08-qa.md +1 -1
- package/packages/omo-codex/plugin/skills/debugging/references/tools/browser-qa.md +104 -0
- package/packages/omo-codex/plugin/skills/frontend/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/frontend/references/design/clone-from-url.md +1 -1
- package/packages/omo-codex/plugin/skills/programming/SKILL.md +12 -18
- package/packages/omo-codex/plugin/skills/programming/references/rust/README.md +43 -15
- package/packages/omo-codex/plugin/skills/programming/references/rust/api-design.md +81 -0
- package/packages/omo-codex/plugin/skills/programming/references/rust/async-tokio.md +60 -28
- package/packages/omo-codex/plugin/skills/programming/references/rust/axum-stack.md +1 -13
- package/packages/omo-codex/plugin/skills/programming/references/rust/cargo-strict.md +44 -8
- package/packages/omo-codex/plugin/skills/programming/references/rust/clap-stack.md +8 -3
- package/packages/omo-codex/plugin/skills/programming/references/rust/concurrency.md +66 -52
- package/packages/omo-codex/plugin/skills/programming/references/rust/libraries.md +35 -25
- package/packages/omo-codex/plugin/skills/programming/references/rust/macros.md +63 -0
- package/packages/omo-codex/plugin/skills/programming/references/rust/one-liners.md +5 -3
- package/packages/omo-codex/plugin/skills/programming/references/rust/proptest-insta.md +8 -0
- package/packages/omo-codex/plugin/skills/programming/references/rust/type-state.md +50 -12
- package/packages/omo-codex/plugin/skills/programming/references/rust/unsafe-discipline.md +34 -6
- package/packages/omo-codex/plugin/skills/programming/references/rust/zero-cost-safety.md +62 -52
- package/packages/omo-codex/plugin/skills/programming/references/rust-ub/miri-sanitizers-loom.md +1 -1
- package/packages/omo-codex/plugin/skills/programming/references/rust-ub/ub-taxonomy.md +6 -3
- package/packages/omo-codex/plugin/skills/programming/scripts/rust/check-no-excuse-rules.sh +86 -75
- package/packages/omo-codex/plugin/skills/programming/scripts/rust/new-project.py +31 -28
- package/packages/omo-codex/plugin/skills/review-work/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/ultimate-browsing/SKILL.md +27 -20
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/AGENTS.md +1 -1
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/chrome-stealth.md +32 -100
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/README.md +5 -11
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/playwright.md +20 -37
- package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +63 -89
- package/packages/omo-codex/plugin/skills/ulw-execute/SKILL.md +4 -4
- package/packages/omo-codex/plugin/skills/ulw-loop/references/define-goal.md +2 -3
- package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +2 -2
- package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/visual-qa/references/browser-setup.md +46 -46
- package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +2 -2
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +4 -2
- package/packages/prompts-core/prompts/ultrawork/codex.md +63 -89
- package/packages/shared-skills/skills/browser/ATTRIBUTION.md +26 -14
- package/packages/shared-skills/skills/browser/SKILL.md +65 -52
- package/packages/shared-skills/skills/browser/references/commands.md +81 -66
- package/packages/shared-skills/skills/browser/references/install.md +31 -34
- package/packages/shared-skills/skills/browser/references/owned-engine/README.md +41 -21
- package/packages/shared-skills/skills/browser/references/owned-engine/frames-and-humans.md +33 -20
- package/packages/shared-skills/skills/browser/references/owned-engine/ladder.md +24 -22
- package/packages/shared-skills/skills/browser/references/owned-engine/network.md +35 -15
- package/packages/shared-skills/skills/browser/references/recipes/1password.md +13 -11
- package/packages/shared-skills/skills/browser/references/remote.md +5 -4
- package/packages/shared-skills/skills/browser/runtime/omowright/index.js +1534 -0
- package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +9 -0
- package/packages/shared-skills/skills/browser/runtime/omowright/page-bundle.js +1395 -0
- package/packages/shared-skills/skills/browser/scripts/browser-doctor.mjs +37 -32
- package/packages/shared-skills/skills/browser/scripts/browser-install.mjs +31 -44
- package/packages/shared-skills/skills/browser/scripts/omowright.mjs +25 -0
- package/packages/shared-skills/skills/debugging/SKILL.md +2 -2
- package/packages/shared-skills/skills/debugging/references/methodology/06-fix.md +3 -3
- package/packages/shared-skills/skills/debugging/references/methodology/08-qa.md +1 -1
- package/packages/shared-skills/skills/debugging/references/tools/browser-qa.md +104 -0
- package/packages/shared-skills/skills/frontend/SKILL.md +1 -1
- package/packages/shared-skills/skills/frontend/references/design/clone-from-url.md +1 -1
- package/packages/shared-skills/skills/programming/SKILL.md +12 -18
- package/packages/shared-skills/skills/programming/references/rust/README.md +43 -15
- package/packages/shared-skills/skills/programming/references/rust/api-design.md +81 -0
- package/packages/shared-skills/skills/programming/references/rust/async-tokio.md +60 -28
- package/packages/shared-skills/skills/programming/references/rust/axum-stack.md +1 -13
- package/packages/shared-skills/skills/programming/references/rust/cargo-strict.md +44 -8
- package/packages/shared-skills/skills/programming/references/rust/clap-stack.md +8 -3
- package/packages/shared-skills/skills/programming/references/rust/concurrency.md +66 -52
- package/packages/shared-skills/skills/programming/references/rust/libraries.md +35 -25
- package/packages/shared-skills/skills/programming/references/rust/macros.md +63 -0
- package/packages/shared-skills/skills/programming/references/rust/one-liners.md +5 -3
- package/packages/shared-skills/skills/programming/references/rust/proptest-insta.md +8 -0
- package/packages/shared-skills/skills/programming/references/rust/type-state.md +50 -12
- package/packages/shared-skills/skills/programming/references/rust/unsafe-discipline.md +34 -6
- package/packages/shared-skills/skills/programming/references/rust/zero-cost-safety.md +62 -52
- package/packages/shared-skills/skills/programming/references/rust-ub/miri-sanitizers-loom.md +1 -1
- package/packages/shared-skills/skills/programming/references/rust-ub/ub-taxonomy.md +6 -3
- package/packages/shared-skills/skills/programming/scripts/rust/check-no-excuse-rules.sh +86 -75
- package/packages/shared-skills/skills/programming/scripts/rust/check-no-excuse-rules.test.ts +83 -0
- package/packages/shared-skills/skills/programming/scripts/rust/new-project.py +31 -28
- package/packages/shared-skills/skills/review-work/SKILL.md +1 -1
- package/packages/shared-skills/skills/ultimate-browsing/SKILL.md +27 -20
- package/packages/shared-skills/skills/ultimate-browsing/engine/AGENTS.md +1 -1
- package/packages/shared-skills/skills/ultimate-browsing/references/chrome-stealth.md +32 -100
- package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/README.md +5 -11
- package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/playwright.md +20 -37
- package/packages/shared-skills/skills/ulw-execute/SKILL.md +4 -4
- package/packages/shared-skills/skills/visual-qa/SKILL.md +1 -1
- package/packages/shared-skills/skills/visual-qa/references/browser-setup.md +46 -46
- package/dist/skills/browser/scripts/browser-env.mjs +0 -41
- package/dist/skills/debugging/references/tools/playwright-cli.md +0 -112
- package/dist/skills/programming/scripts/rust/check-no-excuse-rules.py +0 -296
- package/packages/omo-codex/plugin/skills/browser/scripts/browser-env.mjs +0 -41
- package/packages/omo-codex/plugin/skills/debugging/references/tools/playwright-cli.md +0 -112
- package/packages/omo-codex/plugin/skills/programming/scripts/rust/check-no-excuse-rules.py +0 -296
- package/packages/shared-skills/skills/browser/scripts/browser-env.mjs +0 -41
- package/packages/shared-skills/skills/debugging/references/tools/playwright-cli.md +0 -112
- package/packages/shared-skills/skills/programming/scripts/rust/check-no-excuse-rules.py +0 -296
|
@@ -49,7 +49,7 @@ Before any reviewer sees an image, verify each capture yourself: the file signat
|
|
|
49
49
|
### Web
|
|
50
50
|
|
|
51
51
|
1. Capture a REFERENCE image: the user's mock/target, generated page snapshot, Figma export, source-site capture, or known-good baseline. Save as PNG. If the user provided overview text or annotations, save them next to the image and treat them as part of the reference packet.
|
|
52
|
-
2. Capture the ACTUAL rendered screenshot at the reference viewport
|
|
52
|
+
2. Capture the ACTUAL rendered screenshot at the reference viewport with omowright from js eval (the library is staged in the `browser` skill): the owned engine (`connectPipe` on a task-owned profile, viewport pinned with `emulate`, then `page.screenshot()`) for anything unauthenticated, or the attached engine (`connectBrowserSkill()` → `session.screenshot()`) when the page needs the user's login — never a clone of, or a launch against, the user's live profile. Save PNG and return its path; close the browser or stop the session. See `$SKILL_DIR/references/browser-setup.md` for fixed-viewport examples and prerequisites.
|
|
53
53
|
3. Run the diff and keep the JSON:
|
|
54
54
|
|
|
55
55
|
```
|
|
@@ -1,75 +1,75 @@
|
|
|
1
1
|
# Browser setup (Web capture)
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
Capture with omowright from the js-eval kernel. The library is staged inside the `browser` skill;
|
|
4
|
+
load it once per session:
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
```js
|
|
7
|
+
const { loadOmowright } = await import("<browser-skill-root>/scripts/omowright.mjs")
|
|
8
|
+
const { omowright } = await loadOmowright()
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Owned engine (default for QA)
|
|
7
12
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
and installed Chrome/Chromium/Edge. WebView is headless; WebKit has no CDP,
|
|
11
|
-
and `type()` emits no keyboard events. Use tier 2 when these differences matter.
|
|
13
|
+
A browser your code launches, with a task-owned profile, pinned viewport and no user state.
|
|
14
|
+
`connectPipe` opens no listening port and reaps the process on `close()`.
|
|
12
15
|
|
|
13
16
|
```js
|
|
14
17
|
// js-eval cell; url and pngPath belong to this QA run.
|
|
15
|
-
const
|
|
18
|
+
const { mkdtempSync, rmSync } = await import("node:fs")
|
|
19
|
+
const profile = mkdtempSync(`${(await import("node:os")).tmpdir()}/visual-qa-`)
|
|
20
|
+
const browser = await omowright.connectPipe({
|
|
21
|
+
browserPath: chromeBinary, // installed Chrome, Chromium, CloakBrowser or chrome-headless-shell
|
|
22
|
+
browserArgs: ["--headless", "--no-first-run", `--user-data-dir=${profile}`],
|
|
23
|
+
storageRoot: profile,
|
|
24
|
+
})
|
|
16
25
|
try {
|
|
17
|
-
await
|
|
18
|
-
await
|
|
26
|
+
const page = await browser.newTab("about:blank")
|
|
27
|
+
await omowright.emulate(page, { width: 1280, height: 720, deviceScaleFactor: 1, mobile: false, hasTouch: false })
|
|
28
|
+
await page.goto(url, { waitUntil: "load" })
|
|
29
|
+
await Bun.write(pngPath, await page.screenshot())
|
|
19
30
|
console.log(pngPath)
|
|
20
31
|
} finally {
|
|
21
|
-
|
|
32
|
+
await browser.close()
|
|
33
|
+
rmSync(profile, { recursive: true, force: true })
|
|
22
34
|
}
|
|
23
35
|
```
|
|
24
36
|
|
|
25
|
-
|
|
37
|
+
Chrome must already be installed; report an absent executable rather than downloading a managed
|
|
38
|
+
browser. For bot-scored or WAF targets use `connectCloakProfile({ profileDir })` (CloakBrowser
|
|
39
|
+
with a pinned fingerprint seed) — the `browser` skill's `references/owned-engine/README.md`
|
|
40
|
+
covers it.
|
|
41
|
+
|
|
42
|
+
## Attached engine (authenticated pages)
|
|
26
43
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
dependency and execute it from js eval. The user installs `playwright-core`
|
|
30
|
-
once with `bun add playwright-core` if needed; Chrome must already exist.
|
|
31
|
-
No managed browser download is needed.
|
|
44
|
+
When the capture needs the user's login, drive the browser they are signed into instead of
|
|
45
|
+
cloning its profile:
|
|
32
46
|
|
|
33
47
|
```js
|
|
34
|
-
|
|
35
|
-
import { chromium } from "playwright-core"
|
|
36
|
-
const [url, pngPath] = process.argv.slice(2)
|
|
37
|
-
const browser = await chromium.launch({ channel: "chrome", headless: true })
|
|
48
|
+
const session = await omowright.connectBrowserSkill({ name: "visual-qa capture", focused: false })
|
|
38
49
|
try {
|
|
39
|
-
|
|
40
|
-
await
|
|
41
|
-
await
|
|
42
|
-
|
|
50
|
+
await session.navigate(url, { waitUntil: "load" })
|
|
51
|
+
await session.resize(1280, 720)
|
|
52
|
+
const shot = await session.screenshot() // { buffer, width, height }
|
|
53
|
+
await Bun.write(pngPath, shot.buffer)
|
|
43
54
|
} finally {
|
|
44
|
-
await
|
|
55
|
+
await session.stop()
|
|
45
56
|
}
|
|
46
57
|
```
|
|
47
58
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
const { execFile } = await import("node:child_process")
|
|
53
|
-
const result = await promisify(execFile)("node", [scriptPath, url, pngPath], { timeout: 45000 })
|
|
54
|
-
console.log(result.stdout)
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
For auth, CLONE the user-data directory to a private task-owned directory
|
|
58
|
-
and use `chromium.launchPersistentContext(clonePath, { channel: "chrome" })`.
|
|
59
|
-
NEVER launch against or clear cookies/cache/site data from the live profile.
|
|
60
|
-
Close the context and remove only the clone after QA. For script-based stealth,
|
|
61
|
-
read the ultimate-browsing skill's `references/chrome-stealth.md`.
|
|
59
|
+
NEVER launch anything against, or clear cookies/cache/site data from, the user's live profile;
|
|
60
|
+
the attached engine is the only sanctioned way to a signed-in page. If no extension is connected,
|
|
61
|
+
run the `browser` skill's `scripts/browser-install.mjs`, relay its one human step, and wait — do
|
|
62
|
+
not fall back to the owned engine for an authenticated criterion.
|
|
62
63
|
|
|
63
64
|
## Capture a screenshot at a fixed viewport
|
|
64
65
|
|
|
65
|
-
Match CSS viewport AND PNG dimensions:
|
|
66
|
-
(
|
|
67
|
-
|
|
68
|
-
Wait for the specific page state, not a sleep, then compare:
|
|
66
|
+
Match CSS viewport AND PNG dimensions: pin `deviceScaleFactor` through `emulate` (owned) or
|
|
67
|
+
`resize` (attached) instead of resizing the PNG to force a pass. Wait for the specific page state
|
|
68
|
+
(a locator, a `waitForURL`, a `createNetworkSnoop(page).waitFor(...)`), not a sleep, then compare:
|
|
69
69
|
|
|
70
70
|
```sh
|
|
71
71
|
node "$SKILL_DIR/scripts/visual-qa.mjs" image-diff reference.png actual.png
|
|
72
72
|
```
|
|
73
73
|
|
|
74
|
-
Inspect `dimensionsMatch` and `diffRatio`, then inspect the image. Close every
|
|
75
|
-
|
|
74
|
+
Inspect `dimensionsMatch` and `diffRatio`, then inspect the image. Close every browser and session
|
|
75
|
+
and the fixture server, even on a failed capture; remove the owned profile in the same `finally`.
|
package/dist/tui.js
CHANGED
|
@@ -3352,26 +3352,20 @@ var init_agent_model_requirements = __esm(() => {
|
|
|
3352
3352
|
fallbackChain: [
|
|
3353
3353
|
{ providers: ["kimi-for-coding"], model: "kimi-for-coding-highspeed", variant: "off" },
|
|
3354
3354
|
{ providers: ["openai", "chatgpt-subscription"], model: "gpt-6-luna-fast", variant: "low" },
|
|
3355
|
-
{ providers: ["deepseek"], model: "deepseek-
|
|
3355
|
+
{ providers: ["deepseek"], model: "deepseek-flash", variant: "max" },
|
|
3356
3356
|
{ providers: ["opencode-go", "bailian-coding-plan"], model: "qwen3.7-plus" },
|
|
3357
|
-
{ providers: ["opencode-go"], model: "minimax-m3" },
|
|
3358
|
-
{ providers: ["minimax-coding-plan", "minimax-cn-coding-plan"], model: "MiniMax-M3" },
|
|
3359
3357
|
{ providers: ["opencode-go"], model: "minimax-m2.7" },
|
|
3360
|
-
{ providers: ["anthropic", "github-copilot"], model: "claude-haiku-4-5" }
|
|
3361
|
-
{ providers: ["openai", "chatgpt-subscription"], model: "gpt-5.4-nano" }
|
|
3358
|
+
{ providers: ["anthropic", "github-copilot"], model: "claude-haiku-4-5" }
|
|
3362
3359
|
]
|
|
3363
3360
|
},
|
|
3364
3361
|
explore: {
|
|
3365
3362
|
fallbackChain: [
|
|
3366
3363
|
{ providers: ["kimi-for-coding"], model: "kimi-for-coding-highspeed", variant: "off" },
|
|
3367
3364
|
{ providers: ["openai", "chatgpt-subscription"], model: "gpt-6-luna-fast", variant: "low" },
|
|
3368
|
-
{ providers: ["deepseek"], model: "deepseek-
|
|
3365
|
+
{ providers: ["deepseek"], model: "deepseek-flash", variant: "max" },
|
|
3369
3366
|
{ providers: ["opencode-go", "bailian-coding-plan"], model: "qwen3.7-plus" },
|
|
3370
|
-
{ providers: ["opencode-go"], model: "minimax-m3" },
|
|
3371
|
-
{ providers: ["minimax-coding-plan", "minimax-cn-coding-plan"], model: "MiniMax-M3" },
|
|
3372
3367
|
{ providers: ["opencode-go"], model: "minimax-m2.7" },
|
|
3373
|
-
{ providers: ["anthropic", "github-copilot"], model: "claude-haiku-4-5" }
|
|
3374
|
-
{ providers: ["openai", "chatgpt-subscription"], model: "gpt-5.4-nano" }
|
|
3368
|
+
{ providers: ["anthropic", "github-copilot"], model: "claude-haiku-4-5" }
|
|
3375
3369
|
]
|
|
3376
3370
|
},
|
|
3377
3371
|
"multimodal-looker": {
|
|
@@ -3505,15 +3499,11 @@ var init_category_model_requirements = __esm(() => {
|
|
|
3505
3499
|
},
|
|
3506
3500
|
"deep-low": {
|
|
3507
3501
|
fallbackChain: [
|
|
3502
|
+
{ providers: ["openai", "chatgpt-subscription"], model: "gpt-6-sol-fast", variant: "medium" },
|
|
3508
3503
|
{
|
|
3509
3504
|
providers: ["openai", "chatgpt-subscription", "github-copilot", "opencode"],
|
|
3510
3505
|
model: "gpt-6-sol",
|
|
3511
3506
|
variant: "medium"
|
|
3512
|
-
},
|
|
3513
|
-
{
|
|
3514
|
-
providers: ["openai", "chatgpt-subscription", "github-copilot", "opencode"],
|
|
3515
|
-
model: "gpt-5.6-sol",
|
|
3516
|
-
variant: "medium"
|
|
3517
3507
|
}
|
|
3518
3508
|
]
|
|
3519
3509
|
},
|
|
@@ -3522,7 +3512,7 @@ var init_category_model_requirements = __esm(() => {
|
|
|
3522
3512
|
{
|
|
3523
3513
|
providers: ["openai", "chatgpt-subscription", "github-copilot", "opencode"],
|
|
3524
3514
|
model: "gpt-6-astra",
|
|
3525
|
-
variant: "
|
|
3515
|
+
variant: "xhigh"
|
|
3526
3516
|
}
|
|
3527
3517
|
]
|
|
3528
3518
|
},
|
|
@@ -3547,8 +3537,8 @@ var init_category_model_requirements = __esm(() => {
|
|
|
3547
3537
|
},
|
|
3548
3538
|
quick: {
|
|
3549
3539
|
fallbackChain: [
|
|
3550
|
-
{ providers: ["chatgpt-subscription"], model: "gpt-6-luna-fast", variant: "low" },
|
|
3551
|
-
{ providers: ["deepseek"], model: "deepseek-
|
|
3540
|
+
{ providers: ["openai", "chatgpt-subscription"], model: "gpt-6-luna-fast", variant: "low" },
|
|
3541
|
+
{ providers: ["deepseek"], model: "deepseek-flash", variant: "off" },
|
|
3552
3542
|
{
|
|
3553
3543
|
providers: ["qwen-token-plan", "alibaba-token-plan", "bailian-coding-plan"],
|
|
3554
3544
|
model: "qwen3.6-flash",
|
|
@@ -3592,7 +3582,7 @@ var init_category_model_requirements = __esm(() => {
|
|
|
3592
3582
|
{
|
|
3593
3583
|
providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
|
|
3594
3584
|
model: "claude-opus-5-5",
|
|
3595
|
-
variant: "
|
|
3585
|
+
variant: "medium"
|
|
3596
3586
|
},
|
|
3597
3587
|
{ providers: ["zai-coding-plan", "opencode-go"], model: "glm-5.3", variant: "max" },
|
|
3598
3588
|
{
|
|
@@ -3603,6 +3593,7 @@ var init_category_model_requirements = __esm(() => {
|
|
|
3603
3593
|
]
|
|
3604
3594
|
},
|
|
3605
3595
|
writing: {
|
|
3596
|
+
requiresAnyModel: true,
|
|
3606
3597
|
fallbackChain: [
|
|
3607
3598
|
{
|
|
3608
3599
|
providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
|
|
@@ -4071,6 +4062,22 @@ var init_supplemental_entries = __esm(() => {
|
|
|
4071
4062
|
output: 128000
|
|
4072
4063
|
}
|
|
4073
4064
|
},
|
|
4065
|
+
"gpt-6-sol-fast": {
|
|
4066
|
+
id: "gpt-6-sol-fast",
|
|
4067
|
+
family: "gpt",
|
|
4068
|
+
reasoning: true,
|
|
4069
|
+
temperature: false,
|
|
4070
|
+
toolCall: true,
|
|
4071
|
+
modalities: {
|
|
4072
|
+
input: ["text", "image"],
|
|
4073
|
+
output: ["text"]
|
|
4074
|
+
},
|
|
4075
|
+
limit: {
|
|
4076
|
+
context: 1050000,
|
|
4077
|
+
input: 922000,
|
|
4078
|
+
output: 128000
|
|
4079
|
+
}
|
|
4080
|
+
},
|
|
4074
4081
|
"gpt-6-luna": {
|
|
4075
4082
|
id: "gpt-6-luna",
|
|
4076
4083
|
family: "gpt-nano",
|
|
@@ -4151,6 +4158,21 @@ var init_supplemental_entries = __esm(() => {
|
|
|
4151
4158
|
output: 128000
|
|
4152
4159
|
}
|
|
4153
4160
|
},
|
|
4161
|
+
"deepseek-flash": {
|
|
4162
|
+
id: "deepseek-flash",
|
|
4163
|
+
family: "deepseek-flash",
|
|
4164
|
+
reasoning: true,
|
|
4165
|
+
temperature: true,
|
|
4166
|
+
toolCall: true,
|
|
4167
|
+
modalities: {
|
|
4168
|
+
input: ["text", "image"],
|
|
4169
|
+
output: ["text"]
|
|
4170
|
+
},
|
|
4171
|
+
limit: {
|
|
4172
|
+
context: 1e6,
|
|
4173
|
+
output: 384000
|
|
4174
|
+
}
|
|
4175
|
+
},
|
|
4154
4176
|
"gpt-6-luna-fast": {
|
|
4155
4177
|
id: "gpt-6-luna-fast",
|
|
4156
4178
|
family: "gpt-nano",
|
|
@@ -5207,7 +5229,7 @@ You are working on tasks that don't fit specific categories but require substant
|
|
|
5207
5229
|
</Category_Context>`, UNSPECIFIED_HIGH_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Use only when no specialist category fits and substantial effort spans systems/modules with broad impact. Use unspecified-low for contained moderate work.</Selection_Gate>`, DEEP_LOW_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Route here when one subsystem plus its callers holds the mechanism and the evidence, once read, leaves one right answer. Wide but mechanical work belongs here or in a quick batch. When unsure, choose deep-low: a misrouted child returns \`ESCALATE: deep-high\` after one cheap attempt; re-spawn the same brief as deep-high with its findings.</Selection_Gate>`, DEEP_HIGH_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Route here only when you can name the decision evidence cannot settle: a trade-off with no single right answer, a contract change crossing a package or process boundary, a mechanism with no in-repo pattern to copy, or correctness argued from invariants rather than observed in a test. Wide scope with easy decisions is deep-low or unspecified-high; reasoning as the deliverable is ultrabrain.</Selection_Gate>`, DEEP_LOW_GATE_MODELS, DEEP_HIGH_GATE_MODEL = "gpt-6-astra", OPENAI_CATEGORIES;
|
|
5208
5230
|
var init_openai_categories = __esm(() => {
|
|
5209
5231
|
init_types();
|
|
5210
|
-
DEEP_LOW_GATE_MODELS = ["gpt-6-sol", "gpt-
|
|
5232
|
+
DEEP_LOW_GATE_MODELS = ["gpt-6-sol-fast", "gpt-6-sol"];
|
|
5211
5233
|
OPENAI_CATEGORIES = [
|
|
5212
5234
|
{
|
|
5213
5235
|
name: "ultrabrain",
|
|
@@ -5218,7 +5240,7 @@ var init_openai_categories = __esm(() => {
|
|
|
5218
5240
|
},
|
|
5219
5241
|
{
|
|
5220
5242
|
name: "deep-low",
|
|
5221
|
-
config: { model: "openai/gpt-6-sol", variant: "medium" },
|
|
5243
|
+
config: { model: "openai/gpt-6-sol-fast", variant: "medium" },
|
|
5222
5244
|
description: "Default deep lane: one goal, one deliverable, decisions the child can settle from what it reads. **3D graphics, computer/browser use, CAPTCHA, multimodal, backend, logic, and algorithm work is routed here.** Multiple goals fan out as parallel calls.",
|
|
5223
5245
|
callerGuidance: DEEP_LOW_CATEGORY_CALLER_GUIDANCE,
|
|
5224
5246
|
promptAppend: DEEP_LOW_CATEGORY_PROMPT_APPEND,
|
|
@@ -5227,7 +5249,7 @@ var init_openai_categories = __esm(() => {
|
|
|
5227
5249
|
},
|
|
5228
5250
|
{
|
|
5229
5251
|
name: "deep-high",
|
|
5230
|
-
config: { model: "openai/gpt-6-astra", variant: "
|
|
5252
|
+
config: { model: "openai/gpt-6-astra", variant: "xhigh" },
|
|
5231
5253
|
description: "Escalation deep lane: a goal whose central decision cannot be settled from evidence alone. Same one-goal, one-deliverable contract as deep-low.",
|
|
5232
5254
|
callerGuidance: DEEP_HIGH_CATEGORY_CALLER_GUIDANCE,
|
|
5233
5255
|
promptAppend: DEEP_HIGH_CATEGORY_PROMPT_APPEND,
|
|
@@ -5250,7 +5272,7 @@ var init_openai_categories = __esm(() => {
|
|
|
5250
5272
|
},
|
|
5251
5273
|
{
|
|
5252
5274
|
name: "unspecified-high",
|
|
5253
|
-
config: { model: "anthropic/claude-opus-5-5", variant: "
|
|
5275
|
+
config: { model: "anthropic/claude-opus-5-5", variant: "medium" },
|
|
5254
5276
|
description: "Tasks that don't fit other categories, high effort required",
|
|
5255
5277
|
callerGuidance: UNSPECIFIED_HIGH_CATEGORY_CALLER_GUIDANCE,
|
|
5256
5278
|
promptAppend: UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND,
|
|
@@ -69903,6 +69925,8 @@ var init_model_profile = __esm(() => {
|
|
|
69903
69925
|
init_fallback_models();
|
|
69904
69926
|
OmoModelProfileInputSchema = object({
|
|
69905
69927
|
display_name: string2().optional(),
|
|
69928
|
+
family: _enum(["daily", "geeky"]).optional(),
|
|
69929
|
+
tier: _enum(["normal", "heavy"]).optional(),
|
|
69906
69930
|
models: array(union([string2(), OmoFallbackModelObjectSchema])).optional()
|
|
69907
69931
|
}).strict();
|
|
69908
69932
|
OmoModelProfileSchema = preprocess((value) => isRecord8(value) ? normalizeLegacyModelFields(value) : value, OmoModelProfileInputSchema);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "oh-my-opencode",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.87",
|
|
4
4
|
"description": "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -183,7 +183,7 @@
|
|
|
183
183
|
"zod": "^4.6.5"
|
|
184
184
|
},
|
|
185
185
|
"devDependencies": {
|
|
186
|
-
"@code-yeongyu/senpi": "2026.9.23",
|
|
186
|
+
"@code-yeongyu/senpi": "2026.9.23-4",
|
|
187
187
|
"@oh-my-opencode/agents-md-core": "workspace:*",
|
|
188
188
|
"@oh-my-opencode/ast-grep-mcp": "workspace:*",
|
|
189
189
|
"@oh-my-opencode/boulder-state": "workspace:*",
|
|
@@ -219,22 +219,23 @@
|
|
|
219
219
|
"@xterm/xterm": "^6.0.0",
|
|
220
220
|
"bun-types": "1.4.2",
|
|
221
221
|
"node-pty": "^1.1.0",
|
|
222
|
+
"omowright": "github:code-yeongyu/omowright#25781c8ac04f9aae358b06551520b792ac45c6ed",
|
|
222
223
|
"puppeteer-core": "^25.11.0",
|
|
223
224
|
"typescript": "^7.0.2"
|
|
224
225
|
},
|
|
225
226
|
"optionalDependencies": {
|
|
226
|
-
"oh-my-opencode-darwin-arm64": "5.0.0-beta.
|
|
227
|
-
"oh-my-opencode-darwin-x64": "5.0.0-beta.
|
|
228
|
-
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.
|
|
229
|
-
"oh-my-opencode-linux-arm64": "5.0.0-beta.
|
|
230
|
-
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.
|
|
231
|
-
"oh-my-opencode-linux-x64": "5.0.0-beta.
|
|
232
|
-
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.
|
|
233
|
-
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.
|
|
234
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.
|
|
235
|
-
"oh-my-opencode-windows-arm64": "5.0.0-beta.
|
|
236
|
-
"oh-my-opencode-windows-x64": "5.0.0-beta.
|
|
237
|
-
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.
|
|
227
|
+
"oh-my-opencode-darwin-arm64": "5.0.0-beta.87",
|
|
228
|
+
"oh-my-opencode-darwin-x64": "5.0.0-beta.87",
|
|
229
|
+
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.87",
|
|
230
|
+
"oh-my-opencode-linux-arm64": "5.0.0-beta.87",
|
|
231
|
+
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.87",
|
|
232
|
+
"oh-my-opencode-linux-x64": "5.0.0-beta.87",
|
|
233
|
+
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.87",
|
|
234
|
+
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.87",
|
|
235
|
+
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.87",
|
|
236
|
+
"oh-my-opencode-windows-arm64": "5.0.0-beta.87",
|
|
237
|
+
"oh-my-opencode-windows-x64": "5.0.0-beta.87",
|
|
238
|
+
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.87"
|
|
238
239
|
},
|
|
239
240
|
"overrides": {
|
|
240
241
|
"@earendil-works/pi-agent-core": "0.84.2",
|
|
@@ -7292,6 +7292,8 @@ function isRecord6(value) {
|
|
|
7292
7292
|
}
|
|
7293
7293
|
var OmoModelProfileInputSchema = object({
|
|
7294
7294
|
display_name: string2().optional(),
|
|
7295
|
+
family: _enum(["daily", "geeky"]).optional(),
|
|
7296
|
+
tier: _enum(["normal", "heavy"]).optional(),
|
|
7295
7297
|
models: array(union([string2(), OmoFallbackModelObjectSchema])).optional()
|
|
7296
7298
|
}).strict();
|
|
7297
7299
|
var OmoModelProfileSchema = preprocess((value) => isRecord6(value) ? normalizeLegacyModelFields(value) : value, OmoModelProfileInputSchema);
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/bootstrap/dist/cli.js\" hook session-start",
|
|
9
9
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\bootstrap.ps1\"",
|
|
10
10
|
"timeout": 30,
|
|
11
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
11
|
+
"statusMessage": "(OmO 5.0.0-beta.87) Checking Bootstrap Provisioning"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sisyphuslabs/codex-bootstrap",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.87",
|
|
4
4
|
"description": "Codex SessionStart bootstrap component that provisions LazyCodex runtime dependencies from a detached worker.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"private": true,
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "command",
|
|
9
9
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook pre-tool-use",
|
|
10
10
|
"timeout": 5,
|
|
11
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
11
|
+
"statusMessage": "(OmO 5.0.0-beta.87) Recommending Git Bash MCP"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"type": "command",
|
|
21
21
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
|
|
22
22
|
"timeout": 5,
|
|
23
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
23
|
+
"statusMessage": "(OmO 5.0.0-beta.87) Resetting Git Bash MCP Reminder"
|
|
24
24
|
}
|
|
25
25
|
]
|
|
26
26
|
}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "command",
|
|
9
9
|
"command": "node \"${PLUGIN_ROOT}/components/lazycodex-executor-verify/dist/cli.js\" hook subagent-stop",
|
|
10
10
|
"timeout": 10,
|
|
11
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
11
|
+
"statusMessage": "(OmO 5.0.0-beta.87) Verifying LazyCodex Executor Evidence"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code-yeongyu/codex-lazycodex-executor-verify",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.87",
|
|
4
4
|
"description": "Codex SubagentStop evidence verifier for LazyCodex executor completions.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "npm@11.12.1",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"version": "5.0.0-beta.
|
|
4
|
-
"inputDigest": "sha256:
|
|
3
|
+
"version": "5.0.0-beta.87",
|
|
4
|
+
"inputDigest": "sha256:72acd620e3bb18d2b7ff2299536bc0c48b009811a865fa1504e934010d24ea98",
|
|
5
5
|
"outputs": [
|
|
6
6
|
{
|
|
7
7
|
"path": "cli.d.ts",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "command",
|
|
9
9
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
|
|
10
10
|
"timeout": 60,
|
|
11
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
11
|
+
"statusMessage": "(OmO 5.0.0-beta.87) Checking LSP Diagnostics"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"type": "command",
|
|
22
22
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
|
|
23
23
|
"timeout": 5,
|
|
24
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
24
|
+
"statusMessage": "(OmO 5.0.0-beta.87) Resetting LSP Diagnostics Cache"
|
|
25
25
|
}
|
|
26
26
|
]
|
|
27
27
|
}
|
|
@@ -53,7 +53,7 @@ Arm an available completion or state-change subscription when starting a build,
|
|
|
53
53
|
|
|
54
54
|
Scale the scope of checks to the change and keep the rigor. A non-behavioral single-file edit needs diagnostics on that file. A single-domain behavior change adds related tests and one run of the affected entry point. Multi-file or cross-cutting work adds the build and user-visible behavior exercised through its real surface. omo-codex injects LSP diagnostics after edits; reported errors are blocking until resolved. Broaden or repeat checks only when a new change, failure, or open concern justifies it; otherwise keep moving toward completion.
|
|
55
55
|
|
|
56
|
-
|
|
56
|
+
Read existing tests first - the behavior of record: update those your change makes stale; one wrong before your change is a finding, not a test to edit green. Reproduce a bug before fixing it. The run proves the change: add a test only where the repository keeps tests for this behavior and a regression would otherwise pass unnoticed - sized like its neighbors, never restating the change.
|
|
57
57
|
|
|
58
58
|
### Test Discipline
|
|
59
59
|
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook session-start",
|
|
9
9
|
"timeout": 10,
|
|
10
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
10
|
+
"statusMessage": "(OmO 5.0.0-beta.87) Loading Project Rules"
|
|
11
11
|
}
|
|
12
12
|
]
|
|
13
13
|
}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"type": "command",
|
|
20
20
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook user-prompt-submit",
|
|
21
21
|
"timeout": 10,
|
|
22
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
22
|
+
"statusMessage": "(OmO 5.0.0-beta.87) Loading Project Rules"
|
|
23
23
|
}
|
|
24
24
|
]
|
|
25
25
|
}
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"type": "command",
|
|
33
33
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
|
|
34
34
|
"timeout": 10,
|
|
35
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
35
|
+
"statusMessage": "(OmO 5.0.0-beta.87) Matching Project Rules"
|
|
36
36
|
}
|
|
37
37
|
]
|
|
38
38
|
}
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"type": "command",
|
|
46
46
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
|
|
47
47
|
"timeout": 10,
|
|
48
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
48
|
+
"statusMessage": "(OmO 5.0.0-beta.87) Resetting Project Rule Cache"
|
|
49
49
|
}
|
|
50
50
|
]
|
|
51
51
|
}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "command",
|
|
9
9
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
|
|
10
10
|
"timeout": 10,
|
|
11
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
11
|
+
"statusMessage": "(OmO 5.0.0-beta.87) Checking Thread Title Hygiene"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code-yeongyu/codex-telemetry",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.87",
|
|
4
4
|
"description": "Codex plugin component that emits omo-codex anonymous daily-active telemetry on SessionStart.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "npm@11.12.1",
|
|
@@ -11,7 +11,7 @@ All 12 bundled agent TOMLs set `model = "gpt-6-astra"`; each role keeps its own
|
|
|
11
11
|
| Mandate | Behavior |
|
|
12
12
|
|---|---|
|
|
13
13
|
| Goal + binding success criteria | Call `create_goal` (or open with a `# Goal` block) listing the deliverable + **3+ realistic QA scenarios** (happy path, edge cases, adjacent-surface regression). Each scenario MUST name which **Manual-QA channel** it will use. "Tests pass" is supporting signal, NEVER completion proof. |
|
|
14
|
-
| Manual-QA channels (TESTS ALONE NEVER PROVE DONE) | A dedicated top-level section enumerates the **four** channels you can use to verify a criterion in reality: **(1) HTTP call** (`curl -i` /
|
|
14
|
+
| Manual-QA channels (TESTS ALONE NEVER PROVE DONE) | A dedicated top-level section enumerates the **four** channels you can use to verify a criterion in reality: **(1) HTTP call** (`curl -i` / an HTTP client from js eval), **(2) tmux** (`tmux new-session` + `send-keys` + `capture-pane`), **(3) Browser use** (in Codex, `browser:control-in-app-browser` first when no authenticated/persistent browser profile is needed; otherwise omowright driving the real page — the owned engine for a browser you launch, the attached engine for the user's signed-in browser), **(4) Computer use** (OS-level GUI automation against the running app). Every criterion picks one channel, builds a real-usage scenario, runs it, and captures the artifact — every time. Aux surfaces (CLI stdout / DB diff / parsed config) only count for genuinely CLI- or data-shaped criteria. |
|
|
15
15
|
| Surface + paired cleanup | Execution loop step 4 (**SURFACE-AS-SCENARIO**) runs the chosen channel scenario end-to-end. Step 5 (**CLEANUP, PAIRED**) tears down every QA-spawned process / tmux session / browser context / container / port / temp dir, with a one-line receipt appended to the notepad. Leftover state → NOT done. |
|
|
16
16
|
| Durable /tmp notepad | `mktemp -t ulw-$(date +%Y%m%d-%H%M%S).XXXXXX.md` with sections `Plan`, `Success criteria + QA scenarios`, `Now`, `Todo`, `Findings`, `Learnings`. **Append**, never rewrite. |
|
|
17
17
|
| Obsessive atomic todos | Every action — even one-line edits, `ls`, single test runs — becomes a todo. Format: `path: <action> for <criterion> — verify by <check>`. One in_progress at a time, mark completed immediately. |
|