oh-my-opencode 5.0.0-beta.79 → 5.0.0-beta.80

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 (96) hide show
  1. package/.agents/command/remove-deadcode.md +1 -1
  2. package/.agents/skills/hyperplan/SKILL.md +5 -5
  3. package/.agents/skills/remove-deadcode/SKILL.md +1 -1
  4. package/.agents/skills/security-research/SKILL.md +4 -4
  5. package/dist/cli/index.js +499 -336
  6. package/dist/cli-node/index.js +499 -336
  7. package/dist/config-migration/category-deep-split.d.ts +3 -0
  8. package/dist/config-migration/migration-plans.d.ts +1 -0
  9. package/dist/features/builtin-commands/templates/hyperplan.d.ts +1 -1
  10. package/dist/features/builtin-commands/templates/refactor-sections/team-mode-addendum.d.ts +1 -1
  11. package/dist/features/builtin-commands/templates/remove-ai-slops.d.ts +1 -1
  12. package/dist/index.js +282 -123
  13. package/dist/plugin-config/omo-config-chain.d.ts +1 -0
  14. package/dist/skills/debugging/references/methodology/02-investigate.md +5 -5
  15. package/dist/skills/refactor/SKILL.md +2 -2
  16. package/dist/skills/remove-ai-slops/SKILL.md +4 -4
  17. package/dist/skills/ulw-execute/SKILL.md +3 -2
  18. package/dist/skills/ulw-plan/references/full-workflow.md +1 -1
  19. package/dist/skills/ulw-research/SKILL.md +2 -2
  20. package/dist/tools/delegate-task/openai-categories.d.ts +6 -4
  21. package/dist/tui.js +146 -71
  22. package/package.json +14 -14
  23. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  24. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +77 -8
  25. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  26. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  27. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  28. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  29. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  30. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  31. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  32. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  33. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
  34. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  35. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  36. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  37. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  38. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  39. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  40. package/packages/omo-codex/plugin/components/telemetry/dist/cli.js +63 -17
  41. package/packages/omo-codex/plugin/components/telemetry/dist/posthog.js +63 -17
  42. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  43. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  44. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  45. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  46. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +1 -1
  47. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
  48. package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
  49. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-template.js +3 -3
  50. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +14 -6
  51. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-instruction.js +2 -2
  52. package/packages/omo-codex/plugin/components/ulw-loop/dist/surface.js +9 -1
  53. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
  54. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  55. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-template.ts +3 -3
  56. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-instruction.ts +2 -2
  57. package/packages/omo-codex/plugin/components/ulw-loop/src/surface.ts +9 -1
  58. package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-template.test.ts +1 -1
  59. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-instruction.test.ts +1 -1
  60. package/packages/omo-codex/plugin/components/ulw-loop/test/sdk-contract.test.ts +1 -1
  61. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  62. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  63. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  64. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  65. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  66. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  67. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  68. package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
  69. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  70. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  71. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  72. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  73. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  74. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  75. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  76. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
  77. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  78. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  79. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  80. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  81. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  82. package/packages/omo-codex/plugin/package-lock.json +12 -12
  83. package/packages/omo-codex/plugin/package.json +1 -1
  84. package/packages/omo-codex/plugin/skills/debugging/references/methodology/02-investigate.md +5 -5
  85. package/packages/omo-codex/plugin/skills/refactor/SKILL.md +2 -2
  86. package/packages/omo-codex/plugin/skills/remove-ai-slops/SKILL.md +4 -4
  87. package/packages/omo-codex/plugin/skills/ulw-execute/SKILL.md +3 -2
  88. package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +1 -1
  89. package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +2 -2
  90. package/packages/omo-codex/scripts/install-dist/install-local.mjs +167 -51
  91. package/packages/shared-skills/skills/debugging/references/methodology/02-investigate.md +5 -5
  92. package/packages/shared-skills/skills/refactor/SKILL.md +2 -2
  93. package/packages/shared-skills/skills/remove-ai-slops/SKILL.md +4 -4
  94. package/packages/shared-skills/skills/ulw-execute/SKILL.md +3 -2
  95. package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +1 -1
  96. package/packages/shared-skills/skills/ulw-research/SKILL.md +2 -2
