oh-my-opencode 4.18.1 → 4.19.0

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 (217) hide show
  1. package/.agents/skills/codex-qa/scripts/lsp-e2e.sh +39 -16
  2. package/.agents/skills/opencode-qa/scripts/lsp-e2e.sh +111 -28
  3. package/README.ja.md +2 -2
  4. package/README.ko.md +2 -2
  5. package/README.md +4 -4
  6. package/README.ru.md +2 -2
  7. package/README.zh-cn.md +2 -2
  8. package/bin/AGENTS.md +33 -0
  9. package/dist/agents/atlas/agent.d.ts +6 -5
  10. package/dist/agents/sisyphus/index.d.ts +5 -0
  11. package/dist/agents/sisyphus/kimi-k3.d.ts +19 -0
  12. package/dist/agents/sisyphus-agent-factory.d.ts +1 -1
  13. package/dist/agents/sisyphus-junior/agent.d.ts +8 -4
  14. package/dist/agents/sisyphus-junior/index.d.ts +2 -0
  15. package/dist/agents/sisyphus-junior/kimi-k3.d.ts +12 -0
  16. package/dist/agents/types.d.ts +2 -2
  17. package/dist/cli/index.js +690 -139
  18. package/dist/cli-node/index.js +690 -139
  19. package/dist/config/index.d.ts +1 -1
  20. package/dist/config/schema/browser-automation.d.ts +1 -0
  21. package/dist/config/schema/commands.d.ts +1 -3
  22. package/dist/config/schema/default-mode.d.ts +1 -1
  23. package/dist/config/schema/goal.d.ts +7 -0
  24. package/dist/config/schema/hooks.d.ts +1 -1
  25. package/dist/config/schema/oh-my-opencode-config.d.ts +6 -10
  26. package/dist/config/schema/ralph-loop.d.ts +1 -1
  27. package/dist/config/schema.d.ts +1 -1
  28. package/dist/create-hooks.d.ts +1 -1
  29. package/dist/features/builtin-commands/templates/goal.d.ts +1 -0
  30. package/dist/features/builtin-commands/templates/stop-continuation.d.ts +1 -1
  31. package/dist/features/builtin-commands/types.d.ts +1 -1
  32. package/dist/hooks/anthropic-context-window-limit-recovery/empty-content-recovery-sdk.d.ts +6 -0
  33. package/dist/hooks/auto-slash-command/executor.d.ts +1 -0
  34. package/dist/hooks/category-skill-reminder/hook.d.ts +9 -1
  35. package/dist/hooks/comment-checker/hook.d.ts +8 -1
  36. package/dist/hooks/goal/command-arguments.d.ts +13 -0
  37. package/dist/hooks/goal/controller.d.ts +26 -0
  38. package/dist/hooks/goal/index.d.ts +23 -0
  39. package/dist/hooks/goal/prompt.d.ts +3 -0
  40. package/dist/hooks/goal/store.d.ts +8 -0
  41. package/dist/hooks/goal/tools.d.ts +10 -0
  42. package/dist/hooks/goal/types.d.ts +93 -0
  43. package/dist/hooks/goal/validation.d.ts +4 -0
  44. package/dist/hooks/index.d.ts +1 -0
  45. package/dist/hooks/keyword-detector/hook.d.ts +1 -2
  46. package/dist/hooks/ralph-loop/types.d.ts +1 -1
  47. package/dist/hooks/todo-continuation-enforcer/types.d.ts +3 -0
  48. package/dist/index.js +3706 -4329
  49. package/dist/oh-my-opencode.schema.json +23 -19
  50. package/dist/plugin/chat-message/loop-commands.d.ts +1 -1
  51. package/dist/plugin/chat-message/types.d.ts +23 -10
  52. package/dist/plugin/hooks/create-core-hooks.d.ts +1 -1
  53. package/dist/plugin/hooks/create-session-hooks.d.ts +3 -2
  54. package/dist/plugin/hooks/create-transform-hooks.d.ts +0 -2
  55. package/dist/plugin/messages-transform.d.ts +1 -0
  56. package/dist/plugin/stop-continuation.d.ts +2 -2
  57. package/dist/plugin-handlers/prometheus-agent-config-builder.d.ts +2 -0
  58. package/dist/shared/system-directive.d.ts +0 -1
  59. package/dist/skills/ulw-plan/SKILL.md +11 -7
  60. package/dist/skills/ulw-plan/references/full-workflow.md +117 -6
  61. package/dist/skills/ulw-plan/scripts/scaffold-plan.mjs +46 -10
  62. package/dist/skills/ulw-research/SKILL.md +3 -3
  63. package/dist/tools/delegate-task/types.d.ts +0 -1
  64. package/dist/tui.js +115 -28
  65. package/package.json +14 -14
  66. package/packages/git-bash-mcp/dist/cli.js +81 -19
  67. package/packages/lsp-core/src/lsp/client-diagnostics-freshness.integration.test.ts +4 -4
  68. package/packages/lsp-core/src/lsp/directory-diagnostics.test.ts +118 -1
  69. package/packages/lsp-core/src/lsp/directory-diagnostics.ts +1 -1
  70. package/packages/lsp-daemon/dist/cli.js +262 -63
  71. package/packages/lsp-daemon/dist/client.js +194 -50
  72. package/packages/lsp-daemon/dist/daemon-client.d.ts +2 -2
  73. package/packages/lsp-daemon/dist/daemon-client.js +26 -2
  74. package/packages/lsp-daemon/dist/ensure-daemon.d.ts +5 -4
  75. package/packages/lsp-daemon/dist/ensure-daemon.js +79 -18
  76. package/packages/lsp-daemon/dist/index.js +262 -63
  77. package/packages/lsp-daemon/dist/proxy.d.ts +2 -0
  78. package/packages/lsp-daemon/dist/proxy.js +79 -23
  79. package/packages/lsp-tools-mcp/dist/cli.js +82 -20
  80. package/packages/lsp-tools-mcp/dist/mcp.js +82 -20
  81. package/packages/lsp-tools-mcp/dist/tools.js +1 -1
  82. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  83. package/packages/omo-codex/plugin/.mcp.json +2 -1
  84. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +352 -17
  85. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  86. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  87. package/packages/omo-codex/plugin/components/codegraph/AGENTS.md +7 -6
  88. package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +195 -56
  89. package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +100 -28
  90. package/packages/omo-codex/plugin/components/codegraph/package.json +1 -1
  91. package/packages/omo-codex/plugin/components/codegraph/src/mcp-bridge.ts +21 -9
  92. package/packages/omo-codex/plugin/components/codegraph/test/hook-exclusion.test.ts +1 -1
  93. package/packages/omo-codex/plugin/components/codegraph/test/mcp-bridge-fixtures.ts +35 -0
  94. package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-bridge-lifecycle.test.ts +69 -0
  95. package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-bridge.test.ts +57 -1
  96. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  97. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  98. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  99. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  100. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  101. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  102. package/packages/omo-codex/plugin/components/lsp/.mcp.json +2 -1
  103. package/packages/omo-codex/plugin/components/lsp/AGENTS.md +1 -0
  104. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +3 -3
  105. package/packages/omo-codex/plugin/components/lsp/dist/cli.js +113 -31
  106. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  107. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  108. package/packages/omo-codex/plugin/components/lsp/test/package-smoke.test.ts +1 -0
  109. package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus/gpt-5.5.md +1 -1
  110. package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus/gpt-5.6.md +5 -3
  111. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  112. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  113. package/packages/omo-codex/plugin/components/start-work-continuation/AGENTS.md +8 -0
  114. package/packages/omo-codex/plugin/components/start-work-continuation/README.md +2 -2
  115. package/packages/omo-codex/plugin/components/start-work-continuation/directive.md +3 -3
  116. package/packages/omo-codex/plugin/components/start-work-continuation/dist/cli.js +148 -61
  117. package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +2 -2
  118. package/packages/omo-codex/plugin/components/start-work-continuation/package.json +1 -1
  119. package/packages/omo-codex/plugin/components/start-work-continuation/src/boulder-reader.ts +4 -72
  120. package/packages/omo-codex/plugin/components/start-work-continuation/src/codex-hook.ts +1 -1
  121. package/packages/omo-codex/plugin/components/start-work-continuation/src/plan-checklist.ts +171 -0
  122. package/packages/omo-codex/plugin/components/start-work-continuation/test/boulder-reader.test.ts +213 -24
  123. package/packages/omo-codex/plugin/components/start-work-continuation/test/cli.test.ts +4 -3
  124. package/packages/omo-codex/plugin/components/start-work-continuation/test/codex-hook.test.ts +25 -4
  125. package/packages/omo-codex/plugin/components/start-work-continuation/test/fixtures/plan-scaffold.md +15 -0
  126. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  127. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  128. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  129. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  130. package/packages/omo-codex/plugin/components/ultrawork/AGENTS.md +10 -10
  131. package/packages/omo-codex/plugin/components/ultrawork/agents/momus.toml +3 -3
  132. package/packages/omo-codex/plugin/components/ultrawork/directive.md +50 -33
  133. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  134. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  135. package/packages/omo-codex/plugin/components/ultrawork/skills/ultrawork/SKILL.md +50 -33
  136. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +11 -7
  137. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +117 -6
  138. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/scripts/scaffold-plan.mjs +46 -10
  139. package/packages/omo-codex/plugin/components/ulw-loop/directive.md +50 -33
  140. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +3 -3
  141. package/packages/omo-codex/plugin/components/ulw-loop/dist/stop-resume-hook.js +5 -6
  142. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
  143. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  144. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +1 -1
  145. package/packages/omo-codex/plugin/components/ulw-loop/src/stop-resume-hook.ts +5 -6
  146. package/packages/omo-codex/plugin/components/ulw-loop/test/stop-resume-hook.test.ts +2 -2
  147. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  148. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  149. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  150. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +1 -1
  151. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  152. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  153. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  154. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  155. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  156. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  157. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  158. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  159. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  160. package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +1 -1
  161. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  162. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  163. package/packages/omo-codex/plugin/hooks/stop-checking-start-work-continuation.json +1 -1
  164. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  165. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-start-work-continuation.json +1 -1
  166. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  167. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  168. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  169. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  170. package/packages/omo-codex/plugin/package-lock.json +13 -13
  171. package/packages/omo-codex/plugin/package.json +1 -1
  172. package/packages/omo-codex/plugin/scripts/migrate-codex-config/multi-agent-v2-guard.mjs +32 -28
  173. package/packages/omo-codex/plugin/scripts/migrate-codex-config/subagent-limit-guard.mjs +17 -45
  174. package/packages/omo-codex/plugin/scripts/migrate-codex-config/toml-section-editor.mjs +455 -0
  175. package/packages/omo-codex/plugin/scripts/sync-skills.mjs +13 -20
  176. package/packages/omo-codex/plugin/skills/review-work/SKILL.md +7 -0
  177. package/packages/omo-codex/plugin/skills/start-work/SKILL.md +3 -2
  178. package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +50 -33
  179. package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +1 -1
  180. package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +11 -7
  181. package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +117 -6
  182. package/packages/omo-codex/plugin/skills/ulw-plan/scripts/scaffold-plan.mjs +46 -10
  183. package/packages/omo-codex/plugin/test/aggregate-agents.test.mjs +2 -2
  184. package/packages/omo-codex/plugin/test/lcx-bug-skills.test.mjs +2 -2
  185. package/packages/omo-codex/plugin/test/mcp-research-servers.test.mjs +1 -0
  186. package/packages/omo-codex/plugin/test/migrate-codex-config.test.mjs +6 -6
  187. package/packages/omo-codex/plugin/test/multi-agent-v2-regression.test.mjs +3 -3
  188. package/packages/omo-codex/plugin/test/scaffold-plan.test.mjs +62 -0
  189. package/packages/omo-codex/plugin/test/subagent-limit-migration.test.mjs +271 -14
  190. package/packages/omo-codex/plugin/test/sync-skills-orchestration.test.mjs +7 -0
  191. package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +38 -22
  192. package/packages/omo-codex/plugin/test/sync-skills.test.mjs +0 -5
  193. package/packages/omo-codex/plugin/test/ulw-plan-review-state-contract.test.mjs +293 -0
  194. package/packages/omo-codex/scripts/install-config.test.mjs +10 -10
  195. package/packages/omo-codex/scripts/install-dist/install-local.mjs +353 -18
  196. package/packages/omo-codex/scripts/install-generated-bundle.test.mjs +39 -2
  197. package/packages/shared-skills/skills/ulw-plan/SKILL.md +11 -7
  198. package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +117 -6
  199. package/packages/shared-skills/skills/ulw-plan/scripts/scaffold-plan.mjs +46 -10
  200. package/packages/shared-skills/skills/ulw-research/SKILL.md +3 -3
  201. package/dist/features/builtin-commands/templates/ralph-loop.d.ts +0 -3
  202. package/dist/skills/ultraresearch/SKILL.md +0 -10
  203. package/packages/shared-skills/skills/lcx-contribute-bug-fix/SKILL.md +0 -273
  204. package/packages/shared-skills/skills/lcx-contribute-bug-fix/agents/openai.yaml +0 -12
  205. package/packages/shared-skills/skills/lcx-contribute-bug-fix/scripts/create-pr-body.mjs +0 -107
  206. package/packages/shared-skills/skills/lcx-doctor/SKILL.md +0 -128
  207. package/packages/shared-skills/skills/lcx-doctor/agents/openai.yaml +0 -11
  208. package/packages/shared-skills/skills/lcx-report-bug/SKILL.md +0 -268
  209. package/packages/shared-skills/skills/lcx-report-bug/agents/openai.yaml +0 -11
  210. package/packages/shared-skills/skills/ultraresearch/SKILL.md +0 -10
  211. /package/{dist → packages/omo-codex/plugin/components/lcx}/skills/lcx-contribute-bug-fix/SKILL.md +0 -0
  212. /package/{dist → packages/omo-codex/plugin/components/lcx}/skills/lcx-contribute-bug-fix/agents/openai.yaml +0 -0
  213. /package/{dist → packages/omo-codex/plugin/components/lcx}/skills/lcx-contribute-bug-fix/scripts/create-pr-body.mjs +0 -0
  214. /package/{dist → packages/omo-codex/plugin/components/lcx}/skills/lcx-doctor/SKILL.md +0 -0
  215. /package/{dist → packages/omo-codex/plugin/components/lcx}/skills/lcx-doctor/agents/openai.yaml +0 -0
  216. /package/{dist → packages/omo-codex/plugin/components/lcx}/skills/lcx-report-bug/SKILL.md +0 -0
  217. /package/{dist → packages/omo-codex/plugin/components/lcx}/skills/lcx-report-bug/agents/openai.yaml +0 -0
