oh-my-opencode 4.19.3 → 5.0.0-beta.1

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 (347) hide show
  1. package/.agents/command/get-unpublished-changes.md +2 -0
  2. package/.agents/command/omomomo.md +1 -1
  3. package/.agents/command/publish.md +7 -0
  4. package/.agents/skills/get-unpublished-changes/SKILL.md +2 -0
  5. package/.agents/skills/hyperplan/SKILL.md +3 -3
  6. package/.agents/skills/omomomo/SKILL.md +1 -1
  7. package/.agents/skills/publish/SKILL.md +7 -0
  8. package/.opencode/command/get-unpublished-changes.md +2 -0
  9. package/.opencode/command/omomomo.md +1 -1
  10. package/.opencode/command/publish.md +7 -0
  11. package/.opencode/skills/hyperplan/SKILL.md +3 -3
  12. package/README.ja.md +1 -1
  13. package/README.ko.md +1 -1
  14. package/README.md +6 -5
  15. package/README.ru.md +1 -1
  16. package/README.zh-cn.md +1 -1
  17. package/bin/oh-my-opencode.js +14 -1
  18. package/bin/oh-my-opencode.test.ts +21 -0
  19. package/dist/agents/sisyphus-junior/agent.d.ts +1 -1
  20. package/dist/cli/doctor/checks/deprecated-reasoning-keys.d.ts +2 -0
  21. package/dist/cli/index.js +2925 -1919
  22. package/dist/cli-node/index.js +2925 -1919
  23. package/dist/config/schema/agent-overrides.d.ts +1343 -15
  24. package/dist/config/schema/categories.d.ts +132 -0
  25. package/dist/config/schema/fallback-models.d.ts +50 -0
  26. package/dist/config/schema/oh-my-opencode-config.d.ts +1322 -11
  27. package/dist/config-migration/index.d.ts +1 -0
  28. package/dist/config-migration/migration-plans.d.ts +1 -0
  29. package/dist/config-migration/reasoning-unification.d.ts +3 -0
  30. package/dist/features/monitor/batcher.d.ts +3 -1
  31. package/dist/features/monitor/manager-internals.d.ts +1 -0
  32. package/dist/features/monitor/output-injector-types.d.ts +2 -0
  33. package/dist/features/monitor/output-injector.d.ts +6 -0
  34. package/dist/features/team-mode/tools/lifecycle-test-fixture.d.ts +2 -0
  35. package/dist/hooks/codegraph-bootstrap/command-runner.d.ts +1 -0
  36. package/dist/hooks/model-fallback/next-fallback.d.ts +1 -0
  37. package/dist/hooks/runtime-fallback/constants.d.ts +1 -1
  38. package/dist/hooks/todo-continuation-enforcer/types.d.ts +1 -0
  39. package/dist/hooks/todo-continuation-enforcer/unrecoverable-request-error.d.ts +9 -0
  40. package/dist/hooks/tool-pair-validator/hook.test-support.d.ts +29 -0
  41. package/dist/hooks/tool-pair-validator/tool-part-ids.d.ts +14 -5
  42. package/dist/hooks/tool-pair-validator/tool-result-repair.d.ts +4 -3
  43. package/dist/hooks/tool-pair-validator/types.d.ts +5 -22
  44. package/dist/index.js +4864 -4011
  45. package/dist/mcp/lsp.d.ts +1 -0
  46. package/dist/oh-my-opencode.schema.json +3221 -222
  47. package/dist/plugin-handlers/prometheus-agent-config-builder.d.ts +1 -0
  48. package/dist/shared/agent-variant.d.ts +11 -0
  49. package/dist/shared/session-prompt-params-helpers.d.ts +6 -1
  50. package/dist/shared/tmux/constants.d.ts +1 -1
  51. package/dist/skills/ast-grep/SOURCE +1 -1
  52. package/dist/skills/ast-grep/install.ps1 +2 -2
  53. package/dist/skills/ast-grep/install.sh +1 -1
  54. package/dist/skills/ast-grep/references/install.md +2 -2
  55. package/dist/skills/ast-grep/tests/smoke.sh +1 -1
  56. package/dist/skills/coding-agent-sessions/SKILL.md +4 -3
  57. package/dist/skills/coding-agent-sessions/references/all-platforms.md +3 -1
  58. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/aside_scanner.py +140 -0
  59. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +3 -0
  60. package/dist/skills/data-scientist/SKILL.md +243 -0
  61. package/dist/skills/data-scientist/references/common-scenarios.md +176 -0
  62. package/dist/skills/data-scientist/references/execution-templates.md +197 -0
  63. package/dist/skills/data-scientist/references/integration-patterns.md +153 -0
  64. package/dist/skills/data-scientist/references/performance-benchmarks.md +37 -0
  65. package/dist/skills/data-scientist/references/uv-setup.md +78 -0
  66. package/dist/skills/data-scientist/scripts/quick-query.py +111 -0
  67. package/dist/skills/data-scientist/scripts/setup-uv.ps1 +53 -0
  68. package/dist/skills/data-scientist/scripts/setup-uv.sh +60 -0
  69. package/dist/skills/debugging/SKILL.md +1 -1
  70. package/dist/skills/programming/SKILL.md +1 -2
  71. package/dist/skills/start-work/SKILL.md +54 -9
  72. package/dist/skills/ultimate-browsing/SKILL.md +2 -2
  73. package/dist/skills/ultimate-browsing/engine/__main__.py +8 -1
  74. package/dist/skills/ultimate-browsing/engine/bias_check.py +11 -0
  75. package/dist/skills/ultimate-browsing/engine/fetch_chain.py +90 -52
  76. package/dist/skills/ultimate-browsing/engine/result_schema.py +10 -1
  77. package/dist/skills/ultimate-browsing/engine/surrogate.py +214 -0
  78. package/dist/skills/ultimate-browsing/engine/surrogates.yaml +60 -0
  79. package/dist/skills/ultimate-browsing/engine/tests/fixtures/amp_redirect_stub.html +7 -0
  80. package/dist/skills/ultimate-browsing/engine/tests/fixtures/search_interstitial.html +19 -0
  81. package/dist/skills/ultimate-browsing/engine/tests/fixtures/wayback_available.json +1 -0
  82. package/dist/skills/ultimate-browsing/engine/tests/fixtures/wayback_snapshot.html +1128 -0
  83. package/dist/skills/ultimate-browsing/engine/tests/test_surrogate.py +252 -0
  84. package/dist/skills/ultimate-browsing/engine/tests/test_surrogate_validators.py +78 -0
  85. package/dist/skills/ultimate-browsing/engine/validators.py +46 -0
  86. package/dist/skills/ultimate-browsing/engine/waf_detector.py +1 -1
  87. package/dist/skills/ultimate-browsing/engine/waf_profiles.yaml +10 -5
  88. package/dist/skills/ultimate-browsing/references/agent-reach/social.md +1 -1
  89. package/dist/skills/ultimate-browsing/references/chrome-stealth.md +13 -11
  90. package/dist/skills/ultimate-browsing/references/insane-search/README.md +4 -4
  91. package/dist/skills/ultimate-browsing/references/insane-search/cache-archive.md +51 -50
  92. package/dist/skills/ultimate-browsing/references/insane-search/fallback.md +1 -1
  93. package/dist/skills/ultimate-browsing/references/insane-search/jina.md +8 -2
  94. package/dist/skills/ultimate-browsing/references/insane-search/naver.md +1 -1
  95. package/dist/skills/ultimate-browsing/references/insane-search/twitter.md +3 -3
  96. package/dist/skills/ulw-plan/SKILL.md +2 -2
  97. package/dist/skills/ulw-plan/references/full-workflow.md +3 -3
  98. package/dist/skills/ulw-plan/scripts/scaffold-plan.mjs +1 -1
  99. package/dist/skills/ulw-research/SKILL.md +128 -12
  100. package/dist/tools/delegate-task/builtin-categories.d.ts +1 -0
  101. package/dist/tools/delegate-task/builtin-category-definition.d.ts +1 -0
  102. package/dist/tools/delegate-task/constants.d.ts +1 -1
  103. package/dist/tui.js +1271 -1108
  104. package/docs/reference/web-terminal-visual-qa.md +1 -1
  105. package/package.json +27 -19
  106. package/packages/lsp-core/src/lsp/client-diagnostics-freshness.integration.test.ts +2 -2
  107. package/packages/lsp-core/src/lsp/connection.ts +1 -1
  108. package/packages/lsp-daemon/dist/cli.js +27 -13
  109. package/packages/lsp-daemon/dist/client.js +49 -35
  110. package/packages/lsp-daemon/dist/ensure-daemon.d.ts +1 -0
  111. package/packages/lsp-daemon/dist/ensure-daemon.js +18 -5
  112. package/packages/lsp-daemon/dist/index.js +34 -20
  113. package/packages/lsp-tools-mcp/dist/cli.js +1 -1
  114. package/packages/lsp-tools-mcp/dist/lsp/manager.js +1 -1
  115. package/packages/lsp-tools-mcp/dist/mcp.js +1 -1
  116. package/packages/lsp-tools-mcp/dist/tools.js +1 -1
  117. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  118. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +289 -95
  119. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  120. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  121. package/packages/omo-codex/plugin/components/bootstrap/src/setup.ts +7 -7
  122. package/packages/omo-codex/plugin/components/bootstrap/src/worker.ts +3 -0
  123. package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +385 -64
  124. package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +336 -47
  125. package/packages/omo-codex/plugin/components/codegraph/package.json +1 -1
  126. package/packages/omo-codex/plugin/components/codegraph/test/hook.test.ts +6 -0
  127. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  128. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  129. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  130. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  131. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  132. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  133. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +3 -3
  134. package/packages/omo-codex/plugin/components/lsp/dist/cli.js +56 -42
  135. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  136. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  137. package/packages/omo-codex/plugin/components/rules/dist/cli.js +1 -1
  138. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  139. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  140. package/packages/omo-codex/plugin/components/rules/src/post-compact-budget.ts +1 -1
  141. package/packages/omo-codex/plugin/components/start-work-continuation/AGENTS.md +1 -0
  142. package/packages/omo-codex/plugin/components/start-work-continuation/README.md +5 -1
  143. package/packages/omo-codex/plugin/components/start-work-continuation/directive.md +2 -1
  144. package/packages/omo-codex/plugin/components/start-work-continuation/dist/cli.js +18 -0
  145. package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +2 -2
  146. package/packages/omo-codex/plugin/components/start-work-continuation/package.json +1 -1
  147. package/packages/omo-codex/plugin/components/start-work-continuation/src/codex-hook.ts +21 -0
  148. package/packages/omo-codex/plugin/components/start-work-continuation/test/codex-hook.test.ts +105 -0
  149. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  150. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  151. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  152. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  153. package/packages/omo-codex/plugin/components/ultrawork/CHANGELOG.md +2 -0
  154. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-code-reviewer.toml +1 -1
  155. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-gate-reviewer.toml +1 -1
  156. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-qa-executor.toml +1 -1
  157. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-worker-high.toml +1 -1
  158. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-worker-low.toml +1 -1
  159. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-worker-medium.toml +1 -1
  160. package/packages/omo-codex/plugin/components/ultrawork/agents/plan.toml +2 -2
  161. package/packages/omo-codex/plugin/components/ultrawork/directive.md +3 -2
  162. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  163. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  164. package/packages/omo-codex/plugin/components/ultrawork/skills/ultrawork/SKILL.md +3 -2
  165. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +2 -2
  166. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +3 -3
  167. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/scripts/scaffold-plan.mjs +1 -1
  168. package/packages/omo-codex/plugin/components/ulw-loop/AGENTS.md +1 -1
  169. package/packages/omo-codex/plugin/components/ulw-loop/CHANGELOG.md +2 -0
  170. package/packages/omo-codex/plugin/components/ulw-loop/README.md +11 -11
  171. package/packages/omo-codex/plugin/components/ulw-loop/directive.md +3 -2
  172. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-reconciliation.js +1 -1
  173. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-output.d.ts +1 -1
  174. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-output.js +9 -9
  175. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-steering.js +1 -1
  176. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +66 -66
  177. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-instruction.js +4 -4
  178. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-hook.js +1 -1
  179. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-crud.js +1 -1
  180. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-io.js +1 -1
  181. package/packages/omo-codex/plugin/components/ulw-loop/dist/steering.js +1 -1
  182. package/packages/omo-codex/plugin/components/ulw-loop/dist/stop-resume-hook.js +2 -2
  183. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
  184. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  185. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +3 -3
  186. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +22 -25
  187. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-reconciliation.ts +1 -1
  188. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-output.ts +9 -9
  189. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-steering.ts +1 -1
  190. package/packages/omo-codex/plugin/components/ulw-loop/src/cli.ts +1 -1
  191. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-instruction.ts +4 -4
  192. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-hook.ts +1 -1
  193. package/packages/omo-codex/plugin/components/ulw-loop/src/plan-crud.ts +1 -1
  194. package/packages/omo-codex/plugin/components/ulw-loop/src/plan-io.ts +1 -1
  195. package/packages/omo-codex/plugin/components/ulw-loop/src/steering.ts +1 -1
  196. package/packages/omo-codex/plugin/components/ulw-loop/src/stop-resume-hook.ts +2 -2
  197. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-commands.test.ts +2 -2
  198. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-entrypoint.test.ts +1 -1
  199. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-helpers.test.ts +2 -2
  200. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-steering-kind-guidance.test.ts +1 -1
  201. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-hook.test.ts +2 -2
  202. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/quality-gate-builder.ts +1 -1
  203. package/packages/omo-codex/plugin/components/ulw-loop/test/package-smoke.test.ts +5 -5
  204. package/packages/omo-codex/plugin/components/ulw-loop/test/plan-io.test.ts +1 -1
  205. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-roles.test.ts +1 -1
  206. package/packages/omo-codex/plugin/components/ulw-loop/test/steering.test.ts +1 -1
  207. package/packages/omo-codex/plugin/components/ulw-loop/test/stop-resume-hook.test.ts +1 -1
  208. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  209. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  210. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  211. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +1 -1
  212. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  213. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  214. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  215. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  216. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  217. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  218. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  219. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  220. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  221. package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +1 -1
  222. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  223. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  224. package/packages/omo-codex/plugin/hooks/stop-checking-start-work-continuation.json +1 -1
  225. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  226. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-start-work-continuation.json +1 -1
  227. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  228. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  229. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  230. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  231. package/packages/omo-codex/plugin/package-lock.json +13 -13
  232. package/packages/omo-codex/plugin/package.json +1 -1
  233. package/packages/omo-codex/plugin/scripts/sync-skills.mjs +8 -2
  234. package/packages/omo-codex/plugin/skills/ast-grep/SOURCE +1 -1
  235. package/packages/omo-codex/plugin/skills/ast-grep/install.ps1 +2 -2
  236. package/packages/omo-codex/plugin/skills/ast-grep/install.sh +1 -1
  237. package/packages/omo-codex/plugin/skills/ast-grep/references/install.md +2 -2
  238. package/packages/omo-codex/plugin/skills/ast-grep/tests/smoke.sh +1 -1
  239. package/packages/omo-codex/plugin/skills/coding-agent-sessions/SKILL.md +4 -3
  240. package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/all-platforms.md +3 -1
  241. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/aside_scanner.py +140 -0
  242. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +3 -0
  243. package/packages/omo-codex/plugin/skills/data-scientist/SKILL.md +243 -0
  244. package/packages/omo-codex/plugin/skills/data-scientist/agents/openai.yaml +2 -0
  245. package/packages/omo-codex/plugin/skills/data-scientist/references/common-scenarios.md +176 -0
  246. package/packages/omo-codex/plugin/skills/data-scientist/references/execution-templates.md +197 -0
  247. package/packages/omo-codex/plugin/skills/data-scientist/references/integration-patterns.md +153 -0
  248. package/packages/omo-codex/plugin/skills/data-scientist/references/performance-benchmarks.md +37 -0
  249. package/packages/omo-codex/plugin/skills/data-scientist/references/uv-setup.md +78 -0
  250. package/packages/omo-codex/plugin/skills/data-scientist/scripts/quick-query.py +111 -0
  251. package/packages/omo-codex/plugin/skills/data-scientist/scripts/setup-uv.ps1 +53 -0
  252. package/packages/omo-codex/plugin/skills/data-scientist/scripts/setup-uv.sh +60 -0
  253. package/packages/omo-codex/plugin/skills/debugging/SKILL.md +1 -1
  254. package/packages/omo-codex/plugin/skills/programming/SKILL.md +1 -2
  255. package/packages/omo-codex/plugin/skills/start-work/SKILL.md +54 -9
  256. package/packages/omo-codex/plugin/skills/ultimate-browsing/SKILL.md +2 -2
  257. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/__main__.py +8 -1
  258. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/bias_check.py +11 -0
  259. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/fetch_chain.py +90 -52
  260. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/result_schema.py +10 -1
  261. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/surrogate.py +214 -0
  262. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/surrogates.yaml +60 -0
  263. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/fixtures/amp_redirect_stub.html +7 -0
  264. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/fixtures/search_interstitial.html +19 -0
  265. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/fixtures/wayback_available.json +1 -0
  266. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/fixtures/wayback_snapshot.html +1128 -0
  267. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/test_surrogate.py +252 -0
  268. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/test_surrogate_validators.py +78 -0
  269. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/validators.py +46 -0
  270. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/waf_detector.py +1 -1
  271. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/waf_profiles.yaml +10 -5
  272. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/agent-reach/social.md +1 -1
  273. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/chrome-stealth.md +13 -11
  274. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/README.md +4 -4
  275. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/cache-archive.md +51 -50
  276. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/fallback.md +1 -1
  277. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/jina.md +8 -2
  278. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/naver.md +1 -1
  279. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/twitter.md +3 -3
  280. package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +3 -2
  281. package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +3 -3
  282. package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +22 -25
  283. package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +2 -2
  284. package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +3 -3
  285. package/packages/omo-codex/plugin/skills/ulw-plan/scripts/scaffold-plan.mjs +1 -1
  286. package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +127 -12
  287. package/packages/omo-codex/plugin/test/bootstrap-binlinks.test.mjs +12 -12
  288. package/packages/omo-codex/plugin/test/bootstrap-orchestration.test.mjs +36 -4
  289. package/packages/omo-codex/plugin/test/sync-skills-orchestration.test.mjs +1 -1
  290. package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +9 -2
  291. package/packages/omo-codex/plugin/test/sync-skills.test.mjs +12 -0
  292. package/packages/omo-codex/scripts/install-bin-links.test.mjs +56 -2
  293. package/packages/omo-codex/scripts/install-delegated-command.test.mjs +6 -6
  294. package/packages/omo-codex/scripts/install-dist/install-local.mjs +138 -65
  295. package/packages/omo-codex/scripts/install-local-entrypoint.test.mjs +4 -4
  296. package/packages/omo-codex/scripts/install-local.test.mjs +5 -2
  297. package/packages/shared-skills/index.mjs +19 -1
  298. package/packages/shared-skills/skills/ast-grep/SOURCE +1 -1
  299. package/packages/shared-skills/skills/ast-grep/install.ps1 +2 -2
  300. package/packages/shared-skills/skills/ast-grep/install.sh +1 -1
  301. package/packages/shared-skills/skills/ast-grep/references/install.md +2 -2
  302. package/packages/shared-skills/skills/ast-grep/tests/smoke.sh +1 -1
  303. package/packages/shared-skills/skills/coding-agent-sessions/SKILL.md +4 -3
  304. package/packages/shared-skills/skills/coding-agent-sessions/references/all-platforms.md +3 -1
  305. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/aside_scanner.py +140 -0
  306. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +3 -0
  307. package/packages/shared-skills/skills/data-scientist/SKILL.md +243 -0
  308. package/packages/shared-skills/skills/data-scientist/references/common-scenarios.md +176 -0
  309. package/packages/shared-skills/skills/data-scientist/references/execution-templates.md +197 -0
  310. package/packages/shared-skills/skills/data-scientist/references/integration-patterns.md +153 -0
  311. package/packages/shared-skills/skills/data-scientist/references/performance-benchmarks.md +37 -0
  312. package/packages/shared-skills/skills/data-scientist/references/uv-setup.md +78 -0
  313. package/packages/shared-skills/skills/data-scientist/scripts/quick-query.py +111 -0
  314. package/packages/shared-skills/skills/data-scientist/scripts/setup-uv.ps1 +53 -0
  315. package/packages/shared-skills/skills/data-scientist/scripts/setup-uv.sh +60 -0
  316. package/packages/shared-skills/skills/debugging/SKILL.md +1 -1
  317. package/packages/shared-skills/skills/programming/SKILL.md +1 -2
  318. package/packages/shared-skills/skills/start-work/SKILL.md +54 -9
  319. package/packages/shared-skills/skills/ultimate-browsing/SKILL.md +2 -2
  320. package/packages/shared-skills/skills/ultimate-browsing/engine/__main__.py +8 -1
  321. package/packages/shared-skills/skills/ultimate-browsing/engine/bias_check.py +11 -0
  322. package/packages/shared-skills/skills/ultimate-browsing/engine/fetch_chain.py +90 -52
  323. package/packages/shared-skills/skills/ultimate-browsing/engine/result_schema.py +10 -1
  324. package/packages/shared-skills/skills/ultimate-browsing/engine/surrogate.py +214 -0
  325. package/packages/shared-skills/skills/ultimate-browsing/engine/surrogates.yaml +60 -0
  326. package/packages/shared-skills/skills/ultimate-browsing/engine/tests/fixtures/amp_redirect_stub.html +7 -0
  327. package/packages/shared-skills/skills/ultimate-browsing/engine/tests/fixtures/search_interstitial.html +19 -0
  328. package/packages/shared-skills/skills/ultimate-browsing/engine/tests/fixtures/wayback_available.json +1 -0
  329. package/packages/shared-skills/skills/ultimate-browsing/engine/tests/fixtures/wayback_snapshot.html +1128 -0
  330. package/packages/shared-skills/skills/ultimate-browsing/engine/tests/test_surrogate.py +252 -0
  331. package/packages/shared-skills/skills/ultimate-browsing/engine/tests/test_surrogate_validators.py +78 -0
  332. package/packages/shared-skills/skills/ultimate-browsing/engine/validators.py +46 -0
  333. package/packages/shared-skills/skills/ultimate-browsing/engine/waf_detector.py +1 -1
  334. package/packages/shared-skills/skills/ultimate-browsing/engine/waf_profiles.yaml +10 -5
  335. package/packages/shared-skills/skills/ultimate-browsing/references/agent-reach/social.md +1 -1
  336. package/packages/shared-skills/skills/ultimate-browsing/references/chrome-stealth.md +13 -11
  337. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/README.md +4 -4
  338. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/cache-archive.md +51 -50
  339. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/fallback.md +1 -1
  340. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/jina.md +8 -2
  341. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/naver.md +1 -1
  342. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/twitter.md +3 -3
  343. package/packages/shared-skills/skills/ulw-plan/SKILL.md +2 -2
  344. package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +3 -3
  345. package/packages/shared-skills/skills/ulw-plan/scripts/scaffold-plan.mjs +1 -1
  346. package/packages/shared-skills/skills/ulw-research/SKILL.md +128 -12
  347. package/postinstall.mjs +6 -0
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env node
2
+ // omo-codex-install:7bc4b0f020f0a1b4448cc75385a7e3c60042e3b270e304d4c1a43a859e81a4c2:b6c36b51e1610bef51d65ec06f11860411fcf0c3bece75ba263c9495c8873cbf
2
3
  var __defProp = Object.defineProperty;
