lazycodex-ai 5.0.0-beta.52 → 5.0.0-beta.53
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/README.ja.md +11 -18
- package/README.ko.md +10 -17
- package/README.md +11 -18
- package/README.ru.md +11 -18
- package/README.zh-cn.md +11 -18
- package/dist/cli/index.js +109 -42
- package/dist/cli-node/index.js +109 -42
- 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 +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 +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/refactor/SKILL.md +3 -3
- package/packages/omo-codex/plugin/skills/ulw-execute/SKILL.md +5 -5
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +2 -2
- package/packages/shared-skills/skills/refactor/SKILL.md +3 -3
- package/packages/shared-skills/skills/review-work/SKILL.md +1 -1
- package/packages/shared-skills/skills/ulw-execute/SKILL.md +5 -5
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.0.0-beta.
|
|
68
|
+
version: "5.0.0-beta.53",
|
|
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",
|
|
@@ -249,7 +249,7 @@ var init_package = __esm(() => {
|
|
|
249
249
|
zod: "^4.4.3"
|
|
250
250
|
},
|
|
251
251
|
devDependencies: {
|
|
252
|
-
"@code-yeongyu/senpi": "2026.9.10",
|
|
252
|
+
"@code-yeongyu/senpi": "2026.9.10-2",
|
|
253
253
|
"@oh-my-opencode/agents-md-core": "workspace:*",
|
|
254
254
|
"@oh-my-opencode/ast-grep-mcp": "workspace:*",
|
|
255
255
|
"@oh-my-opencode/boulder-state": "workspace:*",
|
|
@@ -290,18 +290,18 @@ var init_package = __esm(() => {
|
|
|
290
290
|
typescript: "^7.0.2"
|
|
291
291
|
},
|
|
292
292
|
optionalDependencies: {
|
|
293
|
-
"oh-my-opencode-darwin-arm64": "5.0.0-beta.
|
|
294
|
-
"oh-my-opencode-darwin-x64": "5.0.0-beta.
|
|
295
|
-
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.
|
|
296
|
-
"oh-my-opencode-linux-arm64": "5.0.0-beta.
|
|
297
|
-
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.
|
|
298
|
-
"oh-my-opencode-linux-x64": "5.0.0-beta.
|
|
299
|
-
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.
|
|
300
|
-
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.
|
|
301
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.
|
|
302
|
-
"oh-my-opencode-windows-arm64": "5.0.0-beta.
|
|
303
|
-
"oh-my-opencode-windows-x64": "5.0.0-beta.
|
|
304
|
-
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.
|
|
293
|
+
"oh-my-opencode-darwin-arm64": "5.0.0-beta.53",
|
|
294
|
+
"oh-my-opencode-darwin-x64": "5.0.0-beta.53",
|
|
295
|
+
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.53",
|
|
296
|
+
"oh-my-opencode-linux-arm64": "5.0.0-beta.53",
|
|
297
|
+
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.53",
|
|
298
|
+
"oh-my-opencode-linux-x64": "5.0.0-beta.53",
|
|
299
|
+
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.53",
|
|
300
|
+
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.53",
|
|
301
|
+
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.53",
|
|
302
|
+
"oh-my-opencode-windows-arm64": "5.0.0-beta.53",
|
|
303
|
+
"oh-my-opencode-windows-x64": "5.0.0-beta.53",
|
|
304
|
+
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.53"
|
|
305
305
|
},
|
|
306
306
|
overrides: {
|
|
307
307
|
"@earendil-works/pi-agent-core": "0.84.2",
|
|
@@ -72918,6 +72918,25 @@ var init_model_catalog = __esm(() => {
|
|
|
72918
72918
|
OmoModelCatalogLayerSchema = record(string2(), OmoModelCatalogEntryLayerSchema);
|
|
72919
72919
|
});
|
|
72920
72920
|
|
|
72921
|
+
// packages/omo-config-core/src/schema/model-profile.ts
|
|
72922
|
+
function isRecord8(value) {
|
|
72923
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
72924
|
+
}
|
|
72925
|
+
var OmoModelProfileInputSchema, OmoModelProfileSchema, OmoModelProfilesSchema, OmoModelProfileLayerInputSchema, OmoModelProfileLayerSchema, OmoModelProfilesLayerSchema;
|
|
72926
|
+
var init_model_profile = __esm(() => {
|
|
72927
|
+
init_zod();
|
|
72928
|
+
init_fallback_models();
|
|
72929
|
+
OmoModelProfileInputSchema = object({
|
|
72930
|
+
display_name: string2().optional(),
|
|
72931
|
+
models: array(union([string2(), OmoFallbackModelObjectSchema])).optional()
|
|
72932
|
+
}).strict();
|
|
72933
|
+
OmoModelProfileSchema = preprocess((value) => isRecord8(value) ? normalizeLegacyModelFields(value) : value, OmoModelProfileInputSchema);
|
|
72934
|
+
OmoModelProfilesSchema = record(string2(), OmoModelProfileSchema);
|
|
72935
|
+
OmoModelProfileLayerInputSchema = OmoModelProfileInputSchema.partial();
|
|
72936
|
+
OmoModelProfileLayerSchema = preprocess((value) => isRecord8(value) ? normalizeLegacyModelFields(value) : value, OmoModelProfileLayerInputSchema);
|
|
72937
|
+
OmoModelProfilesLayerSchema = record(string2(), OmoModelProfileLayerSchema);
|
|
72938
|
+
});
|
|
72939
|
+
|
|
72921
72940
|
// packages/omo-config-core/src/schema/task.ts
|
|
72922
72941
|
import { availableParallelism } from "node:os";
|
|
72923
72942
|
function resolveOmoTaskSettings(input, resolveParallelism = availableParallelism) {
|
|
@@ -73110,6 +73129,7 @@ var init_config = __esm(() => {
|
|
|
73110
73129
|
init_git_master();
|
|
73111
73130
|
init_memory();
|
|
73112
73131
|
init_model_catalog();
|
|
73132
|
+
init_model_profile();
|
|
73113
73133
|
init_task();
|
|
73114
73134
|
init_team();
|
|
73115
73135
|
init_telemetry();
|
|
@@ -73123,6 +73143,8 @@ var init_config = __esm(() => {
|
|
|
73123
73143
|
task: OmoTaskSettingsLayerSchema.optional(),
|
|
73124
73144
|
teams: OmoTeamsConfigLayerSchema.optional(),
|
|
73125
73145
|
models: OmoModelCatalogLayerSchema.optional(),
|
|
73146
|
+
model_profiles: OmoModelProfilesLayerSchema.optional(),
|
|
73147
|
+
model_profile: string2().optional(),
|
|
73126
73148
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
73127
73149
|
telemetry: OmoTelemetrySettingsLayerSchema.optional()
|
|
73128
73150
|
}).strict();
|
|
@@ -73134,6 +73156,8 @@ var init_config = __esm(() => {
|
|
|
73134
73156
|
task: OmoTaskSettingsLayerSchema.optional(),
|
|
73135
73157
|
teams: OmoTeamsConfigLayerSchema.optional(),
|
|
73136
73158
|
models: OmoModelCatalogLayerSchema.optional(),
|
|
73159
|
+
model_profiles: OmoModelProfilesLayerSchema.optional(),
|
|
73160
|
+
model_profile: string2().optional(),
|
|
73137
73161
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
73138
73162
|
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
73139
73163
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
@@ -73149,6 +73173,8 @@ var init_config = __esm(() => {
|
|
|
73149
73173
|
task: OmoTaskSettingsSchema.optional(),
|
|
73150
73174
|
teams: OmoTeamsConfigSchema.optional(),
|
|
73151
73175
|
models: OmoModelCatalogSchema.optional(),
|
|
73176
|
+
model_profiles: OmoModelProfilesSchema.optional(),
|
|
73177
|
+
model_profile: string2().optional(),
|
|
73152
73178
|
memory: OmoMemorySettingsSchema.optional(),
|
|
73153
73179
|
telemetry: OmoTelemetrySettingsSchema.optional(),
|
|
73154
73180
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
@@ -73167,6 +73193,8 @@ var init_config = __esm(() => {
|
|
|
73167
73193
|
task: OmoTaskSettingsLayerSchema.optional(),
|
|
73168
73194
|
teams: OmoTeamsConfigLayerSchema.optional(),
|
|
73169
73195
|
models: OmoModelCatalogLayerSchema.optional(),
|
|
73196
|
+
model_profiles: OmoModelProfilesLayerSchema.optional(),
|
|
73197
|
+
model_profile: string2().optional(),
|
|
73170
73198
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
73171
73199
|
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
73172
73200
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
@@ -73189,6 +73217,7 @@ var init_schema = __esm(() => {
|
|
|
73189
73217
|
init_harness();
|
|
73190
73218
|
init_memory();
|
|
73191
73219
|
init_model_catalog();
|
|
73220
|
+
init_model_profile();
|
|
73192
73221
|
init_model_ref();
|
|
73193
73222
|
init_task();
|
|
73194
73223
|
init_team();
|
|
@@ -73445,21 +73474,21 @@ function hasUnsafeUnrecognizedKey(issues) {
|
|
|
73445
73474
|
function hasTamperedPrototype(value) {
|
|
73446
73475
|
if (Array.isArray(value))
|
|
73447
73476
|
return value.some((entry) => hasTamperedPrototype(entry));
|
|
73448
|
-
if (!
|
|
73477
|
+
if (!isRecord9(value))
|
|
73449
73478
|
return false;
|
|
73450
73479
|
const prototype = Object.getPrototypeOf(value);
|
|
73451
73480
|
if (prototype !== Object.prototype && prototype !== null)
|
|
73452
73481
|
return true;
|
|
73453
73482
|
return Object.values(value).some((entry) => hasTamperedPrototype(entry));
|
|
73454
73483
|
}
|
|
73455
|
-
function
|
|
73484
|
+
function isRecord9(value) {
|
|
73456
73485
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
73457
73486
|
}
|
|
73458
73487
|
function containerAt(record, path) {
|
|
73459
73488
|
let container = record;
|
|
73460
73489
|
for (const segment of path) {
|
|
73461
73490
|
const next = container[segment];
|
|
73462
|
-
if (!
|
|
73491
|
+
if (!isRecord9(next))
|
|
73463
73492
|
return null;
|
|
73464
73493
|
container = next;
|
|
73465
73494
|
}
|
|
@@ -73721,6 +73750,38 @@ function resolveCategoryDefinition(definition, catalog, cycleNames) {
|
|
|
73721
73750
|
...definition.fallback_models === undefined ? {} : { fallback_models: resolveFallbackModels(definition.fallback_models, catalog, cycleNames) }
|
|
73722
73751
|
};
|
|
73723
73752
|
}
|
|
73753
|
+
function resolveModelProfile(definition, catalog, cycleNames) {
|
|
73754
|
+
return {
|
|
73755
|
+
...definition,
|
|
73756
|
+
...definition.models === undefined ? {} : { models: definition.models.map((entry) => resolveModelEntry(entry, catalog, cycleNames)) }
|
|
73757
|
+
};
|
|
73758
|
+
}
|
|
73759
|
+
function profileShadowDiagnostics(view) {
|
|
73760
|
+
if (view.model_profiles === undefined || view.models === undefined)
|
|
73761
|
+
return [];
|
|
73762
|
+
return Object.keys(view.model_profiles).flatMap((name) => view.models?.[name] === undefined ? [] : [{
|
|
73763
|
+
kind: "validation",
|
|
73764
|
+
message: `Model profile "${name}" shadows a model catalog entry of the same name`,
|
|
73765
|
+
path: `model_profiles.${name}`
|
|
73766
|
+
}]);
|
|
73767
|
+
}
|
|
73768
|
+
function profileSpliceDiagnostics(section, definitions, profileNames) {
|
|
73769
|
+
if (definitions === undefined || profileNames.size === 0)
|
|
73770
|
+
return [];
|
|
73771
|
+
return Object.entries(definitions).flatMap(([name, definition]) => (definition.models ?? []).flatMap((entry, index) => typeof entry !== "string" || !profileNames.has(entry) ? [] : [{
|
|
73772
|
+
kind: "validation",
|
|
73773
|
+
message: `"${entry}" is a model profile; splicing a profile into a category chain is not supported yet`,
|
|
73774
|
+
path: `${section}.${name}.models.${index}`
|
|
73775
|
+
}]));
|
|
73776
|
+
}
|
|
73777
|
+
function modelProfileDiagnostics(view) {
|
|
73778
|
+
const profileNames = new Set(Object.keys(view.model_profiles ?? {}));
|
|
73779
|
+
return [
|
|
73780
|
+
...profileShadowDiagnostics(view),
|
|
73781
|
+
...profileSpliceDiagnostics("categories", view.categories, profileNames),
|
|
73782
|
+
...profileSpliceDiagnostics("agents", view.agents, profileNames)
|
|
73783
|
+
];
|
|
73784
|
+
}
|
|
73724
73785
|
function cycleDiagnostics(catalog) {
|
|
73725
73786
|
if (catalog === undefined)
|
|
73726
73787
|
return [];
|
|
@@ -73731,9 +73792,10 @@ function cycleDiagnostics(catalog) {
|
|
|
73731
73792
|
}));
|
|
73732
73793
|
}
|
|
73733
73794
|
function resolveModelReferences(view) {
|
|
73734
|
-
const
|
|
73795
|
+
const cycles = cycleDiagnostics(view.models);
|
|
73796
|
+
const diagnostics = [...cycles, ...modelProfileDiagnostics(view)];
|
|
73735
73797
|
const cycleNames = new Set;
|
|
73736
|
-
for (const diagnostic of
|
|
73798
|
+
for (const diagnostic of cycles) {
|
|
73737
73799
|
const name = diagnostic.path.split(".")[1];
|
|
73738
73800
|
if (name !== undefined)
|
|
73739
73801
|
cycleNames.add(name);
|
|
@@ -73746,12 +73808,17 @@ function resolveModelReferences(view) {
|
|
|
73746
73808
|
name,
|
|
73747
73809
|
resolveCategoryDefinition(definition, view.models, cycleNames)
|
|
73748
73810
|
]));
|
|
73811
|
+
const modelProfiles = view.model_profiles === undefined ? undefined : Object.fromEntries(Object.entries(view.model_profiles).map(([name, definition]) => [
|
|
73812
|
+
name,
|
|
73813
|
+
resolveModelProfile(definition, view.models, cycleNames)
|
|
73814
|
+
]));
|
|
73749
73815
|
return {
|
|
73750
73816
|
diagnostics,
|
|
73751
73817
|
view: {
|
|
73752
73818
|
...view,
|
|
73753
73819
|
...agents === undefined ? {} : { agents },
|
|
73754
|
-
...categories === undefined ? {} : { categories }
|
|
73820
|
+
...categories === undefined ? {} : { categories },
|
|
73821
|
+
...modelProfiles === undefined ? {} : { model_profiles: modelProfiles }
|
|
73755
73822
|
}
|
|
73756
73823
|
};
|
|
73757
73824
|
}
|
|
@@ -77086,7 +77153,7 @@ function shouldRetainLine(line, cutoffMs) {
|
|
|
77086
77153
|
function parseDiagnosticLine(line) {
|
|
77087
77154
|
try {
|
|
77088
77155
|
const parsed = JSON.parse(line);
|
|
77089
|
-
if (!
|
|
77156
|
+
if (!isRecord11(parsed)) {
|
|
77090
77157
|
return null;
|
|
77091
77158
|
}
|
|
77092
77159
|
return parsed;
|
|
@@ -77097,7 +77164,7 @@ function parseDiagnosticLine(line) {
|
|
|
77097
77164
|
throw error;
|
|
77098
77165
|
}
|
|
77099
77166
|
}
|
|
77100
|
-
function
|
|
77167
|
+
function isRecord11(value) {
|
|
77101
77168
|
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
77102
77169
|
}
|
|
77103
77170
|
function trimToMaxBytes(lines) {
|
|
@@ -82471,7 +82538,7 @@ function coerceBool(value) {
|
|
|
82471
82538
|
function coerceString(value) {
|
|
82472
82539
|
return typeof value == "string" ? value : undefined;
|
|
82473
82540
|
}
|
|
82474
|
-
function
|
|
82541
|
+
function isRecord12(value) {
|
|
82475
82542
|
return typeof value == "object" && value !== null && !Array.isArray(value);
|
|
82476
82543
|
}
|
|
82477
82544
|
function toRfc3339(timestamp) {
|
|
@@ -82493,7 +82560,7 @@ function relocateInto(properties, key, value) {
|
|
|
82493
82560
|
properties[key] = value;
|
|
82494
82561
|
}
|
|
82495
82562
|
function buildV1Event(message) {
|
|
82496
|
-
const sourceProperties =
|
|
82563
|
+
const sourceProperties = isRecord12(message.properties) ? message.properties : {};
|
|
82497
82564
|
const properties = {
|
|
82498
82565
|
...sourceProperties
|
|
82499
82566
|
};
|
|
@@ -84523,7 +84590,7 @@ var package_default2;
|
|
|
84523
84590
|
var init_package2 = __esm(() => {
|
|
84524
84591
|
package_default2 = {
|
|
84525
84592
|
name: "@oh-my-opencode/omo-codex",
|
|
84526
|
-
version: "5.0.0-beta.
|
|
84593
|
+
version: "5.0.0-beta.53",
|
|
84527
84594
|
type: "module",
|
|
84528
84595
|
private: true,
|
|
84529
84596
|
description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
|
|
@@ -90572,10 +90639,10 @@ function readCatalogMultiAgentVersion(model, cachePath) {
|
|
|
90572
90639
|
} catch {
|
|
90573
90640
|
return null;
|
|
90574
90641
|
}
|
|
90575
|
-
if (!
|
|
90642
|
+
if (!isRecord10(cache) || !Array.isArray(cache.models))
|
|
90576
90643
|
return null;
|
|
90577
90644
|
for (const entry of cache.models) {
|
|
90578
|
-
if (!
|
|
90645
|
+
if (!isRecord10(entry))
|
|
90579
90646
|
continue;
|
|
90580
90647
|
if (entry.slug !== model && entry.id !== model)
|
|
90581
90648
|
continue;
|
|
@@ -90600,7 +90667,7 @@ function readRootModelCatalogPath(config) {
|
|
|
90600
90667
|
const single = config.match(/^\s*model_catalog_json\s*=\s*'([^']+)'/m);
|
|
90601
90668
|
return single?.[1] ?? null;
|
|
90602
90669
|
}
|
|
90603
|
-
function
|
|
90670
|
+
function isRecord10(value) {
|
|
90604
90671
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
90605
90672
|
}
|
|
90606
90673
|
function removeFeatureFlagSetting(config, featureName) {
|
|
@@ -93333,7 +93400,7 @@ async function readSettings(settingsPath) {
|
|
|
93333
93400
|
throw error;
|
|
93334
93401
|
}
|
|
93335
93402
|
const parsed = JSON.parse(raw);
|
|
93336
|
-
if (!
|
|
93403
|
+
if (!isRecord13(parsed))
|
|
93337
93404
|
throw new Error(`${settingsPath} must contain a JSON object`);
|
|
93338
93405
|
return parsed;
|
|
93339
93406
|
}
|
|
@@ -93394,7 +93461,7 @@ async function nextBackupPath(settingsPath) {
|
|
|
93394
93461
|
function timestampForBackup() {
|
|
93395
93462
|
return new Date().toISOString().replace(/[-:.]/g, "");
|
|
93396
93463
|
}
|
|
93397
|
-
function
|
|
93464
|
+
function isRecord13(value) {
|
|
93398
93465
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
93399
93466
|
}
|
|
93400
93467
|
async function readPackageName(packagePath) {
|
|
@@ -93414,7 +93481,7 @@ async function readPackageName(packagePath) {
|
|
|
93414
93481
|
return;
|
|
93415
93482
|
throw error;
|
|
93416
93483
|
}
|
|
93417
|
-
return
|
|
93484
|
+
return isRecord13(parsed) && typeof parsed.name === "string" ? parsed.name : undefined;
|
|
93418
93485
|
}
|
|
93419
93486
|
async function fileExists(path) {
|
|
93420
93487
|
try {
|
|
@@ -93532,7 +93599,7 @@ async function verifyAstGrepRuntimeIntegrity(pluginPath, platform) {
|
|
|
93532
93599
|
}
|
|
93533
93600
|
}
|
|
93534
93601
|
function isAstGrepRuntimeManifest(value) {
|
|
93535
|
-
if (!
|
|
93602
|
+
if (!isRecord13(value))
|
|
93536
93603
|
return false;
|
|
93537
93604
|
return typeof value.sha256 === "string" && /^[a-f0-9]{64}$/.test(value.sha256) && typeof value.mode === "number" && Number.isInteger(value.mode) && typeof value.stagedAtUtc === "string" && !Number.isNaN(Date.parse(value.stagedAtUtc));
|
|
93538
93605
|
}
|
|
@@ -100771,14 +100838,14 @@ var CANONICAL_REPLACEMENT = new Map([
|
|
|
100771
100838
|
var MIGRATE_SUFFIX = ", or run: oh-my-openagent config migrate";
|
|
100772
100839
|
var TUNING_CONTAINERS = new Set(["agents", "categories", "models"]);
|
|
100773
100840
|
var PASSTHROUGH_CONTAINERS = new Set(["provider_options", "providerOptions"]);
|
|
100774
|
-
function
|
|
100841
|
+
function isRecord14(value) {
|
|
100775
100842
|
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
100776
100843
|
}
|
|
100777
100844
|
function isHarnessBlock(key) {
|
|
100778
100845
|
return key.startsWith("[") && key.endsWith("]");
|
|
100779
100846
|
}
|
|
100780
100847
|
function collectIssues(configPath, value, prefix, fixSuffix) {
|
|
100781
|
-
if (!
|
|
100848
|
+
if (!isRecord14(value))
|
|
100782
100849
|
return [];
|
|
100783
100850
|
const issues = [];
|
|
100784
100851
|
for (const [key, child] of Object.entries(value)) {
|
|
@@ -100794,7 +100861,7 @@ function collectIssues(configPath, value, prefix, fixSuffix) {
|
|
|
100794
100861
|
});
|
|
100795
100862
|
continue;
|
|
100796
100863
|
}
|
|
100797
|
-
if (!
|
|
100864
|
+
if (!isRecord14(child))
|
|
100798
100865
|
continue;
|
|
100799
100866
|
if (PASSTHROUGH_CONTAINERS.has(key))
|
|
100800
100867
|
continue;
|
|
@@ -100813,7 +100880,7 @@ function collectIssues(configPath, value, prefix, fixSuffix) {
|
|
|
100813
100880
|
return issues;
|
|
100814
100881
|
}
|
|
100815
100882
|
function migrateFixSuffix(parsed) {
|
|
100816
|
-
if (
|
|
100883
|
+
if (isRecord14(parsed) && hasMigrationMarker(parsed, REASONING_UNIFICATION_MIGRATION_ID))
|
|
100817
100884
|
return "";
|
|
100818
100885
|
return MIGRATE_SUFFIX;
|
|
100819
100886
|
}
|
|
@@ -102051,12 +102118,12 @@ async function auditBundleTargets(pluginRoot) {
|
|
|
102051
102118
|
let referencedCount = 0;
|
|
102052
102119
|
for (const manifestPath of await findManifestPaths(pluginRoot, ".mcp.json")) {
|
|
102053
102120
|
const manifest = await readJson2(manifestPath);
|
|
102054
|
-
if (manifest === null || !
|
|
102121
|
+
if (manifest === null || !isRecord15(manifest["mcpServers"]))
|
|
102055
102122
|
continue;
|
|
102056
102123
|
const manifestRoot = dirname33(manifestPath);
|
|
102057
102124
|
const isRootManifest = resolve24(manifestRoot) === resolve24(pluginRoot);
|
|
102058
102125
|
for (const server of Object.values(manifest["mcpServers"])) {
|
|
102059
|
-
if (!
|
|
102126
|
+
if (!isRecord15(server) || !Array.isArray(server["args"]))
|
|
102060
102127
|
continue;
|
|
102061
102128
|
for (const arg of server["args"]) {
|
|
102062
102129
|
if (typeof arg !== "string" || !isPluginRuntimePathArg(arg))
|
|
@@ -102142,7 +102209,7 @@ function collectHookCommands(value, commands) {
|
|
|
102142
102209
|
collectHookCommands(item, commands);
|
|
102143
102210
|
return;
|
|
102144
102211
|
}
|
|
102145
|
-
if (!
|
|
102212
|
+
if (!isRecord15(value))
|
|
102146
102213
|
return;
|
|
102147
102214
|
if (value["type"] === "command") {
|
|
102148
102215
|
if (typeof value["command"] === "string")
|
|
@@ -102197,7 +102264,7 @@ function parseDegradedEntries(value) {
|
|
|
102197
102264
|
return [];
|
|
102198
102265
|
const entries = [];
|
|
102199
102266
|
for (const item of value) {
|
|
102200
|
-
if (!
|
|
102267
|
+
if (!isRecord15(item))
|
|
102201
102268
|
continue;
|
|
102202
102269
|
if (typeof item["component"] !== "string" || typeof item["reason"] !== "string")
|
|
102203
102270
|
continue;
|
|
@@ -102231,7 +102298,7 @@ function degradedDetailLines(entries) {
|
|
|
102231
102298
|
async function readJson2(path) {
|
|
102232
102299
|
try {
|
|
102233
102300
|
const parsed = JSON.parse(await readFile28(path, "utf8"));
|
|
102234
|
-
return
|
|
102301
|
+
return isRecord15(parsed) ? parsed : null;
|
|
102235
102302
|
} catch (error) {
|
|
102236
102303
|
if (error instanceof Error)
|
|
102237
102304
|
return null;
|
|
@@ -102252,7 +102319,7 @@ function normalizeRelative(root, target) {
|
|
|
102252
102319
|
function normalizePathSeparators(path) {
|
|
102253
102320
|
return path.split("\\").join("/");
|
|
102254
102321
|
}
|
|
102255
|
-
function
|
|
102322
|
+
function isRecord15(value) {
|
|
102256
102323
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
102257
102324
|
}
|
|
102258
102325
|
|
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.53",
|
|
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.0.0-beta.
|
|
11
|
+
"statusMessage": "(OmO 5.0.0-beta.53) 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.53",
|
|
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.53) 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.53) 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.53) 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.53",
|
|
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.53",
|
|
4
|
+
"inputDigest": "sha256:f202c8adb130249d2a7745db228ccd528b47f0cfeaeb5db5c99ab13d9b76af00",
|
|
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.53) 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.53) 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.53) 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.53) 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.53) 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.53) 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.53) 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.53",
|
|
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.53) 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.53",
|
|
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",
|