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.
- package/dist/cli/index.js +15 -15
- package/dist/cli-node/index.js +15 -15
- package/dist/index.js +22 -22
- package/dist/skills/browser/runtime/omowright/manifest.json +1 -1
- package/dist/skills/frontend/SKILL.md +1 -1
- package/dist/skills/frontend/references/design/README.md +3 -7
- package/dist/skills/frontend/references/design/aside.md +1 -1
- package/dist/skills/frontend/references/design/clone-from-url.md +1 -1
- package/dist/skills/frontend/references/design/design-system-architecture.md +1 -1
- package/dist/skills/frontend/references/design/layout-skill.md +1 -1
- package/dist/skills/visual-qa/SKILL.md +124 -22
- package/dist/skills/visual-qa/references/browser-setup.md +39 -14
- package/dist/tui.js +14 -14
- package/package.json +14 -14
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- 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-5.6.md +1 -1
- package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus/gpt-6.md +2 -2
- 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/rules/test/hephaestus-model-variant.test.ts +18 -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/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
- 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/hooks/hooks.json +5 -5
- package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
- 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/skills/browser/runtime/omowright/manifest.json +1 -1
- package/packages/omo-codex/plugin/skills/frontend/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/frontend/references/design/README.md +3 -7
- package/packages/omo-codex/plugin/skills/frontend/references/design/aside.md +1 -1
- package/packages/omo-codex/plugin/skills/frontend/references/design/clone-from-url.md +1 -1
- package/packages/omo-codex/plugin/skills/frontend/references/design/design-system-architecture.md +1 -1
- package/packages/omo-codex/plugin/skills/frontend/references/design/layout-skill.md +1 -1
- package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +124 -22
- package/packages/omo-codex/plugin/skills/visual-qa/references/browser-setup.md +39 -14
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +2 -2
- package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +1 -1
- package/packages/shared-skills/skills/frontend/SKILL.md +1 -1
- package/packages/shared-skills/skills/frontend/references/design/README.md +3 -7
- package/packages/shared-skills/skills/frontend/references/design/aside.md +1 -1
- package/packages/shared-skills/skills/frontend/references/design/clone-from-url.md +1 -1
- package/packages/shared-skills/skills/frontend/references/design/design-system-architecture.md +1 -1
- package/packages/shared-skills/skills/frontend/references/design/layout-skill.md +1 -1
- package/packages/shared-skills/skills/visual-qa/SKILL.md +124 -22
- 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;
|
|
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
|
-
|
|
27
|
-
await
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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(
|
|
52
|
-
|
|
53
|
-
await
|
|
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
|
|
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
|
|
70
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
74848
|
-
"oh-my-opencode-darwin-x64": "5.1.
|
|
74849
|
-
"oh-my-opencode-darwin-x64-baseline": "5.1.
|
|
74850
|
-
"oh-my-opencode-linux-arm64": "5.1.
|
|
74851
|
-
"oh-my-opencode-linux-arm64-musl": "5.1.
|
|
74852
|
-
"oh-my-opencode-linux-x64": "5.1.
|
|
74853
|
-
"oh-my-opencode-linux-x64-baseline": "5.1.
|
|
74854
|
-
"oh-my-opencode-linux-x64-musl": "5.1.
|
|
74855
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.1.
|
|
74856
|
-
"oh-my-opencode-windows-arm64": "5.1.
|
|
74857
|
-
"oh-my-opencode-windows-x64": "5.1.
|
|
74858
|
-
"oh-my-opencode-windows-x64-baseline": "5.1.
|
|
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.
|
|
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.
|
|
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.
|
|
239
|
-
"oh-my-opencode-darwin-x64": "5.1.
|
|
240
|
-
"oh-my-opencode-darwin-x64-baseline": "5.1.
|
|
241
|
-
"oh-my-opencode-linux-arm64": "5.1.
|
|
242
|
-
"oh-my-opencode-linux-arm64-musl": "5.1.
|
|
243
|
-
"oh-my-opencode-linux-x64": "5.1.
|
|
244
|
-
"oh-my-opencode-linux-x64-baseline": "5.1.
|
|
245
|
-
"oh-my-opencode-linux-x64-musl": "5.1.
|
|
246
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.1.
|
|
247
|
-
"oh-my-opencode-windows-arm64": "5.1.
|
|
248
|
-
"oh-my-opencode-windows-x64": "5.1.
|
|
249
|
-
"oh-my-opencode-windows-x64-baseline": "5.1.
|
|
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",
|
|
@@ -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.
|
|
11
|
+
"statusMessage": "(OmO 5.1.17) Checking Bootstrap Provisioning"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -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.
|
|
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.
|
|
23
|
+
"statusMessage": "(OmO 5.1.17) 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.1.
|
|
11
|
+
"statusMessage": "(OmO 5.1.17) Verifying LazyCodex Executor Evidence"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"version": "5.1.
|
|
4
|
-
"inputDigest": "sha256:
|
|
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.
|
|
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.
|
|
24
|
+
"statusMessage": "(OmO 5.1.17) Resetting LSP Diagnostics Cache"
|
|
25
25
|
}
|
|
26
26
|
]
|
|
27
27
|
}
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
48
|
+
"statusMessage": "(OmO 5.1.17) Resetting Project Rule Cache"
|
|
49
49
|
}
|
|
50
50
|
]
|
|
51
51
|
}
|
|
@@ -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
|
+
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code-yeongyu/codex-ultrawork",
|
|
3
|
-
"version": "5.1.
|
|
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.
|
|
10
|
+
"statusMessage": "(OmO 5.1.17) Checking Ulw-Execute Continuation"
|
|
11
11
|
}
|
|
12
12
|
]
|
|
13
13
|
}
|
|
@@ -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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
]
|