lazycodex-ai 5.1.41 → 5.1.42

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.
Files changed (65) hide show
  1. package/README.de.md +118 -0
  2. package/README.es.md +118 -0
  3. package/README.fr.md +118 -0
  4. package/README.it.md +118 -0
  5. package/README.ja.md +2 -1
  6. package/README.ko.md +2 -1
  7. package/README.md +3 -2
  8. package/README.pt-br.md +118 -0
  9. package/README.ru.md +2 -1
  10. package/README.zh-cn.md +2 -1
  11. package/dist/cli/index.js +92 -27
  12. package/dist/cli/service-auth/index.d.ts +3 -0
  13. package/dist/cli-node/index.js +92 -27
  14. package/package.json +1 -1
  15. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  16. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +68 -9
  17. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  18. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  19. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  20. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  21. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  22. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  23. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  24. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  25. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
  26. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  27. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  28. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  29. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  30. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  31. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  32. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  33. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  34. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  35. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  36. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
  37. package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
  38. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
  39. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  40. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  41. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  42. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  43. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  44. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  45. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  46. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  47. package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
  48. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  49. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  50. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  51. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  52. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  53. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  54. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  55. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
  56. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  57. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  58. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  59. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  60. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  61. package/packages/omo-codex/plugin/package-lock.json +12 -12
  62. package/packages/omo-codex/plugin/package.json +1 -1
  63. package/packages/omo-codex/plugin/skills/browser/runtime/omowright/manifest.json +1 -1
  64. package/packages/omo-codex/scripts/install-dist/install-local.mjs +70 -11
  65. package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +1 -1
