lazycodex-ai 5.0.0-beta.37 → 5.0.0-beta.39
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 +24 -15
- package/dist/cli-node/index.js +24 -15
- package/package.json +1 -1
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +10 -1
- package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
- package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
- package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
- package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/rules/package.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +32 -20
- package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-artifacts.d.ts +3 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-artifacts.js +31 -29
- package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate.js +2 -2
- 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/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +2 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate-artifacts.ts +36 -35
- package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate.ts +2 -1
- package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate.test.ts +43 -3
- 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/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-checking-ulw-execute-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 +12 -12
- package/packages/omo-codex/plugin/package.json +1 -1
- package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +2 -0
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +12 -3
package/dist/cli/index.js
CHANGED
|
@@ -54,7 +54,7 @@ var package_default;
|
|
|
54
54
|
var init_package = __esm(() => {
|
|
55
55
|
package_default = {
|
|
56
56
|
name: "oh-my-opencode",
|
|
57
|
-
version: "5.0.0-beta.
|
|
57
|
+
version: "5.0.0-beta.39",
|
|
58
58
|
description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
59
59
|
main: "./dist/index.js",
|
|
60
60
|
types: "dist/index.d.ts",
|
|
@@ -275,18 +275,18 @@ var init_package = __esm(() => {
|
|
|
275
275
|
typescript: "^7.0.2"
|
|
276
276
|
},
|
|
277
277
|
optionalDependencies: {
|
|
278
|
-
"oh-my-opencode-darwin-arm64": "5.0.0-beta.
|
|
279
|
-
"oh-my-opencode-darwin-x64": "5.0.0-beta.
|
|
280
|
-
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.
|
|
281
|
-
"oh-my-opencode-linux-arm64": "5.0.0-beta.
|
|
282
|
-
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.
|
|
283
|
-
"oh-my-opencode-linux-x64": "5.0.0-beta.
|
|
284
|
-
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.
|
|
285
|
-
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.
|
|
286
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.
|
|
287
|
-
"oh-my-opencode-windows-arm64": "5.0.0-beta.
|
|
288
|
-
"oh-my-opencode-windows-x64": "5.0.0-beta.
|
|
289
|
-
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.
|
|
278
|
+
"oh-my-opencode-darwin-arm64": "5.0.0-beta.39",
|
|
279
|
+
"oh-my-opencode-darwin-x64": "5.0.0-beta.39",
|
|
280
|
+
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.39",
|
|
281
|
+
"oh-my-opencode-linux-arm64": "5.0.0-beta.39",
|
|
282
|
+
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.39",
|
|
283
|
+
"oh-my-opencode-linux-x64": "5.0.0-beta.39",
|
|
284
|
+
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.39",
|
|
285
|
+
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.39",
|
|
286
|
+
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.39",
|
|
287
|
+
"oh-my-opencode-windows-arm64": "5.0.0-beta.39",
|
|
288
|
+
"oh-my-opencode-windows-x64": "5.0.0-beta.39",
|
|
289
|
+
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.39"
|
|
290
290
|
},
|
|
291
291
|
overrides: {
|
|
292
292
|
"@earendil-works/pi-agent-core": "0.84.2",
|
|
@@ -94349,7 +94349,7 @@ var package_default2;
|
|
|
94349
94349
|
var init_package2 = __esm(() => {
|
|
94350
94350
|
package_default2 = {
|
|
94351
94351
|
name: "@oh-my-opencode/omo-codex",
|
|
94352
|
-
version: "5.0.0-beta.
|
|
94352
|
+
version: "5.0.0-beta.39",
|
|
94353
94353
|
type: "module",
|
|
94354
94354
|
private: true,
|
|
94355
94355
|
description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
|
|
@@ -99544,6 +99544,15 @@ function replaceOrInsertRootSetting(config3, key, value) {
|
|
|
99544
99544
|
|
|
99545
99545
|
${suffix.trimStart()}`;
|
|
99546
99546
|
}
|
|
99547
|
+
function removeRootSetting(config3, key) {
|
|
99548
|
+
const sectionStart = findFirstTableStart(config3);
|
|
99549
|
+
const root = config3.slice(0, sectionStart);
|
|
99550
|
+
const suffix = config3.slice(sectionStart);
|
|
99551
|
+
const linePattern = new RegExp(`^[ \\t]*${escapeRegExp(key)}[ \\t]*=.*(?:\\n|$)`, "m");
|
|
99552
|
+
if (!linePattern.test(root))
|
|
99553
|
+
return config3;
|
|
99554
|
+
return root.replace(linePattern, "") + suffix;
|
|
99555
|
+
}
|
|
99547
99556
|
function replaceOrInsertRootDottedSetting(config3, keyPath, value) {
|
|
99548
99557
|
const targetPath = parseTomlDottedKey(keyPath);
|
|
99549
99558
|
if (!targetPath)
|
|
@@ -100296,7 +100305,7 @@ var AUTONOMOUS_FEATURES = ["multi_agent", "unified_exec", "goals"];
|
|
|
100296
100305
|
function ensureAutonomousPermissions(config3) {
|
|
100297
100306
|
let next = replaceOrInsertRootSetting(config3, "approval_policy", JSON.stringify("never"));
|
|
100298
100307
|
next = replaceOrInsertRootSetting(next, "sandbox_mode", JSON.stringify("danger-full-access"));
|
|
100299
|
-
next =
|
|
100308
|
+
next = removeRootSetting(next, "network_access");
|
|
100300
100309
|
for (const featureName of AUTONOMOUS_FEATURES) {
|
|
100301
100310
|
next = ensureFeatureEnabled(next, featureName);
|
|
100302
100311
|
}
|
package/dist/cli-node/index.js
CHANGED
|
@@ -55,7 +55,7 @@ var package_default;
|
|
|
55
55
|
var init_package = __esm(() => {
|
|
56
56
|
package_default = {
|
|
57
57
|
name: "oh-my-opencode",
|
|
58
|
-
version: "5.0.0-beta.
|
|
58
|
+
version: "5.0.0-beta.39",
|
|
59
59
|
description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
60
60
|
main: "./dist/index.js",
|
|
61
61
|
types: "dist/index.d.ts",
|
|
@@ -276,18 +276,18 @@ var init_package = __esm(() => {
|
|
|
276
276
|
typescript: "^7.0.2"
|
|
277
277
|
},
|
|
278
278
|
optionalDependencies: {
|
|
279
|
-
"oh-my-opencode-darwin-arm64": "5.0.0-beta.
|
|
280
|
-
"oh-my-opencode-darwin-x64": "5.0.0-beta.
|
|
281
|
-
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.
|
|
282
|
-
"oh-my-opencode-linux-arm64": "5.0.0-beta.
|
|
283
|
-
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.
|
|
284
|
-
"oh-my-opencode-linux-x64": "5.0.0-beta.
|
|
285
|
-
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.
|
|
286
|
-
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.
|
|
287
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.
|
|
288
|
-
"oh-my-opencode-windows-arm64": "5.0.0-beta.
|
|
289
|
-
"oh-my-opencode-windows-x64": "5.0.0-beta.
|
|
290
|
-
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.
|
|
279
|
+
"oh-my-opencode-darwin-arm64": "5.0.0-beta.39",
|
|
280
|
+
"oh-my-opencode-darwin-x64": "5.0.0-beta.39",
|
|
281
|
+
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.39",
|
|
282
|
+
"oh-my-opencode-linux-arm64": "5.0.0-beta.39",
|
|
283
|
+
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.39",
|
|
284
|
+
"oh-my-opencode-linux-x64": "5.0.0-beta.39",
|
|
285
|
+
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.39",
|
|
286
|
+
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.39",
|
|
287
|
+
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.39",
|
|
288
|
+
"oh-my-opencode-windows-arm64": "5.0.0-beta.39",
|
|
289
|
+
"oh-my-opencode-windows-x64": "5.0.0-beta.39",
|
|
290
|
+
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.39"
|
|
291
291
|
},
|
|
292
292
|
overrides: {
|
|
293
293
|
"@earendil-works/pi-agent-core": "0.84.2",
|
|
@@ -94428,7 +94428,7 @@ var package_default2;
|
|
|
94428
94428
|
var init_package2 = __esm(() => {
|
|
94429
94429
|
package_default2 = {
|
|
94430
94430
|
name: "@oh-my-opencode/omo-codex",
|
|
94431
|
-
version: "5.0.0-beta.
|
|
94431
|
+
version: "5.0.0-beta.39",
|
|
94432
94432
|
type: "module",
|
|
94433
94433
|
private: true,
|
|
94434
94434
|
description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
|
|
@@ -99623,6 +99623,15 @@ function replaceOrInsertRootSetting(config3, key, value) {
|
|
|
99623
99623
|
|
|
99624
99624
|
${suffix.trimStart()}`;
|
|
99625
99625
|
}
|
|
99626
|
+
function removeRootSetting(config3, key) {
|
|
99627
|
+
const sectionStart = findFirstTableStart(config3);
|
|
99628
|
+
const root = config3.slice(0, sectionStart);
|
|
99629
|
+
const suffix = config3.slice(sectionStart);
|
|
99630
|
+
const linePattern = new RegExp(`^[ \\t]*${escapeRegExp(key)}[ \\t]*=.*(?:\\n|$)`, "m");
|
|
99631
|
+
if (!linePattern.test(root))
|
|
99632
|
+
return config3;
|
|
99633
|
+
return root.replace(linePattern, "") + suffix;
|
|
99634
|
+
}
|
|
99626
99635
|
function replaceOrInsertRootDottedSetting(config3, keyPath, value) {
|
|
99627
99636
|
const targetPath = parseTomlDottedKey(keyPath);
|
|
99628
99637
|
if (!targetPath)
|
|
@@ -100375,7 +100384,7 @@ var AUTONOMOUS_FEATURES = ["multi_agent", "unified_exec", "goals"];
|
|
|
100375
100384
|
function ensureAutonomousPermissions(config3) {
|
|
100376
100385
|
let next = replaceOrInsertRootSetting(config3, "approval_policy", JSON.stringify("never"));
|
|
100377
100386
|
next = replaceOrInsertRootSetting(next, "sandbox_mode", JSON.stringify("danger-full-access"));
|
|
100378
|
-
next =
|
|
100387
|
+
next = removeRootSetting(next, "network_access");
|
|
100379
100388
|
for (const featureName of AUTONOMOUS_FEATURES) {
|
|
100380
100389
|
next = ensureFeatureEnabled(next, featureName);
|
|
100381
100390
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lazycodex-ai",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.39",
|
|
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",
|
|
@@ -1094,6 +1094,15 @@ function replaceOrInsertRootSetting(config, key, value) {
|
|
|
1094
1094
|
|
|
1095
1095
|
${suffix.trimStart()}`;
|
|
1096
1096
|
}
|
|
1097
|
+
function removeRootSetting(config, key) {
|
|
1098
|
+
const sectionStart = findFirstTableStart(config);
|
|
1099
|
+
const root = config.slice(0, sectionStart);
|
|
1100
|
+
const suffix = config.slice(sectionStart);
|
|
1101
|
+
const linePattern = new RegExp(`^[ \\t]*${escapeRegExp(key)}[ \\t]*=.*(?:\\n|$)`, "m");
|
|
1102
|
+
if (!linePattern.test(root))
|
|
1103
|
+
return config;
|
|
1104
|
+
return root.replace(linePattern, "") + suffix;
|
|
1105
|
+
}
|
|
1097
1106
|
function replaceOrInsertRootDottedSetting(config, keyPath, value) {
|
|
1098
1107
|
const targetPath = parseTomlDottedKey(keyPath);
|
|
1099
1108
|
if (!targetPath)
|
|
@@ -2829,7 +2838,7 @@ var AUTONOMOUS_FEATURES = ["multi_agent", "unified_exec", "goals"];
|
|
|
2829
2838
|
function ensureAutonomousPermissions(config) {
|
|
2830
2839
|
let next = replaceOrInsertRootSetting(config, "approval_policy", JSON.stringify("never"));
|
|
2831
2840
|
next = replaceOrInsertRootSetting(next, "sandbox_mode", JSON.stringify("danger-full-access"));
|
|
2832
|
-
next =
|
|
2841
|
+
next = removeRootSetting(next, "network_access");
|
|
2833
2842
|
for (const featureName of AUTONOMOUS_FEATURES) {
|
|
2834
2843
|
next = ensureFeatureEnabled(next, featureName);
|
|
2835
2844
|
}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/bootstrap/dist/cli.js\" hook session-start",
|
|
9
9
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\bootstrap.ps1\"",
|
|
10
10
|
"timeout": 30,
|
|
11
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
11
|
+
"statusMessage": "(OmO 5.0.0-beta.39) Checking Bootstrap Provisioning"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sisyphuslabs/codex-bootstrap",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.39",
|
|
4
4
|
"description": "Codex SessionStart bootstrap component that provisions LazyCodex runtime dependencies from a detached worker.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"private": true,
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "command",
|
|
9
9
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook pre-tool-use",
|
|
10
10
|
"timeout": 5,
|
|
11
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
11
|
+
"statusMessage": "(OmO 5.0.0-beta.39) 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.39) 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.39) Verifying LazyCodex Executor Evidence"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code-yeongyu/codex-lazycodex-executor-verify",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.39",
|
|
4
4
|
"description": "Codex SubagentStop evidence verifier for LazyCodex executor completions.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "npm@11.12.1",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"version": "5.0.0-beta.
|
|
4
|
-
"inputDigest": "sha256:
|
|
3
|
+
"version": "5.0.0-beta.39",
|
|
4
|
+
"inputDigest": "sha256:e6dca9fde576c2b56ce6cd9cad6cbaf2b72e8a636633fb21cec99d8bbb204852",
|
|
5
5
|
"outputs": [
|
|
6
6
|
{
|
|
7
7
|
"path": "cli.d.ts",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "command",
|
|
9
9
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
|
|
10
10
|
"timeout": 60,
|
|
11
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
11
|
+
"statusMessage": "(OmO 5.0.0-beta.39) 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.39) 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.39) 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.39) 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.39) 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.39) Resetting Project Rule Cache"
|
|
49
49
|
}
|
|
50
50
|
]
|
|
51
51
|
}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "command",
|
|
9
9
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
|
|
10
10
|
"timeout": 10,
|
|
11
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
11
|
+
"statusMessage": "(OmO 5.0.0-beta.39) Checking Thread Title Hygiene"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code-yeongyu/codex-telemetry",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.39",
|
|
4
4
|
"description": "Codex plugin component that emits omo-codex anonymous daily-active telemetry on SessionStart.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "npm@11.12.1",
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook user-prompt-submit",
|
|
9
9
|
"timeout": 5,
|
|
10
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
10
|
+
"statusMessage": "(OmO 5.0.0-beta.39) Checking Ultrawork Trigger"
|
|
11
11
|
}
|
|
12
12
|
]
|
|
13
13
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code-yeongyu/codex-ultrawork",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.39",
|
|
4
4
|
"description": "Codex plugin that injects the ultrawork orchestration directive and ships LazyCodex planning, review, QA, and gate agent roles.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "npm@11.12.1",
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/ulw-execute-continuation/dist/cli.js\" hook stop",
|
|
9
9
|
"timeout": 10,
|
|
10
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
10
|
+
"statusMessage": "(OmO 5.0.0-beta.39) Checking Ulw-Execute Continuation"
|
|
11
11
|
}
|
|
12
12
|
]
|
|
13
13
|
}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"type": "command",
|
|
20
20
|
"command": "node \"${PLUGIN_ROOT}/components/ulw-execute-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.39) Checking Ulw-Execute Continuation"
|
|
23
23
|
}
|
|
24
24
|
]
|
|
25
25
|
}
|
|
@@ -768,34 +768,46 @@ function literal(value, expected, field) {
|
|
|
768
768
|
}
|
|
769
769
|
|
|
770
770
|
// components/ulw-loop/src/quality-gate-artifacts.ts
|
|
771
|
+
var SUPPORTED_SURFACES = ["cli", "http", "tmux", "browser", "gui", "data"];
|
|
772
|
+
var SUPPORTED_KINDS = [
|
|
773
|
+
"cli-transcript",
|
|
774
|
+
"log",
|
|
775
|
+
"screenshot",
|
|
776
|
+
"image",
|
|
777
|
+
"http-dump",
|
|
778
|
+
"data-diff"
|
|
779
|
+
];
|
|
780
|
+
var COMPATIBLE_KINDS = {
|
|
781
|
+
cli: ["cli-transcript", "log"],
|
|
782
|
+
tmux: ["cli-transcript", "log"],
|
|
783
|
+
http: ["http-dump"],
|
|
784
|
+
browser: ["screenshot", "image"],
|
|
785
|
+
gui: ["screenshot", "image"],
|
|
786
|
+
data: ["data-diff"]
|
|
787
|
+
};
|
|
788
|
+
function isSupportedSurface(value) {
|
|
789
|
+
return SUPPORTED_SURFACES.some((surface) => surface === value);
|
|
790
|
+
}
|
|
791
|
+
function isSupportedKind(value) {
|
|
792
|
+
return SUPPORTED_KINDS.some((kind) => kind === value);
|
|
793
|
+
}
|
|
771
794
|
function surfaceField(value, field) {
|
|
772
|
-
if (value
|
|
795
|
+
if (isSupportedSurface(value))
|
|
773
796
|
return value;
|
|
774
|
-
invalid(`${field} must be a supported manual QA surface.`, field);
|
|
797
|
+
invalid(`${field} must be a supported manual QA surface (${SUPPORTED_SURFACES.join(", ")}).`, field);
|
|
775
798
|
return "cli";
|
|
776
799
|
}
|
|
777
800
|
function kindField(value, field) {
|
|
778
|
-
if (value
|
|
801
|
+
if (isSupportedKind(value))
|
|
779
802
|
return value;
|
|
780
|
-
invalid(`${field} must be a supported artifact kind.`, field);
|
|
803
|
+
invalid(`${field} must be a supported artifact kind (${SUPPORTED_KINDS.join(", ")}); review/QA reports belong in codeReview.reportPath or gateReview.reportPath, not artifactRefs.`, field);
|
|
781
804
|
return "log";
|
|
782
805
|
}
|
|
806
|
+
function compatibleKindsFor(surface) {
|
|
807
|
+
return COMPATIBLE_KINDS[surface];
|
|
808
|
+
}
|
|
783
809
|
function artifactCompatible(surface, kind) {
|
|
784
|
-
|
|
785
|
-
case "cli":
|
|
786
|
-
case "tmux":
|
|
787
|
-
return kind === "cli-transcript" || kind === "log";
|
|
788
|
-
case "http":
|
|
789
|
-
return kind === "http-dump";
|
|
790
|
-
case "browser":
|
|
791
|
-
case "gui":
|
|
792
|
-
return kind === "screenshot" || kind === "image";
|
|
793
|
-
case "data":
|
|
794
|
-
return kind === "data-diff";
|
|
795
|
-
default:
|
|
796
|
-
invalid("manualQa.surfaceEvidence has an unsupported surface.", "manualQa.surfaceEvidence.surface");
|
|
797
|
-
return false;
|
|
798
|
-
}
|
|
810
|
+
return compatibleKindsFor(surface).includes(kind);
|
|
799
811
|
}
|
|
800
812
|
function checkFile(path, field, opts) {
|
|
801
813
|
if (opts?.repoRoot === undefined || opts.fs === undefined || isPoisoned(field))
|
|
@@ -1098,7 +1110,7 @@ function parseSurfaceEvidence(value, byId) {
|
|
|
1098
1110
|
if (isPoisoned(`manualQa.surfaceEvidence[${index}].surface`) || isPoisonedArtifactKind(artifact.id))
|
|
1099
1111
|
continue;
|
|
1100
1112
|
if (!artifactCompatible(surface, artifact.kind)) {
|
|
1101
|
-
invalid(`manualQa.surfaceEvidence ${surface} artifact ${artifact.kind} is incompatible.`, "manualQa.surfaceEvidence");
|
|
1113
|
+
invalid(`manualQa.surfaceEvidence ${surface} artifact ${artifact.kind} is incompatible; surface "${surface}" accepts artifact kinds: ${compatibleKindsFor(surface).join(", ")}.`, "manualQa.surfaceEvidence");
|
|
1102
1114
|
}
|
|
1103
1115
|
}
|
|
1104
1116
|
return {
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import type { ValidateQualityGateOptions } from "./quality-gate.js";
|
|
2
2
|
import type { UlwLoopManualQaArtifactKind, UlwLoopManualQaArtifactRef, UlwLoopManualQaSurface } from "./types.js";
|
|
3
|
+
export declare const SUPPORTED_SURFACES: readonly UlwLoopManualQaSurface[];
|
|
4
|
+
export declare const SUPPORTED_KINDS: readonly UlwLoopManualQaArtifactKind[];
|
|
3
5
|
export declare function surfaceField(value: unknown, field: string): UlwLoopManualQaSurface;
|
|
4
6
|
export declare function kindField(value: unknown, field: string): UlwLoopManualQaArtifactKind;
|
|
7
|
+
export declare function compatibleKindsFor(surface: UlwLoopManualQaSurface): readonly UlwLoopManualQaArtifactKind[];
|
|
5
8
|
export declare function artifactCompatible(surface: UlwLoopManualQaSurface, kind: UlwLoopManualQaArtifactKind): boolean;
|
|
6
9
|
export declare function checkFile(path: string, field: string, opts?: ValidateQualityGateOptions): void;
|
|
7
10
|
export declare function artifactMap(refs: readonly UlwLoopManualQaArtifactRef[]): Map<string, UlwLoopManualQaArtifactRef>;
|
|
@@ -1,44 +1,46 @@
|
|
|
1
1
|
import { resolve } from "node:path";
|
|
2
2
|
import { isWithinAttemptDir } from "./paths.js";
|
|
3
3
|
import { invalid, isPoisoned, markPoisonedArtifactKind, section, stringArray, textField, } from "./quality-gate-fields.js";
|
|
4
|
+
export const SUPPORTED_SURFACES = ["cli", "http", "tmux", "browser", "gui", "data"];
|
|
5
|
+
export const SUPPORTED_KINDS = [
|
|
6
|
+
"cli-transcript",
|
|
7
|
+
"log",
|
|
8
|
+
"screenshot",
|
|
9
|
+
"image",
|
|
10
|
+
"http-dump",
|
|
11
|
+
"data-diff",
|
|
12
|
+
];
|
|
13
|
+
const COMPATIBLE_KINDS = {
|
|
14
|
+
cli: ["cli-transcript", "log"],
|
|
15
|
+
tmux: ["cli-transcript", "log"],
|
|
16
|
+
http: ["http-dump"],
|
|
17
|
+
browser: ["screenshot", "image"],
|
|
18
|
+
gui: ["screenshot", "image"],
|
|
19
|
+
data: ["data-diff"],
|
|
20
|
+
};
|
|
21
|
+
function isSupportedSurface(value) {
|
|
22
|
+
return SUPPORTED_SURFACES.some((surface) => surface === value);
|
|
23
|
+
}
|
|
24
|
+
function isSupportedKind(value) {
|
|
25
|
+
return SUPPORTED_KINDS.some((kind) => kind === value);
|
|
26
|
+
}
|
|
4
27
|
export function surfaceField(value, field) {
|
|
5
|
-
if (value
|
|
6
|
-
value === "http" ||
|
|
7
|
-
value === "tmux" ||
|
|
8
|
-
value === "browser" ||
|
|
9
|
-
value === "gui" ||
|
|
10
|
-
value === "data")
|
|
28
|
+
if (isSupportedSurface(value))
|
|
11
29
|
return value;
|
|
12
|
-
invalid(`${field} must be a supported manual QA surface.`, field);
|
|
30
|
+
invalid(`${field} must be a supported manual QA surface (${SUPPORTED_SURFACES.join(", ")}).`, field);
|
|
13
31
|
return "cli";
|
|
14
32
|
}
|
|
15
33
|
export function kindField(value, field) {
|
|
16
|
-
if (value
|
|
17
|
-
value === "log" ||
|
|
18
|
-
value === "screenshot" ||
|
|
19
|
-
value === "image" ||
|
|
20
|
-
value === "http-dump" ||
|
|
21
|
-
value === "data-diff")
|
|
34
|
+
if (isSupportedKind(value))
|
|
22
35
|
return value;
|
|
23
|
-
invalid(`${field} must be a supported artifact kind.`, field);
|
|
36
|
+
invalid(`${field} must be a supported artifact kind (${SUPPORTED_KINDS.join(", ")}); review/QA reports belong in codeReview.reportPath or gateReview.reportPath, not artifactRefs.`, field);
|
|
24
37
|
return "log";
|
|
25
38
|
}
|
|
39
|
+
export function compatibleKindsFor(surface) {
|
|
40
|
+
return COMPATIBLE_KINDS[surface];
|
|
41
|
+
}
|
|
26
42
|
export function artifactCompatible(surface, kind) {
|
|
27
|
-
|
|
28
|
-
case "cli":
|
|
29
|
-
case "tmux":
|
|
30
|
-
return kind === "cli-transcript" || kind === "log";
|
|
31
|
-
case "http":
|
|
32
|
-
return kind === "http-dump";
|
|
33
|
-
case "browser":
|
|
34
|
-
case "gui":
|
|
35
|
-
return kind === "screenshot" || kind === "image";
|
|
36
|
-
case "data":
|
|
37
|
-
return kind === "data-diff";
|
|
38
|
-
default:
|
|
39
|
-
invalid("manualQa.surfaceEvidence has an unsupported surface.", "manualQa.surfaceEvidence.surface");
|
|
40
|
-
return false;
|
|
41
|
-
}
|
|
43
|
+
return compatibleKindsFor(surface).includes(kind);
|
|
42
44
|
}
|
|
43
45
|
export function checkFile(path, field, opts) {
|
|
44
46
|
if (opts?.repoRoot === undefined || opts.fs === undefined || isPoisoned(field))
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { artifactCompatible, artifactMap, checkFile, parseArtifactRefs, referencedArtifacts, surfaceField, } from "./quality-gate-artifacts.js";
|
|
1
|
+
import { artifactCompatible, artifactMap, checkFile, compatibleKindsFor, parseArtifactRefs, referencedArtifacts, surfaceField, } from "./quality-gate-artifacts.js";
|
|
2
2
|
import { emptyBlockers, invalid, isPoisoned, isPoisonedArtifactKind, literal, numberField, section, stringArray, textField, withQualityGateCollector, } from "./quality-gate-fields.js";
|
|
3
3
|
import { adversarialVerdict, codeQualityStatusField, passedVerdict } from "./quality-gate-verdicts.js";
|
|
4
4
|
import { GATE_SECTION_BY_ACCEPTOR } from "./surface.js";
|
|
@@ -118,7 +118,7 @@ function parseSurfaceEvidence(value, byId) {
|
|
|
118
118
|
if (isPoisoned(`manualQa.surfaceEvidence[${index}].surface`) || isPoisonedArtifactKind(artifact.id))
|
|
119
119
|
continue;
|
|
120
120
|
if (!artifactCompatible(surface, artifact.kind)) {
|
|
121
|
-
invalid(`manualQa.surfaceEvidence ${surface} artifact ${artifact.kind} is incompatible.`, "manualQa.surfaceEvidence");
|
|
121
|
+
invalid(`manualQa.surfaceEvidence ${surface} artifact ${artifact.kind} is incompatible; surface "${surface}" accepts artifact kinds: ${compatibleKindsFor(surface).join(", ")}.`, "manualQa.surfaceEvidence");
|
|
122
122
|
}
|
|
123
123
|
}
|
|
124
124
|
return {
|