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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/dist/cli/index.js +236 -247
  2. package/dist/cli-node/index.js +236 -247
  3. package/package.json +3 -1
  4. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  5. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  6. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  7. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  8. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  9. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  10. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  11. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  12. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  13. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
  14. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  15. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  16. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  17. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  18. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  19. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  20. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  21. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  22. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  23. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  24. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +2 -2
  25. package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
  26. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
  27. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  28. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  29. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  30. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  31. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  32. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  33. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  34. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  35. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  36. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  37. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  38. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  39. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  40. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  41. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  42. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
  43. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  44. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-ulw-execute-continuation.json +1 -1
  45. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  46. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  47. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  48. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  49. package/packages/omo-codex/plugin/package-lock.json +12 -12
  50. package/packages/omo-codex/plugin/package.json +1 -1
  51. package/packages/omo-codex/plugin/test/sync-skills-codex-compatibility.test.mjs +47 -2
  52. package/packages/omo-codex/plugin/test/sync-skills.test.mjs +4 -0
  53. package/packages/omo-codex/scripts/install-dist/install-local.mjs +32 -50
  54. package/packages/shared-skills/skill-source-filter.d.ts +16 -0
  55. package/packages/shared-skills/skill-source-filter.mjs +44 -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.43",
58
+ version: "5.0.0-beta.44",
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",
@@ -145,6 +145,7 @@ var init_package = __esm(() => {
145
145
  "packages/omo-codex/plugin/components/telemetry/dist/cli.js",
146
146
  "packages/omo-codex/plugin/components/ultrawork/dist/cli.js",
147
147
  "packages/omo-codex/plugin/components/ulw-loop/dist/cli.js",
148
+ "packages/prompts-core/prompts/ultrawork/codex.md",
148
149
  "packages/omo-codex/plugin/.codex-plugin",
149
150
  "!packages/omo-codex/plugin/node_modules",
150
151
  "!packages/omo-codex/plugin/**/node_modules",
@@ -238,7 +239,7 @@ var init_package = __esm(() => {
238
239
  zod: "^4.4.3"
239
240
  },
240
241
  devDependencies: {
241
- "@code-yeongyu/senpi": "2026.9.5",
242
+ "@code-yeongyu/senpi": "2026.9.5-3",
242
243
  "@oh-my-opencode/agents-md-core": "workspace:*",
243
244
  "@oh-my-opencode/ast-grep-mcp": "workspace:*",
244
245
  "@oh-my-opencode/boulder-state": "workspace:*",
@@ -279,18 +280,18 @@ var init_package = __esm(() => {
279
280
  typescript: "^7.0.2"
280
281
  },
281
282
  optionalDependencies: {
282
- "oh-my-opencode-darwin-arm64": "5.0.0-beta.43",
283
- "oh-my-opencode-darwin-x64": "5.0.0-beta.43",
284
- "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.43",
285
- "oh-my-opencode-linux-arm64": "5.0.0-beta.43",
286
- "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.43",
287
- "oh-my-opencode-linux-x64": "5.0.0-beta.43",
288
- "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.43",
289
- "oh-my-opencode-linux-x64-musl": "5.0.0-beta.43",
290
- "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.43",
291
- "oh-my-opencode-windows-arm64": "5.0.0-beta.43",
292
- "oh-my-opencode-windows-x64": "5.0.0-beta.43",
293
- "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.43"
283
+ "oh-my-opencode-darwin-arm64": "5.0.0-beta.44",
284
+ "oh-my-opencode-darwin-x64": "5.0.0-beta.44",
285
+ "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.44",
286
+ "oh-my-opencode-linux-arm64": "5.0.0-beta.44",
287
+ "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.44",
288
+ "oh-my-opencode-linux-x64": "5.0.0-beta.44",
289
+ "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.44",
290
+ "oh-my-opencode-linux-x64-musl": "5.0.0-beta.44",
291
+ "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.44",
292
+ "oh-my-opencode-windows-arm64": "5.0.0-beta.44",
293
+ "oh-my-opencode-windows-x64": "5.0.0-beta.44",
294
+ "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.44"
294
295
  },
295
296
  overrides: {
296
297
  "@earendil-works/pi-agent-core": "0.84.2",
@@ -7253,7 +7254,7 @@ var init_category_model_requirements = __esm(() => {
7253
7254
  {
7254
7255
  providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
7255
7256
  model: "claude-fable-5-1",
7256
- variant: "xhigh"
7257
+ variant: "max"
7257
7258
  },
7258
7259
  {
7259
7260
  providers: ["kimi-for-coding", "moonshotai", "opencode-go", "opencode"],
@@ -8066,8 +8067,8 @@ var init_supplemental_entries = __esm(() => {
8066
8067
  output: ["text"]
8067
8068
  },
8068
8069
  limit: {
8069
- context: 400000,
8070
- input: 272000,
8070
+ context: 1050000,
8071
+ input: 922000,
8071
8072
  output: 128000
8072
8073
  }
8073
8074
  },
@@ -8492,6 +8493,9 @@ var init_model_capabilities = __esm(() => {
8492
8493
  // packages/model-core/src/context-limit-resolver.ts
8493
8494
  var init_context_limit_resolver = () => {};
8494
8495
 
8496
+ // packages/model-core/src/context-overflow.ts
8497
+ var init_context_overflow = () => {};
8498
+
8495
8499
  // packages/model-core/src/model-capabilities-snapshot.ts
8496
8500
  function isRecord3(value) {
8497
8501
  return typeof value === "object" && value !== null && !Array.isArray(value);
@@ -8628,6 +8632,7 @@ var init_src2 = __esm(() => {
8628
8632
  init_runtime_fallback_model();
8629
8633
  init_model_capabilities();
8630
8634
  init_context_limit_resolver();
8635
+ init_context_overflow();
8631
8636
  });
8632
8637
 
8633
8638
  // packages/omo-opencode/src/shared/model-sanitizer.ts
@@ -12690,8 +12695,8 @@ var init_model_capabilities_generated = __esm(() => {
12690
12695
  ]
12691
12696
  },
12692
12697
  limit: {
12693
- context: 400000,
12694
- input: 272000,
12698
+ context: 1050000,
12699
+ input: 922000,
12695
12700
  output: 128000
12696
12701
  }
12697
12702
  },
@@ -86656,20 +86661,20 @@ var init_config_manager = __esm(() => {
86656
86661
 
86657
86662
  // packages/telemetry-core/src/activity-state.ts
86658
86663
  import { existsSync as existsSync25, mkdirSync as mkdirSync8, readFileSync as readFileSync12 } from "node:fs";
86659
- import { basename as basename8, join as join52 } from "node:path";
86664
+ import { basename as basename8, join as join51 } from "node:path";
86660
86665
  function resolveTelemetryStateDir(product, options = {}) {
86661
86666
  const dataDir = resolveXdgDataDir(product.cacheDirName, {
86662
86667
  env: options.env,
86663
86668
  osProvider: options.osProvider
86664
86669
  });
86665
- const xdgStateDir = options.env?.XDG_DATA_HOME === undefined ? undefined : join52(options.env.XDG_DATA_HOME, product.cacheDirName);
86670
+ const xdgStateDir = options.env?.XDG_DATA_HOME === undefined ? undefined : join51(options.env.XDG_DATA_HOME, product.cacheDirName);
86666
86671
  if (dataDir === xdgStateDir || xdgStateDir === undefined && basename8(dataDir) === product.cacheDirName) {
86667
86672
  return dataDir;
86668
86673
  }
86669
- return join52(dataDir, product.cacheDirName);
86674
+ return join51(dataDir, product.cacheDirName);
86670
86675
  }
86671
86676
  function getTelemetryActivityStateFilePath(stateDir) {
86672
- return join52(stateDir, POSTHOG_ACTIVITY_STATE_FILE);
86677
+ return join51(stateDir, POSTHOG_ACTIVITY_STATE_FILE);
86673
86678
  }
86674
86679
  function getDailyActiveCaptureState(input) {
86675
86680
  const state = readPostHogActivityState(input.stateDir, input.diagnostics);
@@ -86740,9 +86745,9 @@ var DEFAULT_POSTHOG_HOST = "https://us.i.posthog.com", DEFAULT_POSTHOG_API_KEY =
86740
86745
 
86741
86746
  // packages/telemetry-core/src/diagnostics.ts
86742
86747
  import { appendFileSync as appendFileSync2, existsSync as existsSync26, mkdirSync as mkdirSync9, readFileSync as readFileSync13 } from "node:fs";
86743
- import { join as join53 } from "node:path";
86748
+ import { join as join52 } from "node:path";
86744
86749
  function getTelemetryDiagnosticsFilePath(diagnosticsDir) {
86745
- return join53(diagnosticsDir, DIAGNOSTICS_FILE_NAME);
86750
+ return join52(diagnosticsDir, DIAGNOSTICS_FILE_NAME);
86746
86751
  }
86747
86752
  function writeTelemetryDiagnostic(input, options) {
86748
86753
  const now = options.now ?? new Date;
@@ -94521,7 +94526,7 @@ var package_default2;
94521
94526
  var init_package2 = __esm(() => {
94522
94527
  package_default2 = {
94523
94528
  name: "@oh-my-opencode/omo-codex",
94524
- version: "5.0.0-beta.43",
94529
+ version: "5.0.0-beta.44",
94525
94530
  type: "module",
94526
94531
  private: true,
94527
94532
  description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
@@ -95489,7 +95494,7 @@ var init_update_toasts = __esm(() => {
95489
95494
 
95490
95495
  // packages/omo-opencode/src/hooks/auto-update-checker/hook/background-update-check.ts
95491
95496
  import { existsSync as existsSync47 } from "node:fs";
95492
- import { dirname as dirname30, join as join75 } from "node:path";
95497
+ import { dirname as dirname30, join as join74 } from "node:path";
95493
95498
  import { fileURLToPath as fileURLToPath5 } from "node:url";
95494
95499
  function defaultGetModuleHostingWorkspace() {
95495
95500
  try {
@@ -95643,7 +95648,7 @@ var init_background_update_check = __esm(() => {
95643
95648
  init_update_toasts();
95644
95649
  defaultDeps4 = {
95645
95650
  existsSync: existsSync47,
95646
- join: join75,
95651
+ join: join74,
95647
95652
  runBunInstallWithDetails,
95648
95653
  log: log2,
95649
95654
  getOpenCodeCacheDir,
@@ -98280,7 +98285,7 @@ function getUnsupportedOpenCodeVersionMessage(openCodeVersion) {
98280
98285
  }
98281
98286
 
98282
98287
  // packages/omo-codex/src/install/install-codex.ts
98283
- import { join as join54, resolve as resolve12 } from "node:path";
98288
+ import { join as join53, resolve as resolve12 } from "node:path";
98284
98289
  import { existsSync as existsSync27 } from "node:fs";
98285
98290
  import { homedir as homedir6 } from "node:os";
98286
98291
 
@@ -102586,26 +102591,9 @@ async function removeGitBashHooksOffWindows(input) {
102586
102591
  `);
102587
102592
  }
102588
102593
 
102589
- // packages/omo-codex/src/install/omo-sot-migration.ts
102590
- import { join as join50 } from "node:path";
102591
- async function seedAndMigrateOmoSot(input) {
102592
- const commandEnv = { ...input.env };
102593
- const scriptPath = join50(input.repoRoot, "packages", "omo-codex", "plugin", "scripts", "migrate-omo-sot.mjs");
102594
- try {
102595
- await input.runCommand(process.execPath, [scriptPath, "--seed"], {
102596
- cwd: input.repoRoot,
102597
- env: commandEnv
102598
- });
102599
- } catch (error51) {
102600
- if (!(error51 instanceof Error))
102601
- throw error51;
102602
- input.log(`Warning: skipped OMO SOT seed/migration: ${error51.message}`);
102603
- }
102604
- }
102605
-
102606
102594
  // packages/omo-codex/src/install/install-ast-grep-sg.ts
102607
102595
  init_src();
102608
- import { join as join51 } from "node:path";
102596
+ import { join as join50 } from "node:path";
102609
102597
  function describeResult(result) {
102610
102598
  if (result.kind === "succeeded")
102611
102599
  return null;
@@ -102619,7 +102607,7 @@ async function installAstGrepForCodex(options) {
102619
102607
  return;
102620
102608
  const platform = options.platform ?? process.platform;
102621
102609
  const targetDir = astGrepRuntimeDir(options.codexHome, platform, options.arch ?? process.arch);
102622
- const skillDir = join51(plugin.path, "skills", "ast-grep");
102610
+ const skillDir = join50(plugin.path, "skills", "ast-grep");
102623
102611
  const installer = options.installer ?? runAstGrepSkillInstall;
102624
102612
  try {
102625
102613
  const result = await installer({ platform, skillDir, targetDir });
@@ -102652,7 +102640,7 @@ async function runCodexInstaller(options = {}) {
102652
102640
  const env2 = options.env ?? process.env;
102653
102641
  const platform = options.platform ?? process.platform;
102654
102642
  const repoRoot = resolve12(options.repoRoot ?? findRepoRoot({ importerDir: import.meta.dir, env: env2 }));
102655
- const codexHome = resolve12(options.codexHome ?? env2.CODEX_HOME ?? join54(homedir6(), ".codex"));
102643
+ const codexHome = resolve12(options.codexHome ?? env2.CODEX_HOME ?? join53(homedir6(), ".codex"));
102656
102644
  const projectDirectory = resolve12(options.projectDirectory ?? env2.OMO_CODEX_PROJECT ?? process.cwd());
102657
102645
  const binDir = resolveCodexInstallerBinDir({ binDir: options.binDir, codexHome, env: env2 });
102658
102646
  const runCommand = options.runCommand ?? defaultRunCommand;
@@ -102669,9 +102657,9 @@ async function runCodexInstaller(options = {}) {
102669
102657
  if (!gitBashResolution.found) {
102670
102658
  throw new Error(gitBashResolution.installHint);
102671
102659
  }
102672
- const codexPackageRoot = join54(repoRoot, "packages", "omo-codex");
102660
+ const codexPackageRoot = join53(repoRoot, "packages", "omo-codex");
102673
102661
  const marketplace = await readMarketplace(repoRoot, {
102674
- marketplacePath: join54(codexPackageRoot, "marketplace.json")
102662
+ marketplacePath: join53(codexPackageRoot, "marketplace.json")
102675
102663
  });
102676
102664
  const distributionManifest = await readDistributionManifest(repoRoot);
102677
102665
  const installed = [];
@@ -102717,7 +102705,7 @@ async function runCodexInstaller(options = {}) {
102717
102705
  if (runtimeLink !== null)
102718
102706
  log4(`Linked ${runtimeLink.name} -> ${runtimeLink.target}`);
102719
102707
  else
102720
- log4(`Warning: skipped the omo-agent-toolkit runtime wrapper because ${join54(repoRoot, "dist", "cli", "index.js")} is missing; omo-agent-toolkit ulw-loop commands will be unavailable until a package shipping dist/cli is installed`);
102708
+ log4(`Warning: skipped the omo-agent-toolkit runtime wrapper because ${join53(repoRoot, "dist", "cli", "index.js")} is missing; omo-agent-toolkit ulw-loop commands will be unavailable until a package shipping dist/cli is installed`);
102721
102709
  }
102722
102710
  pluginSources.push({ name: entry.name, sourcePath });
102723
102711
  installed.push(plugin);
@@ -102780,13 +102768,13 @@ async function runCodexInstaller(options = {}) {
102780
102768
  continue;
102781
102769
  log4(`Warning: deferred legacy Codex LSP daemon cleanup for v${cleanup.version}: ${cleanup.reason}`);
102782
102770
  }
102783
- const marketplaceRoot = join54(codexHome, "plugins", "cache", marketplace.name);
102771
+ const marketplaceRoot = join53(codexHome, "plugins", "cache", marketplace.name);
102784
102772
  await writeCachedMarketplaceManifest({
102785
102773
  marketplaceName: marketplace.name,
102786
102774
  marketplaceRoot,
102787
102775
  plugins: installed
102788
102776
  });
102789
- const configPath = join54(codexHome, "config.toml");
102777
+ const configPath = join53(codexHome, "config.toml");
102790
102778
  await updateCodexConfig({
102791
102779
  configPath,
102792
102780
  repoRoot: codexPackageRoot,
@@ -102800,7 +102788,6 @@ async function runCodexInstaller(options = {}) {
102800
102788
  autonomousPermissions: options.autonomousPermissions !== false,
102801
102789
  ...options.reasoning === undefined ? {} : { reasoning: options.reasoning }
102802
102790
  });
102803
- await seedAndMigrateOmoSot({ env: env2, log: log4, repoRoot, runCommand });
102804
102791
  const projectCleanup = await repairProjectLocalCodexArtifactsBestEffort({
102805
102792
  startDirectory: projectDirectory,
102806
102793
  codexHome,
@@ -102846,7 +102833,7 @@ function findRepoRootFromImporter(importerDir) {
102846
102833
  for (let depth = 0;depth <= 7; depth += 1) {
102847
102834
  if (isRepoRootWithCodexPlugin(current))
102848
102835
  return current;
102849
- for (const wrapperPackageRoot of [join54(current, "node_modules", "oh-my-openagent"), join54(current, "oh-my-openagent")]) {
102836
+ for (const wrapperPackageRoot of [join53(current, "node_modules", "oh-my-openagent"), join53(current, "oh-my-openagent")]) {
102850
102837
  if (isRepoRootWithCodexPlugin(wrapperPackageRoot))
102851
102838
  return wrapperPackageRoot;
102852
102839
  }
@@ -102864,7 +102851,7 @@ function findRepoRoot(input) {
102864
102851
  return findRepoRootFromImporter(input.importerDir);
102865
102852
  }
102866
102853
  function isRepoRootWithCodexPlugin(repoRoot) {
102867
- return existsSync27(join54(repoRoot, "packages", "omo-codex", "plugin", ".codex-plugin", "plugin.json"));
102854
+ return existsSync27(join53(repoRoot, "packages", "omo-codex", "plugin", ".codex-plugin", "plugin.json"));
102868
102855
  }
102869
102856
  function codexMarketplaceSource(marketplaceRoot) {
102870
102857
  return { sourceType: "local", source: marketplaceRoot };
@@ -103001,11 +102988,11 @@ function defaultRunCommand2(command, args) {
103001
102988
  // packages/omo-codex/src/install/codex-cleanup.ts
103002
102989
  import { lstat as lstat14, readFile as readFile24, readdir as readdir13, rm as rm12, rmdir } from "node:fs/promises";
103003
102990
  import { homedir as homedir8 } from "node:os";
103004
- import { isAbsolute as isAbsolute11, join as join57, relative as relative6, resolve as resolve15 } from "node:path";
102991
+ import { isAbsolute as isAbsolute11, join as join56, relative as relative6, resolve as resolve15 } from "node:path";
103005
102992
 
103006
102993
  // packages/omo-codex/src/install/codex-cleanup-bins.ts
103007
102994
  import { lstat as lstat12, readFile as readFile22, readdir as readdir12, readlink as readlink6, rm as rm11 } from "node:fs/promises";
103008
- import { dirname as dirname18, isAbsolute as isAbsolute9, join as join55, resolve as resolve13 } from "node:path";
102995
+ import { dirname as dirname18, isAbsolute as isAbsolute9, join as join54, resolve as resolve13 } from "node:path";
103009
102996
  var ROOT_RUNTIME_BIN_NAME = "omo";
103010
102997
  var MANAGED_CODEX_BIN_NAMES = new Set([
103011
102998
  ROOT_RUNTIME_BIN_NAME,
@@ -103035,7 +103022,7 @@ async function removeManagedCodexBins(binDir, platform) {
103035
103022
  const binName = managedBinNameForEntry2(entry.name, platform);
103036
103023
  if (binName === null || !MANAGED_CODEX_BIN_NAMES.has(binName))
103037
103024
  continue;
103038
- const linkPath = join55(binDir, entry.name);
103025
+ const linkPath = join54(binDir, entry.name);
103039
103026
  if (await isManagedCodexBin(linkPath, platform, binName)) {
103040
103027
  await rm11(linkPath, { force: true });
103041
103028
  removed2.push(linkPath);
@@ -103188,7 +103175,7 @@ function nodeErrorCode5(error51) {
103188
103175
  }
103189
103176
 
103190
103177
  // packages/omo-codex/src/install/codex-cleanup-safety.ts
103191
- import { dirname as dirname20, isAbsolute as isAbsolute10, join as join56, relative as relative5, resolve as resolve14 } from "node:path";
103178
+ import { dirname as dirname20, isAbsolute as isAbsolute10, join as join55, relative as relative5, resolve as resolve14 } from "node:path";
103192
103179
  function codexHomeResolvesToFilesystemRoot(codexHome) {
103193
103180
  const resolved = resolve14(codexHome);
103194
103181
  return dirname20(resolved) === resolved;
@@ -103205,11 +103192,11 @@ function validateManagedCleanupTarget(input) {
103205
103192
  if (target === codexHome)
103206
103193
  return skipped(input.path, "outside managed Codex cleanup scope");
103207
103194
  const exactManagedRoots = new Set([
103208
- resolve14(join56(codexHome, "plugins", "cache", "sisyphuslabs")),
103209
- resolve14(join56(codexHome, ".tmp", "marketplaces", "sisyphuslabs")),
103210
- resolve14(join56(codexHome, "runtime", "ast-grep")),
103211
- resolve14(join56(codexHome, "runtime", "node")),
103212
- resolve14(join56(codexHome, "plugins", "data", "omo-sisyphuslabs", "bootstrap"))
103195
+ resolve14(join55(codexHome, "plugins", "cache", "sisyphuslabs")),
103196
+ resolve14(join55(codexHome, ".tmp", "marketplaces", "sisyphuslabs")),
103197
+ resolve14(join55(codexHome, "runtime", "ast-grep")),
103198
+ resolve14(join55(codexHome, "runtime", "node")),
103199
+ resolve14(join55(codexHome, "plugins", "data", "omo-sisyphuslabs", "bootstrap"))
103213
103200
  ]);
103214
103201
  if (exactManagedRoots.has(target))
103215
103202
  return null;
@@ -103239,8 +103226,8 @@ function skipped(path7, reason) {
103239
103226
  var INSTALLED_AGENTS_MANIFEST = ".installed-agents.json";
103240
103227
  async function cleanupCodexLight(input = {}) {
103241
103228
  const env2 = input.env ?? process.env;
103242
- const codexHome = resolve15(input.codexHome ?? env2.CODEX_HOME ?? join57(homedir8(), ".codex"));
103243
- const configPath = join57(codexHome, "config.toml");
103229
+ const codexHome = resolve15(input.codexHome ?? env2.CODEX_HOME ?? join56(homedir8(), ".codex"));
103230
+ const configPath = join56(codexHome, "config.toml");
103244
103231
  const installedBinDir = await readInstalledCodexBinDir(codexHome);
103245
103232
  const agentPaths = await collectInstalledAgentPaths(codexHome, configPath);
103246
103233
  const configCleanup = await cleanupCodexConfig(configPath, input.now);
@@ -103294,17 +103281,17 @@ function firstConfiguredPath(...values) {
103294
103281
  }
103295
103282
  function managedGlobalStatePaths(codexHome) {
103296
103283
  return [
103297
- join57(codexHome, "plugins", "cache", "sisyphuslabs"),
103298
- join57(codexHome, ".tmp", "marketplaces", "sisyphuslabs"),
103299
- join57(codexHome, "runtime", "ast-grep"),
103300
- join57(codexHome, "runtime", "node"),
103301
- join57(codexHome, "plugins", "data", "omo-sisyphuslabs", "bootstrap")
103284
+ join56(codexHome, "plugins", "cache", "sisyphuslabs"),
103285
+ join56(codexHome, ".tmp", "marketplaces", "sisyphuslabs"),
103286
+ join56(codexHome, "runtime", "ast-grep"),
103287
+ join56(codexHome, "runtime", "node"),
103288
+ join56(codexHome, "plugins", "data", "omo-sisyphuslabs", "bootstrap")
103302
103289
  ];
103303
103290
  }
103304
103291
  var BOOTSTRAP_DATA_GLOB_MAX_DEPTH = 5;
103305
103292
  async function collectBootstrapDataDirsByGlob(codexHome) {
103306
103293
  const results = [];
103307
- await walkForManagedBootstrapDirs(join57(codexHome, "plugins"), 0, results);
103294
+ await walkForManagedBootstrapDirs(join56(codexHome, "plugins"), 0, results);
103308
103295
  return results;
103309
103296
  }
103310
103297
  async function walkForManagedBootstrapDirs(directory, depth, results) {
@@ -103316,9 +103303,9 @@ async function walkForManagedBootstrapDirs(directory, depth, results) {
103316
103303
  for (const entry of entries) {
103317
103304
  if (!entry.isDirectory())
103318
103305
  continue;
103319
- const childPath = join57(directory, entry.name);
103306
+ const childPath = join56(directory, entry.name);
103320
103307
  if (isManagedBootstrapOwnerName(entry.name)) {
103321
- const bootstrapDir = join57(childPath, "bootstrap");
103308
+ const bootstrapDir = join56(childPath, "bootstrap");
103322
103309
  if (await exists6(bootstrapDir))
103323
103310
  results.push(bootstrapDir);
103324
103311
  continue;
@@ -103352,7 +103339,7 @@ async function attemptRemove(path7) {
103352
103339
  }
103353
103340
  async function pruneEmptyRuntimeDirBestEffort(codexHome) {
103354
103341
  try {
103355
- await rmdir(join57(codexHome, "runtime"));
103342
+ await rmdir(join56(codexHome, "runtime"));
103356
103343
  } catch (error51) {
103357
103344
  if (isExpectedRuntimePruneFailure(error51))
103358
103345
  return;
@@ -103364,14 +103351,14 @@ function isExpectedRuntimePruneFailure(error51) {
103364
103351
  }
103365
103352
  async function collectInstalledAgentPaths(codexHome, configPath) {
103366
103353
  const manifestPaths = [
103367
- join57(codexHome, ".tmp", "marketplaces", "sisyphuslabs", "plugins", "omo", INSTALLED_AGENTS_MANIFEST)
103354
+ join56(codexHome, ".tmp", "marketplaces", "sisyphuslabs", "plugins", "omo", INSTALLED_AGENTS_MANIFEST)
103368
103355
  ];
103369
- const versionRoot = join57(codexHome, "plugins", "cache", "sisyphuslabs", "omo");
103356
+ const versionRoot = join56(codexHome, "plugins", "cache", "sisyphuslabs", "omo");
103370
103357
  if (await exists6(versionRoot)) {
103371
103358
  const entries = await readdir13(versionRoot, { withFileTypes: true });
103372
103359
  for (const entry of entries) {
103373
103360
  if (entry.isDirectory())
103374
- manifestPaths.push(join57(versionRoot, entry.name, INSTALLED_AGENTS_MANIFEST));
103361
+ manifestPaths.push(join56(versionRoot, entry.name, INSTALLED_AGENTS_MANIFEST));
103375
103362
  }
103376
103363
  }
103377
103364
  const paths2 = new Set;
@@ -103389,7 +103376,7 @@ async function readManagedAgentPathsFromConfig(codexHome, configPath) {
103389
103376
  if (!await exists6(configPath))
103390
103377
  return [];
103391
103378
  const config3 = await readFile24(configPath, "utf8");
103392
- return MANAGED_CODEX_AGENT_NAMES2.filter((agentName) => config3.includes(`config_file = ${JSON.stringify(`./agents/${agentName}.toml`)}`)).map((agentName) => join57(codexHome, "agents", `${agentName}.toml`));
103379
+ return MANAGED_CODEX_AGENT_NAMES2.filter((agentName) => config3.includes(`config_file = ${JSON.stringify(`./agents/${agentName}.toml`)}`)).map((agentName) => join56(codexHome, "agents", `${agentName}.toml`));
103393
103380
  }
103394
103381
  async function readInstalledAgentManifest(manifestPath) {
103395
103382
  if (!await exists6(manifestPath))
@@ -103400,7 +103387,7 @@ async function readInstalledAgentManifest(manifestPath) {
103400
103387
  return parsed.agents.filter((path7) => typeof path7 === "string");
103401
103388
  }
103402
103389
  async function removeManifestListedAgentLinks(codexHome, paths2) {
103403
- const agentsDir = join57(codexHome, "agents");
103390
+ const agentsDir = join56(codexHome, "agents");
103404
103391
  const removed2 = [];
103405
103392
  const skipped2 = [];
103406
103393
  for (const path7 of paths2) {
@@ -103452,14 +103439,14 @@ function nodeErrorCode6(error51) {
103452
103439
  import { execFile as execFile3 } from "node:child_process";
103453
103440
  import { existsSync as existsSync31 } from "node:fs";
103454
103441
  import { homedir as homedir11 } from "node:os";
103455
- import { dirname as dirname24, join as join62, resolve as resolve19 } from "node:path";
103442
+ import { dirname as dirname24, join as join61, resolve as resolve19 } from "node:path";
103456
103443
  import { fileURLToPath } from "node:url";
103457
103444
  import { promisify as promisify2 } from "node:util";
103458
103445
 
103459
103446
  // packages/omo-senpi/src/components/agent-home/resolve-agent-home.ts
103460
103447
  import { existsSync as existsSync29 } from "node:fs";
103461
103448
  import { homedir as homedir9 } from "node:os";
103462
- import { join as join58, resolve as resolve16 } from "node:path";
103449
+ import { join as join57, resolve as resolve16 } from "node:path";
103463
103450
  var AGENT_DIR_ENV_NAMES = [
103464
103451
  "OMO_CODING_AGENT_DIR",
103465
103452
  "SENPI_CODING_AGENT_DIR",
@@ -103473,25 +103460,25 @@ function resolveAgentHome(options) {
103473
103460
  if (configured)
103474
103461
  return resolve16(configured);
103475
103462
  }
103476
- const brandedHome = join58(homeDir, ".omo");
103477
- const canonical = join58(brandedHome, "agent");
103478
- if (exists7(join58(canonical, AGENT_HOME_SENTINEL)))
103463
+ const brandedHome = join57(homeDir, ".omo");
103464
+ const canonical = join57(brandedHome, "agent");
103465
+ if (exists7(join57(canonical, AGENT_HOME_SENTINEL)))
103479
103466
  return canonical;
103480
- if (exists7(join58(brandedHome, AGENT_HOME_SENTINEL)))
103467
+ if (exists7(join57(brandedHome, AGENT_HOME_SENTINEL)))
103481
103468
  return brandedHome;
103482
- return join58(homeDir, ".senpi", "agent");
103469
+ return join57(homeDir, ".senpi", "agent");
103483
103470
  }
103484
103471
 
103485
103472
  // packages/omo-senpi/src/install/local-launcher.ts
103486
103473
  import { chmodSync as chmodSync3, existsSync as existsSync30, mkdirSync as mkdirSync10, readFileSync as readFileSync14, rmSync as rmSync2, writeFileSync as writeFileSync6 } from "node:fs";
103487
103474
  import { homedir as homedir10 } from "node:os";
103488
- import { dirname as dirname21, join as join59, resolve as resolve17 } from "node:path";
103475
+ import { dirname as dirname21, join as join58, resolve as resolve17 } from "node:path";
103489
103476
  var MARKER = "omo-local-launcher";
103490
103477
  function localLauncherPath(homeDir = homedir10()) {
103491
- return join59(homeDir, ".local", "bin", "omo");
103478
+ return join58(homeDir, ".local", "bin", "omo");
103492
103479
  }
103493
103480
  function localLauncherCmdPath(homeDir = homedir10()) {
103494
- return join59(homeDir, ".local", "bin", "omo.cmd");
103481
+ return join58(homeDir, ".local", "bin", "omo.cmd");
103495
103482
  }
103496
103483
  function renderLocalLauncher(options) {
103497
103484
  const brand = {
@@ -103571,16 +103558,16 @@ node "%~dp0omo" %*\r
103571
103558
  import { createHash as createHash5 } from "node:crypto";
103572
103559
  import { constants as constants9 } from "node:fs";
103573
103560
  import { access as access2, readFile as readFile26, stat as stat6 } from "node:fs/promises";
103574
- import { dirname as dirname23, join as join61 } from "node:path";
103561
+ import { dirname as dirname23, join as join60 } from "node:path";
103575
103562
 
103576
103563
  // packages/omo-senpi/src/install/senpi-settings.ts
103577
103564
  import { constants as constants8 } from "node:fs";
103578
103565
  import { access, copyFile as copyFile3, mkdir as mkdir9, readFile as readFile25, rename as rename5, writeFile as writeFile14 } from "node:fs/promises";
103579
- import { dirname as dirname22, join as join60, resolve as resolve18 } from "node:path";
103566
+ import { dirname as dirname22, join as join59, resolve as resolve18 } from "node:path";
103580
103567
  var OMO_SENPI_PACKAGE_NAME = "@code-yeongyu/omo-senpi";
103581
103568
  var LEGACY_BUILTIN_SHADOW_PACKAGES = [
103582
- join60("packages", "pi-goal"),
103583
- join60("packages", "pi-webfetch")
103569
+ join59("packages", "pi-goal"),
103570
+ join59("packages", "pi-webfetch")
103584
103571
  ];
103585
103572
  async function readSettings(settingsPath) {
103586
103573
  let raw;
@@ -103655,7 +103642,7 @@ function isRecord12(value) {
103655
103642
  async function readPackageName(packagePath) {
103656
103643
  let raw;
103657
103644
  try {
103658
- raw = await readFile25(join60(packagePath, "package.json"), "utf8");
103645
+ raw = await readFile25(join59(packagePath, "package.json"), "utf8");
103659
103646
  } catch (error51) {
103660
103647
  if (isErrno(error51, "ENOENT") || isErrno(error51, "ENOTDIR"))
103661
103648
  return;
@@ -103680,57 +103667,57 @@ function isErrno(error51, code) {
103680
103667
 
103681
103668
  // packages/omo-senpi/src/install/plugin-artifacts.ts
103682
103669
  var REQUIRED_PLUGIN_ARTIFACTS = [
103683
- join61("extensions", "omo.js"),
103684
- join61("extensions", "omo-task.js"),
103685
- join61("extensions", "omo-member.js"),
103686
- join61("extensions", "memory-run-supervisor.mjs"),
103687
- join61("extensions", "reflection-persona.md"),
103688
- join61("extensions", "dream-persona.md"),
103689
- join61("extensions", "facts-persona.md"),
103690
- join61("extensions", "memorian-persona.md"),
103691
- join61("skills", "ast-grep", "SKILL.md"),
103692
- join61("skills", "coding-agent-sessions", "SKILL.md"),
103693
- join61("skills", "debugging", "SKILL.md"),
103694
- join61("skills", "frontend", "SKILL.md"),
103695
- join61("skills", "git-master", "SKILL.md"),
103696
- join61("skills", "init-deep", "SKILL.md"),
103697
- join61("skills", "lsp-setup", "SKILL.md"),
103698
- join61("skills", "programming", "SKILL.md"),
103699
- join61("skills", "refactor", "SKILL.md"),
103700
- join61("skills", "remove-ai-slops", "SKILL.md"),
103701
- join61("skills", "review-work", "SKILL.md"),
103702
- join61("skills", "ultimate-browsing", "SKILL.md"),
103703
- join61("skills", "ultrawork", "SKILL.md"),
103704
- join61("skills", "ulw-execute", "SKILL.md"),
103705
- join61("skills", "ulw-loop", "SKILL.md"),
103706
- join61("skills", "ulw-plan", "SKILL.md"),
103707
- join61("skills", "ulw-research", "SKILL.md"),
103708
- join61("skills", "visual-qa", "SKILL.md"),
103709
- join61("skills-conditional", "x-search", "SKILL.md"),
103710
- join61("runtime", "ast-grep-mcp", "cli.js"),
103711
- join61("runtime", "agent-toolkit", "cli.js"),
103712
- join61("runtime", "agent-toolkit", "ulw-loop", "cli.js"),
103713
- join61("runtime", "agent-toolkit", "omo-agent-toolkit"),
103714
- join61("runtime", "agent-toolkit", "omo-agent-toolkit.cmd"),
103715
- join61("runtime", "lsp-daemon", "dist", "cli.js"),
103716
- join61("runtime", "lsp-daemon", "dist", "index.js"),
103717
- join61("runtime", "lsp-daemon", "dist", "index.d.ts"),
103718
- join61("runtime", "lsp-daemon", "dist", "daemon-client.js"),
103719
- join61("runtime", "lsp-daemon", "dist", "daemon-client.d.ts"),
103720
- join61("runtime", "lsp-daemon", "dist", "package.json"),
103721
- join61("runtime", "lsp-daemon", "dist", ".omo-runtime-manifest.json"),
103722
- join61("scripts", "install.mjs")
103670
+ join60("extensions", "omo.js"),
103671
+ join60("extensions", "omo-task.js"),
103672
+ join60("extensions", "omo-member.js"),
103673
+ join60("extensions", "memory-run-supervisor.mjs"),
103674
+ join60("extensions", "reflection-persona.md"),
103675
+ join60("extensions", "dream-persona.md"),
103676
+ join60("extensions", "facts-persona.md"),
103677
+ join60("extensions", "memorian-persona.md"),
103678
+ join60("skills", "ast-grep", "SKILL.md"),
103679
+ join60("skills", "coding-agent-sessions", "SKILL.md"),
103680
+ join60("skills", "debugging", "SKILL.md"),
103681
+ join60("skills", "frontend", "SKILL.md"),
103682
+ join60("skills", "git-master", "SKILL.md"),
103683
+ join60("skills", "init-deep", "SKILL.md"),
103684
+ join60("skills", "lsp-setup", "SKILL.md"),
103685
+ join60("skills", "programming", "SKILL.md"),
103686
+ join60("skills", "refactor", "SKILL.md"),
103687
+ join60("skills", "remove-ai-slops", "SKILL.md"),
103688
+ join60("skills", "review-work", "SKILL.md"),
103689
+ join60("skills", "ultimate-browsing", "SKILL.md"),
103690
+ join60("skills", "ultrawork", "SKILL.md"),
103691
+ join60("skills", "ulw-execute", "SKILL.md"),
103692
+ join60("skills", "ulw-loop", "SKILL.md"),
103693
+ join60("skills", "ulw-plan", "SKILL.md"),
103694
+ join60("skills", "ulw-research", "SKILL.md"),
103695
+ join60("skills", "visual-qa", "SKILL.md"),
103696
+ join60("skills-conditional", "x-search", "SKILL.md"),
103697
+ join60("runtime", "ast-grep-mcp", "cli.js"),
103698
+ join60("runtime", "agent-toolkit", "cli.js"),
103699
+ join60("runtime", "agent-toolkit", "ulw-loop", "cli.js"),
103700
+ join60("runtime", "agent-toolkit", "omo-agent-toolkit"),
103701
+ join60("runtime", "agent-toolkit", "omo-agent-toolkit.cmd"),
103702
+ join60("runtime", "lsp-daemon", "dist", "cli.js"),
103703
+ join60("runtime", "lsp-daemon", "dist", "index.js"),
103704
+ join60("runtime", "lsp-daemon", "dist", "index.d.ts"),
103705
+ join60("runtime", "lsp-daemon", "dist", "daemon-client.js"),
103706
+ join60("runtime", "lsp-daemon", "dist", "daemon-client.d.ts"),
103707
+ join60("runtime", "lsp-daemon", "dist", "package.json"),
103708
+ join60("runtime", "lsp-daemon", "dist", ".omo-runtime-manifest.json"),
103709
+ join60("scripts", "install.mjs")
103723
103710
  ];
103724
103711
  async function ensurePluginArtifacts(context) {
103725
103712
  if (context.allowBuild) {
103726
- await context.runCommand("node", [join61(context.pluginPath, "scripts", "build-extension.mjs")], { cwd: context.repoRoot });
103727
- await context.runCommand("node", [join61("packages", "omo-codex", "plugin", "scripts", "materialize-shared-upstreams.mjs")], { cwd: context.repoRoot });
103728
- await context.runCommand("node", [join61(context.pluginPath, "scripts", "sync-skills.mjs")], { cwd: context.repoRoot });
103729
- await context.runCommand("node", [join61(context.pluginPath, "scripts", "build-install.mjs")], { cwd: context.repoRoot });
103730
- await context.runCommand("node", [join61(context.pluginPath, "scripts", "stage-lsp-daemon-runtime.mjs")], { cwd: context.repoRoot });
103731
- await context.runCommand("node", [join61(context.pluginPath, "scripts", "stage-ast-grep-mcp-runtime.mjs")], { cwd: context.repoRoot });
103732
- await context.runCommand("node", [join61(context.pluginPath, "scripts", "stage-agent-toolkit.mjs")], { cwd: context.repoRoot });
103733
- await context.runCommand("node", [join61(context.pluginPath, "scripts", "stage-x-search-skill.mjs")], { cwd: context.repoRoot });
103713
+ await context.runCommand("node", [join60(context.pluginPath, "scripts", "build-extension.mjs")], { cwd: context.repoRoot });
103714
+ await context.runCommand("node", [join60("packages", "omo-codex", "plugin", "scripts", "materialize-shared-upstreams.mjs")], { cwd: context.repoRoot });
103715
+ await context.runCommand("node", [join60(context.pluginPath, "scripts", "sync-skills.mjs")], { cwd: context.repoRoot });
103716
+ await context.runCommand("node", [join60(context.pluginPath, "scripts", "build-install.mjs")], { cwd: context.repoRoot });
103717
+ await context.runCommand("node", [join60(context.pluginPath, "scripts", "stage-lsp-daemon-runtime.mjs")], { cwd: context.repoRoot });
103718
+ await context.runCommand("node", [join60(context.pluginPath, "scripts", "stage-ast-grep-mcp-runtime.mjs")], { cwd: context.repoRoot });
103719
+ await context.runCommand("node", [join60(context.pluginPath, "scripts", "stage-agent-toolkit.mjs")], { cwd: context.repoRoot });
103720
+ await context.runCommand("node", [join60(context.pluginPath, "scripts", "stage-x-search-skill.mjs")], { cwd: context.repoRoot });
103734
103721
  }
103735
103722
  if (await hasMissingPluginArtifact(context.pluginPath)) {
103736
103723
  throw new Error(`Packed omo-senpi plugin is missing required runtime artifacts at ${context.pluginPath}`);
@@ -103739,14 +103726,14 @@ async function ensurePluginArtifacts(context) {
103739
103726
  }
103740
103727
  async function hasMissingPluginArtifact(pluginPath) {
103741
103728
  for (const artifact of REQUIRED_PLUGIN_ARTIFACTS) {
103742
- if (!await fileExists2(join61(pluginPath, artifact)))
103729
+ if (!await fileExists2(join60(pluginPath, artifact)))
103743
103730
  return true;
103744
103731
  }
103745
103732
  return false;
103746
103733
  }
103747
103734
  async function verifyAstGrepRuntimeIntegrity(pluginPath, platform) {
103748
- const runtimeEntry = join61(pluginPath, "runtime", "ast-grep-mcp", "cli.js");
103749
- const manifestPath = join61(dirname23(runtimeEntry), "manifest.json");
103735
+ const runtimeEntry = join60(pluginPath, "runtime", "ast-grep-mcp", "cli.js");
103736
+ const manifestPath = join60(dirname23(runtimeEntry), "manifest.json");
103750
103737
  let runtimeStat;
103751
103738
  try {
103752
103739
  runtimeStat = await stat6(runtimeEntry);
@@ -103821,7 +103808,7 @@ async function runSenpiInstaller(options = {}) {
103821
103808
  const backupPath = await writeSettingsAtomically(context.settingsPath, settings);
103822
103809
  installLocalLauncher({
103823
103810
  pluginPath: context.pluginPath,
103824
- senpiCliPath: join62(context.repoRoot, "packages", "coding-agent", "dist", "cli.js")
103811
+ senpiCliPath: join61(context.repoRoot, "packages", "coding-agent", "dist", "cli.js")
103825
103812
  });
103826
103813
  return {
103827
103814
  ok: true,
@@ -103838,12 +103825,12 @@ function resolveInstallContext(options) {
103838
103825
  const allowBuild = options.pluginPath === undefined;
103839
103826
  const repoRoot = resolve19(options.repoRoot ?? (allowBuild ? findRepoRoot2(dirname24(fileURLToPath(import.meta.url))) : dirname24(resolve19(options.pluginPath))));
103840
103827
  const agentDir = resolve19(options.agentDir ?? resolveAgentHome({ env: env2, homeDir: env2.HOME ?? homedir11() }));
103841
- const pluginPath = resolve19(options.pluginPath ?? join62(repoRoot, "packages", "omo-senpi", "plugin"));
103828
+ const pluginPath = resolve19(options.pluginPath ?? join61(repoRoot, "packages", "omo-senpi", "plugin"));
103842
103829
  return {
103843
103830
  env: env2,
103844
103831
  repoRoot,
103845
103832
  agentDir,
103846
- settingsPath: join62(agentDir, "settings.json"),
103833
+ settingsPath: join61(agentDir, "settings.json"),
103847
103834
  pluginPath,
103848
103835
  platform: options.platform ?? process.platform,
103849
103836
  allowBuild,
@@ -103860,7 +103847,7 @@ async function defaultRunCommand3(command, args, options) {
103860
103847
  function findRepoRoot2(importerDir) {
103861
103848
  let current = importerDir;
103862
103849
  for (let depth = 0;depth <= 7; depth += 1) {
103863
- if (fileExistsSync(join62(current, "packages", "omo-senpi", "plugin", "package.json")))
103850
+ if (fileExistsSync(join61(current, "packages", "omo-senpi", "plugin", "package.json")))
103864
103851
  return current;
103865
103852
  current = resolve19(current, "..");
103866
103853
  }
@@ -103904,19 +103891,19 @@ init_provider_availability();
103904
103891
 
103905
103892
  // packages/omo-opencode/src/cli/config-manager/add-tui-plugin-to-tui-config.ts
103906
103893
  import { existsSync as existsSync33, mkdirSync as mkdirSync11, readFileSync as readFileSync16 } from "node:fs";
103907
- import { join as join64 } from "node:path";
103894
+ import { join as join63 } from "node:path";
103908
103895
 
103909
103896
  // packages/omo-opencode/src/cli/doctor/checks/tui-plugin-config.ts
103910
103897
  init_shared();
103911
103898
  import { existsSync as existsSync32, readFileSync as readFileSync15 } from "node:fs";
103912
- import { join as join63 } from "node:path";
103899
+ import { join as join62 } from "node:path";
103913
103900
  var TUI_SUBPATH = "tui";
103914
103901
  var TUI_EXPORT_SUBPATH = `./${TUI_SUBPATH}`;
103915
103902
  function fileEntryPackageJsonPath(entry) {
103916
103903
  let path7 = entry.slice("file:".length);
103917
103904
  if (path7.startsWith("//"))
103918
103905
  path7 = path7.slice(2);
103919
- return join63(path7, "package.json");
103906
+ return join62(path7, "package.json");
103920
103907
  }
103921
103908
  function packageJsonExportsTui(pkgJsonPath) {
103922
103909
  if (!existsSync32(pkgJsonPath))
@@ -103954,7 +103941,7 @@ function packageExportsTuiForServerEntry(entry) {
103954
103941
  const packageName = packageNameFromServerEntry(entry);
103955
103942
  if (packageName === null)
103956
103943
  return null;
103957
- return packageJsonExportsTui(join63(getOpenCodeConfigDir({ binary: "opencode" }), "node_modules", packageName, "package.json"));
103944
+ return packageJsonExportsTui(join62(getOpenCodeConfigDir({ binary: "opencode" }), "node_modules", packageName, "package.json"));
103958
103945
  }
103959
103946
  function isOurFilePluginEntry(entry) {
103960
103947
  if (typeof entry !== "string" || !entry.startsWith("file:"))
@@ -104019,7 +104006,7 @@ function detectServerPluginRegistration() {
104019
104006
  }
104020
104007
  }
104021
104008
  function detectTuiPluginRegistration() {
104022
- const tuiJsonPath = join63(getOpenCodeConfigDir({ binary: "opencode" }), "tui.json");
104009
+ const tuiJsonPath = join62(getOpenCodeConfigDir({ binary: "opencode" }), "tui.json");
104023
104010
  if (!existsSync32(tuiJsonPath)) {
104024
104011
  return {
104025
104012
  registered: false,
@@ -104175,10 +104162,10 @@ function readConfig(path7) {
104175
104162
  return null;
104176
104163
  }
104177
104164
  function readServerConfig(configDir) {
104178
- const jsoncPath = join64(configDir, "opencode.jsonc");
104165
+ const jsoncPath = join63(configDir, "opencode.jsonc");
104179
104166
  if (existsSync33(jsoncPath))
104180
104167
  return readConfig(jsoncPath);
104181
- const jsonPath = join64(configDir, "opencode.json");
104168
+ const jsonPath = join63(configDir, "opencode.json");
104182
104169
  if (existsSync33(jsonPath))
104183
104170
  return readConfig(jsonPath);
104184
104171
  return null;
@@ -104220,7 +104207,7 @@ function ensureTuiPluginEntry(opts = {}) {
104220
104207
  if (!desiredEntry) {
104221
104208
  return { changed: false, reason: "no-server-entry" };
104222
104209
  }
104223
- const tuiJsonPath = join64(configDir, "tui.json");
104210
+ const tuiJsonPath = join63(configDir, "tui.json");
104224
104211
  const { config: config3, malformed } = readTuiConfig(tuiJsonPath);
104225
104212
  if (malformed) {
104226
104213
  return { changed: false, reason: "malformed" };
@@ -104236,7 +104223,7 @@ function ensureTuiPluginEntry(opts = {}) {
104236
104223
 
104237
104224
  // packages/omo-opencode/src/cli/install-ast-grep-sg.ts
104238
104225
  import { homedir as homedir12 } from "node:os";
104239
- import { join as join65 } from "node:path";
104226
+ import { join as join64 } from "node:path";
104240
104227
 
104241
104228
  // packages/shared-skills/index.mjs
104242
104229
  import { existsSync as existsSync34 } from "node:fs";
@@ -104258,9 +104245,9 @@ function describeResult2(result) {
104258
104245
  }
104259
104246
  async function installAstGrepForOpenCode(options = {}) {
104260
104247
  const platform = options.platform ?? process.platform;
104261
- const baseDir = join65(options.homeDir ?? homedir12(), ".omo");
104248
+ const baseDir = join64(options.homeDir ?? homedir12(), ".omo");
104262
104249
  const targetDir = astGrepRuntimeDir(baseDir, platform, options.arch ?? process.arch);
104263
- const skillDir = join65(options.sharedSkillsRoot ?? sharedSkillsRootPath(), "ast-grep");
104250
+ const skillDir = join64(options.sharedSkillsRoot ?? sharedSkillsRootPath(), "ast-grep");
104264
104251
  const installer = options.installer ?? runAstGrepSkillInstall;
104265
104252
  try {
104266
104253
  const result = await installer({ platform, skillDir, targetDir });
@@ -104378,6 +104365,7 @@ async function runCliInstaller(args, version3) {
104378
104365
  return 1;
104379
104366
  }
104380
104367
  printWarning(`Codex install failed (OpenCode install is still complete): ${message}`);
104368
+ printInfo(`The Codex harness is NOT installed. Fix the error above, then re-run: ${import_picocolors3.default.cyan("bunx oh-my-openagent install --platform=codex")}`);
104381
104369
  }
104382
104370
  console.log();
104383
104371
  }
@@ -105850,6 +105838,7 @@ async function runTuiInstaller(args, version3) {
105850
105838
  return 1;
105851
105839
  }
105852
105840
  log4.warn(`Codex install failed (OpenCode install remains successful): ${message}`);
105841
+ log4.info("The Codex harness is NOT installed. Fix the error above, then re-run: bunx oh-my-openagent install --platform=codex");
105853
105842
  }
105854
105843
  }
105855
105844
  if (config3.hasSenpi) {
@@ -108479,9 +108468,9 @@ function readCurrentTopLevelTask(planPath) {
108479
108468
  }
108480
108469
  // packages/boulder-state/src/storage/path.ts
108481
108470
  import { existsSync as existsSync36 } from "node:fs";
108482
- import { isAbsolute as isAbsolute12, join as join66, relative as relative8, resolve as resolve20 } from "node:path";
108471
+ import { isAbsolute as isAbsolute12, join as join65, relative as relative8, resolve as resolve20 } from "node:path";
108483
108472
  function getBoulderFilePath(directory) {
108484
- return join66(directory, BOULDER_DIR, BOULDER_FILE);
108473
+ return join65(directory, BOULDER_DIR, BOULDER_FILE);
108485
108474
  }
108486
108475
  function resolveTrackedPath(baseDirectory, trackedPath) {
108487
108476
  return isAbsolute12(trackedPath) ? resolve20(trackedPath) : resolve20(baseDirectory, trackedPath);
@@ -108664,9 +108653,9 @@ init_state();
108664
108653
  var CONTINUATION_MARKER_DIR = ".omo/run-continuation";
108665
108654
  // packages/omo-opencode/src/features/run-continuation-state/storage.ts
108666
108655
  import { existsSync as existsSync39, mkdirSync as mkdirSync12, readFileSync as readFileSync20, rmSync as rmSync3, writeFileSync as writeFileSync7 } from "node:fs";
108667
- import { join as join67 } from "node:path";
108656
+ import { join as join66 } from "node:path";
108668
108657
  function getMarkerPath(directory, sessionID) {
108669
- return join67(directory, CONTINUATION_MARKER_DIR, `${sessionID}.json`);
108658
+ return join66(directory, CONTINUATION_MARKER_DIR, `${sessionID}.json`);
108670
108659
  }
108671
108660
  function readContinuationMarker(directory, sessionID) {
108672
108661
  const markerPath = getMarkerPath(directory, sessionID);
@@ -108739,7 +108728,7 @@ async function isSessionInBoulderLineage(input) {
108739
108728
  init_shared();
108740
108729
  init_compaction_marker();
108741
108730
  import { readFileSync as readFileSync21, readdirSync as readdirSync8 } from "node:fs";
108742
- import { join as join68 } from "node:path";
108731
+ import { join as join67 } from "node:path";
108743
108732
  var defaultSessionLastAgentDeps = {
108744
108733
  getMessageDir,
108745
108734
  isSqliteBackend,
@@ -108799,7 +108788,7 @@ async function getLastAgentFromSession(sessionID, client3, deps = {}) {
108799
108788
  try {
108800
108789
  const messages = readdirSync8(messageDir).filter((fileName) => fileName.endsWith(".json")).map((fileName) => {
108801
108790
  try {
108802
- const content = readFileSync21(join68(messageDir, fileName), "utf-8");
108791
+ const content = readFileSync21(join67(messageDir, fileName), "utf-8");
108803
108792
  const parsed = JSON.parse(content);
108804
108793
  return {
108805
108794
  fileName,
@@ -108843,7 +108832,7 @@ init_agent_display_names();
108843
108832
  // packages/omo-opencode/src/hooks/ralph-loop/storage.ts
108844
108833
  init_frontmatter2();
108845
108834
  import { existsSync as existsSync40, readFileSync as readFileSync22, writeFileSync as writeFileSync8, unlinkSync as unlinkSync6, mkdirSync as mkdirSync13 } from "node:fs";
108846
- import { dirname as dirname26, join as join69 } from "node:path";
108835
+ import { dirname as dirname26, join as join68 } from "node:path";
108847
108836
 
108848
108837
  // packages/omo-opencode/src/hooks/ralph-loop/constants.ts
108849
108838
  var DEFAULT_STATE_FILE = ".omo/ralph-loop.local.md";
@@ -108852,7 +108841,7 @@ var DEFAULT_COMPLETION_PROMISE = "DONE";
108852
108841
 
108853
108842
  // packages/omo-opencode/src/hooks/ralph-loop/storage.ts
108854
108843
  function getStateFilePath(directory, customPath) {
108855
- return customPath ? join69(directory, customPath) : join69(directory, DEFAULT_STATE_FILE);
108844
+ return customPath ? join68(directory, customPath) : join68(directory, DEFAULT_STATE_FILE);
108856
108845
  }
108857
108846
  function readState(directory, customPath) {
108858
108847
  const filePath = getStateFilePath(directory, customPath);
@@ -109959,7 +109948,7 @@ init_extract_semver();
109959
109948
  init_bun_which_shim();
109960
109949
  import { existsSync as existsSync48, accessSync as accessSync4, constants as constants12 } from "node:fs";
109961
109950
  import { homedir as homedir15 } from "node:os";
109962
- import { join as join76 } from "node:path";
109951
+ import { join as join75 } from "node:path";
109963
109952
 
109964
109953
  // packages/omo-opencode/src/cli/doctor/framework/spawn-with-timeout.ts
109965
109954
  init_spawn_with_windows_hide();
@@ -110051,17 +110040,17 @@ function getDesktopAppPaths(platform) {
110051
110040
  case "darwin":
110052
110041
  return [
110053
110042
  "/Applications/OpenCode.app/Contents/MacOS/OpenCode",
110054
- join76(home, "Applications", "OpenCode.app", "Contents", "MacOS", "OpenCode")
110043
+ join75(home, "Applications", "OpenCode.app", "Contents", "MacOS", "OpenCode")
110055
110044
  ];
110056
110045
  case "win32": {
110057
110046
  const programFiles = process.env.ProgramFiles;
110058
110047
  const localAppData = process.env.LOCALAPPDATA;
110059
110048
  const paths2 = [];
110060
110049
  if (programFiles) {
110061
- paths2.push(join76(programFiles, "OpenCode", "OpenCode.exe"));
110050
+ paths2.push(join75(programFiles, "OpenCode", "OpenCode.exe"));
110062
110051
  }
110063
110052
  if (localAppData) {
110064
- paths2.push(join76(localAppData, "OpenCode", "OpenCode.exe"));
110053
+ paths2.push(join75(localAppData, "OpenCode", "OpenCode.exe"));
110065
110054
  }
110066
110055
  return paths2;
110067
110056
  }
@@ -110069,8 +110058,8 @@ function getDesktopAppPaths(platform) {
110069
110058
  return [
110070
110059
  "/usr/bin/opencode",
110071
110060
  "/usr/lib/opencode/opencode",
110072
- join76(home, "Applications", "opencode-desktop-linux-x86_64.AppImage"),
110073
- join76(home, "Applications", "opencode-desktop-linux-aarch64.AppImage")
110061
+ join75(home, "Applications", "opencode-desktop-linux-x86_64.AppImage"),
110062
+ join75(home, "Applications", "opencode-desktop-linux-aarch64.AppImage")
110074
110063
  ];
110075
110064
  default:
110076
110065
  return [];
@@ -110102,7 +110091,7 @@ async function findOpenCodeBinary(platform = process.platform, checkExists = exi
110102
110091
  const candidates = getCommandCandidates2(platform);
110103
110092
  for (const entry of pathEnv.split(delimiter3).filter(Boolean)) {
110104
110093
  for (const command of candidates) {
110105
- const fullPath = join76(entry, command);
110094
+ const fullPath = join75(entry, command);
110106
110095
  if (checkExists(fullPath) && isExecutable2(fullPath)) {
110107
110096
  return { binary: command, path: fullPath };
110108
110097
  }
@@ -110246,22 +110235,22 @@ init_package_json_locator();
110246
110235
  import { existsSync as existsSync50, readFileSync as readFileSync31, readdirSync as readdirSync10 } from "node:fs";
110247
110236
  import { createRequire as createRequire2 } from "node:module";
110248
110237
  import { homedir as homedir16 } from "node:os";
110249
- import { join as join77 } from "node:path";
110238
+ import { join as join76 } from "node:path";
110250
110239
  import { fileURLToPath as fileURLToPath6 } from "node:url";
110251
110240
  init_shared();
110252
110241
  function getPlatformDefaultCacheDir(platform = process.platform) {
110253
110242
  if (platform === "darwin")
110254
- return join77(homedir16(), "Library", "Caches");
110243
+ return join76(homedir16(), "Library", "Caches");
110255
110244
  if (platform === "win32")
110256
- return process.env.LOCALAPPDATA ?? join77(homedir16(), "AppData", "Local");
110257
- return join77(homedir16(), ".cache");
110245
+ return process.env.LOCALAPPDATA ?? join76(homedir16(), "AppData", "Local");
110246
+ return join76(homedir16(), ".cache");
110258
110247
  }
110259
110248
  function resolveOpenCodeCacheDir() {
110260
110249
  const xdgCacheHome = process.env.XDG_CACHE_HOME;
110261
110250
  if (xdgCacheHome)
110262
- return join77(xdgCacheHome, "opencode");
110251
+ return join76(xdgCacheHome, "opencode");
110263
110252
  const fromShared = getOpenCodeCacheDir();
110264
- const platformDefault = join77(getPlatformDefaultCacheDir(), "opencode");
110253
+ const platformDefault = join76(getPlatformDefaultCacheDir(), "opencode");
110265
110254
  if (existsSync50(fromShared) || !existsSync50(platformDefault))
110266
110255
  return fromShared;
110267
110256
  return platformDefault;
@@ -110293,11 +110282,11 @@ function normalizeVersion(value) {
110293
110282
  function createPackageCandidates(rootDir) {
110294
110283
  return ACCEPTED_PACKAGE_NAMES.map((packageName) => ({
110295
110284
  packageName,
110296
- installedPackagePath: join77(rootDir, "node_modules", packageName, "package.json")
110285
+ installedPackagePath: join76(rootDir, "node_modules", packageName, "package.json")
110297
110286
  }));
110298
110287
  }
110299
110288
  function createTaggedInstallCandidates(rootDir) {
110300
- const packagesDir = join77(rootDir, "packages");
110289
+ const packagesDir = join76(rootDir, "packages");
110301
110290
  if (!existsSync50(packagesDir))
110302
110291
  return [];
110303
110292
  const candidates = [];
@@ -110305,14 +110294,14 @@ function createTaggedInstallCandidates(rootDir) {
110305
110294
  const packageName = ACCEPTED_PACKAGE_NAMES.find((name) => entryName.startsWith(`${name}@`));
110306
110295
  if (packageName === undefined)
110307
110296
  continue;
110308
- const installDir = join77(packagesDir, entryName);
110297
+ const installDir = join76(packagesDir, entryName);
110309
110298
  candidates.push({
110310
110299
  cacheDir: installDir,
110311
- cachePackagePath: join77(installDir, "package.json"),
110300
+ cachePackagePath: join76(installDir, "package.json"),
110312
110301
  packageCandidates: [
110313
110302
  {
110314
110303
  packageName,
110315
- installedPackagePath: join77(installDir, "node_modules", packageName, "package.json")
110304
+ installedPackagePath: join76(installDir, "node_modules", packageName, "package.json")
110316
110305
  }
110317
110306
  ]
110318
110307
  });
@@ -110357,13 +110346,13 @@ function getLoadedPluginVersion() {
110357
110346
  const candidates = [
110358
110347
  {
110359
110348
  cacheDir: configDir,
110360
- cachePackagePath: join77(configDir, "package.json"),
110349
+ cachePackagePath: join76(configDir, "package.json"),
110361
110350
  packageCandidates: createPackageCandidates(configDir)
110362
110351
  },
110363
110352
  ...createTaggedInstallCandidates(configDir),
110364
110353
  {
110365
110354
  cacheDir,
110366
- cachePackagePath: join77(cacheDir, "package.json"),
110355
+ cachePackagePath: join76(cacheDir, "package.json"),
110367
110356
  packageCandidates: createPackageCandidates(cacheDir)
110368
110357
  },
110369
110358
  ...createTaggedInstallCandidates(cacheDir)
@@ -110557,18 +110546,18 @@ async function checkSystem(deps = defaultDeps6) {
110557
110546
  init_shared();
110558
110547
  import { existsSync as existsSync52, readFileSync as readFileSync33 } from "node:fs";
110559
110548
  import { homedir as homedir17 } from "node:os";
110560
- import { join as join78 } from "node:path";
110549
+ import { join as join77 } from "node:path";
110561
110550
  function getUserConfigDir2() {
110562
110551
  const xdgConfig = process.env.XDG_CONFIG_HOME;
110563
110552
  if (xdgConfig)
110564
- return join78(xdgConfig, "opencode");
110565
- return join78(homedir17(), ".config", "opencode");
110553
+ return join77(xdgConfig, "opencode");
110554
+ return join77(homedir17(), ".config", "opencode");
110566
110555
  }
110567
110556
  function loadCustomProviderNames() {
110568
110557
  const configDir = getUserConfigDir2();
110569
110558
  const candidatePaths = [
110570
- join78(configDir, "opencode.json"),
110571
- join78(configDir, "opencode.jsonc")
110559
+ join77(configDir, "opencode.json"),
110560
+ join77(configDir, "opencode.jsonc")
110572
110561
  ];
110573
110562
  for (const configPath of candidatePaths) {
110574
110563
  if (!existsSync52(configPath))
@@ -110589,7 +110578,7 @@ function loadCustomProviderNames() {
110589
110578
  return [];
110590
110579
  }
110591
110580
  function loadAvailableModelsFromCache() {
110592
- const cacheFile = join78(getOpenCodeCacheDir(), "models.json");
110581
+ const cacheFile = join77(getOpenCodeCacheDir(), "models.json");
110593
110582
  const customProviders = loadCustomProviderNames();
110594
110583
  if (!existsSync52(cacheFile)) {
110595
110584
  if (customProviders.length > 0) {
@@ -110651,7 +110640,7 @@ function loadOmoConfig2() {
110651
110640
 
110652
110641
  // packages/omo-opencode/src/cli/doctor/checks/model-resolution-details.ts
110653
110642
  init_shared();
110654
- import { join as join79 } from "node:path";
110643
+ import { join as join78 } from "node:path";
110655
110644
 
110656
110645
  // packages/omo-opencode/src/cli/doctor/checks/model-resolution-variant.ts
110657
110646
  function formatModelWithVariant(model, variant) {
@@ -110693,7 +110682,7 @@ function formatCapabilityResolutionLabel(mode2) {
110693
110682
  }
110694
110683
  function buildModelResolutionDetails(options) {
110695
110684
  const details = [];
110696
- const cacheFile = join79(getOpenCodeCacheDir(), "models.json");
110685
+ const cacheFile = join78(getOpenCodeCacheDir(), "models.json");
110697
110686
  details.push("═══ Available Models (from cache) ═══");
110698
110687
  details.push("");
110699
110688
  if (options.available.cacheExists) {
@@ -111003,7 +110992,7 @@ async function checkConfig() {
111003
110992
  // packages/omo-opencode/src/cli/doctor/checks/deprecated-reasoning-keys.ts
111004
110993
  init_main();
111005
110994
  import { existsSync as existsSync53, readFileSync as readFileSync34 } from "node:fs";
111006
- import { join as join80 } from "node:path";
110995
+ import { join as join79 } from "node:path";
111007
110996
  var CANONICAL_REPLACEMENT = new Map([
111008
110997
  ["variant", "reasoning"],
111009
110998
  ["reasoningEffort", "reasoning"],
@@ -111058,7 +111047,7 @@ function userConfigPaths() {
111058
111047
  const home = process.env.HOME ?? process.env.USERPROFILE;
111059
111048
  if (home === undefined || home.length === 0)
111060
111049
  return [];
111061
- return [join80(home, ".omo", "omo.jsonc"), join80(home, ".omo", "omo.json")];
111050
+ return [join79(home, ".omo", "omo.jsonc"), join79(home, ".omo", "omo.json")];
111062
111051
  }
111063
111052
  async function checkDeprecatedReasoningKeys() {
111064
111053
  const issues = [];
@@ -111084,25 +111073,25 @@ init_src();
111084
111073
  import { existsSync as existsSync54 } from "node:fs";
111085
111074
  import { createRequire as createRequire3 } from "node:module";
111086
111075
  import { homedir as homedir19 } from "node:os";
111087
- import { dirname as dirname31, join as join82 } from "node:path";
111076
+ import { dirname as dirname31, join as join81 } from "node:path";
111088
111077
 
111089
111078
  // packages/omo-opencode/src/hooks/comment-checker/downloader.ts
111090
- import { join as join81 } from "path";
111079
+ import { join as join80 } from "path";
111091
111080
  import { homedir as homedir18, tmpdir as tmpdir4 } from "os";
111092
111081
  init_binary_downloader();
111093
111082
  init_logger2();
111094
111083
  init_plugin_identity();
111095
111084
  var DEBUG = process.env.COMMENT_CHECKER_DEBUG === "1";
111096
- var DEBUG_FILE = join81(tmpdir4(), "comment-checker-debug.log");
111085
+ var DEBUG_FILE = join80(tmpdir4(), "comment-checker-debug.log");
111097
111086
  function getCacheDir2() {
111098
111087
  if (process.platform === "win32") {
111099
111088
  const localAppData = process.env.LOCALAPPDATA || process.env.APPDATA;
111100
- const base2 = localAppData || join81(homedir18(), "AppData", "Local");
111101
- return join81(base2, CACHE_DIR_NAME, "bin");
111089
+ const base2 = localAppData || join80(homedir18(), "AppData", "Local");
111090
+ return join80(base2, CACHE_DIR_NAME, "bin");
111102
111091
  }
111103
111092
  const xdgCache = process.env.XDG_CACHE_HOME;
111104
- const base = xdgCache || join81(homedir18(), ".cache");
111105
- return join81(base, CACHE_DIR_NAME, "bin");
111093
+ const base = xdgCache || join80(homedir18(), ".cache");
111094
+ return join80(base, CACHE_DIR_NAME, "bin");
111106
111095
  }
111107
111096
  function getBinaryName() {
111108
111097
  return process.platform === "win32" ? "comment-checker.exe" : "comment-checker";
@@ -111152,7 +111141,7 @@ async function getBinaryVersion(binary) {
111152
111141
  }
111153
111142
  }
111154
111143
  async function checkAstGrepCli() {
111155
- const runtimeDir = astGrepRuntimeDir(join82(homedir19(), ".omo"));
111144
+ const runtimeDir = astGrepRuntimeDir(join81(homedir19(), ".omo"));
111156
111145
  const sgPath = findSgBinarySync({ runtimeDir });
111157
111146
  if (sgPath === null) {
111158
111147
  return {
@@ -111182,10 +111171,10 @@ function findCommentCheckerPackageBinary(baseDirOverride, resolvePackageJsonPath
111182
111171
  const platformKey = `${process.platform}-${process.arch === "x64" ? "x64" : process.arch}`;
111183
111172
  try {
111184
111173
  const packageDir = baseDirOverride ?? dirname31(resolvePackageJsonPath());
111185
- const vendorPath = join82(packageDir, "vendor", platformKey, binaryName);
111174
+ const vendorPath = join81(packageDir, "vendor", platformKey, binaryName);
111186
111175
  if (existsSync54(vendorPath))
111187
111176
  return vendorPath;
111188
- const binPath = join82(packageDir, "bin", binaryName);
111177
+ const binPath = join81(packageDir, "bin", binaryName);
111189
111178
  if (existsSync54(binPath))
111190
111179
  return binPath;
111191
111180
  } catch (error51) {
@@ -111561,13 +111550,13 @@ function getInstalledLspServers(options = {}) {
111561
111550
  init_shared();
111562
111551
  import { existsSync as existsSync56, readFileSync as readFileSync36 } from "node:fs";
111563
111552
  import { homedir as homedir20 } from "node:os";
111564
- import { join as join83 } from "node:path";
111553
+ import { join as join82 } from "node:path";
111565
111554
  var BUILTIN_MCP_SERVERS = ["websearch", "context7", "grep_app", "lsp"];
111566
111555
  function getMcpConfigPaths() {
111567
111556
  return [
111568
- join83(homedir20(), ".claude", ".mcp.json"),
111569
- join83(process.cwd(), ".mcp.json"),
111570
- join83(process.cwd(), ".claude", ".mcp.json")
111557
+ join82(homedir20(), ".claude", ".mcp.json"),
111558
+ join82(process.cwd(), ".mcp.json"),
111559
+ join82(process.cwd(), ".claude", ".mcp.json")
111571
111560
  ];
111572
111561
  }
111573
111562
  function loadUserMcpConfig() {
@@ -111849,7 +111838,7 @@ init_src();
111849
111838
  import { existsSync as existsSync58 } from "node:fs";
111850
111839
  import { lstat as lstat15, readdir as readdir14, readFile as readFile27 } from "node:fs/promises";
111851
111840
  import { homedir as homedir22 } from "node:os";
111852
- import { basename as basename10, join as join84, resolve as resolve23 } from "node:path";
111841
+ import { basename as basename10, join as join83, resolve as resolve23 } from "node:path";
111853
111842
  // packages/omo-opencode/package.json
111854
111843
  var package_default3 = {
111855
111844
  name: "@oh-my-opencode/omo-opencode",
@@ -111915,13 +111904,13 @@ var CODEX_BIN_NAMES = [
111915
111904
  "omo-git-bash-hook"
111916
111905
  ];
111917
111906
  async function gatherCodexSummary(deps = {}) {
111918
- const codexHome = resolve23(deps.codexHome ?? process.env.CODEX_HOME ?? join84(homedir22(), ".codex"));
111907
+ const codexHome = resolve23(deps.codexHome ?? process.env.CODEX_HOME ?? join83(homedir22(), ".codex"));
111919
111908
  const binDir = resolveCodexInstallerBinDir({ binDir: deps.binDir, codexHome, env: process.env });
111920
111909
  const detection = await (deps.detectCodexInstallation ?? detectCodexInstallation)();
111921
111910
  const pluginRoot = await resolveInstalledPluginRoot(codexHome);
111922
- const manifest = pluginRoot === null ? null : await readJson(join84(pluginRoot, ".codex-plugin", "plugin.json"));
111923
- const installSnapshot = pluginRoot === null ? null : await readJson(join84(pluginRoot, "lazycodex-install.json"));
111924
- const configPath = join84(codexHome, "config.toml");
111911
+ const manifest = pluginRoot === null ? null : await readJson(join83(pluginRoot, ".codex-plugin", "plugin.json"));
111912
+ const installSnapshot = pluginRoot === null ? null : await readJson(join83(pluginRoot, "lazycodex-install.json"));
111913
+ const configPath = join83(codexHome, "config.toml");
111925
111914
  const pluginVersion = stringField(manifest, "version");
111926
111915
  return {
111927
111916
  codexPath: detection.found && "path" in detection ? detection.path : null,
@@ -111978,7 +111967,7 @@ function buildCodexIssues(summary) {
111978
111967
  if (summary.pluginRoot === null) {
111979
111968
  issues.push({
111980
111969
  title: "OMO Codex plugin is not installed",
111981
- description: `Expected cached plugin at ${join84("plugins", "cache", MARKETPLACE_NAME, PLUGIN_NAME2, DEFAULT_PLUGIN_VERSION)} under CODEX_HOME.`,
111970
+ description: `Expected cached plugin at ${join83("plugins", "cache", MARKETPLACE_NAME, PLUGIN_NAME2, DEFAULT_PLUGIN_VERSION)} under CODEX_HOME.`,
111982
111971
  fix: "Run: npx lazycodex-ai install",
111983
111972
  severity: "error",
111984
111973
  affects: ["plugin loading"]
@@ -112043,12 +112032,12 @@ function buildCodexIssues(summary) {
112043
112032
  return issues;
112044
112033
  }
112045
112034
  async function resolveInstalledPluginRoot(codexHome) {
112046
- const pluginRoot = join84(codexHome, "plugins", "cache", MARKETPLACE_NAME, PLUGIN_NAME2);
112035
+ const pluginRoot = join83(codexHome, "plugins", "cache", MARKETPLACE_NAME, PLUGIN_NAME2);
112047
112036
  if (!existsSync58(pluginRoot))
112048
112037
  return null;
112049
112038
  const versions2 = await readdir14(pluginRoot, { withFileTypes: true });
112050
112039
  const candidates = versions2.filter((entry) => entry.isDirectory()).map((entry) => entry.name).sort(compareVersionsDescending);
112051
- return candidates.length === 0 ? null : join84(pluginRoot, candidates[0] ?? DEFAULT_PLUGIN_VERSION);
112040
+ return candidates.length === 0 ? null : join83(pluginRoot, candidates[0] ?? DEFAULT_PLUGIN_VERSION);
112052
112041
  }
112053
112042
  async function readCodexConfigSummary(configPath) {
112054
112043
  if (!existsSync58(configPath)) {
@@ -112076,13 +112065,13 @@ async function readCodexConfigSummary(configPath) {
112076
112065
  async function readLinkedBins(binDir) {
112077
112066
  const linked = [];
112078
112067
  for (const name of CODEX_BIN_NAMES) {
112079
- if (await pathExists2(join84(binDir, process.platform === "win32" ? `${name}.cmd` : name)))
112068
+ if (await pathExists2(join83(binDir, process.platform === "win32" ? `${name}.cmd` : name)))
112080
112069
  linked.push(name);
112081
112070
  }
112082
112071
  return linked;
112083
112072
  }
112084
112073
  async function readLinkedAgents(codexHome) {
112085
- const agentsDir = join84(codexHome, "agents");
112074
+ const agentsDir = join83(codexHome, "agents");
112086
112075
  if (!existsSync58(agentsDir))
112087
112076
  return [];
112088
112077
  const entries = await readdir14(agentsDir, { withFileTypes: true });
@@ -112198,7 +112187,7 @@ async function pathExists2(path15) {
112198
112187
  init_src();
112199
112188
  import { readdir as readdir15, readFile as readFile28, stat as stat7 } from "node:fs/promises";
112200
112189
  import { homedir as homedir23 } from "node:os";
112201
- import { dirname as dirname33, isAbsolute as isAbsolute13, join as join85, relative as relative9, resolve as resolve24, sep as sep9 } from "node:path";
112190
+ import { dirname as dirname33, isAbsolute as isAbsolute13, join as join84, relative as relative9, resolve as resolve24, sep as sep9 } from "node:path";
112202
112191
  var CODEX_COMPONENTS_CHECK_ID = "codex-components";
112203
112192
  var CODEX_COMPONENTS_CHECK_NAME = "codex-components";
112204
112193
  var PLUGIN_DATA_DIR_NAME = "omo-sisyphuslabs";
@@ -112208,7 +112197,7 @@ async function checkCodexComponents(deps = {}) {
112208
112197
  const env2 = deps.env ?? process.env;
112209
112198
  const platform = deps.platform ?? process.platform;
112210
112199
  const arch = deps.arch ?? process.arch;
112211
- const codexHome = resolve24(deps.codexHome ?? env2["CODEX_HOME"] ?? join85(homedir23(), ".codex"));
112200
+ const codexHome = resolve24(deps.codexHome ?? env2["CODEX_HOME"] ?? join84(homedir23(), ".codex"));
112212
112201
  const summary = await gatherCodexSummary({ ...deps, codexHome });
112213
112202
  if (summary.pluginRoot === null) {
112214
112203
  return {
@@ -112233,7 +112222,7 @@ async function checkCodexComponents(deps = {}) {
112233
112222
  });
112234
112223
  }
112235
112224
  const runtimeSgDir = runtimeSgDirectory(codexHome, platform, arch);
112236
- const runtimeSgPath = join85(runtimeSgDir, sgBinaryName(platform));
112225
+ const runtimeSgPath = join84(runtimeSgDir, sgBinaryName(platform));
112237
112226
  const sg = findSgBinarySync({
112238
112227
  arch,
112239
112228
  env: env2,
@@ -112345,7 +112334,7 @@ async function findManifestPaths(root, manifestName) {
112345
112334
  for (const entry of entries) {
112346
112335
  if (entry.name === "node_modules" || entry.name === ".git")
112347
112336
  continue;
112348
- const entryPath = join85(root, entry.name);
112337
+ const entryPath = join84(root, entry.name);
112349
112338
  if (entry.isDirectory()) {
112350
112339
  paths3.push(...await findManifestPaths(entryPath, manifestName));
112351
112340
  continue;
@@ -112389,18 +112378,18 @@ function isPluginRuntimePathArg(arg) {
112389
112378
  return normalized.endsWith(".js") && normalized.includes("/dist/") && (normalized.startsWith("./") || normalized.startsWith("../") || normalized.startsWith("components/") || normalized.startsWith("/") || isAbsolute13(arg));
112390
112379
  }
112391
112380
  function runtimeSgDirectory(codexHome, platform, arch) {
112392
- return join85(codexHome, "runtime", "ast-grep", runtimeSlug(platform, arch));
112381
+ return join84(codexHome, "runtime", "ast-grep", runtimeSlug(platform, arch));
112393
112382
  }
112394
112383
  function describeSgSource(sgPath, env2, runtimeSgDir, platform) {
112395
112384
  const override = env2[SG_PATH_ENV_KEY]?.trim();
112396
112385
  if (override !== undefined && override.length > 0 && sgPath === override)
112397
112386
  return `env override ${SG_PATH_ENV_KEY}`;
112398
- if (sgPath === join85(runtimeSgDir, sgBinaryName(platform)))
112387
+ if (sgPath === join84(runtimeSgDir, sgBinaryName(platform)))
112399
112388
  return "runtime dir";
112400
112389
  return "PATH";
112401
112390
  }
112402
112391
  async function readBootstrapStateSummary(codexHome) {
112403
- const statePath = join85(codexHome, "plugins", "data", PLUGIN_DATA_DIR_NAME, "bootstrap", "state.json");
112392
+ const statePath = join84(codexHome, "plugins", "data", PLUGIN_DATA_DIR_NAME, "bootstrap", "state.json");
112404
112393
  const raw = await readJson2(statePath);
112405
112394
  if (raw === null)
112406
112395
  return null;
@@ -112479,16 +112468,16 @@ function isRecord14(value) {
112479
112468
  import { existsSync as existsSync59 } from "node:fs";
112480
112469
  import { readFile as readFile29 } from "node:fs/promises";
112481
112470
  import { homedir as homedir24 } from "node:os";
112482
- import { join as join86, resolve as resolve25 } from "node:path";
112471
+ import { join as join85, resolve as resolve25 } from "node:path";
112483
112472
  var RUNTIME_WRAPPER_MARKER2 = "OMO_GENERATED_RUNTIME_WRAPPER";
112484
112473
  var CHECK_NAME = "codex-runtime-wrapper";
112485
112474
  var REINSTALL_COMMAND = "npx --yes lazycodex-ai@latest install --no-tui";
112486
112475
  async function checkCodexRuntimeWrapper(deps = {}) {
112487
- const codexHome = resolve25(deps.codexHome ?? process.env.CODEX_HOME ?? join86(homedir24(), ".codex"));
112476
+ const codexHome = resolve25(deps.codexHome ?? process.env.CODEX_HOME ?? join85(homedir24(), ".codex"));
112488
112477
  const binDir = resolveCodexInstallerBinDir({ binDir: deps.binDir, codexHome, env: process.env });
112489
112478
  const platform = deps.platform ?? process.platform;
112490
- const wrapperPath = join86(binDir, platform === "win32" ? "omo-agent-toolkit.cmd" : "omo-agent-toolkit");
112491
- const legacyWrapperPath = join86(binDir, platform === "win32" ? "omo.cmd" : "omo");
112479
+ const wrapperPath = join85(binDir, platform === "win32" ? "omo-agent-toolkit.cmd" : "omo-agent-toolkit");
112480
+ const legacyWrapperPath = join85(binDir, platform === "win32" ? "omo.cmd" : "omo");
112492
112481
  const [wrapper, legacyWrapper] = await Promise.all([readRuntimeWrapper(wrapperPath), readRuntimeWrapper(legacyWrapperPath)]);
112493
112482
  const issues = [];
112494
112483
  if (wrapper?.includes(RUNTIME_WRAPPER_MARKER2) === true) {
@@ -113016,12 +113005,12 @@ import {
113016
113005
  unlinkSync as unlinkSync9,
113017
113006
  writeFileSync as writeFileSync12
113018
113007
  } from "node:fs";
113019
- import { basename as basename11, dirname as dirname34, join as join89 } from "node:path";
113008
+ import { basename as basename11, dirname as dirname34, join as join88 } from "node:path";
113020
113009
 
113021
113010
  // packages/mcp-client-core/src/config-dir.ts
113022
113011
  import { existsSync as existsSync60, realpathSync as realpathSync8 } from "node:fs";
113023
113012
  import { homedir as homedir25 } from "node:os";
113024
- import { join as join87, resolve as resolve26 } from "node:path";
113013
+ import { join as join86, resolve as resolve26 } from "node:path";
113025
113014
  function resolveConfigPath2(pathValue) {
113026
113015
  const resolvedPath = resolve26(pathValue);
113027
113016
  if (!existsSync60(resolvedPath))
@@ -113039,13 +113028,13 @@ function getOpenCodeCliConfigDir(env2 = process.env) {
113039
113028
  if (customConfigDir) {
113040
113029
  return resolveConfigPath2(customConfigDir);
113041
113030
  }
113042
- const xdgConfigDir = env2["XDG_CONFIG_HOME"]?.trim() || join87(homedir25(), ".config");
113043
- return resolveConfigPath2(join87(xdgConfigDir, "opencode"));
113031
+ const xdgConfigDir = env2["XDG_CONFIG_HOME"]?.trim() || join86(homedir25(), ".config");
113032
+ return resolveConfigPath2(join86(xdgConfigDir, "opencode"));
113044
113033
  }
113045
113034
 
113046
113035
  // packages/mcp-client-core/src/mcp-oauth/storage-index.ts
113047
113036
  import { chmodSync as chmodSync4, existsSync as existsSync61, readFileSync as readFileSync38, renameSync as renameSync6, writeFileSync as writeFileSync11 } from "node:fs";
113048
- import { join as join88 } from "node:path";
113037
+ import { join as join87 } from "node:path";
113049
113038
  var INDEX_FILE_NAME = "index.json";
113050
113039
  function isTokenIndex(value) {
113051
113040
  if (typeof value !== "object" || value === null || Array.isArray(value))
@@ -113053,7 +113042,7 @@ function isTokenIndex(value) {
113053
113042
  return Object.values(value).every((entry) => typeof entry === "string");
113054
113043
  }
113055
113044
  function getIndexPath(storageDir) {
113056
- return join88(storageDir, INDEX_FILE_NAME);
113045
+ return join87(storageDir, INDEX_FILE_NAME);
113057
113046
  }
113058
113047
  function readTokenIndex(storageDir) {
113059
113048
  const indexPath = getIndexPath(storageDir);
@@ -113097,16 +113086,16 @@ function deleteTokenIndexEntry(storageDir, hash2) {
113097
113086
  var STORAGE_DIR_NAME = "mcp-oauth";
113098
113087
  var LEGACY_STORAGE_FILE_NAME = "mcp-oauth.json";
113099
113088
  function getMcpOauthStorageDir() {
113100
- return join89(getOpenCodeCliConfigDir(), STORAGE_DIR_NAME);
113089
+ return join88(getOpenCodeCliConfigDir(), STORAGE_DIR_NAME);
113101
113090
  }
113102
113091
  function getMcpOauthServerHash(serverHost, resource) {
113103
113092
  return createHash6("sha256").update(buildKey(serverHost, resource)).digest("hex").slice(0, 32);
113104
113093
  }
113105
113094
  function getMcpOauthStoragePath(serverHost, resource) {
113106
- return join89(getMcpOauthStorageDir(), `${getMcpOauthServerHash(serverHost, resource)}.json`);
113095
+ return join88(getMcpOauthStorageDir(), `${getMcpOauthServerHash(serverHost, resource)}.json`);
113107
113096
  }
113108
113097
  function getLegacyStoragePath() {
113109
- return join89(getOpenCodeCliConfigDir(), LEGACY_STORAGE_FILE_NAME);
113098
+ return join88(getOpenCodeCliConfigDir(), LEGACY_STORAGE_FILE_NAME);
113110
113099
  }
113111
113100
  function normalizeHost2(serverHost) {
113112
113101
  let host = serverHost.trim();
@@ -113285,7 +113274,7 @@ function listTokensByHost(serverHost) {
113285
113274
  for (const [hash2, indexedKey] of Object.entries(index)) {
113286
113275
  if (!indexedKey.startsWith(prefix))
113287
113276
  continue;
113288
- const indexedToken = readTokenFile(join89(getMcpOauthStorageDir(), `${hash2}.json`));
113277
+ const indexedToken = readTokenFile(join88(getMcpOauthStorageDir(), `${hash2}.json`));
113289
113278
  if (indexedToken)
113290
113279
  result[indexedKey] = indexedToken;
113291
113280
  }
@@ -113300,7 +113289,7 @@ function listAllTokens() {
113300
113289
  for (const entry of readdirSync11(dir, { withFileTypes: true })) {
113301
113290
  if (!entry.isFile() || !entry.name.endsWith(".json") || entry.name === "index.json")
113302
113291
  continue;
113303
- const token = readTokenFile(join89(dir, entry.name));
113292
+ const token = readTokenFile(join88(dir, entry.name));
113304
113293
  const hash2 = basename11(entry.name, ".json");
113305
113294
  if (token)
113306
113295
  result[index[hash2] ?? hash2] = token;