oh-my-opencode 5.1.15 → 5.1.17

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 (83) hide show
  1. package/dist/cli/index.js +15 -15
  2. package/dist/cli-node/index.js +15 -15
  3. package/dist/index.js +22 -22
  4. package/dist/skills/browser/runtime/omowright/manifest.json +1 -1
  5. package/dist/skills/frontend/SKILL.md +1 -1
  6. package/dist/skills/frontend/references/design/README.md +3 -7
  7. package/dist/skills/frontend/references/design/aside.md +1 -1
  8. package/dist/skills/frontend/references/design/clone-from-url.md +1 -1
  9. package/dist/skills/frontend/references/design/design-system-architecture.md +1 -1
  10. package/dist/skills/frontend/references/design/layout-skill.md +1 -1
  11. package/dist/skills/visual-qa/SKILL.md +124 -22
  12. package/dist/skills/visual-qa/references/browser-setup.md +39 -14
  13. package/dist/tui.js +14 -14
  14. package/package.json +14 -14
  15. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  16. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  17. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  18. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  19. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  20. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  21. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  22. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  23. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  24. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
  25. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  26. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  27. package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus/gpt-5.6.md +1 -1
  28. package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus/gpt-6.md +2 -2
  29. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  30. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  31. package/packages/omo-codex/plugin/components/rules/test/hephaestus-model-variant.test.ts +18 -1
  32. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  33. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  34. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  35. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  36. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  37. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  38. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
  39. package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
  40. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
  41. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  42. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  43. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  44. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  45. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  46. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  47. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  48. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  49. package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
  50. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  51. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  52. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  53. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  54. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  55. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  56. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  57. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
  58. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  59. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  60. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  61. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  62. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  63. package/packages/omo-codex/plugin/package-lock.json +12 -12
  64. package/packages/omo-codex/plugin/package.json +1 -1
  65. package/packages/omo-codex/plugin/skills/browser/runtime/omowright/manifest.json +1 -1
  66. package/packages/omo-codex/plugin/skills/frontend/SKILL.md +1 -1
  67. package/packages/omo-codex/plugin/skills/frontend/references/design/README.md +3 -7
  68. package/packages/omo-codex/plugin/skills/frontend/references/design/aside.md +1 -1
  69. package/packages/omo-codex/plugin/skills/frontend/references/design/clone-from-url.md +1 -1
  70. package/packages/omo-codex/plugin/skills/frontend/references/design/design-system-architecture.md +1 -1
  71. package/packages/omo-codex/plugin/skills/frontend/references/design/layout-skill.md +1 -1
  72. package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +124 -22
  73. package/packages/omo-codex/plugin/skills/visual-qa/references/browser-setup.md +39 -14
  74. package/packages/omo-codex/scripts/install-dist/install-local.mjs +2 -2
  75. package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +1 -1
  76. package/packages/shared-skills/skills/frontend/SKILL.md +1 -1
  77. package/packages/shared-skills/skills/frontend/references/design/README.md +3 -7
  78. package/packages/shared-skills/skills/frontend/references/design/aside.md +1 -1
  79. package/packages/shared-skills/skills/frontend/references/design/clone-from-url.md +1 -1
  80. package/packages/shared-skills/skills/frontend/references/design/design-system-architecture.md +1 -1
  81. package/packages/shared-skills/skills/frontend/references/design/layout-skill.md +1 -1
  82. package/packages/shared-skills/skills/visual-qa/SKILL.md +124 -22
  83. package/packages/shared-skills/skills/visual-qa/references/browser-setup.md +39 -14
