oh-my-opencode 5.0.0-beta.4 → 5.0.0-beta.6
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 +496 -377
- package/dist/cli-node/index.js +496 -377
- package/dist/index.js +1136 -1104
- package/dist/skills/coding-agent-sessions/SKILL.md +3 -2
- package/dist/skills/coding-agent-sessions/references/all-platforms.md +1 -1
- package/dist/skills/coding-agent-sessions/references/senpi.md +4 -4
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/pi_family.py +1 -1
- package/dist/tui.js +20 -1
- package/package.json +15 -14
- package/packages/lsp-core/src/lsp/client-wrapper.test.ts +60 -7
- package/packages/lsp-core/src/lsp/client-wrapper.ts +69 -16
- package/packages/lsp-core/src/lsp/workspace-edit-adversarial.test.ts +20 -1
- package/packages/lsp-core/src/tools/diagnostics.ts +3 -3
- package/packages/lsp-core/src/tools/navigation.ts +4 -2
- package/packages/lsp-core/src/tools/rename.ts +4 -2
- package/packages/lsp-core/src/tools/symbols.ts +1 -1
- package/packages/lsp-daemon/dist/cli.js +83 -29
- package/packages/lsp-daemon/dist/client.js +76 -22
- package/packages/lsp-daemon/dist/index.js +81 -27
- package/packages/lsp-tools-mcp/dist/cli.js +76 -22
- package/packages/lsp-tools-mcp/dist/mcp.js +76 -22
- package/packages/lsp-tools-mcp/dist/tools.js +76 -22
- 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 +14 -1
- package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +14 -1
- 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 -29
- 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/dist/cli.js +24 -12
- package/packages/omo-codex/plugin/components/telemetry/dist/posthog.js +24 -12
- 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/plugin/skills/coding-agent-sessions/SKILL.md +3 -2
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/all-platforms.md +1 -1
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/senpi.md +4 -4
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/pi_family.py +1 -1
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +39 -16
- package/packages/shared-skills/skills/coding-agent-sessions/SKILL.md +3 -2
- package/packages/shared-skills/skills/coding-agent-sessions/references/all-platforms.md +1 -1
- package/packages/shared-skills/skills/coding-agent-sessions/references/senpi.md +4 -4
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/pi_family.py +1 -1
|
@@ -5755,6 +5755,15 @@ var OmoTeamSpecLayerSchema = OmoTeamSpecBaseSchema.partial();
|
|
|
5755
5755
|
var OmoTeamsConfigSchema = record(string2(), OmoTeamSpecSchema);
|
|
5756
5756
|
var OmoTeamsConfigLayerSchema = record(string2(), OmoTeamSpecLayerSchema);
|
|
5757
5757
|
|
|
5758
|
+
// ../../omo-config-core/src/schema/telemetry.ts
|
|
5759
|
+
var OmoTelemetrySettingsShape = {
|
|
5760
|
+
enabled: boolean2()
|
|
5761
|
+
};
|
|
5762
|
+
var OmoTelemetrySettingsLayerSchema = object(OmoTelemetrySettingsShape).partial().strict();
|
|
5763
|
+
var OmoTelemetrySettingsSchema = OmoTelemetrySettingsLayerSchema.extend({
|
|
5764
|
+
enabled: boolean2().default(true)
|
|
5765
|
+
}).strict();
|
|
5766
|
+
|
|
5758
5767
|
// ../../omo-config-core/src/schema/config.ts
|
|
5759
5768
|
var OmoOpenCodeHarnessConfigSchema = record(string2(), unknown());
|
|
5760
5769
|
var OmoTypedHarnessConfigSchema = object({
|
|
@@ -5764,7 +5773,8 @@ var OmoTypedHarnessConfigSchema = object({
|
|
|
5764
5773
|
task: OmoTaskSettingsLayerSchema.optional(),
|
|
5765
5774
|
teams: OmoTeamsConfigLayerSchema.optional(),
|
|
5766
5775
|
models: OmoModelCatalogLayerSchema.optional(),
|
|
5767
|
-
memory: OmoMemorySettingsLayerSchema.optional()
|
|
5776
|
+
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
5777
|
+
telemetry: OmoTelemetrySettingsLayerSchema.optional()
|
|
5768
5778
|
}).strict();
|
|
5769
5779
|
var OmoConfigProfileSchema = object({
|
|
5770
5780
|
categories: OmoCategoriesConfigSchema.optional(),
|
|
@@ -5774,6 +5784,7 @@ var OmoConfigProfileSchema = object({
|
|
|
5774
5784
|
teams: OmoTeamsConfigLayerSchema.optional(),
|
|
5775
5785
|
models: OmoModelCatalogLayerSchema.optional(),
|
|
5776
5786
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
5787
|
+
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
5777
5788
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
5778
5789
|
"[senpi]": OmoTypedHarnessConfigSchema.optional(),
|
|
5779
5790
|
"[codex]": OmoTypedHarnessConfigSchema.optional()
|
|
@@ -5787,6 +5798,7 @@ var OmoConfigSchema = object({
|
|
|
5787
5798
|
teams: OmoTeamsConfigSchema.optional(),
|
|
5788
5799
|
models: OmoModelCatalogSchema.optional(),
|
|
5789
5800
|
memory: OmoMemorySettingsSchema.optional(),
|
|
5801
|
+
telemetry: OmoTelemetrySettingsSchema.optional(),
|
|
5790
5802
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
5791
5803
|
"[senpi]": OmoTypedHarnessConfigSchema.optional(),
|
|
5792
5804
|
"[codex]": OmoTypedHarnessConfigSchema.optional(),
|
|
@@ -5803,6 +5815,7 @@ var OmoConfigLayerSchema = object({
|
|
|
5803
5815
|
teams: OmoTeamsConfigLayerSchema.optional(),
|
|
5804
5816
|
models: OmoModelCatalogLayerSchema.optional(),
|
|
5805
5817
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
5818
|
+
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
5806
5819
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
5807
5820
|
"[senpi]": OmoTypedHarnessConfigSchema.optional(),
|
|
5808
5821
|
"[codex]": OmoTypedHarnessConfigSchema.optional(),
|
|
@@ -6021,6 +6021,15 @@ var OmoTeamSpecLayerSchema = OmoTeamSpecBaseSchema.partial();
|
|
|
6021
6021
|
var OmoTeamsConfigSchema = record(string2(), OmoTeamSpecSchema);
|
|
6022
6022
|
var OmoTeamsConfigLayerSchema = record(string2(), OmoTeamSpecLayerSchema);
|
|
6023
6023
|
|
|
6024
|
+
// ../../../../omo-config-core/src/schema/telemetry.ts
|
|
6025
|
+
var OmoTelemetrySettingsShape = {
|
|
6026
|
+
enabled: boolean2()
|
|
6027
|
+
};
|
|
6028
|
+
var OmoTelemetrySettingsLayerSchema = object(OmoTelemetrySettingsShape).partial().strict();
|
|
6029
|
+
var OmoTelemetrySettingsSchema = OmoTelemetrySettingsLayerSchema.extend({
|
|
6030
|
+
enabled: boolean2().default(true)
|
|
6031
|
+
}).strict();
|
|
6032
|
+
|
|
6024
6033
|
// ../../../../omo-config-core/src/schema/config.ts
|
|
6025
6034
|
var OmoOpenCodeHarnessConfigSchema = record(string2(), unknown());
|
|
6026
6035
|
var OmoTypedHarnessConfigSchema = object({
|
|
@@ -6030,7 +6039,8 @@ var OmoTypedHarnessConfigSchema = object({
|
|
|
6030
6039
|
task: OmoTaskSettingsLayerSchema.optional(),
|
|
6031
6040
|
teams: OmoTeamsConfigLayerSchema.optional(),
|
|
6032
6041
|
models: OmoModelCatalogLayerSchema.optional(),
|
|
6033
|
-
memory: OmoMemorySettingsLayerSchema.optional()
|
|
6042
|
+
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
6043
|
+
telemetry: OmoTelemetrySettingsLayerSchema.optional()
|
|
6034
6044
|
}).strict();
|
|
6035
6045
|
var OmoConfigProfileSchema = object({
|
|
6036
6046
|
categories: OmoCategoriesConfigSchema.optional(),
|
|
@@ -6040,6 +6050,7 @@ var OmoConfigProfileSchema = object({
|
|
|
6040
6050
|
teams: OmoTeamsConfigLayerSchema.optional(),
|
|
6041
6051
|
models: OmoModelCatalogLayerSchema.optional(),
|
|
6042
6052
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
6053
|
+
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
6043
6054
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
6044
6055
|
"[senpi]": OmoTypedHarnessConfigSchema.optional(),
|
|
6045
6056
|
"[codex]": OmoTypedHarnessConfigSchema.optional()
|
|
@@ -6053,6 +6064,7 @@ var OmoConfigSchema = object({
|
|
|
6053
6064
|
teams: OmoTeamsConfigSchema.optional(),
|
|
6054
6065
|
models: OmoModelCatalogSchema.optional(),
|
|
6055
6066
|
memory: OmoMemorySettingsSchema.optional(),
|
|
6067
|
+
telemetry: OmoTelemetrySettingsSchema.optional(),
|
|
6056
6068
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
6057
6069
|
"[senpi]": OmoTypedHarnessConfigSchema.optional(),
|
|
6058
6070
|
"[codex]": OmoTypedHarnessConfigSchema.optional(),
|
|
@@ -6069,6 +6081,7 @@ var OmoConfigLayerSchema = object({
|
|
|
6069
6081
|
teams: OmoTeamsConfigLayerSchema.optional(),
|
|
6070
6082
|
models: OmoModelCatalogLayerSchema.optional(),
|
|
6071
6083
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
6084
|
+
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
6072
6085
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
6073
6086
|
"[senpi]": OmoTypedHarnessConfigSchema.optional(),
|
|
6074
6087
|
"[codex]": OmoTypedHarnessConfigSchema.optional(),
|
|
@@ -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.6) 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.6) 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.6) Verifying LazyCodex Executor Evidence"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -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.6",
|
|
4
|
+
"inputDigest": "sha256:afdcecf148c40dc379c51029b68a596640534290cbc5fd88359c4e3c937035fd",
|
|
5
5
|
"outputs": [
|
|
6
6
|
{
|
|
7
7
|
"path": "cli.d.ts",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
},
|
|
10
10
|
{
|
|
11
11
|
"path": "cli.js",
|
|
12
|
-
"sha256": "
|
|
12
|
+
"sha256": "8b31921f00d7333877fa0ba3b50e7318096656ad92249b285148c6fada11459d"
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
15
|
"path": "codex-hook-cli.d.ts",
|
|
@@ -8,7 +8,7 @@ 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 realpathSync7 } from "node:fs";
|
|
12
12
|
import { homedir as homedir3 } from "node:os";
|
|
13
13
|
import { join as join11, resolve as resolve11 } from "node:path";
|
|
14
14
|
|
|
@@ -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 existsSync10, statSync as statSync4 } from "node:fs";
|
|
46
|
-
import { dirname as dirname8, join as join4, resolve as resolve7 } from "node:path";
|
|
45
|
+
import { existsSync as existsSync10, realpathSync as realpathSync4, statSync as statSync4 } from "node:fs";
|
|
46
|
+
import { basename as basename3, dirname as dirname8, join as join4, 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";
|
|
@@ -4117,32 +4117,86 @@ function isDirectoryPath(filePath) {
|
|
|
4117
4117
|
}
|
|
4118
4118
|
}
|
|
4119
4119
|
function findWorkspaceRoot(filePath) {
|
|
4120
|
-
const
|
|
4120
|
+
const cwd = contextCwd();
|
|
4121
|
+
const abs = resolveReadablePathInsideContext(filePath);
|
|
4121
4122
|
let dir = abs;
|
|
4122
4123
|
if (!isDirectoryPath(dir)) {
|
|
4123
4124
|
dir = dirname8(dir);
|
|
4124
4125
|
}
|
|
4125
|
-
|
|
4126
|
-
while (dir
|
|
4127
|
-
|
|
4128
|
-
|
|
4129
|
-
|
|
4126
|
+
const fallbackRoot = nearestExistingDirectoryInsideContext(dir, cwd) ?? cwd;
|
|
4127
|
+
while (isPathInside(cwd, dir)) {
|
|
4128
|
+
const canonicalDir = existingDirectoryInsideContext(dir, cwd);
|
|
4129
|
+
if (canonicalDir !== undefined) {
|
|
4130
|
+
for (const marker of WORKSPACE_MARKERS) {
|
|
4131
|
+
if (existsSync10(join4(dir, marker))) {
|
|
4132
|
+
return canonicalDir;
|
|
4133
|
+
}
|
|
4130
4134
|
}
|
|
4131
4135
|
}
|
|
4132
|
-
|
|
4136
|
+
if (dir === cwd)
|
|
4137
|
+
break;
|
|
4133
4138
|
dir = dirname8(dir);
|
|
4134
4139
|
}
|
|
4135
|
-
return
|
|
4140
|
+
return fallbackRoot;
|
|
4136
4141
|
}
|
|
4137
|
-
function
|
|
4142
|
+
function resolveReadablePathInsideContext(filePath) {
|
|
4138
4143
|
const cwd = contextCwd();
|
|
4139
4144
|
const abs = resolve7(cwd, filePath);
|
|
4145
|
+
if (isPathInside(cwd, abs))
|
|
4146
|
+
return abs;
|
|
4147
|
+
const rebased = rebaseThroughCanonicalAncestor(abs, cwd);
|
|
4148
|
+
if (rebased !== undefined)
|
|
4149
|
+
return rebased;
|
|
4150
|
+
const canonical = canonicalizeExistingOrNearestAncestor(abs);
|
|
4151
|
+
if (isPathInside(cwd, canonical))
|
|
4152
|
+
return canonical;
|
|
4153
|
+
throw new LspInvalidPathError(`LSP file path must be inside request cwd: ${filePath}`);
|
|
4154
|
+
}
|
|
4155
|
+
function resolvePathInsideContext(filePath) {
|
|
4156
|
+
const cwd = contextCwd();
|
|
4157
|
+
const abs = resolveReadablePathInsideContext(filePath);
|
|
4140
4158
|
const canonical = canonicalizeExistingOrNearestAncestor(abs);
|
|
4141
4159
|
if (!isPathInside(cwd, canonical)) {
|
|
4142
4160
|
throw new LspInvalidPathError(`LSP file path must be inside request cwd: ${filePath}`);
|
|
4143
4161
|
}
|
|
4144
4162
|
return canonical;
|
|
4145
4163
|
}
|
|
4164
|
+
function rebaseThroughCanonicalAncestor(path2, cwd) {
|
|
4165
|
+
let current = path2;
|
|
4166
|
+
const suffix = [];
|
|
4167
|
+
while (true) {
|
|
4168
|
+
if (existsSync10(current)) {
|
|
4169
|
+
const canonical = realpathSync4(current);
|
|
4170
|
+
if (isPathInside(cwd, canonical))
|
|
4171
|
+
return suffix.length === 0 ? canonical : join4(canonical, ...suffix);
|
|
4172
|
+
}
|
|
4173
|
+
const parent = dirname8(current);
|
|
4174
|
+
if (parent === current)
|
|
4175
|
+
return;
|
|
4176
|
+
suffix.unshift(basename3(current));
|
|
4177
|
+
current = parent;
|
|
4178
|
+
}
|
|
4179
|
+
}
|
|
4180
|
+
function existingDirectoryInsideContext(directory, cwd) {
|
|
4181
|
+
if (!existsSync10(directory))
|
|
4182
|
+
return;
|
|
4183
|
+
const canonical = realpathSync4(directory);
|
|
4184
|
+
if (!statSync4(canonical).isDirectory())
|
|
4185
|
+
return;
|
|
4186
|
+
return isPathInside(cwd, canonical) ? canonical : undefined;
|
|
4187
|
+
}
|
|
4188
|
+
function nearestExistingDirectoryInsideContext(directory, cwd) {
|
|
4189
|
+
let current = directory;
|
|
4190
|
+
while (isPathInside(cwd, current)) {
|
|
4191
|
+
const canonical = existingDirectoryInsideContext(current, cwd);
|
|
4192
|
+
if (canonical !== undefined)
|
|
4193
|
+
return canonical;
|
|
4194
|
+
if (current === cwd)
|
|
4195
|
+
return;
|
|
4196
|
+
current = dirname8(current);
|
|
4197
|
+
}
|
|
4198
|
+
return;
|
|
4199
|
+
}
|
|
4146
4200
|
function formatServerLookupError(result) {
|
|
4147
4201
|
if (result.status === "not_installed") {
|
|
4148
4202
|
return formatNotInstalled(result);
|
|
@@ -4213,7 +4267,7 @@ function formatNotInstalled(result) {
|
|
|
4213
4267
|
].join(`
|
|
4214
4268
|
`);
|
|
4215
4269
|
}
|
|
4216
|
-
var
|
|
4270
|
+
var READ_ONLY_TOOLS = new Set([
|
|
4217
4271
|
"diagnostics",
|
|
4218
4272
|
"definition",
|
|
4219
4273
|
"references",
|
|
@@ -4222,7 +4276,7 @@ var READ_ONLY_RETRY_TOOLS = new Set([
|
|
|
4222
4276
|
"prepareRename"
|
|
4223
4277
|
]);
|
|
4224
4278
|
async function withLspClient(filePath, fn, toolName, options = {}) {
|
|
4225
|
-
const absPath = resolvePathInsideContext(filePath);
|
|
4279
|
+
const absPath = READ_ONLY_TOOLS.has(toolName) ? resolveReadablePathInsideContext(filePath) : resolvePathInsideContext(filePath);
|
|
4226
4280
|
if (isDirectoryPath(absPath)) {
|
|
4227
4281
|
throw new LspInvalidPathError("Directory paths are not supported by this LSP tool. " + "Use lsp.diagnostics with a directory path for directory diagnostics.");
|
|
4228
4282
|
}
|
|
@@ -4237,9 +4291,9 @@ async function withLspClient(filePath, fn, toolName, options = {}) {
|
|
|
4237
4291
|
const acquireAndCall = async (allowRetry) => {
|
|
4238
4292
|
const client = await manager.getClient(root, server2, options.signal);
|
|
4239
4293
|
try {
|
|
4240
|
-
return await fn(client, root);
|
|
4294
|
+
return await fn(client, root, absPath);
|
|
4241
4295
|
} catch (err) {
|
|
4242
|
-
if (allowRetry &&
|
|
4296
|
+
if (allowRetry && READ_ONLY_TOOLS.has(toolName) && isLspDeadConnectionError(err)) {
|
|
4243
4297
|
manager.invalidateClient(root, server2.id, client);
|
|
4244
4298
|
return acquireAndCall(false);
|
|
4245
4299
|
}
|
|
@@ -4669,7 +4723,7 @@ async function executeLspDiagnostics(params, signal) {
|
|
|
4669
4723
|
const filePath = requireString(params, "filePath");
|
|
4670
4724
|
const severity = severityFilter(params);
|
|
4671
4725
|
try {
|
|
4672
|
-
const absPath =
|
|
4726
|
+
const absPath = resolveReadablePathInsideContext(filePath);
|
|
4673
4727
|
if (isDirectoryPath(absPath)) {
|
|
4674
4728
|
const extension = inferExtensionFromDirectory(absPath);
|
|
4675
4729
|
if (!extension) {
|
|
@@ -4698,7 +4752,7 @@ async function executeLspDiagnostics(params, signal) {
|
|
|
4698
4752
|
};
|
|
4699
4753
|
return text(output2.output, details2);
|
|
4700
4754
|
}
|
|
4701
|
-
const result = await withLspClient(filePath, async (client) => client.diagnostics(
|
|
4755
|
+
const result = await withLspClient(filePath, async (client, _workspaceRoot, resolvedFilePath) => client.diagnostics(resolvedFilePath, signal), "diagnostics", clientOptions(signal));
|
|
4702
4756
|
if (result.transientError) {
|
|
4703
4757
|
const message = result.transientError.message;
|
|
4704
4758
|
const details2 = {
|
|
@@ -4770,7 +4824,7 @@ async function executeLspGotoDefinition(params, signal) {
|
|
|
4770
4824
|
const line = requireNumber(params, "line");
|
|
4771
4825
|
const character = requireNumber(params, "character");
|
|
4772
4826
|
try {
|
|
4773
|
-
const result = await withLspClient(filePath, async (client) => client.definition(
|
|
4827
|
+
const result = await withLspClient(filePath, async (client, _workspaceRoot, resolvedFilePath) => client.definition(resolvedFilePath, line, character, signal), "definition", clientOptions(signal));
|
|
4774
4828
|
const locations = !result ? [] : Array.isArray(result) ? result : [result];
|
|
4775
4829
|
const details = { filePath, line, character, locations };
|
|
4776
4830
|
if (locations.length === 0)
|
|
@@ -4795,7 +4849,7 @@ async function executeLspFindReferences(params, signal) {
|
|
|
4795
4849
|
const character = requireNumber(params, "character");
|
|
4796
4850
|
const includeDeclaration = optionalBoolean(params, "includeDeclaration") ?? true;
|
|
4797
4851
|
try {
|
|
4798
|
-
const result = await withLspClient(filePath, async (client) => client.references(
|
|
4852
|
+
const result = await withLspClient(filePath, async (client, _workspaceRoot, resolvedFilePath) => client.references(resolvedFilePath, line, character, includeDeclaration, signal), "references", clientOptions(signal));
|
|
4799
4853
|
const references = Array.isArray(result) ? result : [];
|
|
4800
4854
|
const total = references.length;
|
|
4801
4855
|
const truncated = total > DEFAULT_MAX_REFERENCES;
|
|
@@ -4835,7 +4889,7 @@ async function executeLspPrepareRename(params, signal) {
|
|
|
4835
4889
|
const line = requireNumber(params, "line");
|
|
4836
4890
|
const character = requireNumber(params, "character");
|
|
4837
4891
|
try {
|
|
4838
|
-
const result = await withLspClient(filePath, async (client) => client.prepareRename(
|
|
4892
|
+
const result = await withLspClient(filePath, async (client, _workspaceRoot, resolvedFilePath) => client.prepareRename(resolvedFilePath, line, character, signal), "prepareRename", clientOptions(signal));
|
|
4839
4893
|
const details = { filePath, line, character, result };
|
|
4840
4894
|
return text(formatPrepareRenameResult(result), details);
|
|
4841
4895
|
} catch (error) {
|
|
@@ -4856,7 +4910,7 @@ async function executeLspRename(params, signal) {
|
|
|
4856
4910
|
const character = requireNumber(params, "character");
|
|
4857
4911
|
const newName = requireString(params, "newName");
|
|
4858
4912
|
try {
|
|
4859
|
-
const result = await withLspClient(filePath, async (client) => client.rename(
|
|
4913
|
+
const result = await withLspClient(filePath, async (client, _workspaceRoot, resolvedFilePath) => client.rename(resolvedFilePath, line, character, newName, signal), "rename", clientOptions(signal));
|
|
4860
4914
|
const details = { filePath, line, character, newName, apply: result.apply, edit: result.edit };
|
|
4861
4915
|
return text(formatApplyResult(result.apply), details, !result.apply.success);
|
|
4862
4916
|
} catch (error) {
|
|
@@ -4930,7 +4984,7 @@ async function executeLspSymbols(params, signal) {
|
|
|
4930
4984
|
const symbols2 = await withLspClient(filePath, async (client) => client.workspaceSymbols(query, signal), "workspaceSymbols", clientOptions(signal));
|
|
4931
4985
|
return formatSymbolsResult(filePath, scope, symbols2, limit, query);
|
|
4932
4986
|
}
|
|
4933
|
-
const symbols = await withLspClient(filePath, async (client) => client.documentSymbols(
|
|
4987
|
+
const symbols = await withLspClient(filePath, async (client, _workspaceRoot, resolvedFilePath) => client.documentSymbols(resolvedFilePath, signal), "documentSymbols", clientOptions(signal));
|
|
4934
4988
|
return formatSymbolsResult(filePath, scope, symbols, limit);
|
|
4935
4989
|
} catch (error) {
|
|
4936
4990
|
const query = optionalString(params, "query");
|
|
@@ -5400,8 +5454,8 @@ function extensionKey(filePath) {
|
|
|
5400
5454
|
}
|
|
5401
5455
|
// ../../../../lsp-core/src/request-context.ts
|
|
5402
5456
|
import { AsyncLocalStorage as AsyncLocalStorage2 } from "node:async_hooks";
|
|
5403
|
-
import { existsSync as existsSync12, realpathSync as
|
|
5404
|
-
import { basename as
|
|
5457
|
+
import { existsSync as existsSync12, realpathSync as realpathSync5, statSync as statSync6 } from "node:fs";
|
|
5458
|
+
import { basename as basename4, delimiter as delimiter4, dirname as dirname2, isAbsolute as isAbsolute6, join as join7, relative as relative5, resolve as resolve9 } from "node:path";
|
|
5405
5459
|
|
|
5406
5460
|
class LspRequestContextParseError2 extends Error {
|
|
5407
5461
|
code;
|
|
@@ -5447,14 +5501,14 @@ function canonicalCwd2(cwd) {
|
|
|
5447
5501
|
if (!existsSync12(resolved) || !statSync6(resolved).isDirectory()) {
|
|
5448
5502
|
throw new LspRequestContextParseError2("invalid_cwd", `LSP request cwd must be an existing directory: ${cwd}`);
|
|
5449
5503
|
}
|
|
5450
|
-
return
|
|
5504
|
+
return realpathSync5(resolved);
|
|
5451
5505
|
}
|
|
5452
5506
|
function canonicalizeExistingOrNearestAncestor2(path2) {
|
|
5453
5507
|
let current = resolve9(path2);
|
|
5454
5508
|
const suffix = [];
|
|
5455
5509
|
while (true) {
|
|
5456
5510
|
try {
|
|
5457
|
-
const existing =
|
|
5511
|
+
const existing = realpathSync5(current);
|
|
5458
5512
|
return suffix.length === 0 ? existing : join7(existing, ...suffix);
|
|
5459
5513
|
} catch (error) {
|
|
5460
5514
|
if (!isMissingPathError2(error))
|
|
@@ -5462,7 +5516,7 @@ function canonicalizeExistingOrNearestAncestor2(path2) {
|
|
|
5462
5516
|
const parent = dirname2(current);
|
|
5463
5517
|
if (parent === current)
|
|
5464
5518
|
throw error;
|
|
5465
|
-
suffix.unshift(
|
|
5519
|
+
suffix.unshift(basename4(current));
|
|
5466
5520
|
current = parent;
|
|
5467
5521
|
}
|
|
5468
5522
|
}
|
|
@@ -5775,7 +5829,7 @@ function notConfiguredAvailability(details) {
|
|
|
5775
5829
|
return typeof extension === "string" && extension.length > 0 ? { extension } : undefined;
|
|
5776
5830
|
}
|
|
5777
5831
|
function codexLspRequestContext(env = process.env, cwd = process.cwd()) {
|
|
5778
|
-
const canonicalCwd3 =
|
|
5832
|
+
const canonicalCwd3 = realpathSync7(resolve11(cwd));
|
|
5779
5833
|
const codexHome = resolve11(env["CODEX_HOME"]?.trim() || join11(homedir3(), ".codex"));
|
|
5780
5834
|
return parseLspRequestContext2({
|
|
5781
5835
|
cwd: canonicalCwd3,
|
|
@@ -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.6) 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.6) 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.6) 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.6) 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.6) 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.6) 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.6) 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.6) 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.6) Checking Thread Title Hygiene"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -174,6 +174,7 @@ function writePostHogActivityState(stateDir, nextState, diagnostics) {
|
|
|
174
174
|
// ../../telemetry-core/src/constants.ts
|
|
175
175
|
var DEFAULT_POSTHOG_HOST = "https://us.i.posthog.com";
|
|
176
176
|
var DEFAULT_POSTHOG_API_KEY = "phc_CFJhj5HyvA62QPhvyaUCtaq23aUfznnijg5VaaGkNk74";
|
|
177
|
+
var UNCONFIGURED_POSTHOG_API_KEY = "phc_REPLACE_ME_OMO_NATIVE";
|
|
177
178
|
|
|
178
179
|
// ../../telemetry-core/src/diagnostics.ts
|
|
179
180
|
import { appendFileSync, existsSync as existsSync2, mkdirSync as mkdirSync3, readFileSync as readFileSync2 } from "node:fs";
|
|
@@ -310,6 +311,9 @@ function shouldDisableTelemetry(input) {
|
|
|
310
311
|
const env = input.env ?? process.env;
|
|
311
312
|
const globalPrefix = input.globalEnvPrefix ?? "OMO";
|
|
312
313
|
const prefixes = Array.from(new Set([globalPrefix, input.productEnvPrefix]));
|
|
314
|
+
if (isDisableFlag(env["DO_NOT_TRACK"])) {
|
|
315
|
+
return true;
|
|
316
|
+
}
|
|
313
317
|
for (const prefix of prefixes) {
|
|
314
318
|
if (isDisableFlag(env[`${prefix}_DISABLE_POSTHOG`])) {
|
|
315
319
|
return true;
|
|
@@ -323,18 +327,15 @@ function shouldDisableTelemetry(input) {
|
|
|
323
327
|
function getTelemetryApiKey(env = process.env, defaultApiKey = DEFAULT_POSTHOG_API_KEY) {
|
|
324
328
|
return env["POSTHOG_API_KEY"]?.trim() ?? defaultApiKey;
|
|
325
329
|
}
|
|
326
|
-
function
|
|
327
|
-
|
|
330
|
+
function isConfiguredTelemetryApiKey(apiKey) {
|
|
331
|
+
const normalized = apiKey.trim();
|
|
332
|
+
return normalized.length > 0 && normalized !== UNCONFIGURED_POSTHOG_API_KEY;
|
|
328
333
|
}
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
import { createHash } from "node:crypto";
|
|
332
|
-
import os2 from "node:os";
|
|
333
|
-
function getDefaultTelemetryOsProvider() {
|
|
334
|
-
return os2;
|
|
334
|
+
function hasTelemetryApiKey(env, defaultApiKey) {
|
|
335
|
+
return isConfiguredTelemetryApiKey(getTelemetryApiKey(env, defaultApiKey));
|
|
335
336
|
}
|
|
336
|
-
function
|
|
337
|
-
return
|
|
337
|
+
function getTelemetryHost(env = process.env, defaultHost = DEFAULT_POSTHOG_HOST) {
|
|
338
|
+
return env["POSTHOG_HOST"]?.trim() || defaultHost;
|
|
338
339
|
}
|
|
339
340
|
|
|
340
341
|
// ../../../node_modules/.bun/posthog-node@5.35.12/node_modules/posthog-node/dist/extensions/error-tracking/modifiers/module.node.mjs
|
|
@@ -5504,6 +5505,16 @@ class PostHog extends PostHogBackendClient {
|
|
|
5504
5505
|
}
|
|
5505
5506
|
}
|
|
5506
5507
|
|
|
5508
|
+
// ../../telemetry-core/src/machine-id.ts
|
|
5509
|
+
import { createHash } from "node:crypto";
|
|
5510
|
+
import os2 from "node:os";
|
|
5511
|
+
function getDefaultTelemetryOsProvider() {
|
|
5512
|
+
return os2;
|
|
5513
|
+
}
|
|
5514
|
+
function getTelemetryDistinctId(machineIdPrefix, osProvider = getDefaultTelemetryOsProvider()) {
|
|
5515
|
+
return createHash("sha256").update(`${machineIdPrefix}${osProvider.hostname()}`).digest("hex");
|
|
5516
|
+
}
|
|
5517
|
+
|
|
5507
5518
|
// ../../telemetry-core/src/posthog-client.ts
|
|
5508
5519
|
var NO_OP_CLIENT = {
|
|
5509
5520
|
enabled: false,
|
|
@@ -5538,7 +5549,7 @@ function createDefaultPostHogTransport(apiKey, options) {
|
|
|
5538
5549
|
}
|
|
5539
5550
|
function isTelemetryClientEnabled(input) {
|
|
5540
5551
|
const env = input.env ?? process.env;
|
|
5541
|
-
return !shouldDisableTelemetry({ env, productEnvPrefix: input.product.productEnvPrefix }) &&
|
|
5552
|
+
return !shouldDisableTelemetry({ env, productEnvPrefix: input.product.productEnvPrefix }) && hasTelemetryApiKey(env, input.product.defaultApiKey);
|
|
5542
5553
|
}
|
|
5543
5554
|
function createTelemetryClient(input) {
|
|
5544
5555
|
if (!isTelemetryClientEnabled(input)) {
|
|
@@ -5604,7 +5615,8 @@ function createTransport(input) {
|
|
|
5604
5615
|
flushAt: 1,
|
|
5605
5616
|
flushInterval: 0,
|
|
5606
5617
|
host: getTelemetryHost(env, input.product.defaultHost),
|
|
5607
|
-
disableGeoip: false
|
|
5618
|
+
disableGeoip: input.product.disableGeoip ?? false,
|
|
5619
|
+
...input.product.transportOptions
|
|
5608
5620
|
});
|
|
5609
5621
|
} catch (error) {
|
|
5610
5622
|
input.diagnostics?.({
|