lazycodex-ai 5.0.0-beta.49 → 5.0.0-beta.50
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 +4682 -14969
- package/dist/cli-node/index.js +4727 -15014
- package/package.json +1 -1
- package/packages/lsp-daemon/dist/cli.js +181 -181
- package/packages/lsp-daemon/dist/client.js +232 -232
- package/packages/lsp-daemon/dist/index.js +132 -132
- package/packages/lsp-tools-mcp/dist/cli.js +103 -101
- package/packages/lsp-tools-mcp/dist/lsp/manager.js +14 -14
- package/packages/lsp-tools-mcp/dist/mcp.js +129 -129
- package/packages/lsp-tools-mcp/dist/tools.js +47 -47
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/README.md +4 -0
- package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +151 -102
- 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/AGENTS.md +2 -2
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/directive.md +2 -0
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/dist/cli.js +35 -24
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/dist/codex-hook.js +31 -21
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/dist/types.d.ts +3 -0
- 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/lazycodex-executor-verify/src/codex-hook.ts +31 -23
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/src/types.ts +3 -0
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/test/cli.test.ts +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/test/codex-hook.test.ts +133 -7
- package/packages/omo-codex/plugin/components/lcx/skills/lcx-doctor/SKILL.md +3 -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 +298 -298
- 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/README.md +2 -0
- package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus/gpt-6.md +123 -0
- package/packages/omo-codex/plugin/components/rules/dist/cli.js +38 -30
- 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/rules/src/post-compact-budget.ts +6 -0
- package/packages/omo-codex/plugin/components/rules/test/hephaestus-model-variant.test.ts +38 -2
- package/packages/omo-codex/plugin/components/rules/test/post-compact-budget.test.ts +24 -0
- package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/package.json +2 -2
- package/packages/omo-codex/plugin/components/telemetry/dist/cli.js +66 -357
- package/packages/omo-codex/plugin/components/telemetry/dist/posthog.js +66 -358
- 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/README.md +2 -0
- package/packages/omo-codex/plugin/components/ultrawork/agents/explorer.toml +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-clone-fidelity-reviewer.toml +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-code-reviewer.toml +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-gate-reviewer.toml +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-qa-executor.toml +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-worker-high.toml +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-worker-low.toml +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-worker-medium.toml +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/librarian.toml +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/metis.toml +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/momus.toml +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/plan.toml +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/dist/cli.js +3 -3
- 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/dist/cli.js +63 -63
- 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/model-catalog.json +16 -7
- package/packages/omo-codex/plugin/package-lock.json +16 -16
- package/packages/omo-codex/plugin/package.json +1 -1
- package/packages/omo-codex/plugin/scripts/migrate-codex-config/catalog.mjs +16 -7
- package/packages/omo-codex/plugin/scripts/migrate-codex-config/multi-agent-v2-guard.mjs +8 -4
- package/packages/omo-codex/plugin/scripts/migrate-codex-config/subagent-limit-guard.mjs +18 -90
- package/packages/omo-codex/plugin/scripts/migrate-codex-config/toml-section-editor.mjs +1 -1
- package/packages/omo-codex/plugin/shared/package.json +1 -1
- package/packages/omo-codex/plugin/skills/lcx-doctor/SKILL.md +3 -1
- package/packages/omo-codex/plugin/test/aggregate-agents.test.mjs +12 -12
- package/packages/omo-codex/plugin/test/aggregate-model-catalog.test.mjs +14 -4
- package/packages/omo-codex/plugin/test/auto-update.test.mjs +4 -4
- package/packages/omo-codex/plugin/test/component-hook-contract-cases.mjs +25 -1
- package/packages/omo-codex/plugin/test/migrate-codex-config.test.mjs +35 -35
- package/packages/omo-codex/plugin/test/multi-agent-v2-regression.test.mjs +1 -1
- package/packages/omo-codex/plugin/test/subagent-limit-migration.test.mjs +107 -15
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +318 -569
|
@@ -376,7 +376,7 @@ class JsonRpcConnection {
|
|
|
376
376
|
let settled = false;
|
|
377
377
|
const writeCancel = () => this.writeMessage({ jsonrpc: "2.0", method: "$/cancelRequest", params: { id } });
|
|
378
378
|
let rejectAfterCancelWrite;
|
|
379
|
-
const responsePromise = new Promise((
|
|
379
|
+
const responsePromise = new Promise((resolve, reject) => {
|
|
380
380
|
const cleanup = () => {
|
|
381
381
|
options.signal?.removeEventListener("abort", onAbort);
|
|
382
382
|
};
|
|
@@ -406,7 +406,7 @@ class JsonRpcConnection {
|
|
|
406
406
|
resolve(result) {
|
|
407
407
|
settled = true;
|
|
408
408
|
cleanup();
|
|
409
|
-
|
|
409
|
+
resolve(result);
|
|
410
410
|
},
|
|
411
411
|
reject(error) {
|
|
412
412
|
settled = true;
|
|
@@ -565,13 +565,13 @@ class JsonRpcConnection {
|
|
|
565
565
|
const payload = `Content-Length: ${Buffer.byteLength(body, "utf8")}\r
|
|
566
566
|
\r
|
|
567
567
|
${body}`;
|
|
568
|
-
return new Promise((
|
|
568
|
+
return new Promise((resolve, reject) => {
|
|
569
569
|
this.writer.write(payload, (error) => {
|
|
570
570
|
if (error) {
|
|
571
571
|
reject(error);
|
|
572
572
|
return;
|
|
573
573
|
}
|
|
574
|
-
|
|
574
|
+
resolve();
|
|
575
575
|
});
|
|
576
576
|
});
|
|
577
577
|
}
|
|
@@ -658,9 +658,9 @@ function validateCwd(cwd) {
|
|
|
658
658
|
}
|
|
659
659
|
}
|
|
660
660
|
function wrap(proc) {
|
|
661
|
-
const exitedPromise = new Promise((
|
|
662
|
-
proc.once("close", (code) =>
|
|
663
|
-
proc.once("error", () =>
|
|
661
|
+
const exitedPromise = new Promise((resolve) => {
|
|
662
|
+
proc.once("close", (code) => resolve(code ?? 0));
|
|
663
|
+
proc.once("error", () => resolve(1));
|
|
664
664
|
});
|
|
665
665
|
if (!proc.stdin || !proc.stdout || !proc.stderr) {
|
|
666
666
|
throw new LspProcessSpawnError("Spawned process is missing one of stdin/stdout/stderr pipes");
|
|
@@ -1006,8 +1006,8 @@ class LspClientTransport {
|
|
|
1006
1006
|
try {
|
|
1007
1007
|
proc.kill();
|
|
1008
1008
|
let timeoutId;
|
|
1009
|
-
const timeoutPromise = new Promise((
|
|
1010
|
-
timeoutId = setTimeout(
|
|
1009
|
+
const timeoutPromise = new Promise((resolve) => {
|
|
1010
|
+
timeoutId = setTimeout(resolve, STOP_HARD_KILL_TIMEOUT_MS);
|
|
1011
1011
|
});
|
|
1012
1012
|
await Promise.race([
|
|
1013
1013
|
proc.exited.then(() => {
|
|
@@ -1023,7 +1023,7 @@ class LspClientTransport {
|
|
|
1023
1023
|
proc.kill("SIGKILL");
|
|
1024
1024
|
await Promise.race([
|
|
1025
1025
|
proc.exited,
|
|
1026
|
-
new Promise((
|
|
1026
|
+
new Promise((resolve) => setTimeout(resolve, STOP_SIGKILL_GRACE_MS))
|
|
1027
1027
|
]);
|
|
1028
1028
|
} catch (error) {
|
|
1029
1029
|
reportBestEffortCleanupError("hard process kill", error instanceof Error ? error : String(error));
|
|
@@ -2017,14 +2017,14 @@ function parseSinglePathResource(input, kind) {
|
|
|
2017
2017
|
return;
|
|
2018
2018
|
}
|
|
2019
2019
|
if (kind === "create") {
|
|
2020
|
-
const
|
|
2020
|
+
const options = parseOptions(change["options"], ["overwrite", "ignoreIfExists"], changeIndex);
|
|
2021
2021
|
target.operations.push({
|
|
2022
2022
|
kind,
|
|
2023
2023
|
changeIndex,
|
|
2024
2024
|
path: resolvedPath.path,
|
|
2025
2025
|
reportedPath: resolvedPath.requestedPath,
|
|
2026
|
-
overwrite:
|
|
2027
|
-
ignoreIfExists:
|
|
2026
|
+
overwrite: options["overwrite"] ?? false,
|
|
2027
|
+
ignoreIfExists: options["ignoreIfExists"] ?? false,
|
|
2028
2028
|
followedSymbolicLink: resolvedPath.followedSymbolicLink
|
|
2029
2029
|
});
|
|
2030
2030
|
return;
|
|
@@ -2494,11 +2494,11 @@ class PlanPathIndex {
|
|
|
2494
2494
|
}
|
|
2495
2495
|
}
|
|
2496
2496
|
}
|
|
2497
|
-
add(path,
|
|
2497
|
+
add(path, reportedPath, changeIndex) {
|
|
2498
2498
|
if (!this.firstChangeByPath.has(path))
|
|
2499
2499
|
this.firstChangeByPath.set(path, changeIndex);
|
|
2500
2500
|
if (!this.reportedPathByCanonical.has(path))
|
|
2501
|
-
this.reportedPathByCanonical.set(path,
|
|
2501
|
+
this.reportedPathByCanonical.set(path, reportedPath);
|
|
2502
2502
|
}
|
|
2503
2503
|
}
|
|
2504
2504
|
function fingerprintWorkspaceEdit(edit, workspaceRoot) {
|
|
@@ -2610,8 +2610,8 @@ class WorkspaceMutationController {
|
|
|
2610
2610
|
};
|
|
2611
2611
|
}
|
|
2612
2612
|
lease.phase = "applying";
|
|
2613
|
-
lease.applyCompletion = new Promise((
|
|
2614
|
-
lease.resolveApply =
|
|
2613
|
+
lease.applyCompletion = new Promise((resolve) => {
|
|
2614
|
+
lease.resolveApply = resolve;
|
|
2615
2615
|
});
|
|
2616
2616
|
const edit = isRecord4(params) ? params["edit"] : undefined;
|
|
2617
2617
|
const record = edit === undefined ? { fingerprint: null, result: failure("workspace/applyEdit params.edit is required", 0) } : await this.applyEdit(edit, lease);
|
|
@@ -2806,13 +2806,13 @@ class LspClient extends LspClientConnection {
|
|
|
2806
2806
|
if (!pushFallbackOnly) {
|
|
2807
2807
|
const cached = this.documents.getPullCache(snapshot);
|
|
2808
2808
|
try {
|
|
2809
|
-
const
|
|
2810
|
-
if (
|
|
2809
|
+
const remainingMs = deadlineAt - this.timerProvider.now();
|
|
2810
|
+
if (remainingMs <= 0)
|
|
2811
2811
|
return this.freshnessTimeout(absPath);
|
|
2812
2812
|
const result = await this.sendRequest("textDocument/diagnostic", {
|
|
2813
2813
|
textDocument: { uri },
|
|
2814
2814
|
...cached?.resultId === undefined ? {} : { previousResultId: cached.resultId }
|
|
2815
|
-
}, { timeoutMs:
|
|
2815
|
+
}, { timeoutMs: remainingMs, ...signal === undefined ? {} : { signal } });
|
|
2816
2816
|
if (!this.documents.isCurrentSnapshot(snapshot))
|
|
2817
2817
|
continue;
|
|
2818
2818
|
const report = this.parseDiagnosticPullReport(result);
|
|
@@ -2893,7 +2893,7 @@ function waitForDiagnosticsActivity(wait, signal) {
|
|
|
2893
2893
|
return wait;
|
|
2894
2894
|
if (signal.aborted)
|
|
2895
2895
|
return Promise.reject(abortError2(signal));
|
|
2896
|
-
return new Promise((
|
|
2896
|
+
return new Promise((resolve, reject) => {
|
|
2897
2897
|
const onAbort = () => {
|
|
2898
2898
|
signal.removeEventListener("abort", onAbort);
|
|
2899
2899
|
reject(abortError2(signal));
|
|
@@ -2901,7 +2901,7 @@ function waitForDiagnosticsActivity(wait, signal) {
|
|
|
2901
2901
|
signal.addEventListener("abort", onAbort, { once: true });
|
|
2902
2902
|
wait.then(() => {
|
|
2903
2903
|
signal.removeEventListener("abort", onAbort);
|
|
2904
|
-
|
|
2904
|
+
resolve();
|
|
2905
2905
|
}, (error) => {
|
|
2906
2906
|
signal.removeEventListener("abort", onAbort);
|
|
2907
2907
|
reject(error);
|
|
@@ -2969,7 +2969,7 @@ async function stopClientBestEffort(client) {
|
|
|
2969
2969
|
function awaitWithSignal(promise, signal) {
|
|
2970
2970
|
if (!signal)
|
|
2971
2971
|
return promise;
|
|
2972
|
-
return new Promise((
|
|
2972
|
+
return new Promise((resolve, reject) => {
|
|
2973
2973
|
let settled = false;
|
|
2974
2974
|
const onAbort = () => {
|
|
2975
2975
|
if (settled)
|
|
@@ -2987,7 +2987,7 @@ function awaitWithSignal(promise, signal) {
|
|
|
2987
2987
|
return;
|
|
2988
2988
|
settled = true;
|
|
2989
2989
|
signal.removeEventListener("abort", onAbort);
|
|
2990
|
-
|
|
2990
|
+
resolve(value);
|
|
2991
2991
|
}, (err) => {
|
|
2992
2992
|
if (settled)
|
|
2993
2993
|
return;
|
|
@@ -3679,7 +3679,7 @@ function createServerFromEntry(id, entry, source) {
|
|
|
3679
3679
|
if (source === "project") {
|
|
3680
3680
|
if (!builtin)
|
|
3681
3681
|
return null;
|
|
3682
|
-
const
|
|
3682
|
+
const server = createServer({
|
|
3683
3683
|
id,
|
|
3684
3684
|
command: builtin.command,
|
|
3685
3685
|
extensions: entry.extensions ?? builtin.extensions,
|
|
@@ -3687,20 +3687,20 @@ function createServerFromEntry(id, entry, source) {
|
|
|
3687
3687
|
source
|
|
3688
3688
|
});
|
|
3689
3689
|
if (entry.initialization !== undefined) {
|
|
3690
|
-
|
|
3690
|
+
server.initialization = entry.initialization;
|
|
3691
3691
|
}
|
|
3692
|
-
return
|
|
3692
|
+
return server;
|
|
3693
3693
|
}
|
|
3694
3694
|
if (entry.command && entry.extensions) {
|
|
3695
|
-
const
|
|
3695
|
+
const server = createServer({
|
|
3696
3696
|
id,
|
|
3697
3697
|
command: entry.command,
|
|
3698
3698
|
extensions: entry.extensions,
|
|
3699
3699
|
priority: entry.priority ?? 0,
|
|
3700
3700
|
source
|
|
3701
3701
|
});
|
|
3702
|
-
applyOptionalServerFields(
|
|
3703
|
-
return
|
|
3702
|
+
applyOptionalServerFields(server, entry);
|
|
3703
|
+
return server;
|
|
3704
3704
|
}
|
|
3705
3705
|
if (!builtin)
|
|
3706
3706
|
return null;
|
|
@@ -4247,10 +4247,10 @@ function uriToPath(uri) {
|
|
|
4247
4247
|
}
|
|
4248
4248
|
function formatLocation(loc) {
|
|
4249
4249
|
if ("targetUri" in loc) {
|
|
4250
|
-
const
|
|
4251
|
-
const
|
|
4252
|
-
const
|
|
4253
|
-
return `${
|
|
4250
|
+
const uri = uriToPath(loc.targetUri);
|
|
4251
|
+
const line = loc.targetRange.start.line + 1;
|
|
4252
|
+
const char = loc.targetRange.start.character;
|
|
4253
|
+
return `${uri}:${line}:${char}`;
|
|
4254
4254
|
}
|
|
4255
4255
|
const uri = uriToPath(loc.uri);
|
|
4256
4256
|
const line = loc.range.start.line + 1;
|
|
@@ -4652,8 +4652,8 @@ function clientOptions(signal) {
|
|
|
4652
4652
|
}
|
|
4653
4653
|
|
|
4654
4654
|
// ../lsp-core/src/tools/result.ts
|
|
4655
|
-
function text(
|
|
4656
|
-
return { content: [{ type: "text", text
|
|
4655
|
+
function text(text, details, isError = false) {
|
|
4656
|
+
return { content: [{ type: "text", text }], details, isError };
|
|
4657
4657
|
}
|
|
4658
4658
|
|
|
4659
4659
|
// ../lsp-core/src/tools/diagnostics.ts
|
|
@@ -4673,7 +4673,7 @@ async function executeLspDiagnostics(params, signal) {
|
|
|
4673
4673
|
const extension = inferExtensionFromDirectory(absPath);
|
|
4674
4674
|
if (!extension) {
|
|
4675
4675
|
const message = `No supported source files found in directory: ${absPath}`;
|
|
4676
|
-
const
|
|
4676
|
+
const details = {
|
|
4677
4677
|
filePath,
|
|
4678
4678
|
severity,
|
|
4679
4679
|
mode: "directory",
|
|
@@ -4683,24 +4683,24 @@ async function executeLspDiagnostics(params, signal) {
|
|
|
4683
4683
|
error: message,
|
|
4684
4684
|
errorKind: "no_files"
|
|
4685
4685
|
};
|
|
4686
|
-
return text(message,
|
|
4686
|
+
return text(message, details);
|
|
4687
4687
|
}
|
|
4688
|
-
const
|
|
4689
|
-
const
|
|
4688
|
+
const output = await aggregateDiagnosticsForDirectory(absPath, extension, severity, undefined, signal === undefined ? {} : { signal });
|
|
4689
|
+
const details = {
|
|
4690
4690
|
filePath,
|
|
4691
4691
|
severity,
|
|
4692
4692
|
mode: "directory",
|
|
4693
4693
|
diagnostics: [],
|
|
4694
|
-
totalDiagnostics:
|
|
4694
|
+
totalDiagnostics: output.totalDiagnostics,
|
|
4695
4695
|
truncated: false,
|
|
4696
|
-
fileFailures: [...
|
|
4696
|
+
fileFailures: [...output.fileFailures]
|
|
4697
4697
|
};
|
|
4698
|
-
return text(
|
|
4698
|
+
return text(output.output, details);
|
|
4699
4699
|
}
|
|
4700
4700
|
const result = await withLspClient(filePath, async (client, _workspaceRoot, resolvedFilePath) => client.diagnostics(resolvedFilePath, signal), "diagnostics", clientOptions(signal));
|
|
4701
4701
|
if (result.transientError) {
|
|
4702
4702
|
const message = result.transientError.message;
|
|
4703
|
-
const
|
|
4703
|
+
const details = {
|
|
4704
4704
|
filePath,
|
|
4705
4705
|
severity,
|
|
4706
4706
|
mode: "file",
|
|
@@ -4710,7 +4710,7 @@ async function executeLspDiagnostics(params, signal) {
|
|
|
4710
4710
|
error: message,
|
|
4711
4711
|
errorKind: result.transientError.kind
|
|
4712
4712
|
};
|
|
4713
|
-
return text(message,
|
|
4713
|
+
return text(message, details, true);
|
|
4714
4714
|
}
|
|
4715
4715
|
const diagnostics = filterDiagnosticsBySeverity(asDiagnosticArray(result), severity);
|
|
4716
4716
|
const total = diagnostics.length;
|
|
@@ -5027,8 +5027,8 @@ async function executeLspSymbols(params, signal) {
|
|
|
5027
5027
|
errorKind: "missing_query"
|
|
5028
5028
|
});
|
|
5029
5029
|
}
|
|
5030
|
-
const
|
|
5031
|
-
return formatSymbolsResult(filePath, scope,
|
|
5030
|
+
const symbols = await withLspClient(filePath, async (client) => client.workspaceSymbols(query, signal), "workspaceSymbols", clientOptions(signal));
|
|
5031
|
+
return formatSymbolsResult(filePath, scope, symbols, limit, query);
|
|
5032
5032
|
}
|
|
5033
5033
|
const symbols = await withLspClient(filePath, async (client, _workspaceRoot, resolvedFilePath) => client.documentSymbols(resolvedFilePath, signal), "documentSymbols", clientOptions(signal));
|
|
5034
5034
|
return formatSymbolsResult(filePath, scope, symbols, limit);
|
|
@@ -15,6 +15,10 @@ Internally each component remains isolated under `components/`:
|
|
|
15
15
|
|
|
16
16
|
The root plugin manifest exports one Codex plugin named `omo`, with aggregate hooks, skills, and plugin-scoped MCP servers for `grep_app`, `context7`, `git_bash`, and `lsp`. AST-aware search ships as the `ast-grep` skill, not as an MCP server.
|
|
17
17
|
|
|
18
|
+
## Default model
|
|
19
|
+
|
|
20
|
+
`model-catalog.json` (version `2026-09-08.gpt-6-astra-600k-high`) is the managed default the installer and the SessionStart config migration apply: `gpt-6-astra`, 600k context window, `high` reasoning, `xhigh` plan-mode reasoning. Managed legacy profiles, including `legacy.gpt-5.6-sol-650k-high` for configs still on `gpt-5.6-sol`, are upgraded to the current values; a root model outside the catalog is preserved. Neither the installer nor the migration writes or raises subagent thread caps (`agents.max_threads`, `features.multi_agent_v2.max_concurrent_threads_per_session`). They remove only the values LazyCodex itself wrote earlier (`1000`, `16`), with one exception: on a `multi_agent_v2`-preferred model such as `gpt-6-astra`, the V1-only `agents.max_threads` key is removed whatever its value, since Codex rejects it under V2. Every other user-set value is left alone.
|
|
21
|
+
|
|
18
22
|
## Telemetry
|
|
19
23
|
|
|
20
24
|
The bundled telemetry component emits the anonymous `omo_codex_daily_active` event at most once per UTC day per machine when the Codex `SessionStart` hook runs. It uses `sha256("omo-codex:" + hostname)` as the distinct ID, disables PostHog person profiles, and stores daily deduplication state in `$XDG_DATA_HOME/omo-codex/posthog-activity.json` or `~/.local/share/omo-codex/posthog-activity.json`.
|