@@ -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 4.18.1) Checking Ultrawork Trigger",
10
+ "statusMessage": "(OmO 4.19.0) 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 4.18.1) Checking Ulw-Loop Steering",
10
+ "statusMessage": "(OmO 4.19.0) 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 4.18.1) Loading Project Rules",
10
+ "statusMessage": "(OmO 4.19.0) 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
  ]
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@sisyphuslabs/omo-codex-plugin",
3
- "version": "4.18.1",
3
+ "version": "4.19.0",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@sisyphuslabs/omo-codex-plugin",
9
- "version": "4.18.1",
9
+ "version": "4.19.0",
10
10
  "workspaces": [
11
11
  "components/codegraph",
12
12
  "components/comment-checker",
@@ -100,7 +100,7 @@
100
100
  },
101
101
  "components/codegraph": {
102
102
  "name": "@sisyphuslabs/codex-codegraph",
103
- "version": "4.18.1",
103
+ "version": "4.19.0",
104
104
  "bin": {
105
105
  "omo-codegraph": "dist/cli.js"
106
106
  },
@@ -119,7 +119,7 @@
119
119
  },
120
120
  "components/comment-checker": {
121
121
  "name": "@code-yeongyu/codex-comment-checker",
122
- "version": "4.18.1",
122
+ "version": "4.19.0",
123
123
  "license": "MIT",
124
124
  "bin": {
125
125
  "omo-comment-checker": "dist/cli.js"
@@ -140,7 +140,7 @@
140
140
  },
141
141
  "components/git-bash": {
142
142
  "name": "@sisyphuslabs/codex-git-bash-hook",
143
- "version": "4.18.1",
143
+ "version": "4.19.0",
144
144
  "bin": {
145
145
  "omo-git-bash-hook": "dist/cli.js"
146
146
  },
@@ -155,7 +155,7 @@
155
155
  },
156
156
  "components/lazycodex-executor-verify": {
157
157
  "name": "@code-yeongyu/codex-lazycodex-executor-verify",
158
- "version": "4.18.1",
158
+ "version": "4.19.0",
159
159
  "license": "MIT",
160
160
  "bin": {
161
161
  "lazycodex-executor-verify": "dist/cli.js"
@@ -172,7 +172,7 @@
172
172
  },
173
173
  "components/lsp": {
174
174
  "name": "@code-yeongyu/codex-lsp",
175
- "version": "4.18.1",
175
+ "version": "4.19.0",
176
176
  "license": "MIT",
177
177
  "dependencies": {
178
178
  "@code-yeongyu/lsp-daemon": "file:../../../../lsp-daemon",
@@ -193,7 +193,7 @@
193
193
  },
194
194
  "components/rules": {
195
195
  "name": "@code-yeongyu/codex-rules",
196
- "version": "4.18.1",
196
+ "version": "4.19.0",
197
197
  "license": "MIT",
198
198
  "dependencies": {
199
199
  "picomatch": "^4.0.3"
@@ -215,7 +215,7 @@
215
215
  },
216
216
  "components/start-work-continuation": {
217
217
  "name": "@code-yeongyu/codex-start-work-continuation",
218
- "version": "4.18.1",
218
+ "version": "4.19.0",
219
219
  "license": "MIT",
220
220
  "bin": {
221
221
  "omo-start-work-continuation": "dist/cli.js"
@@ -232,7 +232,7 @@
232
232
  },
233
233
  "components/teammode": {
234
234
  "name": "@sisyphuslabs/codex-teammode",
235
- "version": "4.18.1",
235
+ "version": "4.19.0",
236
236
  "devDependencies": {
237
237
  "@types/node": "^25.9.3",
238
238
  "bun-types": "^1.3.1",
@@ -245,7 +245,7 @@
245
245
  },
246
246
  "components/telemetry": {
247
247
  "name": "@code-yeongyu/codex-telemetry",
248
- "version": "4.18.1",
248
+ "version": "4.19.0",
249
249
  "license": "MIT",
250
250
  "bin": {
251
251
  "omo-telemetry": "dist/cli.js"
@@ -263,7 +263,7 @@
263
263
  },
264
264
  "components/ultrawork": {
265
265
  "name": "@code-yeongyu/codex-ultrawork",
266
- "version": "4.18.1",
266
+ "version": "4.19.0",
267
267
  "license": "MIT",
268
268
  "bin": {
269
269
  "omo-ultrawork": "dist/cli.js"
@@ -281,7 +281,7 @@
281
281
  },
282
282
  "components/ulw-loop": {
283
283
  "name": "@code-yeongyu/codex-ulw-loop",
284
- "version": "4.18.1",
284
+ "version": "4.19.0",
285
285
  "license": "MIT",
286
286
  "bin": {
287
287
  "omo-ulw-loop": "dist/cli.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sisyphuslabs/omo-codex-plugin",
3
- "version": "4.18.1",
3
+ "version": "4.19.0",
4
4
  "description": "Aggregate Codex plugin root for OMO components.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -26,7 +26,17 @@ import { readFileSync } from "node:fs";
26
26
  import { homedir } from "node:os";
27
27
  import { dirname, isAbsolute, join } from "node:path";
28
28
 
29
+ import {
30
+ findTomlSection as findSection,
31
+ hasTomlSetting,
32
+ removeTomlSectionSetting,
33
+ removeRootTomlSetting,
34
+ replaceOrInsertTomlSectionSetting,
35
+ replaceOrInsertRootTomlSetting,
36
+ } from "./toml-section-editor.mjs";
37
+
29
38
  const MANAGED_COMMENT_MARKER = "openai/codex#26753";
39
+ const MULTI_AGENT_V2_THREAD_LIMIT_KEY = "features.multi_agent_v2.max_concurrent_threads_per_session";
30
40
  const MANAGED_DISABLE_COMMENT = [
31
41
  "# Managed by LazyCodex: multi_agent_v2 is re-disabled on every Codex session start",
32
42
  `# because enabling it fails every turn with HTTP 400 (${MANAGED_COMMENT_MARKER}).`,
@@ -177,7 +187,11 @@ function isGpt56Family(model) {
177
187
 
178
188
  function clearMultiAgentV2DisableForReservedSchema(config) {
179
189
  // `config` arrives shorthand-normalized from forceDisableMultiAgentV2.
180
- const result = removeManagedDisableComments(config);
190
+ let result = removeManagedDisableComments(config);
191
+ result = removeRootTomlSetting(result, "features.multi_agent_v2.enabled", "false");
192
+ result = removeRootTomlSetting(result, "features.multi_agent_v2.hide_spawn_agent_metadata", "false");
193
+ result = removeDottedMultiAgentV2Setting(result, "enabled", "false");
194
+ result = removeDottedMultiAgentV2Setting(result, "hide_spawn_agent_metadata", "false");
181
195
 
182
196
  const section = findSection(result, "[features.multi_agent_v2]");
183
197
  if (!section) return result;
@@ -203,6 +217,9 @@ function forceDisableLegacyEncryptedV2(config) {
203
217
  const section = findSection(config, "[features.multi_agent_v2]");
204
218
 
205
219
  if (!section) {
220
+ if (hasTomlSetting(config, MULTI_AGENT_V2_THREAD_LIMIT_KEY)) {
221
+ return setDottedMultiAgentV2Disable(config);
222
+ }
206
223
  return ensureManagedComment(appendDisabledSection(config));
207
224
  }
208
225
 
@@ -222,6 +239,20 @@ function forceDisableLegacyEncryptedV2(config) {
222
239
  return ensureManagedComment(config.slice(0, section.start) + patched + config.slice(section.end));
223
240
  }
224
241
 
242
+ function setDottedMultiAgentV2Disable(config) {
243
+ const featuresSection = findSection(config, "[features]");
244
+ if (!featuresSection) {
245
+ return replaceOrInsertRootTomlSetting(config, "features.multi_agent_v2.enabled", "false");
246
+ }
247
+ return replaceOrInsertTomlSectionSetting(config, featuresSection, "multi_agent_v2.enabled", "false");
248
+ }
249
+
250
+ function removeDottedMultiAgentV2Setting(config, key, expectedValue) {
251
+ const featuresSection = findSection(config, "[features]");
252
+ if (!featuresSection) return config;
253
+ return removeTomlSectionSetting(config, featuresSection, `multi_agent_v2.${key}`, expectedValue);
254
+ }
255
+
225
256
  function ensureManagedComment(config) {
226
257
  if (config.includes(MANAGED_COMMENT_MARKER)) return config;
227
258
  const section = findSection(config, "[features.multi_agent_v2]");
@@ -269,30 +300,3 @@ function appendDisabledSection(config) {
269
300
  const prefix = trimmed.length === 0 ? "" : `${trimmed}\n\n`;
270
301
  return `${prefix}[features.multi_agent_v2]\nenabled = false\n`;
271
302
  }
272
-
273
- // Strips a trailing # comment from a TOML line fragment (best-effort; quoted keys containing # are out of scope).
274
- function stripTrailingComment(line) {
275
- const idx = line.indexOf("#");
276
- return idx === -1 ? line : line.slice(0, idx).trim();
277
- }
278
-
279
- function findSection(config, headerLine) {
280
- const lines = config.match(/[^\n]*\n?|$/g) ?? [];
281
- let offset = 0;
282
- let start = -1;
283
- for (const line of lines) {
284
- if (line.length === 0) break;
285
- const trimmed = line.trim();
286
- if (start === -1) {
287
- if (stripTrailingComment(trimmed) === headerLine) start = offset;
288
- } else {
289
- const bare = stripTrailingComment(trimmed);
290
- if (bare.startsWith("[") && bare.endsWith("]")) {
291
- return { start, end: offset, text: config.slice(start, offset) };
292
- }
293
- }
294
- offset += line.length;
295
- }
296
- if (start === -1) return null;
297
- return { start, end: config.length, text: config.slice(start) };
298
- }
@@ -1,8 +1,15 @@
1
1
  import { prefersMultiAgentV2, readRootModel, resolveMultiAgentVersionFromConfig } from "./multi-agent-v2-guard.mjs";
2
+ import {
3
+ findTomlSection as findSection,
4
+ hasTomlSetting,
5
+ replaceOrInsertTomlSectionSetting,
6
+ } from "./toml-section-editor.mjs";
2
7
 
3
8
  const CODEX_AGENTS_HEADER = "[agents]";
4
9
  const CODEX_MULTI_AGENT_V2_HEADER = "[features.multi_agent_v2]";
10
+ const CODEX_MULTI_AGENT_V2_THREAD_LIMIT_KEY = "features.multi_agent_v2.max_concurrent_threads_per_session";
5
11
  const CODEX_SUBAGENT_THREAD_LIMIT = "1000";
12
+ const CODEX_MULTI_AGENT_V2_DEFAULT_THREAD_LIMIT = "16";
6
13
 
7
14
  /**
8
15
  * Ensure subagent concurrency limits without writing settings that conflict
@@ -53,13 +60,13 @@ function raiseExistingAgentsMaxThreads(config) {
53
60
  const section = findSection(config, CODEX_AGENTS_HEADER);
54
61
  if (!section) return config;
55
62
  if (!/^\s*max_threads\s*=/m.test(section.text)) return config;
56
- return replaceOrInsertSetting(config, section, "max_threads", CODEX_SUBAGENT_THREAD_LIMIT);
63
+ return replaceOrInsertTomlSectionSetting(config, section, "max_threads", CODEX_SUBAGENT_THREAD_LIMIT);
57
64
  }
58
65
 
59
66
  function ensureAgentsMaxThreads(config) {
60
67
  const section = findSection(config, CODEX_AGENTS_HEADER);
61
68
  if (!section) return appendBlock(config, `${CODEX_AGENTS_HEADER}\nmax_threads = ${CODEX_SUBAGENT_THREAD_LIMIT}\n`);
62
- return replaceOrInsertSetting(config, section, "max_threads", CODEX_SUBAGENT_THREAD_LIMIT);
69
+ return replaceOrInsertTomlSectionSetting(config, section, "max_threads", CODEX_SUBAGENT_THREAD_LIMIT);
63
70
  }
64
71
 
65
72
  function removeAgentsMaxThreads(config) {
@@ -79,29 +86,20 @@ function removeAgentsMaxThreads(config) {
79
86
  }
80
87
 
81
88
  function ensureMultiAgentV2ThreadLimit(config) {
89
+ if (hasTomlSetting(config, CODEX_MULTI_AGENT_V2_THREAD_LIMIT_KEY)) return config;
82
90
  const section = findSection(config, CODEX_MULTI_AGENT_V2_HEADER);
83
91
  if (!section) {
84
92
  return appendBlock(
85
93
  config,
86
- `${CODEX_MULTI_AGENT_V2_HEADER}\nmax_concurrent_threads_per_session = ${CODEX_SUBAGENT_THREAD_LIMIT}\n`,
94
+ `${CODEX_MULTI_AGENT_V2_HEADER}\nmax_concurrent_threads_per_session = ${CODEX_MULTI_AGENT_V2_DEFAULT_THREAD_LIMIT}\n`,
87
95
  );
88
96
  }
89
- return replaceOrInsertSetting(config, section, "max_concurrent_threads_per_session", CODEX_SUBAGENT_THREAD_LIMIT);
90
- }
91
-
92
- function replaceOrInsertSetting(config, section, key, value) {
93
- const pattern = new RegExp(`^(\\s*)${escapeRegExp(key)}\\s*=\\s*[^\\n#]*(#[^\\n]*)?$`, "m");
94
- if (pattern.test(section.text)) {
95
- const patched = section.text.replace(pattern, (_match, indent, comment) =>
96
- comment ? `${indent}${key} = ${value} ${comment}` : `${indent}${key} = ${value}`,
97
- );
98
- return config.slice(0, section.start) + patched + config.slice(section.end);
99
- }
100
-
101
- const headerEnd = section.text.indexOf("\n");
102
- const insertAt = headerEnd === -1 ? section.text.length : headerEnd + 1;
103
- const patched = `${section.text.slice(0, insertAt)}${headerEnd === -1 ? "\n" : ""}${key} = ${value}\n${section.text.slice(insertAt)}`;
104
- return config.slice(0, section.start) + patched + config.slice(section.end);
97
+ return replaceOrInsertTomlSectionSetting(
98
+ config,
99
+ section,
100
+ "max_concurrent_threads_per_session",
101
+ CODEX_MULTI_AGENT_V2_DEFAULT_THREAD_LIMIT,
102
+ );
105
103
  }
106
104
 
107
105
  function appendBlock(config, block) {
@@ -113,29 +111,3 @@ function appendBlock(config, block) {
113
111
  function escapeRegExp(value) {
114
112
  return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
115
113
  }
116
-
117
- function stripTrailingComment(line) {
118
- const idx = line.indexOf("#");
119
- return idx === -1 ? line : line.slice(0, idx).trim();
120
- }
121
-
122
- function findSection(config, headerLine) {
123
- const lines = config.match(/[^\n]*\n?|$/g) ?? [];
124
- let offset = 0;
125
- let start = -1;
126
- for (const line of lines) {
127
- if (line.length === 0) break;
128
- const trimmed = line.trim();
129
- if (start === -1) {
130
- if (stripTrailingComment(trimmed) === headerLine) start = offset;
131
- } else {
132
- const bare = stripTrailingComment(trimmed);
133
- if (bare.startsWith("[") && bare.endsWith("]")) {
134
- return { start, end: offset, text: config.slice(start, offset) };
135
- }
136
- }
137
- offset += line.length;
138
- }
139
- if (start === -1) return null;
140
- return { start, end: config.length, text: config.slice(start) };
141
- }