oh-my-opencode 5.0.0-beta.22 → 5.0.0-beta.23

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 (142) hide show
  1. package/dist/cli/index.js +184 -141
  2. package/dist/cli-node/index.js +184 -141
  3. package/dist/index.js +1567 -1508
  4. package/dist/skills/debugging/SKILL.md +2 -0
  5. package/dist/skills/debugging/references/methodology/00-setup.md +12 -0
  6. package/dist/skills/debugging/references/methodology/02-investigate.md +21 -0
  7. package/dist/skills/debugging/references/runtimes/go.md +15 -1
  8. package/dist/skills/debugging/references/runtimes/native-binary.md +38 -0
  9. package/dist/skills/debugging/references/runtimes/node.md +25 -0
  10. package/dist/skills/debugging/references/runtimes/python.md +13 -0
  11. package/dist/skills/debugging/references/runtimes/rust.md +41 -0
  12. package/dist/skills/debugging/references/scripts/dap.mjs +267 -0
  13. package/dist/skills/debugging/references/scripts/dap.test.ts +86 -0
  14. package/dist/skills/debugging/references/scripts/fixture-adapter.mjs +59 -0
  15. package/dist/skills/debugging/references/tools/dap.md +103 -0
  16. package/dist/skills/debugging/references/tools/frida.md +193 -0
  17. package/dist/tools/delegate-task/types.d.ts +3 -0
  18. package/dist/tui.js +25 -0
  19. package/package.json +18 -15
  20. package/packages/lsp-core/src/index.ts +1 -0
  21. package/packages/lsp-core/src/lsp/client-wrapper.ts +25 -5
  22. package/packages/lsp-core/src/lsp/client.ts +26 -0
  23. package/packages/lsp-core/src/lsp/connection.ts +16 -0
  24. package/packages/lsp-core/src/lsp/constants.ts +1 -0
  25. package/packages/lsp-core/src/lsp/format-document.test.ts +143 -0
  26. package/packages/lsp-core/src/lsp/format-document.ts +90 -0
  27. package/packages/lsp-core/src/lsp/manager-max-clients.test.ts +151 -0
  28. package/packages/lsp-core/src/lsp/manager.ts +34 -1
  29. package/packages/lsp-core/src/lsp/server-definitions.ts +29 -0
  30. package/packages/lsp-core/src/lsp/server-installation.test.ts +376 -0
  31. package/packages/lsp-core/src/lsp/server-installation.ts +200 -27
  32. package/packages/lsp-core/src/lsp/server-resolution-local-binary.test.ts +170 -0
  33. package/packages/lsp-core/src/lsp/server-resolution.ts +18 -5
  34. package/packages/lsp-core/src/lsp/transport.ts +9 -0
  35. package/packages/lsp-core/src/lsp/types.ts +8 -0
  36. package/packages/lsp-core/src/tool-surface.test.ts +13 -1
  37. package/packages/lsp-core/src/tools/definitions.ts +14 -0
  38. package/packages/lsp-core/src/tools/format.test.ts +56 -0
  39. package/packages/lsp-core/src/tools/format.ts +56 -0
  40. package/packages/lsp-core/src/tools/index.ts +1 -0
  41. package/packages/lsp-core/src/tools/types.ts +10 -0
  42. package/packages/lsp-daemon/dist/cli.js +432 -144
  43. package/packages/lsp-daemon/dist/client.d.ts +10 -0
  44. package/packages/lsp-daemon/dist/client.js +401 -107
  45. package/packages/lsp-daemon/dist/daemon-client.d.ts +1 -0
  46. package/packages/lsp-daemon/dist/daemon-client.js +3 -0
  47. package/packages/lsp-daemon/dist/index.js +395 -107
  48. package/packages/lsp-tools-mcp/dist/cli.js +384 -99
  49. package/packages/lsp-tools-mcp/dist/lsp/manager.js +53 -0
  50. package/packages/lsp-tools-mcp/dist/mcp.js +384 -99
  51. package/packages/lsp-tools-mcp/dist/tools.js +385 -99
  52. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  53. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +2 -2
  54. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  55. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  56. package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +69 -35
  57. package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +21 -2
  58. package/packages/omo-codex/plugin/components/codegraph/package.json +1 -1
  59. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  60. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  61. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  62. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  63. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  64. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  65. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +3 -3
  66. package/packages/omo-codex/plugin/components/lsp/dist/cli.js +404 -121
  67. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  68. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  69. package/packages/omo-codex/plugin/components/rules/dist/cli.js +3 -3
  70. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  71. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  72. package/packages/omo-codex/plugin/components/rules/src/post-compact-budget.ts +3 -3
  73. package/packages/omo-codex/plugin/components/rules/test/post-compact-budget.test.ts +4 -4
  74. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  75. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  76. package/packages/omo-codex/plugin/components/telemetry/dist/cli.js +30 -15
  77. package/packages/omo-codex/plugin/components/telemetry/dist/posthog.js +30 -15
  78. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  79. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  80. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  81. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  82. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +2 -2
  83. package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
  84. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
  85. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  86. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  87. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  88. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  89. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +1 -1
  90. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  91. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  92. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  93. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  94. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  95. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  96. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  97. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  98. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  99. package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +1 -1
  100. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  101. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  102. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
  103. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  104. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-ulw-execute-continuation.json +1 -1
  105. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  106. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  107. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  108. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  109. package/packages/omo-codex/plugin/model-catalog.json +3 -3
  110. package/packages/omo-codex/plugin/package-lock.json +13 -13
  111. package/packages/omo-codex/plugin/package.json +1 -1
  112. package/packages/omo-codex/plugin/scripts/migrate-codex-config/catalog.mjs +3 -3
  113. package/packages/omo-codex/plugin/skills/debugging/SKILL.md +2 -0
  114. package/packages/omo-codex/plugin/skills/debugging/references/methodology/00-setup.md +12 -0
  115. package/packages/omo-codex/plugin/skills/debugging/references/methodology/02-investigate.md +21 -0
  116. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/go.md +15 -1
  117. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/native-binary.md +38 -0
  118. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/node.md +25 -0
  119. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/python.md +13 -0
  120. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/rust.md +41 -0
  121. package/packages/omo-codex/plugin/skills/debugging/references/scripts/dap.mjs +267 -0
  122. package/packages/omo-codex/plugin/skills/debugging/references/scripts/fixture-adapter.mjs +59 -0
  123. package/packages/omo-codex/plugin/skills/debugging/references/tools/dap.md +103 -0
  124. package/packages/omo-codex/plugin/skills/debugging/references/tools/frida.md +193 -0
  125. package/packages/omo-codex/plugin/test/aggregate-model-catalog.test.mjs +1 -1
  126. package/packages/omo-codex/plugin/test/auto-update.test.mjs +2 -2
  127. package/packages/omo-codex/plugin/test/migrate-codex-config.test.mjs +8 -8
  128. package/packages/omo-codex/scripts/install-config-reasoning.test.mjs +2 -2
  129. package/packages/omo-codex/scripts/install-dist/install-local.mjs +38 -23
  130. package/packages/shared-skills/skills/debugging/SKILL.md +2 -0
  131. package/packages/shared-skills/skills/debugging/references/methodology/00-setup.md +12 -0
  132. package/packages/shared-skills/skills/debugging/references/methodology/02-investigate.md +21 -0
  133. package/packages/shared-skills/skills/debugging/references/runtimes/go.md +15 -1
  134. package/packages/shared-skills/skills/debugging/references/runtimes/native-binary.md +38 -0
  135. package/packages/shared-skills/skills/debugging/references/runtimes/node.md +25 -0
  136. package/packages/shared-skills/skills/debugging/references/runtimes/python.md +13 -0
  137. package/packages/shared-skills/skills/debugging/references/runtimes/rust.md +41 -0
  138. package/packages/shared-skills/skills/debugging/references/scripts/dap.mjs +267 -0
  139. package/packages/shared-skills/skills/debugging/references/scripts/dap.test.ts +86 -0
  140. package/packages/shared-skills/skills/debugging/references/scripts/fixture-adapter.mjs +59 -0
  141. package/packages/shared-skills/skills/debugging/references/tools/dap.md +103 -0
  142. package/packages/shared-skills/skills/debugging/references/tools/frida.md +193 -0
