oh-my-opencode 5.0.0-beta.10 → 5.0.0-beta.12
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 +34 -86
- package/dist/cli-node/index.js +34 -86
- package/dist/index.js +80 -93
- package/dist/tools/delegate-task/builtin-categories.d.ts +1 -0
- package/dist/tools/delegate-task/builtin-category-definition.d.ts +1 -0
- package/dist/tools/delegate-task/tool-description.d.ts +3 -1
- package/dist/tui.js +19 -71
- package/package.json +14 -14
- package/packages/lsp-core/src/lsp/client-wrapper-outside-cwd.test.ts +78 -0
- package/packages/lsp-core/src/lsp/client-wrapper.test.ts +6 -6
- package/packages/lsp-core/src/lsp/client-wrapper.ts +5 -6
- package/packages/lsp-core/src/lsp/outside-context-workspace.ts +33 -0
- package/packages/lsp-core/src/lsp/workspace-markers.ts +1 -0
- package/packages/lsp-daemon/dist/cli.js +94 -59
- package/packages/lsp-daemon/dist/client.js +72 -37
- package/packages/lsp-daemon/dist/index.js +78 -43
- package/packages/lsp-tools-mcp/dist/cli.js +68 -33
- package/packages/lsp-tools-mcp/dist/mcp.js +68 -33
- package/packages/lsp-tools-mcp/dist/tools.js +68 -33
- 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/codegraph/dist/cli.js +9 -0
- package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +9 -0
- package/packages/omo-codex/plugin/components/codegraph/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 +3 -3
- package/packages/omo-codex/plugin/components/lsp/dist/cli.js +83 -54
- 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/start-work-continuation/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/start-work-continuation/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-loop/hooks/hooks.json +4 -4
- 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-codegraph-init-guidance.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/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-checking-codegraph-bootstrap.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-start-work-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-checking-start-work-continuation.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 +13 -13
- package/packages/omo-codex/plugin/package.json +1 -1
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +2 -2
|
@@ -8,9 +8,9 @@ import { argv, execPath as execPath2, stderr } from "node:process";
|
|
|
8
8
|
import { stdin as processStdin } from "node:process";
|
|
9
9
|
|
|
10
10
|
// src/codex-hook.ts
|
|
11
|
-
import { readFileSync as readFileSync9, realpathSync as
|
|
11
|
+
import { readFileSync as readFileSync9, realpathSync as realpathSync8 } from "node:fs";
|
|
12
12
|
import { homedir as homedir3 } from "node:os";
|
|
13
|
-
import { join as
|
|
13
|
+
import { join as join12, resolve as resolve11 } from "node:path";
|
|
14
14
|
|
|
15
15
|
// ../../../../lsp-daemon/dist/client.js
|
|
16
16
|
import { connect } from "node:net";
|
|
@@ -42,8 +42,8 @@ import * as path from "node:path";
|
|
|
42
42
|
import { fileURLToPath } from "node:url";
|
|
43
43
|
import { statSync as statSync2 } from "node:fs";
|
|
44
44
|
import { isAbsolute as isAbsolute2 } from "node:path";
|
|
45
|
-
import { existsSync as
|
|
46
|
-
import { basename as basename3, dirname as
|
|
45
|
+
import { existsSync as existsSync11, realpathSync as realpathSync5, statSync as statSync4 } from "node:fs";
|
|
46
|
+
import { basename as basename3, dirname as dirname9, join as join5, resolve as resolve7 } from "node:path";
|
|
47
47
|
import { basename as basename2, extname } from "node:path";
|
|
48
48
|
import { resolve as resolve6 } from "node:path";
|
|
49
49
|
import { pathToFileURL as pathToFileURL3 } from "node:url";
|
|
@@ -62,16 +62,18 @@ import { createHash as createHash2 } from "node:crypto";
|
|
|
62
62
|
import { dirname as dirname5, relative as relative4, resolve as resolve4 } from "node:path";
|
|
63
63
|
import { existsSync as existsSync6, lstatSync as lstatSync4, readdirSync as readdirSync2 } from "node:fs";
|
|
64
64
|
import { dirname as dirname6, resolve as resolve5 } from "node:path";
|
|
65
|
-
import { existsSync as existsSync7,
|
|
66
|
-
import { dirname as dirname7 } from "node:path";
|
|
67
|
-
import { existsSync as existsSync8, readFileSync as
|
|
68
|
-
import {
|
|
69
|
-
import {
|
|
70
|
-
import { existsSync as
|
|
71
|
-
import {
|
|
65
|
+
import { existsSync as existsSync7, realpathSync as realpathSync4 } from "node:fs";
|
|
66
|
+
import { dirname as dirname7, join as join3 } from "node:path";
|
|
67
|
+
import { existsSync as existsSync8, mkdirSync as mkdirSync3, readFileSync as readFileSync4, renameSync as renameSync2, writeFileSync as writeFileSync2 } from "node:fs";
|
|
68
|
+
import { dirname as dirname8 } from "node:path";
|
|
69
|
+
import { existsSync as existsSync9, readFileSync as readFileSync5 } from "node:fs";
|
|
70
|
+
import { existsSync as existsSync10 } from "node:fs";
|
|
71
|
+
import { delimiter as delimiter3, join as join4 } from "node:path";
|
|
72
|
+
import { existsSync as existsSync12, lstatSync as lstatSync5, readdirSync as readdirSync3 } from "node:fs";
|
|
73
|
+
import { join as join6, resolve as resolve8 } from "node:path";
|
|
72
74
|
import { fileURLToPath as fileURLToPath3 } from "node:url";
|
|
73
75
|
import { lstatSync as lstatSync6, readdirSync as readdirSync4 } from "node:fs";
|
|
74
|
-
import { join as
|
|
76
|
+
import { join as join7 } from "node:path";
|
|
75
77
|
import { statSync as statSync5 } from "node:fs";
|
|
76
78
|
import { isAbsolute as isAbsolute5 } from "node:path";
|
|
77
79
|
|
|
@@ -3606,12 +3608,41 @@ function getLspManager() {
|
|
|
3606
3608
|
}
|
|
3607
3609
|
return _defaultInstance;
|
|
3608
3610
|
}
|
|
3611
|
+
var WORKSPACE_MARKERS = [".git", "package.json", "pyproject.toml", "Cargo.toml", "go.mod", "pom.xml", "build.gradle"];
|
|
3612
|
+
function findWorkspaceRootOutsideContext(directory) {
|
|
3613
|
+
const marked = nearestMarkedAncestor(directory);
|
|
3614
|
+
if (marked !== undefined)
|
|
3615
|
+
return marked;
|
|
3616
|
+
return realpathSync4(nearestExistingAncestor(directory));
|
|
3617
|
+
}
|
|
3618
|
+
function nearestMarkedAncestor(directory) {
|
|
3619
|
+
let current = directory;
|
|
3620
|
+
for (;; ) {
|
|
3621
|
+
if (existsSync7(current) && WORKSPACE_MARKERS.some((marker) => existsSync7(join3(current, marker)))) {
|
|
3622
|
+
return realpathSync4(current);
|
|
3623
|
+
}
|
|
3624
|
+
const parent = dirname7(current);
|
|
3625
|
+
if (parent === current)
|
|
3626
|
+
return;
|
|
3627
|
+
current = parent;
|
|
3628
|
+
}
|
|
3629
|
+
}
|
|
3630
|
+
function nearestExistingAncestor(directory) {
|
|
3631
|
+
let current = directory;
|
|
3632
|
+
while (!existsSync7(current)) {
|
|
3633
|
+
const parent = dirname7(current);
|
|
3634
|
+
if (parent === current)
|
|
3635
|
+
return current;
|
|
3636
|
+
current = parent;
|
|
3637
|
+
}
|
|
3638
|
+
return current;
|
|
3639
|
+
}
|
|
3609
3640
|
function getInstallDecisionsPath() {
|
|
3610
3641
|
return lspRequestContext().installDecisionsPath;
|
|
3611
3642
|
}
|
|
3612
3643
|
function loadInstallDecisions() {
|
|
3613
3644
|
const path2 = getInstallDecisionsPath();
|
|
3614
|
-
if (!
|
|
3645
|
+
if (!existsSync8(path2))
|
|
3615
3646
|
return {};
|
|
3616
3647
|
try {
|
|
3617
3648
|
const parsed = JSON.parse(readFileSync4(path2, "utf8"));
|
|
@@ -3633,7 +3664,7 @@ function isInstallDecision(value) {
|
|
|
3633
3664
|
}
|
|
3634
3665
|
function writeInstallDecisions(decisions) {
|
|
3635
3666
|
const path2 = getInstallDecisionsPath();
|
|
3636
|
-
mkdirSync3(
|
|
3667
|
+
mkdirSync3(dirname8(path2), { recursive: true });
|
|
3637
3668
|
const tmpPath = `${path2}.tmp`;
|
|
3638
3669
|
writeFileSync2(tmpPath, `${JSON.stringify(decisions, null, 2)}
|
|
3639
3670
|
`, "utf8");
|
|
@@ -3802,7 +3833,7 @@ function getUserConfigPath() {
|
|
|
3802
3833
|
return lspRequestContext().userConfigPath;
|
|
3803
3834
|
}
|
|
3804
3835
|
function loadJsonFile(path2) {
|
|
3805
|
-
if (!
|
|
3836
|
+
if (!existsSync9(path2))
|
|
3806
3837
|
return null;
|
|
3807
3838
|
try {
|
|
3808
3839
|
const parsed = JSON.parse(readFileSync5(path2, "utf-8"));
|
|
@@ -3995,7 +4026,7 @@ function isServerInstalled(command, _workingDirectory) {
|
|
|
3995
4026
|
if (!cmd)
|
|
3996
4027
|
return false;
|
|
3997
4028
|
if (cmd.includes("/") || cmd.includes("\\")) {
|
|
3998
|
-
if (
|
|
4029
|
+
if (existsSync10(cmd))
|
|
3999
4030
|
return true;
|
|
4000
4031
|
}
|
|
4001
4032
|
const isWindows = process.platform === "win32";
|
|
@@ -4016,7 +4047,7 @@ function isServerInstalled(command, _workingDirectory) {
|
|
|
4016
4047
|
const paths = pathEnv.split(delimiter3);
|
|
4017
4048
|
for (const p of paths) {
|
|
4018
4049
|
for (const suffix of exts) {
|
|
4019
|
-
if (
|
|
4050
|
+
if (existsSync10(join4(p, cmd + suffix))) {
|
|
4020
4051
|
return true;
|
|
4021
4052
|
}
|
|
4022
4053
|
}
|
|
@@ -4108,7 +4139,6 @@ function getAllServers() {
|
|
|
4108
4139
|
}
|
|
4109
4140
|
return result;
|
|
4110
4141
|
}
|
|
4111
|
-
var WORKSPACE_MARKERS = [".git", "package.json", "pyproject.toml", "Cargo.toml", "go.mod", "pom.xml", "build.gradle"];
|
|
4112
4142
|
function isDirectoryPath(filePath) {
|
|
4113
4143
|
try {
|
|
4114
4144
|
return statSync4(filePath).isDirectory();
|
|
@@ -4121,21 +4151,23 @@ function findWorkspaceRoot(filePath) {
|
|
|
4121
4151
|
const abs = resolveReadablePathInsideContext(filePath);
|
|
4122
4152
|
let dir = abs;
|
|
4123
4153
|
if (!isDirectoryPath(dir)) {
|
|
4124
|
-
dir =
|
|
4154
|
+
dir = dirname9(dir);
|
|
4125
4155
|
}
|
|
4156
|
+
if (!isPathInside(cwd, abs))
|
|
4157
|
+
return findWorkspaceRootOutsideContext(dir);
|
|
4126
4158
|
const fallbackRoot = nearestExistingDirectoryInsideContext(dir, cwd) ?? cwd;
|
|
4127
4159
|
while (isPathInside(cwd, dir)) {
|
|
4128
4160
|
const canonicalDir = existingDirectoryInsideContext(dir, cwd);
|
|
4129
4161
|
if (canonicalDir !== undefined) {
|
|
4130
4162
|
for (const marker of WORKSPACE_MARKERS) {
|
|
4131
|
-
if (
|
|
4163
|
+
if (existsSync11(join5(dir, marker))) {
|
|
4132
4164
|
return canonicalDir;
|
|
4133
4165
|
}
|
|
4134
4166
|
}
|
|
4135
4167
|
}
|
|
4136
4168
|
if (dir === cwd)
|
|
4137
4169
|
break;
|
|
4138
|
-
dir =
|
|
4170
|
+
dir = dirname9(dir);
|
|
4139
4171
|
}
|
|
4140
4172
|
return fallbackRoot;
|
|
4141
4173
|
}
|
|
@@ -4147,10 +4179,7 @@ function resolveReadablePathInsideContext(filePath) {
|
|
|
4147
4179
|
const rebased = rebaseThroughCanonicalAncestor(abs, cwd);
|
|
4148
4180
|
if (rebased !== undefined)
|
|
4149
4181
|
return rebased;
|
|
4150
|
-
|
|
4151
|
-
if (isPathInside(cwd, canonical))
|
|
4152
|
-
return canonical;
|
|
4153
|
-
throw new LspInvalidPathError(`LSP file path must be inside request cwd: ${filePath}`);
|
|
4182
|
+
return canonicalizeExistingOrNearestAncestor(abs);
|
|
4154
4183
|
}
|
|
4155
4184
|
function resolvePathInsideContext(filePath) {
|
|
4156
4185
|
const cwd = contextCwd();
|
|
@@ -4165,12 +4194,12 @@ function rebaseThroughCanonicalAncestor(path2, cwd) {
|
|
|
4165
4194
|
let current = path2;
|
|
4166
4195
|
const suffix = [];
|
|
4167
4196
|
while (true) {
|
|
4168
|
-
if (
|
|
4169
|
-
const canonical =
|
|
4197
|
+
if (existsSync11(current)) {
|
|
4198
|
+
const canonical = realpathSync5(current);
|
|
4170
4199
|
if (isPathInside(cwd, canonical))
|
|
4171
|
-
return suffix.length === 0 ? canonical :
|
|
4200
|
+
return suffix.length === 0 ? canonical : join5(canonical, ...suffix);
|
|
4172
4201
|
}
|
|
4173
|
-
const parent =
|
|
4202
|
+
const parent = dirname9(current);
|
|
4174
4203
|
if (parent === current)
|
|
4175
4204
|
return;
|
|
4176
4205
|
suffix.unshift(basename3(current));
|
|
@@ -4178,9 +4207,9 @@ function rebaseThroughCanonicalAncestor(path2, cwd) {
|
|
|
4178
4207
|
}
|
|
4179
4208
|
}
|
|
4180
4209
|
function existingDirectoryInsideContext(directory, cwd) {
|
|
4181
|
-
if (!
|
|
4210
|
+
if (!existsSync11(directory))
|
|
4182
4211
|
return;
|
|
4183
|
-
const canonical =
|
|
4212
|
+
const canonical = realpathSync5(directory);
|
|
4184
4213
|
if (!statSync4(canonical).isDirectory())
|
|
4185
4214
|
return;
|
|
4186
4215
|
return isPathInside(cwd, canonical) ? canonical : undefined;
|
|
@@ -4193,7 +4222,7 @@ function nearestExistingDirectoryInsideContext(directory, cwd) {
|
|
|
4193
4222
|
return canonical;
|
|
4194
4223
|
if (current === cwd)
|
|
4195
4224
|
return;
|
|
4196
|
-
current =
|
|
4225
|
+
current = dirname9(current);
|
|
4197
4226
|
}
|
|
4198
4227
|
return;
|
|
4199
4228
|
}
|
|
@@ -4433,7 +4462,7 @@ function collectFilesWithExtension(dir, extension, maxFiles) {
|
|
|
4433
4462
|
for (const entry of entries) {
|
|
4434
4463
|
if (files.length >= maxFiles)
|
|
4435
4464
|
return;
|
|
4436
|
-
const fullPath =
|
|
4465
|
+
const fullPath = join6(currentDir, entry);
|
|
4437
4466
|
let stat;
|
|
4438
4467
|
try {
|
|
4439
4468
|
stat = lstatSync5(fullPath);
|
|
@@ -4459,7 +4488,7 @@ async function aggregateDiagnosticsForDirectory(directory, extension, severity,
|
|
|
4459
4488
|
throw new LspInvalidPathError(`Extension must start with a dot (e.g., ".ts", not "${extension}"). Use ".${extension}" instead.`);
|
|
4460
4489
|
}
|
|
4461
4490
|
const absDir = resolve8(options.workspaceRoot ?? contextCwd(), directory);
|
|
4462
|
-
if (!
|
|
4491
|
+
if (!existsSync12(absDir)) {
|
|
4463
4492
|
throw new LspInvalidPathError(`Directory does not exist: ${absDir}`);
|
|
4464
4493
|
}
|
|
4465
4494
|
const serverResult = options.server === undefined ? findServerForExtension(extension) : { status: "found", server: options.server };
|
|
@@ -4560,7 +4589,7 @@ function inferExtensionFromDirectory(directory) {
|
|
|
4560
4589
|
for (const entry of entries) {
|
|
4561
4590
|
if (scanned >= MAX_SCAN_ENTRIES)
|
|
4562
4591
|
return;
|
|
4563
|
-
const fullPath =
|
|
4592
|
+
const fullPath = join7(dir, entry);
|
|
4564
4593
|
let stat;
|
|
4565
4594
|
try {
|
|
4566
4595
|
stat = lstatSync6(fullPath);
|
|
@@ -5454,8 +5483,8 @@ function extensionKey(filePath) {
|
|
|
5454
5483
|
}
|
|
5455
5484
|
// ../../../../lsp-core/src/request-context.ts
|
|
5456
5485
|
import { AsyncLocalStorage as AsyncLocalStorage2 } from "node:async_hooks";
|
|
5457
|
-
import { existsSync as
|
|
5458
|
-
import { basename as basename4, delimiter as delimiter4, dirname as dirname2, isAbsolute as isAbsolute6, join as
|
|
5486
|
+
import { existsSync as existsSync13, realpathSync as realpathSync6, statSync as statSync6 } from "node:fs";
|
|
5487
|
+
import { basename as basename4, delimiter as delimiter4, dirname as dirname2, isAbsolute as isAbsolute6, join as join8, relative as relative5, resolve as resolve9 } from "node:path";
|
|
5459
5488
|
|
|
5460
5489
|
class LspRequestContextParseError2 extends Error {
|
|
5461
5490
|
code;
|
|
@@ -5498,18 +5527,18 @@ function parseLspRequestContext2(value) {
|
|
|
5498
5527
|
}
|
|
5499
5528
|
function canonicalCwd2(cwd) {
|
|
5500
5529
|
const resolved = resolve9(cwd);
|
|
5501
|
-
if (!
|
|
5530
|
+
if (!existsSync13(resolved) || !statSync6(resolved).isDirectory()) {
|
|
5502
5531
|
throw new LspRequestContextParseError2("invalid_cwd", `LSP request cwd must be an existing directory: ${cwd}`);
|
|
5503
5532
|
}
|
|
5504
|
-
return
|
|
5533
|
+
return realpathSync6(resolved);
|
|
5505
5534
|
}
|
|
5506
5535
|
function canonicalizeExistingOrNearestAncestor2(path2) {
|
|
5507
5536
|
let current = resolve9(path2);
|
|
5508
5537
|
const suffix = [];
|
|
5509
5538
|
while (true) {
|
|
5510
5539
|
try {
|
|
5511
|
-
const existing =
|
|
5512
|
-
return suffix.length === 0 ? existing :
|
|
5540
|
+
const existing = realpathSync6(current);
|
|
5541
|
+
return suffix.length === 0 ? existing : join8(existing, ...suffix);
|
|
5513
5542
|
} catch (error) {
|
|
5514
5543
|
if (!isMissingPathError2(error))
|
|
5515
5544
|
throw error;
|
|
@@ -5577,9 +5606,9 @@ function errorCode2(error) {
|
|
|
5577
5606
|
}
|
|
5578
5607
|
|
|
5579
5608
|
// src/daemon-cli-path.ts
|
|
5580
|
-
import { existsSync as
|
|
5609
|
+
import { existsSync as existsSync15, readFileSync as readFileSync6 } from "node:fs";
|
|
5581
5610
|
import { createRequire as createRequire2 } from "node:module";
|
|
5582
|
-
import { dirname as
|
|
5611
|
+
import { dirname as dirname10, join as join10 } from "node:path";
|
|
5583
5612
|
import { fileURLToPath as fileURLToPath4 } from "node:url";
|
|
5584
5613
|
var requireFromHere2 = createRequire2(import.meta.url);
|
|
5585
5614
|
var PACKAGE_LSP_DAEMON_CLI = "@code-yeongyu/lsp-daemon/cli";
|
|
@@ -5601,7 +5630,7 @@ function resolveLspDaemonCli() {
|
|
|
5601
5630
|
if (packageCli !== null)
|
|
5602
5631
|
return resolveConfiguredLspDaemonCli(packageCli);
|
|
5603
5632
|
const bundledCli = fileURLToPath4(new URL("../../lsp-daemon/dist/cli.js", import.meta.url));
|
|
5604
|
-
if (
|
|
5633
|
+
if (existsSync15(bundledCli))
|
|
5605
5634
|
return resolveConfiguredLspDaemonCli(bundledCli);
|
|
5606
5635
|
return resolveConfiguredLspDaemonCli(bundledCli);
|
|
5607
5636
|
}
|
|
@@ -5626,7 +5655,7 @@ function resolveConfiguredLspDaemonCli(cliPath) {
|
|
|
5626
5655
|
}
|
|
5627
5656
|
function readDaemonPackageVersion(cliPath) {
|
|
5628
5657
|
try {
|
|
5629
|
-
const parsed = JSON.parse(readFileSync6(
|
|
5658
|
+
const parsed = JSON.parse(readFileSync6(join10(dirname10(cliPath), "package.json"), "utf8"));
|
|
5630
5659
|
if (isRecord9(parsed) && typeof parsed["version"] === "string" && parsed["version"].length > 0) {
|
|
5631
5660
|
return parsed["version"];
|
|
5632
5661
|
}
|
|
@@ -5643,7 +5672,7 @@ function isRecord9(value) {
|
|
|
5643
5672
|
// src/lsp-session-state.ts
|
|
5644
5673
|
import { mkdirSync as mkdirSync4, readFileSync as readFileSync8, writeFileSync as writeFileSync3 } from "node:fs";
|
|
5645
5674
|
import { homedir } from "node:os";
|
|
5646
|
-
import { dirname as
|
|
5675
|
+
import { dirname as dirname12, join as join11 } from "node:path";
|
|
5647
5676
|
function sessionIdFrom(input) {
|
|
5648
5677
|
return typeof input.session_id === "string" && input.session_id.length > 0 ? input.session_id : undefined;
|
|
5649
5678
|
}
|
|
@@ -5669,8 +5698,8 @@ function isLspDaemonUnreachableDiagnostics(diagnostics) {
|
|
|
5669
5698
|
return diagnostics.includes("LSP daemon unreachable");
|
|
5670
5699
|
}
|
|
5671
5700
|
function sessionStatePath(sessionId) {
|
|
5672
|
-
const root = process.env["PLUGIN_DATA"] ??
|
|
5673
|
-
return
|
|
5701
|
+
const root = process.env["PLUGIN_DATA"] ?? join11(homedir(), ".codex", "codex-lsp");
|
|
5702
|
+
return join11(root, "sessions", `${safePathSegment(sessionId)}.json`);
|
|
5674
5703
|
}
|
|
5675
5704
|
function readSessionState(path2) {
|
|
5676
5705
|
try {
|
|
@@ -5685,7 +5714,7 @@ function readSessionState(path2) {
|
|
|
5685
5714
|
}
|
|
5686
5715
|
}
|
|
5687
5716
|
function writeSessionState(path2, state) {
|
|
5688
|
-
mkdirSync4(
|
|
5717
|
+
mkdirSync4(dirname12(path2), { recursive: true });
|
|
5689
5718
|
writeFileSync3(path2, `${JSON.stringify(state)}
|
|
5690
5719
|
`);
|
|
5691
5720
|
}
|
|
@@ -5829,13 +5858,13 @@ function notConfiguredAvailability(details) {
|
|
|
5829
5858
|
return typeof extension === "string" && extension.length > 0 ? { extension } : undefined;
|
|
5830
5859
|
}
|
|
5831
5860
|
function codexLspRequestContext(env = process.env, cwd = process.cwd()) {
|
|
5832
|
-
const canonicalCwd3 =
|
|
5833
|
-
const codexHome = resolve11(env["CODEX_HOME"]?.trim() ||
|
|
5861
|
+
const canonicalCwd3 = realpathSync8(resolve11(cwd));
|
|
5862
|
+
const codexHome = resolve11(env["CODEX_HOME"]?.trim() || join12(homedir3(), ".codex"));
|
|
5834
5863
|
return parseLspRequestContext2({
|
|
5835
5864
|
cwd: canonicalCwd3,
|
|
5836
|
-
projectConfigPaths: [
|
|
5837
|
-
userConfigPath:
|
|
5838
|
-
installDecisionsPath:
|
|
5865
|
+
projectConfigPaths: [join12(canonicalCwd3, ".codex", "lsp-client.json")],
|
|
5866
|
+
userConfigPath: join12(codexHome, "lsp-client.json"),
|
|
5867
|
+
installDecisionsPath: join12(codexHome, "lsp-install-decisions.json"),
|
|
5839
5868
|
capabilities: { installDecisionTool: true }
|
|
5840
5869
|
});
|
|
5841
5870
|
}
|
|
@@ -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.12) 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.12) 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.12) 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.12) 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.12) 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.12) Resetting Project Rule Cache"
|
|
49
49
|
}
|
|
50
50
|
]
|
|
51
51
|
}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/start-work-continuation/dist/cli.js\" hook stop",
|
|
9
9
|
"timeout": 10,
|
|
10
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
10
|
+
"statusMessage": "(OmO 5.0.0-beta.12) Checking Start-Work Continuation"
|
|
11
11
|
}
|
|
12
12
|
]
|
|
13
13
|
}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"type": "command",
|
|
20
20
|
"command": "node \"${PLUGIN_ROOT}/components/start-work-continuation/dist/cli.js\" hook subagent-stop",
|
|
21
21
|
"timeout": 10,
|
|
22
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
22
|
+
"statusMessage": "(OmO 5.0.0-beta.12) Checking Start-Work Continuation"
|
|
23
23
|
}
|
|
24
24
|
]
|
|
25
25
|
}
|
|
@@ -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.12) Checking Thread Title Hygiene"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code-yeongyu/codex-telemetry",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.12",
|
|
4
4
|
"description": "Codex plugin component that emits omo-codex anonymous daily-active telemetry on SessionStart.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "npm@11.12.1",
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook user-prompt-submit",
|
|
9
9
|
"timeout": 5,
|
|
10
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
10
|
+
"statusMessage": "(OmO 5.0.0-beta.12) Checking Ultrawork Trigger"
|
|
11
11
|
}
|
|
12
12
|
]
|
|
13
13
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code-yeongyu/codex-ultrawork",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.12",
|
|
4
4
|
"description": "Codex plugin that injects the ultrawork orchestration directive and ships LazyCodex planning, review, QA, and gate agent roles.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "npm@11.12.1",
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook user-prompt-submit --with-ultrawork",
|
|
9
9
|
"timeout": 10,
|
|
10
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
10
|
+
"statusMessage": "(OmO 5.0.0-beta.12) Checking Ulw-Loop Steering"
|
|
11
11
|
}
|
|
12
12
|
]
|
|
13
13
|
}
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"type": "command",
|
|
21
21
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook pre-tool-use",
|
|
22
22
|
"timeout": 5,
|
|
23
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
23
|
+
"statusMessage": "(OmO 5.0.0-beta.12) Enforcing Unlimited Ulw-Loop Budget"
|
|
24
24
|
}
|
|
25
25
|
]
|
|
26
26
|
},
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"type": "command",
|
|
32
32
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook pre-tool-use-spawn",
|
|
33
33
|
"timeout": 5,
|
|
34
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
34
|
+
"statusMessage": "(OmO 5.0.0-beta.12) Guarding Ulw-Loop Spawns"
|
|
35
35
|
}
|
|
36
36
|
]
|
|
37
37
|
}
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"type": "command",
|
|
44
44
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook stop",
|
|
45
45
|
"timeout": 10,
|
|
46
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
46
|
+
"statusMessage": "(OmO 5.0.0-beta.12) Checking Ulw-Loop Resume"
|
|
47
47
|
}
|
|
48
48
|
]
|
|
49
49
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code-yeongyu/codex-ulw-loop",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.12",
|
|
4
4
|
"description": "Codex plugin: durable repo-native multi-goal orchestration with embedded success criteria and observable evidence audit.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "npm@11.12.1",
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/git-bash/dist/cli.js\" hook post-compact",
|
|
9
9
|
"timeout": 5,
|
|
10
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
10
|
+
"statusMessage": "(OmO 5.0.0-beta.12) Resetting Git Bash MCP Reminder",
|
|
11
11
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\git-bash\\dist\\cli.js\" hook post-compact"
|
|
12
12
|
}
|
|
13
13
|
],
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/lsp/dist/cli.js\" hook post-compact",
|
|
9
9
|
"timeout": 5,
|
|
10
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
10
|
+
"statusMessage": "(OmO 5.0.0-beta.12) Resetting LSP Diagnostics Cache",
|
|
11
11
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\lsp\\dist\\cli.js\" hook post-compact"
|
|
12
12
|
}
|
|
13
13
|
],
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/rules/dist/cli.js\" hook post-compact",
|
|
9
9
|
"timeout": 10,
|
|
10
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
10
|
+
"statusMessage": "(OmO 5.0.0-beta.12) Resetting Project Rule Cache",
|
|
11
11
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\rules\\dist\\cli.js\" hook post-compact"
|
|
12
12
|
}
|
|
13
13
|
],
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/codegraph/dist/cli.js\" hook post-tool-use",
|
|
9
9
|
"timeout": 5,
|
|
10
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
10
|
+
"statusMessage": "(OmO 5.0.0-beta.12) Checking CodeGraph Init Guidance",
|
|
11
11
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\codegraph\\dist\\cli.js\" hook post-tool-use"
|
|
12
12
|
}
|
|
13
13
|
],
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/comment-checker/dist/cli.js\" hook post-tool-use",
|
|
9
9
|
"timeout": 30,
|
|
10
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
10
|
+
"statusMessage": "(OmO 5.0.0-beta.12) Checking Comments",
|
|
11
11
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\comment-checker\\dist\\cli.js\" hook post-tool-use"
|
|
12
12
|
}
|
|
13
13
|
],
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/lsp/dist/cli.js\" hook post-tool-use",
|
|
9
9
|
"timeout": 60,
|
|
10
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
10
|
+
"statusMessage": "(OmO 5.0.0-beta.12) Checking LSP Diagnostics",
|
|
11
11
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\lsp\\dist\\cli.js\" hook post-tool-use"
|
|
12
12
|
}
|
|
13
13
|
],
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "command",
|
|
9
9
|
"command": "node \"${PLUGIN_ROOT}/components/teammode/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.12) Checking Thread Title Hygiene",
|
|
12
12
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\teammode\\dist\\cli.js\" hook post-tool-use"
|
|
13
13
|
}
|
|
14
14
|
]
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/rules/dist/cli.js\" hook post-tool-use",
|
|
9
9
|
"timeout": 10,
|
|
10
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
10
|
+
"statusMessage": "(OmO 5.0.0-beta.12) Matching Project Rules",
|
|
11
11
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\rules\\dist\\cli.js\" hook post-tool-use"
|
|
12
12
|
}
|
|
13
13
|
],
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/ulw-loop/dist/cli.js\" hook pre-tool-use",
|
|
9
9
|
"timeout": 5,
|
|
10
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
10
|
+
"statusMessage": "(OmO 5.0.0-beta.12) Enforcing Unlimited Goal Budget",
|
|
11
11
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\ulw-loop\\dist\\cli.js\" hook pre-tool-use"
|
|
12
12
|
}
|
|
13
13
|
],
|