lazycodex-ai 5.0.0-beta.42 → 5.0.0-beta.44

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 (60) hide show
  1. package/README.ja.md +2 -2
  2. package/README.ko.md +4 -4
  3. package/README.md +4 -4
  4. package/README.ru.md +2 -2
  5. package/README.zh-cn.md +2 -2
  6. package/dist/cli/index.js +389 -310
  7. package/dist/cli-node/index.js +389 -310
  8. package/package.json +3 -1
  9. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  10. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  11. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  12. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  13. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  14. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  15. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  16. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  17. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  18. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
  19. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  20. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  21. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  22. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  23. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  24. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  25. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  26. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  27. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  28. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  29. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +2 -2
  30. package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
  31. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
  32. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  33. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  34. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  35. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  36. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  37. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  38. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  39. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  40. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  41. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  42. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  43. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  44. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  45. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  46. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  47. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
  48. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  49. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-ulw-execute-continuation.json +1 -1
  50. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  51. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  52. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  53. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  54. package/packages/omo-codex/plugin/package-lock.json +12 -12
  55. package/packages/omo-codex/plugin/package.json +1 -1
  56. package/packages/omo-codex/plugin/test/sync-skills-codex-compatibility.test.mjs +47 -2
  57. package/packages/omo-codex/plugin/test/sync-skills.test.mjs +4 -0
  58. package/packages/omo-codex/scripts/install-dist/install-local.mjs +32 -50
  59. package/packages/shared-skills/skill-source-filter.d.ts +16 -0
  60. package/packages/shared-skills/skill-source-filter.mjs +44 -0
