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/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.0.0-beta.
|
|
67
|
+
version: "5.0.0-beta.53",
|
|
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",
|
|
@@ -248,7 +248,7 @@ var init_package = __esm(() => {
|
|
|
248
248
|
zod: "^4.4.3"
|
|
249
249
|
},
|
|
250
250
|
devDependencies: {
|
|
251
|
-
"@code-yeongyu/senpi": "2026.9.10",
|
|
251
|
+
"@code-yeongyu/senpi": "2026.9.10-2",
|
|
252
252
|
"@oh-my-opencode/agents-md-core": "workspace:*",
|
|
253
253
|
"@oh-my-opencode/ast-grep-mcp": "workspace:*",
|
|
254
254
|
"@oh-my-opencode/boulder-state": "workspace:*",
|
|
@@ -289,18 +289,18 @@ var init_package = __esm(() => {
|
|
|
289
289
|
typescript: "^7.0.2"
|
|
290
290
|
},
|
|
291
291
|
optionalDependencies: {
|
|
292
|
-
"oh-my-opencode-darwin-arm64": "5.0.0-beta.
|
|
293
|
-
"oh-my-opencode-darwin-x64": "5.0.0-beta.
|
|
294
|
-
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.
|
|
295
|
-
"oh-my-opencode-linux-arm64": "5.0.0-beta.
|
|
296
|
-
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.
|
|
297
|
-
"oh-my-opencode-linux-x64": "5.0.0-beta.
|
|
298
|
-
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.
|
|
299
|
-
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.
|
|
300
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.
|
|
301
|
-
"oh-my-opencode-windows-arm64": "5.0.0-beta.
|
|
302
|
-
"oh-my-opencode-windows-x64": "5.0.0-beta.
|
|
303
|
-
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.
|
|
292
|
+
"oh-my-opencode-darwin-arm64": "5.0.0-beta.53",
|
|
293
|
+
"oh-my-opencode-darwin-x64": "5.0.0-beta.53",
|
|
294
|
+
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.53",
|
|
295
|
+
"oh-my-opencode-linux-arm64": "5.0.0-beta.53",
|
|
296
|
+
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.53",
|
|
297
|
+
"oh-my-opencode-linux-x64": "5.0.0-beta.53",
|
|
298
|
+
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.53",
|
|
299
|
+
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.53",
|
|
300
|
+
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.53",
|
|
301
|
+
"oh-my-opencode-windows-arm64": "5.0.0-beta.53",
|
|
302
|
+
"oh-my-opencode-windows-x64": "5.0.0-beta.53",
|
|
303
|
+
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.53"
|
|
304
304
|
},
|
|
305
305
|
overrides: {
|
|
306
306
|
"@earendil-works/pi-agent-core": "0.84.2",
|
|
@@ -72839,6 +72839,25 @@ var init_model_catalog = __esm(() => {
|
|
|
72839
72839
|
OmoModelCatalogLayerSchema = record(string2(), OmoModelCatalogEntryLayerSchema);
|
|
72840
72840
|
});
|
|
72841
72841
|
|
|
72842
|
+
// packages/omo-config-core/src/schema/model-profile.ts
|
|
72843
|
+
function isRecord8(value) {
|
|
72844
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
72845
|
+
}
|
|
72846
|
+
var OmoModelProfileInputSchema, OmoModelProfileSchema, OmoModelProfilesSchema, OmoModelProfileLayerInputSchema, OmoModelProfileLayerSchema, OmoModelProfilesLayerSchema;
|
|
72847
|
+
var init_model_profile = __esm(() => {
|
|
72848
|
+
init_zod();
|
|
72849
|
+
init_fallback_models();
|
|
72850
|
+
OmoModelProfileInputSchema = object({
|
|
72851
|
+
display_name: string2().optional(),
|
|
72852
|
+
models: array(union([string2(), OmoFallbackModelObjectSchema])).optional()
|
|
72853
|
+
}).strict();
|
|
72854
|
+
OmoModelProfileSchema = preprocess((value) => isRecord8(value) ? normalizeLegacyModelFields(value) : value, OmoModelProfileInputSchema);
|
|
72855
|
+
OmoModelProfilesSchema = record(string2(), OmoModelProfileSchema);
|
|
72856
|
+
OmoModelProfileLayerInputSchema = OmoModelProfileInputSchema.partial();
|
|
72857
|
+
OmoModelProfileLayerSchema = preprocess((value) => isRecord8(value) ? normalizeLegacyModelFields(value) : value, OmoModelProfileLayerInputSchema);
|
|
72858
|
+
OmoModelProfilesLayerSchema = record(string2(), OmoModelProfileLayerSchema);
|
|
72859
|
+
});
|
|
72860
|
+
|
|
72842
72861
|
// packages/omo-config-core/src/schema/task.ts
|
|
72843
72862
|
import { availableParallelism } from "os";
|
|
72844
72863
|
function resolveOmoTaskSettings(input, resolveParallelism = availableParallelism) {
|
|
@@ -73031,6 +73050,7 @@ var init_config = __esm(() => {
|
|
|
73031
73050
|
init_git_master();
|
|
73032
73051
|
init_memory();
|
|
73033
73052
|
init_model_catalog();
|
|
73053
|
+
init_model_profile();
|
|
73034
73054
|
init_task();
|
|
73035
73055
|
init_team();
|
|
73036
73056
|
init_telemetry();
|
|
@@ -73044,6 +73064,8 @@ var init_config = __esm(() => {
|
|
|
73044
73064
|
task: OmoTaskSettingsLayerSchema.optional(),
|
|
73045
73065
|
teams: OmoTeamsConfigLayerSchema.optional(),
|
|
73046
73066
|
models: OmoModelCatalogLayerSchema.optional(),
|
|
73067
|
+
model_profiles: OmoModelProfilesLayerSchema.optional(),
|
|
73068
|
+
model_profile: string2().optional(),
|
|
73047
73069
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
73048
73070
|
telemetry: OmoTelemetrySettingsLayerSchema.optional()
|
|
73049
73071
|
}).strict();
|
|
@@ -73055,6 +73077,8 @@ var init_config = __esm(() => {
|
|
|
73055
73077
|
task: OmoTaskSettingsLayerSchema.optional(),
|
|
73056
73078
|
teams: OmoTeamsConfigLayerSchema.optional(),
|
|
73057
73079
|
models: OmoModelCatalogLayerSchema.optional(),
|
|
73080
|
+
model_profiles: OmoModelProfilesLayerSchema.optional(),
|
|
73081
|
+
model_profile: string2().optional(),
|
|
73058
73082
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
73059
73083
|
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
73060
73084
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
@@ -73070,6 +73094,8 @@ var init_config = __esm(() => {
|
|
|
73070
73094
|
task: OmoTaskSettingsSchema.optional(),
|
|
73071
73095
|
teams: OmoTeamsConfigSchema.optional(),
|
|
73072
73096
|
models: OmoModelCatalogSchema.optional(),
|
|
73097
|
+
model_profiles: OmoModelProfilesSchema.optional(),
|
|
73098
|
+
model_profile: string2().optional(),
|
|
73073
73099
|
memory: OmoMemorySettingsSchema.optional(),
|
|
73074
73100
|
telemetry: OmoTelemetrySettingsSchema.optional(),
|
|
73075
73101
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
@@ -73088,6 +73114,8 @@ var init_config = __esm(() => {
|
|
|
73088
73114
|
task: OmoTaskSettingsLayerSchema.optional(),
|
|
73089
73115
|
teams: OmoTeamsConfigLayerSchema.optional(),
|
|
73090
73116
|
models: OmoModelCatalogLayerSchema.optional(),
|
|
73117
|
+
model_profiles: OmoModelProfilesLayerSchema.optional(),
|
|
73118
|
+
model_profile: string2().optional(),
|
|
73091
73119
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
73092
73120
|
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
73093
73121
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
@@ -73110,6 +73138,7 @@ var init_schema = __esm(() => {
|
|
|
73110
73138
|
init_harness();
|
|
73111
73139
|
init_memory();
|
|
73112
73140
|
init_model_catalog();
|
|
73141
|
+
init_model_profile();
|
|
73113
73142
|
init_model_ref();
|
|
73114
73143
|
init_task();
|
|
73115
73144
|
init_team();
|
|
@@ -73366,21 +73395,21 @@ function hasUnsafeUnrecognizedKey(issues) {
|
|
|
73366
73395
|
function hasTamperedPrototype(value) {
|
|
73367
73396
|
if (Array.isArray(value))
|
|
73368
73397
|
return value.some((entry) => hasTamperedPrototype(entry));
|
|
73369
|
-
if (!
|
|
73398
|
+
if (!isRecord9(value))
|
|
73370
73399
|
return false;
|
|
73371
73400
|
const prototype = Object.getPrototypeOf(value);
|
|
73372
73401
|
if (prototype !== Object.prototype && prototype !== null)
|
|
73373
73402
|
return true;
|
|
73374
73403
|
return Object.values(value).some((entry) => hasTamperedPrototype(entry));
|
|
73375
73404
|
}
|
|
73376
|
-
function
|
|
73405
|
+
function isRecord9(value) {
|
|
73377
73406
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
73378
73407
|
}
|
|
73379
73408
|
function containerAt(record, path) {
|
|
73380
73409
|
let container = record;
|
|
73381
73410
|
for (const segment of path) {
|
|
73382
73411
|
const next = container[segment];
|
|
73383
|
-
if (!
|
|
73412
|
+
if (!isRecord9(next))
|
|
73384
73413
|
return null;
|
|
73385
73414
|
container = next;
|
|
73386
73415
|
}
|
|
@@ -73642,6 +73671,38 @@ function resolveCategoryDefinition(definition, catalog, cycleNames) {
|
|
|
73642
73671
|
...definition.fallback_models === undefined ? {} : { fallback_models: resolveFallbackModels(definition.fallback_models, catalog, cycleNames) }
|
|
73643
73672
|
};
|
|
73644
73673
|
}
|
|
73674
|
+
function resolveModelProfile(definition, catalog, cycleNames) {
|
|
73675
|
+
return {
|
|
73676
|
+
...definition,
|
|
73677
|
+
...definition.models === undefined ? {} : { models: definition.models.map((entry) => resolveModelEntry(entry, catalog, cycleNames)) }
|
|
73678
|
+
};
|
|
73679
|
+
}
|
|
73680
|
+
function profileShadowDiagnostics(view) {
|
|
73681
|
+
if (view.model_profiles === undefined || view.models === undefined)
|
|
73682
|
+
return [];
|
|
73683
|
+
return Object.keys(view.model_profiles).flatMap((name) => view.models?.[name] === undefined ? [] : [{
|
|
73684
|
+
kind: "validation",
|
|
73685
|
+
message: `Model profile "${name}" shadows a model catalog entry of the same name`,
|
|
73686
|
+
path: `model_profiles.${name}`
|
|
73687
|
+
}]);
|
|
73688
|
+
}
|
|
73689
|
+
function profileSpliceDiagnostics(section, definitions, profileNames) {
|
|
73690
|
+
if (definitions === undefined || profileNames.size === 0)
|
|
73691
|
+
return [];
|
|
73692
|
+
return Object.entries(definitions).flatMap(([name, definition]) => (definition.models ?? []).flatMap((entry, index) => typeof entry !== "string" || !profileNames.has(entry) ? [] : [{
|
|
73693
|
+
kind: "validation",
|
|
73694
|
+
message: `"${entry}" is a model profile; splicing a profile into a category chain is not supported yet`,
|
|
73695
|
+
path: `${section}.${name}.models.${index}`
|
|
73696
|
+
}]));
|
|
73697
|
+
}
|
|
73698
|
+
function modelProfileDiagnostics(view) {
|
|
73699
|
+
const profileNames = new Set(Object.keys(view.model_profiles ?? {}));
|
|
73700
|
+
return [
|
|
73701
|
+
...profileShadowDiagnostics(view),
|
|
73702
|
+
...profileSpliceDiagnostics("categories", view.categories, profileNames),
|
|
73703
|
+
...profileSpliceDiagnostics("agents", view.agents, profileNames)
|
|
73704
|
+
];
|
|
73705
|
+
}
|
|
73645
73706
|
function cycleDiagnostics(catalog) {
|
|
73646
73707
|
if (catalog === undefined)
|
|
73647
73708
|
return [];
|
|
@@ -73652,9 +73713,10 @@ function cycleDiagnostics(catalog) {
|
|
|
73652
73713
|
}));
|
|
73653
73714
|
}
|
|
73654
73715
|
function resolveModelReferences(view) {
|
|
73655
|
-
const
|
|
73716
|
+
const cycles = cycleDiagnostics(view.models);
|
|
73717
|
+
const diagnostics = [...cycles, ...modelProfileDiagnostics(view)];
|
|
73656
73718
|
const cycleNames = new Set;
|
|
73657
|
-
for (const diagnostic of
|
|
73719
|
+
for (const diagnostic of cycles) {
|
|
73658
73720
|
const name = diagnostic.path.split(".")[1];
|
|
73659
73721
|
if (name !== undefined)
|
|
73660
73722
|
cycleNames.add(name);
|
|
@@ -73667,12 +73729,17 @@ function resolveModelReferences(view) {
|
|
|
73667
73729
|
name,
|
|
73668
73730
|
resolveCategoryDefinition(definition, view.models, cycleNames)
|
|
73669
73731
|
]));
|
|
73732
|
+
const modelProfiles = view.model_profiles === undefined ? undefined : Object.fromEntries(Object.entries(view.model_profiles).map(([name, definition]) => [
|
|
73733
|
+
name,
|
|
73734
|
+
resolveModelProfile(definition, view.models, cycleNames)
|
|
73735
|
+
]));
|
|
73670
73736
|
return {
|
|
73671
73737
|
diagnostics,
|
|
73672
73738
|
view: {
|
|
73673
73739
|
...view,
|
|
73674
73740
|
...agents === undefined ? {} : { agents },
|
|
73675
|
-
...categories === undefined ? {} : { categories }
|
|
73741
|
+
...categories === undefined ? {} : { categories },
|
|
73742
|
+
...modelProfiles === undefined ? {} : { model_profiles: modelProfiles }
|
|
73676
73743
|
}
|
|
73677
73744
|
};
|
|
73678
73745
|
}
|
|
@@ -77007,7 +77074,7 @@ function shouldRetainLine(line, cutoffMs) {
|
|
|
77007
77074
|
function parseDiagnosticLine(line) {
|
|
77008
77075
|
try {
|
|
77009
77076
|
const parsed = JSON.parse(line);
|
|
77010
|
-
if (!
|
|
77077
|
+
if (!isRecord11(parsed)) {
|
|
77011
77078
|
return null;
|
|
77012
77079
|
}
|
|
77013
77080
|
return parsed;
|
|
@@ -77018,7 +77085,7 @@ function parseDiagnosticLine(line) {
|
|
|
77018
77085
|
throw error;
|
|
77019
77086
|
}
|
|
77020
77087
|
}
|
|
77021
|
-
function
|
|
77088
|
+
function isRecord11(value) {
|
|
77022
77089
|
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
77023
77090
|
}
|
|
77024
77091
|
function trimToMaxBytes(lines) {
|
|
@@ -82392,7 +82459,7 @@ function coerceBool(value) {
|
|
|
82392
82459
|
function coerceString(value) {
|
|
82393
82460
|
return typeof value == "string" ? value : undefined;
|
|
82394
82461
|
}
|
|
82395
|
-
function
|
|
82462
|
+
function isRecord12(value) {
|
|
82396
82463
|
return typeof value == "object" && value !== null && !Array.isArray(value);
|
|
82397
82464
|
}
|
|
82398
82465
|
function toRfc3339(timestamp) {
|
|
@@ -82414,7 +82481,7 @@ function relocateInto(properties, key, value) {
|
|
|
82414
82481
|
properties[key] = value;
|
|
82415
82482
|
}
|
|
82416
82483
|
function buildV1Event(message) {
|
|
82417
|
-
const sourceProperties =
|
|
82484
|
+
const sourceProperties = isRecord12(message.properties) ? message.properties : {};
|
|
82418
82485
|
const properties = {
|
|
82419
82486
|
...sourceProperties
|
|
82420
82487
|
};
|
|
@@ -84444,7 +84511,7 @@ var package_default2;
|
|
|
84444
84511
|
var init_package2 = __esm(() => {
|
|
84445
84512
|
package_default2 = {
|
|
84446
84513
|
name: "@oh-my-opencode/omo-codex",
|
|
84447
|
-
version: "5.0.0-beta.
|
|
84514
|
+
version: "5.0.0-beta.53",
|
|
84448
84515
|
type: "module",
|
|
84449
84516
|
private: true,
|
|
84450
84517
|
description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
|
|
@@ -90493,10 +90560,10 @@ function readCatalogMultiAgentVersion(model, cachePath) {
|
|
|
90493
90560
|
} catch {
|
|
90494
90561
|
return null;
|
|
90495
90562
|
}
|
|
90496
|
-
if (!
|
|
90563
|
+
if (!isRecord10(cache) || !Array.isArray(cache.models))
|
|
90497
90564
|
return null;
|
|
90498
90565
|
for (const entry of cache.models) {
|
|
90499
|
-
if (!
|
|
90566
|
+
if (!isRecord10(entry))
|
|
90500
90567
|
continue;
|
|
90501
90568
|
if (entry.slug !== model && entry.id !== model)
|
|
90502
90569
|
continue;
|
|
@@ -90521,7 +90588,7 @@ function readRootModelCatalogPath(config) {
|
|
|
90521
90588
|
const single = config.match(/^\s*model_catalog_json\s*=\s*'([^']+)'/m);
|
|
90522
90589
|
return single?.[1] ?? null;
|
|
90523
90590
|
}
|
|
90524
|
-
function
|
|
90591
|
+
function isRecord10(value) {
|
|
90525
90592
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
90526
90593
|
}
|
|
90527
90594
|
function removeFeatureFlagSetting(config, featureName) {
|
|
@@ -93254,7 +93321,7 @@ async function readSettings(settingsPath) {
|
|
|
93254
93321
|
throw error;
|
|
93255
93322
|
}
|
|
93256
93323
|
const parsed = JSON.parse(raw);
|
|
93257
|
-
if (!
|
|
93324
|
+
if (!isRecord13(parsed))
|
|
93258
93325
|
throw new Error(`${settingsPath} must contain a JSON object`);
|
|
93259
93326
|
return parsed;
|
|
93260
93327
|
}
|
|
@@ -93315,7 +93382,7 @@ async function nextBackupPath(settingsPath) {
|
|
|
93315
93382
|
function timestampForBackup() {
|
|
93316
93383
|
return new Date().toISOString().replace(/[-:.]/g, "");
|
|
93317
93384
|
}
|
|
93318
|
-
function
|
|
93385
|
+
function isRecord13(value) {
|
|
93319
93386
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
93320
93387
|
}
|
|
93321
93388
|
async function readPackageName(packagePath) {
|
|
@@ -93335,7 +93402,7 @@ async function readPackageName(packagePath) {
|
|
|
93335
93402
|
return;
|
|
93336
93403
|
throw error;
|
|
93337
93404
|
}
|
|
93338
|
-
return
|
|
93405
|
+
return isRecord13(parsed) && typeof parsed.name === "string" ? parsed.name : undefined;
|
|
93339
93406
|
}
|
|
93340
93407
|
async function fileExists(path) {
|
|
93341
93408
|
try {
|
|
@@ -93453,7 +93520,7 @@ async function verifyAstGrepRuntimeIntegrity(pluginPath, platform) {
|
|
|
93453
93520
|
}
|
|
93454
93521
|
}
|
|
93455
93522
|
function isAstGrepRuntimeManifest(value) {
|
|
93456
|
-
if (!
|
|
93523
|
+
if (!isRecord13(value))
|
|
93457
93524
|
return false;
|
|
93458
93525
|
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));
|
|
93459
93526
|
}
|
|
@@ -100692,14 +100759,14 @@ var CANONICAL_REPLACEMENT = new Map([
|
|
|
100692
100759
|
var MIGRATE_SUFFIX = ", or run: oh-my-openagent config migrate";
|
|
100693
100760
|
var TUNING_CONTAINERS = new Set(["agents", "categories", "models"]);
|
|
100694
100761
|
var PASSTHROUGH_CONTAINERS = new Set(["provider_options", "providerOptions"]);
|
|
100695
|
-
function
|
|
100762
|
+
function isRecord14(value) {
|
|
100696
100763
|
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
100697
100764
|
}
|
|
100698
100765
|
function isHarnessBlock(key) {
|
|
100699
100766
|
return key.startsWith("[") && key.endsWith("]");
|
|
100700
100767
|
}
|
|
100701
100768
|
function collectIssues(configPath, value, prefix, fixSuffix) {
|
|
100702
|
-
if (!
|
|
100769
|
+
if (!isRecord14(value))
|
|
100703
100770
|
return [];
|
|
100704
100771
|
const issues = [];
|
|
100705
100772
|
for (const [key, child] of Object.entries(value)) {
|
|
@@ -100715,7 +100782,7 @@ function collectIssues(configPath, value, prefix, fixSuffix) {
|
|
|
100715
100782
|
});
|
|
100716
100783
|
continue;
|
|
100717
100784
|
}
|
|
100718
|
-
if (!
|
|
100785
|
+
if (!isRecord14(child))
|
|
100719
100786
|
continue;
|
|
100720
100787
|
if (PASSTHROUGH_CONTAINERS.has(key))
|
|
100721
100788
|
continue;
|
|
@@ -100734,7 +100801,7 @@ function collectIssues(configPath, value, prefix, fixSuffix) {
|
|
|
100734
100801
|
return issues;
|
|
100735
100802
|
}
|
|
100736
100803
|
function migrateFixSuffix(parsed) {
|
|
100737
|
-
if (
|
|
100804
|
+
if (isRecord14(parsed) && hasMigrationMarker(parsed, REASONING_UNIFICATION_MIGRATION_ID))
|
|
100738
100805
|
return "";
|
|
100739
100806
|
return MIGRATE_SUFFIX;
|
|
100740
100807
|
}
|
|
@@ -101972,12 +102039,12 @@ async function auditBundleTargets(pluginRoot) {
|
|
|
101972
102039
|
let referencedCount = 0;
|
|
101973
102040
|
for (const manifestPath of await findManifestPaths(pluginRoot, ".mcp.json")) {
|
|
101974
102041
|
const manifest = await readJson2(manifestPath);
|
|
101975
|
-
if (manifest === null || !
|
|
102042
|
+
if (manifest === null || !isRecord15(manifest["mcpServers"]))
|
|
101976
102043
|
continue;
|
|
101977
102044
|
const manifestRoot = dirname33(manifestPath);
|
|
101978
102045
|
const isRootManifest = resolve24(manifestRoot) === resolve24(pluginRoot);
|
|
101979
102046
|
for (const server of Object.values(manifest["mcpServers"])) {
|
|
101980
|
-
if (!
|
|
102047
|
+
if (!isRecord15(server) || !Array.isArray(server["args"]))
|
|
101981
102048
|
continue;
|
|
101982
102049
|
for (const arg of server["args"]) {
|
|
101983
102050
|
if (typeof arg !== "string" || !isPluginRuntimePathArg(arg))
|
|
@@ -102063,7 +102130,7 @@ function collectHookCommands(value, commands) {
|
|
|
102063
102130
|
collectHookCommands(item, commands);
|
|
102064
102131
|
return;
|
|
102065
102132
|
}
|
|
102066
|
-
if (!
|
|
102133
|
+
if (!isRecord15(value))
|
|
102067
102134
|
return;
|
|
102068
102135
|
if (value["type"] === "command") {
|
|
102069
102136
|
if (typeof value["command"] === "string")
|
|
@@ -102118,7 +102185,7 @@ function parseDegradedEntries(value) {
|
|
|
102118
102185
|
return [];
|
|
102119
102186
|
const entries = [];
|
|
102120
102187
|
for (const item of value) {
|
|
102121
|
-
if (!
|
|
102188
|
+
if (!isRecord15(item))
|
|
102122
102189
|
continue;
|
|
102123
102190
|
if (typeof item["component"] !== "string" || typeof item["reason"] !== "string")
|
|
102124
102191
|
continue;
|
|
@@ -102152,7 +102219,7 @@ function degradedDetailLines(entries) {
|
|
|
102152
102219
|
async function readJson2(path) {
|
|
102153
102220
|
try {
|
|
102154
102221
|
const parsed = JSON.parse(await readFile28(path, "utf8"));
|
|
102155
|
-
return
|
|
102222
|
+
return isRecord15(parsed) ? parsed : null;
|
|
102156
102223
|
} catch (error) {
|
|
102157
102224
|
if (error instanceof Error)
|
|
102158
102225
|
return null;
|
|
@@ -102173,7 +102240,7 @@ function normalizeRelative(root, target) {
|
|
|
102173
102240
|
function normalizePathSeparators(path) {
|
|
102174
102241
|
return path.split("\\").join("/");
|
|
102175
102242
|
}
|
|
102176
|
-
function
|
|
102243
|
+
function isRecord15(value) {
|
|
102177
102244
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
102178
102245
|
}
|
|
102179
102246
|
|