@@ -8,13 +8,16 @@ const { loadOmowright } = await import("<browser-skill-root>/scripts/omowright.m
8
8
  const { omowright } = await loadOmowright()
9
9
  ```
10
10
 
11
- ## Owned engine (default for QA)
11
+ ## Owned engine (default for QA) - the capture matrix
12
12
 
13
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()`.
14
+ `connectPipe` opens no listening port and reaps the process on `close()`. One loop produces the
15
+ whole matrix the skill requires: phone (true mobile emulation) and desktop, light and dark, top
16
+ and scrolled-to-end, plus the reduced-motion variant for motion frames. `page.screenshot()` is a
17
+ PNG of the page itself, so no browser chrome can appear in it.
15
18
 
16
19
  ```js
17
- // js-eval cell; url and pngPath belong to this QA run.
20
+ // js-eval cell; urls and outDir belong to this QA run.
18
21
  const { mkdtempSync, rmSync } = await import("node:fs")
19
22
  const profile = mkdtempSync(`${(await import("node:os")).tmpdir()}/visual-qa-`)
20
23
  const browser = await omowright.connectPipe({
@@ -22,13 +25,29 @@ const browser = await omowright.connectPipe({
22
25
  browserArgs: ["--headless", "--no-first-run", `--user-data-dir=${profile}`],
23
26
  storageRoot: profile,
24
27
  })
28
+ const media = (page, sid, scheme, motion) => page.cdp.send("Emulation.setEmulatedMedia", {
29
+ features: [{ name: "prefers-color-scheme", value: scheme }, { name: "prefers-reduced-motion", value: motion }],
30
+ }, sid)
31
+ let page
25
32
  try {
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())
30
- console.log(pngPath)
33
+ page = await browser.newTab("about:blank")
34
+ const sid = await page.resolveSessionId()
35
+ for (const [route, url] of Object.entries(urls)) {
36
+ for (const device of ["iphone-14", "desktop-1440"]) { // 390 @ DPR 3, mobile + touch (overlay scrollbars); 1440 @ DPR 1. Add { width: 1920, height: 1080, deviceScaleFactor: 1, mobile: false, hasTouch: false } for page layouts.
37
+ await omowright.emulate(page, device)
38
+ for (const scheme of ["light", "dark"]) {
39
+ await media(page, sid, scheme, "no-preference")
40
+ await page.goto(url, { waitUntil: "load" }) // then wait for the page's own ready state (a locator, waitForURL, network snoop), never a sleep
41
+ await Bun.write(`${outDir}/${route}-${device}-${scheme}-top.png`, await page.screenshot())
42
+ await page.evaluate(() => window.scrollTo(0, document.documentElement.scrollHeight))
43
+ await Bun.write(`${outDir}/${route}-${device}-${scheme}-end.png`, await page.screenshot())
44
+ }
45
+ }
46
+ }
47
+ // Motion frames: drive the state (hover/press/open), then capture rest, ~100 ms and settled; repeat under
48
+ // media(page, sid, scheme, "reduce") for the reduced-motion pass.
31
49
  } finally {
50
+ if (page) await omowright.emulate(page, null)
32
51
  await browser.close()
33
52
  rmSync(profile, { recursive: true, force: true })
34
53
  }
@@ -48,14 +67,19 @@ cloning its profile:
48
67
  const session = await omowright.connectBrowserSkill({ name: "visual-qa capture", focused: false })
49
68
  try {
50
69
  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)
70
+ await session.resize(1440, 900) // desktop column of the matrix
71
+ await Bun.write(`${outDir}/${route}-1440-top.png`, (await session.screenshot()).buffer) // { buffer, width, height }
72
+ await session.emulate({ overrides: { width: 390, mobile: true } }) // phone column; `off: true` restores
73
+ await Bun.write(`${outDir}/${route}-390-top.png`, (await session.screenshot()).buffer)
54
74
  } finally {
75
+ await session.emulate({ off: true })
55
76
  await session.stop()
56
77
  }
57
78
  ```
58
79
 
80
+ The attached engine follows the signed-in browser's own colour scheme; switch the OS or browser
81
+ theme between the light and dark passes, and record which theme each file carries.
82
+
59
83
  NEVER launch anything against, or clear cookies/cache/site data from, the user's live profile;
60
84
  the attached engine is the only sanctioned way to a signed-in page. If no extension is connected,
61
85
  run the `browser` skill's `scripts/browser-install.mjs` for the browser the user actually uses
@@ -63,11 +87,12 @@ run the `browser` skill's `scripts/browser-install.mjs` for the browser the user
63
87
  one human step, and wait — do
64
88
  not fall back to the owned engine for an authenticated criterion.
65
89
 
66
- ## Capture a screenshot at a fixed viewport
90
+ ## Capture at a fixed viewport
67
91
 
68
92
  Match CSS viewport AND PNG dimensions: pin `deviceScaleFactor` through `emulate` (owned) or
69
- `resize` (attached) instead of resizing the PNG to force a pass. Wait for the specific page state
70
- (a locator, a `waitForURL`, a `createNetworkSnoop(page).waitFor(...)`), not a sleep, then compare:
93
+ `resize` (attached) instead of resizing the PNG to force a pass; a 390-wide capture at desktop
94
+ DPR with classic scrollbars is not a phone capture. Wait for the specific page state (a locator,
95
+ a `waitForURL`, a `createNetworkSnoop(page).waitFor(...)`), not a sleep, then compare:
71
96
 
72
97
  ```sh
73
98
  node "$SKILL_DIR/scripts/visual-qa.mjs" image-diff reference.png actual.png
package/dist/tui.js CHANGED
@@ -74609,7 +74609,7 @@ init_shared();
74609
74609
  // package.json
74610
74610
  var package_default = {
74611
74611
  name: "oh-my-opencode",
74612
- version: "5.1.15",
74612
+ version: "5.1.17",
74613
74613
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
74614
74614
  main: "./dist/index.js",
74615
74615
  types: "dist/index.d.ts",
@@ -74786,7 +74786,7 @@ var package_default = {
74786
74786
  },
74787
74787
  devDependencies: {
74788
74788
  "@clack/prompts": "^1.8.1",
74789
- "@code-yeongyu/senpi": "2026.10.6",
74789
+ "@code-yeongyu/senpi": "2026.10.8",
74790
74790
  "@modelcontextprotocol/sdk": "^1.30.0",
74791
74791
  "@oh-my-opencode/agents-md-core": "workspace:*",
74792
74792
  "@oh-my-opencode/ast-grep-mcp": "workspace:*",
@@ -74844,18 +74844,18 @@ var package_default = {
74844
74844
  typescript: "^7.0.2"
74845
74845
  },
74846
74846
  optionalDependencies: {
74847
- "oh-my-opencode-darwin-arm64": "5.1.15",
74848
- "oh-my-opencode-darwin-x64": "5.1.15",
74849
- "oh-my-opencode-darwin-x64-baseline": "5.1.15",
74850
- "oh-my-opencode-linux-arm64": "5.1.15",
74851
- "oh-my-opencode-linux-arm64-musl": "5.1.15",
74852
- "oh-my-opencode-linux-x64": "5.1.15",
74853
- "oh-my-opencode-linux-x64-baseline": "5.1.15",
74854
- "oh-my-opencode-linux-x64-musl": "5.1.15",
74855
- "oh-my-opencode-linux-x64-musl-baseline": "5.1.15",
74856
- "oh-my-opencode-windows-arm64": "5.1.15",
74857
- "oh-my-opencode-windows-x64": "5.1.15",
74858
- "oh-my-opencode-windows-x64-baseline": "5.1.15"
74847
+ "oh-my-opencode-darwin-arm64": "5.1.17",
74848
+ "oh-my-opencode-darwin-x64": "5.1.17",
74849
+ "oh-my-opencode-darwin-x64-baseline": "5.1.17",
74850
+ "oh-my-opencode-linux-arm64": "5.1.17",
74851
+ "oh-my-opencode-linux-arm64-musl": "5.1.17",
74852
+ "oh-my-opencode-linux-x64": "5.1.17",
74853
+ "oh-my-opencode-linux-x64-baseline": "5.1.17",
74854
+ "oh-my-opencode-linux-x64-musl": "5.1.17",
74855
+ "oh-my-opencode-linux-x64-musl-baseline": "5.1.17",
74856
+ "oh-my-opencode-windows-arm64": "5.1.17",
74857
+ "oh-my-opencode-windows-x64": "5.1.17",
74858
+ "oh-my-opencode-windows-x64-baseline": "5.1.17"
74859
74859
  },
74860
74860
  overrides: {
74861
74861
  hono: "^4.13.8",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-opencode",
3
- "version": "5.1.15",
3
+ "version": "5.1.17",
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",
@@ -177,7 +177,7 @@
177
177
  },
178
178
  "devDependencies": {
179
179
  "@clack/prompts": "^1.8.1",
180
- "@code-yeongyu/senpi": "2026.10.6",
180
+ "@code-yeongyu/senpi": "2026.10.8",
181
181
  "@modelcontextprotocol/sdk": "^1.30.0",
182
182
  "@oh-my-opencode/agents-md-core": "workspace:*",
183
183
  "@oh-my-opencode/ast-grep-mcp": "workspace:*",
@@ -235,18 +235,18 @@
235
235
  "typescript": "^7.0.2"
236
236
  },
237
237
  "optionalDependencies": {
238
- "oh-my-opencode-darwin-arm64": "5.1.15",
239
- "oh-my-opencode-darwin-x64": "5.1.15",
240
- "oh-my-opencode-darwin-x64-baseline": "5.1.15",
241
- "oh-my-opencode-linux-arm64": "5.1.15",
242
- "oh-my-opencode-linux-arm64-musl": "5.1.15",
243
- "oh-my-opencode-linux-x64": "5.1.15",
244
- "oh-my-opencode-linux-x64-baseline": "5.1.15",
245
- "oh-my-opencode-linux-x64-musl": "5.1.15",
246
- "oh-my-opencode-linux-x64-musl-baseline": "5.1.15",
247
- "oh-my-opencode-windows-arm64": "5.1.15",
248
- "oh-my-opencode-windows-x64": "5.1.15",
249
- "oh-my-opencode-windows-x64-baseline": "5.1.15"
238
+ "oh-my-opencode-darwin-arm64": "5.1.17",
239
+ "oh-my-opencode-darwin-x64": "5.1.17",
240
+ "oh-my-opencode-darwin-x64-baseline": "5.1.17",
241
+ "oh-my-opencode-linux-arm64": "5.1.17",
242
+ "oh-my-opencode-linux-arm64-musl": "5.1.17",
243
+ "oh-my-opencode-linux-x64": "5.1.17",
244
+ "oh-my-opencode-linux-x64-baseline": "5.1.17",
245
+ "oh-my-opencode-linux-x64-musl": "5.1.17",
246
+ "oh-my-opencode-linux-x64-musl-baseline": "5.1.17",
247
+ "oh-my-opencode-windows-arm64": "5.1.17",
248
+ "oh-my-opencode-windows-x64": "5.1.17",
249
+ "oh-my-opencode-windows-x64-baseline": "5.1.17"
250
250
  },
251
251
  "overrides": {
252
252
  "hono": "^4.13.8",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omo",
3
- "version": "5.1.15",
3
+ "version": "5.1.17",
4
4
  "description": "One Codex plugin namespace for Yeongyu's local Codex components.",
5
5
  "author": {
6
6
  "name": "Yeongyu Kim",
@@ -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.1.15) Checking Bootstrap Provisioning"
11
+ "statusMessage": "(OmO 5.1.17) Checking Bootstrap Provisioning"
12
12
  }
13
13
  ]
14
14
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sisyphuslabs/codex-bootstrap",
3
- "version": "5.1.15",
3
+ "version": "5.1.17",
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.1.15) Checking Comments"
11
+ "statusMessage": "(OmO 5.1.17) 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.1.15",
3
+ "version": "5.1.17",
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.1.15) Recommending Git Bash MCP"
11
+ "statusMessage": "(OmO 5.1.17) 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.1.15) Resetting Git Bash MCP Reminder"
23
+ "statusMessage": "(OmO 5.1.17) 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.1.15",
3
+ "version": "5.1.17",
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.1.15) Verifying LazyCodex Executor Evidence"
11
+ "statusMessage": "(OmO 5.1.17) 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.1.15",
3
+ "version": "5.1.17",
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.1.15",
4
- "inputDigest": "sha256:2a033aeb4eca6b2e5d55f0053c9cc5ab6a9708cfd06c7024eb7924de056bd8b3",
3
+ "version": "5.1.17",
4
+ "inputDigest": "sha256:06438ba1e26a58875c975eb6f862184a902882eeed83e0f515bca30b41768774",
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.1.15) Checking LSP Diagnostics"
11
+ "statusMessage": "(OmO 5.1.17) 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.1.15) Resetting LSP Diagnostics Cache"
24
+ "statusMessage": "(OmO 5.1.17) 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.1.15",
3
+ "version": "5.1.17",
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",
@@ -70,7 +70,7 @@ Write only what the current correct path needs: no handlers, fallbacks, retries,
70
70
 
71
71
  At a handoff - turn start (after the one-line read), a todo phase change, a blocker or plan change, the final message - first work out what the user asked for and what they need to know now, then open with one block:
72
72
 
73
- > [Outcome so far] toward [the user's original ask and the result they wanted]. You need: [ledger N/M done, findings, blockers]. Now: [todo task in progress]. Next: [next open task].
73
+ [Outcome so far] toward [the user's original ask and the result they wanted]. You need: [ledger N/M done, findings, blockers]. Now: [todo task in progress]. Next: [next open task].
74
74
 
75
75
  Now and Next are todo labels verbatim; the Next stated is executed in this same response with tool calls. Between handoffs, no narration.
76
76
 
@@ -9,7 +9,7 @@ You are Hephaestus, an autonomous deep worker based on GPT-6. You and the user s
9
9
 
10
10
  Open a new request with one short routing line:
11
11
 
12
- > I read this as [intent] - [plan]. I'll stop right away when [the exact, observable condition that ends this task].
12
+ I read this as [intent] - [plan]. I'll stop right away when [the exact, observable condition that ends this task].
13
13
 
14
14
  The declared stop condition is binding: work until it holds, then stop. Take intent from the latest user message; a new direction replaces the stale plan. Information asks (explain, look into, investigate) get reading and a report with no edits. Judgment asks (what do you think, review) and open-ended asks (refactor, improve, clean up) get an assessment and proposal, then the user's confirmation. Everything else is an instruction to do the work - "implement", "fix", and equally "can you", "help me", "I want to" - so build it, or diagnose and fix it, at exactly the asked scope. Keep prompt scaffolding out of user-visible output.
15
15
 
@@ -108,7 +108,7 @@ Be direct and tactful: disagree when you have a reason and state it. No flattery
108
108
 
109
109
  At a handoff - turn start (after the routing line), a todo phase change, a blocker or plan change, the final message - first work out what the user asked for and what they need to know now, then open with one block:
110
110
 
111
- > [Outcome so far] toward [the user's original ask and the result they wanted]. You need: [ledger N/M done, findings, blockers]. Now: [todo task in progress]. Next: [next open task].
111
+ [Outcome so far] toward [the user's original ask and the result they wanted]. You need: [ledger N/M done, findings, blockers]. Now: [todo task in progress]. Next: [next open task].
112
112
 
113
113
  Now and Next are todo labels verbatim; the Next stated is executed in this same response with tool calls. Between handoffs, no narration.
114
114
 
@@ -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.1.15) Loading Project Rules"
10
+ "statusMessage": "(OmO 5.1.17) 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.1.15) Loading Project Rules"
22
+ "statusMessage": "(OmO 5.1.17) 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.1.15) Matching Project Rules"
35
+ "statusMessage": "(OmO 5.1.17) 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.1.15) Resetting Project Rule Cache"
48
+ "statusMessage": "(OmO 5.1.17) 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.1.15",
3
+ "version": "5.1.17",
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",
@@ -1,4 +1,4 @@
1
- import { mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs";
1
+ import { mkdtempSync, readdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
2
2
  import { tmpdir } from "node:os";
3
3
  import { join } from "node:path";
4
4
  import { findPluginBundledCandidates, parseRule } from "@oh-my-opencode/rules-engine/engine";
@@ -139,3 +139,20 @@ describe("Hephaestus bundled rule model variants", () => {
139
139
  expect(output).not.toContain("[Truncated. Full:");
140
140
  });
141
141
  });
142
+
143
+ // #9538: a format example written as a markdown quote line made replies render as blockquotes.
144
+ describe("Bundled rule format examples", () => {
145
+ it("#given every shipped bundled rule #when reading it #then no format example is a markdown quote line", () => {
146
+ const files = readdirSync(join(process.cwd(), "bundled-rules"), { recursive: true })
147
+ .map(String)
148
+ .filter((path) => path.endsWith(".md"));
149
+ expect(files.length).toBeGreaterThan(0);
150
+
151
+ for (const path of files) {
152
+ const quoted = readFileSync(join(process.cwd(), "bundled-rules", path), "utf8")
153
+ .split("\n")
154
+ .filter((line) => /^\s*>.*\[[^\]]+\]/.test(line));
155
+ expect({ path, quoted }).toEqual({ path, quoted: [] });
156
+ }
157
+ });
158
+ });
@@ -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.1.15) Checking Thread Title Hygiene"
11
+ "statusMessage": "(OmO 5.1.17) 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.1.15",
3
+ "version": "5.1.17",
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.1.15) Recording Session Telemetry"
10
+ "statusMessage": "(OmO 5.1.17) 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.1.15",
3
+ "version": "5.1.17",
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",
@@ -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.1.15) Checking Ultrawork Trigger"
10
+ "statusMessage": "(OmO 5.1.17) 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.1.15",
3
+ "version": "5.1.17",
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",
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/ulw-execute-continuation/dist/cli.js\" hook stop",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 5.1.15) Checking Ulw-Execute Continuation"
10
+ "statusMessage": "(OmO 5.1.17) Checking Ulw-Execute Continuation"
11
11
  }
12
12
  ]
13
13
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-ulw-execute-continuation",
3
- "version": "5.1.15",
3
+ "version": "5.1.17",
4
4
  "description": "Codex Stop hook continuation injector for omo-codex ulw-execute plans.",
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 user-prompt-submit --with-ultrawork",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 5.1.15) Checking Ulw-Loop Steering"
10
+ "statusMessage": "(OmO 5.1.17) Checking Ulw-Loop Steering"
11
11
  }
12
12
  ]
13
13
  }
@@ -20,7 +20,7 @@
20
20
  "type": "command",
21
21
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use-spawn",
22
22
  "timeout": 5,
23
- "statusMessage": "(OmO 5.1.15) Recording Spawn Admission"
23
+ "statusMessage": "(OmO 5.1.17) Recording Spawn Admission"
24
24
  }
25
25
  ]
26
26
  }
@@ -33,7 +33,7 @@
33
33
  "type": "command",
34
34
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook pre-tool-use",
35
35
  "timeout": 5,
36
- "statusMessage": "(OmO 5.1.15) Enforcing Unlimited Ulw-Loop Budget"
36
+ "statusMessage": "(OmO 5.1.17) Enforcing Unlimited Ulw-Loop Budget"
37
37
  }
38
38
  ]
39
39
  },
@@ -44,7 +44,7 @@
44
44
  "type": "command",
45
45
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook pre-tool-use-spawn",
46
46
  "timeout": 5,
47
- "statusMessage": "(OmO 5.1.15) Guarding Ulw-Loop Spawns"
47
+ "statusMessage": "(OmO 5.1.17) Guarding Ulw-Loop Spawns"
48
48
  }
49
49
  ]
50
50
  }
@@ -56,7 +56,7 @@
56
56
  "type": "command",
57
57
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook stop",
58
58
  "timeout": 10,
59
- "statusMessage": "(OmO 5.1.15) Checking Ulw-Loop Resume"
59
+ "statusMessage": "(OmO 5.1.17) Checking Ulw-Loop Resume"
60
60
  }
61
61
  ]
62
62
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-ulw-loop",
3
- "version": "5.1.15",
3
+ "version": "5.1.17",
4
4
  "description": "Codex plugin: durable repo-native multi-goal orchestration with embedded success criteria and observable evidence audit.",
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}/components/git-bash/dist/cli.js\" hook post-compact",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 5.1.15) Resetting Git Bash MCP Reminder",
10
+ "statusMessage": "(OmO 5.1.17) Resetting Git Bash MCP Reminder",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\git-bash\\dist\\cli.js\" hook post-compact"
12
12
  }
13
13
  ],
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/lsp/dist/cli.js\" hook post-compact",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 5.1.15) Resetting LSP Diagnostics Cache",
10
+ "statusMessage": "(OmO 5.1.17) Resetting LSP Diagnostics Cache",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\lsp\\dist\\cli.js\" hook post-compact"
12
12
  }
13
13
  ],
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/rules/dist/cli.js\" hook post-compact",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 5.1.15) Resetting Project Rule Cache",
10
+ "statusMessage": "(OmO 5.1.17) Resetting Project Rule Cache",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\rules\\dist\\cli.js\" hook post-compact"
12
12
  }
13
13
  ],
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/comment-checker/dist/cli.js\" hook post-tool-use",
9
9
  "timeout": 30,
10
- "statusMessage": "(OmO 5.1.15) Checking Comments",
10
+ "statusMessage": "(OmO 5.1.17) Checking Comments",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\comment-checker\\dist\\cli.js\" hook post-tool-use"
12
12
  }
13
13
  ],
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/lsp/dist/cli.js\" hook post-tool-use",
9
9
  "timeout": 60,
10
- "statusMessage": "(OmO 5.1.15) Checking LSP Diagnostics",
10
+ "statusMessage": "(OmO 5.1.17) Checking LSP Diagnostics",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\lsp\\dist\\cli.js\" hook post-tool-use"
12
12
  }
13
13
  ],
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/components/teammode/dist/cli.js\" hook post-tool-use",
10
10
  "timeout": 10,
11
- "statusMessage": "(OmO 5.1.15) Checking Thread Title Hygiene",
11
+ "statusMessage": "(OmO 5.1.17) Checking Thread Title Hygiene",
12
12
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\teammode\\dist\\cli.js\" hook post-tool-use"
13
13
  }
14
14
  ]