lazycodex-ai 5.0.0-beta.86 → 5.0.0-beta.88

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 (181) hide show
  1. package/dist/cli/index.js +102 -79
  2. package/dist/cli-node/index.js +102 -79
  3. package/package.json +1 -1
  4. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  5. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +2 -0
  6. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  7. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  8. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  9. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  10. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  11. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  12. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  13. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  14. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
  15. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  16. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  17. package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus/gpt-6.md +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/README.md +1 -1
  25. package/packages/omo-codex/plugin/components/ultrawork/agents/plan.toml +2 -2
  26. package/packages/omo-codex/plugin/components/ultrawork/dist/cli.js +63 -89
  27. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  28. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  29. package/packages/omo-codex/plugin/components/ultrawork/src/directive-content.ts +1 -1
  30. package/packages/omo-codex/plugin/components/ulw-execute-continuation/directive.md +2 -2
  31. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
  32. package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
  33. package/packages/omo-codex/plugin/components/ulw-loop/directive.md +63 -89
  34. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
  35. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  36. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/define-goal.md +2 -3
  37. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +2 -2
  38. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  39. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  40. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  41. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  42. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  43. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  44. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  45. package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
  46. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  47. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  48. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  49. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  50. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  51. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  52. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  53. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
  54. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  55. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  56. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  57. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  58. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  59. package/packages/omo-codex/plugin/package-lock.json +12 -12
  60. package/packages/omo-codex/plugin/package.json +1 -1
  61. package/packages/omo-codex/plugin/scripts/materialize-shared-upstreams.mjs +8 -2
  62. package/packages/omo-codex/plugin/scripts/sync-skills.mjs +2 -2
  63. package/packages/omo-codex/plugin/skills/browser/ATTRIBUTION.md +26 -14
  64. package/packages/omo-codex/plugin/skills/browser/SKILL.md +65 -52
  65. package/packages/omo-codex/plugin/skills/browser/references/commands.md +81 -66
  66. package/packages/omo-codex/plugin/skills/browser/references/install.md +31 -34
  67. package/packages/omo-codex/plugin/skills/browser/references/owned-engine/README.md +41 -21
  68. package/packages/omo-codex/plugin/skills/browser/references/owned-engine/frames-and-humans.md +33 -20
  69. package/packages/omo-codex/plugin/skills/browser/references/owned-engine/ladder.md +24 -22
  70. package/packages/omo-codex/plugin/skills/browser/references/owned-engine/network.md +35 -15
  71. package/packages/omo-codex/plugin/skills/browser/references/recipes/1password.md +13 -11
  72. package/packages/omo-codex/plugin/skills/browser/references/remote.md +5 -4
  73. package/packages/omo-codex/plugin/skills/browser/runtime/omowright/index.js +1534 -0
  74. package/packages/omo-codex/plugin/skills/browser/runtime/omowright/manifest.json +9 -0
  75. package/packages/omo-codex/plugin/skills/browser/runtime/omowright/page-bundle.js +1395 -0
  76. package/packages/omo-codex/plugin/skills/browser/scripts/browser-doctor.mjs +37 -32
  77. package/packages/omo-codex/plugin/skills/browser/scripts/browser-install.mjs +31 -44
  78. package/packages/omo-codex/plugin/skills/browser/scripts/omowright.mjs +25 -0
  79. package/packages/omo-codex/plugin/skills/debugging/SKILL.md +2 -2
  80. package/packages/omo-codex/plugin/skills/debugging/references/methodology/06-fix.md +3 -3
  81. package/packages/omo-codex/plugin/skills/debugging/references/methodology/08-qa.md +1 -1
  82. package/packages/omo-codex/plugin/skills/debugging/references/tools/browser-qa.md +104 -0
  83. package/packages/omo-codex/plugin/skills/frontend/SKILL.md +1 -1
  84. package/packages/omo-codex/plugin/skills/frontend/references/design/ambience-skill.md +2 -1
  85. package/packages/omo-codex/plugin/skills/frontend/references/design/clone-from-url.md +1 -1
  86. package/packages/omo-codex/plugin/skills/frontend/references/design/design-system-architecture.md +30 -7
  87. package/packages/omo-codex/plugin/skills/frontend/references/design/interaction-skill.md +17 -5
  88. package/packages/omo-codex/plugin/skills/programming/SKILL.md +12 -18
  89. package/packages/omo-codex/plugin/skills/programming/references/rust/README.md +43 -15
  90. package/packages/omo-codex/plugin/skills/programming/references/rust/api-design.md +81 -0
  91. package/packages/omo-codex/plugin/skills/programming/references/rust/async-tokio.md +60 -28
  92. package/packages/omo-codex/plugin/skills/programming/references/rust/axum-stack.md +1 -13
  93. package/packages/omo-codex/plugin/skills/programming/references/rust/cargo-strict.md +44 -8
  94. package/packages/omo-codex/plugin/skills/programming/references/rust/clap-stack.md +8 -3
  95. package/packages/omo-codex/plugin/skills/programming/references/rust/concurrency.md +66 -52
  96. package/packages/omo-codex/plugin/skills/programming/references/rust/libraries.md +35 -25
  97. package/packages/omo-codex/plugin/skills/programming/references/rust/macros.md +63 -0
  98. package/packages/omo-codex/plugin/skills/programming/references/rust/one-liners.md +5 -3
  99. package/packages/omo-codex/plugin/skills/programming/references/rust/proptest-insta.md +8 -0
  100. package/packages/omo-codex/plugin/skills/programming/references/rust/type-state.md +50 -12
  101. package/packages/omo-codex/plugin/skills/programming/references/rust/unsafe-discipline.md +34 -6
  102. package/packages/omo-codex/plugin/skills/programming/references/rust/zero-cost-safety.md +62 -52
  103. package/packages/omo-codex/plugin/skills/programming/references/rust-ub/miri-sanitizers-loom.md +1 -1
  104. package/packages/omo-codex/plugin/skills/programming/references/rust-ub/ub-taxonomy.md +6 -3
  105. package/packages/omo-codex/plugin/skills/programming/scripts/rust/check-no-excuse-rules.sh +86 -75
  106. package/packages/omo-codex/plugin/skills/programming/scripts/rust/new-project.py +31 -28
  107. package/packages/omo-codex/plugin/skills/review-work/SKILL.md +1 -1
  108. package/packages/omo-codex/plugin/skills/ultimate-browsing/SKILL.md +27 -20
  109. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/AGENTS.md +1 -1
  110. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/chrome-stealth.md +32 -100
  111. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/README.md +5 -11
  112. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/playwright.md +20 -37
  113. package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +63 -89
  114. package/packages/omo-codex/plugin/skills/ulw-execute/SKILL.md +4 -4
  115. package/packages/omo-codex/plugin/skills/ulw-loop/references/define-goal.md +2 -3
  116. package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +2 -2
  117. package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +1 -1
  118. package/packages/omo-codex/plugin/skills/visual-qa/references/browser-setup.md +46 -46
  119. package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +2 -2
  120. package/packages/omo-codex/scripts/install-dist/install-local.mjs +4 -2
  121. package/packages/prompts-core/prompts/ultrawork/codex.md +63 -89
  122. package/packages/shared-skills/skills/browser/ATTRIBUTION.md +26 -14
  123. package/packages/shared-skills/skills/browser/SKILL.md +65 -52
  124. package/packages/shared-skills/skills/browser/references/commands.md +81 -66
  125. package/packages/shared-skills/skills/browser/references/install.md +31 -34
  126. package/packages/shared-skills/skills/browser/references/owned-engine/README.md +41 -21
  127. package/packages/shared-skills/skills/browser/references/owned-engine/frames-and-humans.md +33 -20
  128. package/packages/shared-skills/skills/browser/references/owned-engine/ladder.md +24 -22
  129. package/packages/shared-skills/skills/browser/references/owned-engine/network.md +35 -15
  130. package/packages/shared-skills/skills/browser/references/recipes/1password.md +13 -11
  131. package/packages/shared-skills/skills/browser/references/remote.md +5 -4
  132. package/packages/shared-skills/skills/browser/runtime/omowright/index.js +1534 -0
  133. package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +9 -0
  134. package/packages/shared-skills/skills/browser/runtime/omowright/page-bundle.js +1395 -0
  135. package/packages/shared-skills/skills/browser/scripts/browser-doctor.mjs +37 -32
  136. package/packages/shared-skills/skills/browser/scripts/browser-install.mjs +31 -44
  137. package/packages/shared-skills/skills/browser/scripts/omowright.mjs +25 -0
  138. package/packages/shared-skills/skills/debugging/SKILL.md +2 -2
  139. package/packages/shared-skills/skills/debugging/references/methodology/06-fix.md +3 -3
  140. package/packages/shared-skills/skills/debugging/references/methodology/08-qa.md +1 -1
  141. package/packages/shared-skills/skills/debugging/references/tools/browser-qa.md +104 -0
  142. package/packages/shared-skills/skills/frontend/SKILL.md +1 -1
  143. package/packages/shared-skills/skills/frontend/references/design/ambience-skill.md +2 -1
  144. package/packages/shared-skills/skills/frontend/references/design/clone-from-url.md +1 -1
  145. package/packages/shared-skills/skills/frontend/references/design/design-system-architecture.md +30 -7
  146. package/packages/shared-skills/skills/frontend/references/design/interaction-skill.md +17 -5
  147. package/packages/shared-skills/skills/programming/SKILL.md +12 -18
  148. package/packages/shared-skills/skills/programming/references/rust/README.md +43 -15
  149. package/packages/shared-skills/skills/programming/references/rust/api-design.md +81 -0
  150. package/packages/shared-skills/skills/programming/references/rust/async-tokio.md +60 -28
  151. package/packages/shared-skills/skills/programming/references/rust/axum-stack.md +1 -13
  152. package/packages/shared-skills/skills/programming/references/rust/cargo-strict.md +44 -8
  153. package/packages/shared-skills/skills/programming/references/rust/clap-stack.md +8 -3
  154. package/packages/shared-skills/skills/programming/references/rust/concurrency.md +66 -52
  155. package/packages/shared-skills/skills/programming/references/rust/libraries.md +35 -25
  156. package/packages/shared-skills/skills/programming/references/rust/macros.md +63 -0
  157. package/packages/shared-skills/skills/programming/references/rust/one-liners.md +5 -3
  158. package/packages/shared-skills/skills/programming/references/rust/proptest-insta.md +8 -0
  159. package/packages/shared-skills/skills/programming/references/rust/type-state.md +50 -12
  160. package/packages/shared-skills/skills/programming/references/rust/unsafe-discipline.md +34 -6
  161. package/packages/shared-skills/skills/programming/references/rust/zero-cost-safety.md +62 -52
  162. package/packages/shared-skills/skills/programming/references/rust-ub/miri-sanitizers-loom.md +1 -1
  163. package/packages/shared-skills/skills/programming/references/rust-ub/ub-taxonomy.md +6 -3
  164. package/packages/shared-skills/skills/programming/scripts/rust/check-no-excuse-rules.sh +86 -75
  165. package/packages/shared-skills/skills/programming/scripts/rust/check-no-excuse-rules.test.ts +83 -0
  166. package/packages/shared-skills/skills/programming/scripts/rust/new-project.py +31 -28
  167. package/packages/shared-skills/skills/review-work/SKILL.md +1 -1
  168. package/packages/shared-skills/skills/ultimate-browsing/SKILL.md +27 -20
  169. package/packages/shared-skills/skills/ultimate-browsing/engine/AGENTS.md +1 -1
  170. package/packages/shared-skills/skills/ultimate-browsing/references/chrome-stealth.md +32 -100
  171. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/README.md +5 -11
  172. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/playwright.md +20 -37
  173. package/packages/shared-skills/skills/ulw-execute/SKILL.md +4 -4
  174. package/packages/shared-skills/skills/visual-qa/SKILL.md +1 -1
  175. package/packages/shared-skills/skills/visual-qa/references/browser-setup.md +46 -46
  176. package/packages/omo-codex/plugin/skills/browser/scripts/browser-env.mjs +0 -41
  177. package/packages/omo-codex/plugin/skills/debugging/references/tools/playwright-cli.md +0 -112
  178. package/packages/omo-codex/plugin/skills/programming/scripts/rust/check-no-excuse-rules.py +0 -296
  179. package/packages/shared-skills/skills/browser/scripts/browser-env.mjs +0 -41
  180. package/packages/shared-skills/skills/debugging/references/tools/playwright-cli.md +0 -112
  181. package/packages/shared-skills/skills/programming/scripts/rust/check-no-excuse-rules.py +0 -296
