oh-my-opencode 5.0.0-beta.62 → 5.0.0-beta.63

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.
Files changed (213) hide show
  1. package/THIRD-PARTY-NOTICES.md +8 -6
  2. package/dist/cli/doctor/checks/browser-provider.d.ts +2 -0
  3. package/dist/cli/index.js +64 -35
  4. package/dist/cli-node/index.js +64 -35
  5. package/dist/config/schema/agent-names.d.ts +0 -1
  6. package/dist/config/schema/browser-automation.d.ts +0 -2
  7. package/dist/config/schema/oh-my-opencode-config.d.ts +0 -1
  8. package/dist/hooks/comment-checker/__fixtures__/download-probe.fixture.d.ts +1 -0
  9. package/dist/index.js +61 -535
  10. package/dist/oh-my-opencode.schema.json +0 -1
  11. package/dist/skills/ast-grep/SKILL.md +12 -0
  12. package/dist/skills/debugging/references/tools/playwright-cli.md +79 -161
  13. package/dist/skills/frontend/SKILL.md +1 -1
  14. package/dist/skills/frontend/references/design/aside.md +1 -1
  15. package/dist/skills/frontend/references/design/clone-from-url.md +1 -1
  16. package/dist/skills/frontend/scripts/perfection/lighthouse-audit.py +2 -2
  17. package/dist/skills/review-work/SKILL.md +1 -1
  18. package/dist/skills/ultimate-browsing/ATTRIBUTION.md +1 -82
  19. package/dist/skills/ultimate-browsing/SKILL.md +17 -29
  20. package/dist/skills/ultimate-browsing/engine/AGENTS.md +2 -1
  21. package/dist/skills/ultimate-browsing/engine/templates/package.json +2 -2
  22. package/dist/skills/ultimate-browsing/engine/templates/playwright_mobile_chrome.js +5 -2
  23. package/dist/skills/ultimate-browsing/engine/templates/playwright_real_chrome.js +8 -6
  24. package/dist/skills/ultimate-browsing/engine/tests/test_playwright_stealth.py +86 -0
  25. package/dist/skills/ultimate-browsing/engine/tests/test_playwright_templates.py +4 -7
  26. package/dist/skills/ultimate-browsing/references/chrome-stealth.md +86 -100
  27. package/dist/skills/ultimate-browsing/references/insane-search/README.md +9 -3
  28. package/dist/skills/ultimate-browsing/references/insane-search/playwright.md +16 -13
  29. package/dist/skills/ultimate-browsing/scripts/extract_cookies.py +3 -3
  30. package/dist/skills/ulw-execute/SKILL.md +1 -1
  31. package/dist/skills/ulw-plan/scripts/scaffold-plan.mjs +1 -1
  32. package/dist/skills/ulw-research/SKILL.md +3 -3
  33. package/dist/skills/visual-qa/AGENTS.md +1 -1
  34. package/dist/skills/visual-qa/SKILL.md +1 -1
  35. package/dist/skills/visual-qa/references/browser-setup.md +75 -0
  36. package/dist/tui.js +12 -5
  37. package/package.json +16 -23
  38. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  39. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +2 -0
  40. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  41. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  42. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  43. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  44. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  45. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  46. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  47. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  48. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
  49. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  50. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  51. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  52. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  53. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  54. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  55. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  56. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  57. package/packages/omo-codex/plugin/components/ultrawork/agents/plan.toml +2 -2
  58. package/packages/omo-codex/plugin/components/ultrawork/dist/cli.js +5 -4
  59. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  60. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  61. package/packages/omo-codex/plugin/components/ultrawork/src/directive-content.ts +1 -1
  62. package/packages/omo-codex/plugin/components/ulw-execute-continuation/directive.md +1 -1
  63. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
  64. package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
  65. package/packages/omo-codex/plugin/components/ulw-loop/CHANGELOG.md +13 -0
  66. package/packages/omo-codex/plugin/components/ulw-loop/directive.md +5 -4
  67. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint.js +5 -4
  68. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +582 -322
  69. package/packages/omo-codex/plugin/components/ulw-loop/dist/domain-types.d.ts +5 -0
  70. package/packages/omo-codex/plugin/components/ulw-loop/dist/evidence.js +16 -12
  71. package/packages/omo-codex/plugin/components/ulw-loop/dist/ledger.d.ts +4 -0
  72. package/packages/omo-codex/plugin/components/ulw-loop/dist/ledger.js +34 -0
  73. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-commit.d.ts +19 -0
  74. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-commit.js +107 -0
  75. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-crud.d.ts +2 -1
  76. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-crud.js +48 -22
  77. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-io.d.ts +9 -7
  78. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-io.js +105 -114
  79. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-log.d.ts +15 -0
  80. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-log.js +86 -0
  81. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-missing-recovery.d.ts +5 -1
  82. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-missing-recovery.js +15 -3
  83. package/packages/omo-codex/plugin/components/ulw-loop/dist/review-blockers.js +3 -4
  84. package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/factory.js +12 -5
  85. package/packages/omo-codex/plugin/components/ulw-loop/dist/spawn-budget-io.d.ts +5 -0
  86. package/packages/omo-codex/plugin/components/ulw-loop/dist/spawn-budget-io.js +67 -0
  87. package/packages/omo-codex/plugin/components/ulw-loop/dist/spawn-guard.js +8 -62
  88. package/packages/omo-codex/plugin/components/ulw-loop/dist/state-lock.d.ts +11 -1
  89. package/packages/omo-codex/plugin/components/ulw-loop/dist/state-lock.js +120 -88
  90. package/packages/omo-codex/plugin/components/ulw-loop/dist/status-next-actions.d.ts +3 -2
  91. package/packages/omo-codex/plugin/components/ulw-loop/dist/status-next-actions.js +18 -10
  92. package/packages/omo-codex/plugin/components/ulw-loop/dist/steering-batch.js +4 -4
  93. package/packages/omo-codex/plugin/components/ulw-loop/dist/steering.js +5 -5
  94. package/packages/omo-codex/plugin/components/ulw-loop/dist/stop-resume-hook.js +8 -17
  95. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
  96. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  97. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +2 -2
  98. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint.ts +5 -4
  99. package/packages/omo-codex/plugin/components/ulw-loop/src/domain-types.ts +5 -0
  100. package/packages/omo-codex/plugin/components/ulw-loop/src/evidence.ts +16 -16
  101. package/packages/omo-codex/plugin/components/ulw-loop/src/ledger.ts +33 -0
  102. package/packages/omo-codex/plugin/components/ulw-loop/src/plan-commit.ts +124 -0
  103. package/packages/omo-codex/plugin/components/ulw-loop/src/plan-crud.ts +58 -51
  104. package/packages/omo-codex/plugin/components/ulw-loop/src/plan-io.ts +126 -140
  105. package/packages/omo-codex/plugin/components/ulw-loop/src/plan-log.ts +84 -0
  106. package/packages/omo-codex/plugin/components/ulw-loop/src/plan-missing-recovery.ts +26 -3
  107. package/packages/omo-codex/plugin/components/ulw-loop/src/review-blockers.ts +3 -3
  108. package/packages/omo-codex/plugin/components/ulw-loop/src/sdk/factory.ts +30 -5
  109. package/packages/omo-codex/plugin/components/ulw-loop/src/spawn-budget-io.ts +59 -0
  110. package/packages/omo-codex/plugin/components/ulw-loop/src/spawn-guard.ts +8 -59
  111. package/packages/omo-codex/plugin/components/ulw-loop/src/state-lock.ts +129 -111
  112. package/packages/omo-codex/plugin/components/ulw-loop/src/status-next-actions.ts +19 -10
  113. package/packages/omo-codex/plugin/components/ulw-loop/src/steering-batch.ts +4 -4
  114. package/packages/omo-codex/plugin/components/ulw-loop/src/steering.ts +5 -4
  115. package/packages/omo-codex/plugin/components/ulw-loop/src/stop-resume-hook.ts +8 -16
  116. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/barrier.ts +13 -0
  117. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/commit-child.ts +65 -0
  118. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/commit-cli-qa.mjs +76 -0
  119. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/commit-crash.ts +23 -0
  120. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/commit-mutations.mjs +58 -0
  121. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/commit-writer.ts +65 -0
  122. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/lease-clock.ts +23 -0
  123. package/packages/omo-codex/plugin/components/ulw-loop/test/plan-commit-log.test.ts +252 -0
  124. package/packages/omo-codex/plugin/components/ulw-loop/test/plan-commit-recovery.test.ts +190 -0
  125. package/packages/omo-codex/plugin/components/ulw-loop/test/plan-io.test.ts +50 -35
  126. package/packages/omo-codex/plugin/components/ulw-loop/test/plan-log-newest.test.ts +72 -0
  127. package/packages/omo-codex/plugin/components/ulw-loop/test/sdk-completed-plan.test.ts +43 -0
  128. package/packages/omo-codex/plugin/components/ulw-loop/test/sdk-session-context.test.ts +21 -0
  129. package/packages/omo-codex/plugin/components/ulw-loop/test/state-lock.test.ts +92 -0
  130. package/packages/omo-codex/plugin/components/ulw-loop/test/status-next-actions-surface.test.ts +133 -0
  131. package/packages/omo-codex/plugin/components/ulw-loop/test/steering-batch.test.ts +12 -12
  132. package/packages/omo-codex/plugin/components/ulw-loop/test/steering.test.ts +4 -1
  133. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  134. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  135. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  136. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  137. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  138. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  139. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  140. package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
  141. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  142. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  143. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  144. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  145. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  146. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  147. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  148. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
  149. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  150. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  151. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  152. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  153. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  154. package/packages/omo-codex/plugin/package-lock.json +12 -12
  155. package/packages/omo-codex/plugin/package.json +1 -1
  156. package/packages/omo-codex/plugin/scripts/sync-skills.d.mts +4 -0
  157. package/packages/omo-codex/plugin/scripts/sync-skills.mjs +15 -7
  158. package/packages/omo-codex/plugin/skills/ast-grep/SKILL.md +12 -0
  159. package/packages/omo-codex/plugin/skills/debugging/references/tools/playwright-cli.md +79 -161
  160. package/packages/omo-codex/plugin/skills/frontend/SKILL.md +1 -1
  161. package/packages/omo-codex/plugin/skills/frontend/references/design/aside.md +1 -1
  162. package/packages/omo-codex/plugin/skills/frontend/references/design/clone-from-url.md +1 -1
  163. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/lighthouse-audit.py +2 -2
  164. package/packages/omo-codex/plugin/skills/review-work/SKILL.md +1 -1
  165. package/packages/omo-codex/plugin/skills/ultimate-browsing/ATTRIBUTION.md +1 -82
  166. package/packages/omo-codex/plugin/skills/ultimate-browsing/SKILL.md +17 -29
  167. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/AGENTS.md +2 -1
  168. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/templates/package.json +2 -2
  169. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/templates/playwright_mobile_chrome.js +5 -2
  170. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/templates/playwright_real_chrome.js +8 -6
  171. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/test_playwright_stealth.py +86 -0
  172. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/test_playwright_templates.py +4 -7
  173. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/chrome-stealth.md +86 -100
  174. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/README.md +9 -3
  175. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/playwright.md +16 -13
  176. package/packages/omo-codex/plugin/skills/ultimate-browsing/scripts/extract_cookies.py +3 -3
  177. package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +5 -4
  178. package/packages/omo-codex/plugin/skills/ulw-execute/SKILL.md +1 -1
  179. package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +2 -2
  180. package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +3 -3
  181. package/packages/omo-codex/plugin/skills/visual-qa/AGENTS.md +1 -1
  182. package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +1 -1
  183. package/packages/omo-codex/plugin/skills/visual-qa/references/browser-setup.md +75 -0
  184. package/packages/omo-codex/scripts/install-dist/install-local.mjs +4 -2
  185. package/packages/prompts-core/prompts/ultrawork/codex.md +5 -4
  186. package/packages/shared-skills/skills/ast-grep/SKILL.md +12 -0
  187. package/packages/shared-skills/skills/debugging/references/tools/playwright-cli.md +79 -161
  188. package/packages/shared-skills/skills/frontend/SKILL.md +1 -1
  189. package/packages/shared-skills/skills/frontend/references/design/aside.md +1 -1
  190. package/packages/shared-skills/skills/frontend/references/design/clone-from-url.md +1 -1
  191. package/packages/shared-skills/skills/frontend/scripts/perfection/lighthouse-audit.py +2 -2
  192. package/packages/shared-skills/skills/review-work/SKILL.md +1 -1
  193. package/packages/shared-skills/skills/ultimate-browsing/ATTRIBUTION.md +1 -82
  194. package/packages/shared-skills/skills/ultimate-browsing/SKILL.md +17 -29
  195. package/packages/shared-skills/skills/ultimate-browsing/engine/AGENTS.md +2 -1
  196. package/packages/shared-skills/skills/ultimate-browsing/engine/templates/package.json +2 -2
  197. package/packages/shared-skills/skills/ultimate-browsing/engine/templates/playwright_mobile_chrome.js +5 -2
  198. package/packages/shared-skills/skills/ultimate-browsing/engine/templates/playwright_real_chrome.js +8 -6
  199. package/packages/shared-skills/skills/ultimate-browsing/engine/tests/test_playwright_stealth.py +86 -0
  200. package/packages/shared-skills/skills/ultimate-browsing/engine/tests/test_playwright_templates.py +4 -7
  201. package/packages/shared-skills/skills/ultimate-browsing/references/chrome-stealth.md +86 -100
  202. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/README.md +9 -3
  203. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/playwright.md +16 -13
  204. package/packages/shared-skills/skills/ultimate-browsing/scripts/extract_cookies.py +3 -3
  205. package/packages/shared-skills/skills/ulw-execute/SKILL.md +1 -1
  206. package/packages/shared-skills/skills/ulw-plan/scripts/scaffold-plan.mjs +1 -1
  207. package/packages/shared-skills/skills/ulw-research/SKILL.md +3 -3
  208. package/packages/shared-skills/skills/visual-qa/AGENTS.md +1 -1
  209. package/packages/shared-skills/skills/visual-qa/SKILL.md +1 -1
  210. package/packages/shared-skills/skills/visual-qa/references/browser-setup.md +75 -0
  211. package/dist/skills/visual-qa/references/agent-browser-setup.md +0 -45
  212. package/packages/omo-codex/plugin/skills/visual-qa/references/agent-browser-setup.md +0 -45
  213. package/packages/shared-skills/skills/visual-qa/references/agent-browser-setup.md +0 -45
