oh-my-openagent 5.1.2 → 5.1.3

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 (58) hide show
  1. package/dist/cli/index.js +99 -77
  2. package/dist/cli-node/index.js +99 -77
  3. package/dist/index.js +53 -20
  4. package/dist/skills/browser/runtime/omowright/manifest.json +1 -1
  5. package/dist/tui.js +14 -14
  6. package/package.json +14 -14
  7. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  8. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  9. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  10. package/packages/omo-codex/plugin/components/comment-checker/dist/cli.js +33 -7
  11. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  12. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  13. package/packages/omo-codex/plugin/components/comment-checker/src/runner.ts +4 -4
  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 +1 -1
  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 +5 -5
  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/post-tool-use-recording-spawn-admission.json +1 -1
  41. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  42. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  43. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  44. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  45. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  46. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  47. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  48. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
  49. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.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/skills/browser/runtime/omowright/manifest.json +1 -1
  57. package/packages/omo-codex/scripts/install-dist/install-local.mjs +2 -2
  58. package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +1 -1
package/dist/cli/index.js CHANGED
@@ -64,7 +64,7 @@ var package_default;
64
64
  var init_package = __esm(() => {
65
65
  package_default = {
66
66
  name: "oh-my-opencode",
67
- version: "5.1.2",
67
+ version: "5.1.3",
68
68
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
69
69
  main: "./dist/index.js",
70
70
  types: "dist/index.d.ts",
@@ -241,7 +241,7 @@ var init_package = __esm(() => {
241
241
  },
242
242
  devDependencies: {
243
243
  "@clack/prompts": "^1.8.1",
244
- "@code-yeongyu/senpi": "2026.9.29-3",
244
+ "@code-yeongyu/senpi": "2026.9.29-4",
245
245
  "@modelcontextprotocol/sdk": "^1.30.0",
246
246
  "@oh-my-opencode/agents-md-core": "workspace:*",
247
247
  "@oh-my-opencode/ast-grep-mcp": "workspace:*",
@@ -299,18 +299,18 @@ var init_package = __esm(() => {
299
299
  typescript: "^7.0.2"
300
300
  },
301
301
  optionalDependencies: {
302
- "oh-my-opencode-darwin-arm64": "5.1.2",
303
- "oh-my-opencode-darwin-x64": "5.1.2",
304
- "oh-my-opencode-darwin-x64-baseline": "5.1.2",
305
- "oh-my-opencode-linux-arm64": "5.1.2",
306
- "oh-my-opencode-linux-arm64-musl": "5.1.2",
307
- "oh-my-opencode-linux-x64": "5.1.2",
308
- "oh-my-opencode-linux-x64-baseline": "5.1.2",
309
- "oh-my-opencode-linux-x64-musl": "5.1.2",
310
- "oh-my-opencode-linux-x64-musl-baseline": "5.1.2",
311
- "oh-my-opencode-windows-arm64": "5.1.2",
312
- "oh-my-opencode-windows-x64": "5.1.2",
313
- "oh-my-opencode-windows-x64-baseline": "5.1.2"
302
+ "oh-my-opencode-darwin-arm64": "5.1.3",
303
+ "oh-my-opencode-darwin-x64": "5.1.3",
304
+ "oh-my-opencode-darwin-x64-baseline": "5.1.3",
305
+ "oh-my-opencode-linux-arm64": "5.1.3",
306
+ "oh-my-opencode-linux-arm64-musl": "5.1.3",
307
+ "oh-my-opencode-linux-x64": "5.1.3",
308
+ "oh-my-opencode-linux-x64-baseline": "5.1.3",
309
+ "oh-my-opencode-linux-x64-musl": "5.1.3",
310
+ "oh-my-opencode-linux-x64-musl-baseline": "5.1.3",
311
+ "oh-my-opencode-windows-arm64": "5.1.3",
312
+ "oh-my-opencode-windows-x64": "5.1.3",
313
+ "oh-my-opencode-windows-x64-baseline": "5.1.3"
314
314
  },
315
315
  overrides: {
316
316
  hono: "^4.13.8",
@@ -89020,7 +89020,7 @@ var package_default2;
89020
89020
  var init_package2 = __esm(() => {
89021
89021
  package_default2 = {
89022
89022
  name: "@oh-my-opencode/omo-codex",
89023
- version: "5.1.2",
89023
+ version: "5.1.3",
89024
89024
  type: "module",
89025
89025
  private: true,
89026
89026
  description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
@@ -106453,15 +106453,10 @@ async function checkDeprecatedReasoningKeys() {
106453
106453
  }
106454
106454
 
106455
106455
  // packages/omo-opencode/src/cli/doctor/checks/dependencies.ts
106456
- init_src();
106457
106456
  import { existsSync as existsSync55 } from "fs";
106458
- import { createRequire as createRequire2 } from "module";
106457
+ import { createRequire as createRequire3 } from "module";
106459
106458
  import { homedir as homedir20 } from "os";
106460
- import { dirname as dirname33, join as join88 } from "path";
106461
-
106462
- // packages/omo-opencode/src/hooks/comment-checker/downloader.ts
106463
- import { join as join87 } from "path";
106464
- import { homedir as homedir19, tmpdir as tmpdir4 } from "os";
106459
+ import { join as join89 } from "path";
106465
106460
  // packages/comment-checker-core/src/release.ts
106466
106461
  import { join as join85 } from "path";
106467
106462
  var COMMENT_CHECKER_RELEASE_VERSION = "0.8.0";
@@ -106488,12 +106483,45 @@ function isCachedCommentCheckerCurrent(cacheDir, readFile = (path) => readFileSy
106488
106483
  return false;
106489
106484
  }
106490
106485
  }
106486
+ // packages/comment-checker-core/src/package-binary.ts
106487
+ import { createRequire as createRequire2 } from "module";
106488
+ import { dirname as dirname33, join as join87 } from "path";
106489
+ var COMMENT_CHECKER_PACKAGE_NAME = "@code-yeongyu/comment-checker";
106490
+ function isModuleResolutionMiss(error) {
106491
+ return error instanceof Error || typeof error === "object" && error !== null && "name" in error && error.name === "ResolveMessage";
106492
+ }
106493
+ function findCommentCheckerPackageBinary(input) {
106494
+ const packageName = input.packageName ?? COMMENT_CHECKER_PACKAGE_NAME;
106495
+ const platformKey = `${input.platform ?? process.platform}-${input.arch ?? process.arch}`;
106496
+ const packageDir = dirname33(input.packageJsonPath);
106497
+ const candidates = [
106498
+ resolvePlatformPackageBinary(input.packageJsonPath, `${packageName}-${platformKey}`, input.binaryName),
106499
+ join87(packageDir, "vendor", platformKey, input.binaryName),
106500
+ join87(packageDir, "bin", input.binaryName)
106501
+ ];
106502
+ return candidates.find((candidate) => candidate !== null && input.existsSync(candidate)) ?? null;
106503
+ }
106504
+ function resolvePlatformPackageBinary(packageJsonPath, platformPackageName, binaryName) {
106505
+ try {
106506
+ const manifestPath = createRequire2(packageJsonPath).resolve(`${platformPackageName}/package.json`);
106507
+ return join87(dirname33(manifestPath), "bin", binaryName);
106508
+ } catch (error) {
106509
+ if (isModuleResolutionMiss(error))
106510
+ return null;
106511
+ throw error;
106512
+ }
106513
+ }
106514
+ // packages/omo-opencode/src/cli/doctor/checks/dependencies.ts
106515
+ init_src();
106516
+
106491
106517
  // packages/omo-opencode/src/hooks/comment-checker/downloader.ts
106518
+ import { join as join88 } from "path";
106519
+ import { homedir as homedir19, tmpdir as tmpdir4 } from "os";
106492
106520
  init_binary_downloader();
106493
106521
  init_logger2();
106494
106522
  init_plugin_identity();
106495
106523
  var DEBUG = process.env.COMMENT_CHECKER_DEBUG === "1";
106496
- var DEBUG_FILE = join87(tmpdir4(), "comment-checker-debug.log");
106524
+ var DEBUG_FILE = join88(tmpdir4(), "comment-checker-debug.log");
106497
106525
  function getCacheDir2() {
106498
106526
  return commentCheckerCacheDir({
106499
106527
  platform: process.platform,
@@ -106552,7 +106580,7 @@ async function getBinaryVersion(binary) {
106552
106580
  }
106553
106581
  }
106554
106582
  async function checkAstGrepCli() {
106555
- const runtimeDir = astGrepRuntimeDir(join88(homedir20(), ".omo"));
106583
+ const runtimeDir = astGrepRuntimeDir(join89(homedir20(), ".omo"));
106556
106584
  const sgPath = findSgBinarySync({ runtimeDir });
106557
106585
  if (sgPath === null) {
106558
106586
  return {
@@ -106574,20 +106602,14 @@ async function checkAstGrepCli() {
106574
106602
  };
106575
106603
  }
106576
106604
  function resolveCommentCheckerPackageJson() {
106577
- const require2 = createRequire2(import.meta.url);
106605
+ const require2 = createRequire3(import.meta.url);
106578
106606
  return require2.resolve("@code-yeongyu/comment-checker/package.json");
106579
106607
  }
106580
- function findCommentCheckerPackageBinary(baseDirOverride, resolvePackageJsonPath = resolveCommentCheckerPackageJson) {
106608
+ function findCommentCheckerPackageBinary2(baseDirOverride, resolvePackageJsonPath = resolveCommentCheckerPackageJson) {
106581
106609
  const binaryName = process.platform === "win32" ? "comment-checker.exe" : "comment-checker";
106582
- const platformKey = `${process.platform}-${process.arch === "x64" ? "x64" : process.arch}`;
106583
106610
  try {
106584
- const packageDir = baseDirOverride ?? dirname33(resolvePackageJsonPath());
106585
- const vendorPath = join88(packageDir, "vendor", platformKey, binaryName);
106586
- if (existsSync55(vendorPath))
106587
- return vendorPath;
106588
- const binPath = join88(packageDir, "bin", binaryName);
106589
- if (existsSync55(binPath))
106590
- return binPath;
106611
+ const packageJsonPath = baseDirOverride === undefined ? resolvePackageJsonPath() : join89(baseDirOverride, "package.json");
106612
+ return findCommentCheckerPackageBinary({ packageJsonPath, binaryName, existsSync: existsSync55 });
106591
106613
  } catch (error) {
106592
106614
  if (!(error instanceof Error) && !isModuleResolutionFailure(error))
106593
106615
  throw error;
@@ -106607,7 +106629,7 @@ async function checkCommentChecker() {
106607
106629
  };
106608
106630
  }
106609
106631
  const binaryCheck = await checkBinaryExists("comment-checker");
106610
- const resolvedPath = binaryCheck.exists ? binaryCheck.path : findCommentCheckerPackageBinary();
106632
+ const resolvedPath = binaryCheck.exists ? binaryCheck.path : findCommentCheckerPackageBinary2();
106611
106633
  if (!resolvedPath) {
106612
106634
  return {
106613
106635
  name: "Comment Checker",
@@ -106733,7 +106755,7 @@ async function getGhCliInfo(dependencies = {}) {
106733
106755
  init_zod();
106734
106756
  init_opencode_config_dir();
106735
106757
  import { existsSync as existsSync56, readFileSync as readFileSync38 } from "fs";
106736
- import { delimiter as delimiter3, dirname as dirname34, resolve as resolve23 } from "path";
106758
+ import { delimiter as delimiter3, dirname as dirname35, resolve as resolve23 } from "path";
106737
106759
  import { fileURLToPath as fileURLToPath7 } from "url";
106738
106760
 
106739
106761
  // packages/omo-opencode/src/mcp/cli-suffix.ts
@@ -106864,7 +106886,7 @@ var LSP_BOOTSTRAP_SCRIPT = [
106864
106886
  ].join(";");
106865
106887
  function getModuleDirectory(moduleUrl) {
106866
106888
  try {
106867
- return dirname34(fileURLToPath7(moduleUrl));
106889
+ return dirname35(fileURLToPath7(moduleUrl));
106868
106890
  } catch (error) {
106869
106891
  if (!(error instanceof Error))
106870
106892
  throw error;
@@ -106961,13 +106983,13 @@ function getInstalledLspServers(options = {}) {
106961
106983
  init_shared();
106962
106984
  import { existsSync as existsSync57, readFileSync as readFileSync39 } from "fs";
106963
106985
  import { homedir as homedir21 } from "os";
106964
- import { join as join89 } from "path";
106986
+ import { join as join90 } from "path";
106965
106987
  var BUILTIN_MCP_SERVERS = ["websearch", "context7", "grep_app", "lsp"];
106966
106988
  function getMcpConfigPaths() {
106967
106989
  return [
106968
- join89(homedir21(), ".claude", ".mcp.json"),
106969
- join89(process.cwd(), ".mcp.json"),
106970
- join89(process.cwd(), ".claude", ".mcp.json")
106990
+ join90(homedir21(), ".claude", ".mcp.json"),
106991
+ join90(process.cwd(), ".mcp.json"),
106992
+ join90(process.cwd(), ".claude", ".mcp.json")
106971
106993
  ];
106972
106994
  }
106973
106995
  function loadUserMcpConfig() {
@@ -107249,7 +107271,7 @@ init_src();
107249
107271
  import { existsSync as existsSync59 } from "fs";
107250
107272
  import { lstat as lstat16, readdir as readdir14, readFile as readFile30 } from "fs/promises";
107251
107273
  import { homedir as homedir23 } from "os";
107252
- import { basename as basename12, join as join90, resolve as resolve24 } from "path";
107274
+ import { basename as basename12, join as join91, resolve as resolve24 } from "path";
107253
107275
  // packages/omo-opencode/package.json
107254
107276
  var package_default3 = {
107255
107277
  name: "@oh-my-opencode/omo-opencode",
@@ -107318,13 +107340,13 @@ var CODEX_BIN_NAMES = [
107318
107340
  "omo-git-bash-hook"
107319
107341
  ];
107320
107342
  async function gatherCodexSummary(deps = {}) {
107321
- const codexHome = resolve24(deps.codexHome ?? process.env.CODEX_HOME ?? join90(homedir23(), ".codex"));
107343
+ const codexHome = resolve24(deps.codexHome ?? process.env.CODEX_HOME ?? join91(homedir23(), ".codex"));
107322
107344
  const binDir = resolveCodexInstallerBinDir({ binDir: deps.binDir, codexHome, env: process.env });
107323
107345
  const detection = await (deps.detectCodexInstallation ?? detectCodexInstallation)();
107324
107346
  const pluginRoot = await resolveInstalledPluginRoot(codexHome);
107325
- const manifest = pluginRoot === null ? null : await readJson(join90(pluginRoot, ".codex-plugin", "plugin.json"));
107326
- const installSnapshot = pluginRoot === null ? null : await readJson(join90(pluginRoot, "lazycodex-install.json"));
107327
- const configPath = join90(codexHome, "config.toml");
107347
+ const manifest = pluginRoot === null ? null : await readJson(join91(pluginRoot, ".codex-plugin", "plugin.json"));
107348
+ const installSnapshot = pluginRoot === null ? null : await readJson(join91(pluginRoot, "lazycodex-install.json"));
107349
+ const configPath = join91(codexHome, "config.toml");
107328
107350
  const pluginVersion = stringField(manifest, "version");
107329
107351
  return {
107330
107352
  codexPath: detection.found && "path" in detection ? detection.path : null,
@@ -107381,7 +107403,7 @@ function buildCodexIssues(summary) {
107381
107403
  if (summary.pluginRoot === null) {
107382
107404
  issues.push({
107383
107405
  title: "OMO Codex plugin is not installed",
107384
- description: `Expected cached plugin at ${join90("plugins", "cache", MARKETPLACE_NAME, PLUGIN_NAME2, DEFAULT_PLUGIN_VERSION)} under CODEX_HOME.`,
107406
+ description: `Expected cached plugin at ${join91("plugins", "cache", MARKETPLACE_NAME, PLUGIN_NAME2, DEFAULT_PLUGIN_VERSION)} under CODEX_HOME.`,
107385
107407
  fix: "Run: npx lazycodex-ai install",
107386
107408
  severity: "error",
107387
107409
  affects: ["plugin loading"]
@@ -107446,12 +107468,12 @@ function buildCodexIssues(summary) {
107446
107468
  return issues;
107447
107469
  }
107448
107470
  async function resolveInstalledPluginRoot(codexHome) {
107449
- const pluginRoot = join90(codexHome, "plugins", "cache", MARKETPLACE_NAME, PLUGIN_NAME2);
107471
+ const pluginRoot = join91(codexHome, "plugins", "cache", MARKETPLACE_NAME, PLUGIN_NAME2);
107450
107472
  if (!existsSync59(pluginRoot))
107451
107473
  return null;
107452
107474
  const versions = await readdir14(pluginRoot, { withFileTypes: true });
107453
107475
  const candidates = versions.filter((entry) => entry.isDirectory()).map((entry) => entry.name).sort(compareVersionsDescending);
107454
- return candidates.length === 0 ? null : join90(pluginRoot, candidates[0] ?? DEFAULT_PLUGIN_VERSION);
107476
+ return candidates.length === 0 ? null : join91(pluginRoot, candidates[0] ?? DEFAULT_PLUGIN_VERSION);
107455
107477
  }
107456
107478
  async function readCodexConfigSummary(configPath) {
107457
107479
  if (!existsSync59(configPath)) {
@@ -107479,13 +107501,13 @@ async function readCodexConfigSummary(configPath) {
107479
107501
  async function readLinkedBins(binDir) {
107480
107502
  const linked = [];
107481
107503
  for (const name of CODEX_BIN_NAMES) {
107482
- if (await pathExists3(join90(binDir, process.platform === "win32" ? `${name}.cmd` : name)))
107504
+ if (await pathExists3(join91(binDir, process.platform === "win32" ? `${name}.cmd` : name)))
107483
107505
  linked.push(name);
107484
107506
  }
107485
107507
  return linked;
107486
107508
  }
107487
107509
  async function readLinkedAgents(codexHome) {
107488
- const agentsDir = join90(codexHome, "agents");
107510
+ const agentsDir = join91(codexHome, "agents");
107489
107511
  if (!existsSync59(agentsDir))
107490
107512
  return [];
107491
107513
  const entries = await readdir14(agentsDir, { withFileTypes: true });
@@ -107619,7 +107641,7 @@ function resolveLatestVersion(input) {
107619
107641
  init_src();
107620
107642
  import { readdir as readdir15, readFile as readFile31, stat as stat7 } from "fs/promises";
107621
107643
  import { homedir as homedir24 } from "os";
107622
- import { dirname as dirname35, isAbsolute as isAbsolute14, join as join91, relative as relative9, resolve as resolve25, sep as sep9 } from "path";
107644
+ import { dirname as dirname36, isAbsolute as isAbsolute14, join as join92, relative as relative9, resolve as resolve25, sep as sep9 } from "path";
107623
107645
  var CODEX_COMPONENTS_CHECK_ID = "codex-components";
107624
107646
  var CODEX_COMPONENTS_CHECK_NAME = "codex-components";
107625
107647
  var PLUGIN_DATA_DIR_NAME = "omo-sisyphuslabs";
@@ -107629,7 +107651,7 @@ async function checkCodexComponents(deps = {}) {
107629
107651
  const env = deps.env ?? process.env;
107630
107652
  const platform = deps.platform ?? process.platform;
107631
107653
  const arch = deps.arch ?? process.arch;
107632
- const codexHome = resolve25(deps.codexHome ?? env["CODEX_HOME"] ?? join91(homedir24(), ".codex"));
107654
+ const codexHome = resolve25(deps.codexHome ?? env["CODEX_HOME"] ?? join92(homedir24(), ".codex"));
107633
107655
  const summary = await gatherCodexSummary({ ...deps, codexHome });
107634
107656
  if (summary.pluginRoot === null) {
107635
107657
  return {
@@ -107654,7 +107676,7 @@ async function checkCodexComponents(deps = {}) {
107654
107676
  });
107655
107677
  }
107656
107678
  const runtimeSgDir = runtimeSgDirectory(codexHome, platform, arch);
107657
- const runtimeSgPath = join91(runtimeSgDir, sgBinaryName(platform));
107679
+ const runtimeSgPath = join92(runtimeSgDir, sgBinaryName(platform));
107658
107680
  const sg = findSgBinarySync({
107659
107681
  arch,
107660
107682
  env,
@@ -107693,7 +107715,7 @@ async function auditBundleTargets(pluginRoot) {
107693
107715
  const manifest = await readJson2(manifestPath);
107694
107716
  if (manifest === null || !isRecord18(manifest["mcpServers"]))
107695
107717
  continue;
107696
- const manifestRoot = dirname35(manifestPath);
107718
+ const manifestRoot = dirname36(manifestPath);
107697
107719
  const isRootManifest = resolve25(manifestRoot) === resolve25(pluginRoot);
107698
107720
  for (const server of Object.values(manifest["mcpServers"])) {
107699
107721
  if (!isRecord18(server) || !Array.isArray(server["args"]))
@@ -107714,7 +107736,7 @@ async function auditBundleTargets(pluginRoot) {
107714
107736
  continue;
107715
107737
  const commands = [];
107716
107738
  collectHookCommands(manifest, commands);
107717
- const hookPluginRoot = dirname35(dirname35(hookManifestPath));
107739
+ const hookPluginRoot = dirname36(dirname36(hookManifestPath));
107718
107740
  for (const command of commands) {
107719
107741
  for (const relativePath of extractPluginRootPaths(command)) {
107720
107742
  referencedCount += 1;
@@ -107753,7 +107775,7 @@ async function classifyBundleTarget(bundleRoot, baseRoot, relativePath, allowEsc
107753
107775
  }
107754
107776
  async function findHookManifestPaths(root) {
107755
107777
  const paths = await findManifestPaths(root, "hooks.json");
107756
- return paths.filter((path) => dirname35(path).endsWith(`${sep9}hooks`));
107778
+ return paths.filter((path) => dirname36(path).endsWith(`${sep9}hooks`));
107757
107779
  }
107758
107780
  async function findManifestPaths(root, manifestName) {
107759
107781
  let entries;
@@ -107766,7 +107788,7 @@ async function findManifestPaths(root, manifestName) {
107766
107788
  for (const entry of entries) {
107767
107789
  if (entry.name === "node_modules" || entry.name === ".git")
107768
107790
  continue;
107769
- const entryPath = join91(root, entry.name);
107791
+ const entryPath = join92(root, entry.name);
107770
107792
  if (entry.isDirectory()) {
107771
107793
  paths.push(...await findManifestPaths(entryPath, manifestName));
107772
107794
  continue;
@@ -107810,18 +107832,18 @@ function isPluginRuntimePathArg(arg) {
107810
107832
  return normalized.endsWith(".js") && normalized.includes("/dist/") && (normalized.startsWith("./") || normalized.startsWith("../") || normalized.startsWith("components/") || normalized.startsWith("/") || isAbsolute14(arg));
107811
107833
  }
107812
107834
  function runtimeSgDirectory(codexHome, platform, arch) {
107813
- return join91(codexHome, "runtime", "ast-grep", runtimeSlug(platform, arch));
107835
+ return join92(codexHome, "runtime", "ast-grep", runtimeSlug(platform, arch));
107814
107836
  }
107815
107837
  function describeSgSource(sgPath, env, runtimeSgDir, platform) {
107816
107838
  const override = env[SG_PATH_ENV_KEY]?.trim();
107817
107839
  if (override !== undefined && override.length > 0 && sgPath === override)
107818
107840
  return `env override ${SG_PATH_ENV_KEY}`;
107819
- if (sgPath === join91(runtimeSgDir, sgBinaryName(platform)))
107841
+ if (sgPath === join92(runtimeSgDir, sgBinaryName(platform)))
107820
107842
  return "runtime dir";
107821
107843
  return "PATH";
107822
107844
  }
107823
107845
  async function readBootstrapStateSummary(codexHome) {
107824
- const statePath = join91(codexHome, "plugins", "data", PLUGIN_DATA_DIR_NAME, "bootstrap", "state.json");
107846
+ const statePath = join92(codexHome, "plugins", "data", PLUGIN_DATA_DIR_NAME, "bootstrap", "state.json");
107825
107847
  const raw = await readJson2(statePath);
107826
107848
  if (raw === null)
107827
107849
  return null;
@@ -107900,16 +107922,16 @@ function isRecord18(value) {
107900
107922
  import { existsSync as existsSync60 } from "fs";
107901
107923
  import { readFile as readFile32 } from "fs/promises";
107902
107924
  import { homedir as homedir25 } from "os";
107903
- import { join as join92, resolve as resolve26 } from "path";
107925
+ import { join as join93, resolve as resolve26 } from "path";
107904
107926
  var RUNTIME_WRAPPER_MARKER2 = "OMO_GENERATED_RUNTIME_WRAPPER";
107905
107927
  var CHECK_NAME = "codex-runtime-wrapper";
107906
107928
  var REINSTALL_COMMAND = "npx --yes lazycodex-ai@latest install --no-tui";
107907
107929
  async function checkCodexRuntimeWrapper(deps = {}) {
107908
- const codexHome = resolve26(deps.codexHome ?? process.env.CODEX_HOME ?? join92(homedir25(), ".codex"));
107930
+ const codexHome = resolve26(deps.codexHome ?? process.env.CODEX_HOME ?? join93(homedir25(), ".codex"));
107909
107931
  const binDir = resolveCodexInstallerBinDir({ binDir: deps.binDir, codexHome, env: process.env });
107910
107932
  const platform = deps.platform ?? process.platform;
107911
- const wrapperPath = join92(binDir, platform === "win32" ? "omo-agent-toolkit.cmd" : "omo-agent-toolkit");
107912
- const legacyWrapperPath = join92(binDir, platform === "win32" ? "omo.cmd" : "omo");
107933
+ const wrapperPath = join93(binDir, platform === "win32" ? "omo-agent-toolkit.cmd" : "omo-agent-toolkit");
107934
+ const legacyWrapperPath = join93(binDir, platform === "win32" ? "omo.cmd" : "omo");
107913
107935
  const [wrapper, legacyWrapper] = await Promise.all([readRuntimeWrapper(wrapperPath), readRuntimeWrapper(legacyWrapperPath)]);
107914
107936
  const issues = [];
107915
107937
  if (wrapper?.includes(RUNTIME_WRAPPER_MARKER2) === true) {
@@ -108445,12 +108467,12 @@ import {
108445
108467
  unlinkSync as unlinkSync9,
108446
108468
  writeFileSync as writeFileSync14
108447
108469
  } from "fs";
108448
- import { basename as basename13, dirname as dirname36, join as join95 } from "path";
108470
+ import { basename as basename13, dirname as dirname37, join as join96 } from "path";
108449
108471
 
108450
108472
  // packages/mcp-client-core/src/config-dir.ts
108451
108473
  import { existsSync as existsSync61, realpathSync as realpathSync10 } from "fs";
108452
108474
  import { homedir as homedir26 } from "os";
108453
- import { join as join93, resolve as resolve27 } from "path";
108475
+ import { join as join94, resolve as resolve27 } from "path";
108454
108476
  function resolveConfigPath2(pathValue) {
108455
108477
  const resolvedPath = resolve27(pathValue);
108456
108478
  if (!existsSync61(resolvedPath))
@@ -108468,13 +108490,13 @@ function getOpenCodeCliConfigDir(env = process.env) {
108468
108490
  if (customConfigDir) {
108469
108491
  return resolveConfigPath2(customConfigDir);
108470
108492
  }
108471
- const xdgConfigDir = env["XDG_CONFIG_HOME"]?.trim() || join93(homedir26(), ".config");
108472
- return resolveConfigPath2(join93(xdgConfigDir, "opencode"));
108493
+ const xdgConfigDir = env["XDG_CONFIG_HOME"]?.trim() || join94(homedir26(), ".config");
108494
+ return resolveConfigPath2(join94(xdgConfigDir, "opencode"));
108473
108495
  }
108474
108496
 
108475
108497
  // packages/mcp-client-core/src/mcp-oauth/storage-index.ts
108476
108498
  import { chmodSync as chmodSync4, existsSync as existsSync62, readFileSync as readFileSync41, renameSync as renameSync7, writeFileSync as writeFileSync13 } from "fs";
108477
- import { join as join94 } from "path";
108499
+ import { join as join95 } from "path";
108478
108500
  var INDEX_FILE_NAME = "index.json";
108479
108501
  function isTokenIndex(value) {
108480
108502
  if (typeof value !== "object" || value === null || Array.isArray(value))
@@ -108482,7 +108504,7 @@ function isTokenIndex(value) {
108482
108504
  return Object.values(value).every((entry) => typeof entry === "string");
108483
108505
  }
108484
108506
  function getIndexPath(storageDir) {
108485
- return join94(storageDir, INDEX_FILE_NAME);
108507
+ return join95(storageDir, INDEX_FILE_NAME);
108486
108508
  }
108487
108509
  function readTokenIndex(storageDir) {
108488
108510
  const indexPath = getIndexPath(storageDir);
@@ -108526,16 +108548,16 @@ function deleteTokenIndexEntry(storageDir, hash) {
108526
108548
  var STORAGE_DIR_NAME = "mcp-oauth";
108527
108549
  var LEGACY_STORAGE_FILE_NAME = "mcp-oauth.json";
108528
108550
  function getMcpOauthStorageDir() {
108529
- return join95(getOpenCodeCliConfigDir(), STORAGE_DIR_NAME);
108551
+ return join96(getOpenCodeCliConfigDir(), STORAGE_DIR_NAME);
108530
108552
  }
108531
108553
  function getMcpOauthServerHash(serverHost, resource) {
108532
108554
  return createHash7("sha256").update(buildKey(serverHost, resource)).digest("hex").slice(0, 32);
108533
108555
  }
108534
108556
  function getMcpOauthStoragePath(serverHost, resource) {
108535
- return join95(getMcpOauthStorageDir(), `${getMcpOauthServerHash(serverHost, resource)}.json`);
108557
+ return join96(getMcpOauthStorageDir(), `${getMcpOauthServerHash(serverHost, resource)}.json`);
108536
108558
  }
108537
108559
  function getLegacyStoragePath() {
108538
- return join95(getOpenCodeCliConfigDir(), LEGACY_STORAGE_FILE_NAME);
108560
+ return join96(getOpenCodeCliConfigDir(), LEGACY_STORAGE_FILE_NAME);
108539
108561
  }
108540
108562
  function normalizeHost2(serverHost) {
108541
108563
  let host = serverHost.trim();
@@ -108629,7 +108651,7 @@ function readLegacyStore() {
108629
108651
  }
108630
108652
  function writeTokenFile(filePath, token) {
108631
108653
  try {
108632
- const dir = dirname36(filePath);
108654
+ const dir = dirname37(filePath);
108633
108655
  if (!existsSync63(dir)) {
108634
108656
  mkdirSync17(dir, { recursive: true });
108635
108657
  }
@@ -108714,7 +108736,7 @@ function listTokensByHost(serverHost) {
108714
108736
  for (const [hash, indexedKey] of Object.entries(index)) {
108715
108737
  if (!indexedKey.startsWith(prefix))
108716
108738
  continue;
108717
- const indexedToken = readTokenFile(join95(getMcpOauthStorageDir(), `${hash}.json`));
108739
+ const indexedToken = readTokenFile(join96(getMcpOauthStorageDir(), `${hash}.json`));
108718
108740
  if (indexedToken)
108719
108741
  result[indexedKey] = indexedToken;
108720
108742
  }
@@ -108729,7 +108751,7 @@ function listAllTokens() {
108729
108751
  for (const entry of readdirSync13(dir, { withFileTypes: true })) {
108730
108752
  if (!entry.isFile() || !entry.name.endsWith(".json") || entry.name === "index.json")
108731
108753
  continue;
108732
- const token = readTokenFile(join95(dir, entry.name));
108754
+ const token = readTokenFile(join96(dir, entry.name));
108733
108755
  const hash = basename13(entry.name, ".json");
108734
108756
  if (token)
108735
108757
  result[index[hash] ?? hash] = token;