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.
- package/dist/cli/index.js +99 -77
- package/dist/cli-node/index.js +99 -77
- package/dist/index.js +53 -20
- package/dist/skills/browser/runtime/omowright/manifest.json +1 -1
- package/dist/tui.js +14 -14
- package/package.json +14 -14
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/dist/cli.js +33 -7
- package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/src/runner.ts +4 -4
- package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
- package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
- package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/rules/package.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
- package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
- package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/package-lock.json +12 -12
- package/packages/omo-codex/plugin/package.json +1 -1
- package/packages/omo-codex/plugin/skills/browser/runtime/omowright/manifest.json +1 -1
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +2 -2
- 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.
|
|
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-
|
|
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.
|
|
303
|
-
"oh-my-opencode-darwin-x64": "5.1.
|
|
304
|
-
"oh-my-opencode-darwin-x64-baseline": "5.1.
|
|
305
|
-
"oh-my-opencode-linux-arm64": "5.1.
|
|
306
|
-
"oh-my-opencode-linux-arm64-musl": "5.1.
|
|
307
|
-
"oh-my-opencode-linux-x64": "5.1.
|
|
308
|
-
"oh-my-opencode-linux-x64-baseline": "5.1.
|
|
309
|
-
"oh-my-opencode-linux-x64-musl": "5.1.
|
|
310
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.1.
|
|
311
|
-
"oh-my-opencode-windows-arm64": "5.1.
|
|
312
|
-
"oh-my-opencode-windows-x64": "5.1.
|
|
313
|
-
"oh-my-opencode-windows-x64-baseline": "5.1.
|
|
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.
|
|
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
|
|
106457
|
+
import { createRequire as createRequire3 } from "module";
|
|
106459
106458
|
import { homedir as homedir20 } from "os";
|
|
106460
|
-
import {
|
|
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 =
|
|
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(
|
|
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 =
|
|
106605
|
+
const require2 = createRequire3(import.meta.url);
|
|
106578
106606
|
return require2.resolve("@code-yeongyu/comment-checker/package.json");
|
|
106579
106607
|
}
|
|
106580
|
-
function
|
|
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
|
|
106585
|
-
|
|
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 :
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
106969
|
-
|
|
106970
|
-
|
|
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
|
|
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 ??
|
|
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(
|
|
107326
|
-
const installSnapshot = pluginRoot === null ? null : await readJson(
|
|
107327
|
-
const configPath =
|
|
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 ${
|
|
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 =
|
|
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 :
|
|
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(
|
|
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 =
|
|
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
|
|
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"] ??
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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) =>
|
|
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 =
|
|
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
|
|
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 ===
|
|
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 =
|
|
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
|
|
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 ??
|
|
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 =
|
|
107912
|
-
const legacyWrapperPath =
|
|
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
|
|
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
|
|
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() ||
|
|
108472
|
-
return resolveConfigPath2(
|
|
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
|
|
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
|
|
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
|
|
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
|
|
108557
|
+
return join96(getMcpOauthStorageDir(), `${getMcpOauthServerHash(serverHost, resource)}.json`);
|
|
108536
108558
|
}
|
|
108537
108559
|
function getLegacyStoragePath() {
|
|
108538
|
-
return
|
|
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 =
|
|
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(
|
|
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(
|
|
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;
|