lazycodex-ai 5.0.0-beta.87 → 5.0.0-beta.88
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 +90 -73
- package/dist/cli-node/index.js +90 -73
- package/package.json +1 -1
- 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/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
- 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/plugin/skills/frontend/references/design/ambience-skill.md +2 -1
- package/packages/omo-codex/plugin/skills/frontend/references/design/design-system-architecture.md +30 -7
- package/packages/omo-codex/plugin/skills/frontend/references/design/interaction-skill.md +17 -5
- 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/packages/shared-skills/skills/frontend/references/design/ambience-skill.md +2 -1
- package/packages/shared-skills/skills/frontend/references/design/design-system-architecture.md +30 -7
- package/packages/shared-skills/skills/frontend/references/design/interaction-skill.md +17 -5
package/dist/cli-node/index.js
CHANGED
|
@@ -65,7 +65,7 @@ var package_default;
|
|
|
65
65
|
var init_package = __esm(() => {
|
|
66
66
|
package_default = {
|
|
67
67
|
name: "oh-my-opencode",
|
|
68
|
-
version: "5.0.0-beta.
|
|
68
|
+
version: "5.0.0-beta.88",
|
|
69
69
|
description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
70
70
|
main: "./dist/index.js",
|
|
71
71
|
types: "dist/index.d.ts",
|
|
@@ -248,7 +248,7 @@ var init_package = __esm(() => {
|
|
|
248
248
|
zod: "^4.6.5"
|
|
249
249
|
},
|
|
250
250
|
devDependencies: {
|
|
251
|
-
"@code-yeongyu/senpi": "2026.9.23-
|
|
251
|
+
"@code-yeongyu/senpi": "2026.9.23-5",
|
|
252
252
|
"@oh-my-opencode/agents-md-core": "workspace:*",
|
|
253
253
|
"@oh-my-opencode/ast-grep-mcp": "workspace:*",
|
|
254
254
|
"@oh-my-opencode/boulder-state": "workspace:*",
|
|
@@ -289,18 +289,18 @@ var init_package = __esm(() => {
|
|
|
289
289
|
typescript: "^7.0.2"
|
|
290
290
|
},
|
|
291
291
|
optionalDependencies: {
|
|
292
|
-
"oh-my-opencode-darwin-arm64": "5.0.0-beta.
|
|
293
|
-
"oh-my-opencode-darwin-x64": "5.0.0-beta.
|
|
294
|
-
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.
|
|
295
|
-
"oh-my-opencode-linux-arm64": "5.0.0-beta.
|
|
296
|
-
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.
|
|
297
|
-
"oh-my-opencode-linux-x64": "5.0.0-beta.
|
|
298
|
-
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.
|
|
299
|
-
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.
|
|
300
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.
|
|
301
|
-
"oh-my-opencode-windows-arm64": "5.0.0-beta.
|
|
302
|
-
"oh-my-opencode-windows-x64": "5.0.0-beta.
|
|
303
|
-
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.
|
|
292
|
+
"oh-my-opencode-darwin-arm64": "5.0.0-beta.88",
|
|
293
|
+
"oh-my-opencode-darwin-x64": "5.0.0-beta.88",
|
|
294
|
+
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.88",
|
|
295
|
+
"oh-my-opencode-linux-arm64": "5.0.0-beta.88",
|
|
296
|
+
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.88",
|
|
297
|
+
"oh-my-opencode-linux-x64": "5.0.0-beta.88",
|
|
298
|
+
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.88",
|
|
299
|
+
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.88",
|
|
300
|
+
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.88",
|
|
301
|
+
"oh-my-opencode-windows-arm64": "5.0.0-beta.88",
|
|
302
|
+
"oh-my-opencode-windows-x64": "5.0.0-beta.88",
|
|
303
|
+
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.88"
|
|
304
304
|
},
|
|
305
305
|
overrides: {
|
|
306
306
|
"@earendil-works/pi-agent-core": "0.84.2",
|
|
@@ -88838,7 +88838,7 @@ var package_default2;
|
|
|
88838
88838
|
var init_package2 = __esm(() => {
|
|
88839
88839
|
package_default2 = {
|
|
88840
88840
|
name: "@oh-my-opencode/omo-codex",
|
|
88841
|
-
version: "5.0.0-beta.
|
|
88841
|
+
version: "5.0.0-beta.88",
|
|
88842
88842
|
type: "module",
|
|
88843
88843
|
private: true,
|
|
88844
88844
|
description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
|
|
@@ -105442,28 +105442,41 @@ init_src();
|
|
|
105442
105442
|
import { existsSync as existsSync53 } from "node:fs";
|
|
105443
105443
|
import { createRequire as createRequire3 } from "node:module";
|
|
105444
105444
|
import { homedir as homedir19 } from "node:os";
|
|
105445
|
-
import { dirname as dirname31, join as
|
|
105445
|
+
import { dirname as dirname31, join as join83 } from "node:path";
|
|
105446
105446
|
|
|
105447
|
+
// packages/omo-opencode/src/hooks/comment-checker/downloader.ts
|
|
105448
|
+
import { join as join82 } from "path";
|
|
105449
|
+
import { homedir as homedir18, tmpdir as tmpdir4 } from "os";
|
|
105450
|
+
// packages/comment-checker-core/src/release.ts
|
|
105451
|
+
import { join as join81 } from "node:path";
|
|
105452
|
+
function commentCheckerBinaryName(platform) {
|
|
105453
|
+
return platform === "win32" ? "comment-checker.exe" : "comment-checker";
|
|
105454
|
+
}
|
|
105455
|
+
function commentCheckerCacheDir(input) {
|
|
105456
|
+
if (input.platform === "win32") {
|
|
105457
|
+
const localAppData = input.env.LOCALAPPDATA || input.env.APPDATA;
|
|
105458
|
+
const base = localAppData || join81(input.homedir, "AppData", "Local");
|
|
105459
|
+
return join81(base, input.cacheDirName, "bin");
|
|
105460
|
+
}
|
|
105461
|
+
const base = input.env.XDG_CACHE_HOME || join81(input.homedir, ".cache");
|
|
105462
|
+
return join81(base, input.cacheDirName, "bin");
|
|
105463
|
+
}
|
|
105447
105464
|
// packages/omo-opencode/src/hooks/comment-checker/downloader.ts
|
|
105448
105465
|
init_binary_downloader();
|
|
105449
105466
|
init_logger2();
|
|
105450
105467
|
init_plugin_identity();
|
|
105451
|
-
import { join as join81 } from "path";
|
|
105452
|
-
import { homedir as homedir18, tmpdir as tmpdir4 } from "os";
|
|
105453
105468
|
var DEBUG = process.env.COMMENT_CHECKER_DEBUG === "1";
|
|
105454
|
-
var DEBUG_FILE =
|
|
105469
|
+
var DEBUG_FILE = join82(tmpdir4(), "comment-checker-debug.log");
|
|
105455
105470
|
function getCacheDir2() {
|
|
105456
|
-
|
|
105457
|
-
|
|
105458
|
-
|
|
105459
|
-
|
|
105460
|
-
|
|
105461
|
-
|
|
105462
|
-
const base = xdgCache || join81(homedir18(), ".cache");
|
|
105463
|
-
return join81(base, CACHE_DIR_NAME, "bin");
|
|
105471
|
+
return commentCheckerCacheDir({
|
|
105472
|
+
platform: process.platform,
|
|
105473
|
+
env: process.env,
|
|
105474
|
+
homedir: homedir18(),
|
|
105475
|
+
cacheDirName: CACHE_DIR_NAME
|
|
105476
|
+
});
|
|
105464
105477
|
}
|
|
105465
105478
|
function getBinaryName() {
|
|
105466
|
-
return process.platform
|
|
105479
|
+
return commentCheckerBinaryName(process.platform);
|
|
105467
105480
|
}
|
|
105468
105481
|
function getCachedBinaryPath2() {
|
|
105469
105482
|
return getCachedBinaryPath(getCacheDir2(), getBinaryName());
|
|
@@ -105510,7 +105523,7 @@ async function getBinaryVersion(binary) {
|
|
|
105510
105523
|
}
|
|
105511
105524
|
}
|
|
105512
105525
|
async function checkAstGrepCli() {
|
|
105513
|
-
const runtimeDir = astGrepRuntimeDir(
|
|
105526
|
+
const runtimeDir = astGrepRuntimeDir(join83(homedir19(), ".omo"));
|
|
105514
105527
|
const sgPath = findSgBinarySync({ runtimeDir });
|
|
105515
105528
|
if (sgPath === null) {
|
|
105516
105529
|
return {
|
|
@@ -105540,10 +105553,10 @@ function findCommentCheckerPackageBinary(baseDirOverride, resolvePackageJsonPath
|
|
|
105540
105553
|
const platformKey = `${process.platform}-${process.arch === "x64" ? "x64" : process.arch}`;
|
|
105541
105554
|
try {
|
|
105542
105555
|
const packageDir = baseDirOverride ?? dirname31(resolvePackageJsonPath());
|
|
105543
|
-
const vendorPath =
|
|
105556
|
+
const vendorPath = join83(packageDir, "vendor", platformKey, binaryName);
|
|
105544
105557
|
if (existsSync53(vendorPath))
|
|
105545
105558
|
return vendorPath;
|
|
105546
|
-
const binPath =
|
|
105559
|
+
const binPath = join83(packageDir, "bin", binaryName);
|
|
105547
105560
|
if (existsSync53(binPath))
|
|
105548
105561
|
return binPath;
|
|
105549
105562
|
} catch (error) {
|
|
@@ -105919,13 +105932,13 @@ function getInstalledLspServers(options = {}) {
|
|
|
105919
105932
|
init_shared();
|
|
105920
105933
|
import { existsSync as existsSync55, readFileSync as readFileSync35 } from "node:fs";
|
|
105921
105934
|
import { homedir as homedir20 } from "node:os";
|
|
105922
|
-
import { join as
|
|
105935
|
+
import { join as join84 } from "node:path";
|
|
105923
105936
|
var BUILTIN_MCP_SERVERS = ["websearch", "context7", "grep_app", "lsp"];
|
|
105924
105937
|
function getMcpConfigPaths() {
|
|
105925
105938
|
return [
|
|
105926
|
-
|
|
105927
|
-
|
|
105928
|
-
|
|
105939
|
+
join84(homedir20(), ".claude", ".mcp.json"),
|
|
105940
|
+
join84(process.cwd(), ".mcp.json"),
|
|
105941
|
+
join84(process.cwd(), ".claude", ".mcp.json")
|
|
105929
105942
|
];
|
|
105930
105943
|
}
|
|
105931
105944
|
function loadUserMcpConfig() {
|
|
@@ -106207,7 +106220,7 @@ init_src();
|
|
|
106207
106220
|
import { existsSync as existsSync57 } from "node:fs";
|
|
106208
106221
|
import { lstat as lstat16, readdir as readdir14, readFile as readFile28 } from "node:fs/promises";
|
|
106209
106222
|
import { homedir as homedir22 } from "node:os";
|
|
106210
|
-
import { basename as basename11, join as
|
|
106223
|
+
import { basename as basename11, join as join85, resolve as resolve23 } from "node:path";
|
|
106211
106224
|
// packages/omo-opencode/package.json
|
|
106212
106225
|
var package_default3 = {
|
|
106213
106226
|
name: "@oh-my-opencode/omo-opencode",
|
|
@@ -106219,6 +106232,10 @@ var package_default3 = {
|
|
|
106219
106232
|
"./config-migration": {
|
|
106220
106233
|
types: "./src/config-migration/index.ts",
|
|
106221
106234
|
import: "./src/config-migration/index.ts"
|
|
106235
|
+
},
|
|
106236
|
+
"./binary-downloader": {
|
|
106237
|
+
types: "./src/shared/binary-downloader.ts",
|
|
106238
|
+
import: "./src/shared/binary-downloader.ts"
|
|
106222
106239
|
}
|
|
106223
106240
|
},
|
|
106224
106241
|
scripts: {
|
|
@@ -106273,13 +106290,13 @@ var CODEX_BIN_NAMES = [
|
|
|
106273
106290
|
"omo-git-bash-hook"
|
|
106274
106291
|
];
|
|
106275
106292
|
async function gatherCodexSummary(deps = {}) {
|
|
106276
|
-
const codexHome = resolve23(deps.codexHome ?? process.env.CODEX_HOME ??
|
|
106293
|
+
const codexHome = resolve23(deps.codexHome ?? process.env.CODEX_HOME ?? join85(homedir22(), ".codex"));
|
|
106277
106294
|
const binDir = resolveCodexInstallerBinDir({ binDir: deps.binDir, codexHome, env: process.env });
|
|
106278
106295
|
const detection = await (deps.detectCodexInstallation ?? detectCodexInstallation)();
|
|
106279
106296
|
const pluginRoot = await resolveInstalledPluginRoot(codexHome);
|
|
106280
|
-
const manifest = pluginRoot === null ? null : await readJson(
|
|
106281
|
-
const installSnapshot = pluginRoot === null ? null : await readJson(
|
|
106282
|
-
const configPath =
|
|
106297
|
+
const manifest = pluginRoot === null ? null : await readJson(join85(pluginRoot, ".codex-plugin", "plugin.json"));
|
|
106298
|
+
const installSnapshot = pluginRoot === null ? null : await readJson(join85(pluginRoot, "lazycodex-install.json"));
|
|
106299
|
+
const configPath = join85(codexHome, "config.toml");
|
|
106283
106300
|
const pluginVersion = stringField(manifest, "version");
|
|
106284
106301
|
return {
|
|
106285
106302
|
codexPath: detection.found && "path" in detection ? detection.path : null,
|
|
@@ -106336,7 +106353,7 @@ function buildCodexIssues(summary) {
|
|
|
106336
106353
|
if (summary.pluginRoot === null) {
|
|
106337
106354
|
issues.push({
|
|
106338
106355
|
title: "OMO Codex plugin is not installed",
|
|
106339
|
-
description: `Expected cached plugin at ${
|
|
106356
|
+
description: `Expected cached plugin at ${join85("plugins", "cache", MARKETPLACE_NAME, PLUGIN_NAME2, DEFAULT_PLUGIN_VERSION)} under CODEX_HOME.`,
|
|
106340
106357
|
fix: "Run: npx lazycodex-ai install",
|
|
106341
106358
|
severity: "error",
|
|
106342
106359
|
affects: ["plugin loading"]
|
|
@@ -106401,12 +106418,12 @@ function buildCodexIssues(summary) {
|
|
|
106401
106418
|
return issues;
|
|
106402
106419
|
}
|
|
106403
106420
|
async function resolveInstalledPluginRoot(codexHome) {
|
|
106404
|
-
const pluginRoot =
|
|
106421
|
+
const pluginRoot = join85(codexHome, "plugins", "cache", MARKETPLACE_NAME, PLUGIN_NAME2);
|
|
106405
106422
|
if (!existsSync57(pluginRoot))
|
|
106406
106423
|
return null;
|
|
106407
106424
|
const versions = await readdir14(pluginRoot, { withFileTypes: true });
|
|
106408
106425
|
const candidates = versions.filter((entry) => entry.isDirectory()).map((entry) => entry.name).sort(compareVersionsDescending);
|
|
106409
|
-
return candidates.length === 0 ? null :
|
|
106426
|
+
return candidates.length === 0 ? null : join85(pluginRoot, candidates[0] ?? DEFAULT_PLUGIN_VERSION);
|
|
106410
106427
|
}
|
|
106411
106428
|
async function readCodexConfigSummary(configPath) {
|
|
106412
106429
|
if (!existsSync57(configPath)) {
|
|
@@ -106434,13 +106451,13 @@ async function readCodexConfigSummary(configPath) {
|
|
|
106434
106451
|
async function readLinkedBins(binDir) {
|
|
106435
106452
|
const linked = [];
|
|
106436
106453
|
for (const name of CODEX_BIN_NAMES) {
|
|
106437
|
-
if (await pathExists2(
|
|
106454
|
+
if (await pathExists2(join85(binDir, process.platform === "win32" ? `${name}.cmd` : name)))
|
|
106438
106455
|
linked.push(name);
|
|
106439
106456
|
}
|
|
106440
106457
|
return linked;
|
|
106441
106458
|
}
|
|
106442
106459
|
async function readLinkedAgents(codexHome) {
|
|
106443
|
-
const agentsDir =
|
|
106460
|
+
const agentsDir = join85(codexHome, "agents");
|
|
106444
106461
|
if (!existsSync57(agentsDir))
|
|
106445
106462
|
return [];
|
|
106446
106463
|
const entries = await readdir14(agentsDir, { withFileTypes: true });
|
|
@@ -106574,7 +106591,7 @@ function resolveLatestVersion(input) {
|
|
|
106574
106591
|
init_src();
|
|
106575
106592
|
import { readdir as readdir15, readFile as readFile29, stat as stat7 } from "node:fs/promises";
|
|
106576
106593
|
import { homedir as homedir23 } from "node:os";
|
|
106577
|
-
import { dirname as dirname33, isAbsolute as isAbsolute13, join as
|
|
106594
|
+
import { dirname as dirname33, isAbsolute as isAbsolute13, join as join86, relative as relative9, resolve as resolve24, sep as sep9 } from "node:path";
|
|
106578
106595
|
var CODEX_COMPONENTS_CHECK_ID = "codex-components";
|
|
106579
106596
|
var CODEX_COMPONENTS_CHECK_NAME = "codex-components";
|
|
106580
106597
|
var PLUGIN_DATA_DIR_NAME = "omo-sisyphuslabs";
|
|
@@ -106584,7 +106601,7 @@ async function checkCodexComponents(deps = {}) {
|
|
|
106584
106601
|
const env = deps.env ?? process.env;
|
|
106585
106602
|
const platform = deps.platform ?? process.platform;
|
|
106586
106603
|
const arch = deps.arch ?? process.arch;
|
|
106587
|
-
const codexHome = resolve24(deps.codexHome ?? env["CODEX_HOME"] ??
|
|
106604
|
+
const codexHome = resolve24(deps.codexHome ?? env["CODEX_HOME"] ?? join86(homedir23(), ".codex"));
|
|
106588
106605
|
const summary = await gatherCodexSummary({ ...deps, codexHome });
|
|
106589
106606
|
if (summary.pluginRoot === null) {
|
|
106590
106607
|
return {
|
|
@@ -106609,7 +106626,7 @@ async function checkCodexComponents(deps = {}) {
|
|
|
106609
106626
|
});
|
|
106610
106627
|
}
|
|
106611
106628
|
const runtimeSgDir = runtimeSgDirectory(codexHome, platform, arch);
|
|
106612
|
-
const runtimeSgPath =
|
|
106629
|
+
const runtimeSgPath = join86(runtimeSgDir, sgBinaryName(platform));
|
|
106613
106630
|
const sg = findSgBinarySync({
|
|
106614
106631
|
arch,
|
|
106615
106632
|
env,
|
|
@@ -106646,12 +106663,12 @@ async function auditBundleTargets(pluginRoot) {
|
|
|
106646
106663
|
let referencedCount = 0;
|
|
106647
106664
|
for (const manifestPath of await findManifestPaths(pluginRoot, ".mcp.json")) {
|
|
106648
106665
|
const manifest = await readJson2(manifestPath);
|
|
106649
|
-
if (manifest === null || !
|
|
106666
|
+
if (manifest === null || !isRecord18(manifest["mcpServers"]))
|
|
106650
106667
|
continue;
|
|
106651
106668
|
const manifestRoot = dirname33(manifestPath);
|
|
106652
106669
|
const isRootManifest = resolve24(manifestRoot) === resolve24(pluginRoot);
|
|
106653
106670
|
for (const server of Object.values(manifest["mcpServers"])) {
|
|
106654
|
-
if (!
|
|
106671
|
+
if (!isRecord18(server) || !Array.isArray(server["args"]))
|
|
106655
106672
|
continue;
|
|
106656
106673
|
for (const arg of server["args"]) {
|
|
106657
106674
|
if (typeof arg !== "string" || !isPluginRuntimePathArg(arg))
|
|
@@ -106721,7 +106738,7 @@ async function findManifestPaths(root, manifestName) {
|
|
|
106721
106738
|
for (const entry of entries) {
|
|
106722
106739
|
if (entry.name === "node_modules" || entry.name === ".git")
|
|
106723
106740
|
continue;
|
|
106724
|
-
const entryPath =
|
|
106741
|
+
const entryPath = join86(root, entry.name);
|
|
106725
106742
|
if (entry.isDirectory()) {
|
|
106726
106743
|
paths.push(...await findManifestPaths(entryPath, manifestName));
|
|
106727
106744
|
continue;
|
|
@@ -106737,7 +106754,7 @@ function collectHookCommands(value, commands) {
|
|
|
106737
106754
|
collectHookCommands(item, commands);
|
|
106738
106755
|
return;
|
|
106739
106756
|
}
|
|
106740
|
-
if (!
|
|
106757
|
+
if (!isRecord18(value))
|
|
106741
106758
|
return;
|
|
106742
106759
|
if (value["type"] === "command") {
|
|
106743
106760
|
if (typeof value["command"] === "string")
|
|
@@ -106765,18 +106782,18 @@ function isPluginRuntimePathArg(arg) {
|
|
|
106765
106782
|
return normalized.endsWith(".js") && normalized.includes("/dist/") && (normalized.startsWith("./") || normalized.startsWith("../") || normalized.startsWith("components/") || normalized.startsWith("/") || isAbsolute13(arg));
|
|
106766
106783
|
}
|
|
106767
106784
|
function runtimeSgDirectory(codexHome, platform, arch) {
|
|
106768
|
-
return
|
|
106785
|
+
return join86(codexHome, "runtime", "ast-grep", runtimeSlug(platform, arch));
|
|
106769
106786
|
}
|
|
106770
106787
|
function describeSgSource(sgPath, env, runtimeSgDir, platform) {
|
|
106771
106788
|
const override = env[SG_PATH_ENV_KEY]?.trim();
|
|
106772
106789
|
if (override !== undefined && override.length > 0 && sgPath === override)
|
|
106773
106790
|
return `env override ${SG_PATH_ENV_KEY}`;
|
|
106774
|
-
if (sgPath ===
|
|
106791
|
+
if (sgPath === join86(runtimeSgDir, sgBinaryName(platform)))
|
|
106775
106792
|
return "runtime dir";
|
|
106776
106793
|
return "PATH";
|
|
106777
106794
|
}
|
|
106778
106795
|
async function readBootstrapStateSummary(codexHome) {
|
|
106779
|
-
const statePath =
|
|
106796
|
+
const statePath = join86(codexHome, "plugins", "data", PLUGIN_DATA_DIR_NAME, "bootstrap", "state.json");
|
|
106780
106797
|
const raw = await readJson2(statePath);
|
|
106781
106798
|
if (raw === null)
|
|
106782
106799
|
return null;
|
|
@@ -106792,7 +106809,7 @@ function parseDegradedEntries(value) {
|
|
|
106792
106809
|
return [];
|
|
106793
106810
|
const entries = [];
|
|
106794
106811
|
for (const item of value) {
|
|
106795
|
-
if (!
|
|
106812
|
+
if (!isRecord18(item))
|
|
106796
106813
|
continue;
|
|
106797
106814
|
if (typeof item["component"] !== "string" || typeof item["reason"] !== "string")
|
|
106798
106815
|
continue;
|
|
@@ -106826,7 +106843,7 @@ function degradedDetailLines(entries) {
|
|
|
106826
106843
|
async function readJson2(path) {
|
|
106827
106844
|
try {
|
|
106828
106845
|
const parsed = JSON.parse(await readFile29(path, "utf8"));
|
|
106829
|
-
return
|
|
106846
|
+
return isRecord18(parsed) ? parsed : null;
|
|
106830
106847
|
} catch (error) {
|
|
106831
106848
|
if (error instanceof Error)
|
|
106832
106849
|
return null;
|
|
@@ -106847,7 +106864,7 @@ function normalizeRelative(root, target) {
|
|
|
106847
106864
|
function normalizePathSeparators(path) {
|
|
106848
106865
|
return path.split("\\").join("/");
|
|
106849
106866
|
}
|
|
106850
|
-
function
|
|
106867
|
+
function isRecord18(value) {
|
|
106851
106868
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
106852
106869
|
}
|
|
106853
106870
|
|
|
@@ -106855,16 +106872,16 @@ function isRecord17(value) {
|
|
|
106855
106872
|
import { existsSync as existsSync58 } from "node:fs";
|
|
106856
106873
|
import { readFile as readFile30 } from "node:fs/promises";
|
|
106857
106874
|
import { homedir as homedir24 } from "node:os";
|
|
106858
|
-
import { join as
|
|
106875
|
+
import { join as join87, resolve as resolve25 } from "node:path";
|
|
106859
106876
|
var RUNTIME_WRAPPER_MARKER2 = "OMO_GENERATED_RUNTIME_WRAPPER";
|
|
106860
106877
|
var CHECK_NAME = "codex-runtime-wrapper";
|
|
106861
106878
|
var REINSTALL_COMMAND = "npx --yes lazycodex-ai@latest install --no-tui";
|
|
106862
106879
|
async function checkCodexRuntimeWrapper(deps = {}) {
|
|
106863
|
-
const codexHome = resolve25(deps.codexHome ?? process.env.CODEX_HOME ??
|
|
106880
|
+
const codexHome = resolve25(deps.codexHome ?? process.env.CODEX_HOME ?? join87(homedir24(), ".codex"));
|
|
106864
106881
|
const binDir = resolveCodexInstallerBinDir({ binDir: deps.binDir, codexHome, env: process.env });
|
|
106865
106882
|
const platform = deps.platform ?? process.platform;
|
|
106866
|
-
const wrapperPath =
|
|
106867
|
-
const legacyWrapperPath =
|
|
106883
|
+
const wrapperPath = join87(binDir, platform === "win32" ? "omo-agent-toolkit.cmd" : "omo-agent-toolkit");
|
|
106884
|
+
const legacyWrapperPath = join87(binDir, platform === "win32" ? "omo.cmd" : "omo");
|
|
106868
106885
|
const [wrapper, legacyWrapper] = await Promise.all([readRuntimeWrapper(wrapperPath), readRuntimeWrapper(legacyWrapperPath)]);
|
|
106869
106886
|
const issues = [];
|
|
106870
106887
|
if (wrapper?.includes(RUNTIME_WRAPPER_MARKER2) === true) {
|
|
@@ -107400,12 +107417,12 @@ import {
|
|
|
107400
107417
|
unlinkSync as unlinkSync9,
|
|
107401
107418
|
writeFileSync as writeFileSync12
|
|
107402
107419
|
} from "node:fs";
|
|
107403
|
-
import { basename as basename12, dirname as dirname34, join as
|
|
107420
|
+
import { basename as basename12, dirname as dirname34, join as join90 } from "node:path";
|
|
107404
107421
|
|
|
107405
107422
|
// packages/mcp-client-core/src/config-dir.ts
|
|
107406
107423
|
import { existsSync as existsSync59, realpathSync as realpathSync8 } from "node:fs";
|
|
107407
107424
|
import { homedir as homedir25 } from "node:os";
|
|
107408
|
-
import { join as
|
|
107425
|
+
import { join as join88, resolve as resolve26 } from "node:path";
|
|
107409
107426
|
function resolveConfigPath2(pathValue) {
|
|
107410
107427
|
const resolvedPath = resolve26(pathValue);
|
|
107411
107428
|
if (!existsSync59(resolvedPath))
|
|
@@ -107423,13 +107440,13 @@ function getOpenCodeCliConfigDir(env = process.env) {
|
|
|
107423
107440
|
if (customConfigDir) {
|
|
107424
107441
|
return resolveConfigPath2(customConfigDir);
|
|
107425
107442
|
}
|
|
107426
|
-
const xdgConfigDir = env["XDG_CONFIG_HOME"]?.trim() ||
|
|
107427
|
-
return resolveConfigPath2(
|
|
107443
|
+
const xdgConfigDir = env["XDG_CONFIG_HOME"]?.trim() || join88(homedir25(), ".config");
|
|
107444
|
+
return resolveConfigPath2(join88(xdgConfigDir, "opencode"));
|
|
107428
107445
|
}
|
|
107429
107446
|
|
|
107430
107447
|
// packages/mcp-client-core/src/mcp-oauth/storage-index.ts
|
|
107431
107448
|
import { chmodSync as chmodSync4, existsSync as existsSync60, readFileSync as readFileSync37, renameSync as renameSync6, writeFileSync as writeFileSync11 } from "node:fs";
|
|
107432
|
-
import { join as
|
|
107449
|
+
import { join as join89 } from "node:path";
|
|
107433
107450
|
var INDEX_FILE_NAME = "index.json";
|
|
107434
107451
|
function isTokenIndex(value) {
|
|
107435
107452
|
if (typeof value !== "object" || value === null || Array.isArray(value))
|
|
@@ -107437,7 +107454,7 @@ function isTokenIndex(value) {
|
|
|
107437
107454
|
return Object.values(value).every((entry) => typeof entry === "string");
|
|
107438
107455
|
}
|
|
107439
107456
|
function getIndexPath(storageDir) {
|
|
107440
|
-
return
|
|
107457
|
+
return join89(storageDir, INDEX_FILE_NAME);
|
|
107441
107458
|
}
|
|
107442
107459
|
function readTokenIndex(storageDir) {
|
|
107443
107460
|
const indexPath = getIndexPath(storageDir);
|
|
@@ -107481,16 +107498,16 @@ function deleteTokenIndexEntry(storageDir, hash) {
|
|
|
107481
107498
|
var STORAGE_DIR_NAME = "mcp-oauth";
|
|
107482
107499
|
var LEGACY_STORAGE_FILE_NAME = "mcp-oauth.json";
|
|
107483
107500
|
function getMcpOauthStorageDir() {
|
|
107484
|
-
return
|
|
107501
|
+
return join90(getOpenCodeCliConfigDir(), STORAGE_DIR_NAME);
|
|
107485
107502
|
}
|
|
107486
107503
|
function getMcpOauthServerHash(serverHost, resource) {
|
|
107487
107504
|
return createHash7("sha256").update(buildKey(serverHost, resource)).digest("hex").slice(0, 32);
|
|
107488
107505
|
}
|
|
107489
107506
|
function getMcpOauthStoragePath(serverHost, resource) {
|
|
107490
|
-
return
|
|
107507
|
+
return join90(getMcpOauthStorageDir(), `${getMcpOauthServerHash(serverHost, resource)}.json`);
|
|
107491
107508
|
}
|
|
107492
107509
|
function getLegacyStoragePath() {
|
|
107493
|
-
return
|
|
107510
|
+
return join90(getOpenCodeCliConfigDir(), LEGACY_STORAGE_FILE_NAME);
|
|
107494
107511
|
}
|
|
107495
107512
|
function normalizeHost2(serverHost) {
|
|
107496
107513
|
let host = serverHost.trim();
|
|
@@ -107669,7 +107686,7 @@ function listTokensByHost(serverHost) {
|
|
|
107669
107686
|
for (const [hash, indexedKey] of Object.entries(index)) {
|
|
107670
107687
|
if (!indexedKey.startsWith(prefix))
|
|
107671
107688
|
continue;
|
|
107672
|
-
const indexedToken = readTokenFile(
|
|
107689
|
+
const indexedToken = readTokenFile(join90(getMcpOauthStorageDir(), `${hash}.json`));
|
|
107673
107690
|
if (indexedToken)
|
|
107674
107691
|
result[indexedKey] = indexedToken;
|
|
107675
107692
|
}
|
|
@@ -107684,7 +107701,7 @@ function listAllTokens() {
|
|
|
107684
107701
|
for (const entry of readdirSync12(dir, { withFileTypes: true })) {
|
|
107685
107702
|
if (!entry.isFile() || !entry.name.endsWith(".json") || entry.name === "index.json")
|
|
107686
107703
|
continue;
|
|
107687
|
-
const token = readTokenFile(
|
|
107704
|
+
const token = readTokenFile(join90(dir, entry.name));
|
|
107688
107705
|
const hash = basename12(entry.name, ".json");
|
|
107689
107706
|
if (token)
|
|
107690
107707
|
result[index[hash] ?? hash] = token;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lazycodex-ai",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.88",
|
|
4
4
|
"description": "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/bootstrap/dist/cli.js\" hook session-start",
|
|
9
9
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\bootstrap.ps1\"",
|
|
10
10
|
"timeout": 30,
|
|
11
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
11
|
+
"statusMessage": "(OmO 5.0.0-beta.88) Checking Bootstrap Provisioning"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sisyphuslabs/codex-bootstrap",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.88",
|
|
4
4
|
"description": "Codex SessionStart bootstrap component that provisions LazyCodex runtime dependencies from a detached worker.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"private": true,
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "command",
|
|
9
9
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook pre-tool-use",
|
|
10
10
|
"timeout": 5,
|
|
11
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
11
|
+
"statusMessage": "(OmO 5.0.0-beta.88) Recommending Git Bash MCP"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"type": "command",
|
|
21
21
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
|
|
22
22
|
"timeout": 5,
|
|
23
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
23
|
+
"statusMessage": "(OmO 5.0.0-beta.88) Resetting Git Bash MCP Reminder"
|
|
24
24
|
}
|
|
25
25
|
]
|
|
26
26
|
}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "command",
|
|
9
9
|
"command": "node \"${PLUGIN_ROOT}/components/lazycodex-executor-verify/dist/cli.js\" hook subagent-stop",
|
|
10
10
|
"timeout": 10,
|
|
11
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
11
|
+
"statusMessage": "(OmO 5.0.0-beta.88) Verifying LazyCodex Executor Evidence"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code-yeongyu/codex-lazycodex-executor-verify",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.88",
|
|
4
4
|
"description": "Codex SubagentStop evidence verifier for LazyCodex executor completions.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "npm@11.12.1",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"version": "5.0.0-beta.
|
|
4
|
-
"inputDigest": "sha256:
|
|
3
|
+
"version": "5.0.0-beta.88",
|
|
4
|
+
"inputDigest": "sha256:ebe9028d50ae97761a5b14dcb9e372ffead6731df3fdbed1beb944a71f9f0bb2",
|
|
5
5
|
"outputs": [
|
|
6
6
|
{
|
|
7
7
|
"path": "cli.d.ts",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "command",
|
|
9
9
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
|
|
10
10
|
"timeout": 60,
|
|
11
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
11
|
+
"statusMessage": "(OmO 5.0.0-beta.88) Checking LSP Diagnostics"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"type": "command",
|
|
22
22
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
|
|
23
23
|
"timeout": 5,
|
|
24
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
24
|
+
"statusMessage": "(OmO 5.0.0-beta.88) Resetting LSP Diagnostics Cache"
|
|
25
25
|
}
|
|
26
26
|
]
|
|
27
27
|
}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook session-start",
|
|
9
9
|
"timeout": 10,
|
|
10
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
10
|
+
"statusMessage": "(OmO 5.0.0-beta.88) Loading Project Rules"
|
|
11
11
|
}
|
|
12
12
|
]
|
|
13
13
|
}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"type": "command",
|
|
20
20
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook user-prompt-submit",
|
|
21
21
|
"timeout": 10,
|
|
22
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
22
|
+
"statusMessage": "(OmO 5.0.0-beta.88) Loading Project Rules"
|
|
23
23
|
}
|
|
24
24
|
]
|
|
25
25
|
}
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"type": "command",
|
|
33
33
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
|
|
34
34
|
"timeout": 10,
|
|
35
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
35
|
+
"statusMessage": "(OmO 5.0.0-beta.88) Matching Project Rules"
|
|
36
36
|
}
|
|
37
37
|
]
|
|
38
38
|
}
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"type": "command",
|
|
46
46
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
|
|
47
47
|
"timeout": 10,
|
|
48
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
48
|
+
"statusMessage": "(OmO 5.0.0-beta.88) Resetting Project Rule Cache"
|
|
49
49
|
}
|
|
50
50
|
]
|
|
51
51
|
}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "command",
|
|
9
9
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
|
|
10
10
|
"timeout": 10,
|
|
11
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
11
|
+
"statusMessage": "(OmO 5.0.0-beta.88) Checking Thread Title Hygiene"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|