@@ -65,7 +65,7 @@ var package_default;
65
65
  var init_package = __esm(() => {
66
66
  package_default = {
67
67
  name: "oh-my-opencode",
68
- version: "5.0.0-beta.86",
68
+ version: "5.0.0-beta.88",
69
69
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
70
70
  main: "./dist/index.js",
71
71
  types: "dist/index.d.ts",
@@ -248,7 +248,7 @@ var init_package = __esm(() => {
248
248
  zod: "^4.6.5"
249
249
  },
250
250
  devDependencies: {
251
- "@code-yeongyu/senpi": "2026.9.23-2",
251
+ "@code-yeongyu/senpi": "2026.9.23-5",
252
252
  "@oh-my-opencode/agents-md-core": "workspace:*",
253
253
  "@oh-my-opencode/ast-grep-mcp": "workspace:*",
254
254
  "@oh-my-opencode/boulder-state": "workspace:*",
@@ -284,22 +284,23 @@ var init_package = __esm(() => {
284
284
  "@xterm/xterm": "^6.0.0",
285
285
  "bun-types": "1.4.2",
286
286
  "node-pty": "^1.1.0",
287
+ omowright: "github:code-yeongyu/omowright#25781c8ac04f9aae358b06551520b792ac45c6ed",
287
288
  "puppeteer-core": "^25.11.0",
288
289
  typescript: "^7.0.2"
289
290
  },
290
291
  optionalDependencies: {
291
- "oh-my-opencode-darwin-arm64": "5.0.0-beta.86",
292
- "oh-my-opencode-darwin-x64": "5.0.0-beta.86",
293
- "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.86",
294
- "oh-my-opencode-linux-arm64": "5.0.0-beta.86",
295
- "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.86",
296
- "oh-my-opencode-linux-x64": "5.0.0-beta.86",
297
- "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.86",
298
- "oh-my-opencode-linux-x64-musl": "5.0.0-beta.86",
299
- "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.86",
300
- "oh-my-opencode-windows-arm64": "5.0.0-beta.86",
301
- "oh-my-opencode-windows-x64": "5.0.0-beta.86",
302
- "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.86"
292
+ "oh-my-opencode-darwin-arm64": "5.0.0-beta.88",
293
+ "oh-my-opencode-darwin-x64": "5.0.0-beta.88",
294
+ "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.88",
295
+ "oh-my-opencode-linux-arm64": "5.0.0-beta.88",
296
+ "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.88",
297
+ "oh-my-opencode-linux-x64": "5.0.0-beta.88",
298
+ "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.88",
299
+ "oh-my-opencode-linux-x64-musl": "5.0.0-beta.88",
300
+ "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.88",
301
+ "oh-my-opencode-windows-arm64": "5.0.0-beta.88",
302
+ "oh-my-opencode-windows-x64": "5.0.0-beta.88",
303
+ "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.88"
303
304
  },
304
305
  overrides: {
305
306
  "@earendil-works/pi-agent-core": "0.84.2",
@@ -7420,7 +7421,7 @@ var init_category_model_requirements = __esm(() => {
7420
7421
  },
7421
7422
  quick: {
7422
7423
  fallbackChain: [
7423
- { providers: ["chatgpt-subscription"], model: "gpt-6-luna-fast", variant: "low" },
7424
+ { providers: ["openai", "chatgpt-subscription"], model: "gpt-6-luna-fast", variant: "low" },
7424
7425
  { providers: ["deepseek"], model: "deepseek-flash", variant: "off" },
7425
7426
  {
7426
7427
  providers: ["qwen-token-plan", "alibaba-token-plan", "bailian-coding-plan"],
@@ -7465,7 +7466,7 @@ var init_category_model_requirements = __esm(() => {
7465
7466
  {
7466
7467
  providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
7467
7468
  model: "claude-opus-5-5",
7468
- variant: "max"
7469
+ variant: "medium"
7469
7470
  },
7470
7471
  { providers: ["zai-coding-plan", "opencode-go"], model: "glm-5.3", variant: "max" },
7471
7472
  {
@@ -7476,6 +7477,7 @@ var init_category_model_requirements = __esm(() => {
7476
7477
  ]
7477
7478
  },
7478
7479
  writing: {
7480
+ requiresAnyModel: true,
7479
7481
  fallbackChain: [
7480
7482
  {
7481
7483
  providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
@@ -9461,7 +9463,7 @@ var init_openai_categories = __esm(() => {
9461
9463
  },
9462
9464
  {
9463
9465
  name: "unspecified-high",
9464
- config: { model: "anthropic/claude-opus-5-5", variant: "max" },
9466
+ config: { model: "anthropic/claude-opus-5-5", variant: "medium" },
9465
9467
  description: "Tasks that don't fit other categories, high effort required",
9466
9468
  callerGuidance: UNSPECIFIED_HIGH_CATEGORY_CALLER_GUIDANCE,
9467
9469
  promptAppend: UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND,
@@ -74561,6 +74563,8 @@ var init_model_profile = __esm(() => {
74561
74563
  init_fallback_models();
74562
74564
  OmoModelProfileInputSchema = object({
74563
74565
  display_name: string2().optional(),
74566
+ family: _enum(["daily", "geeky"]).optional(),
74567
+ tier: _enum(["normal", "heavy"]).optional(),
74564
74568
  models: array(union([string2(), OmoFallbackModelObjectSchema])).optional()
74565
74569
  }).strict();
74566
74570
  OmoModelProfileSchema = preprocess((value) => isRecord8(value) ? normalizeLegacyModelFields(value) : value, OmoModelProfileInputSchema);
@@ -77154,8 +77158,7 @@ var init_openai_only_model_catalog = __esm(() => {
77154
77158
  OPENAI_ONLY_CATEGORY_OVERRIDES = {
77155
77159
  artistry: { model: "openai/gpt-5.6-sol", variant: "xhigh" },
77156
77160
  quick: { model: "openai/gpt-6-luna-fast" },
77157
- "visual-engineering": { model: "openai/gpt-5.6-sol", variant: "high" },
77158
- writing: { model: "openai/gpt-5.6-sol", variant: "medium" }
77161
+ "visual-engineering": { model: "openai/gpt-5.6-sol", variant: "high" }
77159
77162
  };
77160
77163
  });
77161
77164
 
@@ -77346,7 +77349,7 @@ function generateModelConfig(config) {
77346
77349
  return {
77347
77350
  $schema: SCHEMA_URL,
77348
77351
  agents: Object.fromEntries(Object.entries(CLI_AGENT_MODEL_REQUIREMENTS).filter(([role, req]) => !(role === "sisyphus" && req.requiresAnyModel)).map(([role]) => [role, { model: ULTIMATE_FALLBACK }])),
77349
- categories: Object.fromEntries(Object.keys(CLI_CATEGORY_MODEL_REQUIREMENTS).map((cat) => [cat, { model: ULTIMATE_FALLBACK }]))
77352
+ categories: Object.fromEntries(Object.entries(CLI_CATEGORY_MODEL_REQUIREMENTS).filter(([, req]) => !req.requiresAnyModel).map(([cat]) => [cat, { model: ULTIMATE_FALLBACK }]))
77350
77353
  };
77351
77354
  }
77352
77355
  const agents = {};
@@ -77414,6 +77417,9 @@ function generateModelConfig(config) {
77414
77417
  }
77415
77418
  for (const [cat, req] of Object.entries(CLI_CATEGORY_MODEL_REQUIREMENTS)) {
77416
77419
  const fallbackChain = cat === "unspecified-high" && !avail.isMaxPlan ? CLI_CATEGORY_MODEL_REQUIREMENTS["unspecified-low"].fallbackChain : req.fallbackChain;
77420
+ if (req.requiresAnyModel && !isAnyFallbackEntryAvailable(fallbackChain, avail)) {
77421
+ continue;
77422
+ }
77417
77423
  if (req.requiresModel && !isRequiredModelAvailable(req.requiresModel, req.fallbackChain, avail)) {
77418
77424
  continue;
77419
77425
  }
@@ -88832,7 +88838,7 @@ var package_default2;
88832
88838
  var init_package2 = __esm(() => {
88833
88839
  package_default2 = {
88834
88840
  name: "@oh-my-opencode/omo-codex",
88835
- version: "5.0.0-beta.86",
88841
+ version: "5.0.0-beta.88",
88836
88842
  type: "module",
88837
88843
  private: true,
88838
88844
  description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
@@ -105436,28 +105442,41 @@ init_src();
105436
105442
  import { existsSync as existsSync53 } from "node:fs";
105437
105443
  import { createRequire as createRequire3 } from "node:module";
105438
105444
  import { homedir as homedir19 } from "node:os";
105439
- import { dirname as dirname31, join as join82 } from "node:path";
105445
+ import { dirname as dirname31, join as join83 } from "node:path";
105440
105446
 
105447
+ // packages/omo-opencode/src/hooks/comment-checker/downloader.ts
105448
+ import { join as join82 } from "path";
105449
+ import { homedir as homedir18, tmpdir as tmpdir4 } from "os";
105450
+ // packages/comment-checker-core/src/release.ts
105451
+ import { join as join81 } from "node:path";
105452
+ function commentCheckerBinaryName(platform) {
105453
+ return platform === "win32" ? "comment-checker.exe" : "comment-checker";
105454
+ }
105455
+ function commentCheckerCacheDir(input) {
105456
+ if (input.platform === "win32") {
105457
+ const localAppData = input.env.LOCALAPPDATA || input.env.APPDATA;
105458
+ const base = localAppData || join81(input.homedir, "AppData", "Local");
105459
+ return join81(base, input.cacheDirName, "bin");
105460
+ }
105461
+ const base = input.env.XDG_CACHE_HOME || join81(input.homedir, ".cache");
105462
+ return join81(base, input.cacheDirName, "bin");
105463
+ }
105441
105464
  // packages/omo-opencode/src/hooks/comment-checker/downloader.ts
105442
105465
  init_binary_downloader();
105443
105466
  init_logger2();
105444
105467
  init_plugin_identity();
105445
- import { join as join81 } from "path";
105446
- import { homedir as homedir18, tmpdir as tmpdir4 } from "os";
105447
105468
  var DEBUG = process.env.COMMENT_CHECKER_DEBUG === "1";
105448
- var DEBUG_FILE = join81(tmpdir4(), "comment-checker-debug.log");
105469
+ var DEBUG_FILE = join82(tmpdir4(), "comment-checker-debug.log");
105449
105470
  function getCacheDir2() {
105450
- if (process.platform === "win32") {
105451
- const localAppData = process.env.LOCALAPPDATA || process.env.APPDATA;
105452
- const base = localAppData || join81(homedir18(), "AppData", "Local");
105453
- return join81(base, CACHE_DIR_NAME, "bin");
105454
- }
105455
- const xdgCache = process.env.XDG_CACHE_HOME;
105456
- const base = xdgCache || join81(homedir18(), ".cache");
105457
- return join81(base, CACHE_DIR_NAME, "bin");
105471
+ return commentCheckerCacheDir({
105472
+ platform: process.platform,
105473
+ env: process.env,
105474
+ homedir: homedir18(),
105475
+ cacheDirName: CACHE_DIR_NAME
105476
+ });
105458
105477
  }
105459
105478
  function getBinaryName() {
105460
- return process.platform === "win32" ? "comment-checker.exe" : "comment-checker";
105479
+ return commentCheckerBinaryName(process.platform);
105461
105480
  }
105462
105481
  function getCachedBinaryPath2() {
105463
105482
  return getCachedBinaryPath(getCacheDir2(), getBinaryName());
@@ -105504,7 +105523,7 @@ async function getBinaryVersion(binary) {
105504
105523
  }
105505
105524
  }
105506
105525
  async function checkAstGrepCli() {
105507
- const runtimeDir = astGrepRuntimeDir(join82(homedir19(), ".omo"));
105526
+ const runtimeDir = astGrepRuntimeDir(join83(homedir19(), ".omo"));
105508
105527
  const sgPath = findSgBinarySync({ runtimeDir });
105509
105528
  if (sgPath === null) {
105510
105529
  return {
@@ -105534,10 +105553,10 @@ function findCommentCheckerPackageBinary(baseDirOverride, resolvePackageJsonPath
105534
105553
  const platformKey = `${process.platform}-${process.arch === "x64" ? "x64" : process.arch}`;
105535
105554
  try {
105536
105555
  const packageDir = baseDirOverride ?? dirname31(resolvePackageJsonPath());
105537
- const vendorPath = join82(packageDir, "vendor", platformKey, binaryName);
105556
+ const vendorPath = join83(packageDir, "vendor", platformKey, binaryName);
105538
105557
  if (existsSync53(vendorPath))
105539
105558
  return vendorPath;
105540
- const binPath = join82(packageDir, "bin", binaryName);
105559
+ const binPath = join83(packageDir, "bin", binaryName);
105541
105560
  if (existsSync53(binPath))
105542
105561
  return binPath;
105543
105562
  } catch (error) {
@@ -105913,13 +105932,13 @@ function getInstalledLspServers(options = {}) {
105913
105932
  init_shared();
105914
105933
  import { existsSync as existsSync55, readFileSync as readFileSync35 } from "node:fs";
105915
105934
  import { homedir as homedir20 } from "node:os";
105916
- import { join as join83 } from "node:path";
105935
+ import { join as join84 } from "node:path";
105917
105936
  var BUILTIN_MCP_SERVERS = ["websearch", "context7", "grep_app", "lsp"];
105918
105937
  function getMcpConfigPaths() {
105919
105938
  return [
105920
- join83(homedir20(), ".claude", ".mcp.json"),
105921
- join83(process.cwd(), ".mcp.json"),
105922
- join83(process.cwd(), ".claude", ".mcp.json")
105939
+ join84(homedir20(), ".claude", ".mcp.json"),
105940
+ join84(process.cwd(), ".mcp.json"),
105941
+ join84(process.cwd(), ".claude", ".mcp.json")
105923
105942
  ];
105924
105943
  }
105925
105944
  function loadUserMcpConfig() {
@@ -106201,7 +106220,7 @@ init_src();
106201
106220
  import { existsSync as existsSync57 } from "node:fs";
106202
106221
  import { lstat as lstat16, readdir as readdir14, readFile as readFile28 } from "node:fs/promises";
106203
106222
  import { homedir as homedir22 } from "node:os";
106204
- import { basename as basename11, join as join84, resolve as resolve23 } from "node:path";
106223
+ import { basename as basename11, join as join85, resolve as resolve23 } from "node:path";
106205
106224
  // packages/omo-opencode/package.json
106206
106225
  var package_default3 = {
106207
106226
  name: "@oh-my-opencode/omo-opencode",
@@ -106213,6 +106232,10 @@ var package_default3 = {
106213
106232
  "./config-migration": {
106214
106233
  types: "./src/config-migration/index.ts",
106215
106234
  import: "./src/config-migration/index.ts"
106235
+ },
106236
+ "./binary-downloader": {
106237
+ types: "./src/shared/binary-downloader.ts",
106238
+ import: "./src/shared/binary-downloader.ts"
106216
106239
  }
106217
106240
  },
106218
106241
  scripts: {
@@ -106267,13 +106290,13 @@ var CODEX_BIN_NAMES = [
106267
106290
  "omo-git-bash-hook"
106268
106291
  ];
106269
106292
  async function gatherCodexSummary(deps = {}) {
106270
- const codexHome = resolve23(deps.codexHome ?? process.env.CODEX_HOME ?? join84(homedir22(), ".codex"));
106293
+ const codexHome = resolve23(deps.codexHome ?? process.env.CODEX_HOME ?? join85(homedir22(), ".codex"));
106271
106294
  const binDir = resolveCodexInstallerBinDir({ binDir: deps.binDir, codexHome, env: process.env });
106272
106295
  const detection = await (deps.detectCodexInstallation ?? detectCodexInstallation)();
106273
106296
  const pluginRoot = await resolveInstalledPluginRoot(codexHome);
106274
- const manifest = pluginRoot === null ? null : await readJson(join84(pluginRoot, ".codex-plugin", "plugin.json"));
106275
- const installSnapshot = pluginRoot === null ? null : await readJson(join84(pluginRoot, "lazycodex-install.json"));
106276
- const configPath = join84(codexHome, "config.toml");
106297
+ const manifest = pluginRoot === null ? null : await readJson(join85(pluginRoot, ".codex-plugin", "plugin.json"));
106298
+ const installSnapshot = pluginRoot === null ? null : await readJson(join85(pluginRoot, "lazycodex-install.json"));
106299
+ const configPath = join85(codexHome, "config.toml");
106277
106300
  const pluginVersion = stringField(manifest, "version");
106278
106301
  return {
106279
106302
  codexPath: detection.found && "path" in detection ? detection.path : null,
@@ -106330,7 +106353,7 @@ function buildCodexIssues(summary) {
106330
106353
  if (summary.pluginRoot === null) {
106331
106354
  issues.push({
106332
106355
  title: "OMO Codex plugin is not installed",
106333
- description: `Expected cached plugin at ${join84("plugins", "cache", MARKETPLACE_NAME, PLUGIN_NAME2, DEFAULT_PLUGIN_VERSION)} under CODEX_HOME.`,
106356
+ description: `Expected cached plugin at ${join85("plugins", "cache", MARKETPLACE_NAME, PLUGIN_NAME2, DEFAULT_PLUGIN_VERSION)} under CODEX_HOME.`,
106334
106357
  fix: "Run: npx lazycodex-ai install",
106335
106358
  severity: "error",
106336
106359
  affects: ["plugin loading"]
@@ -106395,12 +106418,12 @@ function buildCodexIssues(summary) {
106395
106418
  return issues;
106396
106419
  }
106397
106420
  async function resolveInstalledPluginRoot(codexHome) {
106398
- const pluginRoot = join84(codexHome, "plugins", "cache", MARKETPLACE_NAME, PLUGIN_NAME2);
106421
+ const pluginRoot = join85(codexHome, "plugins", "cache", MARKETPLACE_NAME, PLUGIN_NAME2);
106399
106422
  if (!existsSync57(pluginRoot))
106400
106423
  return null;
106401
106424
  const versions = await readdir14(pluginRoot, { withFileTypes: true });
106402
106425
  const candidates = versions.filter((entry) => entry.isDirectory()).map((entry) => entry.name).sort(compareVersionsDescending);
106403
- return candidates.length === 0 ? null : join84(pluginRoot, candidates[0] ?? DEFAULT_PLUGIN_VERSION);
106426
+ return candidates.length === 0 ? null : join85(pluginRoot, candidates[0] ?? DEFAULT_PLUGIN_VERSION);
106404
106427
  }
106405
106428
  async function readCodexConfigSummary(configPath) {
106406
106429
  if (!existsSync57(configPath)) {
@@ -106428,13 +106451,13 @@ async function readCodexConfigSummary(configPath) {
106428
106451
  async function readLinkedBins(binDir) {
106429
106452
  const linked = [];
106430
106453
  for (const name of CODEX_BIN_NAMES) {
106431
- if (await pathExists2(join84(binDir, process.platform === "win32" ? `${name}.cmd` : name)))
106454
+ if (await pathExists2(join85(binDir, process.platform === "win32" ? `${name}.cmd` : name)))
106432
106455
  linked.push(name);
106433
106456
  }
106434
106457
  return linked;
106435
106458
  }
106436
106459
  async function readLinkedAgents(codexHome) {
106437
- const agentsDir = join84(codexHome, "agents");
106460
+ const agentsDir = join85(codexHome, "agents");
106438
106461
  if (!existsSync57(agentsDir))
106439
106462
  return [];
106440
106463
  const entries = await readdir14(agentsDir, { withFileTypes: true });
@@ -106568,7 +106591,7 @@ function resolveLatestVersion(input) {
106568
106591
  init_src();
106569
106592
  import { readdir as readdir15, readFile as readFile29, stat as stat7 } from "node:fs/promises";
106570
106593
  import { homedir as homedir23 } from "node:os";
106571
- import { dirname as dirname33, isAbsolute as isAbsolute13, join as join85, relative as relative9, resolve as resolve24, sep as sep9 } from "node:path";
106594
+ import { dirname as dirname33, isAbsolute as isAbsolute13, join as join86, relative as relative9, resolve as resolve24, sep as sep9 } from "node:path";
106572
106595
  var CODEX_COMPONENTS_CHECK_ID = "codex-components";
106573
106596
  var CODEX_COMPONENTS_CHECK_NAME = "codex-components";
106574
106597
  var PLUGIN_DATA_DIR_NAME = "omo-sisyphuslabs";
@@ -106578,7 +106601,7 @@ async function checkCodexComponents(deps = {}) {
106578
106601
  const env = deps.env ?? process.env;
106579
106602
  const platform = deps.platform ?? process.platform;
106580
106603
  const arch = deps.arch ?? process.arch;
106581
- const codexHome = resolve24(deps.codexHome ?? env["CODEX_HOME"] ?? join85(homedir23(), ".codex"));
106604
+ const codexHome = resolve24(deps.codexHome ?? env["CODEX_HOME"] ?? join86(homedir23(), ".codex"));
106582
106605
  const summary = await gatherCodexSummary({ ...deps, codexHome });
106583
106606
  if (summary.pluginRoot === null) {
106584
106607
  return {
@@ -106603,7 +106626,7 @@ async function checkCodexComponents(deps = {}) {
106603
106626
  });
106604
106627
  }
106605
106628
  const runtimeSgDir = runtimeSgDirectory(codexHome, platform, arch);
106606
- const runtimeSgPath = join85(runtimeSgDir, sgBinaryName(platform));
106629
+ const runtimeSgPath = join86(runtimeSgDir, sgBinaryName(platform));
106607
106630
  const sg = findSgBinarySync({
106608
106631
  arch,
106609
106632
  env,
@@ -106640,12 +106663,12 @@ async function auditBundleTargets(pluginRoot) {
106640
106663
  let referencedCount = 0;
106641
106664
  for (const manifestPath of await findManifestPaths(pluginRoot, ".mcp.json")) {
106642
106665
  const manifest = await readJson2(manifestPath);
106643
- if (manifest === null || !isRecord17(manifest["mcpServers"]))
106666
+ if (manifest === null || !isRecord18(manifest["mcpServers"]))
106644
106667
  continue;
106645
106668
  const manifestRoot = dirname33(manifestPath);
106646
106669
  const isRootManifest = resolve24(manifestRoot) === resolve24(pluginRoot);
106647
106670
  for (const server of Object.values(manifest["mcpServers"])) {
106648
- if (!isRecord17(server) || !Array.isArray(server["args"]))
106671
+ if (!isRecord18(server) || !Array.isArray(server["args"]))
106649
106672
  continue;
106650
106673
  for (const arg of server["args"]) {
106651
106674
  if (typeof arg !== "string" || !isPluginRuntimePathArg(arg))
@@ -106715,7 +106738,7 @@ async function findManifestPaths(root, manifestName) {
106715
106738
  for (const entry of entries) {
106716
106739
  if (entry.name === "node_modules" || entry.name === ".git")
106717
106740
  continue;
106718
- const entryPath = join85(root, entry.name);
106741
+ const entryPath = join86(root, entry.name);
106719
106742
  if (entry.isDirectory()) {
106720
106743
  paths.push(...await findManifestPaths(entryPath, manifestName));
106721
106744
  continue;
@@ -106731,7 +106754,7 @@ function collectHookCommands(value, commands) {
106731
106754
  collectHookCommands(item, commands);
106732
106755
  return;
106733
106756
  }
106734
- if (!isRecord17(value))
106757
+ if (!isRecord18(value))
106735
106758
  return;
106736
106759
  if (value["type"] === "command") {
106737
106760
  if (typeof value["command"] === "string")
@@ -106759,18 +106782,18 @@ function isPluginRuntimePathArg(arg) {
106759
106782
  return normalized.endsWith(".js") && normalized.includes("/dist/") && (normalized.startsWith("./") || normalized.startsWith("../") || normalized.startsWith("components/") || normalized.startsWith("/") || isAbsolute13(arg));
106760
106783
  }
106761
106784
  function runtimeSgDirectory(codexHome, platform, arch) {
106762
- return join85(codexHome, "runtime", "ast-grep", runtimeSlug(platform, arch));
106785
+ return join86(codexHome, "runtime", "ast-grep", runtimeSlug(platform, arch));
106763
106786
  }
106764
106787
  function describeSgSource(sgPath, env, runtimeSgDir, platform) {
106765
106788
  const override = env[SG_PATH_ENV_KEY]?.trim();
106766
106789
  if (override !== undefined && override.length > 0 && sgPath === override)
106767
106790
  return `env override ${SG_PATH_ENV_KEY}`;
106768
- if (sgPath === join85(runtimeSgDir, sgBinaryName(platform)))
106791
+ if (sgPath === join86(runtimeSgDir, sgBinaryName(platform)))
106769
106792
  return "runtime dir";
106770
106793
  return "PATH";
106771
106794
  }
106772
106795
  async function readBootstrapStateSummary(codexHome) {
106773
- const statePath = join85(codexHome, "plugins", "data", PLUGIN_DATA_DIR_NAME, "bootstrap", "state.json");
106796
+ const statePath = join86(codexHome, "plugins", "data", PLUGIN_DATA_DIR_NAME, "bootstrap", "state.json");
106774
106797
  const raw = await readJson2(statePath);
106775
106798
  if (raw === null)
106776
106799
  return null;
@@ -106786,7 +106809,7 @@ function parseDegradedEntries(value) {
106786
106809
  return [];
106787
106810
  const entries = [];
106788
106811
  for (const item of value) {
106789
- if (!isRecord17(item))
106812
+ if (!isRecord18(item))
106790
106813
  continue;
106791
106814
  if (typeof item["component"] !== "string" || typeof item["reason"] !== "string")
106792
106815
  continue;
@@ -106820,7 +106843,7 @@ function degradedDetailLines(entries) {
106820
106843
  async function readJson2(path) {
106821
106844
  try {
106822
106845
  const parsed = JSON.parse(await readFile29(path, "utf8"));
106823
- return isRecord17(parsed) ? parsed : null;
106846
+ return isRecord18(parsed) ? parsed : null;
106824
106847
  } catch (error) {
106825
106848
  if (error instanceof Error)
106826
106849
  return null;
@@ -106841,7 +106864,7 @@ function normalizeRelative(root, target) {
106841
106864
  function normalizePathSeparators(path) {
106842
106865
  return path.split("\\").join("/");
106843
106866
  }
106844
- function isRecord17(value) {
106867
+ function isRecord18(value) {
106845
106868
  return typeof value === "object" && value !== null && !Array.isArray(value);
106846
106869
  }
106847
106870
 
@@ -106849,16 +106872,16 @@ function isRecord17(value) {
106849
106872
  import { existsSync as existsSync58 } from "node:fs";
106850
106873
  import { readFile as readFile30 } from "node:fs/promises";
106851
106874
  import { homedir as homedir24 } from "node:os";
106852
- import { join as join86, resolve as resolve25 } from "node:path";
106875
+ import { join as join87, resolve as resolve25 } from "node:path";
106853
106876
  var RUNTIME_WRAPPER_MARKER2 = "OMO_GENERATED_RUNTIME_WRAPPER";
106854
106877
  var CHECK_NAME = "codex-runtime-wrapper";
106855
106878
  var REINSTALL_COMMAND = "npx --yes lazycodex-ai@latest install --no-tui";
106856
106879
  async function checkCodexRuntimeWrapper(deps = {}) {
106857
- const codexHome = resolve25(deps.codexHome ?? process.env.CODEX_HOME ?? join86(homedir24(), ".codex"));
106880
+ const codexHome = resolve25(deps.codexHome ?? process.env.CODEX_HOME ?? join87(homedir24(), ".codex"));
106858
106881
  const binDir = resolveCodexInstallerBinDir({ binDir: deps.binDir, codexHome, env: process.env });
106859
106882
  const platform = deps.platform ?? process.platform;
106860
- const wrapperPath = join86(binDir, platform === "win32" ? "omo-agent-toolkit.cmd" : "omo-agent-toolkit");
106861
- const legacyWrapperPath = join86(binDir, platform === "win32" ? "omo.cmd" : "omo");
106883
+ const wrapperPath = join87(binDir, platform === "win32" ? "omo-agent-toolkit.cmd" : "omo-agent-toolkit");
106884
+ const legacyWrapperPath = join87(binDir, platform === "win32" ? "omo.cmd" : "omo");
106862
106885
  const [wrapper, legacyWrapper] = await Promise.all([readRuntimeWrapper(wrapperPath), readRuntimeWrapper(legacyWrapperPath)]);
106863
106886
  const issues = [];
106864
106887
  if (wrapper?.includes(RUNTIME_WRAPPER_MARKER2) === true) {
@@ -107394,12 +107417,12 @@ import {
107394
107417
  unlinkSync as unlinkSync9,
107395
107418
  writeFileSync as writeFileSync12
107396
107419
  } from "node:fs";
107397
- import { basename as basename12, dirname as dirname34, join as join89 } from "node:path";
107420
+ import { basename as basename12, dirname as dirname34, join as join90 } from "node:path";
107398
107421
 
107399
107422
  // packages/mcp-client-core/src/config-dir.ts
107400
107423
  import { existsSync as existsSync59, realpathSync as realpathSync8 } from "node:fs";
107401
107424
  import { homedir as homedir25 } from "node:os";
107402
- import { join as join87, resolve as resolve26 } from "node:path";
107425
+ import { join as join88, resolve as resolve26 } from "node:path";
107403
107426
  function resolveConfigPath2(pathValue) {
107404
107427
  const resolvedPath = resolve26(pathValue);
107405
107428
  if (!existsSync59(resolvedPath))
@@ -107417,13 +107440,13 @@ function getOpenCodeCliConfigDir(env = process.env) {
107417
107440
  if (customConfigDir) {
107418
107441
  return resolveConfigPath2(customConfigDir);
107419
107442
  }
107420
- const xdgConfigDir = env["XDG_CONFIG_HOME"]?.trim() || join87(homedir25(), ".config");
107421
- return resolveConfigPath2(join87(xdgConfigDir, "opencode"));
107443
+ const xdgConfigDir = env["XDG_CONFIG_HOME"]?.trim() || join88(homedir25(), ".config");
107444
+ return resolveConfigPath2(join88(xdgConfigDir, "opencode"));
107422
107445
  }
107423
107446
 
107424
107447
  // packages/mcp-client-core/src/mcp-oauth/storage-index.ts
107425
107448
  import { chmodSync as chmodSync4, existsSync as existsSync60, readFileSync as readFileSync37, renameSync as renameSync6, writeFileSync as writeFileSync11 } from "node:fs";
107426
- import { join as join88 } from "node:path";
107449
+ import { join as join89 } from "node:path";
107427
107450
  var INDEX_FILE_NAME = "index.json";
107428
107451
  function isTokenIndex(value) {
107429
107452
  if (typeof value !== "object" || value === null || Array.isArray(value))
@@ -107431,7 +107454,7 @@ function isTokenIndex(value) {
107431
107454
  return Object.values(value).every((entry) => typeof entry === "string");
107432
107455
  }
107433
107456
  function getIndexPath(storageDir) {
107434
- return join88(storageDir, INDEX_FILE_NAME);
107457
+ return join89(storageDir, INDEX_FILE_NAME);
107435
107458
  }
107436
107459
  function readTokenIndex(storageDir) {
107437
107460
  const indexPath = getIndexPath(storageDir);
@@ -107475,16 +107498,16 @@ function deleteTokenIndexEntry(storageDir, hash) {
107475
107498
  var STORAGE_DIR_NAME = "mcp-oauth";
107476
107499
  var LEGACY_STORAGE_FILE_NAME = "mcp-oauth.json";
107477
107500
  function getMcpOauthStorageDir() {
107478
- return join89(getOpenCodeCliConfigDir(), STORAGE_DIR_NAME);
107501
+ return join90(getOpenCodeCliConfigDir(), STORAGE_DIR_NAME);
107479
107502
  }
107480
107503
  function getMcpOauthServerHash(serverHost, resource) {
107481
107504
  return createHash7("sha256").update(buildKey(serverHost, resource)).digest("hex").slice(0, 32);
107482
107505
  }
107483
107506
  function getMcpOauthStoragePath(serverHost, resource) {
107484
- return join89(getMcpOauthStorageDir(), `${getMcpOauthServerHash(serverHost, resource)}.json`);
107507
+ return join90(getMcpOauthStorageDir(), `${getMcpOauthServerHash(serverHost, resource)}.json`);
107485
107508
  }
107486
107509
  function getLegacyStoragePath() {
107487
- return join89(getOpenCodeCliConfigDir(), LEGACY_STORAGE_FILE_NAME);
107510
+ return join90(getOpenCodeCliConfigDir(), LEGACY_STORAGE_FILE_NAME);
107488
107511
  }
107489
107512
  function normalizeHost2(serverHost) {
107490
107513
  let host = serverHost.trim();
@@ -107663,7 +107686,7 @@ function listTokensByHost(serverHost) {
107663
107686
  for (const [hash, indexedKey] of Object.entries(index)) {
107664
107687
  if (!indexedKey.startsWith(prefix))
107665
107688
  continue;
107666
- const indexedToken = readTokenFile(join89(getMcpOauthStorageDir(), `${hash}.json`));
107689
+ const indexedToken = readTokenFile(join90(getMcpOauthStorageDir(), `${hash}.json`));
107667
107690
  if (indexedToken)
107668
107691
  result[indexedKey] = indexedToken;
107669
107692
  }
@@ -107678,7 +107701,7 @@ function listAllTokens() {
107678
107701
  for (const entry of readdirSync12(dir, { withFileTypes: true })) {
107679
107702
  if (!entry.isFile() || !entry.name.endsWith(".json") || entry.name === "index.json")
107680
107703
  continue;
107681
- const token = readTokenFile(join89(dir, entry.name));
107704
+ const token = readTokenFile(join90(dir, entry.name));
107682
107705
  const hash = basename12(entry.name, ".json");
107683
107706
  if (token)
107684
107707
  result[index[hash] ?? hash] = token;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lazycodex-ai",
3
- "version": "5.0.0-beta.86",
3
+ "version": "5.0.0-beta.88",
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",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omo",
3
- "version": "5.0.0-beta.86",
3
+ "version": "5.0.0-beta.88",
4
4
  "description": "One Codex plugin namespace for Yeongyu's local Codex components.",
5
5
  "author": {
6
6
  "name": "Yeongyu Kim",
@@ -7292,6 +7292,8 @@ function isRecord6(value) {
7292
7292
  }
7293
7293
  var OmoModelProfileInputSchema = object({
7294
7294
  display_name: string2().optional(),
7295
+ family: _enum(["daily", "geeky"]).optional(),
7296
+ tier: _enum(["normal", "heavy"]).optional(),
7295
7297
  models: array(union([string2(), OmoFallbackModelObjectSchema])).optional()
7296
7298
  }).strict();
7297
7299
  var OmoModelProfileSchema = preprocess((value) => isRecord6(value) ? normalizeLegacyModelFields(value) : value, OmoModelProfileInputSchema);
@@ -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.86) Checking Bootstrap Provisioning"
11
+ "statusMessage": "(OmO 5.0.0-beta.88) 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.86",
3
+ "version": "5.0.0-beta.88",
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.86) Checking Comments"
11
+ "statusMessage": "(OmO 5.0.0-beta.88) 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.86",
3
+ "version": "5.0.0-beta.88",
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.86) Recommending Git Bash MCP"
11
+ "statusMessage": "(OmO 5.0.0-beta.88) 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.86) Resetting Git Bash MCP Reminder"
23
+ "statusMessage": "(OmO 5.0.0-beta.88) 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.86",
3
+ "version": "5.0.0-beta.88",
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.86) Verifying LazyCodex Executor Evidence"
11
+ "statusMessage": "(OmO 5.0.0-beta.88) 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.86",
3
+ "version": "5.0.0-beta.88",
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.86",
4
- "inputDigest": "sha256:5529e0ca0e2604cde58c8d77af425b3d0a06feed87148856d577aa0bbc0c9a18",
3
+ "version": "5.0.0-beta.88",
4
+ "inputDigest": "sha256:ebe9028d50ae97761a5b14dcb9e372ffead6731df3fdbed1beb944a71f9f0bb2",
5
5
  "outputs": [
6
6
  {
7
7
  "path": "cli.d.ts",