lazycodex-ai 5.1.13 → 5.1.14
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 +17 -17
- package/dist/cli-node/index.js +17 -17
- package/package.json +1 -1
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
- package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
- package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +4 -4
- package/packages/omo-codex/plugin/components/lsp/dist/cli.js +33 -19
- package/packages/omo-codex/plugin/components/lsp/dist/codex-hook.js +27 -17
- 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/lsp/src/codex-hook.ts +36 -18
- package/packages/omo-codex/plugin/components/lsp/test/codex-hook-not-installed.test.ts +203 -0
- package/packages/omo-codex/plugin/components/rules/CHANGELOG.md +1 -0
- package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus/gpt-6.md +1 -1
- package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/rules/package.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
- package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
- package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/package-lock.json +12 -12
- package/packages/omo-codex/plugin/package.json +1 -1
- package/packages/omo-codex/plugin/skills/browser/SKILL.md +26 -2
- package/packages/omo-codex/plugin/skills/browser/references/commands.md +10 -1
- package/packages/omo-codex/plugin/skills/browser/references/install.md +7 -0
- package/packages/omo-codex/plugin/skills/browser/runtime/omowright/manifest.json +1 -1
- package/packages/omo-codex/plugin/skills/browser/scripts/browser-engine-guard.mjs +506 -0
- package/packages/omo-codex/plugin/skills/browser/scripts/omowright.mjs +29 -2
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +2 -2
- package/packages/shared-skills/skills/browser/SKILL.md +26 -2
- package/packages/shared-skills/skills/browser/references/commands.md +10 -1
- package/packages/shared-skills/skills/browser/references/install.md +7 -0
- package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +1 -1
- package/packages/shared-skills/skills/browser/scripts/browser-engine-guard.mjs +506 -0
- package/packages/shared-skills/skills/browser/scripts/omowright.mjs +29 -2
package/dist/cli/index.js
CHANGED
|
@@ -64,7 +64,7 @@ var package_default;
|
|
|
64
64
|
var init_package = __esm(() => {
|
|
65
65
|
package_default = {
|
|
66
66
|
name: "oh-my-opencode",
|
|
67
|
-
version: "5.1.
|
|
67
|
+
version: "5.1.14",
|
|
68
68
|
description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
69
69
|
main: "./dist/index.js",
|
|
70
70
|
types: "dist/index.d.ts",
|
|
@@ -241,7 +241,7 @@ var init_package = __esm(() => {
|
|
|
241
241
|
},
|
|
242
242
|
devDependencies: {
|
|
243
243
|
"@clack/prompts": "^1.8.1",
|
|
244
|
-
"@code-yeongyu/senpi": "2026.10.
|
|
244
|
+
"@code-yeongyu/senpi": "2026.10.5",
|
|
245
245
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
246
246
|
"@oh-my-opencode/agents-md-core": "workspace:*",
|
|
247
247
|
"@oh-my-opencode/ast-grep-mcp": "workspace:*",
|
|
@@ -299,18 +299,18 @@ var init_package = __esm(() => {
|
|
|
299
299
|
typescript: "^7.0.2"
|
|
300
300
|
},
|
|
301
301
|
optionalDependencies: {
|
|
302
|
-
"oh-my-opencode-darwin-arm64": "5.1.
|
|
303
|
-
"oh-my-opencode-darwin-x64": "5.1.
|
|
304
|
-
"oh-my-opencode-darwin-x64-baseline": "5.1.
|
|
305
|
-
"oh-my-opencode-linux-arm64": "5.1.
|
|
306
|
-
"oh-my-opencode-linux-arm64-musl": "5.1.
|
|
307
|
-
"oh-my-opencode-linux-x64": "5.1.
|
|
308
|
-
"oh-my-opencode-linux-x64-baseline": "5.1.
|
|
309
|
-
"oh-my-opencode-linux-x64-musl": "5.1.
|
|
310
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.1.
|
|
311
|
-
"oh-my-opencode-windows-arm64": "5.1.
|
|
312
|
-
"oh-my-opencode-windows-x64": "5.1.
|
|
313
|
-
"oh-my-opencode-windows-x64-baseline": "5.1.
|
|
302
|
+
"oh-my-opencode-darwin-arm64": "5.1.14",
|
|
303
|
+
"oh-my-opencode-darwin-x64": "5.1.14",
|
|
304
|
+
"oh-my-opencode-darwin-x64-baseline": "5.1.14",
|
|
305
|
+
"oh-my-opencode-linux-arm64": "5.1.14",
|
|
306
|
+
"oh-my-opencode-linux-arm64-musl": "5.1.14",
|
|
307
|
+
"oh-my-opencode-linux-x64": "5.1.14",
|
|
308
|
+
"oh-my-opencode-linux-x64-baseline": "5.1.14",
|
|
309
|
+
"oh-my-opencode-linux-x64-musl": "5.1.14",
|
|
310
|
+
"oh-my-opencode-linux-x64-musl-baseline": "5.1.14",
|
|
311
|
+
"oh-my-opencode-windows-arm64": "5.1.14",
|
|
312
|
+
"oh-my-opencode-windows-x64": "5.1.14",
|
|
313
|
+
"oh-my-opencode-windows-x64-baseline": "5.1.14"
|
|
314
314
|
},
|
|
315
315
|
overrides: {
|
|
316
316
|
hono: "^4.13.8",
|
|
@@ -9493,7 +9493,7 @@ You are working on tasks that don't fit specific categories but require moderate
|
|
|
9493
9493
|
</Category_Context>`, UNSPECIFIED_LOW_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Use only when no specialist category fits, effort is moderate, and scope stays within a few files/modules. Prefer any matching specialist category.</Selection_Gate>
|
|
9494
9494
|
<Caller_Warning>Provide explicit must-do steps, forbidden scope, and concrete success criteria.</Caller_Warning>`, UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND = `<Category_Context>
|
|
9495
9495
|
You are working on tasks that don't fit specific categories but require substantial effort.
|
|
9496
|
-
</Category_Context>`, UNSPECIFIED_HIGH_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Use only when no specialist category fits and substantial effort spans systems/modules with broad impact. Use unspecified-low for contained moderate work.</Selection_Gate>`, DEEP_LOW_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>
|
|
9496
|
+
</Category_Context>`, UNSPECIFIED_HIGH_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Use only when no specialist category fits and substantial effort spans systems/modules with broad impact. Use unspecified-low for contained moderate work.</Selection_Gate>`, DEEP_LOW_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Of the two deep lanes this is the default: the child settles its decisions from what it reads. When unsure, choose deep-low; a misrouted child returns \`ESCALATE: deep-high\` after one cheap attempt, and you re-spawn the same brief as deep-high with its findings.</Selection_Gate>`, DEEP_HIGH_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Route here only when you can name the decision evidence cannot settle: a trade-off with no single right answer, a contract change crossing a package or process boundary, a mechanism with no in-repo pattern to copy, or correctness argued from invariants rather than observed in a test. Wide scope with easy decisions is deep-low or unspecified-high; reasoning as the deliverable is ultrabrain.</Selection_Gate>`, DEEP_LOW_GATE_MODELS, DEEP_HIGH_GATE_MODEL = "gpt-6-astra", OPENAI_CATEGORIES;
|
|
9497
9497
|
var init_openai_categories = __esm(() => {
|
|
9498
9498
|
init_types();
|
|
9499
9499
|
DEEP_LOW_GATE_MODELS = ["gpt-6.1-sol", "gpt-6.1-sol-fast", "gpt-5.6-sol-fast", "gpt-5.6-sol"];
|
|
@@ -9508,7 +9508,7 @@ var init_openai_categories = __esm(() => {
|
|
|
9508
9508
|
{
|
|
9509
9509
|
name: "deep-low",
|
|
9510
9510
|
config: { model: "openai/gpt-6.1-sol", variant: "medium" },
|
|
9511
|
-
description: "Default deep lane: one goal, one deliverable, decisions the child can settle from what it reads
|
|
9511
|
+
description: "Default deep lane: one goal, one deliverable, decisions the child can settle from what it reads; preferred over deep-high for 3D graphics, computer/browser use, CAPTCHA, multimodal, backend, logic, and algorithm work. Multiple goals fan out as parallel calls.",
|
|
9512
9512
|
callerGuidance: DEEP_LOW_CATEGORY_CALLER_GUIDANCE,
|
|
9513
9513
|
promptAppend: DEEP_LOW_CATEGORY_PROMPT_APPEND,
|
|
9514
9514
|
resolvePromptAppend: resolveDeepLowCategoryPromptAppend,
|
|
@@ -89369,7 +89369,7 @@ var package_default2;
|
|
|
89369
89369
|
var init_package2 = __esm(() => {
|
|
89370
89370
|
package_default2 = {
|
|
89371
89371
|
name: "@oh-my-opencode/omo-codex",
|
|
89372
|
-
version: "5.1.
|
|
89372
|
+
version: "5.1.14",
|
|
89373
89373
|
type: "module",
|
|
89374
89374
|
private: true,
|
|
89375
89375
|
description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
|
package/dist/cli-node/index.js
CHANGED
|
@@ -65,7 +65,7 @@ var package_default;
|
|
|
65
65
|
var init_package = __esm(() => {
|
|
66
66
|
package_default = {
|
|
67
67
|
name: "oh-my-opencode",
|
|
68
|
-
version: "5.1.
|
|
68
|
+
version: "5.1.14",
|
|
69
69
|
description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
70
70
|
main: "./dist/index.js",
|
|
71
71
|
types: "dist/index.d.ts",
|
|
@@ -242,7 +242,7 @@ var init_package = __esm(() => {
|
|
|
242
242
|
},
|
|
243
243
|
devDependencies: {
|
|
244
244
|
"@clack/prompts": "^1.8.1",
|
|
245
|
-
"@code-yeongyu/senpi": "2026.10.
|
|
245
|
+
"@code-yeongyu/senpi": "2026.10.5",
|
|
246
246
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
247
247
|
"@oh-my-opencode/agents-md-core": "workspace:*",
|
|
248
248
|
"@oh-my-opencode/ast-grep-mcp": "workspace:*",
|
|
@@ -300,18 +300,18 @@ var init_package = __esm(() => {
|
|
|
300
300
|
typescript: "^7.0.2"
|
|
301
301
|
},
|
|
302
302
|
optionalDependencies: {
|
|
303
|
-
"oh-my-opencode-darwin-arm64": "5.1.
|
|
304
|
-
"oh-my-opencode-darwin-x64": "5.1.
|
|
305
|
-
"oh-my-opencode-darwin-x64-baseline": "5.1.
|
|
306
|
-
"oh-my-opencode-linux-arm64": "5.1.
|
|
307
|
-
"oh-my-opencode-linux-arm64-musl": "5.1.
|
|
308
|
-
"oh-my-opencode-linux-x64": "5.1.
|
|
309
|
-
"oh-my-opencode-linux-x64-baseline": "5.1.
|
|
310
|
-
"oh-my-opencode-linux-x64-musl": "5.1.
|
|
311
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.1.
|
|
312
|
-
"oh-my-opencode-windows-arm64": "5.1.
|
|
313
|
-
"oh-my-opencode-windows-x64": "5.1.
|
|
314
|
-
"oh-my-opencode-windows-x64-baseline": "5.1.
|
|
303
|
+
"oh-my-opencode-darwin-arm64": "5.1.14",
|
|
304
|
+
"oh-my-opencode-darwin-x64": "5.1.14",
|
|
305
|
+
"oh-my-opencode-darwin-x64-baseline": "5.1.14",
|
|
306
|
+
"oh-my-opencode-linux-arm64": "5.1.14",
|
|
307
|
+
"oh-my-opencode-linux-arm64-musl": "5.1.14",
|
|
308
|
+
"oh-my-opencode-linux-x64": "5.1.14",
|
|
309
|
+
"oh-my-opencode-linux-x64-baseline": "5.1.14",
|
|
310
|
+
"oh-my-opencode-linux-x64-musl": "5.1.14",
|
|
311
|
+
"oh-my-opencode-linux-x64-musl-baseline": "5.1.14",
|
|
312
|
+
"oh-my-opencode-windows-arm64": "5.1.14",
|
|
313
|
+
"oh-my-opencode-windows-x64": "5.1.14",
|
|
314
|
+
"oh-my-opencode-windows-x64-baseline": "5.1.14"
|
|
315
315
|
},
|
|
316
316
|
overrides: {
|
|
317
317
|
hono: "^4.13.8",
|
|
@@ -9494,7 +9494,7 @@ You are working on tasks that don't fit specific categories but require moderate
|
|
|
9494
9494
|
</Category_Context>`, UNSPECIFIED_LOW_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Use only when no specialist category fits, effort is moderate, and scope stays within a few files/modules. Prefer any matching specialist category.</Selection_Gate>
|
|
9495
9495
|
<Caller_Warning>Provide explicit must-do steps, forbidden scope, and concrete success criteria.</Caller_Warning>`, UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND = `<Category_Context>
|
|
9496
9496
|
You are working on tasks that don't fit specific categories but require substantial effort.
|
|
9497
|
-
</Category_Context>`, UNSPECIFIED_HIGH_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Use only when no specialist category fits and substantial effort spans systems/modules with broad impact. Use unspecified-low for contained moderate work.</Selection_Gate>`, DEEP_LOW_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>
|
|
9497
|
+
</Category_Context>`, UNSPECIFIED_HIGH_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Use only when no specialist category fits and substantial effort spans systems/modules with broad impact. Use unspecified-low for contained moderate work.</Selection_Gate>`, DEEP_LOW_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Of the two deep lanes this is the default: the child settles its decisions from what it reads. When unsure, choose deep-low; a misrouted child returns \`ESCALATE: deep-high\` after one cheap attempt, and you re-spawn the same brief as deep-high with its findings.</Selection_Gate>`, DEEP_HIGH_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Route here only when you can name the decision evidence cannot settle: a trade-off with no single right answer, a contract change crossing a package or process boundary, a mechanism with no in-repo pattern to copy, or correctness argued from invariants rather than observed in a test. Wide scope with easy decisions is deep-low or unspecified-high; reasoning as the deliverable is ultrabrain.</Selection_Gate>`, DEEP_LOW_GATE_MODELS, DEEP_HIGH_GATE_MODEL = "gpt-6-astra", OPENAI_CATEGORIES;
|
|
9498
9498
|
var init_openai_categories = __esm(() => {
|
|
9499
9499
|
init_types();
|
|
9500
9500
|
DEEP_LOW_GATE_MODELS = ["gpt-6.1-sol", "gpt-6.1-sol-fast", "gpt-5.6-sol-fast", "gpt-5.6-sol"];
|
|
@@ -9509,7 +9509,7 @@ var init_openai_categories = __esm(() => {
|
|
|
9509
9509
|
{
|
|
9510
9510
|
name: "deep-low",
|
|
9511
9511
|
config: { model: "openai/gpt-6.1-sol", variant: "medium" },
|
|
9512
|
-
description: "Default deep lane: one goal, one deliverable, decisions the child can settle from what it reads
|
|
9512
|
+
description: "Default deep lane: one goal, one deliverable, decisions the child can settle from what it reads; preferred over deep-high for 3D graphics, computer/browser use, CAPTCHA, multimodal, backend, logic, and algorithm work. Multiple goals fan out as parallel calls.",
|
|
9513
9513
|
callerGuidance: DEEP_LOW_CATEGORY_CALLER_GUIDANCE,
|
|
9514
9514
|
promptAppend: DEEP_LOW_CATEGORY_PROMPT_APPEND,
|
|
9515
9515
|
resolvePromptAppend: resolveDeepLowCategoryPromptAppend,
|
|
@@ -89448,7 +89448,7 @@ var package_default2;
|
|
|
89448
89448
|
var init_package2 = __esm(() => {
|
|
89449
89449
|
package_default2 = {
|
|
89450
89450
|
name: "@oh-my-opencode/omo-codex",
|
|
89451
|
-
version: "5.1.
|
|
89451
|
+
version: "5.1.14",
|
|
89452
89452
|
type: "module",
|
|
89453
89453
|
private: true,
|
|
89454
89454
|
description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lazycodex-ai",
|
|
3
|
-
"version": "5.1.
|
|
3
|
+
"version": "5.1.14",
|
|
4
4
|
"description": "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/bootstrap/dist/cli.js\" hook session-start",
|
|
9
9
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\bootstrap.ps1\"",
|
|
10
10
|
"timeout": 30,
|
|
11
|
-
"statusMessage": "(OmO 5.1.
|
|
11
|
+
"statusMessage": "(OmO 5.1.14) Checking Bootstrap Provisioning"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -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.1.
|
|
11
|
+
"statusMessage": "(OmO 5.1.14) 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.1.
|
|
23
|
+
"statusMessage": "(OmO 5.1.14) 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.1.
|
|
11
|
+
"statusMessage": "(OmO 5.1.14) Verifying LazyCodex Executor Evidence"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"version": "5.1.
|
|
4
|
-
"inputDigest": "sha256:
|
|
3
|
+
"version": "5.1.14",
|
|
4
|
+
"inputDigest": "sha256:d1ee8c51725f4649bd6437bbe0a02cf6f922ce19e2229d12d02c4d3ddccdafde",
|
|
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": "f2776c0f9c2a893136e9e8e36c2e086172f10c0ab3566a730cff4443b712f956"
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
15
|
"path": "codex-hook-cli.d.ts",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
},
|
|
26
26
|
{
|
|
27
27
|
"path": "codex-hook.js",
|
|
28
|
-
"sha256": "
|
|
28
|
+
"sha256": "6e054189fe9efc941916d3469f1342344aadc20215c91fa6209e2f98139d6ed5"
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
31
|
"path": "daemon-cli-path.d.ts",
|
|
@@ -5958,7 +5958,11 @@ async function collectPostEditDiagnostics(input) {
|
|
|
5958
5958
|
observations.push({ filePath: result.filePath, kind: "not_configured" });
|
|
5959
5959
|
break;
|
|
5960
5960
|
case "block":
|
|
5961
|
-
blocks.push({ filePath: result.filePath, diagnostics: classification.diagnostics });
|
|
5961
|
+
blocks.push({ filePath: result.filePath, diagnostics: classification.diagnostics, blocking: true });
|
|
5962
|
+
observations.push({ filePath: result.filePath, kind: "block" });
|
|
5963
|
+
break;
|
|
5964
|
+
case "guidance":
|
|
5965
|
+
blocks.push({ filePath: result.filePath, diagnostics: classification.text, blocking: false });
|
|
5962
5966
|
observations.push({ filePath: result.filePath, kind: "block" });
|
|
5963
5967
|
break;
|
|
5964
5968
|
default: {
|
|
@@ -6020,7 +6024,7 @@ function normalizeDiagnosticsOutcome(outcome) {
|
|
|
6020
6024
|
return outcome;
|
|
6021
6025
|
}
|
|
6022
6026
|
function classifyNotInstalled(guidance) {
|
|
6023
|
-
return guidance === undefined ? { kind: "not_installed" } : { kind: "
|
|
6027
|
+
return guidance === undefined ? { kind: "not_installed" } : { kind: "guidance", text: guidance };
|
|
6024
6028
|
}
|
|
6025
6029
|
function normalizeDiagnosticsText(text) {
|
|
6026
6030
|
return text.trim();
|
|
@@ -6277,22 +6281,33 @@ async function runLspDiagnosticsText(filePath) {
|
|
|
6277
6281
|
return postEditOutcomeFromDaemonResult(result);
|
|
6278
6282
|
}
|
|
6279
6283
|
function postEditOutcomeFromDaemonResult(result) {
|
|
6280
|
-
const
|
|
6281
|
-
if (availability !== undefined)
|
|
6282
|
-
return { kind: "not_configured", extension: availability.extension };
|
|
6283
|
-
return result.content.map((block) => block.text).join(`
|
|
6284
|
+
const text = result.content.map((block) => block.text).join(`
|
|
6284
6285
|
`);
|
|
6286
|
+
const availability = availabilityDetails2(result.details);
|
|
6287
|
+
if (availability === undefined)
|
|
6288
|
+
return text;
|
|
6289
|
+
if (availability["kind"] === "not_configured") {
|
|
6290
|
+
const extension = availability["extension"];
|
|
6291
|
+
return typeof extension === "string" && extension.length > 0 ? { kind: "not_configured", extension } : text;
|
|
6292
|
+
}
|
|
6293
|
+
if (availability["kind"] === "not_installed")
|
|
6294
|
+
return notInstalledOutcome(availability, text) ?? text;
|
|
6295
|
+
return text;
|
|
6285
6296
|
}
|
|
6286
|
-
function
|
|
6297
|
+
function availabilityDetails2(details) {
|
|
6287
6298
|
if (!isRecord11(details))
|
|
6288
6299
|
return;
|
|
6289
6300
|
const availability = details["availability"];
|
|
6290
|
-
|
|
6291
|
-
|
|
6292
|
-
|
|
6301
|
+
return isRecord11(availability) ? availability : undefined;
|
|
6302
|
+
}
|
|
6303
|
+
function notInstalledOutcome(availability, text) {
|
|
6304
|
+
const serverId = availability["serverId"];
|
|
6305
|
+
const installDecisionTool = availability["installDecisionTool"];
|
|
6306
|
+
if (typeof serverId !== "string" || serverId.length === 0 || typeof installDecisionTool !== "boolean")
|
|
6293
6307
|
return;
|
|
6294
|
-
const
|
|
6295
|
-
|
|
6308
|
+
const decision = availability["decision"];
|
|
6309
|
+
const base = { kind: "not_installed", serverId, installDecisionTool, text };
|
|
6310
|
+
return decision === "declined" || decision === "allowed" ? { ...base, decision } : base;
|
|
6296
6311
|
}
|
|
6297
6312
|
function codexLspRequestContext(env = process.env, cwd = process.cwd()) {
|
|
6298
6313
|
const canonicalCwd = realpathSync7(resolve11(cwd));
|
|
@@ -6320,14 +6335,13 @@ async function runLspPostToolUseHook(input, runDiagnostics = runLspDiagnosticsTe
|
|
|
6320
6335
|
|
|
6321
6336
|
`);
|
|
6322
6337
|
const reason = limitHookText(rawReason, hookFeedbackLimit(input.transcript_path));
|
|
6323
|
-
const
|
|
6324
|
-
|
|
6325
|
-
reason,
|
|
6326
|
-
hookSpecificOutput: {
|
|
6327
|
-
hookEventName: "PostToolUse",
|
|
6328
|
-
additionalContext: reason
|
|
6329
|
-
}
|
|
6338
|
+
const context = {
|
|
6339
|
+
hookSpecificOutput: { hookEventName: "PostToolUse", additionalContext: reason }
|
|
6330
6340
|
};
|
|
6341
|
+
if (!blocks.some((block) => block.blocking))
|
|
6342
|
+
return `${JSON.stringify(context)}
|
|
6343
|
+
`;
|
|
6344
|
+
const output = { decision: "block", reason, ...context };
|
|
6331
6345
|
return `${JSON.stringify(output)}
|
|
6332
6346
|
`;
|
|
6333
6347
|
}
|
|
@@ -27,21 +27,32 @@ export async function runLspDiagnosticsText(filePath) {
|
|
|
27
27
|
return postEditOutcomeFromDaemonResult(result);
|
|
28
28
|
}
|
|
29
29
|
function postEditOutcomeFromDaemonResult(result) {
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
const text = result.content.map((block) => block.text).join("\n");
|
|
31
|
+
const availability = availabilityDetails(result.details);
|
|
32
|
+
if (availability === undefined)
|
|
33
|
+
return text;
|
|
34
|
+
if (availability["kind"] === "not_configured") {
|
|
35
|
+
const extension = availability["extension"];
|
|
36
|
+
return typeof extension === "string" && extension.length > 0 ? { kind: "not_configured", extension } : text;
|
|
37
|
+
}
|
|
38
|
+
if (availability["kind"] === "not_installed")
|
|
39
|
+
return notInstalledOutcome(availability, text) ?? text;
|
|
40
|
+
return text;
|
|
34
41
|
}
|
|
35
|
-
function
|
|
42
|
+
function availabilityDetails(details) {
|
|
36
43
|
if (!isRecord(details))
|
|
37
44
|
return undefined;
|
|
38
45
|
const availability = details["availability"];
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
46
|
+
return isRecord(availability) ? availability : undefined;
|
|
47
|
+
}
|
|
48
|
+
function notInstalledOutcome(availability, text) {
|
|
49
|
+
const serverId = availability["serverId"];
|
|
50
|
+
const installDecisionTool = availability["installDecisionTool"];
|
|
51
|
+
if (typeof serverId !== "string" || serverId.length === 0 || typeof installDecisionTool !== "boolean")
|
|
42
52
|
return undefined;
|
|
43
|
-
const
|
|
44
|
-
|
|
53
|
+
const decision = availability["decision"];
|
|
54
|
+
const base = { kind: "not_installed", serverId, installDecisionTool, text };
|
|
55
|
+
return decision === "declined" || decision === "allowed" ? { ...base, decision } : base;
|
|
45
56
|
}
|
|
46
57
|
export function codexLspRequestContext(env = process.env, cwd = process.cwd()) {
|
|
47
58
|
const canonicalCwd = realpathSync(resolve(cwd));
|
|
@@ -67,14 +78,13 @@ export async function runLspPostToolUseHook(input, runDiagnostics = runLspDiagno
|
|
|
67
78
|
return "";
|
|
68
79
|
const rawReason = blocks.map(formatDiagnosticBlock).join("\n\n");
|
|
69
80
|
const reason = limitHookText(rawReason, hookFeedbackLimit(input.transcript_path));
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
reason,
|
|
73
|
-
hookSpecificOutput: {
|
|
74
|
-
hookEventName: "PostToolUse",
|
|
75
|
-
additionalContext: reason,
|
|
76
|
-
},
|
|
81
|
+
const context = {
|
|
82
|
+
hookSpecificOutput: { hookEventName: "PostToolUse", additionalContext: reason },
|
|
77
83
|
};
|
|
84
|
+
// Missing-server guidance alone is a note for the model; only real diagnostics block the edit.
|
|
85
|
+
if (!blocks.some((block) => block.blocking))
|
|
86
|
+
return `${JSON.stringify(context)}\n`;
|
|
87
|
+
const output = { decision: "block", reason, ...context };
|
|
78
88
|
return `${JSON.stringify(output)}\n`;
|
|
79
89
|
}
|
|
80
90
|
export async function runLspPostCompactHook(input) {
|
|
@@ -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.1.
|
|
11
|
+
"statusMessage": "(OmO 5.1.14) 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.1.
|
|
24
|
+
"statusMessage": "(OmO 5.1.14) Resetting LSP Diagnostics Cache"
|
|
25
25
|
}
|
|
26
26
|
]
|
|
27
27
|
}
|
|
@@ -35,17 +35,21 @@ export interface CodexPostCompactInput {
|
|
|
35
35
|
interface DiagnosticBlock {
|
|
36
36
|
filePath: string;
|
|
37
37
|
diagnostics: string;
|
|
38
|
+
blocking: boolean;
|
|
38
39
|
}
|
|
39
40
|
|
|
40
|
-
interface
|
|
41
|
-
decision: "block";
|
|
42
|
-
reason: string;
|
|
41
|
+
interface PostToolUseHookContext {
|
|
43
42
|
hookSpecificOutput: {
|
|
44
43
|
hookEventName: "PostToolUse";
|
|
45
44
|
additionalContext: string;
|
|
46
45
|
};
|
|
47
46
|
}
|
|
48
47
|
|
|
48
|
+
interface PostToolUseHookOutput extends PostToolUseHookContext {
|
|
49
|
+
decision: "block";
|
|
50
|
+
reason: string;
|
|
51
|
+
}
|
|
52
|
+
|
|
49
53
|
const DIAGNOSTIC_START_PATTERN = /(?:error|warning|information|hint)\[[^\]\r\n]+\] \(\d+\) at \d+:\d+:/g;
|
|
50
54
|
const DIAGNOSTIC_CHUNK_PATTERN = /^(?:error|warning|information|hint)\[[^\]\r\n]+\] \(\d+\) at \d+:\d+:/;
|
|
51
55
|
const DEFAULT_MAX_HOOK_FEEDBACK_CHARS = 8000;
|
|
@@ -70,18 +74,34 @@ function postEditOutcomeFromDaemonResult(result: {
|
|
|
70
74
|
readonly content: readonly { readonly type: string; readonly text?: string }[];
|
|
71
75
|
readonly details?: unknown;
|
|
72
76
|
}): PostEditDiagnosticsOutcome {
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
-
|
|
77
|
+
const text = result.content.map((block) => block.text).join("\n");
|
|
78
|
+
const availability = availabilityDetails(result.details);
|
|
79
|
+
if (availability === undefined) return text;
|
|
80
|
+
if (availability["kind"] === "not_configured") {
|
|
81
|
+
const extension = availability["extension"];
|
|
82
|
+
return typeof extension === "string" && extension.length > 0 ? { kind: "not_configured", extension } : text;
|
|
83
|
+
}
|
|
84
|
+
if (availability["kind"] === "not_installed") return notInstalledOutcome(availability, text) ?? text;
|
|
85
|
+
return text;
|
|
76
86
|
}
|
|
77
87
|
|
|
78
|
-
function
|
|
88
|
+
function availabilityDetails(details: unknown): Record<string, unknown> | undefined {
|
|
79
89
|
if (!isRecord(details)) return undefined;
|
|
80
90
|
const availability = details["availability"];
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
91
|
+
return isRecord(availability) ? availability : undefined;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
function notInstalledOutcome(
|
|
95
|
+
availability: Record<string, unknown>,
|
|
96
|
+
text: string,
|
|
97
|
+
): PostEditDiagnosticsOutcome | undefined {
|
|
98
|
+
const serverId = availability["serverId"];
|
|
99
|
+
const installDecisionTool = availability["installDecisionTool"];
|
|
100
|
+
if (typeof serverId !== "string" || serverId.length === 0 || typeof installDecisionTool !== "boolean")
|
|
101
|
+
return undefined;
|
|
102
|
+
const decision = availability["decision"];
|
|
103
|
+
const base = { kind: "not_installed", serverId, installDecisionTool, text } as const;
|
|
104
|
+
return decision === "declined" || decision === "allowed" ? { ...base, decision } : base;
|
|
85
105
|
}
|
|
86
106
|
|
|
87
107
|
export function codexLspRequestContext(
|
|
@@ -116,14 +136,12 @@ export async function runLspPostToolUseHook(
|
|
|
116
136
|
|
|
117
137
|
const rawReason = blocks.map(formatDiagnosticBlock).join("\n\n");
|
|
118
138
|
const reason = limitHookText(rawReason, hookFeedbackLimit(input.transcript_path));
|
|
119
|
-
const
|
|
120
|
-
|
|
121
|
-
reason,
|
|
122
|
-
hookSpecificOutput: {
|
|
123
|
-
hookEventName: "PostToolUse",
|
|
124
|
-
additionalContext: reason,
|
|
125
|
-
},
|
|
139
|
+
const context: PostToolUseHookContext = {
|
|
140
|
+
hookSpecificOutput: { hookEventName: "PostToolUse", additionalContext: reason },
|
|
126
141
|
};
|
|
142
|
+
// Missing-server guidance alone is a note for the model; only real diagnostics block the edit.
|
|
143
|
+
if (!blocks.some((block) => block.blocking)) return `${JSON.stringify(context)}\n`;
|
|
144
|
+
const output: PostToolUseHookOutput = { decision: "block", reason, ...context };
|
|
127
145
|
return `${JSON.stringify(output)}\n`;
|
|
128
146
|
}
|
|
129
147
|
|