oh-my-opencode 5.0.0-beta.49 → 5.0.0-beta.50

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 (115) hide show
  1. package/dist/cli/index.js +4682 -14969
  2. package/dist/cli-node/index.js +4727 -15014
  3. package/dist/index.js +5880 -6423
  4. package/dist/tui.js +1244 -10984
  5. package/package.json +15 -15
  6. package/packages/git-bash-mcp/package.json +1 -1
  7. package/packages/lsp-daemon/dist/cli.js +181 -181
  8. package/packages/lsp-daemon/dist/client.js +232 -232
  9. package/packages/lsp-daemon/dist/index.js +132 -132
  10. package/packages/lsp-tools-mcp/dist/cli.js +103 -101
  11. package/packages/lsp-tools-mcp/dist/lsp/manager.js +14 -14
  12. package/packages/lsp-tools-mcp/dist/mcp.js +129 -129
  13. package/packages/lsp-tools-mcp/dist/tools.js +47 -47
  14. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  15. package/packages/omo-codex/plugin/README.md +4 -0
  16. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +151 -102
  17. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  18. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  19. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  20. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  21. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  22. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  23. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/AGENTS.md +2 -2
  24. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/directive.md +2 -0
  25. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/dist/cli.js +35 -24
  26. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/dist/codex-hook.js +31 -21
  27. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/dist/types.d.ts +3 -0
  28. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  29. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  30. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/src/codex-hook.ts +31 -23
  31. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/src/types.ts +3 -0
  32. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/test/cli.test.ts +1 -1
  33. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/test/codex-hook.test.ts +133 -7
  34. package/packages/omo-codex/plugin/components/lcx/skills/lcx-doctor/SKILL.md +3 -1
  35. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +3 -3
  36. package/packages/omo-codex/plugin/components/lsp/dist/cli.js +298 -298
  37. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  38. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  39. package/packages/omo-codex/plugin/components/rules/README.md +2 -0
  40. package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus/gpt-6.md +123 -0
  41. package/packages/omo-codex/plugin/components/rules/dist/cli.js +38 -30
  42. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  43. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  44. package/packages/omo-codex/plugin/components/rules/src/post-compact-budget.ts +6 -0
  45. package/packages/omo-codex/plugin/components/rules/test/hephaestus-model-variant.test.ts +38 -2
  46. package/packages/omo-codex/plugin/components/rules/test/post-compact-budget.test.ts +24 -0
  47. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  48. package/packages/omo-codex/plugin/components/teammode/package.json +2 -2
  49. package/packages/omo-codex/plugin/components/telemetry/dist/cli.js +66 -357
  50. package/packages/omo-codex/plugin/components/telemetry/dist/posthog.js +66 -358
  51. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  52. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  53. package/packages/omo-codex/plugin/components/ultrawork/README.md +2 -0
  54. package/packages/omo-codex/plugin/components/ultrawork/agents/explorer.toml +1 -1
  55. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-clone-fidelity-reviewer.toml +1 -1
  56. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-code-reviewer.toml +1 -1
  57. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-gate-reviewer.toml +1 -1
  58. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-qa-executor.toml +1 -1
  59. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-worker-high.toml +1 -1
  60. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-worker-low.toml +1 -1
  61. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-worker-medium.toml +1 -1
  62. package/packages/omo-codex/plugin/components/ultrawork/agents/librarian.toml +1 -1
  63. package/packages/omo-codex/plugin/components/ultrawork/agents/metis.toml +1 -1
  64. package/packages/omo-codex/plugin/components/ultrawork/agents/momus.toml +1 -1
  65. package/packages/omo-codex/plugin/components/ultrawork/agents/plan.toml +1 -1
  66. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  67. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  68. package/packages/omo-codex/plugin/components/ulw-execute-continuation/dist/cli.js +3 -3
  69. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
  70. package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
  71. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +63 -63
  72. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
  73. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  74. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  75. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  76. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  77. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  78. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  79. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  80. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  81. package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
  82. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  83. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  84. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  85. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  86. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  87. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  88. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  89. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
  90. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  91. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  92. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  93. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  94. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  95. package/packages/omo-codex/plugin/model-catalog.json +16 -7
  96. package/packages/omo-codex/plugin/package-lock.json +16 -16
  97. package/packages/omo-codex/plugin/package.json +1 -1
  98. package/packages/omo-codex/plugin/scripts/migrate-codex-config/catalog.mjs +16 -7
  99. package/packages/omo-codex/plugin/scripts/migrate-codex-config/multi-agent-v2-guard.mjs +8 -4
  100. package/packages/omo-codex/plugin/scripts/migrate-codex-config/subagent-limit-guard.mjs +18 -90
  101. package/packages/omo-codex/plugin/scripts/migrate-codex-config/toml-section-editor.mjs +1 -1
  102. package/packages/omo-codex/plugin/shared/package.json +1 -1
  103. package/packages/omo-codex/plugin/skills/lcx-doctor/SKILL.md +3 -1
  104. package/packages/omo-codex/plugin/test/aggregate-agents.test.mjs +12 -12
  105. package/packages/omo-codex/plugin/test/aggregate-model-catalog.test.mjs +14 -4
  106. package/packages/omo-codex/plugin/test/auto-update.test.mjs +4 -4
  107. package/packages/omo-codex/plugin/test/component-hook-contract-cases.mjs +25 -1
  108. package/packages/omo-codex/plugin/test/migrate-codex-config.test.mjs +35 -35
  109. package/packages/omo-codex/plugin/test/multi-agent-v2-regression.test.mjs +1 -1
  110. package/packages/omo-codex/plugin/test/subagent-limit-migration.test.mjs +107 -15
  111. package/packages/omo-codex/scripts/check-model-catalog-parity.mjs +42 -0
  112. package/packages/omo-codex/scripts/install-config-reasoning.test.mjs +5 -5
  113. package/packages/omo-codex/scripts/install-config.test.mjs +15 -17
  114. package/packages/omo-codex/scripts/install-dist/install-local.mjs +318 -569
  115. package/packages/omo-codex/scripts/install-generated-bundle.test.mjs +3 -4
