oh-my-opencode 5.0.0-beta.35 → 5.0.0-beta.36

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 (55) hide show
  1. package/dist/cli/index.js +16 -19
  2. package/dist/cli-node/index.js +16 -19
  3. package/dist/index.js +15 -18
  4. package/dist/skills/ulw-execute/SKILL.md +9 -9
  5. package/package.json +15 -18
  6. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  7. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  8. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  9. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  10. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  11. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  12. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  13. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  14. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  15. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
  16. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  17. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  18. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  19. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  20. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  21. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  22. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  23. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  24. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  25. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  26. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +2 -2
  27. package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
  28. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
  29. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  30. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  31. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  32. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  33. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  34. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  35. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  36. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  37. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  38. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  39. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  40. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  41. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  42. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  43. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  44. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
  45. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  46. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-ulw-execute-continuation.json +1 -1
  47. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  48. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  49. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  50. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  51. package/packages/omo-codex/plugin/package-lock.json +12 -12
  52. package/packages/omo-codex/plugin/package.json +1 -1
  53. package/packages/omo-codex/plugin/skills/ulw-execute/SKILL.md +11 -19
  54. package/packages/omo-codex/scripts/install-dist/install-local.mjs +2 -2
  55. package/packages/shared-skills/skills/ulw-execute/SKILL.md +9 -9