3
4
  var __returnValue = (v) => v;
4
5
  function __exportSetter(name, newValue) {
@@ -96,20 +97,20 @@ var init_atomic_write = __esm(() => {
96
97
 
97
98
  // packages/telemetry-core/src/activity-state.ts
98
99
  import { existsSync as existsSync5, mkdirSync as mkdirSync2, readFileSync as readFileSync2 } from "node:fs";
99
- import { basename as basename7, join as join33 } from "node:path";
100
+ import { basename as basename7, join as join34 } from "node:path";
100
101
  function resolveTelemetryStateDir(product, options = {}) {
101
102
  const dataDir = resolveXdgDataDir(product.cacheDirName, {
102
103
  env: options.env,
103
104
  osProvider: options.osProvider
104
105
  });
105
- const xdgStateDir = options.env?.XDG_DATA_HOME === undefined ? undefined : join33(options.env.XDG_DATA_HOME, product.cacheDirName);
106
+ const xdgStateDir = options.env?.XDG_DATA_HOME === undefined ? undefined : join34(options.env.XDG_DATA_HOME, product.cacheDirName);
106
107
  if (dataDir === xdgStateDir || xdgStateDir === undefined && basename7(dataDir) === product.cacheDirName) {
107
108
  return dataDir;
108
109
  }
109
- return join33(dataDir, product.cacheDirName);
110
+ return join34(dataDir, product.cacheDirName);
110
111
  }
111
112
  function getTelemetryActivityStateFilePath(stateDir) {
112
- return join33(stateDir, POSTHOG_ACTIVITY_STATE_FILE);
113
+ return join34(stateDir, POSTHOG_ACTIVITY_STATE_FILE);
113
114
  }
114
115
  function getDailyActiveCaptureState(input) {
115
116
  const state = readPostHogActivityState(input.stateDir, input.diagnostics);
@@ -180,9 +181,9 @@ var DEFAULT_POSTHOG_HOST = "https://us.i.posthog.com", DEFAULT_POSTHOG_API_KEY =
180
181
 
181
182
  // packages/telemetry-core/src/diagnostics.ts
182
183
  import { appendFileSync, existsSync as existsSync6, mkdirSync as mkdirSync3, readFileSync as readFileSync3 } from "node:fs";
183
- import { join as join34 } from "node:path";
184
+ import { join as join35 } from "node:path";
184
185
  function getTelemetryDiagnosticsFilePath(diagnosticsDir) {
185
- return join34(diagnosticsDir, DIAGNOSTICS_FILE_NAME);
186
+ return join35(diagnosticsDir, DIAGNOSTICS_FILE_NAME);
186
187
  }
187
188
  function writeTelemetryDiagnostic(input, options) {
188
189
  const now = options.now ?? new Date;
@@ -5903,7 +5904,7 @@ var package_default;
5903
5904
  var init_package = __esm(() => {
5904
5905
  package_default = {
5905
5906
  name: "@oh-my-opencode/omo-codex",
5906
- version: "4.19.3",
5907
+ version: "5.0.0-beta.1",
5907
5908
  type: "module",
5908
5909
  private: true,
5909
5910
  description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
@@ -6122,8 +6123,8 @@ var init_telemetry = __esm(() => {
6122
6123
  });
6123
6124
 
6124
6125
  // packages/omo-codex/src/install/install-local-cli.ts
6125
- import { readFile as readFile22 } from "node:fs/promises";
6126
- import { dirname as dirname12, join as join39, resolve as resolve10 } from "node:path";
6126
+ import { readFile as readFile23 } from "node:fs/promises";
6127
+ import { dirname as dirname12, join as join40, resolve as resolve10 } from "node:path";
6127
6128
  import { fileURLToPath as fileURLToPath2 } from "node:url";
6128
6129
 
6129
6130
  // packages/utils/src/runtime/spawn.ts
@@ -6456,7 +6457,7 @@ var defaultRunCommand = async (command, args, options) => {
6456
6457
  };
6457
6458
 
6458
6459
  // packages/omo-codex/src/install/install-codex.ts
6459
- import { join as join35, resolve as resolve9 } from "node:path";
6460
+ import { join as join36, resolve as resolve9 } from "node:path";
6460
6461
  import { existsSync as existsSync7 } from "node:fs";
6461
6462
  import { homedir as homedir2 } from "node:os";
6462
6463
 
@@ -6627,6 +6628,7 @@ var LEGACY_CODEX_COMPONENT_BINS = [
6627
6628
  { name: "codex-telemetry", component: "telemetry" },
6628
6629
  { name: "codex-ultrawork", component: "ultrawork" }
6629
6630
  ];
6631
+ var LEGACY_CODEX_COMPONENT_BIN_NAMES = LEGACY_CODEX_COMPONENT_BINS.map((entry) => entry.name);
6630
6632
  async function removeLegacyCodexComponentBins(binDir, platform) {
6631
6633
  for (const entry of LEGACY_CODEX_COMPONENT_BINS) {
6632
6634
  const linkPath = join3(binDir, platform === "win32" ? `${entry.name}.cmd` : entry.name);
@@ -6682,7 +6684,7 @@ function isNodeErrorWithCode2(error) {
6682
6684
  // packages/omo-codex/src/install/codex-cache-runtime-wrapper.ts
6683
6685
  import { join as join4 } from "node:path";
6684
6686
  var RUNTIME_WRAPPER_MARKER = "OMO_GENERATED_RUNTIME_WRAPPER";
6685
- function posixRuntimeWrapper(cliPath, codexHome, binDir, nodeCliPath) {
6687
+ function posixRuntimeWrapper(binName, cliPath, codexHome, binDir, nodeCliPath) {
6686
6688
  const ulwLoopBin = toPosixPath(join4(binDir, "omo-ulw-loop"));
6687
6689
  const nodeCli = escapePosixDoubleQuoted(toPosixPath(nodeCliPath));
6688
6690
  const escapedCliPath = escapePosixDoubleQuoted(toPosixPath(cliPath));
@@ -6692,6 +6694,8 @@ function posixRuntimeWrapper(cliPath, codexHome, binDir, nodeCliPath) {
6692
6694
  "#!/bin/sh",
6693
6695
  `# ${RUNTIME_WRAPPER_MARKER}`,
6694
6696
  `export CODEX_HOME="\${CODEX_HOME:-${escapedCodexHome}}"`,
6697
+ `export OMO_INVOCATION_NAME=${binName}`,
6698
+ "export OMO_EDITION=codex",
6695
6699
  'if [ "$1" = "ulw-loop" ] && [ -x "' + escapedUlwLoopBin + '" ]; then',
6696
6700
  " shift",
6697
6701
  ' exec "' + escapedUlwLoopBin + '" ulw-loop "$@"',
@@ -6715,11 +6719,11 @@ function posixRuntimeWrapper(cliPath, codexHome, binDir, nodeCliPath) {
6715
6719
  ` if [ -f "${nodeCli}" ] && command -v node >/dev/null 2>&1; then`,
6716
6720
  ` exec node "${nodeCli}" "$@"`,
6717
6721
  " fi",
6718
- ` echo "omo: bun runtime not found (checked PATH, ~/.bun/bin, /opt/homebrew/bin, /usr/local/bin) and the node fallback CLI is missing at ${nodeCli}; install bun from https://bun.sh, or reinstall omo and force the fallback with OMO_RUNTIME=node" >&2`,
6722
+ ` echo "${binName}: bun runtime not found (checked PATH, ~/.bun/bin, /opt/homebrew/bin, /usr/local/bin) and the node fallback CLI is missing at ${nodeCli}; install bun from https://bun.sh, or reinstall ${binName} and force the fallback with OMO_RUNTIME=node" >&2`,
6719
6723
  " exit 127",
6720
6724
  "fi",
6721
6725
  `if [ ! -f "${escapedCliPath}" ]; then`,
6722
- ` echo "omo: runtime target missing at ${escapedCliPath}; reinstall with: npx --yes lazycodex-ai@latest install --no-tui" >&2`,
6726
+ ` echo "${binName}: runtime target missing at ${escapedCliPath}; reinstall with: npx --yes lazycodex-ai@latest install --no-tui" >&2`,
6723
6727
  " exit 1",
6724
6728
  "fi",
6725
6729
  `exec "$BUN_BINARY" "${escapedCliPath}" "$@"`,
@@ -6727,12 +6731,14 @@ function posixRuntimeWrapper(cliPath, codexHome, binDir, nodeCliPath) {
6727
6731
  ].join(`
6728
6732
  `);
6729
6733
  }
6730
- function windowsRuntimeWrapper(cliPath, codexHome, binDir, nodeCliPath) {
6734
+ function windowsRuntimeWrapper(binName, cliPath, codexHome, binDir, nodeCliPath) {
6731
6735
  const ulwLoopBin = join4(binDir, "omo-ulw-loop.cmd");
6732
6736
  return [
6733
6737
  "@echo off",
6734
6738
  `rem ${RUNTIME_WRAPPER_MARKER}`,
6735
6739
  `if not defined CODEX_HOME set "CODEX_HOME=${codexHome}"`,
6740
+ `set "OMO_INVOCATION_NAME=${binName}"`,
6741
+ 'set "OMO_EDITION=codex"',
6736
6742
  ...windowsNodeDiscoveryLines(),
6737
6743
  `if "%~1"=="ulw-loop" if exist "${ulwLoopBin}" (`,
6738
6744
  " shift /1",
@@ -6750,11 +6756,11 @@ function windowsRuntimeWrapper(cliPath, codexHome, binDir, nodeCliPath) {
6750
6756
  ` "%OMO_NODE_BINARY%" "${nodeCliPath}" %*`,
6751
6757
  " exit /b %ERRORLEVEL%",
6752
6758
  " )",
6753
- ` echo omo: bun runtime not found, no Node runtime was discovered from NODE_REPL_NODE_PATH or PATH, or the node fallback CLI is missing at ${nodeCliPath}; install bun from https://bun.sh or rerun LazyCodex install from Codex Desktop 1>&2`,
6759
+ ` echo ${binName}: bun runtime not found, no Node runtime was discovered from NODE_REPL_NODE_PATH or PATH, or the node fallback CLI is missing at ${nodeCliPath}; install bun from https://bun.sh or rerun LazyCodex install from Codex Desktop 1>&2`,
6754
6760
  " exit /b 127",
6755
6761
  ")",
6756
6762
  `if not exist "${cliPath}" (`,
6757
- ` echo omo: runtime target missing at ${cliPath}; reinstall with: npx --yes lazycodex-ai@latest install --no-tui 1>&2`,
6763
+ ` echo ${binName}: runtime target missing at ${cliPath}; reinstall with: npx --yes lazycodex-ai@latest install --no-tui 1>&2`,
6758
6764
  " exit /b 1",
6759
6765
  ")",
6760
6766
  `"%BUN_BINARY%" "${cliPath}" %*`,
@@ -6770,7 +6776,14 @@ function escapePosixDoubleQuoted(value) {
6770
6776
  }
6771
6777
 
6772
6778
  // packages/omo-codex/src/install/codex-cache-bins.ts
6773
- var RESERVED_NESTED_BIN_NAMES = new Set(["omo", "lazycodex", "lazycodex-ai", "oh-my-opencode", "oh-my-openagent"]);
6779
+ var RESERVED_NESTED_BIN_NAMES = new Set([
6780
+ "omo",
6781
+ "omo-agent-toolkit",
6782
+ "lazycodex",
6783
+ "lazycodex-ai",
6784
+ "oh-my-opencode",
6785
+ "oh-my-openagent"
6786
+ ]);
6774
6787
  async function linkCachedPluginBins(input) {
6775
6788
  const binLinks = await discoverPackageBins(input.pluginRoot);
6776
6789
  const platform = input.platform ?? process.platform;
@@ -6800,20 +6813,26 @@ async function removeCachedManagedNpmBinShims(pluginRoot) {
6800
6813
  }
6801
6814
  async function linkRootRuntimeBin(input) {
6802
6815
  const cliPath = join5(input.repoRoot, "dist", "cli", "index.js");
6803
- if (!await isFile(cliPath))
6816
+ const platform = input.platform ?? process.platform;
6817
+ const legacyPath = join5(input.binDir, platform === "win32" ? "omo.cmd" : "omo");
6818
+ if (!await isFile(cliPath)) {
6819
+ await removeGeneratedRuntimeWrapper(legacyPath);
6804
6820
  return null;
6821
+ }
6822
+ const binName = "omo-agent-toolkit";
6805
6823
  const nodeCliPath = join5(input.repoRoot, "dist", "cli-node", "index.js");
6806
- const platform = input.platform ?? process.platform;
6807
6824
  await mkdir(input.binDir, { recursive: true });
6808
6825
  if (platform === "win32") {
6809
- const linkPath2 = join5(input.binDir, "omo.cmd");
6810
- await replaceRuntimeWrapper(linkPath2, windowsRuntimeWrapper(cliPath, input.codexHome, input.binDir, nodeCliPath));
6811
- return { name: "omo", path: linkPath2, target: cliPath };
6826
+ const linkPath2 = join5(input.binDir, `${binName}.cmd`);
6827
+ await replaceRuntimeWrapper(linkPath2, windowsRuntimeWrapper(binName, cliPath, input.codexHome, input.binDir, nodeCliPath));
6828
+ await removeGeneratedRuntimeWrapper(legacyPath);
6829
+ return { name: binName, path: linkPath2, target: cliPath };
6812
6830
  }
6813
- const linkPath = join5(input.binDir, "omo");
6814
- await replaceRuntimeWrapper(linkPath, posixRuntimeWrapper(cliPath, input.codexHome, input.binDir, nodeCliPath));
6831
+ const linkPath = join5(input.binDir, binName);
6832
+ await replaceRuntimeWrapper(linkPath, posixRuntimeWrapper(binName, cliPath, input.codexHome, input.binDir, nodeCliPath));
6815
6833
  await chmod(linkPath, 493);
6816
- return { name: "omo", path: linkPath, target: cliPath };
6834
+ await removeGeneratedRuntimeWrapper(legacyPath);
6835
+ return { name: binName, path: linkPath, target: cliPath };
6817
6836
  }
6818
6837
  async function linkCachedPluginBin(binDir, link, platform) {
6819
6838
  if (platform === "win32") {
@@ -6926,6 +6945,29 @@ async function replaceRuntimeWrapper(linkPath, content) {
6926
6945
  await rm3(linkPath, { force: true });
6927
6946
  await writeFile(linkPath, content);
6928
6947
  }
6948
+ async function removeGeneratedRuntimeWrapper(path) {
6949
+ try {
6950
+ const entry = await lstat4(path);
6951
+ if (!entry.isFile() && !entry.isSymbolicLink())
6952
+ return;
6953
+ const content = await readGeneratedWrapperContent(path);
6954
+ if (content.includes(RUNTIME_WRAPPER_MARKER))
6955
+ await rm3(path, { force: true });
6956
+ } catch (error) {
6957
+ if (isNodeErrorWithCode(error) && error.code === "ENOENT")
6958
+ return;
6959
+ throw error;
6960
+ }
6961
+ }
6962
+ async function readGeneratedWrapperContent(path) {
6963
+ try {
6964
+ return await readFile3(path, "utf8");
6965
+ } catch (error) {
6966
+ if (isNodeErrorWithCode(error) && (error.code === "ENOENT" || error.code === "EISDIR"))
6967
+ return "";
6968
+ throw error;
6969
+ }
6970
+ }
6929
6971
  async function existingNonRuntimeWrapper(path) {
6930
6972
  try {
6931
6973
  const stat3 = await lstat4(path);
@@ -8840,6 +8882,24 @@ function stripUnquotedInlineComment3(line) {
8840
8882
 
8841
8883
  // packages/omo-codex/src/install/codex-config-reasoning.ts
8842
8884
  var MANAGED_KEYS = ["model", "model_context_window", "model_reasoning_effort", "plan_mode_reasoning_effort"];
8885
+ var CODEX_REASONING_BY_UNIFIED_LEVEL = {
8886
+ off: "none",
8887
+ none: "none",
8888
+ minimal: "minimal",
8889
+ low: "low",
8890
+ medium: "medium",
8891
+ high: "high",
8892
+ xhigh: "xhigh",
8893
+ max: "max"
8894
+ };
8895
+ function applyReasoningOverride(catalog, reasoning) {
8896
+ if (reasoning === undefined)
8897
+ return catalog;
8898
+ const wireEffort = CODEX_REASONING_BY_UNIFIED_LEVEL[reasoning.trim().toLowerCase()];
8899
+ if (wireEffort === undefined)
8900
+ return catalog;
8901
+ return { ...catalog, current: { ...catalog.current, modelReasoningEffort: wireEffort } };
8902
+ }
8843
8903
  function ensureCodexReasoningConfig(config, catalog) {
8844
8904
  const current = readRootReasoningSettings(config);
8845
8905
  if (Object.keys(current).length > 0 && !matchesProfile(current, catalog.current) && !catalog.managedProfiles.some((profile) => matchesProfile(current, profile))) {
@@ -9180,7 +9240,7 @@ async function updateCodexConfig(input) {
9180
9240
  config = ensureFeatureEnabled(config, "plugin_hooks");
9181
9241
  config = ensureFeatureEnabled(config, "multi_agent");
9182
9242
  config = removeUnsupportedCodexMultiAgentModeConfig(config);
9183
- config = ensureCodexReasoningConfig(config, await readCodexModelCatalog(input.repoRoot));
9243
+ config = ensureCodexReasoningConfig(config, applyReasoningOverride(await readCodexModelCatalog(input.repoRoot), input.reasoning));
9184
9244
  config = ensureCodexMultiAgentV2Config(config, {
9185
9245
  multiAgentVersion: resolveCodexMultiAgentVersion(config, input.configPath)
9186
9246
  });
@@ -9369,7 +9429,7 @@ var MANAGED_REASONING_DEFAULT_UPGRADES = new Map([
9369
9429
  "explorer",
9370
9430
  [
9371
9431
  {
9372
- previous: { model: "gpt-5.4-mini", effort: "low" },
9432
+ previous: { model: "gpt-5.6-luna-fast", effort: "low" },
9373
9433
  current: { model: "gpt-5.6-terra", effort: "medium" }
9374
9434
  },
9375
9435
  {
@@ -9382,7 +9442,7 @@ var MANAGED_REASONING_DEFAULT_UPGRADES = new Map([
9382
9442
  "librarian",
9383
9443
  [
9384
9444
  {
9385
- previous: { model: "gpt-5.4-mini", effort: "low" },
9445
+ previous: { model: "gpt-5.6-luna-fast", effort: "low" },
9386
9446
  current: { model: "gpt-5.6-terra", effort: "medium" }
9387
9447
  },
9388
9448
  {
@@ -10664,9 +10724,18 @@ function resolveCodexInstallerBinDir(input) {
10664
10724
  return resolve8(homeDir, ".local", "bin");
10665
10725
  }
10666
10726
 
10667
- // packages/omo-codex/src/install/codex-git-bash-hooks.ts
10668
- import { readFile as readFile20, writeFile as writeFile11 } from "node:fs/promises";
10727
+ // packages/omo-codex/src/install/codex-installed-bin-dir.ts
10728
+ import { readFile as readFile20, readdir as readdir11, writeFile as writeFile11 } from "node:fs/promises";
10669
10729
  import { join as join29 } from "node:path";
10730
+ var INSTALLED_BIN_DIR_MANIFEST = ".installed-bin-dir.json";
10731
+ async function writeInstalledCodexBinDir(input) {
10732
+ await writeFile11(join29(input.pluginRoot, INSTALLED_BIN_DIR_MANIFEST), `${JSON.stringify({ binDir: input.binDir }, null, 2)}
10733
+ `);
10734
+ }
10735
+
10736
+ // packages/omo-codex/src/install/codex-git-bash-hooks.ts
10737
+ import { readFile as readFile21, writeFile as writeFile12 } from "node:fs/promises";
10738
+ import { join as join30 } from "node:path";
10670
10739
  var WINDOWS_ONLY_GIT_BASH_HOOKS = new Set([
10671
10740
  "./hooks/pre-tool-use-recommending-git-bash-mcp.json",
10672
10741
  "./hooks/post-compact-resetting-git-bash-mcp-reminder.json"
@@ -10674,22 +10743,22 @@ var WINDOWS_ONLY_GIT_BASH_HOOKS = new Set([
10674
10743
  async function removeGitBashHooksOffWindows(input) {
10675
10744
  if (input.platform === "win32")
10676
10745
  return;
10677
- const manifestPath = join29(input.pluginRoot, ".codex-plugin", "plugin.json");
10678
- const parsed = JSON.parse(await readFile20(manifestPath, "utf8"));
10746
+ const manifestPath = join30(input.pluginRoot, ".codex-plugin", "plugin.json");
10747
+ const parsed = JSON.parse(await readFile21(manifestPath, "utf8"));
10679
10748
  if (!isPlainRecord(parsed) || !Array.isArray(parsed.hooks))
10680
10749
  return;
10681
10750
  const hooks = parsed.hooks.filter((hook) => typeof hook !== "string" || !WINDOWS_ONLY_GIT_BASH_HOOKS.has(hook));
10682
10751
  if (hooks.length === parsed.hooks.length)
10683
10752
  return;
10684
- await writeFile11(manifestPath, `${JSON.stringify({ ...parsed, hooks }, null, "\t")}
10753
+ await writeFile12(manifestPath, `${JSON.stringify({ ...parsed, hooks }, null, "\t")}
10685
10754
  `);
10686
10755
  }
10687
10756
 
10688
10757
  // packages/omo-codex/src/install/omo-sot-migration.ts
10689
- import { join as join30 } from "node:path";
10758
+ import { join as join31 } from "node:path";
10690
10759
  async function seedAndMigrateOmoSot(input) {
10691
10760
  const commandEnv = { ...input.env };
10692
- const scriptPath = join30(input.repoRoot, "packages", "omo-codex", "plugin", "scripts", "migrate-omo-sot.mjs");
10761
+ const scriptPath = join31(input.repoRoot, "packages", "omo-codex", "plugin", "scripts", "migrate-omo-sot.mjs");
10693
10762
  try {
10694
10763
  await input.runCommand(process.execPath, [scriptPath, "--seed"], {
10695
10764
  cwd: input.repoRoot,
@@ -10703,6 +10772,11 @@ async function seedAndMigrateOmoSot(input) {
10703
10772
  }
10704
10773
 
10705
10774
  // packages/omo-codex/src/install/install-ast-grep-sg.ts
10775
+ import { join as join33 } from "node:path";
10776
+
10777
+ // packages/utils/src/ast-grep/install-script.ts
10778
+ import { spawn as spawn2 } from "node:child_process";
10779
+ import { existsSync as existsSync4 } from "node:fs";
10706
10780
  import { join as join32 } from "node:path";
10707
10781
 
10708
10782
  // packages/utils/src/ast-grep/sg-manifest.ts
@@ -10721,13 +10795,10 @@ function runtimeSlug(platform = process.platform, arch = process.arch) {
10721
10795
  }
10722
10796
 
10723
10797
  // packages/utils/src/ast-grep/install-script.ts
10724
- import { spawn as spawn2 } from "node:child_process";
10725
- import { existsSync as existsSync4 } from "node:fs";
10726
- import { join as join31 } from "node:path";
10727
10798
  var AST_GREP_BIN_DIR_ENV_KEY = "OMO_AST_GREP_BIN_DIR";
10728
10799
  var AST_GREP_INSTALL_TIMEOUT_MS = 30000;
10729
10800
  function astGrepRuntimeDir(baseDir, platform = process.platform, arch = process.arch) {
10730
- return join31(baseDir, "runtime", "ast-grep", runtimeSlug(platform, arch));
10801
+ return join32(baseDir, "runtime", "ast-grep", runtimeSlug(platform, arch));
10731
10802
  }
10732
10803
  function isMissingExecutable(error) {
10733
10804
  if (!("code" in error))
@@ -10765,7 +10836,7 @@ function defaultSpawnProcess(command, args, options) {
10765
10836
  };
10766
10837
  }
10767
10838
  function scriptPathForPlatform(skillDir, platform) {
10768
- return join31(skillDir, platform === "win32" ? "install.ps1" : "install.sh");
10839
+ return join32(skillDir, platform === "win32" ? "install.ps1" : "install.sh");
10769
10840
  }
10770
10841
  function invocationsForPlatform(scriptPath, platform) {
10771
10842
  if (platform !== "win32")
@@ -10837,7 +10908,7 @@ async function installAstGrepForCodex(options) {
10837
10908
  return;
10838
10909
  const platform = options.platform ?? process.platform;
10839
10910
  const targetDir = astGrepRuntimeDir(options.codexHome, platform, options.arch ?? process.arch);
10840
- const skillDir = join32(plugin.path, "skills", "ast-grep");
10911
+ const skillDir = join33(plugin.path, "skills", "ast-grep");
10841
10912
  const installer = options.installer ?? runAstGrepSkillInstall;
10842
10913
  try {
10843
10914
  const result = await installer({ platform, skillDir, targetDir });
@@ -10870,7 +10941,7 @@ async function runCodexInstaller(options = {}) {
10870
10941
  const env2 = options.env ?? process.env;
10871
10942
  const platform = options.platform ?? process.platform;
10872
10943
  const repoRoot = resolve9(options.repoRoot ?? findRepoRoot({ importerDir: import.meta.dir, env: env2 }));
10873
- const codexHome = resolve9(options.codexHome ?? env2.CODEX_HOME ?? join35(homedir2(), ".codex"));
10944
+ const codexHome = resolve9(options.codexHome ?? env2.CODEX_HOME ?? join36(homedir2(), ".codex"));
10874
10945
  const projectDirectory = resolve9(options.projectDirectory ?? env2.OMO_CODEX_PROJECT ?? process.cwd());
10875
10946
  const binDir = resolveCodexInstallerBinDir({ binDir: options.binDir, codexHome, env: env2 });
10876
10947
  const runCommand = options.runCommand ?? defaultRunCommand;
@@ -10887,9 +10958,9 @@ async function runCodexInstaller(options = {}) {
10887
10958
  if (!gitBashResolution.found) {
10888
10959
  throw new Error(gitBashResolution.installHint);
10889
10960
  }
10890
- const codexPackageRoot = join35(repoRoot, "packages", "omo-codex");
10961
+ const codexPackageRoot = join36(repoRoot, "packages", "omo-codex");
10891
10962
  const marketplace = await readMarketplace(repoRoot, {
10892
- marketplacePath: join35(codexPackageRoot, "marketplace.json")
10963
+ marketplacePath: join36(codexPackageRoot, "marketplace.json")
10893
10964
  });
10894
10965
  const distributionManifest = await readDistributionManifest(repoRoot);
10895
10966
  const installed = [];
@@ -10923,6 +10994,7 @@ async function runCodexInstaller(options = {}) {
10923
10994
  if (marketplace.name === "sisyphuslabs" && plugin.name === "omo") {
10924
10995
  await stampLazyCodexPluginVersion({ pluginRoot: plugin.path, version: version2 });
10925
10996
  await writeLazyCodexInstallSnapshot({ pluginRoot: plugin.path, distributionManifest });
10997
+ await writeInstalledCodexBinDir({ pluginRoot: plugin.path, binDir });
10926
10998
  await removeGitBashHooksOffWindows({ platform, pluginRoot: plugin.path });
10927
10999
  }
10928
11000
  const links = await linkCachedPluginBins({ binDir, pluginRoot: plugin.path, platform });
@@ -10934,7 +11006,7 @@ async function runCodexInstaller(options = {}) {
10934
11006
  if (runtimeLink !== null)
10935
11007
  log(`Linked ${runtimeLink.name} -> ${runtimeLink.target}`);
10936
11008
  else
10937
- log(`Warning: skipped the omo runtime wrapper because ${join35(repoRoot, "dist", "cli", "index.js")} is missing; omo ulw-loop commands will be unavailable until a package shipping dist/cli is installed`);
11009
+ log(`Warning: skipped the omo-agent-toolkit runtime wrapper because ${join36(repoRoot, "dist", "cli", "index.js")} is missing; omo-agent-toolkit ulw-loop commands will be unavailable until a package shipping dist/cli is installed`);
10938
11010
  }
10939
11011
  pluginSources.push({ name: entry.name, sourcePath });
10940
11012
  installed.push(plugin);
@@ -10997,13 +11069,13 @@ async function runCodexInstaller(options = {}) {
10997
11069
  continue;
10998
11070
  log(`Warning: deferred legacy Codex LSP daemon cleanup for v${cleanup.version}: ${cleanup.reason}`);
10999
11071
  }
11000
- const marketplaceRoot = join35(codexHome, "plugins", "cache", marketplace.name);
11072
+ const marketplaceRoot = join36(codexHome, "plugins", "cache", marketplace.name);
11001
11073
  await writeCachedMarketplaceManifest({
11002
11074
  marketplaceName: marketplace.name,
11003
11075
  marketplaceRoot,
11004
11076
  plugins: installed
11005
11077
  });
11006
- const configPath = join35(codexHome, "config.toml");
11078
+ const configPath = join36(codexHome, "config.toml");
11007
11079
  await updateCodexConfig({
11008
11080
  configPath,
11009
11081
  repoRoot: codexPackageRoot,
@@ -11015,7 +11087,8 @@ async function runCodexInstaller(options = {}) {
11015
11087
  gitBashEnabled: platform === "win32" && gitBashResolution.found,
11016
11088
  trustedHookStates,
11017
11089
  agentConfigs: [...agentConfigs.values()].sort((left, right) => left.name.localeCompare(right.name)),
11018
- autonomousPermissions: options.autonomousPermissions !== false
11090
+ autonomousPermissions: options.autonomousPermissions !== false,
11091
+ ...options.reasoning === undefined ? {} : { reasoning: options.reasoning }
11019
11092
  });
11020
11093
  await seedAndMigrateOmoSot({ env: env2, log, repoRoot, runCommand });
11021
11094
  const projectCleanup = await repairProjectLocalCodexArtifactsBestEffort({
@@ -11063,7 +11136,7 @@ function findRepoRootFromImporter(importerDir) {
11063
11136
  for (let depth = 0;depth <= 7; depth += 1) {
11064
11137
  if (isRepoRootWithCodexPlugin(current))
11065
11138
  return current;
11066
- for (const wrapperPackageRoot of [join35(current, "node_modules", "oh-my-openagent"), join35(current, "oh-my-openagent")]) {
11139
+ for (const wrapperPackageRoot of [join36(current, "node_modules", "oh-my-openagent"), join36(current, "oh-my-openagent")]) {
11067
11140
  if (isRepoRootWithCodexPlugin(wrapperPackageRoot))
11068
11141
  return wrapperPackageRoot;
11069
11142
  }
@@ -11081,7 +11154,7 @@ function findRepoRoot(input) {
11081
11154
  return findRepoRootFromImporter(input.importerDir);
11082
11155
  }
11083
11156
  function isRepoRootWithCodexPlugin(repoRoot) {
11084
- return existsSync7(join35(repoRoot, "packages", "omo-codex", "plugin", ".codex-plugin", "plugin.json"));
11157
+ return existsSync7(join36(repoRoot, "packages", "omo-codex", "plugin", ".codex-plugin", "plugin.json"));
11085
11158
  }
11086
11159
  function codexMarketplaceSource(marketplaceRoot) {
11087
11160
  return { sourceType: "local", source: marketplaceRoot };
@@ -11268,7 +11341,7 @@ async function runDelegatedOmoCommand(parsed, options) {
11268
11341
  options.log(formatShellCommand(invocation.command, invocation.args));
11269
11342
  return;
11270
11343
  }
11271
- const env2 = invocation.delegatesToOmo ? { ...process.env, OMO_INVOCATION_NAME: "omo", ...invocation.env } : { ...process.env, ...invocation.env };
11344
+ const env2 = invocation.delegatesToOmo ? { ...process.env, OMO_INVOCATION_NAME: "omo-agent-toolkit", ...invocation.env } : { ...process.env, ...invocation.env };
11272
11345
  await options.runCommand(invocation.command, invocation.args, { cwd: options.cwd, env: env2 });
11273
11346
  }
11274
11347
  function buildDelegatedOmoInvocation(parsed) {
@@ -11288,7 +11361,7 @@ function buildDelegatedOmoInvocation(parsed) {
11288
11361
  args2.push(`--repo-root=${parsed.repoRoot}`);
11289
11362
  return { command: "npx", args: args2, delegatesToOmo: true };
11290
11363
  }
11291
- const args = ["--yes", "--package", "oh-my-openagent", "omo", parsed.command];
11364
+ const args = ["--yes", "--package", "oh-my-openagent", "omo-agent-toolkit", parsed.command];
11292
11365
  if (parsed.command === "cleanup") {
11293
11366
  args.push("--platform=codex", ...parsed.args);
11294
11367
  } else {
@@ -11394,12 +11467,12 @@ function shellQuote(value) {
11394
11467
  // packages/omo-codex/src/install/lazycodex-manual-update.ts
11395
11468
  import { spawn as spawn3, spawnSync as spawnSync3 } from "node:child_process";
11396
11469
  import { readFileSync as readFileSync4 } from "node:fs";
11397
- import { dirname as dirname11, join as join37 } from "node:path";
11470
+ import { dirname as dirname11, join as join38 } from "node:path";
11398
11471
  import { createInterface as createInterface2 } from "node:readline/promises";
11399
11472
  import { fileURLToPath } from "node:url";
11400
11473
 
11401
11474
  // packages/omo-codex/src/install/lazycodex-bun-global-paths.ts
11402
- import { join as join36 } from "node:path";
11475
+ import { join as join37 } from "node:path";
11403
11476
  function isBunGlobalEntrypointPath(invokedPath, env2) {
11404
11477
  if (typeof invokedPath !== "string" || invokedPath.trim().length === 0)
11405
11478
  return false;
@@ -11410,8 +11483,8 @@ function resolveBunGlobalRoots(env2) {
11410
11483
  const bunInstallRoot = env2.BUN_INSTALL?.trim();
11411
11484
  const homeRoot = env2.HOME?.trim();
11412
11485
  return [
11413
- ...bunInstallRoot ? [join36(bunInstallRoot, "bin"), join36(bunInstallRoot, "install", "global", "node_modules")] : [],
11414
- ...homeRoot ? [join36(homeRoot, ".bun", "bin"), join36(homeRoot, ".bun", "install", "global", "node_modules")] : []
11486
+ ...bunInstallRoot ? [join37(bunInstallRoot, "bin"), join37(bunInstallRoot, "install", "global", "node_modules")] : [],
11487
+ ...homeRoot ? [join37(homeRoot, ".bun", "bin"), join37(homeRoot, ".bun", "install", "global", "node_modules")] : []
11415
11488
  ].map(normalizePathForPrefix);
11416
11489
  }
11417
11490
  function normalizePathForPrefix(path2) {
@@ -11504,7 +11577,7 @@ function resolveCurrentVersion(env2) {
11504
11577
  if (env2.LAZYCODEX_CURRENT_VERSION?.trim())
11505
11578
  return env2.LAZYCODEX_CURRENT_VERSION.trim();
11506
11579
  const pluginRoot = dirname11(dirname11(fileURLToPath(import.meta.url)));
11507
- return readVersionManifest(resolveInstalledVersionPath(env2, pluginRoot)) ?? readVersionManifest(join37(pluginRoot, "..", "..", "..", "package.json")) ?? readVersionManifest(join37(pluginRoot, ".codex-plugin", "plugin.json"));
11580
+ return readVersionManifest(resolveInstalledVersionPath(env2, pluginRoot)) ?? readVersionManifest(join38(pluginRoot, "..", "..", "..", "package.json")) ?? readVersionManifest(join38(pluginRoot, ".codex-plugin", "plugin.json"));
11508
11581
  }
11509
11582
  function resolveLatestVersion(env2) {
11510
11583
  if (env2.LAZYCODEX_LATEST_VERSION?.trim())
@@ -11620,7 +11693,7 @@ function compareVersions(left, right) {
11620
11693
  function resolveInstalledVersionPath(env2, pluginRoot) {
11621
11694
  if (env2.LAZYCODEX_INSTALLED_VERSION_FILE?.trim())
11622
11695
  return env2.LAZYCODEX_INSTALLED_VERSION_FILE.trim();
11623
- return join37(pluginRoot, INSTALLED_VERSION_FILE);
11696
+ return join38(pluginRoot, INSTALLED_VERSION_FILE);
11624
11697
  }
11625
11698
  function readVersionManifest(path2) {
11626
11699
  try {
@@ -11636,15 +11709,15 @@ function readVersionManifest(path2) {
11636
11709
  }
11637
11710
  }
11638
11711
  // packages/omo-codex/src/install/codex-git-bash-mcp-env.ts
11639
- import { readFile as readFile21, writeFile as writeFile12 } from "node:fs/promises";
11640
- import { join as join38 } from "node:path";
11712
+ import { readFile as readFile22, writeFile as writeFile13 } from "node:fs/promises";
11713
+ import { join as join39 } from "node:path";
11641
11714
  var GIT_BASH_ENV_KEY2 = "OMO_CODEX_GIT_BASH_PATH";
11642
11715
  var CODEGRAPH_RELATIVE_ARGS2 = new Set(["components/codegraph/dist/serve.js", "./components/codegraph/dist/serve.js"]);
11643
11716
  async function stampGitBashMcpEnv(input) {
11644
- const manifestPath = join38(input.pluginRoot, ".mcp.json");
11717
+ const manifestPath = join39(input.pluginRoot, ".mcp.json");
11645
11718
  if (!await fileExistsStrict(manifestPath))
11646
11719
  return false;
11647
- const parsed = JSON.parse(await readFile21(manifestPath, "utf8"));
11720
+ const parsed = JSON.parse(await readFile22(manifestPath, "utf8"));
11648
11721
  if (!isPlainRecord(parsed) || !isPlainRecord(parsed["mcpServers"]))
11649
11722
  return false;
11650
11723
  let changed = stampCodegraphMcpPath(parsed["mcpServers"], input.pluginRoot);
@@ -11662,7 +11735,7 @@ async function stampGitBashMcpEnv(input) {
11662
11735
  }
11663
11736
  if (!changed)
11664
11737
  return false;
11665
- await writeFile12(manifestPath, `${JSON.stringify(parsed, null, "\t")}
11738
+ await writeFile13(manifestPath, `${JSON.stringify(parsed, null, "\t")}
11666
11739
  `);
11667
11740
  return true;
11668
11741
  }
@@ -11674,7 +11747,7 @@ function stampCodegraphMcpPath(mcpServers, pluginRoot) {
11674
11747
  const entrypoint = args[0];
11675
11748
  if (typeof entrypoint !== "string" || !CODEGRAPH_RELATIVE_ARGS2.has(entrypoint))
11676
11749
  return false;
11677
- codegraphServer["args"] = [join38(pluginRoot, "components", "codegraph", "dist", "serve.js"), ...args.slice(1)];
11750
+ codegraphServer["args"] = [join39(pluginRoot, "components", "codegraph", "dist", "serve.js"), ...args.slice(1)];
11678
11751
  return true;
11679
11752
  }
11680
11753
 
@@ -11699,7 +11772,7 @@ async function runLazyCodexInstallLocalCli(input) {
11699
11772
  return 0;
11700
11773
  }
11701
11774
  if (parsed.kind === "version") {
11702
- const packageJson = JSON.parse(await readFile22(join39(input.defaultRepoRoot, "package.json"), "utf8"));
11775
+ const packageJson = JSON.parse(await readFile23(join40(input.defaultRepoRoot, "package.json"), "utf8"));
11703
11776
  const version2 = typeof packageJson.version === "string" ? packageJson.version : "unknown";
11704
11777
  input.log(`lazycodex-ai ${version2}`);
11705
11778
  return 0;
@@ -153,7 +153,7 @@ test("#given dry-run cleanup path needs quoting #when running the Node installer
153
153
  ).trim();
154
154
 
155
155
  // then
156
- assert.equal(output, "npx --yes --package oh-my-openagent omo cleanup --platform=codex --project '/tmp/lazy codex'\\''s qa'");
156
+ assert.equal(output, "npx --yes --package oh-my-openagent omo-agent-toolkit cleanup --platform=codex --project '/tmp/lazy codex'\\''s qa'");
157
157
  });
158
158
 
159
159
  test("#given dry-run cleanup #when running the Node installer entrypoint #then prints delegated codex cleanup command", () => {
@@ -168,7 +168,7 @@ test("#given dry-run cleanup #when running the Node installer entrypoint #then p
168
168
  ).trim();
169
169
 
170
170
  // then
171
- assert.equal(output, "npx --yes --package oh-my-openagent omo cleanup --platform=codex --project /tmp/lazycodex-qa");
171
+ assert.equal(output, "npx --yes --package oh-my-openagent omo-agent-toolkit cleanup --platform=codex --project /tmp/lazycodex-qa");
172
172
  });
173
173
 
174
174
  test("#given dry-run uninstall #when running the Node installer entrypoint #then prints delegated codex cleanup command", () => {
@@ -183,7 +183,7 @@ test("#given dry-run uninstall #when running the Node installer entrypoint #then
183
183
  ).trim();
184
184
 
185
185
  // then
186
- assert.equal(output, "npx --yes --package oh-my-openagent omo cleanup --platform=codex --project /tmp/lazycodex-qa");
186
+ assert.equal(output, "npx --yes --package oh-my-openagent omo-agent-toolkit cleanup --platform=codex --project /tmp/lazycodex-qa");
187
187
  });
188
188
 
189
189
  test("#given stale lazycodex version #when running update dry-run #then prints the latest installer command", () => {
@@ -340,7 +340,7 @@ test("#given dry-run ulw-loop #when running the Node installer entrypoint #then
340
340
  }).trim();
341
341
 
342
342
  // then
343
- assert.equal(output, "npx --yes --package oh-my-openagent omo ulw-loop help");
343
+ assert.equal(output, "npx --yes --package oh-my-openagent omo-agent-toolkit ulw-loop help");
344
344
  });
345
345
 
346
346
  test("#given the invoking argv path disappears #when importing the Node installer module #then the entrypoint guard does not throw", () => {
@@ -62,8 +62,10 @@ test("#given custom CODEX_HOME and PATH without omo #when installing locally wit
62
62
  });
63
63
 
64
64
  assert.equal(result.installed.length, 1);
65
- const wrapper = await readFile(join(codexHome, "bin", "omo"), "utf8");
65
+ const wrapper = await readFile(join(codexHome, "bin", "omo-agent-toolkit"), "utf8");
66
66
  assert.match(wrapper, /OMO_GENERATED_RUNTIME_WRAPPER/);
67
+ assert.match(wrapper, /export OMO_INVOCATION_NAME=omo-agent-toolkit/);
68
+ assert.match(wrapper, /export OMO_EDITION=codex/);
67
69
  assert.match(
68
70
  wrapper,
69
71
  new RegExp(escapeRegExp(escapePosixDoubleQuoted(toPosixPath(join(repoRoot, "dist", "cli", "index.js"))))),
@@ -98,9 +100,10 @@ test("#given repoRoot without root CLI dist #when installing locally #then warns
98
100
 
99
101
  const cliPath = join(repoRoot, "dist", "cli", "index.js");
100
102
  assert.ok(
101
- logs.some((line) => line.includes("omo runtime wrapper") && line.includes(cliPath)),
103
+ logs.some((line) => line.includes("omo-agent-toolkit runtime wrapper") && line.includes(cliPath)),
102
104
  `expected a warning naming the missing ${cliPath}; got:\n${logs.join("\n")}`,
103
105
  );
106
+ await assert.rejects(readFile(join(codexHome, "bin", "omo-agent-toolkit"), "utf8"));
104
107
  await assert.rejects(readFile(join(codexHome, "bin", "omo"), "utf8"));
105
108
  });
106
109
 
@@ -1,5 +1,23 @@
1
+ import { existsSync } from "node:fs";
1
2
  import { fileURLToPath } from "node:url";
2
3
 
4
+ // Bundlers inline this module, so import.meta.url points at the consuming bundle, and the
5
+ // distance to the skills directory depends on where that bundle landed:
6
+ // dist/index.js -> dist/skills (sibling)
7
+ // dist/cli/index.js -> dist/skills (parent)
8
+ // dist/cli-node/index.js -> dist/skills (parent)
9
+ // plugins/omo/dist/cli/ -> plugins/omo/skills (grandparent; the Codex marketplace
10
+ // layout, where `plugin/` is copied to
11
+ // `plugins/omo/` and the root CLI
12
+ // runtimes are bundled into
13
+ // `plugins/omo/dist/cli`)
14
+ // Probes run nearest-first so a closer skills directory always wins, and the sibling path is
15
+ // returned unchanged when nothing matches, keeping the previous not-found behavior.
16
+ const SKILLS_PROBE_SPECIFIERS = ["./skills/", "../skills/", "../../skills/"];
17
+
3
18
  export function sharedSkillsRootPath() {
4
- return fileURLToPath(new URL("./skills/", import.meta.url));
19
+ const candidates = SKILLS_PROBE_SPECIFIERS.map((specifier) =>
20
+ fileURLToPath(new URL(specifier, import.meta.url)),
21
+ );
22
+ return candidates.find((candidate) => existsSync(candidate)) ?? candidates[0];
5
23
  }
@@ -1 +1 @@
1
- upstream: https://github.com/code-yeongyu/ast-grep-skill @ 3148c69 (ast-grep 0.43.0). Vendored as a sync; do not fork-drift.
1
+ upstream: https://github.com/code-yeongyu/ast-grep-skill @ 3148c69 (ast-grep 0.45.0). Vendored as a sync; do not fork-drift.