@@ -0,0 +1,75 @@
1
+ # Browser setup (Web capture)
2
+
3
+ Use the js-eval kernel for both tiers. In Codex, prefer
4
+ `browser:control-in-app-browser` for ordinary captures.
5
+
6
+ ## Tier 1: Bun.WebView
7
+
8
+ On a Bun >= 1.4 kernel, `new Bun.WebView()` is the macOS default (system
9
+ WebKit, no browser download). Linux/Windows require `backend: "chrome"`
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.
12
+
13
+ ```js
14
+ // js-eval cell; url and pngPath belong to this QA run.
15
+ const view = new Bun.WebView({ width: 1280, height: 720 })
16
+ try {
17
+ await view.navigate(url)
18
+ await Bun.write(pngPath, await view.screenshot())
19
+ console.log(pngPath)
20
+ } finally {
21
+ view[Symbol.dispose]()
22
+ }
23
+ ```
24
+
25
+ ## Tier 2: playwright-core with local Chrome
26
+
27
+ For other kernels, real-Chrome semantics, stealth, traces, or authenticated
28
+ profiles, WRITE a script beside the project's installed `playwright-core`
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.
32
+
33
+ ```js
34
+ // capture.mjs
35
+ import { chromium } from "playwright-core"
36
+ const [url, pngPath] = process.argv.slice(2)
37
+ const browser = await chromium.launch({ channel: "chrome", headless: true })
38
+ try {
39
+ const page = await browser.newPage({ viewport: { width: 1280, height: 720 }, deviceScaleFactor: 1 })
40
+ await page.goto(url, { waitUntil: "load", timeout: 30000 })
41
+ await page.screenshot({ path: pngPath })
42
+ console.log(pngPath)
43
+ } finally {
44
+ await browser.close()
45
+ }
46
+ ```
47
+
48
+ Run from the js-eval kernel (also works on a Node kernel):
49
+
50
+ ```js
51
+ const { promisify } = await import("node:util")
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`.
62
+
63
+ ## Capture a screenshot at a fixed viewport
64
+
65
+ Match CSS viewport AND PNG dimensions: WebKit follows native display scale
66
+ (a 1280x720 viewport can yield 2560x1440 pixels). Use matching reference
67
+ captures or Chrome's `deviceScaleFactor`, not resizing to force a pass.
68
+ Wait for the specific page state, not a sleep, then compare:
69
+
70
+ ```sh
71
+ node "$SKILL_DIR/scripts/visual-qa.mjs" image-diff reference.png actual.png
72
+ ```
73
+
74
+ Inspect `dimensionsMatch` and `diffRatio`, then inspect the image. Close every
75
+ WebView/browser context and the fixture server, even on a failed capture.
package/dist/tui.js CHANGED
@@ -3291,15 +3291,20 @@ var init_agent_model_requirements = __esm(() => {
3291
3291
  },
3292
3292
  metis: {
3293
3293
  fallbackChain: [
3294
+ {
3295
+ providers: ["anthropic", "github-copilot", "opencode"],
3296
+ model: "claude-fable-5-1",
3297
+ variant: "max"
3298
+ },
3294
3299
  {
3295
3300
  providers: ["anthropic", "github-copilot", "opencode"],
3296
3301
  model: "claude-opus-5",
3297
- variant: "high"
3302
+ variant: "max"
3298
3303
  },
3299
3304
  {
3300
3305
  providers: ["opencode-go", "kimi-for-coding", "moonshotai", "opencode"],
3301
3306
  model: "kimi-k3",
3302
- variant: "low"
3307
+ variant: "max"
3303
3308
  }
3304
3309
  ]
3305
3310
  },
@@ -68300,6 +68305,7 @@ var init_task = __esm(() => {
68300
68305
  model_concurrency: record(string2(), number2().int().nonnegative()).optional(),
68301
68306
  max_depth: number2().int().nonnegative().default(1),
68302
68307
  residency_max_children: ResidencyMaxChildrenInputSchema.default(8),
68308
+ resident_idle_timeout_ms: number2().int().positive().max(Number.MAX_SAFE_INTEGER).default(900000),
68303
68309
  ttl_ms: number2().int().positive().default(86400000),
68304
68310
  state_dir: string2().optional(),
68305
68311
  reattach_on_reconcile: boolean2().optional(),
@@ -68344,6 +68350,7 @@ var init_task = __esm(() => {
68344
68350
  model_concurrency: record(string2(), number2().int().nonnegative()).optional(),
68345
68351
  max_depth: number2().int().nonnegative().optional(),
68346
68352
  residency_max_children: ResidencyMaxChildrenInputSchema.optional(),
68353
+ resident_idle_timeout_ms: number2().int().positive().max(Number.MAX_SAFE_INTEGER).optional(),
68347
68354
  ttl_ms: number2().int().positive().optional(),
68348
68355
  state_dir: string2().optional(),
68349
68356
  reattach_on_reconcile: boolean2().optional(),
@@ -69501,7 +69508,6 @@ var init_agent_names = __esm(() => {
69501
69508
  ]);
69502
69509
  BuiltinSkillNameSchema = _enum([
69503
69510
  "playwright",
69504
- "agent-browser",
69505
69511
  "dev-browser",
69506
69512
  "frontend",
69507
69513
  "git-master",
@@ -69686,10 +69692,11 @@ var init_browser_automation = __esm(() => {
69686
69692
  init_zod();
69687
69693
  BrowserAutomationProviderSchema = _enum([
69688
69694
  "playwright",
69689
- "agent-browser",
69690
69695
  "dev-browser",
69691
69696
  "playwright-cli"
69692
- ]);
69697
+ ], {
69698
+ error: (issue) => `Browser provider ${JSON.stringify(issue.input)} is no longer supported; use the built-in browser path: Bun.WebView / playwright-core scripts`
69699
+ });
69693
69700
  BrowserAutomationConfigSchema = object({
69694
69701
  provider: BrowserAutomationProviderSchema.default("playwright"),
69695
69702
  playwright_mcp_args: array(string2()).optional()
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-opencode",
3
- "version": "5.0.0-beta.62",
3
+ "version": "5.0.0-beta.63",
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",
@@ -32,8 +32,6 @@
32
32
  "packages/omo-codex",
33
33
  "packages/omo-senpi",
34
34
  "packages/senpi-task",
35
- "packages/pi-goal",
36
- "packages/pi-webfetch",
37
35
  "packages/omo-opencode",
38
36
  "packages/omo-native"
39
37
  ],
@@ -135,7 +133,7 @@
135
133
  "prepublishOnly": "bun run clean && bun run build:lsp-tools-mcp && bun run build:lsp-daemon && bun run build",
136
134
  "test:model-capabilities": "bun test --timeout 20000 packages/model-core/src/model-capability-aliases.test.ts packages/model-core/src/model-capability-guardrails.test.ts packages/model-core/src/model-capabilities.test.ts packages/omo-opencode/src/cli/doctor/checks/model-resolution.test.ts --bail",
137
135
  "typecheck": "tsgo --noEmit && bun run typecheck:script && bun run typecheck:packages",
138
- "typecheck:packages": "tsgo --noEmit -p packages/rules-engine/tsconfig.json && tsgo --noEmit -p packages/delegate-core/tsconfig.json && tsgo --noEmit -p packages/mcp-stdio-core/tsconfig.json && tsgo --noEmit -p packages/mcp-client-core/tsconfig.json && tsgo --noEmit -p packages/git-bash-mcp/tsconfig.json && tsgo --noEmit -p packages/ast-grep-mcp/tsconfig.json && tsgo --noEmit -p packages/lsp-core/tsconfig.json && tsgo --noEmit -p packages/utils/tsconfig.json && tsgo --noEmit -p packages/model-core/tsconfig.json && tsgo --noEmit -p packages/omo-config-core/tsconfig.json && tsgo --noEmit -p packages/prompts-core/tsconfig.json && tsgo --noEmit -p packages/comment-checker-core/tsconfig.json && tsgo --noEmit -p packages/hashline-core/tsconfig.json && tsgo --noEmit -p packages/tmux-core/tsconfig.json && tsgo --noEmit -p packages/team-core/tsconfig.json && tsgo --noEmit -p packages/openclaw-core/tsconfig.json && tsgo --noEmit -p packages/boulder-state/tsconfig.json && tsgo --noEmit -p packages/memory-core/tsconfig.json && tsgo --noEmit -p packages/telemetry-core/tsconfig.json && tsgo --noEmit -p packages/claude-code-compat-core/tsconfig.json && tsgo --noEmit -p packages/skills-loader-core/tsconfig.json && tsgo --noEmit -p packages/agents-md-core/tsconfig.json && tsgo --noEmit -p packages/omo-codex/plugin/shared/tsconfig.json && tsgo --noEmit -p packages/omo-codex/tsconfig.json && tsgo --noEmit -p packages/omo-senpi/tsconfig.json && tsgo --noEmit -p packages/senpi-task/tsconfig.json && tsgo --noEmit -p packages/pi-goal/tsconfig.json && tsgo --noEmit -p packages/pi-webfetch/tsconfig.json && tsgo --noEmit -p packages/omo-opencode/tsconfig.json && tsgo --noEmit -p packages/omo-native/tsconfig.json",
136
+ "typecheck:packages": "tsgo --noEmit -p packages/rules-engine/tsconfig.json && tsgo --noEmit -p packages/delegate-core/tsconfig.json && tsgo --noEmit -p packages/mcp-stdio-core/tsconfig.json && tsgo --noEmit -p packages/mcp-client-core/tsconfig.json && tsgo --noEmit -p packages/git-bash-mcp/tsconfig.json && tsgo --noEmit -p packages/ast-grep-mcp/tsconfig.json && tsgo --noEmit -p packages/lsp-core/tsconfig.json && tsgo --noEmit -p packages/utils/tsconfig.json && tsgo --noEmit -p packages/model-core/tsconfig.json && tsgo --noEmit -p packages/omo-config-core/tsconfig.json && tsgo --noEmit -p packages/prompts-core/tsconfig.json && tsgo --noEmit -p packages/comment-checker-core/tsconfig.json && tsgo --noEmit -p packages/hashline-core/tsconfig.json && tsgo --noEmit -p packages/tmux-core/tsconfig.json && tsgo --noEmit -p packages/team-core/tsconfig.json && tsgo --noEmit -p packages/openclaw-core/tsconfig.json && tsgo --noEmit -p packages/boulder-state/tsconfig.json && tsgo --noEmit -p packages/memory-core/tsconfig.json && tsgo --noEmit -p packages/telemetry-core/tsconfig.json && tsgo --noEmit -p packages/claude-code-compat-core/tsconfig.json && tsgo --noEmit -p packages/skills-loader-core/tsconfig.json && tsgo --noEmit -p packages/agents-md-core/tsconfig.json && tsgo --noEmit -p packages/omo-codex/plugin/shared/tsconfig.json && tsgo --noEmit -p packages/omo-codex/tsconfig.json && tsgo --noEmit -p packages/omo-senpi/tsconfig.json && tsgo --noEmit -p packages/senpi-task/tsconfig.json && tsgo --noEmit -p packages/omo-opencode/tsconfig.json && tsgo --noEmit -p packages/omo-native/tsconfig.json",
139
137
  "typecheck:script": "tsgo --noEmit -p script/tsconfig.json",
140
138
  "test": "bun test --timeout 20000",
141
139
  "changelog:section": "bun script/changelog-section.ts",
@@ -167,7 +165,6 @@
167
165
  "homepage": "https://github.com/code-yeongyu/oh-my-openagent#readme",
168
166
  "dependencies": {
169
167
  "@clack/prompts": "^1.7.0",
170
- "@code-yeongyu/comment-checker": "^0.8.0",
171
168
  "@modelcontextprotocol/sdk": "^1.30.0",
172
169
  "@opencode-ai/plugin": "1.18.22",
173
170
  "@opencode-ai/sdk": "1.18.22",
@@ -185,7 +182,7 @@
185
182
  "zod": "^4.4.3"
186
183
  },
187
184
  "devDependencies": {
188
- "@code-yeongyu/senpi": "2026.9.13",
185
+ "@code-yeongyu/senpi": "2026.9.15-2",
189
186
  "@oh-my-opencode/agents-md-core": "workspace:*",
190
187
  "@oh-my-opencode/ast-grep-mcp": "workspace:*",
191
188
  "@oh-my-opencode/boulder-state": "workspace:*",
@@ -204,8 +201,6 @@
204
201
  "@oh-my-opencode/omo-opencode": "workspace:*",
205
202
  "@oh-my-opencode/omo-senpi": "workspace:*",
206
203
  "@oh-my-opencode/openclaw-core": "workspace:*",
207
- "@oh-my-opencode/pi-goal": "workspace:*",
208
- "@oh-my-opencode/pi-webfetch": "workspace:*",
209
204
  "@oh-my-opencode/prompts-core": "workspace:*",
210
205
  "@oh-my-opencode/rules-engine": "workspace:*",
211
206
  "@oh-my-opencode/senpi-task": "workspace:*",
@@ -226,18 +221,18 @@
226
221
  "typescript": "^7.0.2"
227
222
  },
228
223
  "optionalDependencies": {
229
- "oh-my-opencode-darwin-arm64": "5.0.0-beta.62",
230
- "oh-my-opencode-darwin-x64": "5.0.0-beta.62",
231
- "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.62",
232
- "oh-my-opencode-linux-arm64": "5.0.0-beta.62",
233
- "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.62",
234
- "oh-my-opencode-linux-x64": "5.0.0-beta.62",
235
- "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.62",
236
- "oh-my-opencode-linux-x64-musl": "5.0.0-beta.62",
237
- "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.62",
238
- "oh-my-opencode-windows-arm64": "5.0.0-beta.62",
239
- "oh-my-opencode-windows-x64": "5.0.0-beta.62",
240
- "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.62"
224
+ "oh-my-opencode-darwin-arm64": "5.0.0-beta.63",
225
+ "oh-my-opencode-darwin-x64": "5.0.0-beta.63",
226
+ "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.63",
227
+ "oh-my-opencode-linux-arm64": "5.0.0-beta.63",
228
+ "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.63",
229
+ "oh-my-opencode-linux-x64": "5.0.0-beta.63",
230
+ "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.63",
231
+ "oh-my-opencode-linux-x64-musl": "5.0.0-beta.63",
232
+ "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.63",
233
+ "oh-my-opencode-windows-arm64": "5.0.0-beta.63",
234
+ "oh-my-opencode-windows-x64": "5.0.0-beta.63",
235
+ "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.63"
241
236
  },
242
237
  "overrides": {
243
238
  "@earendil-works/pi-agent-core": "0.84.2",
@@ -251,7 +246,5 @@
251
246
  "path-to-regexp": "^8.4.2",
252
247
  "@types/node": "26.2.0"
253
248
  },
254
- "trustedDependencies": [
255
- "@code-yeongyu/comment-checker"
256
- ]
249
+ "trustedDependencies": []
257
250
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omo",
3
- "version": "5.0.0-beta.62",
3
+ "version": "5.0.0-beta.63",
4
4
  "description": "One Codex plugin namespace for Yeongyu's local Codex components.",
5
5
  "author": {
6
6
  "name": "Yeongyu Kim",
@@ -6106,6 +6106,7 @@ var OmoTaskSettingsSchema = object({
6106
6106
  model_concurrency: record(string2(), number2().int().nonnegative()).optional(),
6107
6107
  max_depth: number2().int().nonnegative().default(1),
6108
6108
  residency_max_children: ResidencyMaxChildrenInputSchema.default(8),
6109
+ resident_idle_timeout_ms: number2().int().positive().max(Number.MAX_SAFE_INTEGER).default(900000),
6109
6110
  ttl_ms: number2().int().positive().default(86400000),
6110
6111
  state_dir: string2().optional(),
6111
6112
  reattach_on_reconcile: boolean2().optional(),
@@ -6150,6 +6151,7 @@ var OmoTaskSettingsLayerSchema = object({
6150
6151
  model_concurrency: record(string2(), number2().int().nonnegative()).optional(),
6151
6152
  max_depth: number2().int().nonnegative().optional(),
6152
6153
  residency_max_children: ResidencyMaxChildrenInputSchema.optional(),
6154
+ resident_idle_timeout_ms: number2().int().positive().max(Number.MAX_SAFE_INTEGER).optional(),
6153
6155
  ttl_ms: number2().int().positive().optional(),
6154
6156
  state_dir: string2().optional(),
6155
6157
  reattach_on_reconcile: boolean2().optional(),
@@ -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.62) Checking Bootstrap Provisioning"
11
+ "statusMessage": "(OmO 5.0.0-beta.63) 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.62",
3
+ "version": "5.0.0-beta.63",
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 post-tool-use",
10
10
  "timeout": 30,
11
- "statusMessage": "(OmO 5.0.0-beta.62) Checking Comments"
11
+ "statusMessage": "(OmO 5.0.0-beta.63) Checking Comments"
12
12
  }
13
13
  ]
14
14
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-comment-checker",
3
- "version": "5.0.0-beta.62",
3
+ "version": "5.0.0-beta.63",
4
4
  "description": "Codex plugin that runs comment-checker after edit-like PostToolUse hooks.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -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.62) Recommending Git Bash MCP"
11
+ "statusMessage": "(OmO 5.0.0-beta.63) 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.62) Resetting Git Bash MCP Reminder"
23
+ "statusMessage": "(OmO 5.0.0-beta.63) Resetting Git Bash MCP Reminder"
24
24
  }
25
25
  ]
26
26
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sisyphuslabs/codex-git-bash-hook",
3
- "version": "5.0.0-beta.62",
3
+ "version": "5.0.0-beta.63",
4
4
  "description": "Codex hook component that reminds Windows sessions to prefer the OMO git_bash MCP.",
5
5
  "type": "module",
6
6
  "private": true,
@@ -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.62) Verifying LazyCodex Executor Evidence"
11
+ "statusMessage": "(OmO 5.0.0-beta.63) 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.62",
3
+ "version": "5.0.0-beta.63",
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.62",
4
- "inputDigest": "sha256:e446f10ad4c491792dbc8ed087ce021ad5586be482dffee363dd2f14c242f003",
3
+ "version": "5.0.0-beta.63",
4
+ "inputDigest": "sha256:3a61242cf504041a49eedabaef45c33f1b57d48589074efffeccfa0820dcfdef",
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.62) Checking LSP Diagnostics"
11
+ "statusMessage": "(OmO 5.0.0-beta.63) 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.62) Resetting LSP Diagnostics Cache"
24
+ "statusMessage": "(OmO 5.0.0-beta.63) Resetting LSP Diagnostics Cache"
25
25
  }
26
26
  ]
27
27
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-lsp",
3
- "version": "5.0.0-beta.62",
3
+ "version": "5.0.0-beta.63",
4
4
  "description": "Codex plugin that exposes Language Server Protocol tools and post-edit diagnostics.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -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.62) Loading Project Rules"
10
+ "statusMessage": "(OmO 5.0.0-beta.63) 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.62) Loading Project Rules"
22
+ "statusMessage": "(OmO 5.0.0-beta.63) 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.62) Matching Project Rules"
35
+ "statusMessage": "(OmO 5.0.0-beta.63) 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.62) Resetting Project Rule Cache"
48
+ "statusMessage": "(OmO 5.0.0-beta.63) Resetting Project Rule Cache"
49
49
  }
50
50
  ]
51
51
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-rules",
3
- "version": "5.0.0-beta.62",
3
+ "version": "5.0.0-beta.63",
4
4
  "description": "Codex plugin that injects project rule files into model context through lifecycle hooks.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -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.62) Checking Thread Title Hygiene"
11
+ "statusMessage": "(OmO 5.0.0-beta.63) Checking Thread Title Hygiene"
12
12
  }
13
13
  ]