package/dist/cli/index.js CHANGED
@@ -54,7 +54,7 @@ var package_default;
54
54
  var init_package = __esm(() => {
55
55
  package_default = {
56
56
  name: "oh-my-opencode",
57
- version: "5.0.0-beta.35",
57
+ version: "5.0.0-beta.36",
58
58
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
59
59
  main: "./dist/index.js",
60
60
  types: "dist/index.d.ts",
@@ -234,7 +234,7 @@ var init_package = __esm(() => {
234
234
  zod: "^4.4.3"
235
235
  },
236
236
  devDependencies: {
237
- "@code-yeongyu/senpi": "2026.9.2-4",
237
+ "@code-yeongyu/senpi": "2026.9.3-2",
238
238
  "@oh-my-opencode/agents-md-core": "workspace:*",
239
239
  "@oh-my-opencode/ast-grep-mcp": "workspace:*",
240
240
  "@oh-my-opencode/boulder-state": "workspace:*",
@@ -275,18 +275,18 @@ var init_package = __esm(() => {
275
275
  typescript: "^7.0.2"
276
276
  },
277
277
  optionalDependencies: {
278
- "oh-my-opencode-darwin-arm64": "5.0.0-beta.35",
279
- "oh-my-opencode-darwin-x64": "5.0.0-beta.35",
280
- "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.35",
281
- "oh-my-opencode-linux-arm64": "5.0.0-beta.35",
282
- "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.35",
283
- "oh-my-opencode-linux-x64": "5.0.0-beta.35",
284
- "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.35",
285
- "oh-my-opencode-linux-x64-musl": "5.0.0-beta.35",
286
- "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.35",
287
- "oh-my-opencode-windows-arm64": "5.0.0-beta.35",
288
- "oh-my-opencode-windows-x64": "5.0.0-beta.35",
289
- "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.35"
278
+ "oh-my-opencode-darwin-arm64": "5.0.0-beta.36",
279
+ "oh-my-opencode-darwin-x64": "5.0.0-beta.36",
280
+ "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.36",
281
+ "oh-my-opencode-linux-arm64": "5.0.0-beta.36",
282
+ "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.36",
283
+ "oh-my-opencode-linux-x64": "5.0.0-beta.36",
284
+ "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.36",
285
+ "oh-my-opencode-linux-x64-musl": "5.0.0-beta.36",
286
+ "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.36",
287
+ "oh-my-opencode-windows-arm64": "5.0.0-beta.36",
288
+ "oh-my-opencode-windows-x64": "5.0.0-beta.36",
289
+ "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.36"
290
290
  },
291
291
  overrides: {
292
292
  "@earendil-works/pi-agent-core": "0.84.2",
@@ -302,10 +302,7 @@ var init_package = __esm(() => {
302
302
  },
303
303
  trustedDependencies: [
304
304
  "@code-yeongyu/comment-checker"
305
- ],
306
- patchedDependencies: {
307
- "@code-yeongyu/senpi@2026.9.2-4": "patches/@code-yeongyu%2Fsenpi@2026.9.2-4.patch"
308
- }
305
+ ]
309
306
  };
310
307
  });
311
308
 
@@ -94352,7 +94349,7 @@ var package_default2;
94352
94349
  var init_package2 = __esm(() => {
94353
94350
  package_default2 = {
94354
94351
  name: "@oh-my-opencode/omo-codex",
94355
- version: "5.0.0-beta.35",
94352
+ version: "5.0.0-beta.36",
94356
94353
  type: "module",
94357
94354
  private: true,
94358
94355
  description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
@@ -55,7 +55,7 @@ var package_default;
55
55
  var init_package = __esm(() => {
56
56
  package_default = {
57
57
  name: "oh-my-opencode",
58
- version: "5.0.0-beta.35",
58
+ version: "5.0.0-beta.36",
59
59
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
60
60
  main: "./dist/index.js",
61
61
  types: "dist/index.d.ts",
@@ -235,7 +235,7 @@ var init_package = __esm(() => {
235
235
  zod: "^4.4.3"
236
236
  },
237
237
  devDependencies: {
238
- "@code-yeongyu/senpi": "2026.9.2-4",
238
+ "@code-yeongyu/senpi": "2026.9.3-2",
239
239
  "@oh-my-opencode/agents-md-core": "workspace:*",
240
240
  "@oh-my-opencode/ast-grep-mcp": "workspace:*",
241
241
  "@oh-my-opencode/boulder-state": "workspace:*",
@@ -276,18 +276,18 @@ var init_package = __esm(() => {
276
276
  typescript: "^7.0.2"
277
277
  },
278
278
  optionalDependencies: {
279
- "oh-my-opencode-darwin-arm64": "5.0.0-beta.35",
280
- "oh-my-opencode-darwin-x64": "5.0.0-beta.35",
281
- "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.35",
282
- "oh-my-opencode-linux-arm64": "5.0.0-beta.35",
283
- "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.35",
284
- "oh-my-opencode-linux-x64": "5.0.0-beta.35",
285
- "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.35",
286
- "oh-my-opencode-linux-x64-musl": "5.0.0-beta.35",
287
- "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.35",
288
- "oh-my-opencode-windows-arm64": "5.0.0-beta.35",
289
- "oh-my-opencode-windows-x64": "5.0.0-beta.35",
290
- "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.35"
279
+ "oh-my-opencode-darwin-arm64": "5.0.0-beta.36",
280
+ "oh-my-opencode-darwin-x64": "5.0.0-beta.36",
281
+ "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.36",
282
+ "oh-my-opencode-linux-arm64": "5.0.0-beta.36",
283
+ "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.36",
284
+ "oh-my-opencode-linux-x64": "5.0.0-beta.36",
285
+ "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.36",
286
+ "oh-my-opencode-linux-x64-musl": "5.0.0-beta.36",
287
+ "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.36",
288
+ "oh-my-opencode-windows-arm64": "5.0.0-beta.36",
289
+ "oh-my-opencode-windows-x64": "5.0.0-beta.36",
290
+ "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.36"
291
291
  },
292
292
  overrides: {
293
293
  "@earendil-works/pi-agent-core": "0.84.2",
@@ -303,10 +303,7 @@ var init_package = __esm(() => {
303
303
  },
304
304
  trustedDependencies: [
305
305
  "@code-yeongyu/comment-checker"
306
- ],
307
- patchedDependencies: {
308
- "@code-yeongyu/senpi@2026.9.2-4": "patches/@code-yeongyu%2Fsenpi@2026.9.2-4.patch"
309
- }
306
+ ]
310
307
  };
311
308
  });
312
309
 
@@ -94431,7 +94428,7 @@ var package_default2;
94431
94428
  var init_package2 = __esm(() => {
94432
94429
  package_default2 = {
94433
94430
  name: "@oh-my-opencode/omo-codex",
94434
- version: "5.0.0-beta.35",
94431
+ version: "5.0.0-beta.36",
94435
94432
  type: "module",
94436
94433
  private: true,
94437
94434
  description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
package/dist/index.js CHANGED
@@ -96612,7 +96612,7 @@ function getCachedVersion(options = {}) {
96612
96612
  // package.json
96613
96613
  var package_default = {
96614
96614
  name: "oh-my-opencode",
96615
- version: "5.0.0-beta.35",
96615
+ version: "5.0.0-beta.36",
96616
96616
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
96617
96617
  main: "./dist/index.js",
96618
96618
  types: "dist/index.d.ts",
@@ -96792,7 +96792,7 @@ var package_default = {
96792
96792
  zod: "^4.4.3"
96793
96793
  },
96794
96794
  devDependencies: {
96795
- "@code-yeongyu/senpi": "2026.9.2-4",
96795
+ "@code-yeongyu/senpi": "2026.9.3-2",
96796
96796
  "@oh-my-opencode/agents-md-core": "workspace:*",
96797
96797
  "@oh-my-opencode/ast-grep-mcp": "workspace:*",
96798
96798
  "@oh-my-opencode/boulder-state": "workspace:*",
@@ -96833,18 +96833,18 @@ var package_default = {
96833
96833
  typescript: "^7.0.2"
96834
96834
  },
96835
96835
  optionalDependencies: {
96836
- "oh-my-opencode-darwin-arm64": "5.0.0-beta.35",
96837
- "oh-my-opencode-darwin-x64": "5.0.0-beta.35",
96838
- "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.35",
96839
- "oh-my-opencode-linux-arm64": "5.0.0-beta.35",
96840
- "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.35",
96841
- "oh-my-opencode-linux-x64": "5.0.0-beta.35",
96842
- "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.35",
96843
- "oh-my-opencode-linux-x64-musl": "5.0.0-beta.35",
96844
- "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.35",
96845
- "oh-my-opencode-windows-arm64": "5.0.0-beta.35",
96846
- "oh-my-opencode-windows-x64": "5.0.0-beta.35",
96847
- "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.35"
96836
+ "oh-my-opencode-darwin-arm64": "5.0.0-beta.36",
96837
+ "oh-my-opencode-darwin-x64": "5.0.0-beta.36",
96838
+ "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.36",
96839
+ "oh-my-opencode-linux-arm64": "5.0.0-beta.36",
96840
+ "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.36",
96841
+ "oh-my-opencode-linux-x64": "5.0.0-beta.36",
96842
+ "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.36",
96843
+ "oh-my-opencode-linux-x64-musl": "5.0.0-beta.36",
96844
+ "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.36",
96845
+ "oh-my-opencode-windows-arm64": "5.0.0-beta.36",
96846
+ "oh-my-opencode-windows-x64": "5.0.0-beta.36",
96847
+ "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.36"
96848
96848
  },
96849
96849
  overrides: {
96850
96850
  "@earendil-works/pi-agent-core": "0.84.2",
@@ -96860,10 +96860,7 @@ var package_default = {
96860
96860
  },
96861
96861
  trustedDependencies: [
96862
96862
  "@code-yeongyu/comment-checker"
96863
- ],
96864
- patchedDependencies: {
96865
- "@code-yeongyu/senpi@2026.9.2-4": "patches/@code-yeongyu%2Fsenpi@2026.9.2-4.patch"
96866
- }
96863
+ ]
96867
96864
  };
96868
96865
 
96869
96866
  // packages/omo-opencode/src/hooks/auto-update-checker/checker/bundled-version.ts
@@ -42,17 +42,17 @@ $ulw-execute [plan-name] [--worktree <absolute-path>] [--make-pr] [--ship]
42
42
  ```
43
43
 
44
44
  - `plan-name` (optional): a full or partial file stem under `.omo/plans/`.
45
- - `--worktree` (required for PR/branch work; otherwise optional): the task-owned git worktree path.
46
- - `--make-pr` (optional): deliver the work as a pull request. IMPLIES worktree mode: when `--worktree` is absent, create a task-owned worktree (`git worktree add <absolute-path> <base-branch>`) before implementation and record it as `worktree_path`. On completion, push the branch and open a reviewer-readable PR, then hand off with the PR URL - merge only if the user asks.
45
+ - `--worktree` (optional): reuse an existing task-owned worktree for the first phase instead of creating one; every phase runs in a task-owned worktree regardless.
46
+ - `--make-pr` (optional): deliver each phase's worktree as a pull request — push the branch, open a reviewer-readable PR, hand off with the URL, and merge only if the user asks.
47
47
  - `--ship` (optional): full delivery lifecycle; implies `--make-pr`. After the PR opens, stay on the job until it is MERGED: watch CI and review gates, fix failures and address feedback from the worktree (fresh QA evidence for behavior changes), merge per the repository's merge policy, then remove the worktree and sync `.omo/` state back.
48
48
 
49
49
  ## Goal and todo discipline (MANDATORY)
50
50
 
51
51
  Do ALL of this immediately after the plan is selected, BEFORE the first implementation dispatch. Skipping any step is a defect.
52
52
 
53
- 1. **Set the goal, in detail.** When a goal tool is available (`create_goal`), call it with a DETAILED objective: the plan name and path, the concrete end state, the phase and task counts, the delivery mode (direct, `--make-pr`, or `--ship`), and how completion will be verified. One work session = one goal. No goal tool -> record the same objective as the first ledger entry.
53
+ 1. **Set the goal, in detail.** When a goal tool is available (`create_goal`), call it with a DETAILED objective: the plan name and path, the concrete end state, the phase and task counts, the delivery mode (direct, `--make-pr`, or `--ship`), and how completion will be verified. One work session = one registered goal (the goal tool holds one active goal); each phase then carries its own concrete goal — the ledger entry Phase 2 records before the wave's first dispatch, defined from the previous phase's landed and verified evidence. No goal tool -> record the same objective as the first ledger entry.
54
54
  2. **Register every phase and task as todos.** Mirror the plan into the todo/plan tool of your harness: one phase per plan wave, one todo per column-zero checkbox (including the final verification wave). Register ALL of them up front - never keep tasks in memory only.
55
- 3. **Keep them current at every moment.** Mark a todo in_progress when its work dispatches and done immediately after its verification passes. Never batch-complete at the end, never execute work that is not a registered todo; discovered work is appended as a todo before it runs. The todo list, Boulder state, and plan checkboxes must always tell the same story.
55
+ 3. **Keep them current at every moment.** Mark a todo in_progress when its work dispatches and done immediately after its verification passes. Never batch-complete at the end, never execute work that is not a registered todo; discovered work — a pre-existing bug, failing test, stale doc, or wrong guidance — is appended to the plan as a checkbox, mirrored as a todo before it runs, and fixed to the ideal state, never deferred as a follow-up. A worker that meets a defect outside its assigned files reports it instead of fixing it; only the orchestrator appends the checkbox and dispatches it to a correctly scoped unit. The todo list, Boulder state, and plan checkboxes must always tell the same story.
56
56
 
57
57
  ## Phase 1: Select the plan
58
58
 
@@ -95,14 +95,14 @@ Write `.omo/boulder.json` before implementation starts. Prefix session ids with
95
95
  }
96
96
  ```
97
97
 
98
- For PR/branch work, a task-owned worktree is mandatory before implementation starts: pass `--worktree`, or use `--make-pr`/`--ship`, which auto-create one. Verify the path with `git worktree list --porcelain` or create it with `git worktree add <path> <branch-or-HEAD>`, then store the absolute path as `worktree_path`. All edits, commands, tests, and evidence capture must run inside that worktree.
98
+ Every phase (plan wave) runs in its own task-owned worktree with its own goal: before the wave's first dispatch, record the wave's goal — its checkboxes and their acceptance criteria — as a ledger entry, then `git worktree add <repo>-wt/<plan>-<wave> <branch off the integration base>` (or verify a `--worktree` path with `git worktree list --porcelain`), store the absolute path as `worktree_path`, run every edit, command, test, and evidence capture inside it; the wave lands on the integration base once its checkboxes are verified (direct merge, or the PR under `--make-pr`/`--ship`), and the next wave branches from that landed base.
99
99
 
100
100
  ## Parallel delivery lanes (teams and worktrees)
101
101
 
102
102
  Solo orchestration with parallel background workers is the default topology. Decide once, when the wave's lanes are known, and record the verdict in the ledger:
103
103
 
104
104
  - **Independent lanes -> parallel workers.** Separate files, no shared contract: one parallel spawn burst; no team.
105
- - **Dependency-ordered lanes -> a dag run.** Sub-tasks with real ordering between them (C needs A and B finished first) and a harness with a native `dag` tool: dispatch the wave as ONE dag run — one producer node per lane plus a verification node — instead of a spawn burst, and watch the run's lifecycle instead of arming per-lane watchers. Read the `mass-ulw` skill's `SKILL.md` and `references/planning.md` IN FULL before defining any graph.
105
+ - **Dependency-ordered lanes -> one `workflow` run per wave.** Sub-tasks with real ordering between them (C needs A and B finished first) and a harness with a native `workflow` tool: dispatch the wave as ONE run (one producer node per lane plus a verification node); recover inside it with `retry`/`amend`/`send`; let node completions wake you instead of arming per-lane watchers; the next wave is a NEW run (or `amend` when only the definition changed) — never one graph for the whole plan. Read the `mass-ulw` skill's `SKILL.md` and `references/planning.md` IN FULL before defining any graph.
106
106
  - **Overlapping lanes -> a team.** The lanes touch the same module or contract AND running them concurrently actually finishes sooner: stand up a team (where the harness has one) so one lane's discoveries relay through you mid-flight.
107
107
  - **PR-mode independent lanes -> a worktree per lane.** Under `--make-pr`/`--ship`, when a wave holds independent checkboxes, give each lane its own branch and task-owned worktree, delivered as its own PR.
108
108
 
@@ -162,7 +162,7 @@ Each sub-task message must include:
162
162
  - Terminal / TUI: drive a real pty; `tmux send-keys` is fine for a boot/behavior smoke, but color/layout/CJK evidence goes through the xterm.js web terminal below, NEVER `tmux capture-pane`.
163
163
  - Browser use: prefer the harness's in-app browser control when available and the scenario does not need an authenticated or persistent user browser profile; otherwise drive the real page with Chrome, or agent-browser (https://github.com/vercel-labs/agent-browser) when Chrome is unavailable.
164
164
  - Computer use: OS-level GUI automation against the running desktop app when the surface is not a page.
165
- - TUI visual evidence: when a TUI claim needs visual QA or PR proof, run `node script/qa/web-terminal-visual-qa.mjs --command "<cmd>" --input "{Enter}" --evidence-dir <dir>` (real pty rendered through xterm.js in Chrome) and attach `terminal.png` plus `metadata.json`.
165
+ - TUI visual evidence: when a TUI claim needs visual QA or PR proof, run `bun script/qa/web-terminal-visual-qa.mjs --command "<cmd>" --input "{Enter}" --evidence-dir <dir>` (real pty rendered through xterm.js in Chrome) and attach `terminal.png` plus `metadata.json`.
166
166
  6. The adversarial classes that apply to this sub-task (from the 9 ultraqa classes) and how each is probed.
167
167
  7. Required artifact path and cleanup receipt.
168
168
  8. Tool-use expectations: batch independent tool calls in parallel; when the harness exposes a code-execution surface (eval), use it for multi-call steps instead of one-by-one calls.
@@ -225,7 +225,7 @@ Only after verification passes:
225
225
  When all top-level checkboxes in `## TODOs` and `## Final Verification Wave` are complete:
226
226
 
227
227
  1. Run the plan's final verification commands.
228
- 2. For PR/branch work, finish the lifecycle from the task-owned worktree: sync `.omo/` state back to the main repo, create or update the PR, wait for review/verification gates, merge by default unless explicitly opted out, and remove the worktree only after successful merge or explicit handoff.
228
+ 2. For PR/branch work, finish the lifecycle from the last phase's worktree: sync `.omo/` state back to the main repo, create or update the PR, wait for review/verification gates, merge by default unless explicitly opted out, and remove the worktree only after successful merge or explicit handoff.
229
229
  3. Remove or mark the Boulder work as completed.
230
230
  4. Print an `ORCHESTRATION COMPLETE` block with the plan path, verification commands, artifacts, and cleanup receipts.
231
231
 
@@ -236,6 +236,6 @@ When all top-level checkboxes in `## TODOs` and `## Final Verification Wave` are
236
236
  - No tests-only completion claim. A Manual-QA artifact is required.
237
237
  - **NO DIRECT IMPLEMENTATION BY THE ORCHESTRATOR.** Root NEVER edits product files, writes tests, or runs QA itself — a spawned worker does.
238
238
  - No completion claim while an applicable ultraqa adversarial class was never probed. Each applicable class needs a captured observable result; each skipped class needs a one-line not-applicable reason in the ledger.
239
- - No PR/branch implementation, review, or merge in the main worktree; use the task-owned git worktree.
239
+ - No implementation, review, or merge in the main checkout; every phase works in its task-owned worktree.
240
240
  - No unprefixed session ids in Boulder state. Sessions are always recorded as `codex:<session_id>`.
241
241
  - No stale-memory execution. The plan and ledger are the durable source of truth.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-opencode",
3
- "version": "5.0.0-beta.35",
3
+ "version": "5.0.0-beta.36",
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",
@@ -180,7 +180,7 @@
180
180
  "zod": "^4.4.3"
181
181
  },
182
182
  "devDependencies": {
183
- "@code-yeongyu/senpi": "2026.9.2-4",
183
+ "@code-yeongyu/senpi": "2026.9.3-2",
184
184
  "@oh-my-opencode/agents-md-core": "workspace:*",
185
185
  "@oh-my-opencode/ast-grep-mcp": "workspace:*",
186
186
  "@oh-my-opencode/boulder-state": "workspace:*",
@@ -221,18 +221,18 @@
221
221
  "typescript": "^7.0.2"
222
222
  },
223
223
  "optionalDependencies": {
224
- "oh-my-opencode-darwin-arm64": "5.0.0-beta.35",
225
- "oh-my-opencode-darwin-x64": "5.0.0-beta.35",
226
- "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.35",
227
- "oh-my-opencode-linux-arm64": "5.0.0-beta.35",
228
- "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.35",
229
- "oh-my-opencode-linux-x64": "5.0.0-beta.35",
230
- "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.35",
231
- "oh-my-opencode-linux-x64-musl": "5.0.0-beta.35",
232
- "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.35",
233
- "oh-my-opencode-windows-arm64": "5.0.0-beta.35",
234
- "oh-my-opencode-windows-x64": "5.0.0-beta.35",
235
- "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.35"
224
+ "oh-my-opencode-darwin-arm64": "5.0.0-beta.36",
225
+ "oh-my-opencode-darwin-x64": "5.0.0-beta.36",
226
+ "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.36",
227
+ "oh-my-opencode-linux-arm64": "5.0.0-beta.36",
228
+ "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.36",
229
+ "oh-my-opencode-linux-x64": "5.0.0-beta.36",
230
+ "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.36",
231
+ "oh-my-opencode-linux-x64-musl": "5.0.0-beta.36",
232
+ "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.36",
233
+ "oh-my-opencode-windows-arm64": "5.0.0-beta.36",
234
+ "oh-my-opencode-windows-x64": "5.0.0-beta.36",
235
+ "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.36"
236
236
  },
237
237
  "overrides": {
238
238
  "@earendil-works/pi-agent-core": "0.84.2",
@@ -248,8 +248,5 @@
248
248
  },
249
249
  "trustedDependencies": [
250
250
  "@code-yeongyu/comment-checker"
251
- ],
252
- "patchedDependencies": {
253
- "@code-yeongyu/senpi@2026.9.2-4": "patches/@code-yeongyu%2Fsenpi@2026.9.2-4.patch"
254
- }
251
+ ]
255
252
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omo",
3
- "version": "5.0.0-beta.35",
3
+ "version": "5.0.0-beta.36",
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.0.0-beta.35) Checking Bootstrap Provisioning"
11
+ "statusMessage": "(OmO 5.0.0-beta.36) 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.35",
3
+ "version": "5.0.0-beta.36",
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.35) Checking Comments"
11
+ "statusMessage": "(OmO 5.0.0-beta.36) 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.35",
3
+ "version": "5.0.0-beta.36",
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.35) Recommending Git Bash MCP"
11
+ "statusMessage": "(OmO 5.0.0-beta.36) 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.35) Resetting Git Bash MCP Reminder"
23
+ "statusMessage": "(OmO 5.0.0-beta.36) 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.35",
3
+ "version": "5.0.0-beta.36",
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.35) Verifying LazyCodex Executor Evidence"
11
+ "statusMessage": "(OmO 5.0.0-beta.36) 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.35",
3
+ "version": "5.0.0-beta.36",
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.35",
4
- "inputDigest": "sha256:80eaec06f43a9df6fe4bcf6c656f99cc4cb64cc31e4453fc62b280c313bb2957",
3
+ "version": "5.0.0-beta.36",
4
+ "inputDigest": "sha256:558ef72cedeb3dd7f45ca67a3062270f88bb9906f5f57ec2f1cd36570ad3ab8d",
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.35) Checking LSP Diagnostics"
11
+ "statusMessage": "(OmO 5.0.0-beta.36) 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.35) Resetting LSP Diagnostics Cache"
24
+ "statusMessage": "(OmO 5.0.0-beta.36) 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.35",
3
+ "version": "5.0.0-beta.36",
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.35) Loading Project Rules"
10
+ "statusMessage": "(OmO 5.0.0-beta.36) 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.35) Loading Project Rules"
22
+ "statusMessage": "(OmO 5.0.0-beta.36) Loading Project Rules"
23
23
  }
24
24
  ]
25
25
  }
@@ -32,7 +32,7 @@
32
32
  "type": "command",
33
33
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
34
34
  "timeout": 10,
35
- "statusMessage": "(OmO 5.0.0-beta.35) Matching Project Rules"
35
+ "statusMessage": "(OmO 5.0.0-beta.36) 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.35) Resetting Project Rule Cache"
48
+ "statusMessage": "(OmO 5.0.0-beta.36) 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.35",
3
+ "version": "5.0.0-beta.36",
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.35) Checking Thread Title Hygiene"
11
+ "statusMessage": "(OmO 5.0.0-beta.36) 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.35",
3
+ "version": "5.0.0-beta.36",
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.35) Recording Session Telemetry"
10
+ "statusMessage": "(OmO 5.0.0-beta.36) 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.35",
3
+ "version": "5.0.0-beta.36",
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.0.0-beta.35) Checking Ultrawork Trigger"
10
+ "statusMessage": "(OmO 5.0.0-beta.36) 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.35",
3
+ "version": "5.0.0-beta.36",
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.0.0-beta.35) Checking Ulw-Execute Continuation"
10
+ "statusMessage": "(OmO 5.0.0-beta.36) Checking Ulw-Execute Continuation"
11
11
  }
12
12
  ]
13
13
  }
@@ -19,7 +19,7 @@
19
19
  "type": "command",
20
20
  "command": "node \"${PLUGIN_ROOT}/components/ulw-execute-continuation/dist/cli.js\" hook subagent-stop",
21
21
  "timeout": 10,
22
- "statusMessage": "(OmO 5.0.0-beta.35) Checking Ulw-Execute Continuation"
22
+ "statusMessage": "(OmO 5.0.0-beta.36) Checking Ulw-Execute Continuation"
23
23
  }
24
24
  ]
25
25
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-ulw-execute-continuation",
3
- "version": "5.0.0-beta.35",
3
+ "version": "5.0.0-beta.36",
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",