@@ -2133,7 +2133,7 @@ var package_default;
2133
2133
  var init_package = __esm(() => {
2134
2134
  package_default = {
2135
2135
  name: "oh-my-opencode",
2136
- version: "5.1.41",
2136
+ version: "5.1.42",
2137
2137
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
2138
2138
  main: "./dist/index.js",
2139
2139
  types: "dist/index.d.ts",
@@ -2310,7 +2310,7 @@ var init_package = __esm(() => {
2310
2310
  },
2311
2311
  devDependencies: {
2312
2312
  "@clack/prompts": "^1.8.1",
2313
- "@code-yeongyu/senpi": "2026.10.21-1",
2313
+ "@code-yeongyu/senpi": "2026.10.21-2",
2314
2314
  "@modelcontextprotocol/sdk": "^1.30.0",
2315
2315
  "@oh-my-opencode/agents-md-core": "workspace:*",
2316
2316
  "@oh-my-opencode/ast-grep-mcp": "workspace:*",
@@ -2371,18 +2371,18 @@ var init_package = __esm(() => {
2371
2371
  typescript: "^7.0.2"
2372
2372
  },
2373
2373
  optionalDependencies: {
2374
- "oh-my-opencode-darwin-arm64": "5.1.41",
2375
- "oh-my-opencode-darwin-x64": "5.1.41",
2376
- "oh-my-opencode-darwin-x64-baseline": "5.1.41",
2377
- "oh-my-opencode-linux-arm64": "5.1.41",
2378
- "oh-my-opencode-linux-arm64-musl": "5.1.41",
2379
- "oh-my-opencode-linux-x64": "5.1.41",
2380
- "oh-my-opencode-linux-x64-baseline": "5.1.41",
2381
- "oh-my-opencode-linux-x64-musl": "5.1.41",
2382
- "oh-my-opencode-linux-x64-musl-baseline": "5.1.41",
2383
- "oh-my-opencode-windows-arm64": "5.1.41",
2384
- "oh-my-opencode-windows-x64": "5.1.41",
2385
- "oh-my-opencode-windows-x64-baseline": "5.1.41"
2374
+ "oh-my-opencode-darwin-arm64": "5.1.42",
2375
+ "oh-my-opencode-darwin-x64": "5.1.42",
2376
+ "oh-my-opencode-darwin-x64-baseline": "5.1.42",
2377
+ "oh-my-opencode-linux-arm64": "5.1.42",
2378
+ "oh-my-opencode-linux-arm64-musl": "5.1.42",
2379
+ "oh-my-opencode-linux-x64": "5.1.42",
2380
+ "oh-my-opencode-linux-x64-baseline": "5.1.42",
2381
+ "oh-my-opencode-linux-x64-musl": "5.1.42",
2382
+ "oh-my-opencode-linux-x64-musl-baseline": "5.1.42",
2383
+ "oh-my-opencode-windows-arm64": "5.1.42",
2384
+ "oh-my-opencode-windows-x64": "5.1.42",
2385
+ "oh-my-opencode-windows-x64-baseline": "5.1.42"
2386
2386
  },
2387
2387
  overrides: {
2388
2388
  hono: "^4.13.8",
@@ -76909,7 +76909,7 @@ var init_memory_agreements = __esm(() => {
76909
76909
  });
76910
76910
 
76911
76911
  // packages/omo-config-core/src/schema/memory.ts
76912
- var OmoMemoryReflectionTriggerSchema, OmoMemoryReflectionSchema, OmoMemorySyncSchema, OmoMemorySearchSchema, OmoMemoryRecallEventCapsSchema, OmoMemoryRecallSchema, OmoMemoryNudgeSchema, OmoMemoryFactsSchema, OmoMemoryDreamSchema, OmoMemoryPeopleSchema, OmoMemorySoulSchema, OmoMemoryWriteNoticeSchema, OmoMemoryReflectionTriggerLayerSchema, OmoMemoryReflectionLayerSchema, OmoMemorySyncLayerSchema, OmoMemorySearchLayerSchema, OmoMemoryRecallEventCapsLayerSchema, OmoMemoryRecallLayerSchema, OmoMemoryNudgeLayerSchema, OmoMemoryFactsLayerSchema, OmoMemoryDreamLayerSchema, OmoMemoryPeopleLayerSchema, OmoMemorySoulLayerSchema, OmoMemoryWriteNoticeLayerSchema, OmoMemoryProjectionSchema, OmoMemoryProjectionLayerSchema, OmoMemoryAgentOverridesSchema, OmoMemorySettingsSchema, OmoMemorySettingsLayerSchema;
76912
+ var OmoMemoryReflectionTriggerSchema, OmoMemoryReflectionSchema, OmoMemorySyncSchema, OmoMemorySearchSchema, OmoMemoryRecallEventCapsSchema, OmoMemoryRecallSchema, OmoMemoryNudgeSchema, OmoMemoryFactsSchema, OmoMemoryDreamSchema, OmoMemoryPeopleSchema, OmoMemorySoulSchema, OmoMemoryWriteNoticeSchema, OmoMemoryReflectionTriggerLayerSchema, OmoMemoryReflectionLayerSchema, OmoMemorySyncLayerSchema, OmoMemorySearchLayerSchema, OmoMemoryRecallEventCapsLayerSchema, OmoMemoryRecallLayerSchema, OmoMemoryNudgeLayerSchema, OmoMemoryFactsLayerSchema, OmoMemoryDreamLayerSchema, OmoMemoryPeopleLayerSchema, OmoMemorySoulLayerSchema, OmoMemoryWriteNoticeLayerSchema, OmoMemoryProjectionSchema, OmoMemoryProjectionLayerSchema, OmoMemoryAgentOverridesSchema, OmoMemoryAutoIdentitySchema, OmoMemorySettingsSchema, OmoMemorySettingsLayerSchema;
76913
76913
  var init_memory = __esm(() => {
76914
76914
  init_zod();
76915
76915
  init_memory_agreements();
@@ -77065,9 +77065,11 @@ var init_memory = __esm(() => {
77065
77065
  projection: OmoMemoryProjectionLayerSchema.optional(),
77066
77066
  compile_warn_tokens: number2().int().positive().optional()
77067
77067
  }).strict();
77068
+ OmoMemoryAutoIdentitySchema = _enum(["path", "git"]);
77068
77069
  OmoMemorySettingsSchema = object({
77069
77070
  enabled: boolean2().default(true),
77070
77071
  agent: string2().min(1).default("auto"),
77072
+ auto_identity: OmoMemoryAutoIdentitySchema.default("path"),
77071
77073
  reflection: OmoMemoryReflectionSchema.default({
77072
77074
  enabled: true,
77073
77075
  trigger: { step_count: 25, on_compaction: true },
@@ -77109,6 +77111,7 @@ var init_memory = __esm(() => {
77109
77111
  OmoMemorySettingsLayerSchema = object({
77110
77112
  enabled: boolean2().optional(),
77111
77113
  agent: string2().min(1).optional(),
77114
+ auto_identity: OmoMemoryAutoIdentitySchema.optional(),
77112
77115
  reflection: OmoMemoryReflectionLayerSchema.optional(),
77113
77116
  nudge: OmoMemoryNudgeLayerSchema.optional(),
77114
77117
  facts: OmoMemoryFactsLayerSchema.optional(),
@@ -77158,6 +77161,7 @@ var init_model_profile = __esm(() => {
77158
77161
  init_fallback_models();
77159
77162
  OmoModelProfileInputSchema = object({
77160
77163
  display_name: string2().optional(),
77164
+ caution: string2().optional(),
77161
77165
  family: _enum(["daily", "geeky"]).optional(),
77162
77166
  tier: _enum(["normal", "heavy"]).optional(),
77163
77167
  models: array(union([string2(), OmoFallbackModelObjectSchema])).optional()
@@ -77451,7 +77455,7 @@ var init_gateway = __esm(() => {
77451
77455
  });
77452
77456
 
77453
77457
  // packages/omo-config-core/src/schema/config.ts
77454
- var OmoOpenCodeHarnessConfigSchema, OmoDisabledSkillsSchema, OmoTypedHarnessConfigSchema, OmoConfigProfileSchema, OmoConfigSchema, OmoConfigLayerSchema;
77458
+ var OmoOpenCodeHarnessConfigSchema, OmoDisabledSkillsSchema, OmoExcludedModelsSchema, OmoTypedHarnessConfigSchema, OmoConfigProfileSchema, OmoConfigSchema, OmoConfigLayerSchema;
77455
77459
  var init_config = __esm(() => {
77456
77460
  init_zod();
77457
77461
  init_agent();
@@ -77469,6 +77473,7 @@ var init_config = __esm(() => {
77469
77473
  init_gateway();
77470
77474
  OmoOpenCodeHarnessConfigSchema = record(string2(), unknown());
77471
77475
  OmoDisabledSkillsSchema = array(string2());
77476
+ OmoExcludedModelsSchema = array(string2());
77472
77477
  OmoTypedHarnessConfigSchema = object({
77473
77478
  formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
77474
77479
  gateway: OmoGatewaySectionSchema.optional(),
@@ -77484,7 +77489,8 @@ var init_config = __esm(() => {
77484
77489
  telemetry: OmoTelemetrySettingsLayerSchema.optional(),
77485
77490
  side_panel: OmoSidePanelSettingsLayerSchema.optional(),
77486
77491
  computer: OmoComputerSettingsLayerSchema.optional(),
77487
- disabled_skills: OmoDisabledSkillsSchema.optional()
77492
+ disabled_skills: OmoDisabledSkillsSchema.optional(),
77493
+ exclude_models: OmoExcludedModelsSchema.optional()
77488
77494
  }).strict();
77489
77495
  OmoConfigProfileSchema = object({
77490
77496
  formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
@@ -77501,6 +77507,7 @@ var init_config = __esm(() => {
77501
77507
  side_panel: OmoSidePanelSettingsLayerSchema.optional(),
77502
77508
  computer: OmoComputerSettingsLayerSchema.optional(),
77503
77509
  disabled_skills: OmoDisabledSkillsSchema.optional(),
77510
+ exclude_models: OmoExcludedModelsSchema.optional(),
77504
77511
  "[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
77505
77512
  "[native]": OmoTypedHarnessConfigSchema.optional(),
77506
77513
  "[senpi]": OmoTypedHarnessConfigSchema.optional(),
@@ -77523,6 +77530,7 @@ var init_config = __esm(() => {
77523
77530
  side_panel: OmoSidePanelSettingsSchema.optional(),
77524
77531
  computer: OmoComputerSettingsSchema.optional(),
77525
77532
  disabled_skills: OmoDisabledSkillsSchema.optional(),
77533
+ exclude_models: OmoExcludedModelsSchema.optional(),
77526
77534
  "[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
77527
77535
  "[native]": OmoTypedHarnessConfigSchema.optional(),
77528
77536
  "[senpi]": OmoTypedHarnessConfigSchema.optional(),
@@ -77548,6 +77556,7 @@ var init_config = __esm(() => {
77548
77556
  side_panel: OmoSidePanelSettingsLayerSchema.optional(),
77549
77557
  computer: OmoComputerSettingsLayerSchema.optional(),
77550
77558
  disabled_skills: OmoDisabledSkillsSchema.optional(),
77559
+ exclude_models: OmoExcludedModelsSchema.optional(),
77551
77560
  "[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
77552
77561
  "[native]": OmoTypedHarnessConfigSchema.optional(),
77553
77562
  "[senpi]": OmoTypedHarnessConfigSchema.optional(),
@@ -77756,7 +77765,51 @@ var init_diagnostic_lines = __esm(() => {
77756
77765
  });
77757
77766
 
77758
77767
  // packages/omo-config-core/src/loader/disabled-skills.ts
77759
- var init_disabled_skills = () => {};
77768
+ function toRecord(value) {
77769
+ if (value === null || typeof value !== "object" || Array.isArray(value))
77770
+ return;
77771
+ return value;
77772
+ }
77773
+ function namesAt(record, key) {
77774
+ const value = record?.[key];
77775
+ if (!Array.isArray(value))
77776
+ return [];
77777
+ return value.filter((entry) => typeof entry === "string" && entry.trim() !== "");
77778
+ }
77779
+ function harnessBlockKeys(harness) {
77780
+ const canonical = canonicalHarnessName(harness);
77781
+ const legacy = Object.entries(OMO_CONFIG_LEGACY_HARNESS_ALIASES).filter(([, target]) => target === canonical).map(([name]) => harnessBlockKey(name));
77782
+ return [harnessBlockKey(canonical), ...legacy];
77783
+ }
77784
+ function scopesOf(config, harness) {
77785
+ if (harness === undefined)
77786
+ return [config];
77787
+ return [config, ...harnessBlockKeys(harness).map((key) => toRecord(config[key]))];
77788
+ }
77789
+ function collectExcludedModels(options) {
77790
+ return collectUnionedList("exclude_models", options);
77791
+ }
77792
+ function collectUnionedList(key, options) {
77793
+ const names = new Set;
77794
+ for (const layer of options.layers) {
77795
+ const config = toRecord(layer.config);
77796
+ if (config === undefined)
77797
+ continue;
77798
+ const profile = options.profile === undefined ? undefined : toRecord(toRecord(config["profiles"])?.[options.profile]);
77799
+ const scopes = [
77800
+ ...scopesOf(config, options.harness),
77801
+ ...profile === undefined ? [] : scopesOf(profile, options.harness)
77802
+ ];
77803
+ for (const scope of scopes) {
77804
+ for (const name of namesAt(scope, key))
77805
+ names.add(name.trim());
77806
+ }
77807
+ }
77808
+ return [...names];
77809
+ }
77810
+ var init_disabled_skills = __esm(() => {
77811
+ init_schema();
77812
+ });
77760
77813
 
77761
77814
  // packages/omo-config-core/src/loader/merge.ts
77762
77815
  function isUnsafeObjectKey2(key) {
@@ -77992,7 +78045,7 @@ function stripUnrecognizedKeys(record, issues) {
77992
78045
  }
77993
78046
  return { issuePaths, stripped };
77994
78047
  }
77995
- function toRecord(value) {
78048
+ function toRecord2(value) {
77996
78049
  if (value === null || typeof value !== "object" || Array.isArray(value))
77997
78050
  return null;
77998
78051
  const record = {};
@@ -78003,7 +78056,7 @@ function toRecord(value) {
78003
78056
  }
78004
78057
  function validateConfigLayer(path, data) {
78005
78058
  const sanitized = sanitizeUnsafeKeys(data);
78006
- const record = toRecord(sanitized.value);
78059
+ const record = toRecord2(sanitized.value);
78007
78060
  const unsafeIssuePaths = sanitized.issues.flatMap((issue) => issue.keys.map((key) => [...issue.path, key].join(".")));
78008
78061
  const unsafeDiagnostics = unsafeIssuePaths.length === 0 ? [] : [{ kind: "unknown-keys", message: `Ignored unknown keys in ${path}: ${unsafeIssuePaths.join(", ")}`, path, issuePaths: unsafeIssuePaths }];
78009
78062
  const validation = OmoConfigLayerSchema.safeParse(sanitized.value);
@@ -78156,7 +78209,7 @@ function resolveOmoProfileName(options = {}) {
78156
78209
  const env = options.env ?? process.env;
78157
78210
  return profileName(options.profile) ?? profileName(env["OMO_PROFILE"]) ?? profileName(env["OCX_PROFILE"]) ?? profileNameFromOpenCodeConfigDir(env["OPENCODE_CONFIG_DIR"]);
78158
78211
  }
78159
- function toRecord2(value) {
78212
+ function toRecord3(value) {
78160
78213
  if (value === null || typeof value !== "object" || Array.isArray(value))
78161
78214
  return;
78162
78215
  return Object.fromEntries(Object.entries(value));
@@ -78177,13 +78230,13 @@ function harnessLayer(config, harness) {
78177
78230
  const legacyKeys = Object.entries(OMO_CONFIG_LEGACY_HARNESS_ALIASES).filter(([, target]) => target === canonical).map(([legacy]) => harnessBlockKey(legacy));
78178
78231
  let layer = {};
78179
78232
  for (const key of [...legacyKeys, harnessBlockKey(canonical)]) {
78180
- layer = mergeOmoConfigRecords(layer, toRecord2(config[key]) ?? {});
78233
+ layer = mergeOmoConfigRecords(layer, toRecord3(config[key]) ?? {});
78181
78234
  }
78182
78235
  return layer;
78183
78236
  }
78184
78237
  function resolveOmoConfigView(options) {
78185
- const profiles = toRecord2(options.config["profiles"]);
78186
- const profile = options.profile === undefined ? undefined : toRecord2(profiles?.[options.profile]);
78238
+ const profiles = toRecord3(options.config["profiles"]);
78239
+ const profile = options.profile === undefined ? undefined : toRecord3(profiles?.[options.profile]);
78187
78240
  const diagnostics = profile === undefined && options.profile !== undefined ? [{
78188
78241
  kind: "profile",
78189
78242
  message: `Activated omo profile "${options.profile}" does not exist; using the base configuration`,
@@ -78324,9 +78377,15 @@ function loadOmoConfig(options = {}) {
78324
78377
  });
78325
78378
  const finalInput = mergeOmoConfigRecords(DEFAULT_RAW_CONFIG, resolved.config);
78326
78379
  const finalConfig = OmoConfigSchema.safeParse(finalInput);
78380
+ const excludeModels = collectExcludedModels({
78381
+ layers,
78382
+ ...options.harness === undefined ? {} : { harness: options.harness },
78383
+ ...resolved.profile === undefined ? {} : { profile: resolved.profile }
78384
+ });
78385
+ const withExcludedModels = (config) => excludeModels.length === 0 ? config : { ...config, exclude_models: [...excludeModels] };
78327
78386
  if (finalConfig.success) {
78328
78387
  return {
78329
- config: stripResolutionControlKeys(finalConfig.data),
78388
+ config: withExcludedModels(stripResolutionControlKeys(finalConfig.data)),
78330
78389
  diagnostics: [...diagnostics, ...resolved.diagnostics],
78331
78390
  layers,
78332
78391
  ...resolved.profile === undefined ? {} : { profile: resolved.profile },
@@ -78339,7 +78398,7 @@ function loadOmoConfig(options = {}) {
78339
78398
  });
78340
78399
  if (pruned.ok) {
78341
78400
  return {
78342
- config: stripResolutionControlKeys(OmoConfigSchema.parse(pruned.config)),
78401
+ config: withExcludedModels(stripResolutionControlKeys(OmoConfigSchema.parse(pruned.config))),
78343
78402
  diagnostics: [...diagnostics, ...resolved.diagnostics, ...invalidValueDiagnostics(MERGED_OMO_CONFIG_PATH, pruned.dropped)],
78344
78403
  layers,
78345
78404
  ...resolved.profile === undefined ? {} : { profile: resolved.profile },
@@ -78358,6 +78417,7 @@ var DEFAULT_RAW_CONFIG;
78358
78417
  var init_loader2 = __esm(() => {
78359
78418
  init_main();
78360
78419
  init_schema();
78420
+ init_disabled_skills();
78361
78421
  init_layer_validation();
78362
78422
  init_merge();
78363
78423
  init_paths();
@@ -92220,7 +92280,7 @@ var package_default2;
92220
92280
  var init_package2 = __esm(() => {
92221
92281
  package_default2 = {
92222
92282
  name: "@oh-my-opencode/omo-codex",
92223
- version: "5.1.41",
92283
+ version: "5.1.42",
92224
92284
  type: "module",
92225
92285
  private: true,
92226
92286
  description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
@@ -99527,6 +99587,7 @@ var REQUIRED_PLUGIN_ARTIFACTS = [
99527
99587
  join63("extensions", "CaseFolding.txt"),
99528
99588
  join63("extensions", "omo-thread-client.js"),
99529
99589
  join63("extensions", "omo-feedback.js"),
99590
+ join63("extensions", "omo-claim-receipt.js"),
99530
99591
  join63("extensions", "assets.generated.json"),
99531
99592
  join63("extensions", "omo-member.js"),
99532
99593
  join63("extensions", "memory-run-supervisor.mjs"),
@@ -108569,6 +108630,10 @@ var package_default3 = {
108569
108630
  types: "./src/config-migration/index.ts",
108570
108631
  import: "./src/config-migration/index.ts"
108571
108632
  },
108633
+ "./service-auth": {
108634
+ types: "./src/cli/service-auth/index.ts",
108635
+ import: "./src/cli/service-auth/index.ts"
108636
+ },
108572
108637
  "./binary-downloader": {
108573
108638
  types: "./src/shared/binary-downloader.ts",
108574
108639
  import: "./src/shared/binary-downloader.ts"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lazycodex-ai",
3
- "version": "5.1.41",
3
+ "version": "5.1.42",
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",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omo",
3
- "version": "5.1.41",
3
+ "version": "5.1.42",
4
4
  "description": "One Codex plugin namespace for Yeongyu's local Codex components.",
5
5
  "author": {
6
6
  "name": "Yeongyu Kim",
@@ -7288,9 +7288,11 @@ var OmoMemoryAgentOverridesSchema = object({
7288
7288
  projection: OmoMemoryProjectionLayerSchema.optional(),
7289
7289
  compile_warn_tokens: number2().int().positive().optional()
7290
7290
  }).strict();
7291
+ var OmoMemoryAutoIdentitySchema = _enum(["path", "git"]);
7291
7292
  var OmoMemorySettingsSchema = object({
7292
7293
  enabled: boolean2().default(true),
7293
7294
  agent: string2().min(1).default("auto"),
7295
+ auto_identity: OmoMemoryAutoIdentitySchema.default("path"),
7294
7296
  reflection: OmoMemoryReflectionSchema.default({
7295
7297
  enabled: true,
7296
7298
  trigger: { step_count: 25, on_compaction: true },
@@ -7332,6 +7334,7 @@ var OmoMemorySettingsSchema = object({
7332
7334
  var OmoMemorySettingsLayerSchema = object({
7333
7335
  enabled: boolean2().optional(),
7334
7336
  agent: string2().min(1).optional(),
7337
+ auto_identity: OmoMemoryAutoIdentitySchema.optional(),
7335
7338
  reflection: OmoMemoryReflectionLayerSchema.optional(),
7336
7339
  nudge: OmoMemoryNudgeLayerSchema.optional(),
7337
7340
  facts: OmoMemoryFactsLayerSchema.optional(),
@@ -7370,6 +7373,7 @@ function isRecord6(value) {
7370
7373
  }
7371
7374
  var OmoModelProfileInputSchema = object({
7372
7375
  display_name: string2().optional(),
7376
+ caution: string2().optional(),
7373
7377
  family: _enum(["daily", "geeky"]).optional(),
7374
7378
  tier: _enum(["normal", "heavy"]).optional(),
7375
7379
  models: array(union([string2(), OmoFallbackModelObjectSchema])).optional()
@@ -7641,6 +7645,7 @@ var OmoGatewaySectionSchema = record(string2(), unknown()).describe("Chat-surfac
7641
7645
  // ../../omo-config-core/src/schema/config.ts
7642
7646
  var OmoOpenCodeHarnessConfigSchema = record(string2(), unknown());
7643
7647
  var OmoDisabledSkillsSchema = array(string2());
7648
+ var OmoExcludedModelsSchema = array(string2());
7644
7649
  var OmoTypedHarnessConfigSchema = object({
7645
7650
  formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
7646
7651
  gateway: OmoGatewaySectionSchema.optional(),
@@ -7656,7 +7661,8 @@ var OmoTypedHarnessConfigSchema = object({
7656
7661
  telemetry: OmoTelemetrySettingsLayerSchema.optional(),
7657
7662
  side_panel: OmoSidePanelSettingsLayerSchema.optional(),
7658
7663
  computer: OmoComputerSettingsLayerSchema.optional(),
7659
- disabled_skills: OmoDisabledSkillsSchema.optional()
7664
+ disabled_skills: OmoDisabledSkillsSchema.optional(),
7665
+ exclude_models: OmoExcludedModelsSchema.optional()
7660
7666
  }).strict();
7661
7667
  var OmoConfigProfileSchema = object({
7662
7668
  formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
@@ -7673,6 +7679,7 @@ var OmoConfigProfileSchema = object({
7673
7679
  side_panel: OmoSidePanelSettingsLayerSchema.optional(),
7674
7680
  computer: OmoComputerSettingsLayerSchema.optional(),
7675
7681
  disabled_skills: OmoDisabledSkillsSchema.optional(),
7682
+ exclude_models: OmoExcludedModelsSchema.optional(),
7676
7683
  "[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
7677
7684
  "[native]": OmoTypedHarnessConfigSchema.optional(),
7678
7685
  "[senpi]": OmoTypedHarnessConfigSchema.optional(),
@@ -7695,6 +7702,7 @@ var OmoConfigSchema = object({
7695
7702
  side_panel: OmoSidePanelSettingsSchema.optional(),
7696
7703
  computer: OmoComputerSettingsSchema.optional(),
7697
7704
  disabled_skills: OmoDisabledSkillsSchema.optional(),
7705
+ exclude_models: OmoExcludedModelsSchema.optional(),
7698
7706
  "[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
7699
7707
  "[native]": OmoTypedHarnessConfigSchema.optional(),
7700
7708
  "[senpi]": OmoTypedHarnessConfigSchema.optional(),
@@ -7720,6 +7728,7 @@ var OmoConfigLayerSchema = object({
7720
7728
  side_panel: OmoSidePanelSettingsLayerSchema.optional(),
7721
7729
  computer: OmoComputerSettingsLayerSchema.optional(),
7722
7730
  disabled_skills: OmoDisabledSkillsSchema.optional(),
7731
+ exclude_models: OmoExcludedModelsSchema.optional(),
7723
7732
  "[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
7724
7733
  "[native]": OmoTypedHarnessConfigSchema.optional(),
7725
7734
  "[senpi]": OmoTypedHarnessConfigSchema.optional(),
@@ -7843,6 +7852,50 @@ var DEFAULT_READ_FILE_SYSTEM = {
7843
7852
  realpathSync
7844
7853
  };
7845
7854
 
7855
+ // ../../omo-config-core/src/loader/disabled-skills.ts
7856
+ function toRecord(value) {
7857
+ if (value === null || typeof value !== "object" || Array.isArray(value))
7858
+ return;
7859
+ return value;
7860
+ }
7861
+ function namesAt(record, key) {
7862
+ const value = record?.[key];
7863
+ if (!Array.isArray(value))
7864
+ return [];
7865
+ return value.filter((entry) => typeof entry === "string" && entry.trim() !== "");
7866
+ }
7867
+ function harnessBlockKeys(harness) {
7868
+ const canonical = canonicalHarnessName(harness);
7869
+ const legacy = Object.entries(OMO_CONFIG_LEGACY_HARNESS_ALIASES).filter(([, target]) => target === canonical).map(([name]) => harnessBlockKey(name));
7870
+ return [harnessBlockKey(canonical), ...legacy];
7871
+ }
7872
+ function scopesOf(config, harness) {
7873
+ if (harness === undefined)
7874
+ return [config];
7875
+ return [config, ...harnessBlockKeys(harness).map((key) => toRecord(config[key]))];
7876
+ }
7877
+ function collectExcludedModels(options) {
7878
+ return collectUnionedList("exclude_models", options);
7879
+ }
7880
+ function collectUnionedList(key, options) {
7881
+ const names = new Set;
7882
+ for (const layer of options.layers) {
7883
+ const config = toRecord(layer.config);
7884
+ if (config === undefined)
7885
+ continue;
7886
+ const profile = options.profile === undefined ? undefined : toRecord(toRecord(config["profiles"])?.[options.profile]);
7887
+ const scopes = [
7888
+ ...scopesOf(config, options.harness),
7889
+ ...profile === undefined ? [] : scopesOf(profile, options.harness)
7890
+ ];
7891
+ for (const scope of scopes) {
7892
+ for (const name of namesAt(scope, key))
7893
+ names.add(name.trim());
7894
+ }
7895
+ }
7896
+ return [...names];
7897
+ }
7898
+
7846
7899
  // ../../../node_modules/.bun/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/scanner.js
7847
7900
  function createScanner(text, ignoreTrivia = false) {
7848
7901
  const len = text.length;
@@ -8915,7 +8968,7 @@ function stripUnrecognizedKeys(record, issues) {
8915
8968
  }
8916
8969
  return { issuePaths, stripped };
8917
8970
  }
8918
- function toRecord(value) {
8971
+ function toRecord2(value) {
8919
8972
  if (value === null || typeof value !== "object" || Array.isArray(value))
8920
8973
  return null;
8921
8974
  const record = {};
@@ -8930,7 +8983,7 @@ var validateLayerRecord = (record) => {
8930
8983
  };
8931
8984
  function validateConfigLayer(path, data) {
8932
8985
  const sanitized = sanitizeUnsafeKeys(data);
8933
- const record = toRecord(sanitized.value);
8986
+ const record = toRecord2(sanitized.value);
8934
8987
  const unsafeIssuePaths = sanitized.issues.flatMap((issue) => issue.keys.map((key) => [...issue.path, key].join(".")));
8935
8988
  const unsafeDiagnostics = unsafeIssuePaths.length === 0 ? [] : [{ kind: "unknown-keys", message: `Ignored unknown keys in ${path}: ${unsafeIssuePaths.join(", ")}`, path, issuePaths: unsafeIssuePaths }];
8936
8989
  const validation = OmoConfigLayerSchema.safeParse(sanitized.value);
@@ -9070,7 +9123,7 @@ function resolveOmoProfileName(options = {}) {
9070
9123
  const env = options.env ?? process.env;
9071
9124
  return profileName(options.profile) ?? profileName(env["OMO_PROFILE"]) ?? profileName(env["OCX_PROFILE"]) ?? profileNameFromOpenCodeConfigDir(env["OPENCODE_CONFIG_DIR"]);
9072
9125
  }
9073
- function toRecord2(value) {
9126
+ function toRecord3(value) {
9074
9127
  if (value === null || typeof value !== "object" || Array.isArray(value))
9075
9128
  return;
9076
9129
  return Object.fromEntries(Object.entries(value));
@@ -9091,13 +9144,13 @@ function harnessLayer(config, harness) {
9091
9144
  const legacyKeys = Object.entries(OMO_CONFIG_LEGACY_HARNESS_ALIASES).filter(([, target]) => target === canonical).map(([legacy]) => harnessBlockKey(legacy));
9092
9145
  let layer = {};
9093
9146
  for (const key of [...legacyKeys, harnessBlockKey(canonical)]) {
9094
- layer = mergeOmoConfigRecords(layer, toRecord2(config[key]) ?? {});
9147
+ layer = mergeOmoConfigRecords(layer, toRecord3(config[key]) ?? {});
9095
9148
  }
9096
9149
  return layer;
9097
9150
  }
9098
9151
  function resolveOmoConfigView(options) {
9099
- const profiles = toRecord2(options.config["profiles"]);
9100
- const profile = options.profile === undefined ? undefined : toRecord2(profiles?.[options.profile]);
9152
+ const profiles = toRecord3(options.config["profiles"]);
9153
+ const profile = options.profile === undefined ? undefined : toRecord3(profiles?.[options.profile]);
9101
9154
  const diagnostics = profile === undefined && options.profile !== undefined ? [{
9102
9155
  kind: "profile",
9103
9156
  message: `Activated omo profile "${options.profile}" does not exist; using the base configuration`,
@@ -9238,9 +9291,15 @@ function loadOmoConfig(options = {}) {
9238
9291
  });
9239
9292
  const finalInput = mergeOmoConfigRecords(DEFAULT_RAW_CONFIG, resolved.config);
9240
9293
  const finalConfig = OmoConfigSchema.safeParse(finalInput);
9294
+ const excludeModels = collectExcludedModels({
9295
+ layers,
9296
+ ...options.harness === undefined ? {} : { harness: options.harness },
9297
+ ...resolved.profile === undefined ? {} : { profile: resolved.profile }
9298
+ });
9299
+ const withExcludedModels = (config) => excludeModels.length === 0 ? config : { ...config, exclude_models: [...excludeModels] };
9241
9300
  if (finalConfig.success) {
9242
9301
  return {
9243
- config: stripResolutionControlKeys(finalConfig.data),
9302
+ config: withExcludedModels(stripResolutionControlKeys(finalConfig.data)),
9244
9303
  diagnostics: [...diagnostics, ...resolved.diagnostics],
9245
9304
  layers,
9246
9305
  ...resolved.profile === undefined ? {} : { profile: resolved.profile },
@@ -9253,7 +9312,7 @@ function loadOmoConfig(options = {}) {
9253
9312
  });
9254
9313
  if (pruned.ok) {
9255
9314
  return {
9256
- config: stripResolutionControlKeys(OmoConfigSchema.parse(pruned.config)),
9315
+ config: withExcludedModels(stripResolutionControlKeys(OmoConfigSchema.parse(pruned.config))),
9257
9316
  diagnostics: [...diagnostics, ...resolved.diagnostics, ...invalidValueDiagnostics(MERGED_OMO_CONFIG_PATH, pruned.dropped)],
9258
9317
  layers,
9259
9318
  ...resolved.profile === undefined ? {} : { profile: resolved.profile },
@@ -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.41) Checking Bootstrap Provisioning"
11
+ "statusMessage": "(OmO 5.1.42) Checking Bootstrap Provisioning"
12
12
  }
13
13
  ]
14
14
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sisyphuslabs/codex-bootstrap",
3
- "version": "5.1.41",
3
+ "version": "5.1.42",
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 post-tool-use",
10
10
  "timeout": 30,
11
- "statusMessage": "(OmO 5.1.41) Checking Comments"
11
+ "statusMessage": "(OmO 5.1.42) Checking Comments"
12
12
  }
13
13
  ]
14
14
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-comment-checker",
3
- "version": "5.1.41",
3
+ "version": "5.1.42",
4
4
  "description": "Codex plugin that runs comment-checker after edit-like PostToolUse hooks.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -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.41) Recommending Git Bash MCP"
11
+ "statusMessage": "(OmO 5.1.42) 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.41) Resetting Git Bash MCP Reminder"
23
+ "statusMessage": "(OmO 5.1.42) Resetting Git Bash MCP Reminder"
24
24
  }
25
25
  ]
26
26
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sisyphuslabs/codex-git-bash-hook",
3
- "version": "5.1.41",
3
+ "version": "5.1.42",
4
4
  "description": "Codex hook component that reminds Windows sessions to prefer the OMO git_bash MCP.",
5
5
  "type": "module",
6
6
  "private": true,
@@ -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.41) Verifying LazyCodex Executor Evidence"
11
+ "statusMessage": "(OmO 5.1.42) 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.1.41",
3
+ "version": "5.1.42",
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.1.41",
4
- "inputDigest": "sha256:ad15254c56422d6b36ee8b483fb554748ed5358e03e99bbf8588449fb83e9ee6",
3
+ "version": "5.1.42",
4
+ "inputDigest": "sha256:67783401245cfd4a937dfd08ba04aa96bff6ea9816e0f6caeca4d98722b2baec",
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.1.41) Checking LSP Diagnostics"
11
+ "statusMessage": "(OmO 5.1.42) 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.41) Resetting LSP Diagnostics Cache"
24
+ "statusMessage": "(OmO 5.1.42) Resetting LSP Diagnostics Cache"
25
25
  }
26
26
  ]
27
27
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-lsp",
3
- "version": "5.1.41",
3
+ "version": "5.1.42",
4
4
  "description": "Codex plugin that exposes Language Server Protocol tools and post-edit diagnostics.",
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 session-start",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 5.1.41) Loading Project Rules"
10
+ "statusMessage": "(OmO 5.1.42) 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.1.41) Loading Project Rules"
22
+ "statusMessage": "(OmO 5.1.42) 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.1.41) Matching Project Rules"
35
+ "statusMessage": "(OmO 5.1.42) 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.1.41) Resetting Project Rule Cache"
48
+ "statusMessage": "(OmO 5.1.42) Resetting Project Rule Cache"
49
49
  }
50
50
  ]
51
51
  }