14
14
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sisyphuslabs/codex-teammode",
3
- "version": "5.0.0-beta.62",
3
+ "version": "5.0.0-beta.63",
4
4
  "description": "Codex team-mode hook component that keeps background thread titles descriptive after create_thread.",
5
5
  "type": "module",
6
6
  "private": true,
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook session-start",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 5.0.0-beta.62) Recording Session Telemetry"
10
+ "statusMessage": "(OmO 5.0.0-beta.63) Recording Session Telemetry"
11
11
  }
12
12
  ]
13
13
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-telemetry",
3
- "version": "5.0.0-beta.62",
3
+ "version": "5.0.0-beta.63",
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",
@@ -94,10 +94,10 @@ Critical path: Task 1 -> Task 2 -> Task 6
94
94
  - [ ] <verifiable condition with the exact command or assertion>
95
95
 
96
96
  QA scenarios (MANDATORY - task incomplete without these):
97
- > Name the exact tool AND its exact invocation - not "verify it works". Browser use: in Codex, use `browser:control-in-app-browser` first when available and no authenticated/persistent user browser profile is required; otherwise use Chrome to drive the page, or agent-browser (https://github.com/vercel-labs/agent-browser) when Chrome is unavailable. Computer use: OS-level GUI automation for a non-browser desktop app.
97
+ > Name the exact tool AND its exact invocation - not "verify it works". Browser use: in Codex, prefer `browser:control-in-app-browser`; otherwise, or for Chrome semantics, stealth, trace, or auth, write and run a `playwright-core` script from js eval against local Chrome (`channel: "chrome"`; persistent context on a CLONED profile, never the live one). Computer use: OS-level GUI automation for a non-browser desktop app.
98
98
  ```
99
99
  Scenario: <happy path>
100
- Tool: <bash | curl | tmux | browser:control-in-app-browser | playwright(real Chrome) | agent-browser | computer-use>
100
+ Tool: <bash | curl | tmux | browser:control-in-app-browser | playwright-core(js eval, local Chrome) | computer-use>
101
101
  Steps: <exact command / API call / page action with concrete inputs - URL, payload, keystrokes, selectors>
102
102
  Expected: <concrete, binary pass/fail observable>
103
103
  Evidence: <attemptDir>/task-<N>-<slug>.<ext> (attemptDir = currentAttemptDir from `omo-agent-toolkit ulw-loop status --json`, .omo/evidence/ulw/<session>/<goalId>/a<attempt>)
@@ -75,16 +75,17 @@ exercises the surface; capture the artifact.
75
75
  for color / layout / CJK evidence, which degrades truecolor.
76
76
  3. Browser use — in Codex, use \`browser:control-in-app-browser\`
77
77
  first when available and no authenticated/persistent user browser
78
- profile is required. Otherwise use Chrome to drive the REAL page;
79
- if Chrome is not available, download and use agent-browser
80
- (https://github.com/vercel-labs/agent-browser). Capture action
78
+ profile is required. Otherwise, or for Chrome semantics, stealth,
79
+ or trace, WRITE a \`playwright-core\` script and run it from js eval
80
+ against local Chrome (\`chromium.launch({ channel: "chrome" })\` /
81
+ \`launchPersistentContext\` on a CLONED profile). Capture action
81
82
  log + screenshot path. Never downgrade to a non-browser surface
82
83
  for a browser-facing criterion. NEVER clear cookies, cache, or
83
84
  site data (\`Network.clearBrowserCookies\`, \`Storage.clearCookies\`,
84
85
  \`chrome.browsingData.remove\`, "clear browsing data") on the user's
85
86
  real/main browser profile — it wipes their logged-in state. If you
86
87
  need that profile's login state, clone it first (\`rsync -a
87
- <profile>/ <tmp-clone>/\`) and launch Chrome / agent-browser against
88
+ <profile>/ <tmp-clone>/\`) and launch Chrome against
88
89
  the clone as the user-data-dir; run any clearing there only.
89
90
  4. Computer use — when the surface is a desktop/GUI app rather than a
90
91
  page, drive it via OS-level automation (a computer-use agent,
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook user-prompt-submit",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 5.0.0-beta.62) Checking Ultrawork Trigger"
10
+ "statusMessage": "(OmO 5.0.0-beta.63) Checking Ultrawork Trigger"
11
11
  }
12
12
  ]
13
13
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-ultrawork",
3
- "version": "5.0.0-beta.62",
3
+ "version": "5.0.0-beta.63",
4
4
  "description": "Codex plugin that injects the ultrawork orchestration directive and ships LazyCodex planning, review, QA, and gate agent roles.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",