package/dist/cli/index.js CHANGED
@@ -54,7 +54,7 @@ var package_default;
54
54
  var init_package = __esm(() => {
55
55
  package_default = {
56
56
  name: "oh-my-opencode",
57
- version: "5.0.0-beta.42",
57
+ version: "5.0.0-beta.44",
58
58
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
59
59
  main: "./dist/index.js",
60
60
  types: "dist/index.d.ts",
@@ -144,6 +144,7 @@ var init_package = __esm(() => {
144
144
  "packages/omo-codex/plugin/components/telemetry/dist/cli.js",
145
145
  "packages/omo-codex/plugin/components/ultrawork/dist/cli.js",
146
146
  "packages/omo-codex/plugin/components/ulw-loop/dist/cli.js",
147
+ "packages/prompts-core/prompts/ultrawork/codex.md",
147
148
  "packages/omo-codex/plugin/.codex-plugin",
148
149
  "!packages/omo-codex/plugin/node_modules",
149
150
  "!packages/omo-codex/plugin/**/node_modules",
@@ -186,14 +187,14 @@ var init_package = __esm(() => {
186
187
  prepare: "bun run build",
187
188
  postinstall: "node postinstall.mjs",
188
189
  prepublishOnly: "bun run clean && bun run build:lsp-tools-mcp && bun run build:lsp-daemon && bun run build",
189
- "test:model-capabilities": "bun test packages/model-core/src/model-capability-aliases.test.ts packages/model-core/src/model-capability-guardrails.test.ts packages/model-core/src/model-capabilities.test.ts packages/omo-opencode/src/cli/doctor/checks/model-resolution.test.ts --bail",
190
+ "test:model-capabilities": "bun test --timeout 20000 packages/model-core/src/model-capability-aliases.test.ts packages/model-core/src/model-capability-guardrails.test.ts packages/model-core/src/model-capabilities.test.ts packages/omo-opencode/src/cli/doctor/checks/model-resolution.test.ts --bail",
190
191
  typecheck: "tsgo --noEmit && bun run typecheck:script && bun run typecheck:packages",
191
192
  "typecheck:packages": "tsgo --noEmit -p packages/rules-engine/tsconfig.json && tsgo --noEmit -p packages/delegate-core/tsconfig.json && tsgo --noEmit -p packages/mcp-stdio-core/tsconfig.json && tsgo --noEmit -p packages/mcp-client-core/tsconfig.json && tsgo --noEmit -p packages/git-bash-mcp/tsconfig.json && tsgo --noEmit -p packages/ast-grep-mcp/tsconfig.json && tsgo --noEmit -p packages/lsp-core/tsconfig.json && tsgo --noEmit -p packages/utils/tsconfig.json && tsgo --noEmit -p packages/model-core/tsconfig.json && tsgo --noEmit -p packages/omo-config-core/tsconfig.json && tsgo --noEmit -p packages/prompts-core/tsconfig.json && tsgo --noEmit -p packages/comment-checker-core/tsconfig.json && tsgo --noEmit -p packages/hashline-core/tsconfig.json && tsgo --noEmit -p packages/tmux-core/tsconfig.json && tsgo --noEmit -p packages/team-core/tsconfig.json && tsgo --noEmit -p packages/openclaw-core/tsconfig.json && tsgo --noEmit -p packages/boulder-state/tsconfig.json && tsgo --noEmit -p packages/memory-core/tsconfig.json && tsgo --noEmit -p packages/telemetry-core/tsconfig.json && tsgo --noEmit -p packages/claude-code-compat-core/tsconfig.json && tsgo --noEmit -p packages/skills-loader-core/tsconfig.json && tsgo --noEmit -p packages/agents-md-core/tsconfig.json && tsgo --noEmit -p packages/omo-codex/plugin/shared/tsconfig.json && tsgo --noEmit -p packages/omo-codex/tsconfig.json && tsgo --noEmit -p packages/omo-senpi/tsconfig.json && tsgo --noEmit -p packages/senpi-task/tsconfig.json && tsgo --noEmit -p packages/pi-goal/tsconfig.json && tsgo --noEmit -p packages/pi-webfetch/tsconfig.json && tsgo --noEmit -p packages/omo-opencode/tsconfig.json && tsgo --noEmit -p packages/omo-native/tsconfig.json",
192
193
  "typecheck:script": "tsgo --noEmit -p script/tsconfig.json",
193
- test: "bun test",
194
- "test:codex": "bun run build:codex-install && bun run build:git-bash-mcp && bun run build:lsp-tools-mcp && bun run build:lsp-daemon && npm --prefix packages/lsp-tools-mcp test && npm --prefix packages/omo-codex/plugin ci && npm --prefix packages/omo-codex/plugin/components/ulw-loop test && bun run --cwd packages/omo-codex/plugin build && node scripts/check-third-party-notices.mjs --ship && bun test packages/omo-opencode/src/cli/cli-installer.platform.test.ts packages/omo-codex/src/install/codex-cache.test.ts packages/omo-codex/src/install/codex-cleanup.test.ts packages/omo-codex/src/install/codex-config-agent-cleanup.test.ts packages/omo-codex/src/install/codex-config-autonomous-features.test.ts packages/omo-codex/src/install/codex-config-reasoning.test.ts packages/omo-codex/src/install/codex-config-toml.test.ts packages/omo-codex/src/install/codex-project-local-cleanup.test.ts packages/omo-codex/src/install/install-codex-project-local-cleanup.test.ts packages/omo-codex/src/install/install-codex.test.ts packages/omo-codex/src/install/install-codex-packaged.test.ts packages/omo-codex/src/install/link-cached-plugin-agents.test.ts packages/omo-codex/src/**/*.test.ts packages/utils/src/jsonc-parser.test.ts packages/utils/src/frontmatter.test.ts packages/hashline-core/src/hash-computation.test.ts packages/hashline-core/src/smoke-untested-modules.test.ts packages/rules-engine/src/index.test.ts packages/rules-engine/src/security-boundary.test.ts packages/agents-md-core/src/injector.test.ts packages/omo-codex/plugin/components/lsp/test/package-smoke.test.ts && node --test packages/omo-codex/plugin/test/*.test.mjs packages/omo-codex/scripts/install-cache-copy.test.mjs packages/omo-codex/scripts/install-cli-args.test.mjs packages/omo-codex/scripts/install-delegated-command.test.mjs packages/omo-codex/scripts/install-config-autonomous-features.test.mjs packages/omo-codex/scripts/install-config-autonomous.test.mjs packages/omo-codex/scripts/install-config-reasoning.test.mjs packages/omo-codex/scripts/install-config.test.mjs packages/omo-codex/scripts/install-hook-targets.test.mjs packages/omo-codex/scripts/install-project-local-cleanup.test.mjs packages/omo-codex/scripts/install-lazycodex-version-stamp.test.mjs packages/omo-codex/scripts/install-local-entrypoint.test.mjs packages/omo-codex/scripts/install-local-git-bash-preflight.test.mjs packages/omo-codex/scripts/install-local.test.mjs packages/omo-codex/scripts/install-marketplace-cache.test.mjs packages/omo-codex/scripts/install-mcp-context7-runtime.test.mjs packages/omo-codex/scripts/install-mcp-runtime.test.mjs packages/omo-codex/scripts/install-packaged-local.test.mjs packages/omo-codex/scripts/install-generated-bundle.test.mjs packages/omo-codex/scripts/install-agent-links.test.mjs packages/omo-codex/scripts/install-bin-links.test.mjs",
194
+ test: "bun test --timeout 20000",
195
+ "test:codex": "bun run build:codex-install && bun run build:git-bash-mcp && bun run build:lsp-tools-mcp && bun run build:lsp-daemon && npm --prefix packages/lsp-tools-mcp test && npm --prefix packages/omo-codex/plugin ci && npm --prefix packages/omo-codex/plugin/components/ulw-loop test && bun run --cwd packages/omo-codex/plugin build && node scripts/check-third-party-notices.mjs --ship && bun test --timeout 20000 packages/omo-opencode/src/cli/cli-installer.platform.test.ts packages/omo-codex/src/install/codex-cache.test.ts packages/omo-codex/src/install/codex-cleanup.test.ts packages/omo-codex/src/install/codex-config-agent-cleanup.test.ts packages/omo-codex/src/install/codex-config-autonomous-features.test.ts packages/omo-codex/src/install/codex-config-reasoning.test.ts packages/omo-codex/src/install/codex-config-toml.test.ts packages/omo-codex/src/install/codex-project-local-cleanup.test.ts packages/omo-codex/src/install/install-codex-project-local-cleanup.test.ts packages/omo-codex/src/install/install-codex.test.ts packages/omo-codex/src/install/install-codex-packaged.test.ts packages/omo-codex/src/install/link-cached-plugin-agents.test.ts packages/omo-codex/src/**/*.test.ts packages/utils/src/jsonc-parser.test.ts packages/utils/src/frontmatter.test.ts packages/hashline-core/src/hash-computation.test.ts packages/hashline-core/src/smoke-untested-modules.test.ts packages/rules-engine/src/index.test.ts packages/rules-engine/src/security-boundary.test.ts packages/agents-md-core/src/injector.test.ts packages/omo-codex/plugin/components/lsp/test/package-smoke.test.ts && node --test packages/omo-codex/plugin/test/*.test.mjs packages/omo-codex/scripts/install-cache-copy.test.mjs packages/omo-codex/scripts/install-cli-args.test.mjs packages/omo-codex/scripts/install-delegated-command.test.mjs packages/omo-codex/scripts/install-config-autonomous-features.test.mjs packages/omo-codex/scripts/install-config-autonomous.test.mjs packages/omo-codex/scripts/install-config-reasoning.test.mjs packages/omo-codex/scripts/install-config.test.mjs packages/omo-codex/scripts/install-hook-targets.test.mjs packages/omo-codex/scripts/install-project-local-cleanup.test.mjs packages/omo-codex/scripts/install-lazycodex-version-stamp.test.mjs packages/omo-codex/scripts/install-local-entrypoint.test.mjs packages/omo-codex/scripts/install-local-git-bash-preflight.test.mjs packages/omo-codex/scripts/install-local.test.mjs packages/omo-codex/scripts/install-marketplace-cache.test.mjs packages/omo-codex/scripts/install-mcp-context7-runtime.test.mjs packages/omo-codex/scripts/install-mcp-runtime.test.mjs packages/omo-codex/scripts/install-packaged-local.test.mjs packages/omo-codex/scripts/install-generated-bundle.test.mjs packages/omo-codex/scripts/install-agent-links.test.mjs packages/omo-codex/scripts/install-bin-links.test.mjs",
195
196
  "test:fast": "bun run script/test-fast.ts",
196
- "test:senpi": "bun run build:senpi-plugin && tsgo --noEmit -p packages/omo-senpi/tsconfig.json && bun test packages/omo-senpi && bun test ./.agents/skills/senpi-qa/scripts/resolve-evidence-dir.test.mjs",
197
+ "test:senpi": "bun run build:senpi-plugin && tsgo --noEmit -p packages/omo-senpi/tsconfig.json && bun test --timeout 20000 packages/omo-senpi && bun test ./.agents/skills/senpi-qa/scripts/resolve-evidence-dir.test.mjs",
197
198
  "test:windows-codex": "bun run test:codex",
198
199
  "build:git-bash-mcp": "bun run --cwd packages/git-bash-mcp build",
199
200
  "build:ast-grep-mcp": "bun run --cwd packages/ast-grep-mcp build"
@@ -237,7 +238,7 @@ var init_package = __esm(() => {
237
238
  zod: "^4.4.3"
238
239
  },
239
240
  devDependencies: {
240
- "@code-yeongyu/senpi": "2026.9.4-3",
241
+ "@code-yeongyu/senpi": "2026.9.5-3",
241
242
  "@oh-my-opencode/agents-md-core": "workspace:*",
242
243
  "@oh-my-opencode/ast-grep-mcp": "workspace:*",
243
244
  "@oh-my-opencode/boulder-state": "workspace:*",
@@ -278,18 +279,18 @@ var init_package = __esm(() => {
278
279
  typescript: "^7.0.2"
279
280
  },
280
281
  optionalDependencies: {
281
- "oh-my-opencode-darwin-arm64": "5.0.0-beta.42",
282
- "oh-my-opencode-darwin-x64": "5.0.0-beta.42",
283
- "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.42",
284
- "oh-my-opencode-linux-arm64": "5.0.0-beta.42",
285
- "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.42",
286
- "oh-my-opencode-linux-x64": "5.0.0-beta.42",
287
- "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.42",
288
- "oh-my-opencode-linux-x64-musl": "5.0.0-beta.42",
289
- "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.42",
290
- "oh-my-opencode-windows-arm64": "5.0.0-beta.42",
291
- "oh-my-opencode-windows-x64": "5.0.0-beta.42",
292
- "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.42"
282
+ "oh-my-opencode-darwin-arm64": "5.0.0-beta.44",
283
+ "oh-my-opencode-darwin-x64": "5.0.0-beta.44",
284
+ "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.44",
285
+ "oh-my-opencode-linux-arm64": "5.0.0-beta.44",
286
+ "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.44",
287
+ "oh-my-opencode-linux-x64": "5.0.0-beta.44",
288
+ "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.44",
289
+ "oh-my-opencode-linux-x64-musl": "5.0.0-beta.44",
290
+ "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.44",
291
+ "oh-my-opencode-windows-arm64": "5.0.0-beta.44",
292
+ "oh-my-opencode-windows-x64": "5.0.0-beta.44",
293
+ "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.44"
293
294
  },
294
295
  overrides: {
295
296
  "@earendil-works/pi-agent-core": "0.84.2",
@@ -7126,7 +7127,7 @@ var init_agent_model_requirements = __esm(() => {
7126
7127
  fallbackChain: [
7127
7128
  {
7128
7129
  providers: ["anthropic", "github-copilot", "opencode"],
7129
- model: "claude-fable-5",
7130
+ model: "claude-fable-5-1",
7130
7131
  variant: "xhigh"
7131
7132
  },
7132
7133
  {
@@ -7152,10 +7153,9 @@ var init_agent_model_requirements = __esm(() => {
7152
7153
  },
7153
7154
  momus: {
7154
7155
  fallbackChain: [
7155
- { providers: ["openai", "openai-codex"], model: "gpt-5.6-terra", variant: "high" },
7156
- { providers: ["github-copilot"], model: "gpt-5.6-terra", variant: "high" },
7157
- { providers: ["openai", "openai-codex", "opencode"], model: "gpt-5.6-sol", variant: "xhigh" },
7158
- { providers: ["github-copilot"], model: "gpt-5.6-sol", variant: "high" },
7156
+ { providers: ["openai", "openai-codex"], model: "gpt-6-astra", variant: "xhigh" },
7157
+ { providers: ["github-copilot"], model: "gpt-6-astra", variant: "high" },
7158
+ { providers: ["openai", "openai-codex", "opencode"], model: "gpt-6-astra", variant: "high" },
7159
7159
  {
7160
7160
  providers: ["anthropic", "github-copilot", "opencode"],
7161
7161
  model: "claude-opus-5",
@@ -7207,6 +7207,11 @@ var init_category_model_requirements = __esm(() => {
7207
7207
  CATEGORY_MODEL_REQUIREMENTS = {
7208
7208
  "visual-engineering": {
7209
7209
  fallbackChain: [
7210
+ {
7211
+ providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
7212
+ model: "claude-fable-5-1",
7213
+ variant: "max"
7214
+ },
7210
7215
  {
7211
7216
  providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
7212
7217
  model: "claude-opus-5",
@@ -7216,17 +7221,14 @@ var init_category_model_requirements = __esm(() => {
7216
7221
  providers: ["kimi-for-coding", "moonshotai", "opencode-go", "opencode"],
7217
7222
  model: "kimi-k3",
7218
7223
  variant: "max"
7219
- },
7220
- { providers: ["zai-coding-plan", "opencode-go"], model: "glm-5.2", variant: "max" },
7221
- {
7222
- providers: ["openai", "openai-codex", "github-copilot", "opencode"],
7223
- model: "gpt-5.6-sol",
7224
- variant: "medium"
7225
7224
  }
7226
7225
  ]
7227
7226
  },
7228
7227
  ultrabrain: {
7229
7228
  fallbackChain: [
7229
+ { providers: ["openai", "openai-codex"], model: "gpt-6-astra", variant: "max" },
7230
+ { providers: ["github-copilot"], model: "gpt-6-astra", variant: "max" },
7231
+ { providers: ["openai", "openai-codex", "opencode"], model: "gpt-6-astra", variant: "max" },
7230
7232
  { providers: ["openai", "openai-codex"], model: "gpt-5.6-sol", variant: "max" },
7231
7233
  { providers: ["github-copilot"], model: "gpt-5.6-sol", variant: "max" },
7232
7234
  { providers: ["openai", "openai-codex", "opencode"], model: "gpt-5.6-sol", variant: "max" }
@@ -7234,6 +7236,11 @@ var init_category_model_requirements = __esm(() => {
7234
7236
  },
7235
7237
  deep: {
7236
7238
  fallbackChain: [
7239
+ {
7240
+ providers: ["openai", "openai-codex", "github-copilot", "opencode"],
7241
+ model: "gpt-6-astra",
7242
+ variant: "high"
7243
+ },
7237
7244
  {
7238
7245
  providers: ["openai", "openai-codex", "github-copilot", "opencode"],
7239
7246
  model: "gpt-5.6-sol",
@@ -7245,8 +7252,8 @@ var init_category_model_requirements = __esm(() => {
7245
7252
  fallbackChain: [
7246
7253
  {
7247
7254
  providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
7248
- model: "claude-fable-5",
7249
- variant: "xhigh"
7255
+ model: "claude-fable-5-1",
7256
+ variant: "max"
7250
7257
  },
7251
7258
  {
7252
7259
  providers: ["kimi-for-coding", "moonshotai", "opencode-go", "opencode"],
@@ -7304,6 +7311,11 @@ var init_category_model_requirements = __esm(() => {
7304
7311
  },
7305
7312
  "unspecified-high": {
7306
7313
  fallbackChain: [
7314
+ {
7315
+ providers: ["openai", "openai-codex", "github-copilot", "opencode"],
7316
+ model: "gpt-6-astra",
7317
+ variant: "high"
7318
+ },
7307
7319
  {
7308
7320
  providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
7309
7321
  model: "claude-opus-5",
@@ -7319,17 +7331,16 @@ var init_category_model_requirements = __esm(() => {
7319
7331
  },
7320
7332
  writing: {
7321
7333
  fallbackChain: [
7322
- {
7323
- providers: ["kimi-for-coding", "moonshotai", "opencode-go", "opencode"],
7324
- model: "kimi-k3",
7325
- variant: "low"
7326
- },
7327
7334
  {
7328
7335
  providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
7329
- model: "claude-opus-5",
7330
- variant: "low"
7336
+ model: "claude-fable-5-1",
7337
+ variant: "medium"
7331
7338
  },
7332
- { providers: ["google", "github-copilot", "opencode"], model: "gemini-3.6-flash" }
7339
+ {
7340
+ providers: ["kimi-for-coding", "moonshotai", "opencode-go", "opencode"],
7341
+ model: "kimi-k3",
7342
+ variant: "max"
7343
+ }
7333
7344
  ]
7334
7345
  }
7335
7346
  };
@@ -7432,11 +7443,11 @@ var init_model_capability_aliases = __esm(() => {
7432
7443
  EXACT_ALIAS_RULES_BY_MODEL = new Map(EXACT_ALIAS_RULES.map((rule) => [rule.aliasModelID, rule]));
7433
7444
  PATTERN_ALIAS_RULES = [
7434
7445
  {
7435
- ruleID: "openai-gpt-5.6-fast-service-tier-alias",
7436
- description: "Normalizes OpenCode's OpenAI GPT-5.6 fast service-tier IDs to canonical snapshot IDs.",
7446
+ ruleID: "openai-gpt-fast-service-tier-alias",
7447
+ description: "Normalizes OpenCode's OpenAI GPT fast service-tier IDs to canonical snapshot IDs.",
7437
7448
  providerIDs: ["openai"],
7438
7449
  allowedSubproviderHosts: ["vercel"],
7439
- match: (normalizedModelID) => /^gpt-5\.6-(?:sol|terra|luna)-fast$/.test(normalizedModelID),
7450
+ match: (normalizedModelID) => /^(?:gpt-5\.6-(?:sol|terra|luna)|gpt-6-astra)-fast$/.test(normalizedModelID),
7440
7451
  canonicalize: (normalizedModelID) => normalizedModelID.slice(0, -"-fast".length)
7441
7452
  },
7442
7453
  {
@@ -7576,6 +7587,14 @@ var init_model_capability_heuristics = __esm(() => {
7576
7587
  reasoningEfforts: ["none", "minimal", "low", "medium", "high"],
7577
7588
  supportsTemperature: false
7578
7589
  },
7590
+ {
7591
+ family: "gpt-6",
7592
+ includes: ["gpt-6"],
7593
+ variants: ["low", "medium", "high", "xhigh", "max"],
7594
+ reasoningEfforts: ["low", "medium", "high", "xhigh", "max"],
7595
+ reasoningEffortAliases: { none: "low", minimal: "low" },
7596
+ supportsTemperature: false
7597
+ },
7579
7598
  {
7580
7599
  family: "gpt-5",
7581
7600
  includes: ["gpt-5"],
@@ -7941,6 +7960,37 @@ var init_supplemental_entries = __esm(() => {
7941
7960
  output: 262144
7942
7961
  }
7943
7962
  },
7963
+ "claude-fable-5-1": {
7964
+ id: "claude-fable-5-1",
7965
+ family: "claude-fable",
7966
+ reasoning: true,
7967
+ temperature: false,
7968
+ toolCall: true,
7969
+ modalities: {
7970
+ input: ["text", "image", "pdf"],
7971
+ output: ["text"]
7972
+ },
7973
+ limit: {
7974
+ context: 1e6,
7975
+ output: 128000
7976
+ }
7977
+ },
7978
+ "gpt-6-astra": {
7979
+ id: "gpt-6-astra",
7980
+ family: "gpt",
7981
+ reasoning: true,
7982
+ temperature: false,
7983
+ toolCall: true,
7984
+ modalities: {
7985
+ input: ["text", "image"],
7986
+ output: ["text"]
7987
+ },
7988
+ limit: {
7989
+ context: 1050000,
7990
+ input: 922000,
7991
+ output: 128000
7992
+ }
7993
+ },
7944
7994
  "gpt-5.6-sol": {
7945
7995
  id: "gpt-5.6-sol",
7946
7996
  family: "gpt",
@@ -8016,8 +8066,8 @@ var init_supplemental_entries = __esm(() => {
8016
8066
  output: ["text"]
8017
8067
  },
8018
8068
  limit: {
8019
- context: 400000,
8020
- input: 272000,
8069
+ context: 1050000,
8070
+ input: 922000,
8021
8071
  output: 128000
8022
8072
  }
8023
8073
  },
@@ -8281,7 +8331,7 @@ function getOverride(modelID) {
8281
8331
  function getProviderOverride(providerID, modelID) {
8282
8332
  if (providerID.trim().toLowerCase() !== "github-copilot")
8283
8333
  return;
8284
- return GITHUB_COPILOT_GPT5_MODEL.test(normalizeLookupModelID2(modelID)) ? GITHUB_COPILOT_GPT5_OVERRIDE : undefined;
8334
+ return GITHUB_COPILOT_GPT_MODEL.test(normalizeLookupModelID2(modelID)) ? GITHUB_COPILOT_GPT_OVERRIDE : undefined;
8285
8335
  }
8286
8336
  function stripSameProviderPrefix(providerID, modelID) {
8287
8337
  const prefix = `${providerID.trim()}/`;
@@ -8420,14 +8470,14 @@ function getModelCapabilities(input) {
8420
8470
  }
8421
8471
  };
8422
8472
  }
8423
- var MODEL_ID_OVERRIDES, GITHUB_COPILOT_GPT5_MODEL, GITHUB_COPILOT_GPT5_OVERRIDE;
8473
+ var MODEL_ID_OVERRIDES, GITHUB_COPILOT_GPT_MODEL, GITHUB_COPILOT_GPT_OVERRIDE;
8424
8474
  var init_get_model_capabilities = __esm(() => {
8425
8475
  init_model_capability_aliases();
8426
8476
  init_model_capability_heuristics();
8427
8477
  init_model_string_parser();
8428
8478
  MODEL_ID_OVERRIDES = {};
8429
- GITHUB_COPILOT_GPT5_MODEL = /(?:^|\/)gpt-5(?:[.-]|$)/;
8430
- GITHUB_COPILOT_GPT5_OVERRIDE = {
8479
+ GITHUB_COPILOT_GPT_MODEL = /(?:^|\/)gpt-[56](?:[.-]|$)/;
8480
+ GITHUB_COPILOT_GPT_OVERRIDE = {
8431
8481
  variants: ["low", "medium", "high"],
8432
8482
  reasoningEfforts: ["none", "minimal", "low", "medium", "high"]
8433
8483
  };
@@ -8442,6 +8492,9 @@ var init_model_capabilities = __esm(() => {
8442
8492
  // packages/model-core/src/context-limit-resolver.ts
8443
8493
  var init_context_limit_resolver = () => {};
8444
8494
 
8495
+ // packages/model-core/src/context-overflow.ts
8496
+ var init_context_overflow = () => {};
8497
+
8445
8498
  // packages/model-core/src/model-capabilities-snapshot.ts
8446
8499
  function isRecord3(value) {
8447
8500
  return typeof value === "object" && value !== null && !Array.isArray(value);
@@ -8578,6 +8631,7 @@ var init_src2 = __esm(() => {
8578
8631
  init_runtime_fallback_model();
8579
8632
  init_model_capabilities();
8580
8633
  init_context_limit_resolver();
8634
+ init_context_overflow();
8581
8635
  });
8582
8636
 
8583
8637
  // packages/omo-opencode/src/shared/model-sanitizer.ts
@@ -8779,22 +8833,6 @@ var init_agent_display_names = __esm(() => {
8779
8833
  "athena-junior (council)": "athena-junior"
8780
8834
  };
8781
8835
  });
8782
- // packages/omo-opencode/src/tools/delegate-task/anthropic-categories.ts
8783
- var UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND = `<Category_Context>
8784
- You are working on tasks that don't fit specific categories but require substantial effort.
8785
- </Category_Context>`, UNSPECIFIED_HIGH_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Use only when no specialist category fits and substantial effort spans systems/modules with broad impact. Use unspecified-low for contained moderate work.</Selection_Gate>`, ANTHROPIC_CATEGORIES;
8786
- var init_anthropic_categories = __esm(() => {
8787
- ANTHROPIC_CATEGORIES = [
8788
- {
8789
- name: "unspecified-high",
8790
- config: { model: "anthropic/claude-opus-5", variant: "xhigh" },
8791
- description: "Tasks that don't fit other categories, high effort required",
8792
- callerGuidance: UNSPECIFIED_HIGH_CATEGORY_CALLER_GUIDANCE,
8793
- promptAppend: UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND
8794
- }
8795
- ];
8796
- });
8797
-
8798
8836
  // packages/omo-opencode/src/tools/delegate-task/google-categories.ts
8799
8837
  var VISUAL_CATEGORY_PROMPT_APPEND = `<Category_Context>
8800
8838
  You are working on VISUAL/UI tasks.
@@ -8903,13 +8941,13 @@ var init_google_categories = __esm(() => {
8903
8941
  GOOGLE_CATEGORIES = [
8904
8942
  {
8905
8943
  name: "visual-engineering",
8906
- config: { model: "anthropic/claude-opus-5", variant: "max" },
8907
- description: "Frontend, UI/UX, design, styling, animation",
8944
+ config: { model: "anthropic/claude-fable-5-1", variant: "max" },
8945
+ description: "Visual design, UI/UX, frontend, styling, animation, and design systems",
8908
8946
  promptAppend: VISUAL_CATEGORY_PROMPT_APPEND
8909
8947
  },
8910
8948
  {
8911
8949
  name: "artistry",
8912
- config: { model: "anthropic/claude-fable-5", variant: "xhigh" },
8950
+ config: { model: "anthropic/claude-fable-5-1", variant: "max" },
8913
8951
  description: "Complex problem-solving with unconventional, creative approaches - beyond standard patterns",
8914
8952
  promptAppend: ARTISTRY_CATEGORY_PROMPT_APPEND
8915
8953
  }
@@ -8946,7 +8984,7 @@ var init_kimi_categories = __esm(() => {
8946
8984
  KIMI_CATEGORIES = [
8947
8985
  {
8948
8986
  name: "writing",
8949
- config: { model: "kimi-for-coding/k3", variant: "low" },
8987
+ config: { model: "anthropic/claude-fable-5-1", variant: "medium" },
8950
8988
  description: "Documentation, prose, technical writing",
8951
8989
  promptAppend: WRITING_CATEGORY_PROMPT_APPEND
8952
8990
  }
@@ -8965,16 +9003,58 @@ function isGpt5_6Model(model) {
8965
9003
  const modelName = extractModelName2(model).toLowerCase();
8966
9004
  return modelName.includes("gpt-5.6") || modelName.includes("gpt-5-6");
8967
9005
  }
9006
+ function isGpt6Model(model) {
9007
+ const modelName = extractModelName2(model).toLowerCase();
9008
+ return modelName.includes("gpt-6");
9009
+ }
8968
9010
  var init_types = () => {};
8969
9011
 
8970
9012
  // packages/omo-opencode/src/tools/delegate-task/openai-categories.ts
9013
+ function resolveUltrabrainCategoryPromptAppend(model) {
9014
+ if (model && isGpt6Model(model)) {
9015
+ return ULTRABRAIN_CATEGORY_PROMPT_APPEND_GPT_6_ASTRA;
9016
+ }
9017
+ return ULTRABRAIN_CATEGORY_PROMPT_APPEND;
9018
+ }
8971
9019
  function resolveDeepCategoryPromptAppend(model) {
9020
+ if (model && isGpt6Model(model)) {
9021
+ return DEEP_CATEGORY_PROMPT_APPEND_GPT_6_ASTRA;
9022
+ }
8972
9023
  if (model && (isGpt5_5Model(model) || isGpt5_6Model(model))) {
8973
9024
  return DEEP_CATEGORY_PROMPT_APPEND_GPT_5_5;
8974
9025
  }
8975
9026
  return DEEP_CATEGORY_PROMPT_APPEND;
8976
9027
  }
8977
- var ULTRABRAIN_CATEGORY_PROMPT_APPEND = `<Category_Context>
9028
+ function resolveUnspecifiedHighCategoryPromptAppend(model) {
9029
+ if (model && isGpt6Model(model)) {
9030
+ return UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND_GPT_6_ASTRA;
9031
+ }
9032
+ return UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND;
9033
+ }
9034
+ var ULTRABRAIN_CATEGORY_PROMPT_APPEND_GPT_6_ASTRA = `<Category_Context name="ultrabrain">
9035
+ The orchestrator routed this task here because it is the one genuinely hard, logic-heavy problem in its plan, and it sent a goal rather than steps: choose the approach yourself, and let correctness outrank speed, brevity, and token cost.
9036
+
9037
+ Success means:
9038
+ - every load-bearing claim cites evidence from this turn: a file and line read, a command run, a test executed;
9039
+ - every executable claim was executed: a proposed fix runs, an algorithm passes the boundary cases you enumerated, a verdict on a diff names the failing line;
9040
+ - the conclusion survived your own attempt to break it, and the answer names the strongest counter-case you looked for;
9041
+ - rejected alternatives carry the reason that decided against them, and open assumptions are stated so the orchestrator can overturn them;
9042
+ - one decision-complete recommendation, actionable without a follow-up question.
9043
+
9044
+ Whatever that check leaves unsettled goes in the answer as an open question with what would settle it. When the goal bundles independent problems, solve the one the others depend on and return the rest as separately delegable items.
9045
+ </Category_Context>`, DEEP_CATEGORY_PROMPT_APPEND_GPT_6_ASTRA = `<Category_Context name="deep">
9046
+ The orchestrator routed this task here for depth: one goal, one deliverable, and the time to earn it. The exploration budget is generous: read every file involved, trace callers and dependencies in both directions, and fan out explore and librarian subagents in parallel for the questions a single read wave cannot answer, until you can explain the full mechanism you are about to change; an edit made before that point is the failure this category exists to prevent.
9047
+
9048
+ **MUST USE \`deep\` FOR 3D GRAPHICS, COMPUTER USE, BROWSER USE, BACKEND, LOGIC, ALGORITHMS, CAPTCHA SOLVING, AND MULTIMODAL WORK.**
9049
+
9050
+ The goal is the authorization. Choose how to reach it yourself, and when it lists numbered steps or phases, deliver all of them in this turn as one task; a proposal, a plan awaiting approval, a simplified version, or a proof of concept is unfinished work. When the steps turn out to be independent problems sharing no reasoning, do the one the goal centers on and return the others as separately delegable items with what you learned. A question ends your turn and hands the task back unfinished, so decide from context, record each assumption in the final message, and stop early only for a blocker you cannot route around: a missing secret, a decision only the user can make, or three materially different attempts that all failed.
9051
+
9052
+ Fix the cause: trace at least two levels above the symptom before settling, and prefer the change that makes the failure impossible over the guard that hides it. Depth means understanding the mechanism, so the diff stays as small as the fix allows; on greenfield work choose strong defaults and finish something you would hand to a senior engineer. Close with the delivered change, the evidence that it works, and the assumptions you made.
9053
+ </Category_Context>`, UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND_GPT_6_ASTRA = `<Category_Context name="unspecified-high">
9054
+ The orchestrator routed this task here because it spans systems or modules and fits no specialist category, so breadth of consideration is what this category buys. Before committing to an approach, survey the whole surface the change touches: every caller and consumer of what you will modify, sibling modules that implement the same pattern, the tests, docs, schemas, config, scripts, and CI that encode the current behavior, and the history of the area (git log and blame) for the reasons it is shaped this way. Fan out explore and librarian subagents in parallel when that surface is wider than one read wave covers.
9055
+
9056
+ Weigh at least two ways to do it against what you found, choose one, and say in the final message why it won. Then deliver it across every surface you identified, so behavior stays consistent everywhere the change is observable and no caller, test, doc, schema, or config still describes the old state. A question ends your turn and hands the task back unfinished, so decide from context, record each assumption in the final message, and finish.
9057
+ </Category_Context>`, ULTRABRAIN_CATEGORY_PROMPT_APPEND = `<Category_Context>
8978
9058
  You are working on DEEP LOGICAL REASONING / COMPLEX ARCHITECTURE tasks.
8979
9059
 
8980
9060
  **CRITICAL - CODE STYLE REQUIREMENTS (NON-NEGOTIABLE)**:
@@ -8999,6 +9079,8 @@ You are working on GOAL-ORIENTED AUTONOMOUS tasks.
8999
9079
 
9000
9080
  You are NOT an interactive assistant. You are an autonomous problem-solver.
9001
9081
 
9082
+ **MUST USE \`deep\` FOR 3D GRAPHICS, COMPUTER USE, BROWSER USE, BACKEND, LOGIC, ALGORITHMS, CAPTCHA SOLVING, AND MULTIMODAL WORK.**
9083
+
9002
9084
  BEFORE making ANY changes:
9003
9085
  1. Silently explore the codebase extensively (5-15 minutes of reading is normal)
9004
9086
  2. Read related files, trace dependencies, understand the full context
@@ -9016,6 +9098,8 @@ Minimal status updates. Focus on results, not play-by-play. Report completion wi
9016
9098
  </Category_Context>`, DEEP_CATEGORY_PROMPT_APPEND_GPT_5_5 = `<Category_Context name="deep">
9017
9099
  You are operating in DEEP mode. This is the category reserved for goal-oriented autonomous work on hairy problems that reward thorough exploration and comprehensive solutions.
9018
9100
 
9101
+ **MUST USE \`deep\` FOR 3D GRAPHICS, COMPUTER USE, BROWSER USE, BACKEND, LOGIC, ALGORITHMS, CAPTCHA SOLVING, AND MULTIMODAL WORK.**
9102
+
9019
9103
  The orchestrator chose this category because the task benefits from depth over speed. You should feel empowered to spend the time needed: five to fifteen minutes of silent exploration before the first edit is normal and correct. Rushing to implementation on a deep task is a failure mode, not a feature.
9020
9104
 
9021
9105
  # How deep mode adjusts the base behavior
@@ -9049,23 +9133,27 @@ Approach:
9049
9133
  </Category_Context>`, QUICK_CATEGORY_CALLER_GUIDANCE = `<Caller_Warning>Small/fast model: before delegating, write an explicit prompt with numbered must-do steps, forbidden deviations, and concrete success criteria.</Caller_Warning>`, UNSPECIFIED_LOW_CATEGORY_PROMPT_APPEND = `<Category_Context>
9050
9134
  You are working on tasks that don't fit specific categories but require moderate effort.
9051
9135
  </Category_Context>`, UNSPECIFIED_LOW_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Use only when no specialist category fits, effort is moderate, and scope stays within a few files/modules. Prefer any matching specialist category.</Selection_Gate>
9052
- <Caller_Warning>Provide explicit must-do steps, forbidden scope, and concrete success criteria.</Caller_Warning>`, OPENAI_CATEGORIES;
9136
+ <Caller_Warning>Provide explicit must-do steps, forbidden scope, and concrete success criteria.</Caller_Warning>`, UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND = `<Category_Context>
9137
+ You are working on tasks that don't fit specific categories but require substantial effort.
9138
+ </Category_Context>`, UNSPECIFIED_HIGH_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Use only when no specialist category fits and substantial effort spans systems/modules with broad impact. Use unspecified-low for contained moderate work.</Selection_Gate>`, GPT_FLAGSHIP_GATE_MODELS, OPENAI_CATEGORIES;
9053
9139
  var init_openai_categories = __esm(() => {
9054
9140
  init_types();
9141
+ GPT_FLAGSHIP_GATE_MODELS = ["gpt-6-astra", "gpt-5.6-sol"];
9055
9142
  OPENAI_CATEGORIES = [
9056
9143
  {
9057
9144
  name: "ultrabrain",
9058
- config: { model: "openai/gpt-5.6-sol", variant: "xhigh" },
9145
+ config: { model: "openai/gpt-6-astra", variant: "max" },
9059
9146
  description: "Use ONLY for genuinely hard, logic-heavy tasks. Give clear goals only, not step-by-step instructions.",
9060
- promptAppend: ULTRABRAIN_CATEGORY_PROMPT_APPEND
9147
+ promptAppend: ULTRABRAIN_CATEGORY_PROMPT_APPEND,
9148
+ resolvePromptAppend: resolveUltrabrainCategoryPromptAppend
9061
9149
  },
9062
9150
  {
9063
9151
  name: "deep",
9064
- config: { model: "openai/gpt-5.6-sol", variant: "medium" },
9065
- description: "Goal-oriented autonomous problem-solving on hairy problems requiring deep research. ONE goal + ONE deliverable per call \u2014 multiple goals must fan out as parallel `deep` calls, never bundled into one.",
9152
+ config: { model: "openai/gpt-6-astra", variant: "high" },
9153
+ description: "**MANDATORY: USE deep FOR 3D GRAPHICS, COMPUTER USE, BROWSER USE, BACKEND, LOGIC, ALGORITHMS, CAPTCHA SOLVING, AND MULTIMODAL WORK.** Deep autonomous problem-solving for complex research. ONE goal + ONE deliverable per call \u2014 multiple goals must fan out as parallel `deep` calls, never bundled into one.",
9066
9154
  promptAppend: DEEP_CATEGORY_PROMPT_APPEND,
9067
9155
  resolvePromptAppend: resolveDeepCategoryPromptAppend,
9068
- requiresModel: "gpt-5.6-sol"
9156
+ requiresModel: GPT_FLAGSHIP_GATE_MODELS
9069
9157
  },
9070
9158
  {
9071
9159
  name: "quick",
@@ -9080,6 +9168,14 @@ var init_openai_categories = __esm(() => {
9080
9168
  description: "Tasks that don't fit other categories, low effort required",
9081
9169
  callerGuidance: UNSPECIFIED_LOW_CATEGORY_CALLER_GUIDANCE,
9082
9170
  promptAppend: UNSPECIFIED_LOW_CATEGORY_PROMPT_APPEND
9171
+ },
9172
+ {
9173
+ name: "unspecified-high",
9174
+ config: { model: "openai/gpt-6-astra", variant: "high" },
9175
+ description: "Tasks that don't fit other categories, high effort required",
9176
+ callerGuidance: UNSPECIFIED_HIGH_CATEGORY_CALLER_GUIDANCE,
9177
+ promptAppend: UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND,
9178
+ resolvePromptAppend: resolveUnspecifiedHighCategoryPromptAppend
9083
9179
  }
9084
9180
  ];
9085
9181
  });
@@ -9090,14 +9186,12 @@ function buildCategoryRecord(selector) {
9090
9186
  }
9091
9187
  var BUILTIN_CATEGORIES, DEFAULT_CATEGORIES, CATEGORY_PROMPT_APPENDS, CATEGORY_DESCRIPTIONS, CATEGORY_CALLER_GUIDANCE, CATEGORY_PROMPT_APPEND_RESOLVERS, BUILTIN_CATEGORY_REQUIRES_MODEL;
9092
9188
  var init_builtin_categories = __esm(() => {
9093
- init_anthropic_categories();
9094
9189
  init_google_categories();
9095
9190
  init_kimi_categories();
9096
9191
  init_openai_categories();
9097
9192
  BUILTIN_CATEGORIES = [
9098
9193
  ...GOOGLE_CATEGORIES,
9099
9194
  ...OPENAI_CATEGORIES,
9100
- ...ANTHROPIC_CATEGORIES,
9101
9195
  ...KIMI_CATEGORIES
9102
9196
  ];
9103
9197
  DEFAULT_CATEGORIES = buildCategoryRecord((definition) => definition.config);
@@ -9105,7 +9199,10 @@ var init_builtin_categories = __esm(() => {
9105
9199
  CATEGORY_DESCRIPTIONS = buildCategoryRecord((definition) => definition.description);
9106
9200
  CATEGORY_CALLER_GUIDANCE = buildCategoryRecord((definition) => definition.callerGuidance);
9107
9201
  CATEGORY_PROMPT_APPEND_RESOLVERS = Object.fromEntries(BUILTIN_CATEGORIES.filter((definition) => definition.resolvePromptAppend !== undefined).map((definition) => [definition.name, definition.resolvePromptAppend]));
9108
- BUILTIN_CATEGORY_REQUIRES_MODEL = Object.fromEntries(BUILTIN_CATEGORIES.filter((definition) => definition.requiresModel !== undefined).map((definition) => [definition.name, definition.requiresModel]));
9202
+ BUILTIN_CATEGORY_REQUIRES_MODEL = Object.fromEntries(BUILTIN_CATEGORIES.filter((definition) => definition.requiresModel !== undefined).map((definition) => [
9203
+ definition.name,
9204
+ typeof definition.requiresModel === "string" ? [definition.requiresModel] : definition.requiresModel
9205
+ ]));
9109
9206
  });
9110
9207
 
9111
9208
  // packages/omo-opencode/src/tools/delegate-task/constants.ts
@@ -12597,8 +12694,8 @@ var init_model_capabilities_generated = __esm(() => {
12597
12694
  ]
12598
12695
  },
12599
12696
  limit: {
12600
- context: 400000,
12601
- input: 272000,
12697
+ context: 1050000,
12698
+ input: 922000,
12602
12699
  output: 128000
12603
12700
  }
12604
12701
  },
@@ -82415,7 +82512,6 @@ var init_memory = __esm(() => {
82415
82512
  OmoMemorySettingsSchema = object({
82416
82513
  enabled: boolean2().default(true),
82417
82514
  agent: string2().min(1).default("auto"),
82418
- tool_exposure: _enum2(["direct", "search"]).default("direct"),
82419
82515
  reflection: OmoMemoryReflectionSchema.default({
82420
82516
  enabled: true,
82421
82517
  trigger: { step_count: 25, on_compaction: true },
@@ -82446,7 +82542,6 @@ var init_memory = __esm(() => {
82446
82542
  OmoMemorySettingsLayerSchema = object({
82447
82543
  enabled: boolean2().optional(),
82448
82544
  agent: string2().min(1).optional(),
82449
- tool_exposure: _enum2(["direct", "search"]).optional(),
82450
82545
  reflection: OmoMemoryReflectionLayerSchema.optional(),
82451
82546
  nudge: OmoMemoryNudgeLayerSchema.optional(),
82452
82547
  facts: OmoMemoryFactsLayerSchema.optional(),
@@ -86487,20 +86582,20 @@ var init_config_manager = __esm(() => {
86487
86582
 
86488
86583
  // packages/telemetry-core/src/activity-state.ts
86489
86584
  import { existsSync as existsSync25, mkdirSync as mkdirSync8, readFileSync as readFileSync12 } from "fs";
86490
- import { basename as basename8, join as join52 } from "path";
86585
+ import { basename as basename8, join as join51 } from "path";
86491
86586
  function resolveTelemetryStateDir(product, options = {}) {
86492
86587
  const dataDir = resolveXdgDataDir(product.cacheDirName, {
86493
86588
  env: options.env,
86494
86589
  osProvider: options.osProvider
86495
86590
  });
86496
- const xdgStateDir = options.env?.XDG_DATA_HOME === undefined ? undefined : join52(options.env.XDG_DATA_HOME, product.cacheDirName);
86591
+ const xdgStateDir = options.env?.XDG_DATA_HOME === undefined ? undefined : join51(options.env.XDG_DATA_HOME, product.cacheDirName);
86497
86592
  if (dataDir === xdgStateDir || xdgStateDir === undefined && basename8(dataDir) === product.cacheDirName) {
86498
86593
  return dataDir;
86499
86594
  }
86500
- return join52(dataDir, product.cacheDirName);
86595
+ return join51(dataDir, product.cacheDirName);
86501
86596
  }
86502
86597
  function getTelemetryActivityStateFilePath(stateDir) {
86503
- return join52(stateDir, POSTHOG_ACTIVITY_STATE_FILE);
86598
+ return join51(stateDir, POSTHOG_ACTIVITY_STATE_FILE);
86504
86599
  }
86505
86600
  function getDailyActiveCaptureState(input) {
86506
86601
  const state = readPostHogActivityState(input.stateDir, input.diagnostics);
@@ -86571,9 +86666,9 @@ var DEFAULT_POSTHOG_HOST = "https://us.i.posthog.com", DEFAULT_POSTHOG_API_KEY =
86571
86666
 
86572
86667
  // packages/telemetry-core/src/diagnostics.ts
86573
86668
  import { appendFileSync as appendFileSync2, existsSync as existsSync26, mkdirSync as mkdirSync9, readFileSync as readFileSync13 } from "fs";
86574
- import { join as join53 } from "path";
86669
+ import { join as join52 } from "path";
86575
86670
  function getTelemetryDiagnosticsFilePath(diagnosticsDir) {
86576
- return join53(diagnosticsDir, DIAGNOSTICS_FILE_NAME);
86671
+ return join52(diagnosticsDir, DIAGNOSTICS_FILE_NAME);
86577
86672
  }
86578
86673
  function writeTelemetryDiagnostic(input, options) {
86579
86674
  const now = options.now ?? new Date;
@@ -94352,7 +94447,7 @@ var package_default2;
94352
94447
  var init_package2 = __esm(() => {
94353
94448
  package_default2 = {
94354
94449
  name: "@oh-my-opencode/omo-codex",
94355
- version: "5.0.0-beta.42",
94450
+ version: "5.0.0-beta.44",
94356
94451
  type: "module",
94357
94452
  private: true,
94358
94453
  description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
@@ -95320,7 +95415,7 @@ var init_update_toasts = __esm(() => {
95320
95415
 
95321
95416
  // packages/omo-opencode/src/hooks/auto-update-checker/hook/background-update-check.ts
95322
95417
  import { existsSync as existsSync47 } from "fs";
95323
- import { dirname as dirname30, join as join75 } from "path";
95418
+ import { dirname as dirname30, join as join74 } from "path";
95324
95419
  import { fileURLToPath as fileURLToPath5 } from "url";
95325
95420
  function defaultGetModuleHostingWorkspace() {
95326
95421
  try {
@@ -95474,7 +95569,7 @@ var init_background_update_check = __esm(() => {
95474
95569
  init_update_toasts();
95475
95570
  defaultDeps4 = {
95476
95571
  existsSync: existsSync47,
95477
- join: join75,
95572
+ join: join74,
95478
95573
  runBunInstallWithDetails,
95479
95574
  log: log2,
95480
95575
  getOpenCodeCacheDir,
@@ -98111,7 +98206,7 @@ function getUnsupportedOpenCodeVersionMessage(openCodeVersion) {
98111
98206
  }
98112
98207
 
98113
98208
  // packages/omo-codex/src/install/install-codex.ts
98114
- import { join as join54, resolve as resolve12 } from "path";
98209
+ import { join as join53, resolve as resolve12 } from "path";
98115
98210
  import { existsSync as existsSync27 } from "fs";
98116
98211
  import { homedir as homedir6 } from "os";
98117
98212
 
@@ -102417,26 +102512,9 @@ async function removeGitBashHooksOffWindows(input) {
102417
102512
  `);
102418
102513
  }
102419
102514
 
102420
- // packages/omo-codex/src/install/omo-sot-migration.ts
102421
- import { join as join50 } from "path";
102422
- async function seedAndMigrateOmoSot(input) {
102423
- const commandEnv = { ...input.env };
102424
- const scriptPath = join50(input.repoRoot, "packages", "omo-codex", "plugin", "scripts", "migrate-omo-sot.mjs");
102425
- try {
102426
- await input.runCommand(process.execPath, [scriptPath, "--seed"], {
102427
- cwd: input.repoRoot,
102428
- env: commandEnv
102429
- });
102430
- } catch (error51) {
102431
- if (!(error51 instanceof Error))
102432
- throw error51;
102433
- input.log(`Warning: skipped OMO SOT seed/migration: ${error51.message}`);
102434
- }
102435
- }
102436
-
102437
102515
  // packages/omo-codex/src/install/install-ast-grep-sg.ts
102438
102516
  init_src();
102439
- import { join as join51 } from "path";
102517
+ import { join as join50 } from "path";
102440
102518
  function describeResult(result) {
102441
102519
  if (result.kind === "succeeded")
102442
102520
  return null;
@@ -102450,7 +102528,7 @@ async function installAstGrepForCodex(options) {
102450
102528
  return;
102451
102529
  const platform = options.platform ?? process.platform;
102452
102530
  const targetDir = astGrepRuntimeDir(options.codexHome, platform, options.arch ?? process.arch);
102453
- const skillDir = join51(plugin.path, "skills", "ast-grep");
102531
+ const skillDir = join50(plugin.path, "skills", "ast-grep");
102454
102532
  const installer = options.installer ?? runAstGrepSkillInstall;
102455
102533
  try {
102456
102534
  const result = await installer({ platform, skillDir, targetDir });
@@ -102483,7 +102561,7 @@ async function runCodexInstaller(options = {}) {
102483
102561
  const env2 = options.env ?? process.env;
102484
102562
  const platform = options.platform ?? process.platform;
102485
102563
  const repoRoot = resolve12(options.repoRoot ?? findRepoRoot({ importerDir: import.meta.dir, env: env2 }));
102486
- const codexHome = resolve12(options.codexHome ?? env2.CODEX_HOME ?? join54(homedir6(), ".codex"));
102564
+ const codexHome = resolve12(options.codexHome ?? env2.CODEX_HOME ?? join53(homedir6(), ".codex"));
102487
102565
  const projectDirectory = resolve12(options.projectDirectory ?? env2.OMO_CODEX_PROJECT ?? process.cwd());
102488
102566
  const binDir = resolveCodexInstallerBinDir({ binDir: options.binDir, codexHome, env: env2 });
102489
102567
  const runCommand = options.runCommand ?? defaultRunCommand;
@@ -102500,9 +102578,9 @@ async function runCodexInstaller(options = {}) {
102500
102578
  if (!gitBashResolution.found) {
102501
102579
  throw new Error(gitBashResolution.installHint);
102502
102580
  }
102503
- const codexPackageRoot = join54(repoRoot, "packages", "omo-codex");
102581
+ const codexPackageRoot = join53(repoRoot, "packages", "omo-codex");
102504
102582
  const marketplace = await readMarketplace(repoRoot, {
102505
- marketplacePath: join54(codexPackageRoot, "marketplace.json")
102583
+ marketplacePath: join53(codexPackageRoot, "marketplace.json")
102506
102584
  });
102507
102585
  const distributionManifest = await readDistributionManifest(repoRoot);
102508
102586
  const installed = [];
@@ -102548,7 +102626,7 @@ async function runCodexInstaller(options = {}) {
102548
102626
  if (runtimeLink !== null)
102549
102627
  log4(`Linked ${runtimeLink.name} -> ${runtimeLink.target}`);
102550
102628
  else
102551
- log4(`Warning: skipped the omo-agent-toolkit runtime wrapper because ${join54(repoRoot, "dist", "cli", "index.js")} is missing; omo-agent-toolkit ulw-loop commands will be unavailable until a package shipping dist/cli is installed`);
102629
+ log4(`Warning: skipped the omo-agent-toolkit runtime wrapper because ${join53(repoRoot, "dist", "cli", "index.js")} is missing; omo-agent-toolkit ulw-loop commands will be unavailable until a package shipping dist/cli is installed`);
102552
102630
  }
102553
102631
  pluginSources.push({ name: entry.name, sourcePath });
102554
102632
  installed.push(plugin);
@@ -102611,13 +102689,13 @@ async function runCodexInstaller(options = {}) {
102611
102689
  continue;
102612
102690
  log4(`Warning: deferred legacy Codex LSP daemon cleanup for v${cleanup.version}: ${cleanup.reason}`);
102613
102691
  }
102614
- const marketplaceRoot = join54(codexHome, "plugins", "cache", marketplace.name);
102692
+ const marketplaceRoot = join53(codexHome, "plugins", "cache", marketplace.name);
102615
102693
  await writeCachedMarketplaceManifest({
102616
102694
  marketplaceName: marketplace.name,
102617
102695
  marketplaceRoot,
102618
102696
  plugins: installed
102619
102697
  });
102620
- const configPath = join54(codexHome, "config.toml");
102698
+ const configPath = join53(codexHome, "config.toml");
102621
102699
  await updateCodexConfig({
102622
102700
  configPath,
102623
102701
  repoRoot: codexPackageRoot,
@@ -102631,7 +102709,6 @@ async function runCodexInstaller(options = {}) {
102631
102709
  autonomousPermissions: options.autonomousPermissions !== false,
102632
102710
  ...options.reasoning === undefined ? {} : { reasoning: options.reasoning }
102633
102711
  });
102634
- await seedAndMigrateOmoSot({ env: env2, log: log4, repoRoot, runCommand });
102635
102712
  const projectCleanup = await repairProjectLocalCodexArtifactsBestEffort({
102636
102713
  startDirectory: projectDirectory,
102637
102714
  codexHome,
@@ -102677,7 +102754,7 @@ function findRepoRootFromImporter(importerDir) {
102677
102754
  for (let depth = 0;depth <= 7; depth += 1) {
102678
102755
  if (isRepoRootWithCodexPlugin(current))
102679
102756
  return current;
102680
- for (const wrapperPackageRoot of [join54(current, "node_modules", "oh-my-openagent"), join54(current, "oh-my-openagent")]) {
102757
+ for (const wrapperPackageRoot of [join53(current, "node_modules", "oh-my-openagent"), join53(current, "oh-my-openagent")]) {
102681
102758
  if (isRepoRootWithCodexPlugin(wrapperPackageRoot))
102682
102759
  return wrapperPackageRoot;
102683
102760
  }
@@ -102695,7 +102772,7 @@ function findRepoRoot(input) {
102695
102772
  return findRepoRootFromImporter(input.importerDir);
102696
102773
  }
102697
102774
  function isRepoRootWithCodexPlugin(repoRoot) {
102698
- return existsSync27(join54(repoRoot, "packages", "omo-codex", "plugin", ".codex-plugin", "plugin.json"));
102775
+ return existsSync27(join53(repoRoot, "packages", "omo-codex", "plugin", ".codex-plugin", "plugin.json"));
102699
102776
  }
102700
102777
  function codexMarketplaceSource(marketplaceRoot) {
102701
102778
  return { sourceType: "local", source: marketplaceRoot };
@@ -102832,11 +102909,11 @@ function defaultRunCommand2(command, args) {
102832
102909
  // packages/omo-codex/src/install/codex-cleanup.ts
102833
102910
  import { lstat as lstat14, readFile as readFile24, readdir as readdir13, rm as rm12, rmdir } from "fs/promises";
102834
102911
  import { homedir as homedir8 } from "os";
102835
- import { isAbsolute as isAbsolute11, join as join57, relative as relative6, resolve as resolve15 } from "path";
102912
+ import { isAbsolute as isAbsolute11, join as join56, relative as relative6, resolve as resolve15 } from "path";
102836
102913
 
102837
102914
  // packages/omo-codex/src/install/codex-cleanup-bins.ts
102838
102915
  import { lstat as lstat12, readFile as readFile22, readdir as readdir12, readlink as readlink6, rm as rm11 } from "fs/promises";
102839
- import { dirname as dirname18, isAbsolute as isAbsolute9, join as join55, resolve as resolve13 } from "path";
102916
+ import { dirname as dirname18, isAbsolute as isAbsolute9, join as join54, resolve as resolve13 } from "path";
102840
102917
  var ROOT_RUNTIME_BIN_NAME = "omo";
102841
102918
  var MANAGED_CODEX_BIN_NAMES = new Set([
102842
102919
  ROOT_RUNTIME_BIN_NAME,
@@ -102866,7 +102943,7 @@ async function removeManagedCodexBins(binDir, platform) {
102866
102943
  const binName = managedBinNameForEntry2(entry.name, platform);
102867
102944
  if (binName === null || !MANAGED_CODEX_BIN_NAMES.has(binName))
102868
102945
  continue;
102869
- const linkPath = join55(binDir, entry.name);
102946
+ const linkPath = join54(binDir, entry.name);
102870
102947
  if (await isManagedCodexBin(linkPath, platform, binName)) {
102871
102948
  await rm11(linkPath, { force: true });
102872
102949
  removed2.push(linkPath);
@@ -103019,7 +103096,7 @@ function nodeErrorCode5(error51) {
103019
103096
  }
103020
103097
 
103021
103098
  // packages/omo-codex/src/install/codex-cleanup-safety.ts
103022
- import { dirname as dirname20, isAbsolute as isAbsolute10, join as join56, relative as relative5, resolve as resolve14 } from "path";
103099
+ import { dirname as dirname20, isAbsolute as isAbsolute10, join as join55, relative as relative5, resolve as resolve14 } from "path";
103023
103100
  function codexHomeResolvesToFilesystemRoot(codexHome) {
103024
103101
  const resolved = resolve14(codexHome);
103025
103102
  return dirname20(resolved) === resolved;
@@ -103036,11 +103113,11 @@ function validateManagedCleanupTarget(input) {
103036
103113
  if (target === codexHome)
103037
103114
  return skipped(input.path, "outside managed Codex cleanup scope");
103038
103115
  const exactManagedRoots = new Set([
103039
- resolve14(join56(codexHome, "plugins", "cache", "sisyphuslabs")),
103040
- resolve14(join56(codexHome, ".tmp", "marketplaces", "sisyphuslabs")),
103041
- resolve14(join56(codexHome, "runtime", "ast-grep")),
103042
- resolve14(join56(codexHome, "runtime", "node")),
103043
- resolve14(join56(codexHome, "plugins", "data", "omo-sisyphuslabs", "bootstrap"))
103116
+ resolve14(join55(codexHome, "plugins", "cache", "sisyphuslabs")),
103117
+ resolve14(join55(codexHome, ".tmp", "marketplaces", "sisyphuslabs")),
103118
+ resolve14(join55(codexHome, "runtime", "ast-grep")),
103119
+ resolve14(join55(codexHome, "runtime", "node")),
103120
+ resolve14(join55(codexHome, "plugins", "data", "omo-sisyphuslabs", "bootstrap"))
103044
103121
  ]);
103045
103122
  if (exactManagedRoots.has(target))
103046
103123
  return null;
@@ -103070,8 +103147,8 @@ function skipped(path7, reason) {
103070
103147
  var INSTALLED_AGENTS_MANIFEST = ".installed-agents.json";
103071
103148
  async function cleanupCodexLight(input = {}) {
103072
103149
  const env2 = input.env ?? process.env;
103073
- const codexHome = resolve15(input.codexHome ?? env2.CODEX_HOME ?? join57(homedir8(), ".codex"));
103074
- const configPath = join57(codexHome, "config.toml");
103150
+ const codexHome = resolve15(input.codexHome ?? env2.CODEX_HOME ?? join56(homedir8(), ".codex"));
103151
+ const configPath = join56(codexHome, "config.toml");
103075
103152
  const installedBinDir = await readInstalledCodexBinDir(codexHome);
103076
103153
  const agentPaths = await collectInstalledAgentPaths(codexHome, configPath);
103077
103154
  const configCleanup = await cleanupCodexConfig(configPath, input.now);
@@ -103125,17 +103202,17 @@ function firstConfiguredPath(...values) {
103125
103202
  }
103126
103203
  function managedGlobalStatePaths(codexHome) {
103127
103204
  return [
103128
- join57(codexHome, "plugins", "cache", "sisyphuslabs"),
103129
- join57(codexHome, ".tmp", "marketplaces", "sisyphuslabs"),
103130
- join57(codexHome, "runtime", "ast-grep"),
103131
- join57(codexHome, "runtime", "node"),
103132
- join57(codexHome, "plugins", "data", "omo-sisyphuslabs", "bootstrap")
103205
+ join56(codexHome, "plugins", "cache", "sisyphuslabs"),
103206
+ join56(codexHome, ".tmp", "marketplaces", "sisyphuslabs"),
103207
+ join56(codexHome, "runtime", "ast-grep"),
103208
+ join56(codexHome, "runtime", "node"),
103209
+ join56(codexHome, "plugins", "data", "omo-sisyphuslabs", "bootstrap")
103133
103210
  ];
103134
103211
  }
103135
103212
  var BOOTSTRAP_DATA_GLOB_MAX_DEPTH = 5;
103136
103213
  async function collectBootstrapDataDirsByGlob(codexHome) {
103137
103214
  const results = [];
103138
- await walkForManagedBootstrapDirs(join57(codexHome, "plugins"), 0, results);
103215
+ await walkForManagedBootstrapDirs(join56(codexHome, "plugins"), 0, results);
103139
103216
  return results;
103140
103217
  }
103141
103218
  async function walkForManagedBootstrapDirs(directory, depth, results) {
@@ -103147,9 +103224,9 @@ async function walkForManagedBootstrapDirs(directory, depth, results) {
103147
103224
  for (const entry of entries) {
103148
103225
  if (!entry.isDirectory())
103149
103226
  continue;
103150
- const childPath = join57(directory, entry.name);
103227
+ const childPath = join56(directory, entry.name);
103151
103228
  if (isManagedBootstrapOwnerName(entry.name)) {
103152
- const bootstrapDir = join57(childPath, "bootstrap");
103229
+ const bootstrapDir = join56(childPath, "bootstrap");
103153
103230
  if (await exists6(bootstrapDir))
103154
103231
  results.push(bootstrapDir);
103155
103232
  continue;
@@ -103183,7 +103260,7 @@ async function attemptRemove(path7) {
103183
103260
  }
103184
103261
  async function pruneEmptyRuntimeDirBestEffort(codexHome) {
103185
103262
  try {
103186
- await rmdir(join57(codexHome, "runtime"));
103263
+ await rmdir(join56(codexHome, "runtime"));
103187
103264
  } catch (error51) {
103188
103265
  if (isExpectedRuntimePruneFailure(error51))
103189
103266
  return;
@@ -103195,14 +103272,14 @@ function isExpectedRuntimePruneFailure(error51) {
103195
103272
  }
103196
103273
  async function collectInstalledAgentPaths(codexHome, configPath) {
103197
103274
  const manifestPaths = [
103198
- join57(codexHome, ".tmp", "marketplaces", "sisyphuslabs", "plugins", "omo", INSTALLED_AGENTS_MANIFEST)
103275
+ join56(codexHome, ".tmp", "marketplaces", "sisyphuslabs", "plugins", "omo", INSTALLED_AGENTS_MANIFEST)
103199
103276
  ];
103200
- const versionRoot = join57(codexHome, "plugins", "cache", "sisyphuslabs", "omo");
103277
+ const versionRoot = join56(codexHome, "plugins", "cache", "sisyphuslabs", "omo");
103201
103278
  if (await exists6(versionRoot)) {
103202
103279
  const entries = await readdir13(versionRoot, { withFileTypes: true });
103203
103280
  for (const entry of entries) {
103204
103281
  if (entry.isDirectory())
103205
- manifestPaths.push(join57(versionRoot, entry.name, INSTALLED_AGENTS_MANIFEST));
103282
+ manifestPaths.push(join56(versionRoot, entry.name, INSTALLED_AGENTS_MANIFEST));
103206
103283
  }
103207
103284
  }
103208
103285
  const paths2 = new Set;
@@ -103220,7 +103297,7 @@ async function readManagedAgentPathsFromConfig(codexHome, configPath) {
103220
103297
  if (!await exists6(configPath))
103221
103298
  return [];
103222
103299
  const config3 = await readFile24(configPath, "utf8");
103223
- return MANAGED_CODEX_AGENT_NAMES2.filter((agentName) => config3.includes(`config_file = ${JSON.stringify(`./agents/${agentName}.toml`)}`)).map((agentName) => join57(codexHome, "agents", `${agentName}.toml`));
103300
+ return MANAGED_CODEX_AGENT_NAMES2.filter((agentName) => config3.includes(`config_file = ${JSON.stringify(`./agents/${agentName}.toml`)}`)).map((agentName) => join56(codexHome, "agents", `${agentName}.toml`));
103224
103301
  }
103225
103302
  async function readInstalledAgentManifest(manifestPath) {
103226
103303
  if (!await exists6(manifestPath))
@@ -103231,7 +103308,7 @@ async function readInstalledAgentManifest(manifestPath) {
103231
103308
  return parsed.agents.filter((path7) => typeof path7 === "string");
103232
103309
  }
103233
103310
  async function removeManifestListedAgentLinks(codexHome, paths2) {
103234
- const agentsDir = join57(codexHome, "agents");
103311
+ const agentsDir = join56(codexHome, "agents");
103235
103312
  const removed2 = [];
103236
103313
  const skipped2 = [];
103237
103314
  for (const path7 of paths2) {
@@ -103283,14 +103360,14 @@ function nodeErrorCode6(error51) {
103283
103360
  import { execFile as execFile3 } from "child_process";
103284
103361
  import { existsSync as existsSync31 } from "fs";
103285
103362
  import { homedir as homedir11 } from "os";
103286
- import { dirname as dirname24, join as join62, resolve as resolve19 } from "path";
103363
+ import { dirname as dirname24, join as join61, resolve as resolve19 } from "path";
103287
103364
  import { fileURLToPath } from "url";
103288
103365
  import { promisify as promisify2 } from "util";
103289
103366
 
103290
103367
  // packages/omo-senpi/src/components/agent-home/resolve-agent-home.ts
103291
103368
  import { existsSync as existsSync29 } from "fs";
103292
103369
  import { homedir as homedir9 } from "os";
103293
- import { join as join58, resolve as resolve16 } from "path";
103370
+ import { join as join57, resolve as resolve16 } from "path";
103294
103371
  var AGENT_DIR_ENV_NAMES = [
103295
103372
  "OMO_CODING_AGENT_DIR",
103296
103373
  "SENPI_CODING_AGENT_DIR",
@@ -103304,25 +103381,25 @@ function resolveAgentHome(options) {
103304
103381
  if (configured)
103305
103382
  return resolve16(configured);
103306
103383
  }
103307
- const brandedHome = join58(homeDir, ".omo");
103308
- const canonical = join58(brandedHome, "agent");
103309
- if (exists7(join58(canonical, AGENT_HOME_SENTINEL)))
103384
+ const brandedHome = join57(homeDir, ".omo");
103385
+ const canonical = join57(brandedHome, "agent");
103386
+ if (exists7(join57(canonical, AGENT_HOME_SENTINEL)))
103310
103387
  return canonical;
103311
- if (exists7(join58(brandedHome, AGENT_HOME_SENTINEL)))
103388
+ if (exists7(join57(brandedHome, AGENT_HOME_SENTINEL)))
103312
103389
  return brandedHome;
103313
- return join58(homeDir, ".senpi", "agent");
103390
+ return join57(homeDir, ".senpi", "agent");
103314
103391
  }
103315
103392
 
103316
103393
  // packages/omo-senpi/src/install/local-launcher.ts
103317
103394
  import { chmodSync as chmodSync3, existsSync as existsSync30, mkdirSync as mkdirSync10, readFileSync as readFileSync14, rmSync as rmSync2, writeFileSync as writeFileSync6 } from "fs";
103318
103395
  import { homedir as homedir10 } from "os";
103319
- import { dirname as dirname21, join as join59, resolve as resolve17 } from "path";
103396
+ import { dirname as dirname21, join as join58, resolve as resolve17 } from "path";
103320
103397
  var MARKER = "omo-local-launcher";
103321
103398
  function localLauncherPath(homeDir = homedir10()) {
103322
- return join59(homeDir, ".local", "bin", "omo");
103399
+ return join58(homeDir, ".local", "bin", "omo");
103323
103400
  }
103324
103401
  function localLauncherCmdPath(homeDir = homedir10()) {
103325
- return join59(homeDir, ".local", "bin", "omo.cmd");
103402
+ return join58(homeDir, ".local", "bin", "omo.cmd");
103326
103403
  }
103327
103404
  function renderLocalLauncher(options) {
103328
103405
  const brand = {
@@ -103402,16 +103479,16 @@ node "%~dp0omo" %*\r
103402
103479
  import { createHash as createHash5 } from "crypto";
103403
103480
  import { constants as constants9 } from "fs";
103404
103481
  import { access as access2, readFile as readFile26, stat as stat6 } from "fs/promises";
103405
- import { dirname as dirname23, join as join61 } from "path";
103482
+ import { dirname as dirname23, join as join60 } from "path";
103406
103483
 
103407
103484
  // packages/omo-senpi/src/install/senpi-settings.ts
103408
103485
  import { constants as constants8 } from "fs";
103409
103486
  import { access, copyFile as copyFile3, mkdir as mkdir9, readFile as readFile25, rename as rename5, writeFile as writeFile14 } from "fs/promises";
103410
- import { dirname as dirname22, join as join60, resolve as resolve18 } from "path";
103487
+ import { dirname as dirname22, join as join59, resolve as resolve18 } from "path";
103411
103488
  var OMO_SENPI_PACKAGE_NAME = "@code-yeongyu/omo-senpi";
103412
103489
  var LEGACY_BUILTIN_SHADOW_PACKAGES = [
103413
- join60("packages", "pi-goal"),
103414
- join60("packages", "pi-webfetch")
103490
+ join59("packages", "pi-goal"),
103491
+ join59("packages", "pi-webfetch")
103415
103492
  ];
103416
103493
  async function readSettings(settingsPath) {
103417
103494
  let raw;
@@ -103486,7 +103563,7 @@ function isRecord12(value) {
103486
103563
  async function readPackageName(packagePath) {
103487
103564
  let raw;
103488
103565
  try {
103489
- raw = await readFile25(join60(packagePath, "package.json"), "utf8");
103566
+ raw = await readFile25(join59(packagePath, "package.json"), "utf8");
103490
103567
  } catch (error51) {
103491
103568
  if (isErrno(error51, "ENOENT") || isErrno(error51, "ENOTDIR"))
103492
103569
  return;
@@ -103511,57 +103588,57 @@ function isErrno(error51, code) {
103511
103588
 
103512
103589
  // packages/omo-senpi/src/install/plugin-artifacts.ts
103513
103590
  var REQUIRED_PLUGIN_ARTIFACTS = [
103514
- join61("extensions", "omo.js"),
103515
- join61("extensions", "omo-task.js"),
103516
- join61("extensions", "omo-member.js"),
103517
- join61("extensions", "memory-run-supervisor.mjs"),
103518
- join61("extensions", "reflection-persona.md"),
103519
- join61("extensions", "dream-persona.md"),
103520
- join61("extensions", "facts-persona.md"),
103521
- join61("extensions", "memorian-persona.md"),
103522
- join61("skills", "ast-grep", "SKILL.md"),
103523
- join61("skills", "coding-agent-sessions", "SKILL.md"),
103524
- join61("skills", "debugging", "SKILL.md"),
103525
- join61("skills", "frontend", "SKILL.md"),
103526
- join61("skills", "git-master", "SKILL.md"),
103527
- join61("skills", "init-deep", "SKILL.md"),
103528
- join61("skills", "lsp-setup", "SKILL.md"),
103529
- join61("skills", "programming", "SKILL.md"),
103530
- join61("skills", "refactor", "SKILL.md"),
103531
- join61("skills", "remove-ai-slops", "SKILL.md"),
103532
- join61("skills", "review-work", "SKILL.md"),
103533
- join61("skills", "ultimate-browsing", "SKILL.md"),
103534
- join61("skills", "ultrawork", "SKILL.md"),
103535
- join61("skills", "ulw-execute", "SKILL.md"),
103536
- join61("skills", "ulw-loop", "SKILL.md"),
103537
- join61("skills", "ulw-plan", "SKILL.md"),
103538
- join61("skills", "ulw-research", "SKILL.md"),
103539
- join61("skills", "visual-qa", "SKILL.md"),
103540
- join61("skills-conditional", "x-search", "SKILL.md"),
103541
- join61("runtime", "ast-grep-mcp", "cli.js"),
103542
- join61("runtime", "agent-toolkit", "cli.js"),
103543
- join61("runtime", "agent-toolkit", "ulw-loop", "cli.js"),
103544
- join61("runtime", "agent-toolkit", "omo-agent-toolkit"),
103545
- join61("runtime", "agent-toolkit", "omo-agent-toolkit.cmd"),
103546
- join61("runtime", "lsp-daemon", "dist", "cli.js"),
103547
- join61("runtime", "lsp-daemon", "dist", "index.js"),
103548
- join61("runtime", "lsp-daemon", "dist", "index.d.ts"),
103549
- join61("runtime", "lsp-daemon", "dist", "daemon-client.js"),
103550
- join61("runtime", "lsp-daemon", "dist", "daemon-client.d.ts"),
103551
- join61("runtime", "lsp-daemon", "dist", "package.json"),
103552
- join61("runtime", "lsp-daemon", "dist", ".omo-runtime-manifest.json"),
103553
- join61("scripts", "install.mjs")
103591
+ join60("extensions", "omo.js"),
103592
+ join60("extensions", "omo-task.js"),
103593
+ join60("extensions", "omo-member.js"),
103594
+ join60("extensions", "memory-run-supervisor.mjs"),
103595
+ join60("extensions", "reflection-persona.md"),
103596
+ join60("extensions", "dream-persona.md"),
103597
+ join60("extensions", "facts-persona.md"),
103598
+ join60("extensions", "memorian-persona.md"),
103599
+ join60("skills", "ast-grep", "SKILL.md"),
103600
+ join60("skills", "coding-agent-sessions", "SKILL.md"),
103601
+ join60("skills", "debugging", "SKILL.md"),
103602
+ join60("skills", "frontend", "SKILL.md"),
103603
+ join60("skills", "git-master", "SKILL.md"),
103604
+ join60("skills", "init-deep", "SKILL.md"),
103605
+ join60("skills", "lsp-setup", "SKILL.md"),
103606
+ join60("skills", "programming", "SKILL.md"),
103607
+ join60("skills", "refactor", "SKILL.md"),
103608
+ join60("skills", "remove-ai-slops", "SKILL.md"),
103609
+ join60("skills", "review-work", "SKILL.md"),
103610
+ join60("skills", "ultimate-browsing", "SKILL.md"),
103611
+ join60("skills", "ultrawork", "SKILL.md"),
103612
+ join60("skills", "ulw-execute", "SKILL.md"),
103613
+ join60("skills", "ulw-loop", "SKILL.md"),
103614
+ join60("skills", "ulw-plan", "SKILL.md"),
103615
+ join60("skills", "ulw-research", "SKILL.md"),
103616
+ join60("skills", "visual-qa", "SKILL.md"),
103617
+ join60("skills-conditional", "x-search", "SKILL.md"),
103618
+ join60("runtime", "ast-grep-mcp", "cli.js"),
103619
+ join60("runtime", "agent-toolkit", "cli.js"),
103620
+ join60("runtime", "agent-toolkit", "ulw-loop", "cli.js"),
103621
+ join60("runtime", "agent-toolkit", "omo-agent-toolkit"),
103622
+ join60("runtime", "agent-toolkit", "omo-agent-toolkit.cmd"),
103623
+ join60("runtime", "lsp-daemon", "dist", "cli.js"),
103624
+ join60("runtime", "lsp-daemon", "dist", "index.js"),
103625
+ join60("runtime", "lsp-daemon", "dist", "index.d.ts"),
103626
+ join60("runtime", "lsp-daemon", "dist", "daemon-client.js"),
103627
+ join60("runtime", "lsp-daemon", "dist", "daemon-client.d.ts"),
103628
+ join60("runtime", "lsp-daemon", "dist", "package.json"),
103629
+ join60("runtime", "lsp-daemon", "dist", ".omo-runtime-manifest.json"),
103630
+ join60("scripts", "install.mjs")
103554
103631
  ];
103555
103632
  async function ensurePluginArtifacts(context) {
103556
103633
  if (context.allowBuild) {
103557
- await context.runCommand("node", [join61(context.pluginPath, "scripts", "build-extension.mjs")], { cwd: context.repoRoot });
103558
- await context.runCommand("node", [join61("packages", "omo-codex", "plugin", "scripts", "materialize-shared-upstreams.mjs")], { cwd: context.repoRoot });
103559
- await context.runCommand("node", [join61(context.pluginPath, "scripts", "sync-skills.mjs")], { cwd: context.repoRoot });
103560
- await context.runCommand("node", [join61(context.pluginPath, "scripts", "build-install.mjs")], { cwd: context.repoRoot });
103561
- await context.runCommand("node", [join61(context.pluginPath, "scripts", "stage-lsp-daemon-runtime.mjs")], { cwd: context.repoRoot });
103562
- await context.runCommand("node", [join61(context.pluginPath, "scripts", "stage-ast-grep-mcp-runtime.mjs")], { cwd: context.repoRoot });
103563
- await context.runCommand("node", [join61(context.pluginPath, "scripts", "stage-agent-toolkit.mjs")], { cwd: context.repoRoot });
103564
- await context.runCommand("node", [join61(context.pluginPath, "scripts", "stage-x-search-skill.mjs")], { cwd: context.repoRoot });
103634
+ await context.runCommand("node", [join60(context.pluginPath, "scripts", "build-extension.mjs")], { cwd: context.repoRoot });
103635
+ await context.runCommand("node", [join60("packages", "omo-codex", "plugin", "scripts", "materialize-shared-upstreams.mjs")], { cwd: context.repoRoot });
103636
+ await context.runCommand("node", [join60(context.pluginPath, "scripts", "sync-skills.mjs")], { cwd: context.repoRoot });
103637
+ await context.runCommand("node", [join60(context.pluginPath, "scripts", "build-install.mjs")], { cwd: context.repoRoot });
103638
+ await context.runCommand("node", [join60(context.pluginPath, "scripts", "stage-lsp-daemon-runtime.mjs")], { cwd: context.repoRoot });
103639
+ await context.runCommand("node", [join60(context.pluginPath, "scripts", "stage-ast-grep-mcp-runtime.mjs")], { cwd: context.repoRoot });
103640
+ await context.runCommand("node", [join60(context.pluginPath, "scripts", "stage-agent-toolkit.mjs")], { cwd: context.repoRoot });
103641
+ await context.runCommand("node", [join60(context.pluginPath, "scripts", "stage-x-search-skill.mjs")], { cwd: context.repoRoot });
103565
103642
  }
103566
103643
  if (await hasMissingPluginArtifact(context.pluginPath)) {
103567
103644
  throw new Error(`Packed omo-senpi plugin is missing required runtime artifacts at ${context.pluginPath}`);
@@ -103570,14 +103647,14 @@ async function ensurePluginArtifacts(context) {
103570
103647
  }
103571
103648
  async function hasMissingPluginArtifact(pluginPath) {
103572
103649
  for (const artifact of REQUIRED_PLUGIN_ARTIFACTS) {
103573
- if (!await fileExists2(join61(pluginPath, artifact)))
103650
+ if (!await fileExists2(join60(pluginPath, artifact)))
103574
103651
  return true;
103575
103652
  }
103576
103653
  return false;
103577
103654
  }
103578
103655
  async function verifyAstGrepRuntimeIntegrity(pluginPath, platform) {
103579
- const runtimeEntry = join61(pluginPath, "runtime", "ast-grep-mcp", "cli.js");
103580
- const manifestPath = join61(dirname23(runtimeEntry), "manifest.json");
103656
+ const runtimeEntry = join60(pluginPath, "runtime", "ast-grep-mcp", "cli.js");
103657
+ const manifestPath = join60(dirname23(runtimeEntry), "manifest.json");
103581
103658
  let runtimeStat;
103582
103659
  try {
103583
103660
  runtimeStat = await stat6(runtimeEntry);
@@ -103652,7 +103729,7 @@ async function runSenpiInstaller(options = {}) {
103652
103729
  const backupPath = await writeSettingsAtomically(context.settingsPath, settings);
103653
103730
  installLocalLauncher({
103654
103731
  pluginPath: context.pluginPath,
103655
- senpiCliPath: join62(context.repoRoot, "packages", "coding-agent", "dist", "cli.js")
103732
+ senpiCliPath: join61(context.repoRoot, "packages", "coding-agent", "dist", "cli.js")
103656
103733
  });
103657
103734
  return {
103658
103735
  ok: true,
@@ -103669,12 +103746,12 @@ function resolveInstallContext(options) {
103669
103746
  const allowBuild = options.pluginPath === undefined;
103670
103747
  const repoRoot = resolve19(options.repoRoot ?? (allowBuild ? findRepoRoot2(dirname24(fileURLToPath(import.meta.url))) : dirname24(resolve19(options.pluginPath))));
103671
103748
  const agentDir = resolve19(options.agentDir ?? resolveAgentHome({ env: env2, homeDir: env2.HOME ?? homedir11() }));
103672
- const pluginPath = resolve19(options.pluginPath ?? join62(repoRoot, "packages", "omo-senpi", "plugin"));
103749
+ const pluginPath = resolve19(options.pluginPath ?? join61(repoRoot, "packages", "omo-senpi", "plugin"));
103673
103750
  return {
103674
103751
  env: env2,
103675
103752
  repoRoot,
103676
103753
  agentDir,
103677
- settingsPath: join62(agentDir, "settings.json"),
103754
+ settingsPath: join61(agentDir, "settings.json"),
103678
103755
  pluginPath,
103679
103756
  platform: options.platform ?? process.platform,
103680
103757
  allowBuild,
@@ -103691,7 +103768,7 @@ async function defaultRunCommand3(command, args, options) {
103691
103768
  function findRepoRoot2(importerDir) {
103692
103769
  let current = importerDir;
103693
103770
  for (let depth = 0;depth <= 7; depth += 1) {
103694
- if (fileExistsSync(join62(current, "packages", "omo-senpi", "plugin", "package.json")))
103771
+ if (fileExistsSync(join61(current, "packages", "omo-senpi", "plugin", "package.json")))
103695
103772
  return current;
103696
103773
  current = resolve19(current, "..");
103697
103774
  }
@@ -103735,19 +103812,19 @@ init_provider_availability();
103735
103812
 
103736
103813
  // packages/omo-opencode/src/cli/config-manager/add-tui-plugin-to-tui-config.ts
103737
103814
  import { existsSync as existsSync33, mkdirSync as mkdirSync11, readFileSync as readFileSync16 } from "fs";
103738
- import { join as join64 } from "path";
103815
+ import { join as join63 } from "path";
103739
103816
 
103740
103817
  // packages/omo-opencode/src/cli/doctor/checks/tui-plugin-config.ts
103741
103818
  init_shared();
103742
103819
  import { existsSync as existsSync32, readFileSync as readFileSync15 } from "fs";
103743
- import { join as join63 } from "path";
103820
+ import { join as join62 } from "path";
103744
103821
  var TUI_SUBPATH = "tui";
103745
103822
  var TUI_EXPORT_SUBPATH = `./${TUI_SUBPATH}`;
103746
103823
  function fileEntryPackageJsonPath(entry) {
103747
103824
  let path7 = entry.slice("file:".length);
103748
103825
  if (path7.startsWith("//"))
103749
103826
  path7 = path7.slice(2);
103750
- return join63(path7, "package.json");
103827
+ return join62(path7, "package.json");
103751
103828
  }
103752
103829
  function packageJsonExportsTui(pkgJsonPath) {
103753
103830
  if (!existsSync32(pkgJsonPath))
@@ -103785,7 +103862,7 @@ function packageExportsTuiForServerEntry(entry) {
103785
103862
  const packageName = packageNameFromServerEntry(entry);
103786
103863
  if (packageName === null)
103787
103864
  return null;
103788
- return packageJsonExportsTui(join63(getOpenCodeConfigDir({ binary: "opencode" }), "node_modules", packageName, "package.json"));
103865
+ return packageJsonExportsTui(join62(getOpenCodeConfigDir({ binary: "opencode" }), "node_modules", packageName, "package.json"));
103789
103866
  }
103790
103867
  function isOurFilePluginEntry(entry) {
103791
103868
  if (typeof entry !== "string" || !entry.startsWith("file:"))
@@ -103850,7 +103927,7 @@ function detectServerPluginRegistration() {
103850
103927
  }
103851
103928
  }
103852
103929
  function detectTuiPluginRegistration() {
103853
- const tuiJsonPath = join63(getOpenCodeConfigDir({ binary: "opencode" }), "tui.json");
103930
+ const tuiJsonPath = join62(getOpenCodeConfigDir({ binary: "opencode" }), "tui.json");
103854
103931
  if (!existsSync32(tuiJsonPath)) {
103855
103932
  return {
103856
103933
  registered: false,
@@ -104006,10 +104083,10 @@ function readConfig(path7) {
104006
104083
  return null;
104007
104084
  }
104008
104085
  function readServerConfig(configDir) {
104009
- const jsoncPath = join64(configDir, "opencode.jsonc");
104086
+ const jsoncPath = join63(configDir, "opencode.jsonc");
104010
104087
  if (existsSync33(jsoncPath))
104011
104088
  return readConfig(jsoncPath);
104012
- const jsonPath = join64(configDir, "opencode.json");
104089
+ const jsonPath = join63(configDir, "opencode.json");
104013
104090
  if (existsSync33(jsonPath))
104014
104091
  return readConfig(jsonPath);
104015
104092
  return null;
@@ -104051,7 +104128,7 @@ function ensureTuiPluginEntry(opts = {}) {
104051
104128
  if (!desiredEntry) {
104052
104129
  return { changed: false, reason: "no-server-entry" };
104053
104130
  }
104054
- const tuiJsonPath = join64(configDir, "tui.json");
104131
+ const tuiJsonPath = join63(configDir, "tui.json");
104055
104132
  const { config: config3, malformed } = readTuiConfig(tuiJsonPath);
104056
104133
  if (malformed) {
104057
104134
  return { changed: false, reason: "malformed" };
@@ -104067,7 +104144,7 @@ function ensureTuiPluginEntry(opts = {}) {
104067
104144
 
104068
104145
  // packages/omo-opencode/src/cli/install-ast-grep-sg.ts
104069
104146
  import { homedir as homedir12 } from "os";
104070
- import { join as join65 } from "path";
104147
+ import { join as join64 } from "path";
104071
104148
 
104072
104149
  // packages/shared-skills/index.mjs
104073
104150
  import { existsSync as existsSync34 } from "fs";
@@ -104089,9 +104166,9 @@ function describeResult2(result) {
104089
104166
  }
104090
104167
  async function installAstGrepForOpenCode(options = {}) {
104091
104168
  const platform = options.platform ?? process.platform;
104092
- const baseDir = join65(options.homeDir ?? homedir12(), ".omo");
104169
+ const baseDir = join64(options.homeDir ?? homedir12(), ".omo");
104093
104170
  const targetDir = astGrepRuntimeDir(baseDir, platform, options.arch ?? process.arch);
104094
- const skillDir = join65(options.sharedSkillsRoot ?? sharedSkillsRootPath(), "ast-grep");
104171
+ const skillDir = join64(options.sharedSkillsRoot ?? sharedSkillsRootPath(), "ast-grep");
104095
104172
  const installer = options.installer ?? runAstGrepSkillInstall;
104096
104173
  try {
104097
104174
  const result = await installer({ platform, skillDir, targetDir });
@@ -104209,6 +104286,7 @@ async function runCliInstaller(args, version3) {
104209
104286
  return 1;
104210
104287
  }
104211
104288
  printWarning(`Codex install failed (OpenCode install is still complete): ${message}`);
104289
+ printInfo(`The Codex harness is NOT installed. Fix the error above, then re-run: ${import_picocolors3.default.cyan("bunx oh-my-openagent install --platform=codex")}`);
104212
104290
  }
104213
104291
  console.log();
104214
104292
  }
@@ -105681,6 +105759,7 @@ async function runTuiInstaller(args, version3) {
105681
105759
  return 1;
105682
105760
  }
105683
105761
  log4.warn(`Codex install failed (OpenCode install remains successful): ${message}`);
105762
+ log4.info("The Codex harness is NOT installed. Fix the error above, then re-run: bunx oh-my-openagent install --platform=codex");
105684
105763
  }
105685
105764
  }
105686
105765
  if (config3.hasSenpi) {
@@ -108310,9 +108389,9 @@ function readCurrentTopLevelTask(planPath) {
108310
108389
  }
108311
108390
  // packages/boulder-state/src/storage/path.ts
108312
108391
  import { existsSync as existsSync36 } from "fs";
108313
- import { isAbsolute as isAbsolute12, join as join66, relative as relative8, resolve as resolve20 } from "path";
108392
+ import { isAbsolute as isAbsolute12, join as join65, relative as relative8, resolve as resolve20 } from "path";
108314
108393
  function getBoulderFilePath(directory) {
108315
- return join66(directory, BOULDER_DIR, BOULDER_FILE);
108394
+ return join65(directory, BOULDER_DIR, BOULDER_FILE);
108316
108395
  }
108317
108396
  function resolveTrackedPath(baseDirectory, trackedPath) {
108318
108397
  return isAbsolute12(trackedPath) ? resolve20(trackedPath) : resolve20(baseDirectory, trackedPath);
@@ -108495,9 +108574,9 @@ init_state();
108495
108574
  var CONTINUATION_MARKER_DIR = ".omo/run-continuation";
108496
108575
  // packages/omo-opencode/src/features/run-continuation-state/storage.ts
108497
108576
  import { existsSync as existsSync39, mkdirSync as mkdirSync12, readFileSync as readFileSync20, rmSync as rmSync3, writeFileSync as writeFileSync7 } from "fs";
108498
- import { join as join67 } from "path";
108577
+ import { join as join66 } from "path";
108499
108578
  function getMarkerPath(directory, sessionID) {
108500
- return join67(directory, CONTINUATION_MARKER_DIR, `${sessionID}.json`);
108579
+ return join66(directory, CONTINUATION_MARKER_DIR, `${sessionID}.json`);
108501
108580
  }
108502
108581
  function readContinuationMarker(directory, sessionID) {
108503
108582
  const markerPath = getMarkerPath(directory, sessionID);
@@ -108570,7 +108649,7 @@ async function isSessionInBoulderLineage(input) {
108570
108649
  init_shared();
108571
108650
  init_compaction_marker();
108572
108651
  import { readFileSync as readFileSync21, readdirSync as readdirSync8 } from "fs";
108573
- import { join as join68 } from "path";
108652
+ import { join as join67 } from "path";
108574
108653
  var defaultSessionLastAgentDeps = {
108575
108654
  getMessageDir,
108576
108655
  isSqliteBackend,
@@ -108630,7 +108709,7 @@ async function getLastAgentFromSession(sessionID, client3, deps = {}) {
108630
108709
  try {
108631
108710
  const messages = readdirSync8(messageDir).filter((fileName) => fileName.endsWith(".json")).map((fileName) => {
108632
108711
  try {
108633
- const content = readFileSync21(join68(messageDir, fileName), "utf-8");
108712
+ const content = readFileSync21(join67(messageDir, fileName), "utf-8");
108634
108713
  const parsed = JSON.parse(content);
108635
108714
  return {
108636
108715
  fileName,
@@ -108674,7 +108753,7 @@ init_agent_display_names();
108674
108753
  // packages/omo-opencode/src/hooks/ralph-loop/storage.ts
108675
108754
  init_frontmatter2();
108676
108755
  import { existsSync as existsSync40, readFileSync as readFileSync22, writeFileSync as writeFileSync8, unlinkSync as unlinkSync6, mkdirSync as mkdirSync13 } from "fs";
108677
- import { dirname as dirname26, join as join69 } from "path";
108756
+ import { dirname as dirname26, join as join68 } from "path";
108678
108757
 
108679
108758
  // packages/omo-opencode/src/hooks/ralph-loop/constants.ts
108680
108759
  var DEFAULT_STATE_FILE = ".omo/ralph-loop.local.md";
@@ -108683,7 +108762,7 @@ var DEFAULT_COMPLETION_PROMISE = "DONE";
108683
108762
 
108684
108763
  // packages/omo-opencode/src/hooks/ralph-loop/storage.ts
108685
108764
  function getStateFilePath(directory, customPath) {
108686
- return customPath ? join69(directory, customPath) : join69(directory, DEFAULT_STATE_FILE);
108765
+ return customPath ? join68(directory, customPath) : join68(directory, DEFAULT_STATE_FILE);
108687
108766
  }
108688
108767
  function readState(directory, customPath) {
108689
108768
  const filePath = getStateFilePath(directory, customPath);
@@ -109790,7 +109869,7 @@ init_extract_semver();
109790
109869
  init_bun_which_shim();
109791
109870
  import { existsSync as existsSync48, accessSync as accessSync4, constants as constants12 } from "fs";
109792
109871
  import { homedir as homedir15 } from "os";
109793
- import { join as join76 } from "path";
109872
+ import { join as join75 } from "path";
109794
109873
 
109795
109874
  // packages/omo-opencode/src/cli/doctor/framework/spawn-with-timeout.ts
109796
109875
  init_spawn_with_windows_hide();
@@ -109882,17 +109961,17 @@ function getDesktopAppPaths(platform) {
109882
109961
  case "darwin":
109883
109962
  return [
109884
109963
  "/Applications/OpenCode.app/Contents/MacOS/OpenCode",
109885
- join76(home, "Applications", "OpenCode.app", "Contents", "MacOS", "OpenCode")
109964
+ join75(home, "Applications", "OpenCode.app", "Contents", "MacOS", "OpenCode")
109886
109965
  ];
109887
109966
  case "win32": {
109888
109967
  const programFiles = process.env.ProgramFiles;
109889
109968
  const localAppData = process.env.LOCALAPPDATA;
109890
109969
  const paths2 = [];
109891
109970
  if (programFiles) {
109892
- paths2.push(join76(programFiles, "OpenCode", "OpenCode.exe"));
109971
+ paths2.push(join75(programFiles, "OpenCode", "OpenCode.exe"));
109893
109972
  }
109894
109973
  if (localAppData) {
109895
- paths2.push(join76(localAppData, "OpenCode", "OpenCode.exe"));
109974
+ paths2.push(join75(localAppData, "OpenCode", "OpenCode.exe"));
109896
109975
  }
109897
109976
  return paths2;
109898
109977
  }
@@ -109900,8 +109979,8 @@ function getDesktopAppPaths(platform) {
109900
109979
  return [
109901
109980
  "/usr/bin/opencode",
109902
109981
  "/usr/lib/opencode/opencode",
109903
- join76(home, "Applications", "opencode-desktop-linux-x86_64.AppImage"),
109904
- join76(home, "Applications", "opencode-desktop-linux-aarch64.AppImage")
109982
+ join75(home, "Applications", "opencode-desktop-linux-x86_64.AppImage"),
109983
+ join75(home, "Applications", "opencode-desktop-linux-aarch64.AppImage")
109905
109984
  ];
109906
109985
  default:
109907
109986
  return [];
@@ -109933,7 +110012,7 @@ async function findOpenCodeBinary(platform = process.platform, checkExists = exi
109933
110012
  const candidates = getCommandCandidates2(platform);
109934
110013
  for (const entry of pathEnv.split(delimiter3).filter(Boolean)) {
109935
110014
  for (const command of candidates) {
109936
- const fullPath = join76(entry, command);
110015
+ const fullPath = join75(entry, command);
109937
110016
  if (checkExists(fullPath) && isExecutable2(fullPath)) {
109938
110017
  return { binary: command, path: fullPath };
109939
110018
  }
@@ -110077,22 +110156,22 @@ init_package_json_locator();
110077
110156
  import { existsSync as existsSync50, readFileSync as readFileSync31, readdirSync as readdirSync10 } from "fs";
110078
110157
  import { createRequire } from "module";
110079
110158
  import { homedir as homedir16 } from "os";
110080
- import { join as join77 } from "path";
110159
+ import { join as join76 } from "path";
110081
110160
  import { fileURLToPath as fileURLToPath6 } from "url";
110082
110161
  init_shared();
110083
110162
  function getPlatformDefaultCacheDir(platform = process.platform) {
110084
110163
  if (platform === "darwin")
110085
- return join77(homedir16(), "Library", "Caches");
110164
+ return join76(homedir16(), "Library", "Caches");
110086
110165
  if (platform === "win32")
110087
- return process.env.LOCALAPPDATA ?? join77(homedir16(), "AppData", "Local");
110088
- return join77(homedir16(), ".cache");
110166
+ return process.env.LOCALAPPDATA ?? join76(homedir16(), "AppData", "Local");
110167
+ return join76(homedir16(), ".cache");
110089
110168
  }
110090
110169
  function resolveOpenCodeCacheDir() {
110091
110170
  const xdgCacheHome = process.env.XDG_CACHE_HOME;
110092
110171
  if (xdgCacheHome)
110093
- return join77(xdgCacheHome, "opencode");
110172
+ return join76(xdgCacheHome, "opencode");
110094
110173
  const fromShared = getOpenCodeCacheDir();
110095
- const platformDefault = join77(getPlatformDefaultCacheDir(), "opencode");
110174
+ const platformDefault = join76(getPlatformDefaultCacheDir(), "opencode");
110096
110175
  if (existsSync50(fromShared) || !existsSync50(platformDefault))
110097
110176
  return fromShared;
110098
110177
  return platformDefault;
@@ -110124,11 +110203,11 @@ function normalizeVersion(value) {
110124
110203
  function createPackageCandidates(rootDir) {
110125
110204
  return ACCEPTED_PACKAGE_NAMES.map((packageName) => ({
110126
110205
  packageName,
110127
- installedPackagePath: join77(rootDir, "node_modules", packageName, "package.json")
110206
+ installedPackagePath: join76(rootDir, "node_modules", packageName, "package.json")
110128
110207
  }));
110129
110208
  }
110130
110209
  function createTaggedInstallCandidates(rootDir) {
110131
- const packagesDir = join77(rootDir, "packages");
110210
+ const packagesDir = join76(rootDir, "packages");
110132
110211
  if (!existsSync50(packagesDir))
110133
110212
  return [];
110134
110213
  const candidates = [];
@@ -110136,14 +110215,14 @@ function createTaggedInstallCandidates(rootDir) {
110136
110215
  const packageName = ACCEPTED_PACKAGE_NAMES.find((name) => entryName.startsWith(`${name}@`));
110137
110216
  if (packageName === undefined)
110138
110217
  continue;
110139
- const installDir = join77(packagesDir, entryName);
110218
+ const installDir = join76(packagesDir, entryName);
110140
110219
  candidates.push({
110141
110220
  cacheDir: installDir,
110142
- cachePackagePath: join77(installDir, "package.json"),
110221
+ cachePackagePath: join76(installDir, "package.json"),
110143
110222
  packageCandidates: [
110144
110223
  {
110145
110224
  packageName,
110146
- installedPackagePath: join77(installDir, "node_modules", packageName, "package.json")
110225
+ installedPackagePath: join76(installDir, "node_modules", packageName, "package.json")
110147
110226
  }
110148
110227
  ]
110149
110228
  });
@@ -110188,13 +110267,13 @@ function getLoadedPluginVersion() {
110188
110267
  const candidates = [
110189
110268
  {
110190
110269
  cacheDir: configDir,
110191
- cachePackagePath: join77(configDir, "package.json"),
110270
+ cachePackagePath: join76(configDir, "package.json"),
110192
110271
  packageCandidates: createPackageCandidates(configDir)
110193
110272
  },
110194
110273
  ...createTaggedInstallCandidates(configDir),
110195
110274
  {
110196
110275
  cacheDir,
110197
- cachePackagePath: join77(cacheDir, "package.json"),
110276
+ cachePackagePath: join76(cacheDir, "package.json"),
110198
110277
  packageCandidates: createPackageCandidates(cacheDir)
110199
110278
  },
110200
110279
  ...createTaggedInstallCandidates(cacheDir)
@@ -110388,18 +110467,18 @@ async function checkSystem(deps = defaultDeps6) {
110388
110467
  init_shared();
110389
110468
  import { existsSync as existsSync52, readFileSync as readFileSync33 } from "fs";
110390
110469
  import { homedir as homedir17 } from "os";
110391
- import { join as join78 } from "path";
110470
+ import { join as join77 } from "path";
110392
110471
  function getUserConfigDir2() {
110393
110472
  const xdgConfig = process.env.XDG_CONFIG_HOME;
110394
110473
  if (xdgConfig)
110395
- return join78(xdgConfig, "opencode");
110396
- return join78(homedir17(), ".config", "opencode");
110474
+ return join77(xdgConfig, "opencode");
110475
+ return join77(homedir17(), ".config", "opencode");
110397
110476
  }
110398
110477
  function loadCustomProviderNames() {
110399
110478
  const configDir = getUserConfigDir2();
110400
110479
  const candidatePaths = [
110401
- join78(configDir, "opencode.json"),
110402
- join78(configDir, "opencode.jsonc")
110480
+ join77(configDir, "opencode.json"),
110481
+ join77(configDir, "opencode.jsonc")
110403
110482
  ];
110404
110483
  for (const configPath of candidatePaths) {
110405
110484
  if (!existsSync52(configPath))
@@ -110420,7 +110499,7 @@ function loadCustomProviderNames() {
110420
110499
  return [];
110421
110500
  }
110422
110501
  function loadAvailableModelsFromCache() {
110423
- const cacheFile = join78(getOpenCodeCacheDir(), "models.json");
110502
+ const cacheFile = join77(getOpenCodeCacheDir(), "models.json");
110424
110503
  const customProviders = loadCustomProviderNames();
110425
110504
  if (!existsSync52(cacheFile)) {
110426
110505
  if (customProviders.length > 0) {
@@ -110482,7 +110561,7 @@ function loadOmoConfig2() {
110482
110561
 
110483
110562
  // packages/omo-opencode/src/cli/doctor/checks/model-resolution-details.ts
110484
110563
  init_shared();
110485
- import { join as join79 } from "path";
110564
+ import { join as join78 } from "path";
110486
110565
 
110487
110566
  // packages/omo-opencode/src/cli/doctor/checks/model-resolution-variant.ts
110488
110567
  function formatModelWithVariant(model, variant) {
@@ -110524,7 +110603,7 @@ function formatCapabilityResolutionLabel(mode2) {
110524
110603
  }
110525
110604
  function buildModelResolutionDetails(options) {
110526
110605
  const details = [];
110527
- const cacheFile = join79(getOpenCodeCacheDir(), "models.json");
110606
+ const cacheFile = join78(getOpenCodeCacheDir(), "models.json");
110528
110607
  details.push("\u2550\u2550\u2550 Available Models (from cache) \u2550\u2550\u2550");
110529
110608
  details.push("");
110530
110609
  if (options.available.cacheExists) {
@@ -110834,7 +110913,7 @@ async function checkConfig() {
110834
110913
  // packages/omo-opencode/src/cli/doctor/checks/deprecated-reasoning-keys.ts
110835
110914
  init_main();
110836
110915
  import { existsSync as existsSync53, readFileSync as readFileSync34 } from "fs";
110837
- import { join as join80 } from "path";
110916
+ import { join as join79 } from "path";
110838
110917
  var CANONICAL_REPLACEMENT = new Map([
110839
110918
  ["variant", "reasoning"],
110840
110919
  ["reasoningEffort", "reasoning"],
@@ -110889,7 +110968,7 @@ function userConfigPaths() {
110889
110968
  const home = process.env.HOME ?? process.env.USERPROFILE;
110890
110969
  if (home === undefined || home.length === 0)
110891
110970
  return [];
110892
- return [join80(home, ".omo", "omo.jsonc"), join80(home, ".omo", "omo.json")];
110971
+ return [join79(home, ".omo", "omo.jsonc"), join79(home, ".omo", "omo.json")];
110893
110972
  }
110894
110973
  async function checkDeprecatedReasoningKeys() {
110895
110974
  const issues = [];
@@ -110915,25 +110994,25 @@ init_src();
110915
110994
  import { existsSync as existsSync54 } from "fs";
110916
110995
  import { createRequire as createRequire2 } from "module";
110917
110996
  import { homedir as homedir19 } from "os";
110918
- import { dirname as dirname31, join as join82 } from "path";
110997
+ import { dirname as dirname31, join as join81 } from "path";
110919
110998
 
110920
110999
  // packages/omo-opencode/src/hooks/comment-checker/downloader.ts
110921
- import { join as join81 } from "path";
111000
+ import { join as join80 } from "path";
110922
111001
  import { homedir as homedir18, tmpdir as tmpdir4 } from "os";
110923
111002
  init_binary_downloader();
110924
111003
  init_logger2();
110925
111004
  init_plugin_identity();
110926
111005
  var DEBUG = process.env.COMMENT_CHECKER_DEBUG === "1";
110927
- var DEBUG_FILE = join81(tmpdir4(), "comment-checker-debug.log");
111006
+ var DEBUG_FILE = join80(tmpdir4(), "comment-checker-debug.log");
110928
111007
  function getCacheDir2() {
110929
111008
  if (process.platform === "win32") {
110930
111009
  const localAppData = process.env.LOCALAPPDATA || process.env.APPDATA;
110931
- const base2 = localAppData || join81(homedir18(), "AppData", "Local");
110932
- return join81(base2, CACHE_DIR_NAME, "bin");
111010
+ const base2 = localAppData || join80(homedir18(), "AppData", "Local");
111011
+ return join80(base2, CACHE_DIR_NAME, "bin");
110933
111012
  }
110934
111013
  const xdgCache = process.env.XDG_CACHE_HOME;
110935
- const base = xdgCache || join81(homedir18(), ".cache");
110936
- return join81(base, CACHE_DIR_NAME, "bin");
111014
+ const base = xdgCache || join80(homedir18(), ".cache");
111015
+ return join80(base, CACHE_DIR_NAME, "bin");
110937
111016
  }
110938
111017
  function getBinaryName() {
110939
111018
  return process.platform === "win32" ? "comment-checker.exe" : "comment-checker";
@@ -110983,7 +111062,7 @@ async function getBinaryVersion(binary) {
110983
111062
  }
110984
111063
  }
110985
111064
  async function checkAstGrepCli() {
110986
- const runtimeDir = astGrepRuntimeDir(join82(homedir19(), ".omo"));
111065
+ const runtimeDir = astGrepRuntimeDir(join81(homedir19(), ".omo"));
110987
111066
  const sgPath = findSgBinarySync({ runtimeDir });
110988
111067
  if (sgPath === null) {
110989
111068
  return {
@@ -111013,10 +111092,10 @@ function findCommentCheckerPackageBinary(baseDirOverride, resolvePackageJsonPath
111013
111092
  const platformKey = `${process.platform}-${process.arch === "x64" ? "x64" : process.arch}`;
111014
111093
  try {
111015
111094
  const packageDir = baseDirOverride ?? dirname31(resolvePackageJsonPath());
111016
- const vendorPath = join82(packageDir, "vendor", platformKey, binaryName);
111095
+ const vendorPath = join81(packageDir, "vendor", platformKey, binaryName);
111017
111096
  if (existsSync54(vendorPath))
111018
111097
  return vendorPath;
111019
- const binPath = join82(packageDir, "bin", binaryName);
111098
+ const binPath = join81(packageDir, "bin", binaryName);
111020
111099
  if (existsSync54(binPath))
111021
111100
  return binPath;
111022
111101
  } catch (error51) {
@@ -111392,13 +111471,13 @@ function getInstalledLspServers(options = {}) {
111392
111471
  init_shared();
111393
111472
  import { existsSync as existsSync56, readFileSync as readFileSync36 } from "fs";
111394
111473
  import { homedir as homedir20 } from "os";
111395
- import { join as join83 } from "path";
111474
+ import { join as join82 } from "path";
111396
111475
  var BUILTIN_MCP_SERVERS = ["websearch", "context7", "grep_app", "lsp"];
111397
111476
  function getMcpConfigPaths() {
111398
111477
  return [
111399
- join83(homedir20(), ".claude", ".mcp.json"),
111400
- join83(process.cwd(), ".mcp.json"),
111401
- join83(process.cwd(), ".claude", ".mcp.json")
111478
+ join82(homedir20(), ".claude", ".mcp.json"),
111479
+ join82(process.cwd(), ".mcp.json"),
111480
+ join82(process.cwd(), ".claude", ".mcp.json")
111402
111481
  ];
111403
111482
  }
111404
111483
  function loadUserMcpConfig() {
@@ -111680,7 +111759,7 @@ init_src();
111680
111759
  import { existsSync as existsSync58 } from "fs";
111681
111760
  import { lstat as lstat15, readdir as readdir14, readFile as readFile27 } from "fs/promises";
111682
111761
  import { homedir as homedir22 } from "os";
111683
- import { basename as basename10, join as join84, resolve as resolve23 } from "path";
111762
+ import { basename as basename10, join as join83, resolve as resolve23 } from "path";
111684
111763
  // packages/omo-opencode/package.json
111685
111764
  var package_default3 = {
111686
111765
  name: "@oh-my-opencode/omo-opencode",
@@ -111746,13 +111825,13 @@ var CODEX_BIN_NAMES = [
111746
111825
  "omo-git-bash-hook"
111747
111826
  ];
111748
111827
  async function gatherCodexSummary(deps = {}) {
111749
- const codexHome = resolve23(deps.codexHome ?? process.env.CODEX_HOME ?? join84(homedir22(), ".codex"));
111828
+ const codexHome = resolve23(deps.codexHome ?? process.env.CODEX_HOME ?? join83(homedir22(), ".codex"));
111750
111829
  const binDir = resolveCodexInstallerBinDir({ binDir: deps.binDir, codexHome, env: process.env });
111751
111830
  const detection = await (deps.detectCodexInstallation ?? detectCodexInstallation)();
111752
111831
  const pluginRoot = await resolveInstalledPluginRoot(codexHome);
111753
- const manifest = pluginRoot === null ? null : await readJson(join84(pluginRoot, ".codex-plugin", "plugin.json"));
111754
- const installSnapshot = pluginRoot === null ? null : await readJson(join84(pluginRoot, "lazycodex-install.json"));
111755
- const configPath = join84(codexHome, "config.toml");
111832
+ const manifest = pluginRoot === null ? null : await readJson(join83(pluginRoot, ".codex-plugin", "plugin.json"));
111833
+ const installSnapshot = pluginRoot === null ? null : await readJson(join83(pluginRoot, "lazycodex-install.json"));
111834
+ const configPath = join83(codexHome, "config.toml");
111756
111835
  const pluginVersion = stringField(manifest, "version");
111757
111836
  return {
111758
111837
  codexPath: detection.found && "path" in detection ? detection.path : null,
@@ -111809,7 +111888,7 @@ function buildCodexIssues(summary) {
111809
111888
  if (summary.pluginRoot === null) {
111810
111889
  issues.push({
111811
111890
  title: "OMO Codex plugin is not installed",
111812
- description: `Expected cached plugin at ${join84("plugins", "cache", MARKETPLACE_NAME, PLUGIN_NAME2, DEFAULT_PLUGIN_VERSION)} under CODEX_HOME.`,
111891
+ description: `Expected cached plugin at ${join83("plugins", "cache", MARKETPLACE_NAME, PLUGIN_NAME2, DEFAULT_PLUGIN_VERSION)} under CODEX_HOME.`,
111813
111892
  fix: "Run: npx lazycodex-ai install",
111814
111893
  severity: "error",
111815
111894
  affects: ["plugin loading"]
@@ -111874,12 +111953,12 @@ function buildCodexIssues(summary) {
111874
111953
  return issues;
111875
111954
  }
111876
111955
  async function resolveInstalledPluginRoot(codexHome) {
111877
- const pluginRoot = join84(codexHome, "plugins", "cache", MARKETPLACE_NAME, PLUGIN_NAME2);
111956
+ const pluginRoot = join83(codexHome, "plugins", "cache", MARKETPLACE_NAME, PLUGIN_NAME2);
111878
111957
  if (!existsSync58(pluginRoot))
111879
111958
  return null;
111880
111959
  const versions2 = await readdir14(pluginRoot, { withFileTypes: true });
111881
111960
  const candidates = versions2.filter((entry) => entry.isDirectory()).map((entry) => entry.name).sort(compareVersionsDescending);
111882
- return candidates.length === 0 ? null : join84(pluginRoot, candidates[0] ?? DEFAULT_PLUGIN_VERSION);
111961
+ return candidates.length === 0 ? null : join83(pluginRoot, candidates[0] ?? DEFAULT_PLUGIN_VERSION);
111883
111962
  }
111884
111963
  async function readCodexConfigSummary(configPath) {
111885
111964
  if (!existsSync58(configPath)) {
@@ -111907,13 +111986,13 @@ async function readCodexConfigSummary(configPath) {
111907
111986
  async function readLinkedBins(binDir) {
111908
111987
  const linked = [];
111909
111988
  for (const name of CODEX_BIN_NAMES) {
111910
- if (await pathExists2(join84(binDir, process.platform === "win32" ? `${name}.cmd` : name)))
111989
+ if (await pathExists2(join83(binDir, process.platform === "win32" ? `${name}.cmd` : name)))
111911
111990
  linked.push(name);
111912
111991
  }
111913
111992
  return linked;
111914
111993
  }
111915
111994
  async function readLinkedAgents(codexHome) {
111916
- const agentsDir = join84(codexHome, "agents");
111995
+ const agentsDir = join83(codexHome, "agents");
111917
111996
  if (!existsSync58(agentsDir))
111918
111997
  return [];
111919
111998
  const entries = await readdir14(agentsDir, { withFileTypes: true });
@@ -112029,7 +112108,7 @@ async function pathExists2(path15) {
112029
112108
  init_src();
112030
112109
  import { readdir as readdir15, readFile as readFile28, stat as stat7 } from "fs/promises";
112031
112110
  import { homedir as homedir23 } from "os";
112032
- import { dirname as dirname33, isAbsolute as isAbsolute13, join as join85, relative as relative9, resolve as resolve24, sep as sep9 } from "path";
112111
+ import { dirname as dirname33, isAbsolute as isAbsolute13, join as join84, relative as relative9, resolve as resolve24, sep as sep9 } from "path";
112033
112112
  var CODEX_COMPONENTS_CHECK_ID = "codex-components";
112034
112113
  var CODEX_COMPONENTS_CHECK_NAME = "codex-components";
112035
112114
  var PLUGIN_DATA_DIR_NAME = "omo-sisyphuslabs";
@@ -112039,7 +112118,7 @@ async function checkCodexComponents(deps = {}) {
112039
112118
  const env2 = deps.env ?? process.env;
112040
112119
  const platform = deps.platform ?? process.platform;
112041
112120
  const arch = deps.arch ?? process.arch;
112042
- const codexHome = resolve24(deps.codexHome ?? env2["CODEX_HOME"] ?? join85(homedir23(), ".codex"));
112121
+ const codexHome = resolve24(deps.codexHome ?? env2["CODEX_HOME"] ?? join84(homedir23(), ".codex"));
112043
112122
  const summary = await gatherCodexSummary({ ...deps, codexHome });
112044
112123
  if (summary.pluginRoot === null) {
112045
112124
  return {
@@ -112064,7 +112143,7 @@ async function checkCodexComponents(deps = {}) {
112064
112143
  });
112065
112144
  }
112066
112145
  const runtimeSgDir = runtimeSgDirectory(codexHome, platform, arch);
112067
- const runtimeSgPath = join85(runtimeSgDir, sgBinaryName(platform));
112146
+ const runtimeSgPath = join84(runtimeSgDir, sgBinaryName(platform));
112068
112147
  const sg = findSgBinarySync({
112069
112148
  arch,
112070
112149
  env: env2,
@@ -112176,7 +112255,7 @@ async function findManifestPaths(root, manifestName) {
112176
112255
  for (const entry of entries) {
112177
112256
  if (entry.name === "node_modules" || entry.name === ".git")
112178
112257
  continue;
112179
- const entryPath = join85(root, entry.name);
112258
+ const entryPath = join84(root, entry.name);
112180
112259
  if (entry.isDirectory()) {
112181
112260
  paths3.push(...await findManifestPaths(entryPath, manifestName));
112182
112261
  continue;
@@ -112220,18 +112299,18 @@ function isPluginRuntimePathArg(arg) {
112220
112299
  return normalized.endsWith(".js") && normalized.includes("/dist/") && (normalized.startsWith("./") || normalized.startsWith("../") || normalized.startsWith("components/") || normalized.startsWith("/") || isAbsolute13(arg));
112221
112300
  }
112222
112301
  function runtimeSgDirectory(codexHome, platform, arch) {
112223
- return join85(codexHome, "runtime", "ast-grep", runtimeSlug(platform, arch));
112302
+ return join84(codexHome, "runtime", "ast-grep", runtimeSlug(platform, arch));
112224
112303
  }
112225
112304
  function describeSgSource(sgPath, env2, runtimeSgDir, platform) {
112226
112305
  const override = env2[SG_PATH_ENV_KEY]?.trim();
112227
112306
  if (override !== undefined && override.length > 0 && sgPath === override)
112228
112307
  return `env override ${SG_PATH_ENV_KEY}`;
112229
- if (sgPath === join85(runtimeSgDir, sgBinaryName(platform)))
112308
+ if (sgPath === join84(runtimeSgDir, sgBinaryName(platform)))
112230
112309
  return "runtime dir";
112231
112310
  return "PATH";
112232
112311
  }
112233
112312
  async function readBootstrapStateSummary(codexHome) {
112234
- const statePath = join85(codexHome, "plugins", "data", PLUGIN_DATA_DIR_NAME, "bootstrap", "state.json");
112313
+ const statePath = join84(codexHome, "plugins", "data", PLUGIN_DATA_DIR_NAME, "bootstrap", "state.json");
112235
112314
  const raw = await readJson2(statePath);
112236
112315
  if (raw === null)
112237
112316
  return null;
@@ -112310,16 +112389,16 @@ function isRecord14(value) {
112310
112389
  import { existsSync as existsSync59 } from "fs";
112311
112390
  import { readFile as readFile29 } from "fs/promises";
112312
112391
  import { homedir as homedir24 } from "os";
112313
- import { join as join86, resolve as resolve25 } from "path";
112392
+ import { join as join85, resolve as resolve25 } from "path";
112314
112393
  var RUNTIME_WRAPPER_MARKER2 = "OMO_GENERATED_RUNTIME_WRAPPER";
112315
112394
  var CHECK_NAME = "codex-runtime-wrapper";
112316
112395
  var REINSTALL_COMMAND = "npx --yes lazycodex-ai@latest install --no-tui";
112317
112396
  async function checkCodexRuntimeWrapper(deps = {}) {
112318
- const codexHome = resolve25(deps.codexHome ?? process.env.CODEX_HOME ?? join86(homedir24(), ".codex"));
112397
+ const codexHome = resolve25(deps.codexHome ?? process.env.CODEX_HOME ?? join85(homedir24(), ".codex"));
112319
112398
  const binDir = resolveCodexInstallerBinDir({ binDir: deps.binDir, codexHome, env: process.env });
112320
112399
  const platform = deps.platform ?? process.platform;
112321
- const wrapperPath = join86(binDir, platform === "win32" ? "omo-agent-toolkit.cmd" : "omo-agent-toolkit");
112322
- const legacyWrapperPath = join86(binDir, platform === "win32" ? "omo.cmd" : "omo");
112400
+ const wrapperPath = join85(binDir, platform === "win32" ? "omo-agent-toolkit.cmd" : "omo-agent-toolkit");
112401
+ const legacyWrapperPath = join85(binDir, platform === "win32" ? "omo.cmd" : "omo");
112323
112402
  const [wrapper, legacyWrapper] = await Promise.all([readRuntimeWrapper(wrapperPath), readRuntimeWrapper(legacyWrapperPath)]);
112324
112403
  const issues = [];
112325
112404
  if (wrapper?.includes(RUNTIME_WRAPPER_MARKER2) === true) {
@@ -112847,12 +112926,12 @@ import {
112847
112926
  unlinkSync as unlinkSync9,
112848
112927
  writeFileSync as writeFileSync12
112849
112928
  } from "fs";
112850
- import { basename as basename11, dirname as dirname34, join as join89 } from "path";
112929
+ import { basename as basename11, dirname as dirname34, join as join88 } from "path";
112851
112930
 
112852
112931
  // packages/mcp-client-core/src/config-dir.ts
112853
112932
  import { existsSync as existsSync60, realpathSync as realpathSync8 } from "fs";
112854
112933
  import { homedir as homedir25 } from "os";
112855
- import { join as join87, resolve as resolve26 } from "path";
112934
+ import { join as join86, resolve as resolve26 } from "path";
112856
112935
  function resolveConfigPath2(pathValue) {
112857
112936
  const resolvedPath = resolve26(pathValue);
112858
112937
  if (!existsSync60(resolvedPath))
@@ -112870,13 +112949,13 @@ function getOpenCodeCliConfigDir(env2 = process.env) {
112870
112949
  if (customConfigDir) {
112871
112950
  return resolveConfigPath2(customConfigDir);
112872
112951
  }
112873
- const xdgConfigDir = env2["XDG_CONFIG_HOME"]?.trim() || join87(homedir25(), ".config");
112874
- return resolveConfigPath2(join87(xdgConfigDir, "opencode"));
112952
+ const xdgConfigDir = env2["XDG_CONFIG_HOME"]?.trim() || join86(homedir25(), ".config");
112953
+ return resolveConfigPath2(join86(xdgConfigDir, "opencode"));
112875
112954
  }
112876
112955
 
112877
112956
  // packages/mcp-client-core/src/mcp-oauth/storage-index.ts
112878
112957
  import { chmodSync as chmodSync4, existsSync as existsSync61, readFileSync as readFileSync38, renameSync as renameSync6, writeFileSync as writeFileSync11 } from "fs";
112879
- import { join as join88 } from "path";
112958
+ import { join as join87 } from "path";
112880
112959
  var INDEX_FILE_NAME = "index.json";
112881
112960
  function isTokenIndex(value) {
112882
112961
  if (typeof value !== "object" || value === null || Array.isArray(value))
@@ -112884,7 +112963,7 @@ function isTokenIndex(value) {
112884
112963
  return Object.values(value).every((entry) => typeof entry === "string");
112885
112964
  }
112886
112965
  function getIndexPath(storageDir) {
112887
- return join88(storageDir, INDEX_FILE_NAME);
112966
+ return join87(storageDir, INDEX_FILE_NAME);
112888
112967
  }
112889
112968
  function readTokenIndex(storageDir) {
112890
112969
  const indexPath = getIndexPath(storageDir);
@@ -112928,16 +113007,16 @@ function deleteTokenIndexEntry(storageDir, hash2) {
112928
113007
  var STORAGE_DIR_NAME = "mcp-oauth";
112929
113008
  var LEGACY_STORAGE_FILE_NAME = "mcp-oauth.json";
112930
113009
  function getMcpOauthStorageDir() {
112931
- return join89(getOpenCodeCliConfigDir(), STORAGE_DIR_NAME);
113010
+ return join88(getOpenCodeCliConfigDir(), STORAGE_DIR_NAME);
112932
113011
  }
112933
113012
  function getMcpOauthServerHash(serverHost, resource) {
112934
113013
  return createHash6("sha256").update(buildKey(serverHost, resource)).digest("hex").slice(0, 32);
112935
113014
  }
112936
113015
  function getMcpOauthStoragePath(serverHost, resource) {
112937
- return join89(getMcpOauthStorageDir(), `${getMcpOauthServerHash(serverHost, resource)}.json`);
113016
+ return join88(getMcpOauthStorageDir(), `${getMcpOauthServerHash(serverHost, resource)}.json`);
112938
113017
  }
112939
113018
  function getLegacyStoragePath() {
112940
- return join89(getOpenCodeCliConfigDir(), LEGACY_STORAGE_FILE_NAME);
113019
+ return join88(getOpenCodeCliConfigDir(), LEGACY_STORAGE_FILE_NAME);
112941
113020
  }
112942
113021
  function normalizeHost2(serverHost) {
112943
113022
  let host = serverHost.trim();
@@ -113116,7 +113195,7 @@ function listTokensByHost(serverHost) {
113116
113195
  for (const [hash2, indexedKey] of Object.entries(index)) {
113117
113196
  if (!indexedKey.startsWith(prefix))
113118
113197
  continue;
113119
- const indexedToken = readTokenFile(join89(getMcpOauthStorageDir(), `${hash2}.json`));
113198
+ const indexedToken = readTokenFile(join88(getMcpOauthStorageDir(), `${hash2}.json`));
113120
113199
  if (indexedToken)
113121
113200
  result[indexedKey] = indexedToken;
113122
113201
  }
@@ -113131,7 +113210,7 @@ function listAllTokens() {
113131
113210
  for (const entry of readdirSync11(dir, { withFileTypes: true })) {
113132
113211
  if (!entry.isFile() || !entry.name.endsWith(".json") || entry.name === "index.json")
113133
113212
  continue;
113134
- const token = readTokenFile(join89(dir, entry.name));
113213
+ const token = readTokenFile(join88(dir, entry.name));
113135
113214
  const hash2 = basename11(entry.name, ".json");
113136
113215
  if (token)
113137
113216
  result[index[hash2] ?? hash2] = token;