@@ -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.79) Recording Session Telemetry"
10
+ "statusMessage": "(OmO 5.0.0-beta.80) 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.79",
3
+ "version": "5.0.0-beta.80",
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.79) Checking Ultrawork Trigger"
10
+ "statusMessage": "(OmO 5.0.0-beta.80) 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.79",
3
+ "version": "5.0.0-beta.80",
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",
@@ -154,7 +154,7 @@ No Metis, no plan file, no execution until the user approves. The UNCLEAR path a
154
154
  ## Commit strategy
155
155
  ## Success criteria
156
156
  ```
157
- > Target 5-8 todos per wave; fewer than 3 (except the final) means under-splitting. Implementation + Test = ONE todo. Each todo carries: exhaustive References (the executor has no interview context), agent-executable Acceptance criteria, happy + failure QA scenarios each with an evidence path, a Commit line, and a `Recommended task executor category:` line - the routing verdict the executor follows, with a one-line reason, in the omo category vocabulary: `quick` (mechanical / single-file - the default for every splittable piece), `unspecified-low` (small misc), `unspecified-high` (standard multi-file feature), `visual-engineering` (frontend/UI), `writing` (docs), `git` (git ops), `deep` (hairy debugging or cross-module reasoning), `ultrabrain` (ONE genuinely hard cohesive problem, delegated whole). Prefer many small `quick`-routable todos spread across parallel waves; when splitting would sever shared reasoning, keep ONE todo routed to `deep`/`ultrabrain` - never force-split work whose parts share one insight. Harnesses without categories map by difficulty: quick/unspecified-low/writing/git = low, unspecified-high/visual-engineering = medium, deep/ultrabrain = high.
157
+ > Target 5-8 todos per wave; fewer than 3 (except the final) means under-splitting. Implementation + Test = ONE todo. Each todo carries: exhaustive References (the executor has no interview context), agent-executable Acceptance criteria, happy + failure QA scenarios each with an evidence path, a Commit line, and a `Recommended task executor category:` line - the routing verdict the executor follows, with a one-line reason, in the omo category vocabulary: `quick` (mechanical / single-file - the default for every splittable piece), `unspecified-low` (small misc), `unspecified-high` (standard multi-file feature), `visual-engineering` (frontend/UI), `writing` (docs), `git` (git ops), `deep-low` (hairy debugging or cross-module reasoning the worker can settle from what it reads), `deep-high` (the same, when the central decision cannot be settled from evidence: a trade-off, a cross-package contract, or correctness argued from invariants), `ultrabrain` (ONE genuinely hard cohesive problem, delegated whole). Prefer many small `quick`-routable todos spread across parallel waves; when splitting would sever shared reasoning, keep ONE todo routed to `deep`/`ultrabrain` - never force-split work whose parts share one insight. Harnesses without categories map by difficulty: quick/unspecified-low/writing/git = low, unspecified-high/visual-engineering = medium, deep/ultrabrain = high.
158
158
 
159
159
  ## Plan artifact producer contract
160
160
 
@@ -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.79) Checking Ulw-Execute Continuation"
10
+ "statusMessage": "(OmO 5.0.0-beta.80) 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.0.0-beta.79",
3
+ "version": "5.0.0-beta.80",
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",
@@ -58,7 +58,7 @@ function gateTemplate(surface, base) {
58
58
  const common = {
59
59
  manualQa,
60
60
  gateReview: {
61
- by: surface === "omo-senpi" ? "category:deep" : "main-session",
61
+ by: surface === "omo-senpi" ? "category:deep-high" : "main-session",
62
62
  recommendation: "APPROVE",
63
63
  reportPath: artifactPath(base, "gate-review.md"),
64
64
  evidence: "<replace:gate review evidence>",
@@ -95,10 +95,10 @@ export async function checkpointTemplate(repoRoot, scope, goalId, dependencies)
95
95
  "codex-goal-json requires goal.objective to equal the plan's codexObjective verbatim; do not paraphrase it.",
96
96
  "Fill every <replace:...> value with plausible non-empty evidence and use real, non-empty artifact files.",
97
97
  'Passing codex-goal-json example: {"goal":{"objective":"<plan codexObjective verbatim>","status":"complete"}}.',
98
- 'Passing quality-gate-json example requires gateReview {"by":"category:deep","recommendation":"APPROVE","evidence":"review passed","reportPath":"<attemptDir>/gate-review.md","blockers":[],"notes":[]}, manualQa.artifactRefs objects, iteration, and criteriaCoverage.',
98
+ 'Passing quality-gate-json example requires gateReview {"by":"category:deep-high","recommendation":"APPROVE","evidence":"review passed","reportPath":"<attemptDir>/gate-review.md","blockers":[],"notes":[]}, manualQa.artifactRefs objects, iteration, and criteriaCoverage.',
99
99
  ...(surface === "lazycodex"
100
100
  ? [
101
- "Self-review defaults: manualQa.by and gateReview.by are main-session. Alternatives: manualQa.by accepts lazycodex-qa-executor; gateReview.by accepts lazycodex-gate-reviewer, category:deep, category:unspecified-high, or category:unspecified-low. Optional codeReview.by accepts lazycodex-code-reviewer or main-session.",
101
+ "Self-review defaults: manualQa.by and gateReview.by are main-session. Alternatives: manualQa.by accepts lazycodex-qa-executor; gateReview.by accepts lazycodex-gate-reviewer, category:deep-high, category:deep-low, category:unspecified-high, or category:unspecified-low. Optional codeReview.by accepts lazycodex-code-reviewer or main-session.",
102
102
  ]
103
103
  : []),
104
104
  ...(hasAttempt ? [] : ["This plan is evidence-layout v1; artifacts go under .omo/evidence/."]),
@@ -1382,6 +1382,8 @@ var GATE_SECTION_BY_ACCEPTOR = {
1382
1382
  manualQa: [REVIEWER_ROLES_BY_SURFACE.lazycodex.manualQa, "main-session"],
1383
1383
  gateReview: [
1384
1384
  REVIEWER_ROLES_BY_SURFACE.lazycodex.gateReview,
1385
+ "category:deep-high",
1386
+ "category:deep-low",
1385
1387
  "category:deep",
1386
1388
  "category:unspecified-high",
1387
1389
  "category:unspecified-low",
@@ -1390,7 +1392,13 @@ var GATE_SECTION_BY_ACCEPTOR = {
1390
1392
  },
1391
1393
  "omo-senpi": {
1392
1394
  manualQa: ["main-session"],
1393
- gateReview: ["category:deep", "category:unspecified-high", "category:unspecified-low"]
1395
+ gateReview: [
1396
+ "category:deep-high",
1397
+ "category:deep-low",
1398
+ "category:deep",
1399
+ "category:unspecified-high",
1400
+ "category:unspecified-low"
1401
+ ]
1394
1402
  }
1395
1403
  };
1396
1404
  function reviewerRolesFor(surface) {
@@ -2058,7 +2066,7 @@ function gateTemplate(surface, base) {
2058
2066
  const common = {
2059
2067
  manualQa,
2060
2068
  gateReview: {
2061
- by: surface === "omo-senpi" ? "category:deep" : "main-session",
2069
+ by: surface === "omo-senpi" ? "category:deep-high" : "main-session",
2062
2070
  recommendation: "APPROVE",
2063
2071
  reportPath: artifactPath(base, "gate-review.md"),
2064
2072
  evidence: "<replace:gate review evidence>",
@@ -2095,9 +2103,9 @@ async function checkpointTemplate(repoRoot, scope, goalId, dependencies) {
2095
2103
  "codex-goal-json requires goal.objective to equal the plan's codexObjective verbatim; do not paraphrase it.",
2096
2104
  "Fill every <replace:...> value with plausible non-empty evidence and use real, non-empty artifact files.",
2097
2105
  'Passing codex-goal-json example: {"goal":{"objective":"<plan codexObjective verbatim>","status":"complete"}}.',
2098
- 'Passing quality-gate-json example requires gateReview {"by":"category:deep","recommendation":"APPROVE","evidence":"review passed","reportPath":"<attemptDir>/gate-review.md","blockers":[],"notes":[]}, manualQa.artifactRefs objects, iteration, and criteriaCoverage.',
2106
+ 'Passing quality-gate-json example requires gateReview {"by":"category:deep-high","recommendation":"APPROVE","evidence":"review passed","reportPath":"<attemptDir>/gate-review.md","blockers":[],"notes":[]}, manualQa.artifactRefs objects, iteration, and criteriaCoverage.',
2099
2107
  ...surface === "lazycodex" ? [
2100
- "Self-review defaults: manualQa.by and gateReview.by are main-session. Alternatives: manualQa.by accepts lazycodex-qa-executor; gateReview.by accepts lazycodex-gate-reviewer, category:deep, category:unspecified-high, or category:unspecified-low. Optional codeReview.by accepts lazycodex-code-reviewer or main-session."
2108
+ "Self-review defaults: manualQa.by and gateReview.by are main-session. Alternatives: manualQa.by accepts lazycodex-qa-executor; gateReview.by accepts lazycodex-gate-reviewer, category:deep-high, category:deep-low, category:unspecified-high, or category:unspecified-low. Optional codeReview.by accepts lazycodex-code-reviewer or main-session."
2101
2109
  ] : [],
2102
2110
  ...hasAttempt ? [] : ["This plan is evidence-layout v1; artifacts go under .omo/evidence/."]
2103
2111
  ].join(" ");
@@ -2311,8 +2319,8 @@ function senpiFinalSection(plan, goal, aggregate) {
2311
2319
  return joinLines([
2312
2320
  "Final story — run the single-reviewer quality gate before update_goal:",
2313
2321
  '- Run manual QA yourself and write the non-empty artifact under currentAttemptDir; set manualQa.by to "main-session".',
2314
- '- Spawn exactly one gate reviewer with task(category: "deep").',
2315
- "- If that task fails with any model_unavailable failure, retry with category:unspecified-high, then category:unspecified-low.",
2322
+ '- Spawn exactly one gate reviewer with task(category: "deep-high").',
2323
+ "- If that task fails with any model_unavailable failure, retry with category:deep-low, then category:unspecified-high, then category:unspecified-low.",
2316
2324
  "- Set gateReview.by to the exact category:<name> literal used for the successful task.",
2317
2325
  "- Build the gate JSON with omo-agent-toolkit ulw-loop checkpoint --print-template, then fill manualQa, gateReview, iteration, and criteriaCoverage.",
2318
2326
  '- Require passed manualQa, approved gateReview, passed iteration, and complete criteriaCoverage before update_goal({status: "complete"}).',
@@ -113,8 +113,8 @@ function senpiFinalSection(plan, goal, aggregate) {
113
113
  return joinLines([
114
114
  "Final story — run the single-reviewer quality gate before update_goal:",
115
115
  "- Run manual QA yourself and write the non-empty artifact under currentAttemptDir; set manualQa.by to \"main-session\".",
116
- '- Spawn exactly one gate reviewer with task(category: "deep").',
117
- "- If that task fails with any model_unavailable failure, retry with category:unspecified-high, then category:unspecified-low.",
116
+ '- Spawn exactly one gate reviewer with task(category: "deep-high").',
117
+ "- If that task fails with any model_unavailable failure, retry with category:deep-low, then category:unspecified-high, then category:unspecified-low.",
118
118
  '- Set gateReview.by to the exact category:<name> literal used for the successful task.',
119
119
  '- Build the gate JSON with omo-agent-toolkit ulw-loop checkpoint --print-template, then fill manualQa, gateReview, iteration, and criteriaCoverage.',
120
120
  '- Require passed manualQa, approved gateReview, passed iteration, and complete criteriaCoverage before update_goal({status: "complete"}).',
@@ -28,6 +28,8 @@ export const GATE_SECTION_BY_ACCEPTOR = {
28
28
  manualQa: [REVIEWER_ROLES_BY_SURFACE.lazycodex.manualQa, "main-session"],
29
29
  gateReview: [
30
30
  REVIEWER_ROLES_BY_SURFACE.lazycodex.gateReview,
31
+ "category:deep-high",
32
+ "category:deep-low",
31
33
  "category:deep",
32
34
  "category:unspecified-high",
33
35
  "category:unspecified-low",
@@ -36,7 +38,13 @@ export const GATE_SECTION_BY_ACCEPTOR = {
36
38
  },
37
39
  "omo-senpi": {
38
40
  manualQa: ["main-session"],
39
- gateReview: ["category:deep", "category:unspecified-high", "category:unspecified-low"],
41
+ gateReview: [
42
+ "category:deep-high",
43
+ "category:deep-low",
44
+ "category:deep",
45
+ "category:unspecified-high",
46
+ "category:unspecified-low",
47
+ ],
40
48
  },
41
49
  };
42
50
  export function reviewerRolesFor(surface) {
@@ -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.0.0-beta.79) Checking Ulw-Loop Steering"
10
+ "statusMessage": "(OmO 5.0.0-beta.80) 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.0.0-beta.79) Recording Spawn Admission"
23
+ "statusMessage": "(OmO 5.0.0-beta.80) 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.0.0-beta.79) Enforcing Unlimited Ulw-Loop Budget"
36
+ "statusMessage": "(OmO 5.0.0-beta.80) 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.0.0-beta.79) Guarding Ulw-Loop Spawns"
47
+ "statusMessage": "(OmO 5.0.0-beta.80) 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.0.0-beta.79) Checking Ulw-Loop Resume"
59
+ "statusMessage": "(OmO 5.0.0-beta.80) 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.0.0-beta.79",
3
+ "version": "5.0.0-beta.80",
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",
@@ -72,7 +72,7 @@ function gateTemplate(surface: UlwLoopToolkitSurface, base: string): Record<stri
72
72
  const common = {
73
73
  manualQa,
74
74
  gateReview: {
75
- by: surface === "omo-senpi" ? "category:deep" : "main-session",
75
+ by: surface === "omo-senpi" ? "category:deep-high" : "main-session",
76
76
  recommendation: "APPROVE",
77
77
  reportPath: artifactPath(base, "gate-review.md"),
78
78
  evidence: "<replace:gate review evidence>",
@@ -115,10 +115,10 @@ export async function checkpointTemplate(
115
115
  "codex-goal-json requires goal.objective to equal the plan's codexObjective verbatim; do not paraphrase it.",
116
116
  "Fill every <replace:...> value with plausible non-empty evidence and use real, non-empty artifact files.",
117
117
  'Passing codex-goal-json example: {"goal":{"objective":"<plan codexObjective verbatim>","status":"complete"}}.',
118
- 'Passing quality-gate-json example requires gateReview {"by":"category:deep","recommendation":"APPROVE","evidence":"review passed","reportPath":"<attemptDir>/gate-review.md","blockers":[],"notes":[]}, manualQa.artifactRefs objects, iteration, and criteriaCoverage.',
118
+ 'Passing quality-gate-json example requires gateReview {"by":"category:deep-high","recommendation":"APPROVE","evidence":"review passed","reportPath":"<attemptDir>/gate-review.md","blockers":[],"notes":[]}, manualQa.artifactRefs objects, iteration, and criteriaCoverage.',
119
119
  ...(surface === "lazycodex"
120
120
  ? [
121
- "Self-review defaults: manualQa.by and gateReview.by are main-session. Alternatives: manualQa.by accepts lazycodex-qa-executor; gateReview.by accepts lazycodex-gate-reviewer, category:deep, category:unspecified-high, or category:unspecified-low. Optional codeReview.by accepts lazycodex-code-reviewer or main-session.",
121
+ "Self-review defaults: manualQa.by and gateReview.by are main-session. Alternatives: manualQa.by accepts lazycodex-qa-executor; gateReview.by accepts lazycodex-gate-reviewer, category:deep-high, category:deep-low, category:unspecified-high, or category:unspecified-low. Optional codeReview.by accepts lazycodex-code-reviewer or main-session.",
122
122
  ]
123
123
  : []),
124
124
  ...(hasAttempt ? [] : ["This plan is evidence-layout v1; artifacts go under .omo/evidence/."]),
@@ -153,8 +153,8 @@ function senpiFinalSection(plan: UlwLoopPlan, goal: UlwLoopItem, aggregate: bool
153
153
  return joinLines([
154
154
  "Final story — run the single-reviewer quality gate before update_goal:",
155
155
  "- Run manual QA yourself and write the non-empty artifact under currentAttemptDir; set manualQa.by to \"main-session\".",
156
- '- Spawn exactly one gate reviewer with task(category: "deep").',
157
- "- If that task fails with any model_unavailable failure, retry with category:unspecified-high, then category:unspecified-low.",
156
+ '- Spawn exactly one gate reviewer with task(category: "deep-high").',
157
+ "- If that task fails with any model_unavailable failure, retry with category:deep-low, then category:unspecified-high, then category:unspecified-low.",
158
158
  '- Set gateReview.by to the exact category:<name> literal used for the successful task.',
159
159
  '- Build the gate JSON with omo-agent-toolkit ulw-loop checkpoint --print-template, then fill manualQa, gateReview, iteration, and criteriaCoverage.',
160
160
  '- Require passed manualQa, approved gateReview, passed iteration, and complete criteriaCoverage before update_goal({status: "complete"}).',
@@ -54,6 +54,8 @@ export const GATE_SECTION_BY_ACCEPTOR: Readonly<
54
54
  manualQa: [REVIEWER_ROLES_BY_SURFACE.lazycodex.manualQa, "main-session"],
55
55
  gateReview: [
56
56
  REVIEWER_ROLES_BY_SURFACE.lazycodex.gateReview,
57
+ "category:deep-high",
58
+ "category:deep-low",
57
59
  "category:deep",
58
60
  "category:unspecified-high",
59
61
  "category:unspecified-low",
@@ -62,7 +64,13 @@ export const GATE_SECTION_BY_ACCEPTOR: Readonly<
62
64
  },
63
65
  "omo-senpi": {
64
66
  manualQa: ["main-session"],
65
- gateReview: ["category:deep", "category:unspecified-high", "category:unspecified-low"],
67
+ gateReview: [
68
+ "category:deep-high",
69
+ "category:deep-low",
70
+ "category:deep",
71
+ "category:unspecified-high",
72
+ "category:unspecified-low",
73
+ ],
66
74
  },
67
75
  };
68
76
 
@@ -100,7 +100,7 @@ describe("checkpoint --print-template", () => {
100
100
  const gate = result["qualityGateTemplate"] as Record<string, unknown>;
101
101
  expect(Object.keys(gate)).toEqual(["manualQa", "gateReview", "iteration", "criteriaCoverage"]);
102
102
  expect((gate["manualQa"] as Record<string, unknown>)["by"]).toBe("main-session");
103
- expect((gate["gateReview"] as Record<string, unknown>)["by"]).toBe("category:deep");
103
+ expect((gate["gateReview"] as Record<string, unknown>)["by"]).toBe("category:deep-high");
104
104
  expect(result["codexGoalTemplate"]).toEqual({
105
105
  goal: { objective: "Exact objective from goals.json", status: "complete" },
106
106
  });
@@ -105,7 +105,7 @@ describe("buildCodexGoalInstruction aggregate mode", () => {
105
105
 
106
106
  expectTextToContainAll(text, [
107
107
  "main-session",
108
- 'category: "deep"',
108
+ 'category: "deep-high"',
109
109
  "unspecified-high",
110
110
  "unspecified-low",
111
111
  "gateReview.by",
@@ -50,7 +50,7 @@ describe("agent toolkit SDK contract", () => {
50
50
  if (!("qualityGateTemplate" in template.result)) return;
51
51
  expect(template.result.qualityGateTemplate["manualQa"]).toMatchObject({ by: "main-session" });
52
52
  expect(template.result.qualityGateTemplate["gateReview"]).toMatchObject({
53
- by: surface === "omo-senpi" ? "category:deep" : "main-session",
53
+ by: surface === "omo-senpi" ? "category:deep-high" : "main-session",
54
54
  });
55
55
  } finally {
56
56
  await rm(cwd, { recursive: true, force: true });
@@ -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.0.0-beta.79) Resetting Git Bash MCP Reminder",
10
+ "statusMessage": "(OmO 5.0.0-beta.80) 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.0.0-beta.79) Resetting LSP Diagnostics Cache",
10
+ "statusMessage": "(OmO 5.0.0-beta.80) 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.0.0-beta.79) Resetting Project Rule Cache",
10
+ "statusMessage": "(OmO 5.0.0-beta.80) 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.0.0-beta.79) Checking Comments",
10
+ "statusMessage": "(OmO 5.0.0-beta.80) 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.0.0-beta.79) Checking LSP Diagnostics",
10
+ "statusMessage": "(OmO 5.0.0-beta.80) 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.0.0-beta.79) Checking Thread Title Hygiene",
11
+ "statusMessage": "(OmO 5.0.0-beta.80) 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
  ]
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/rules/dist/cli.js\" hook post-tool-use",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 5.0.0-beta.79) Matching Project Rules",
10
+ "statusMessage": "(OmO 5.0.0-beta.80) Matching Project Rules",
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-tool-use"
12
12
  }
13
13
  ],
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/components/ulw-loop/dist/cli.js\" hook post-tool-use-spawn",
10
10
  "timeout": 5,
11
- "statusMessage": "(OmO 5.0.0-beta.79) Recording Spawn Admission",
11
+ "statusMessage": "(OmO 5.0.0-beta.80) Recording Spawn Admission",
12
12
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\ulw-loop\\dist\\cli.js\" hook post-tool-use-spawn"
13
13
  }
14
14
  ]
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/ulw-loop/dist/cli.js\" hook pre-tool-use",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 5.0.0-beta.79) Enforcing Unlimited Goal Budget",
10
+ "statusMessage": "(OmO 5.0.0-beta.80) Enforcing Unlimited Goal Budget",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\ulw-loop\\dist\\cli.js\" hook pre-tool-use"
12
12
  }
13
13
  ],
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/components/ulw-loop/dist/cli.js\" hook pre-tool-use-spawn",
10
10
  "timeout": 5,
11
- "statusMessage": "(OmO 5.0.0-beta.79) Guarding Ulw-Loop Spawns",
11
+ "statusMessage": "(OmO 5.0.0-beta.80) Guarding Ulw-Loop Spawns",
12
12
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\ulw-loop\\dist\\cli.js\" hook pre-tool-use-spawn"
13
13
  }
14
14
  ]
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/git-bash/dist/cli.js\" hook pre-tool-use",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 5.0.0-beta.79) Recommending Git Bash MCP",
10
+ "statusMessage": "(OmO 5.0.0-beta.80) Recommending Git Bash MCP",
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 pre-tool-use"
12
12
  }
13
13
  ],
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/scripts/auto-update.mjs\" hook session-start",
9
9
  "timeout": 15,
10
- "statusMessage": "(OmO 5.0.0-beta.79) Checking Auto Update",
10
+ "statusMessage": "(OmO 5.0.0-beta.80) Checking Auto Update",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\scripts\\auto-update.mjs\" hook session-start"
12
12
  }
13
13
  ],
@@ -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.79) Checking Bootstrap Provisioning"
11
+ "statusMessage": "(OmO 5.0.0-beta.80) Checking Bootstrap Provisioning"
12
12
  }
13
13
  ]
14
14
  }
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/rules/dist/cli.js\" hook session-start",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 5.0.0-beta.79) Loading Project Rules",
10
+ "statusMessage": "(OmO 5.0.0-beta.80) Loading Project Rules",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\rules\\dist\\cli.js\" hook session-start"
12
12
  }
13
13
  ]
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/telemetry/dist/cli.js\" hook session-start",
9
9
  "timeout": 15,
10
- "statusMessage": "(OmO 5.0.0-beta.79) Recording Session Telemetry",
10
+ "statusMessage": "(OmO 5.0.0-beta.80) Recording Session Telemetry",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\telemetry\\dist\\cli.js\" hook session-start"
12
12
  }
13
13
  ]
@@ -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.79) Checking Ulw-Execute Continuation",
10
+ "statusMessage": "(OmO 5.0.0-beta.80) Checking Ulw-Execute Continuation",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\ulw-execute-continuation\\dist\\cli.js\" hook stop"
12
12
  }
13
13
  ]
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/ulw-loop/dist/cli.js\" hook stop",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 5.0.0-beta.79) Checking Ulw-Loop Resume",
10
+ "statusMessage": "(OmO 5.0.0-beta.80) Checking Ulw-Loop Resume",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\ulw-loop\\dist\\cli.js\" hook stop"
12
12
  }
13
13
  ]
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/lazycodex-executor-verify/dist/cli.js\" hook subagent-stop",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 5.0.0-beta.79) Verifying LazyCodex Executor Evidence",
10
+ "statusMessage": "(OmO 5.0.0-beta.80) Verifying LazyCodex Executor Evidence",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\lazycodex-executor-verify\\dist\\cli.js\" hook subagent-stop"
12
12
  }
13
13
  ],
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/ultrawork/dist/cli.js\" hook user-prompt-submit",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 5.0.0-beta.79) Checking Ultrawork Trigger",
10
+ "statusMessage": "(OmO 5.0.0-beta.80) Checking Ultrawork Trigger",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\ultrawork\\dist\\cli.js\" hook user-prompt-submit"
12
12
  }
13
13
  ]
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/ulw-loop/dist/cli.js\" hook user-prompt-submit",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 5.0.0-beta.79) Checking Ulw-Loop Steering",
10
+ "statusMessage": "(OmO 5.0.0-beta.80) Checking Ulw-Loop Steering",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\ulw-loop\\dist\\cli.js\" hook user-prompt-submit"
12
12
  }
13
13
  ]
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/rules/dist/cli.js\" hook user-prompt-submit",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 5.0.0-beta.79) Loading Project Rules",
10
+ "statusMessage": "(OmO 5.0.0-beta.80) Loading Project Rules",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\rules\\dist\\cli.js\" hook user-prompt-submit"
12
12
  }
13
13
  ]