@@ -55,7 +55,7 @@ var package_default;
55
55
  var init_package = __esm(() => {
56
56
  package_default = {
57
57
  name: "oh-my-opencode",
58
- version: "5.0.0-beta.22",
58
+ version: "5.0.0-beta.23",
59
59
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
60
60
  main: "./dist/index.js",
61
61
  types: "dist/index.d.ts",
@@ -236,7 +236,7 @@ var init_package = __esm(() => {
236
236
  zod: "^4.4.3"
237
237
  },
238
238
  devDependencies: {
239
- "@code-yeongyu/senpi": "2026.8.26-2",
239
+ "@code-yeongyu/senpi": "2026.8.27",
240
240
  "@oh-my-opencode/agents-md-core": "workspace:*",
241
241
  "@oh-my-opencode/ast-grep-mcp": "workspace:*",
242
242
  "@oh-my-opencode/boulder-state": "workspace:*",
@@ -277,18 +277,18 @@ var init_package = __esm(() => {
277
277
  typescript: "^7.0.2"
278
278
  },
279
279
  optionalDependencies: {
280
- "oh-my-opencode-darwin-arm64": "5.0.0-beta.22",
281
- "oh-my-opencode-darwin-x64": "5.0.0-beta.22",
282
- "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.22",
283
- "oh-my-opencode-linux-arm64": "5.0.0-beta.22",
284
- "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.22",
285
- "oh-my-opencode-linux-x64": "5.0.0-beta.22",
286
- "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.22",
287
- "oh-my-opencode-linux-x64-musl": "5.0.0-beta.22",
288
- "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.22",
289
- "oh-my-opencode-windows-arm64": "5.0.0-beta.22",
290
- "oh-my-opencode-windows-x64": "5.0.0-beta.22",
291
- "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.22"
280
+ "oh-my-opencode-darwin-arm64": "5.0.0-beta.23",
281
+ "oh-my-opencode-darwin-x64": "5.0.0-beta.23",
282
+ "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.23",
283
+ "oh-my-opencode-linux-arm64": "5.0.0-beta.23",
284
+ "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.23",
285
+ "oh-my-opencode-linux-x64": "5.0.0-beta.23",
286
+ "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.23",
287
+ "oh-my-opencode-linux-x64-musl": "5.0.0-beta.23",
288
+ "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.23",
289
+ "oh-my-opencode-windows-arm64": "5.0.0-beta.23",
290
+ "oh-my-opencode-windows-x64": "5.0.0-beta.23",
291
+ "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.23"
292
292
  },
293
293
  overrides: {
294
294
  "@earendil-works/pi-agent-core": "0.84.2",
@@ -304,7 +304,10 @@ var init_package = __esm(() => {
304
304
  },
305
305
  trustedDependencies: [
306
306
  "@code-yeongyu/comment-checker"
307
- ]
307
+ ],
308
+ patchedDependencies: {
309
+ "@code-yeongyu/senpi@2026.8.27": "patches/@code-yeongyu%2Fsenpi@2026.8.27.patch"
310
+ }
308
311
  };
309
312
  });
310
313
 
@@ -4814,9 +4817,12 @@ import {
4814
4817
  fsyncSync,
4815
4818
  openSync,
4816
4819
  renameSync,
4820
+ rmSync,
4817
4821
  unlinkSync,
4818
4822
  writeFileSync
4819
4823
  } from "node:fs";
4824
+ import { randomUUID } from "node:crypto";
4825
+ import { dirname } from "node:path";
4820
4826
  function isToleratedFsyncError(error) {
4821
4827
  if (!(error instanceof Error))
4822
4828
  return false;
@@ -4832,24 +4838,36 @@ function tolerantFsyncSync(fileDescriptor, fsyncImpl) {
4832
4838
  }
4833
4839
  }
4834
4840
  function writeFileAtomically(filePath, content, options = {}) {
4835
- const tempPath = `${filePath}.tmp`;
4836
- writeFileSync(tempPath, content, "utf-8");
4837
- const tempFileDescriptor = openSync(tempPath, "r+");
4838
- try {
4839
- tolerantFsyncSync(tempFileDescriptor, options.fsyncSync ?? fsyncSync);
4840
- } finally {
4841
- closeSync(tempFileDescriptor);
4842
- }
4841
+ const platform = options.platform ?? process.platform;
4842
+ const fsyncImpl = options.fsyncSync ?? fsyncSync;
4843
+ const tempPath = `${filePath}.${process.pid}.${randomUUID()}.tmp`;
4843
4844
  try {
4844
- renameSync(tempPath, filePath);
4845
- } catch (error) {
4846
- const isPermissionError = error instanceof Error && (error.message.includes("EPERM") || error.message.includes("EACCES"));
4847
- if ((options.platform ?? process.platform) === "win32" && isPermissionError) {
4845
+ writeFileSync(tempPath, content, "utf-8");
4846
+ const tempFileDescriptor = openSync(tempPath, "r+");
4847
+ try {
4848
+ tolerantFsyncSync(tempFileDescriptor, fsyncImpl);
4849
+ } finally {
4850
+ closeSync(tempFileDescriptor);
4851
+ }
4852
+ try {
4853
+ renameSync(tempPath, filePath);
4854
+ } catch (error) {
4855
+ const isPermissionError = error instanceof Error && (error.message.includes("EPERM") || error.message.includes("EACCES"));
4856
+ if (platform !== "win32" || !isPermissionError)
4857
+ throw error;
4848
4858
  unlinkSync(filePath);
4849
4859
  renameSync(tempPath, filePath);
4860
+ }
4861
+ if (platform === "win32")
4850
4862
  return;
4863
+ const directoryFileDescriptor = openSync(dirname(filePath), "r");
4864
+ try {
4865
+ tolerantFsyncSync(directoryFileDescriptor, fsyncImpl);
4866
+ } finally {
4867
+ closeSync(directoryFileDescriptor);
4851
4868
  }
4852
- throw error;
4869
+ } finally {
4870
+ rmSync(tempPath, { force: true });
4853
4871
  }
4854
4872
  }
4855
4873
  var TOLERATED_FSYNC_CODES;
@@ -20555,6 +20573,25 @@ var init_telemetry = __esm(() => {
20555
20573
  }).strict();
20556
20574
  });
20557
20575
 
20576
+ // packages/omo-config-core/src/schema/format-on-mutation.ts
20577
+ var mode, languages, OmoFormatOnMutationLayerSchema, OmoFormatOnMutationSchema;
20578
+ var init_format_on_mutation = __esm(() => {
20579
+ init_zod();
20580
+ mode = _enum2(["off", "best-effort", "required"]);
20581
+ languages = record(string2(), boolean2()).optional();
20582
+ OmoFormatOnMutationLayerSchema = object({
20583
+ mode: mode.optional(),
20584
+ languages,
20585
+ maxFileBytes: number2().int().positive().optional(),
20586
+ timeoutMs: number2().int().positive().optional()
20587
+ }).strict();
20588
+ OmoFormatOnMutationSchema = OmoFormatOnMutationLayerSchema.extend({
20589
+ mode: mode.default("best-effort"),
20590
+ maxFileBytes: number2().int().positive().default(1048576),
20591
+ timeoutMs: number2().int().positive().default(3000)
20592
+ }).strict();
20593
+ });
20594
+
20558
20595
  // packages/omo-config-core/src/schema/config.ts
20559
20596
  var OmoOpenCodeHarnessConfigSchema, OmoTypedHarnessConfigSchema, OmoConfigProfileSchema, OmoConfigSchema, OmoConfigLayerSchema;
20560
20597
  var init_config = __esm(() => {
@@ -20568,8 +20605,10 @@ var init_config = __esm(() => {
20568
20605
  init_task();
20569
20606
  init_team();
20570
20607
  init_telemetry();
20608
+ init_format_on_mutation();
20571
20609
  OmoOpenCodeHarnessConfigSchema = record(string2(), unknown());
20572
20610
  OmoTypedHarnessConfigSchema = object({
20611
+ formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
20573
20612
  categories: OmoCategoriesConfigSchema.optional(),
20574
20613
  agents: OmoAgentsConfigSchema.optional(),
20575
20614
  codegraph: OmoCodegraphSettingsLayerSchema.optional(),
@@ -20581,6 +20620,7 @@ var init_config = __esm(() => {
20581
20620
  telemetry: OmoTelemetrySettingsLayerSchema.optional()
20582
20621
  }).strict();
20583
20622
  OmoConfigProfileSchema = object({
20623
+ formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
20584
20624
  categories: OmoCategoriesConfigSchema.optional(),
20585
20625
  agents: OmoAgentsConfigSchema.optional(),
20586
20626
  codegraph: OmoCodegraphSettingsLayerSchema.optional(),
@@ -20595,6 +20635,7 @@ var init_config = __esm(() => {
20595
20635
  "[codex]": OmoTypedHarnessConfigSchema.optional()
20596
20636
  }).strict();
20597
20637
  OmoConfigSchema = object({
20638
+ formatOnMutation: OmoFormatOnMutationSchema.optional(),
20598
20639
  $schema: string2().optional(),
20599
20640
  categories: OmoCategoriesConfigSchema.optional(),
20600
20641
  agents: OmoAgentsConfigSchema.optional(),
@@ -20613,6 +20654,7 @@ var init_config = __esm(() => {
20613
20654
  legacy_migrations: record(string2(), unknown()).optional()
20614
20655
  }).strict();
20615
20656
  OmoConfigLayerSchema = object({
20657
+ formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
20616
20658
  $schema: string2().optional(),
20617
20659
  categories: OmoCategoriesConfigSchema.optional(),
20618
20660
  agents: OmoAgentsConfigSchema.optional(),
@@ -20639,6 +20681,7 @@ var init_schema = __esm(() => {
20639
20681
  init_codegraph();
20640
20682
  init_config();
20641
20683
  init_fallback_models();
20684
+ init_format_on_mutation();
20642
20685
  init_git_master();
20643
20686
  init_harness();
20644
20687
  init_memory();
@@ -20708,7 +20751,7 @@ var init_types = __esm(() => {
20708
20751
 
20709
20752
  // packages/omo-config-core/src/loader/paths.ts
20710
20753
  import { userInfo } from "node:os";
20711
- import { dirname, join as join3, posix, resolve } from "node:path";
20754
+ import { dirname as dirname2, join as join3, posix, resolve } from "node:path";
20712
20755
  function resolveHomeDir(env = process.env) {
20713
20756
  const homeDir = env.HOME ?? env.USERPROFILE ?? process.cwd();
20714
20757
  return homeDir.startsWith("/") ? posix.resolve(homeDir) : toPosixPath(resolve(homeDir));
@@ -20773,7 +20816,7 @@ function findProjectConfigPathsFarthestFirst(cwd, homeDir, fileSystem, accountHo
20773
20816
  nearestFirst.push(configPath);
20774
20817
  if (isHomeDir)
20775
20818
  break;
20776
- const parentDir = dirname(currentDir);
20819
+ const parentDir = dirname2(currentDir);
20777
20820
  if (parentDir === currentDir)
20778
20821
  break;
20779
20822
  currentDir = parentDir;
@@ -21213,8 +21256,8 @@ var init_jsonc_parse = __esm(() => {
21213
21256
  });
21214
21257
 
21215
21258
  // packages/omo-config-core/src/writer/writer.ts
21216
- import { randomUUID } from "node:crypto";
21217
- import { dirname as dirname2, join as join4, posix as posix2 } from "node:path";
21259
+ import { randomUUID as randomUUID2 } from "node:crypto";
21260
+ import { dirname as dirname3, join as join4, posix as posix2 } from "node:path";
21218
21261
  function backupSuffix() {
21219
21262
  return new Date().toISOString().replace(/[:.]/g, "-");
21220
21263
  }
@@ -21247,20 +21290,20 @@ function resolveWritePath(options) {
21247
21290
  const jsoncPath2 = resolveUserOmoConfigPath(options.env);
21248
21291
  if (fileSystem.existsSync(jsoncPath2))
21249
21292
  return jsoncPath2;
21250
- const jsonPath2 = join4(dirname2(jsoncPath2), "omo.json");
21293
+ const jsonPath2 = join4(dirname3(jsoncPath2), "omo.json");
21251
21294
  return fileSystem.existsSync(jsonPath2) ? jsonPath2 : jsoncPath2;
21252
21295
  }
21253
21296
  const jsoncPath = join4(options.projectDir ?? process.cwd(), ".omo", "omo.jsonc");
21254
21297
  if (fileSystem.existsSync(jsoncPath))
21255
21298
  return jsoncPath;
21256
- const jsonPath = join4(dirname2(jsoncPath), "omo.json");
21299
+ const jsonPath = join4(dirname3(jsoncPath), "omo.json");
21257
21300
  return fileSystem.existsSync(jsonPath) ? jsonPath : jsoncPath;
21258
21301
  }
21259
21302
  function directoryPath(path4) {
21260
- return path4.startsWith("/") ? posix2.dirname(path4) : dirname2(path4);
21303
+ return path4.startsWith("/") ? posix2.dirname(path4) : dirname3(path4);
21261
21304
  }
21262
21305
  function writeAtomically(path4, content, fileSystem) {
21263
- const tempPath = `${path4}.${randomUUID()}.tmp`;
21306
+ const tempPath = `${path4}.${randomUUID2()}.tmp`;
21264
21307
  let tempCreated = false;
21265
21308
  try {
21266
21309
  fileSystem.writeFileExclusiveSync(tempPath, content);
@@ -21543,7 +21586,7 @@ var init_types3 = __esm(() => {
21543
21586
  });
21544
21587
 
21545
21588
  // packages/omo-config-core/src/migration/commit.ts
21546
- import { basename, dirname as dirname3, join as join5, resolve as resolve2 } from "node:path";
21589
+ import { basename, dirname as dirname4, join as join5, resolve as resolve2 } from "node:path";
21547
21590
  function parseDocument(path4, content) {
21548
21591
  const parsed = parseJsoncSafe2(content);
21549
21592
  if (parsed.errors.length > 0 || !isPlainObject5(parsed.data)) {
@@ -21577,11 +21620,11 @@ function writerInput(targetPath, env) {
21577
21620
  const homeDir = resolveHomeDir(env);
21578
21621
  const userDirectory = toPosixPath(join5(homeDir, ".omo"));
21579
21622
  const fileName = basename(targetPath);
21580
- if (toPosixPath(dirname3(targetPath)) === userDirectory && (fileName === "omo.json" || fileName === "omo.jsonc")) {
21623
+ if (toPosixPath(dirname4(targetPath)) === userDirectory && (fileName === "omo.json" || fileName === "omo.jsonc")) {
21581
21624
  return { scope: "user" };
21582
21625
  }
21583
- if (basename(dirname3(targetPath)) === ".omo" && (fileName === "omo.json" || fileName === "omo.jsonc")) {
21584
- return { projectDir: dirname3(dirname3(targetPath)), scope: "project" };
21626
+ if (basename(dirname4(targetPath)) === ".omo" && (fileName === "omo.json" || fileName === "omo.jsonc")) {
21627
+ return { projectDir: dirname4(dirname4(targetPath)), scope: "project" };
21585
21628
  }
21586
21629
  throw new MigrationTransactionError(`Migration target is not an omo config path: ${targetPath}`);
21587
21630
  }
@@ -21944,7 +21987,7 @@ var init_recovery = __esm(() => {
21944
21987
  });
21945
21988
 
21946
21989
  // packages/omo-config-core/src/migration/batch.ts
21947
- import { dirname as dirname4, posix as posix3 } from "node:path";
21990
+ import { dirname as dirname5, posix as posix3 } from "node:path";
21948
21991
  function parseSource(path4, content) {
21949
21992
  const parsed = parseJsoncSafe2(content);
21950
21993
  if (parsed.errors.length > 0) {
@@ -21993,7 +22036,7 @@ function assertSafeSourcePaths(sources, protectedPaths) {
21993
22036
  }
21994
22037
  }
21995
22038
  function directoryPath2(path4) {
21996
- return path4.startsWith("/") ? posix3.dirname(path4) : dirname4(path4);
22039
+ return path4.startsWith("/") ? posix3.dirname(path4) : dirname5(path4);
21997
22040
  }
21998
22041
  function ensureBackupDirectories(moves, fileSystem) {
21999
22042
  for (const move of moves)
@@ -22624,7 +22667,7 @@ var init_process_sweep = () => {};
22624
22667
  // packages/utils/src/codegraph/resolve.ts
22625
22668
  import { existsSync as existsSync7 } from "node:fs";
22626
22669
  import { spawnSync } from "node:child_process";
22627
- import { basename as basename2, dirname as dirname5, join as join10 } from "node:path";
22670
+ import { basename as basename2, dirname as dirname6, join as join10 } from "node:path";
22628
22671
  import { createRequire as createRequire2 } from "node:module";
22629
22672
  function defaultNodeVersion(nodePath) {
22630
22673
  if (nodePath === process.execPath && isNodeExecutableName(nodePath))
@@ -26052,7 +26095,7 @@ var init_resolve_agent_definition_paths = __esm(() => {
26052
26095
  // packages/omo-opencode/src/shared/opencode-version.ts
26053
26096
  import { execSync } from "child_process";
26054
26097
  import { existsSync as existsSync9, readFileSync as readFileSync3, realpathSync as realpathSync4 } from "fs";
26055
- import { dirname as dirname6, join as join13 } from "path";
26098
+ import { dirname as dirname7, join as join13 } from "path";
26056
26099
  function parseVersion(version2) {
26057
26100
  const cleaned = version2.replace(/^v/, "").split("-")[0];
26058
26101
  return cleaned.split(".").map((n) => parseInt(n, 10) || 0);
@@ -26093,7 +26136,7 @@ function parsePackageVersion(content) {
26093
26136
  function getPackageVersionFromBinary(binaryPath, deps) {
26094
26137
  try {
26095
26138
  const realBinaryPath = deps.realpath(binaryPath);
26096
- const packagePath = join13(dirname6(dirname6(realBinaryPath)), "package.json");
26139
+ const packagePath = join13(dirname7(dirname7(realBinaryPath)), "package.json");
26097
26140
  if (!deps.exists(packagePath))
26098
26141
  return null;
26099
26142
  return parsePackageVersion(deps.readText(packagePath));
@@ -26331,10 +26374,10 @@ import {
26331
26374
  } from "node:fs";
26332
26375
  function writeFileAtomically2(filePath, content, deps = {}) {
26333
26376
  const tempPath = `${filePath}.tmp`;
26334
- const mode = deps.mode;
26335
- writeFileSync3(tempPath, content, { encoding: "utf-8", mode });
26336
- if (mode !== undefined) {
26337
- chmodSync2(tempPath, mode);
26377
+ const mode2 = deps.mode;
26378
+ writeFileSync3(tempPath, content, { encoding: "utf-8", mode: mode2 });
26379
+ if (mode2 !== undefined) {
26380
+ chmodSync2(tempPath, mode2);
26338
26381
  }
26339
26382
  const tempFileDescriptor = openSync2(tempPath, "r+");
26340
26383
  try {
@@ -26355,8 +26398,8 @@ function writeFileAtomically2(filePath, content, deps = {}) {
26355
26398
  throw error51;
26356
26399
  }
26357
26400
  }
26358
- if (mode !== undefined) {
26359
- chmodSync2(filePath, mode);
26401
+ if (mode2 !== undefined) {
26402
+ chmodSync2(filePath, mode2);
26360
26403
  }
26361
26404
  }
26362
26405
  var init_write_file_atomically = __esm(() => {
@@ -84363,7 +84406,7 @@ var init_plugin_name_with_version = __esm(() => {
84363
84406
 
84364
84407
  // packages/omo-opencode/src/cli/config-manager/backup-config.ts
84365
84408
  import { copyFileSync as copyFileSync2, existsSync as existsSync16, mkdirSync as mkdirSync6 } from "node:fs";
84366
- import { dirname as dirname7 } from "node:path";
84409
+ import { dirname as dirname8 } from "node:path";
84367
84410
  function backupConfigFile(configPath) {
84368
84411
  if (!existsSync16(configPath)) {
84369
84412
  return { success: true };
@@ -84371,7 +84414,7 @@ function backupConfigFile(configPath) {
84371
84414
  const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
84372
84415
  const backupPath = `${configPath}.backup-${timestamp}`;
84373
84416
  try {
84374
- const dir = dirname7(backupPath);
84417
+ const dir = dirname8(backupPath);
84375
84418
  if (!existsSync16(dir)) {
84376
84419
  mkdirSync6(dir, { recursive: true });
84377
84420
  }
@@ -84569,7 +84612,7 @@ function extractVersionFromPluginEntry(entry) {
84569
84612
 
84570
84613
  // packages/omo-opencode/src/cli/config-manager/add-plugin-to-opencode-config.ts
84571
84614
  import { existsSync as existsSync19, readdirSync as readdirSync4, readFileSync as readFileSync8, writeFileSync as writeFileSync5 } from "node:fs";
84572
- import { basename as basename3, dirname as dirname8, join as join21 } from "node:path";
84615
+ import { basename as basename3, dirname as dirname9, join as join21 } from "node:path";
84573
84616
  function detectConfigFormatInDir(configDir) {
84574
84617
  const configJsonc = join21(configDir, "opencode.jsonc");
84575
84618
  const configJson = join21(configDir, "opencode.json");
@@ -84582,10 +84625,10 @@ function detectConfigFormatInDir(configDir) {
84582
84625
  return { format: "none", path: configJson };
84583
84626
  }
84584
84627
  function getParentConfigDirForProfile(configDir) {
84585
- const parentDir = dirname8(configDir);
84628
+ const parentDir = dirname9(configDir);
84586
84629
  if (basename3(parentDir) !== "profiles")
84587
84630
  return null;
84588
- return dirname8(parentDir);
84631
+ return dirname9(parentDir);
84589
84632
  }
84590
84633
  function listProfileConfigDirs(rootConfigDir) {
84591
84634
  const profilesDir = join21(rootConfigDir, "profiles");
@@ -86719,7 +86762,7 @@ var init_env2 = __esm(() => {
86719
86762
  });
86720
86763
 
86721
86764
  // node_modules/.bun/posthog-node@5.51.1/node_modules/posthog-node/dist/extensions/error-tracking/modifiers/module.node.mjs
86722
- import { dirname as dirname17, posix as posix7, sep as sep7 } from "path";
86765
+ import { dirname as dirname18, posix as posix7, sep as sep7 } from "path";
86723
86766
  function createModulerModifier() {
86724
86767
  const getModuleFromFileName = createGetModuleFromFilename();
86725
86768
  return async (frames) => {
@@ -86728,7 +86771,7 @@ function createModulerModifier() {
86728
86771
  return frames;
86729
86772
  };
86730
86773
  }
86731
- function createGetModuleFromFilename(basePath = process.argv[1] ? dirname17(process.argv[1]) : process.cwd(), isWindows = sep7 === "\\") {
86774
+ function createGetModuleFromFilename(basePath = process.argv[1] ? dirname18(process.argv[1]) : process.cwd(), isWindows = sep7 === "\\") {
86732
86775
  const normalizedBase = isWindows ? normalizeWindowsPath(basePath) : basePath;
86733
86776
  return (filename) => {
86734
86777
  if (!filename)
@@ -92062,7 +92105,7 @@ function splitNodeOptions(nodeOptions) {
92062
92105
  return args;
92063
92106
  }
92064
92107
  function findUnhandledRejectionMode(args) {
92065
- let mode;
92108
+ let mode2;
92066
92109
  for (let index = 0;index < args.length; index++) {
92067
92110
  const argument = args[index];
92068
92111
  const optionName = UNHANDLED_REJECTION_OPTION_NAMES.find((name) => argument === name || argument.startsWith(`${name}=`));
@@ -92070,9 +92113,9 @@ function findUnhandledRejectionMode(args) {
92070
92113
  continue;
92071
92114
  const value = argument === optionName ? args[++index] : argument.slice(optionName.length + 1);
92072
92115
  if (UNHANDLED_REJECTION_MODES.has(value))
92073
- mode = value;
92116
+ mode2 = value;
92074
92117
  }
92075
- return mode;
92118
+ return mode2;
92076
92119
  }
92077
92120
  function getUnhandledRejectionMode(execArgv = STARTUP_EXEC_ARGV, nodeOptions = STARTUP_NODE_OPTIONS) {
92078
92121
  return findUnhandledRejectionMode(execArgv) ?? findUnhandledRejectionMode(splitNodeOptions(nodeOptions ?? "")) ?? "throw";
@@ -92098,17 +92141,17 @@ function makeUncaughtExceptionHandler(captureFn, onFatalFn) {
92098
92141
  _posthogErrorHandler: true
92099
92142
  });
92100
92143
  }
92101
- function addUncaughtExceptionListener(captureFn, onFatalFn, mode = STARTUP_UNHANDLED_REJECTION_MODE) {
92144
+ function addUncaughtExceptionListener(captureFn, onFatalFn, mode2 = STARTUP_UNHANDLED_REJECTION_MODE) {
92102
92145
  const process4 = globalThis.process;
92103
92146
  if (!process4)
92104
92147
  return;
92105
- if (mode === "strict")
92148
+ if (mode2 === "strict")
92106
92149
  return void process4.on("uncaughtExceptionMonitor", (error51, origin) => captureUncaughtException(captureFn, error51, origin));
92107
92150
  process4.on("uncaughtException", makeUncaughtExceptionHandler(captureFn, onFatalFn));
92108
92151
  }
92109
- function addUnhandledRejectionListener(captureFn, mode = STARTUP_UNHANDLED_REJECTION_MODE) {
92152
+ function addUnhandledRejectionListener(captureFn, mode2 = STARTUP_UNHANDLED_REJECTION_MODE) {
92110
92153
  const process4 = globalThis.process;
92111
- if (!process4 || mode === "throw" || mode === "strict" || mode === "warn-with-error-code")
92154
+ if (!process4 || mode2 === "throw" || mode2 === "strict" || mode2 === "warn-with-error-code")
92112
92155
  return;
92113
92156
  process4.on("unhandledRejection", (reason) => {
92114
92157
  captureFn(reason, {
@@ -94333,7 +94376,7 @@ var package_default2;
94333
94376
  var init_package2 = __esm(() => {
94334
94377
  package_default2 = {
94335
94378
  name: "@oh-my-opencode/omo-codex",
94336
- version: "5.0.0-beta.22",
94379
+ version: "5.0.0-beta.23",
94337
94380
  type: "module",
94338
94381
  private: true,
94339
94382
  description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
@@ -95303,19 +95346,19 @@ var init_update_toasts = __esm(() => {
95303
95346
 
95304
95347
  // packages/omo-opencode/src/hooks/auto-update-checker/hook/background-update-check.ts
95305
95348
  import { existsSync as existsSync48 } from "node:fs";
95306
- import { dirname as dirname30, join as join76 } from "node:path";
95349
+ import { dirname as dirname31, join as join76 } from "node:path";
95307
95350
  import { fileURLToPath as fileURLToPath5 } from "node:url";
95308
95351
  function defaultGetModuleHostingWorkspace() {
95309
95352
  try {
95310
- const currentDir = dirname30(fileURLToPath5(import.meta.url));
95353
+ const currentDir = dirname31(fileURLToPath5(import.meta.url));
95311
95354
  const pkgJsonPath = findPackageJsonUp(currentDir);
95312
95355
  if (!pkgJsonPath)
95313
95356
  return null;
95314
- const pkgDir = dirname30(pkgJsonPath);
95315
- const nodeModulesDir = dirname30(pkgDir);
95357
+ const pkgDir = dirname31(pkgJsonPath);
95358
+ const nodeModulesDir = dirname31(pkgDir);
95316
95359
  if (nodeModulesDir.split(/[\\/]/).pop() !== "node_modules")
95317
95360
  return null;
95318
- return dirname30(nodeModulesDir);
95361
+ return dirname31(nodeModulesDir);
95319
95362
  } catch (error51) {
95320
95363
  if (error51 instanceof Error) {
95321
95364
  return null;
@@ -97864,9 +97907,9 @@ function formatConfigSummary(config3) {
97864
97907
  `);
97865
97908
  }
97866
97909
  function printHeader(isUpdate) {
97867
- const mode = isUpdate ? "Update" : "Install";
97910
+ const mode2 = isUpdate ? "Update" : "Install";
97868
97911
  console.log();
97869
- console.log(import_picocolors.default.bgMagenta(import_picocolors.default.white(` oMoMoMoMo... ${mode} `)));
97912
+ console.log(import_picocolors.default.bgMagenta(import_picocolors.default.white(` oMoMoMoMo... ${mode2} `)));
97870
97913
  console.log();
97871
97914
  }
97872
97915
  function printStep(step, total, message) {
@@ -98145,7 +98188,7 @@ function windowsCommandShim(targetPath) {
98145
98188
 
98146
98189
  // packages/omo-codex/src/install/codex-cache-dangling-bins.ts
98147
98190
  import { lstat as lstat2, readFile, readdir, readlink, rm, stat } from "node:fs/promises";
98148
- import { dirname as dirname9, isAbsolute, join as join23, resolve as resolve5 } from "node:path";
98191
+ import { dirname as dirname10, isAbsolute, join as join23, resolve as resolve5 } from "node:path";
98149
98192
 
98150
98193
  // packages/omo-codex/src/install/codex-cache-fs.ts
98151
98194
  import { lstat } from "node:fs/promises";
@@ -98192,7 +98235,7 @@ async function removeDanglingManagedSymlink(linkPath) {
98192
98235
  if (!linkStat.isSymbolicLink())
98193
98236
  return;
98194
98237
  const linkTarget = await readlink(linkPath);
98195
- const target = isAbsolute(linkTarget) ? linkTarget : resolve5(dirname9(linkPath), linkTarget);
98238
+ const target = isAbsolute(linkTarget) ? linkTarget : resolve5(dirname10(linkPath), linkTarget);
98196
98239
  if (!await isFileSystemEntry(target) && isManagedComponentBinTarget(target))
98197
98240
  await rm(linkPath, { force: true });
98198
98241
  } catch (error51) {
@@ -98654,11 +98697,11 @@ async function existingNonSymlink(path7) {
98654
98697
  }
98655
98698
  // packages/omo-codex/src/install/codex-cache-install.ts
98656
98699
  import { cp as cp2, mkdir as mkdir3, readFile as readFile8, readdir as readdir4, rename, rm as rm4 } from "node:fs/promises";
98657
- import { basename as basename5, dirname as dirname12, join as join32, sep as sep5 } from "node:path";
98700
+ import { basename as basename5, dirname as dirname13, join as join32, sep as sep5 } from "node:path";
98658
98701
 
98659
98702
  // packages/omo-codex/src/install/codex-cache-bundled-mcps.ts
98660
98703
  import { cp, mkdir as mkdir2, readFile as readFile4, stat as stat3 } from "node:fs/promises";
98661
- import { dirname as dirname10, join as join27, resolve as resolve7 } from "node:path";
98704
+ import { dirname as dirname11, join as join27, resolve as resolve7 } from "node:path";
98662
98705
  var BUNDLED_MCP_RUNTIMES = [
98663
98706
  {
98664
98707
  label: "Git Bash MCP",
@@ -98693,7 +98736,7 @@ async function copyBundledMcpRuntimeDist(pluginRoot, sourceRoot, runtime4) {
98693
98736
  throw new Error(`missing built ${runtime4.label} dist at ${sourcePath}`);
98694
98737
  }
98695
98738
  const destinationPath = join27(pluginRoot, runtime4.destinationDistFromPlugin);
98696
- await mkdir2(dirname10(destinationPath), { recursive: true });
98739
+ await mkdir2(dirname11(destinationPath), { recursive: true });
98697
98740
  await cp(sourcePath, destinationPath, { recursive: true });
98698
98741
  }
98699
98742
  async function readSourceMcpArgs(path7) {
@@ -98731,7 +98774,7 @@ async function isDirectory(path7) {
98731
98774
  // packages/omo-codex/src/install/codex-cache-local-dependencies.ts
98732
98775
  import { realpathSync as realpathSync6 } from "node:fs";
98733
98776
  import { readFile as readFile5, readdir as readdir3, writeFile as writeFile2 } from "node:fs/promises";
98734
- import { dirname as dirname11, isAbsolute as isAbsolute4, join as join29, relative as relative3, resolve as resolve9, sep as sep2 } from "node:path";
98777
+ import { dirname as dirname12, isAbsolute as isAbsolute4, join as join29, relative as relative3, resolve as resolve9, sep as sep2 } from "node:path";
98735
98778
 
98736
98779
  // packages/omo-codex/src/install/codex-cache-paths.ts
98737
98780
  import { existsSync as existsSync24, readdirSync as readdirSync6 } from "node:fs";
@@ -98800,7 +98843,7 @@ async function rewriteCachedPackageLocalFileDependencies(pluginRoot, sourceRoot)
98800
98843
  const parsed = JSON.parse(raw);
98801
98844
  if (!isPlainRecord4(parsed))
98802
98845
  continue;
98803
- const packageDir = dirname11(packageJsonPath);
98846
+ const packageDir = dirname12(packageJsonPath);
98804
98847
  const sourcePackageDir = join29(sourceRoot, relative3(pluginRoot, packageDir));
98805
98848
  let changed = false;
98806
98849
  for (const field of ["dependencies", "optionalDependencies", "peerDependencies"]) {
@@ -99195,13 +99238,13 @@ function sanitizeNpmInstallEnv(env2) {
99195
99238
  return Object.fromEntries(Object.entries(env2).filter(([key]) => key.toLowerCase() !== "npm_config_allow_scripts"));
99196
99239
  }
99197
99240
  function createTempSiblingPath(targetPath) {
99198
- return join32(dirname12(targetPath), `.tmp-${basename5(targetPath)}-${process.pid}-${Date.now()}`);
99241
+ return join32(dirname13(targetPath), `.tmp-${basename5(targetPath)}-${process.pid}-${Date.now()}`);
99199
99242
  }
99200
99243
  function createBackupSiblingPath(targetPath) {
99201
- return join32(dirname12(targetPath), `.backup-${basename5(targetPath)}-${process.pid}-${Date.now()}`);
99244
+ return join32(dirname13(targetPath), `.backup-${basename5(targetPath)}-${process.pid}-${Date.now()}`);
99202
99245
  }
99203
99246
  async function copyDirectory(sourcePath, targetPath) {
99204
- await mkdir3(dirname12(targetPath), { recursive: true });
99247
+ await mkdir3(dirname13(targetPath), { recursive: true });
99205
99248
  await cp2(sourcePath, targetPath, { recursive: true, filter: (source) => shouldCopyPluginPath(source, sourcePath) });
99206
99249
  }
99207
99250
  async function promoteDirectory(tempPath, targetPath, renameDirectory) {
@@ -99300,20 +99343,20 @@ async function copyRootRuntimeDists(input) {
99300
99343
  const sourcePath = join32(repoRoot, runtimePath);
99301
99344
  if (!await fileExistsStrict(join32(sourcePath, "index.js")))
99302
99345
  continue;
99303
- await mkdir3(dirname12(join32(input.pluginRoot, runtimePath)), { recursive: true });
99346
+ await mkdir3(dirname13(join32(input.pluginRoot, runtimePath)), { recursive: true });
99304
99347
  await cp2(sourcePath, join32(input.pluginRoot, runtimePath), { recursive: true });
99305
99348
  }
99306
99349
  }
99307
99350
  function repoRootForCodexPluginSource(sourcePath) {
99308
- const codexPackageRoot = dirname12(sourcePath);
99309
- const packagesRoot = dirname12(codexPackageRoot);
99351
+ const codexPackageRoot = dirname13(sourcePath);
99352
+ const packagesRoot = dirname13(codexPackageRoot);
99310
99353
  if (basename5(sourcePath) !== "plugin")
99311
99354
  return null;
99312
99355
  if (basename5(codexPackageRoot) !== "omo-codex")
99313
99356
  return null;
99314
99357
  if (basename5(packagesRoot) !== "packages")
99315
99358
  return null;
99316
- return dirname12(packagesRoot);
99359
+ return dirname13(packagesRoot);
99317
99360
  }
99318
99361
  // packages/omo-codex/src/install/codex-cache-prune.ts
99319
99362
  import { lstat as lstat5, readdir as readdir5, rm as rm5, stat as stat4 } from "node:fs/promises";
@@ -99444,7 +99487,7 @@ async function shouldBuildSourcePackages(repoRoot) {
99444
99487
 
99445
99488
  // packages/omo-codex/src/install/codex-config-toml.ts
99446
99489
  import { mkdir as mkdir5, readFile as readFile11 } from "node:fs/promises";
99447
- import { dirname as dirname15 } from "node:path";
99490
+ import { dirname as dirname16 } from "node:path";
99448
99491
 
99449
99492
  // packages/omo-codex/src/install/toml-section-editor.ts
99450
99493
  function findTomlSection(config3, header) {
@@ -100026,12 +100069,12 @@ function tomlKeySegment(value) {
100026
100069
 
100027
100070
  // packages/omo-codex/src/install/codex-config-atomic-write.ts
100028
100071
  import { lstat as lstat6, readlink as readlink4, realpath, rename as rename3, unlink, writeFile as writeFile5 } from "node:fs/promises";
100029
- import { basename as basename6, dirname as dirname13, isAbsolute as isAbsolute5, join as join36, resolve as resolve10 } from "node:path";
100072
+ import { basename as basename6, dirname as dirname14, isAbsolute as isAbsolute5, join as join36, resolve as resolve10 } from "node:path";
100030
100073
  var RENAME_RETRY_DELAYS_MS = [10, 25, 50];
100031
100074
  var RETRIABLE_RENAME_CODES = new Set(["EPERM", "EBUSY"]);
100032
100075
  async function writeFileAtomic(targetPath, data) {
100033
100076
  const writeTarget = await resolveSymlinkTarget(targetPath);
100034
- const temporaryPath = join36(dirname13(writeTarget), `.tmp-${basename6(writeTarget)}-${process.pid}-${Date.now()}`);
100077
+ const temporaryPath = join36(dirname14(writeTarget), `.tmp-${basename6(writeTarget)}-${process.pid}-${Date.now()}`);
100035
100078
  await writeFile5(temporaryPath, data);
100036
100079
  try {
100037
100080
  await renameWithRetry(temporaryPath, writeTarget);
@@ -100060,7 +100103,7 @@ async function resolveSymlinkTarget(targetPath) {
100060
100103
  if (!(error51 instanceof Error))
100061
100104
  throw error51;
100062
100105
  const linkValue = await readlink4(targetPath);
100063
- return isAbsolute5(linkValue) ? linkValue : resolve10(dirname13(targetPath), linkValue);
100106
+ return isAbsolute5(linkValue) ? linkValue : resolve10(dirname14(targetPath), linkValue);
100064
100107
  }
100065
100108
  }
100066
100109
  async function renameWithRetry(fromPath, toPath) {
@@ -100540,14 +100583,14 @@ import { join as join37 } from "node:path";
100540
100583
  var FALLBACK_CODEX_MODEL_CATALOG = {
100541
100584
  current: {
100542
100585
  model: "gpt-5.6-sol",
100543
- modelContextWindow: 372000,
100586
+ modelContextWindow: 650000,
100544
100587
  modelReasoningEffort: "high",
100545
100588
  planModeReasoningEffort: "xhigh"
100546
100589
  },
100547
100590
  managedProfiles: [
100548
100591
  {
100549
100592
  model: "gpt-5.5",
100550
- modelContextWindow: 400000,
100593
+ modelContextWindow: 650000,
100551
100594
  modelReasoningEffort: "high",
100552
100595
  planModeReasoningEffort: "xhigh"
100553
100596
  },
@@ -100645,7 +100688,7 @@ function isRootSetting2(line, key) {
100645
100688
 
100646
100689
  // packages/omo-codex/src/install/codex-multi-agent-v2-config.ts
100647
100690
  import { readFileSync as readFileSync11 } from "node:fs";
100648
- import { dirname as dirname14, isAbsolute as isAbsolute6, join as join38 } from "node:path";
100691
+ import { dirname as dirname15, isAbsolute as isAbsolute6, join as join38 } from "node:path";
100649
100692
  var CODEX_AGENTS_HEADER = "agents";
100650
100693
  var CODEX_MULTI_AGENT_V2_HEADER = "features.multi_agent_v2";
100651
100694
  var CODEX_MULTI_AGENT_V2_THREAD_LIMIT_KEY = `${CODEX_MULTI_AGENT_V2_HEADER}.max_concurrent_threads_per_session`;
@@ -100682,8 +100725,8 @@ function resolveCodexMultiAgentVersion(config3, configPath) {
100682
100725
  }
100683
100726
  function resolveCatalogPath(configuredPath, configPath) {
100684
100727
  if (configuredPath === null)
100685
- return join38(dirname14(configPath), "models_cache.json");
100686
- return isAbsolute6(configuredPath) ? configuredPath : join38(dirname14(configPath), configuredPath);
100728
+ return join38(dirname15(configPath), "models_cache.json");
100729
+ return isAbsolute6(configuredPath) ? configuredPath : join38(dirname15(configPath), configuredPath);
100687
100730
  }
100688
100731
  function readCatalogMultiAgentVersion(model, cachePath) {
100689
100732
  let raw;
@@ -100787,7 +100830,7 @@ function readBooleanSetting(sectionText, key) {
100787
100830
 
100788
100831
  // packages/omo-codex/src/install/codex-config-toml.ts
100789
100832
  async function updateCodexConfig(input) {
100790
- await mkdir5(dirname15(input.configPath), { recursive: true });
100833
+ await mkdir5(dirname16(input.configPath), { recursive: true });
100791
100834
  let config3;
100792
100835
  try {
100793
100836
  config3 = await readFile11(input.configPath, "utf8");
@@ -101760,7 +101803,7 @@ var defaultRunCommand = async (command, args, options) => {
101760
101803
 
101761
101804
  // packages/omo-codex/src/install/codex-project-local-cleanup.ts
101762
101805
  import { copyFile as copyFile2, lstat as lstat10, readFile as readFile17, writeFile as writeFile10 } from "node:fs/promises";
101763
- import { dirname as dirname16, join as join46, resolve as resolve11 } from "node:path";
101806
+ import { dirname as dirname17, join as join46, resolve as resolve11 } from "node:path";
101764
101807
  var LEGACY_AGENT_CONFLICT_KEYS = ["max_threads"];
101765
101808
  var PROJECT_LOCAL_ARTIFACT_PATHS = [
101766
101809
  ".codex/hooks.json",
@@ -101880,13 +101923,13 @@ async function findProjectLocalCodexConfigs(startDirectory, codexHome) {
101880
101923
  artifactRoots: artifactRootsForConfigPaths(configPathsFromCwd)
101881
101924
  };
101882
101925
  }
101883
- const parent = dirname16(current);
101926
+ const parent = dirname17(current);
101884
101927
  if (parent === current) {
101885
101928
  const nearestConfigPath = configPathsFromCwd[0];
101886
101929
  return nearestConfigPath === undefined ? null : {
101887
- projectRoot: dirname16(dirname16(nearestConfigPath)),
101930
+ projectRoot: dirname17(dirname17(nearestConfigPath)),
101888
101931
  configPaths: [nearestConfigPath],
101889
- artifactRoots: [dirname16(dirname16(nearestConfigPath))]
101932
+ artifactRoots: [dirname17(dirname17(nearestConfigPath))]
101890
101933
  };
101891
101934
  }
101892
101935
  current = parent;
@@ -101902,7 +101945,7 @@ async function isRegularProjectLocalConfig(directory, configPath) {
101902
101945
  function artifactRootsForConfigPaths(configPaths2) {
101903
101946
  const roots = [];
101904
101947
  for (const configPath of configPaths2) {
101905
- const root = dirname16(dirname16(configPath));
101948
+ const root = dirname17(dirname17(configPath));
101906
101949
  if (!roots.includes(root))
101907
101950
  roots.push(root);
101908
101951
  }
@@ -102812,7 +102855,7 @@ import { isAbsolute as isAbsolute11, join as join58, relative as relative6, reso
102812
102855
 
102813
102856
  // packages/omo-codex/src/install/codex-cleanup-bins.ts
102814
102857
  import { lstat as lstat12, readFile as readFile22, readdir as readdir12, readlink as readlink6, rm as rm11 } from "node:fs/promises";
102815
- import { dirname as dirname18, isAbsolute as isAbsolute9, join as join56, resolve as resolve14 } from "node:path";
102858
+ import { dirname as dirname19, isAbsolute as isAbsolute9, join as join56, resolve as resolve14 } from "node:path";
102816
102859
  var ROOT_RUNTIME_BIN_NAME = "omo";
102817
102860
  var MANAGED_CODEX_BIN_NAMES = new Set([
102818
102861
  ROOT_RUNTIME_BIN_NAME,
@@ -102869,7 +102912,7 @@ async function isManagedCodexBin(linkPath, platform, binName) {
102869
102912
  if (platform === "win32")
102870
102913
  return false;
102871
102914
  const linkTarget = await readlink6(linkPath);
102872
- const target = isAbsolute9(linkTarget) ? linkTarget : resolve14(dirname18(linkPath), linkTarget);
102915
+ const target = isAbsolute9(linkTarget) ? linkTarget : resolve14(dirname19(linkPath), linkTarget);
102873
102916
  return isManagedComponentBinTarget(target) || isLegacyCodexBinTarget(binName, target);
102874
102917
  }
102875
102918
  if (!entryStat.isFile())
@@ -102880,7 +102923,7 @@ async function isManagedCodexBin(linkPath, platform, binName) {
102880
102923
 
102881
102924
  // packages/omo-codex/src/install/codex-cleanup-config.ts
102882
102925
  import { lstat as lstat13, mkdir as mkdir8, readFile as readFile23, writeFile as writeFile13 } from "node:fs/promises";
102883
- import { dirname as dirname19 } from "node:path";
102926
+ import { dirname as dirname20 } from "node:path";
102884
102927
  var MANAGED_MARKETPLACES = ["sisyphuslabs", "lazycodex", "code-yeongyu-codex-plugins"];
102885
102928
  var LEGACY_MANAGED_CODEX_AGENT_NAMES_TO_PURGE2 = ["codex-ultrawork-reviewer"];
102886
102929
  var CURRENT_MANAGED_CODEX_AGENT_NAMES2 = [
@@ -102917,7 +102960,7 @@ async function cleanupCodexConfig(configPath, now) {
102917
102960
  if (next === original)
102918
102961
  return { changed: false };
102919
102962
  const backupPath = `${configPath}.backup-${formatBackupTimestamp2(now?.() ?? new Date)}`;
102920
- await mkdir8(dirname19(configPath), { recursive: true });
102963
+ await mkdir8(dirname20(configPath), { recursive: true });
102921
102964
  await writeFile13(backupPath, original);
102922
102965
  await writeFile13(configPath, `${next.trimEnd()}
102923
102966
  `);
@@ -102996,10 +103039,10 @@ function nodeErrorCode5(error51) {
102996
103039
  }
102997
103040
 
102998
103041
  // packages/omo-codex/src/install/codex-cleanup-safety.ts
102999
- import { dirname as dirname20, isAbsolute as isAbsolute10, join as join57, relative as relative5, resolve as resolve15 } from "node:path";
103042
+ import { dirname as dirname21, isAbsolute as isAbsolute10, join as join57, relative as relative5, resolve as resolve15 } from "node:path";
103000
103043
  function codexHomeResolvesToFilesystemRoot(codexHome) {
103001
103044
  const resolved = resolve15(codexHome);
103002
- return dirname20(resolved) === resolved;
103045
+ return dirname21(resolved) === resolved;
103003
103046
  }
103004
103047
  function validateManagedCleanupTarget(input) {
103005
103048
  if (!isAbsolute10(input.path))
@@ -103262,7 +103305,7 @@ var CODEGRAPH_RELATIVE_ARGS2 = new Set(["components/codegraph/dist/serve.js", ".
103262
103305
  import { execFile as execFile4 } from "node:child_process";
103263
103306
  import { existsSync as existsSync32 } from "node:fs";
103264
103307
  import { homedir as homedir11 } from "node:os";
103265
- import { dirname as dirname24, join as join63, resolve as resolve20 } from "node:path";
103308
+ import { dirname as dirname25, join as join63, resolve as resolve20 } from "node:path";
103266
103309
  import { fileURLToPath } from "node:url";
103267
103310
  import { promisify as promisify3 } from "node:util";
103268
103311
 
@@ -103293,9 +103336,9 @@ function resolveAgentHome(options) {
103293
103336
  }
103294
103337
 
103295
103338
  // packages/omo-senpi/src/install/local-launcher.ts
103296
- import { chmodSync as chmodSync3, existsSync as existsSync31, mkdirSync as mkdirSync10, readFileSync as readFileSync14, rmSync, writeFileSync as writeFileSync6 } from "node:fs";
103339
+ import { chmodSync as chmodSync3, existsSync as existsSync31, mkdirSync as mkdirSync10, readFileSync as readFileSync14, rmSync as rmSync2, writeFileSync as writeFileSync6 } from "node:fs";
103297
103340
  import { homedir as homedir10 } from "node:os";
103298
- import { dirname as dirname21, join as join60, resolve as resolve18 } from "node:path";
103341
+ import { dirname as dirname22, join as join60, resolve as resolve18 } from "node:path";
103299
103342
  var MARKER = "omo-local-launcher";
103300
103343
  function localLauncherPath(homeDir = homedir10()) {
103301
103344
  return join60(homeDir, ".local", "bin", "omo");
@@ -103366,7 +103409,7 @@ function installLocalLauncher(options) {
103366
103409
  const path7 = localLauncherPath(options.homeDir);
103367
103410
  if (existsSync31(path7) && !readFileSync14(path7, "utf8").includes(MARKER))
103368
103411
  return;
103369
- mkdirSync10(dirname21(path7), { recursive: true });
103412
+ mkdirSync10(dirname22(path7), { recursive: true });
103370
103413
  writeFileSync6(path7, renderLocalLauncher(options));
103371
103414
  chmodSync3(path7, 493);
103372
103415
  if ((options.platform ?? process.platform) === "win32") {
@@ -103381,12 +103424,12 @@ node "%~dp0omo" %*\r
103381
103424
  import { createHash as createHash5 } from "node:crypto";
103382
103425
  import { constants as constants9 } from "node:fs";
103383
103426
  import { access as access2, readFile as readFile26, stat as stat6 } from "node:fs/promises";
103384
- import { dirname as dirname23, join as join62 } from "node:path";
103427
+ import { dirname as dirname24, join as join62 } from "node:path";
103385
103428
 
103386
103429
  // packages/omo-senpi/src/install/senpi-settings.ts
103387
103430
  import { constants as constants8 } from "node:fs";
103388
103431
  import { access, copyFile as copyFile3, mkdir as mkdir9, readFile as readFile25, rename as rename5, writeFile as writeFile14 } from "node:fs/promises";
103389
- import { dirname as dirname22, join as join61, resolve as resolve19 } from "node:path";
103432
+ import { dirname as dirname23, join as join61, resolve as resolve19 } from "node:path";
103390
103433
  var OMO_SENPI_PACKAGE_NAME = "@code-yeongyu/omo-senpi";
103391
103434
  var LEGACY_BUILTIN_SHADOW_PACKAGES = [
103392
103435
  join61("packages", "pi-goal"),
@@ -103433,7 +103476,7 @@ async function removeSupersededOmoPackages(packages, currentPluginPath, agentDir
103433
103476
  return entries.filter((entry) => entry !== undefined);
103434
103477
  }
103435
103478
  async function writeSettingsAtomically(settingsPath, settings) {
103436
- await mkdir9(dirname22(settingsPath), { recursive: true });
103479
+ await mkdir9(dirname23(settingsPath), { recursive: true });
103437
103480
  const backupPath = await nextBackupPath(settingsPath);
103438
103481
  if (await fileExists(settingsPath)) {
103439
103482
  await copyFile3(settingsPath, backupPath);
@@ -103553,7 +103596,7 @@ async function hasMissingPluginArtifact(pluginPath) {
103553
103596
  }
103554
103597
  async function verifyAstGrepRuntimeIntegrity(pluginPath, platform) {
103555
103598
  const runtimeEntry = join62(pluginPath, "runtime", "ast-grep-mcp", "cli.js");
103556
- const manifestPath = join62(dirname23(runtimeEntry), "manifest.json");
103599
+ const manifestPath = join62(dirname24(runtimeEntry), "manifest.json");
103557
103600
  let runtimeStat;
103558
103601
  try {
103559
103602
  runtimeStat = await stat6(runtimeEntry);
@@ -103643,7 +103686,7 @@ async function runSenpiInstaller(options = {}) {
103643
103686
  function resolveInstallContext(options) {
103644
103687
  const env3 = options.env ?? process.env;
103645
103688
  const allowBuild = options.pluginPath === undefined;
103646
- const repoRoot = resolve20(options.repoRoot ?? (allowBuild ? findRepoRoot2(dirname24(fileURLToPath(import.meta.url))) : dirname24(resolve20(options.pluginPath))));
103689
+ const repoRoot = resolve20(options.repoRoot ?? (allowBuild ? findRepoRoot2(dirname25(fileURLToPath(import.meta.url))) : dirname25(resolve20(options.pluginPath))));
103647
103690
  const agentDir = resolve20(options.agentDir ?? resolveAgentHome({ env: env3, homeDir: env3.HOME ?? homedir11() }));
103648
103691
  const pluginPath = resolve20(options.pluginPath ?? join63(repoRoot, "packages", "omo-senpi", "plugin"));
103649
103692
  return {
@@ -107647,7 +107690,7 @@ var import_picocolors11 = __toESM(require_picocolors(), 1);
107647
107690
  // packages/omo-opencode/src/cli/run/opencode-binary-resolver.ts
107648
107691
  init_bun_which_shim();
107649
107692
  init_spawn_with_windows_hide();
107650
- import { delimiter as delimiter2, dirname as dirname25, posix as posix9, win32 as win325 } from "node:path";
107693
+ import { delimiter as delimiter2, dirname as dirname26, posix as posix9, win32 as win325 } from "node:path";
107651
107694
  var OPENCODE_COMMANDS = ["opencode", "opencode-desktop"];
107652
107695
  var WINDOWS_SUFFIXES = ["", ".exe", ".cmd", ".bat", ".ps1"];
107653
107696
  function getCommandCandidates(platform) {
@@ -107705,7 +107748,7 @@ async function findWorkingOpencodeBinary(pathEnv = process.env.PATH, probe2 = ca
107705
107748
  return null;
107706
107749
  }
107707
107750
  function buildPathWithBinaryFirst(pathEnv, binaryPath) {
107708
- const preferredDir = dirname25(binaryPath);
107751
+ const preferredDir = dirname26(binaryPath);
107709
107752
  const existing = (pathEnv ?? "").split(delimiter2).filter((entry) => entry.length > 0 && entry !== preferredDir);
107710
107753
  return [preferredDir, ...existing].join(delimiter2);
107711
107754
  }
@@ -108483,7 +108526,7 @@ init_state();
108483
108526
  // packages/omo-opencode/src/features/run-continuation-state/constants.ts
108484
108527
  var CONTINUATION_MARKER_DIR = ".omo/run-continuation";
108485
108528
  // packages/omo-opencode/src/features/run-continuation-state/storage.ts
108486
- import { existsSync as existsSync40, mkdirSync as mkdirSync12, readFileSync as readFileSync20, rmSync as rmSync2, writeFileSync as writeFileSync7 } from "node:fs";
108529
+ import { existsSync as existsSync40, mkdirSync as mkdirSync12, readFileSync as readFileSync20, rmSync as rmSync3, writeFileSync as writeFileSync7 } from "node:fs";
108487
108530
  import { join as join68 } from "node:path";
108488
108531
  function getMarkerPath(directory, sessionID) {
108489
108532
  return join68(directory, CONTINUATION_MARKER_DIR, `${sessionID}.json`);
@@ -108663,7 +108706,7 @@ init_agent_display_names();
108663
108706
  // packages/omo-opencode/src/hooks/ralph-loop/storage.ts
108664
108707
  init_frontmatter2();
108665
108708
  import { existsSync as existsSync41, readFileSync as readFileSync22, writeFileSync as writeFileSync8, unlinkSync as unlinkSync6, mkdirSync as mkdirSync13 } from "node:fs";
108666
- import { dirname as dirname26, join as join70 } from "node:path";
108709
+ import { dirname as dirname27, join as join70 } from "node:path";
108667
108710
 
108668
108711
  // packages/omo-opencode/src/hooks/ralph-loop/constants.ts
108669
108712
  var DEFAULT_STATE_FILE = ".omo/ralph-loop.local.md";
@@ -110505,8 +110548,8 @@ function getCategoryEffectiveVariant(categoryName, requirement, config4) {
110505
110548
  }
110506
110549
 
110507
110550
  // packages/omo-opencode/src/cli/doctor/checks/model-resolution-details.ts
110508
- function formatCapabilityResolutionLabel(mode) {
110509
- return mode ?? "unknown";
110551
+ function formatCapabilityResolutionLabel(mode2) {
110552
+ return mode2 ?? "unknown";
110510
110553
  }
110511
110554
  function buildModelResolutionDetails(options) {
110512
110555
  const details = [];
@@ -110624,8 +110667,8 @@ function collectCapabilityResolutionIssues(info) {
110624
110667
  const issues = [];
110625
110668
  const allEntries = [...info.agents, ...info.categories];
110626
110669
  const fallbackEntries = allEntries.filter((entry) => {
110627
- const mode = entry.capabilityDiagnostics?.resolutionMode;
110628
- return mode === "unknown";
110670
+ const mode2 = entry.capabilityDiagnostics?.resolutionMode;
110671
+ return mode2 === "unknown";
110629
110672
  });
110630
110673
  if (fallbackEntries.length === 0) {
110631
110674
  return issues;
@@ -110901,7 +110944,7 @@ init_src2();
110901
110944
  import { existsSync as existsSync55 } from "node:fs";
110902
110945
  import { createRequire as createRequire4 } from "node:module";
110903
110946
  import { homedir as homedir19 } from "node:os";
110904
- import { dirname as dirname31, join as join83 } from "node:path";
110947
+ import { dirname as dirname32, join as join83 } from "node:path";
110905
110948
 
110906
110949
  // packages/omo-opencode/src/hooks/comment-checker/downloader.ts
110907
110950
  import { join as join82 } from "path";
@@ -110998,7 +111041,7 @@ function findCommentCheckerPackageBinary(baseDirOverride, resolvePackageJsonPath
110998
111041
  const binaryName = process.platform === "win32" ? "comment-checker.exe" : "comment-checker";
110999
111042
  const platformKey = `${process.platform}-${process.arch === "x64" ? "x64" : process.arch}`;
111000
111043
  try {
111001
- const packageDir = baseDirOverride ?? dirname31(resolvePackageJsonPath());
111044
+ const packageDir = baseDirOverride ?? dirname32(resolvePackageJsonPath());
111002
111045
  const vendorPath = join83(packageDir, "vendor", platformKey, binaryName);
111003
111046
  if (existsSync55(vendorPath))
111004
111047
  return vendorPath;
@@ -111150,7 +111193,7 @@ async function getGhCliInfo(dependencies = {}) {
111150
111193
  init_zod();
111151
111194
  init_opencode_config_dir();
111152
111195
  import { existsSync as existsSync56, readFileSync as readFileSync35 } from "node:fs";
111153
- import { delimiter as delimiter3, dirname as dirname32, resolve as resolve23 } from "node:path";
111196
+ import { delimiter as delimiter3, dirname as dirname33, resolve as resolve23 } from "node:path";
111154
111197
  import { fileURLToPath as fileURLToPath7 } from "node:url";
111155
111198
 
111156
111199
  // packages/omo-opencode/src/mcp/cli-suffix.ts
@@ -111281,7 +111324,7 @@ var LSP_BOOTSTRAP_SCRIPT = [
111281
111324
  ].join(";");
111282
111325
  function getModuleDirectory(moduleUrl) {
111283
111326
  try {
111284
- return dirname32(fileURLToPath7(moduleUrl));
111327
+ return dirname33(fileURLToPath7(moduleUrl));
111285
111328
  } catch (error51) {
111286
111329
  if (!(error51 instanceof Error))
111287
111330
  throw error51;
@@ -112014,7 +112057,7 @@ async function pathExists2(path15) {
112014
112057
  init_src2();
112015
112058
  import { readdir as readdir15, readFile as readFile28, stat as stat7 } from "node:fs/promises";
112016
112059
  import { homedir as homedir23 } from "node:os";
112017
- import { dirname as dirname33, isAbsolute as isAbsolute13, join as join86, relative as relative9, resolve as resolve25, sep as sep9 } from "node:path";
112060
+ import { dirname as dirname34, isAbsolute as isAbsolute13, join as join86, relative as relative9, resolve as resolve25, sep as sep9 } from "node:path";
112018
112061
  var CODEX_COMPONENTS_CHECK_ID = "codex-components";
112019
112062
  var CODEX_COMPONENTS_CHECK_NAME = "codex-components";
112020
112063
  var PLUGIN_DATA_DIR_NAME = "omo-sisyphuslabs";
@@ -112088,7 +112131,7 @@ async function auditBundleTargets(pluginRoot) {
112088
112131
  const manifest2 = await readJson2(manifestPath);
112089
112132
  if (manifest2 === null || !isRecord13(manifest2["mcpServers"]))
112090
112133
  continue;
112091
- const manifestRoot = dirname33(manifestPath);
112134
+ const manifestRoot = dirname34(manifestPath);
112092
112135
  const isRootManifest = resolve25(manifestRoot) === resolve25(pluginRoot);
112093
112136
  for (const server2 of Object.values(manifest2["mcpServers"])) {
112094
112137
  if (!isRecord13(server2) || !Array.isArray(server2["args"]))
@@ -112109,7 +112152,7 @@ async function auditBundleTargets(pluginRoot) {
112109
112152
  continue;
112110
112153
  const commands2 = [];
112111
112154
  collectHookCommands(manifest2, commands2);
112112
- const hookPluginRoot = dirname33(dirname33(hookManifestPath));
112155
+ const hookPluginRoot = dirname34(dirname34(hookManifestPath));
112113
112156
  for (const command of commands2) {
112114
112157
  for (const relativePath of extractPluginRootPaths(command)) {
112115
112158
  referencedCount += 1;
@@ -112148,7 +112191,7 @@ async function classifyBundleTarget(bundleRoot, baseRoot, relativePath, allowEsc
112148
112191
  }
112149
112192
  async function findHookManifestPaths(root) {
112150
112193
  const paths3 = await findManifestPaths(root, "hooks.json");
112151
- return paths3.filter((path15) => dirname33(path15).endsWith(`${sep9}hooks`));
112194
+ return paths3.filter((path15) => dirname34(path15).endsWith(`${sep9}hooks`));
112152
112195
  }
112153
112196
  async function findManifestPaths(root, manifestName) {
112154
112197
  let entries;
@@ -112667,8 +112710,8 @@ function formatVerbose(result) {
112667
112710
  }
112668
112711
 
112669
112712
  // packages/omo-opencode/src/cli/doctor/framework/formatter.ts
112670
- function formatDoctorOutput(result, mode) {
112671
- switch (mode) {
112713
+ function formatDoctorOutput(result, mode2) {
112714
+ switch (mode2) {
112672
112715
  case "default":
112673
112716
  return formatDefault(result);
112674
112717
  case "status":
@@ -112832,7 +112875,7 @@ import {
112832
112875
  unlinkSync as unlinkSync9,
112833
112876
  writeFileSync as writeFileSync12
112834
112877
  } from "node:fs";
112835
- import { basename as basename12, dirname as dirname34, join as join90 } from "node:path";
112878
+ import { basename as basename12, dirname as dirname35, join as join90 } from "node:path";
112836
112879
 
112837
112880
  // packages/mcp-client-core/src/config-dir.ts
112838
112881
  import { existsSync as existsSync61, realpathSync as realpathSync8 } from "node:fs";
@@ -113016,7 +113059,7 @@ function readLegacyStore() {
113016
113059
  }
113017
113060
  function writeTokenFile(filePath, token) {
113018
113061
  try {
113019
- const dir = dirname34(filePath);
113062
+ const dir = dirname35(filePath);
113020
113063
  if (!existsSync63(dir)) {
113021
113064
  mkdirSync15(dir, { recursive: true });
113022
113065
  }
@@ -113988,10 +114031,10 @@ function formatClassification(classification) {
113988
114031
  return classification.ref.length > 0 ? `${head} ${classification.path} ${classification.ref}` : `${head} ${classification.path}`;
113989
114032
  }
113990
114033
  function formatSummary(result) {
113991
- const mode = result.apply ? "apply" : "dry-run";
114034
+ const mode2 = result.apply ? "apply" : "dry-run";
113992
114035
  const removed2 = result.repos.reduce((total, repo) => total + repo.removed.length, 0);
113993
114036
  const failed = result.repos.reduce((total, repo) => total + repo.failed.length, 0);
113994
- return `SUMMARY mode=${mode} repos=${result.repos.length} sweep=${result.sweepCount} keep=${result.keepCount} prune=${result.pruneCount} removed=${removed2} failed=${failed}`;
114037
+ return `SUMMARY mode=${mode2} repos=${result.repos.length} sweep=${result.sweepCount} keep=${result.keepCount} prune=${result.pruneCount} removed=${removed2} failed=${failed}`;
113995
114038
  }
113996
114039
  function formatResult(result) {
113997
114040
  const lines = [];
@@ -114513,9 +114556,9 @@ Examples:
114513
114556
  `).action(async (options) => {
114514
114557
  const rootOptions = program2.opts();
114515
114558
  const rootDoctorPlatform = rootOptions.platform === "opencode" || rootOptions.platform === "codex" ? rootOptions.platform : undefined;
114516
- const mode = options.status ? "status" : options.verbose ? "verbose" : "default";
114559
+ const mode2 = options.status ? "status" : options.verbose ? "verbose" : "default";
114517
114560
  const doctorOptions = {
114518
- mode,
114561
+ mode: mode2,
114519
114562
  json: options.json ?? false,
114520
114563
  target: resolveDoctorTarget(process.env.OMO_INVOCATION_NAME, options.platform ?? rootDoctorPlatform)
114521
114564
  };