@@ -8,7 +8,7 @@ import test from "node:test";
8
8
 
9
9
  import { updateCodexConfig } from "./install-dist/install-local.mjs";
10
10
 
11
- test("#given empty Codex config #when script installer updates config #then sets subagent thread limits without forcing MultiAgentV2", async () => {
11
+ test("#given empty Codex config #when script installer updates config #then leaves thread limits unset without forcing MultiAgentV2", async () => {
12
12
  // given
13
13
  const root = await mkdtemp(join(tmpdir(), "omo-codex-script-config-multi-agent-"));
14
14
  const configPath = join(root, "config.toml");
@@ -28,10 +28,10 @@ test("#given empty Codex config #when script installer updates config #then sets
28
28
  const config = await readFile(configPath, "utf8");
29
29
  assert.doesNotMatch(config, /^\s*multi_agent_mode\s*=/m);
30
30
  assert.doesNotMatch(config, /^\s*max_threads\s*=/m);
31
- assert.match(config, /\[features\.multi_agent_v2\]/);
31
+ assert.doesNotMatch(config, /\[features\.multi_agent_v2\]/);
32
32
  const v2Section = multiAgentV2Section(config);
33
33
  assert.doesNotMatch(v2Section, /^enabled\s*=/m);
34
- assert.match(v2Section, /max_concurrent_threads_per_session = 16/);
34
+ assert.doesNotMatch(v2Section, /max_concurrent_threads_per_session\s*=/);
35
35
  });
36
36
 
37
37
  test("#given queue multi-agent mode #when script installer updates config #then removes unsupported root key", async () => {
@@ -337,7 +337,7 @@ test("#given empty Codex config #when script installer updates config #then sets
337
337
  const config = await readFile(configPath, "utf8");
338
338
  const v2Section = config.slice(config.indexOf("[features.multi_agent_v2]"));
339
339
  assert.doesNotMatch(config, /^\s*max_threads\s*=/m);
340
- assert.match(v2Section, /max_concurrent_threads_per_session = 16/);
340
+ assert.doesNotMatch(v2Section, /max_concurrent_threads_per_session\s*=/);
341
341
  assert.doesNotMatch(v2Section, /hide_spawn_agent_metadata/);
342
342
  });
343
343
 
@@ -404,7 +404,7 @@ test("#given legacy boolean MultiAgentV2 flag and table #when script installer u
404
404
  const v2Section = multiAgentV2Section(config);
405
405
  assert.doesNotMatch(v2Section, /^enabled\s*=/m);
406
406
  assert.match(v2Section, /usage_hint_enabled = false/);
407
- assert.match(v2Section, /max_concurrent_threads_per_session = 16/);
407
+ assert.doesNotMatch(v2Section, /max_concurrent_threads_per_session\s*=/);
408
408
  });
409
409
 
410
410
  test("#given legacy boolean MultiAgentV2 flag false #when script installer updates config #then normalizes to a disabled table config", async () => {
@@ -440,12 +440,12 @@ test("#given legacy boolean MultiAgentV2 flag false #when script installer updat
440
440
  assert.match(config, /\[features\.multi_agent_v2\]/);
441
441
  const disabledV2Section = multiAgentV2Section(config);
442
442
  assert.match(disabledV2Section, /^enabled = false$/m);
443
- assert.match(disabledV2Section, /^max_concurrent_threads_per_session = 16$/m);
443
+ assert.doesNotMatch(disabledV2Section, /^max_concurrent_threads_per_session\s*=/m);
444
444
  });
445
445
 
446
- test("#given legacy agents max_threads #when script installer updates config #then raises the root subagent thread cap", async () => {
446
+ test("#given legacy agents max_threads #when script installer updates config #then preserves the user root subagent thread cap", async () => {
447
447
  // given
448
- // A pinned v1 model keeps the legacy low-cap raise path exercised; the
448
+ // A pinned v1 model keeps user V1 cap preservation exercised; the
449
449
  // stamped v2-preferred default would remove agents.max_threads instead.
450
450
  const root = await mkdtemp(join(tmpdir(), "omo-codex-script-config-multi-agent-legacy-threads-"));
451
451
  const configPath = join(root, "config.toml");
@@ -473,20 +473,19 @@ test("#given legacy agents max_threads #when script installer updates config #th
473
473
 
474
474
  // then
475
475
  const config = await readFile(configPath, "utf8");
476
- assert.match(config, /\[features\.multi_agent_v2\]/);
476
+ assert.doesNotMatch(config, /\[features\.multi_agent_v2\]/);
477
477
  const v2Section = multiAgentV2Section(config);
478
478
  assert.doesNotMatch(v2Section, /^enabled\s*=/m);
479
- assert.match(v2Section, /max_concurrent_threads_per_session = 16/);
479
+ assert.doesNotMatch(v2Section, /max_concurrent_threads_per_session\s*=/);
480
480
  assert.match(config, /\[agents\]/);
481
- assert.match(config, /max_threads = 1000/);
482
- assert.doesNotMatch(config, /max_threads = 16/);
481
+ assert.match(config, /^\s*max_threads\s*=\s*16$/m);
483
482
  assert.match(config, /max_depth = 4/);
484
483
  assert.match(config, /job_max_runtime_seconds = 3600/);
485
484
  });
486
485
 
487
- test("#given managed agent role sections #when script installer updates config #then preserves role config while raising only root agents max_threads", async () => {
486
+ test("#given managed agent role sections #when script installer updates config #then preserves role config without raising root agents max_threads", async () => {
488
487
  // given
489
- // A pinned v1 model keeps the legacy low-cap raise path exercised; the
488
+ // A pinned v1 model keeps user V1 cap preservation exercised; the
490
489
  // stamped v2-preferred default would remove agents.max_threads instead.
491
490
  const root = await mkdtemp(join(tmpdir(), "omo-codex-script-config-multi-agent-role-section-"));
492
491
  const configPath = join(root, "config.toml");
@@ -517,8 +516,7 @@ test("#given managed agent role sections #when script installer updates config #
517
516
 
518
517
  // then
519
518
  const config = await readFile(configPath, "utf8");
520
- assert.match(config, /max_threads = 1000/);
521
- assert.doesNotMatch(config, /max_threads = 16/);
519
+ assert.match(config, /^\s*max_threads\s*=\s*16$/m);
522
520
  assert.match(config, /\[agents\.explorer\]/);
523
521
  assert.match(config, /description = "read-only explorer"/);
524
522
  assert.match(config, /config_file = "\.\/agents\/explorer\.toml"/);
@@ -572,7 +570,7 @@ test("#given existing trust and lsp blocks #when updating config #then existing
572
570
  function multiAgentV2Section(config) {
573
571
  const header = "[features.multi_agent_v2]";
574
572
  const start = config.indexOf(header);
575
- assert.notEqual(start, -1);
573
+ if (start === -1) return "";
576
574
  const rest = config.slice(start);
577
575
  const nextHeader = rest.slice(1).search(/^\[/m);
578
576
  return nextHeader === -1 ? rest : rest.slice(0, nextHeader + 1);