lazycodex-ai 5.1.40 → 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 (118) 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 +115 -27
  12. package/dist/cli/service-auth/index.d.ts +3 -0
  13. package/dist/cli-node/index.js +115 -27
  14. package/package.json +1 -1
  15. package/packages/lsp-daemon/dist/cli.js +10 -0
  16. package/packages/lsp-daemon/dist/client.js +10 -0
  17. package/packages/lsp-daemon/dist/index.js +10 -0
  18. package/packages/lsp-tools-mcp/dist/cli.js +10 -0
  19. package/packages/lsp-tools-mcp/dist/lsp/manager.js +10 -0
  20. package/packages/lsp-tools-mcp/dist/mcp.js +10 -0
  21. package/packages/lsp-tools-mcp/dist/tools.js +10 -0
  22. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  23. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +84 -9
  24. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  25. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  26. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  27. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  28. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  29. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  30. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  31. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  32. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +3 -3
  33. package/packages/omo-codex/plugin/components/lsp/dist/cli.js +10 -0
  34. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  35. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  36. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  37. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  38. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  39. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  40. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  41. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  42. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  43. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  44. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
  45. package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
  46. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
  47. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  48. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  49. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  50. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  51. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  52. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  53. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  54. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  55. package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
  56. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  57. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  58. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  59. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  60. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  61. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  62. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  63. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
  64. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  65. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  66. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  67. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  68. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  69. package/packages/omo-codex/plugin/package-lock.json +12 -12
  70. package/packages/omo-codex/plugin/package.json +1 -1
  71. package/packages/omo-codex/plugin/skills/browser/runtime/omowright/manifest.json +1 -1
  72. package/packages/omo-codex/plugin/skills/frontend/SKILL.md +6 -6
  73. package/packages/omo-codex/plugin/skills/frontend/references/design/README.md +2 -2
  74. package/packages/omo-codex/plugin/skills/frontend/references/perfection/README.md +2 -2
  75. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/accent-stripes/declarations.ts +22 -13
  76. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/accent-stripes/findings.ts +7 -6
  77. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/accent-stripes/lint.ts +18 -24
  78. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/accent-stripes/markup.ts +14 -7
  79. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/accent-stripes/selector.ts +5 -1
  80. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/accent-stripes/tailwind.ts +32 -14
  81. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/check-accent-stripes.ts +1 -1
  82. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/accent-stripes/negative/inline-ok.tsx +1 -0
  83. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/accent-stripes/negative/neutral-and-flat.css +1 -1
  84. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/accent-stripes/negative/tailwind-ok.tsx +5 -2
  85. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/accent-stripes/negative/uniform-and-rings.css +2 -2
  86. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/accent-stripes/positive/accent-outlines.css +4 -0
  87. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/accent-stripes/positive/accent-outlines.tsx +8 -0
  88. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/accent-stripes/{negative → positive}/flat-stripe-side.tsx +3 -1
  89. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/accent-stripes/positive/report-callouts.html +8 -0
  90. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/accent-stripes/positive/square-surfaces.css +8 -0
  91. package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +10 -2
  92. package/packages/omo-codex/plugin/skills/ulw-research/references/deliverable-phase.md +10 -0
  93. package/packages/omo-codex/plugin/skills/ulw-research/references/report-visualization.md +23 -0
  94. package/packages/omo-codex/scripts/install-dist/install-local.mjs +86 -11
  95. package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +1 -1
  96. package/packages/shared-skills/skills/frontend/SKILL.md +6 -6
  97. package/packages/shared-skills/skills/frontend/references/design/README.md +2 -2
  98. package/packages/shared-skills/skills/frontend/references/perfection/README.md +2 -2
  99. package/packages/shared-skills/skills/frontend/scripts/perfection/accent-stripes/declarations.ts +22 -13
  100. package/packages/shared-skills/skills/frontend/scripts/perfection/accent-stripes/findings.ts +7 -6
  101. package/packages/shared-skills/skills/frontend/scripts/perfection/accent-stripes/lint.ts +18 -24
  102. package/packages/shared-skills/skills/frontend/scripts/perfection/accent-stripes/markup.ts +14 -7
  103. package/packages/shared-skills/skills/frontend/scripts/perfection/accent-stripes/selector.ts +5 -1
  104. package/packages/shared-skills/skills/frontend/scripts/perfection/accent-stripes/tailwind.ts +32 -14
  105. package/packages/shared-skills/skills/frontend/scripts/perfection/check-accent-stripes.test.ts +15 -6
  106. package/packages/shared-skills/skills/frontend/scripts/perfection/check-accent-stripes.ts +1 -1
  107. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/accent-stripes/negative/inline-ok.tsx +1 -0
  108. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/accent-stripes/negative/neutral-and-flat.css +1 -1
  109. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/accent-stripes/negative/tailwind-ok.tsx +5 -2
  110. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/accent-stripes/negative/uniform-and-rings.css +2 -2
  111. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/accent-stripes/positive/accent-outlines.css +4 -0
  112. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/accent-stripes/positive/accent-outlines.tsx +8 -0
  113. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/accent-stripes/{negative → positive}/flat-stripe-side.tsx +3 -1
  114. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/accent-stripes/positive/report-callouts.html +8 -0
  115. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/accent-stripes/positive/square-surfaces.css +8 -0
  116. package/packages/shared-skills/skills/ulw-research/SKILL.md +10 -2
  117. package/packages/shared-skills/skills/ulw-research/references/deliverable-phase.md +10 -0
  118. package/packages/shared-skills/skills/ulw-research/references/report-visualization.md +23 -0
@@ -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.40",
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.19-2",
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.40",
2375
- "oh-my-opencode-darwin-x64": "5.1.40",
2376
- "oh-my-opencode-darwin-x64-baseline": "5.1.40",
2377
- "oh-my-opencode-linux-arm64": "5.1.40",
2378
- "oh-my-opencode-linux-arm64-musl": "5.1.40",
2379
- "oh-my-opencode-linux-x64": "5.1.40",
2380
- "oh-my-opencode-linux-x64-baseline": "5.1.40",
2381
- "oh-my-opencode-linux-x64-musl": "5.1.40",
2382
- "oh-my-opencode-linux-x64-musl-baseline": "5.1.40",
2383
- "oh-my-opencode-windows-arm64": "5.1.40",
2384
- "oh-my-opencode-windows-x64": "5.1.40",
2385
- "oh-my-opencode-windows-x64-baseline": "5.1.40"
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",
@@ -76891,10 +76891,29 @@ var init_harness = __esm(() => {
76891
76891
  OMO_CONFIG_LEGACY_HARNESS_IDS = Object.keys(OMO_CONFIG_LEGACY_HARNESS_ALIASES);
76892
76892
  });
76893
76893
 
76894
+ // packages/omo-config-core/src/schema/memory-agreements.ts
76895
+ var OMO_MEMORY_AGREEMENTS_DEFAULTS, OmoMemoryAgreementsSchema, OmoMemoryAgreementsLayerSchema;
76896
+ var init_memory_agreements = __esm(() => {
76897
+ init_zod();
76898
+ OMO_MEMORY_AGREEMENTS_DEFAULTS = { enabled: true, needs_human_threshold: 3, max_items: 64 };
76899
+ OmoMemoryAgreementsSchema = object({
76900
+ enabled: boolean2().default(OMO_MEMORY_AGREEMENTS_DEFAULTS.enabled),
76901
+ needs_human_threshold: number2().int().min(1).default(OMO_MEMORY_AGREEMENTS_DEFAULTS.needs_human_threshold),
76902
+ max_items: number2().int().min(8).max(256).default(OMO_MEMORY_AGREEMENTS_DEFAULTS.max_items)
76903
+ }).strict();
76904
+ OmoMemoryAgreementsLayerSchema = object({
76905
+ enabled: boolean2().optional(),
76906
+ needs_human_threshold: number2().int().min(1).optional(),
76907
+ max_items: number2().int().min(8).max(256).optional()
76908
+ }).strict();
76909
+ });
76910
+
76894
76911
  // packages/omo-config-core/src/schema/memory.ts
76895
- 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;
76896
76913
  var init_memory = __esm(() => {
76897
76914
  init_zod();
76915
+ init_memory_agreements();
76916
+ init_memory_agreements();
76898
76917
  OmoMemoryReflectionTriggerSchema = object({
76899
76918
  step_count: number2().int().nonnegative().default(25),
76900
76919
  on_compaction: boolean2().default(true)
@@ -77037,6 +77056,7 @@ var init_memory = __esm(() => {
77037
77056
  facts: OmoMemoryFactsLayerSchema.optional(),
77038
77057
  dream: OmoMemoryDreamLayerSchema.optional(),
77039
77058
  people: OmoMemoryPeopleLayerSchema.optional(),
77059
+ agreements: OmoMemoryAgreementsLayerSchema.optional(),
77040
77060
  soul: OmoMemorySoulLayerSchema.optional(),
77041
77061
  write_notice: OmoMemoryWriteNoticeLayerSchema.optional(),
77042
77062
  sync: OmoMemorySyncLayerSchema.optional(),
@@ -77045,9 +77065,11 @@ var init_memory = __esm(() => {
77045
77065
  projection: OmoMemoryProjectionLayerSchema.optional(),
77046
77066
  compile_warn_tokens: number2().int().positive().optional()
77047
77067
  }).strict();
77068
+ OmoMemoryAutoIdentitySchema = _enum(["path", "git"]);
77048
77069
  OmoMemorySettingsSchema = object({
77049
77070
  enabled: boolean2().default(true),
77050
77071
  agent: string2().min(1).default("auto"),
77072
+ auto_identity: OmoMemoryAutoIdentitySchema.default("path"),
77051
77073
  reflection: OmoMemoryReflectionSchema.default({
77052
77074
  enabled: true,
77053
77075
  trigger: { step_count: 25, on_compaction: true },
@@ -77067,6 +77089,7 @@ var init_memory = __esm(() => {
77067
77089
  auto_select_max_chars: 150000
77068
77090
  }),
77069
77091
  people: OmoMemoryPeopleSchema.default({ enabled: true, max_entries: 40, max_entry_chars: 200 }),
77092
+ agreements: OmoMemoryAgreementsSchema.default(OMO_MEMORY_AGREEMENTS_DEFAULTS),
77070
77093
  soul: OmoMemorySoulSchema.default({ edit_notice: true }),
77071
77094
  write_notice: OmoMemoryWriteNoticeSchema.default({ enabled: true }),
77072
77095
  sync: OmoMemorySyncSchema.default({ enabled: true }),
@@ -77088,11 +77111,13 @@ var init_memory = __esm(() => {
77088
77111
  OmoMemorySettingsLayerSchema = object({
77089
77112
  enabled: boolean2().optional(),
77090
77113
  agent: string2().min(1).optional(),
77114
+ auto_identity: OmoMemoryAutoIdentitySchema.optional(),
77091
77115
  reflection: OmoMemoryReflectionLayerSchema.optional(),
77092
77116
  nudge: OmoMemoryNudgeLayerSchema.optional(),
77093
77117
  facts: OmoMemoryFactsLayerSchema.optional(),
77094
77118
  dream: OmoMemoryDreamLayerSchema.optional(),
77095
77119
  people: OmoMemoryPeopleLayerSchema.optional(),
77120
+ agreements: OmoMemoryAgreementsLayerSchema.optional(),
77096
77121
  soul: OmoMemorySoulLayerSchema.optional(),
77097
77122
  write_notice: OmoMemoryWriteNoticeLayerSchema.optional(),
77098
77123
  sync: OmoMemorySyncLayerSchema.optional(),
@@ -77136,6 +77161,7 @@ var init_model_profile = __esm(() => {
77136
77161
  init_fallback_models();
77137
77162
  OmoModelProfileInputSchema = object({
77138
77163
  display_name: string2().optional(),
77164
+ caution: string2().optional(),
77139
77165
  family: _enum(["daily", "geeky"]).optional(),
77140
77166
  tier: _enum(["normal", "heavy"]).optional(),
77141
77167
  models: array(union([string2(), OmoFallbackModelObjectSchema])).optional()
@@ -77429,7 +77455,7 @@ var init_gateway = __esm(() => {
77429
77455
  });
77430
77456
 
77431
77457
  // packages/omo-config-core/src/schema/config.ts
77432
- var OmoOpenCodeHarnessConfigSchema, OmoDisabledSkillsSchema, OmoTypedHarnessConfigSchema, OmoConfigProfileSchema, OmoConfigSchema, OmoConfigLayerSchema;
77458
+ var OmoOpenCodeHarnessConfigSchema, OmoDisabledSkillsSchema, OmoExcludedModelsSchema, OmoTypedHarnessConfigSchema, OmoConfigProfileSchema, OmoConfigSchema, OmoConfigLayerSchema;
77433
77459
  var init_config = __esm(() => {
77434
77460
  init_zod();
77435
77461
  init_agent();
@@ -77447,6 +77473,7 @@ var init_config = __esm(() => {
77447
77473
  init_gateway();
77448
77474
  OmoOpenCodeHarnessConfigSchema = record(string2(), unknown());
77449
77475
  OmoDisabledSkillsSchema = array(string2());
77476
+ OmoExcludedModelsSchema = array(string2());
77450
77477
  OmoTypedHarnessConfigSchema = object({
77451
77478
  formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
77452
77479
  gateway: OmoGatewaySectionSchema.optional(),
@@ -77462,7 +77489,8 @@ var init_config = __esm(() => {
77462
77489
  telemetry: OmoTelemetrySettingsLayerSchema.optional(),
77463
77490
  side_panel: OmoSidePanelSettingsLayerSchema.optional(),
77464
77491
  computer: OmoComputerSettingsLayerSchema.optional(),
77465
- disabled_skills: OmoDisabledSkillsSchema.optional()
77492
+ disabled_skills: OmoDisabledSkillsSchema.optional(),
77493
+ exclude_models: OmoExcludedModelsSchema.optional()
77466
77494
  }).strict();
77467
77495
  OmoConfigProfileSchema = object({
77468
77496
  formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
@@ -77479,6 +77507,7 @@ var init_config = __esm(() => {
77479
77507
  side_panel: OmoSidePanelSettingsLayerSchema.optional(),
77480
77508
  computer: OmoComputerSettingsLayerSchema.optional(),
77481
77509
  disabled_skills: OmoDisabledSkillsSchema.optional(),
77510
+ exclude_models: OmoExcludedModelsSchema.optional(),
77482
77511
  "[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
77483
77512
  "[native]": OmoTypedHarnessConfigSchema.optional(),
77484
77513
  "[senpi]": OmoTypedHarnessConfigSchema.optional(),
@@ -77501,6 +77530,7 @@ var init_config = __esm(() => {
77501
77530
  side_panel: OmoSidePanelSettingsSchema.optional(),
77502
77531
  computer: OmoComputerSettingsSchema.optional(),
77503
77532
  disabled_skills: OmoDisabledSkillsSchema.optional(),
77533
+ exclude_models: OmoExcludedModelsSchema.optional(),
77504
77534
  "[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
77505
77535
  "[native]": OmoTypedHarnessConfigSchema.optional(),
77506
77536
  "[senpi]": OmoTypedHarnessConfigSchema.optional(),
@@ -77526,6 +77556,7 @@ var init_config = __esm(() => {
77526
77556
  side_panel: OmoSidePanelSettingsLayerSchema.optional(),
77527
77557
  computer: OmoComputerSettingsLayerSchema.optional(),
77528
77558
  disabled_skills: OmoDisabledSkillsSchema.optional(),
77559
+ exclude_models: OmoExcludedModelsSchema.optional(),
77529
77560
  "[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
77530
77561
  "[native]": OmoTypedHarnessConfigSchema.optional(),
77531
77562
  "[senpi]": OmoTypedHarnessConfigSchema.optional(),
@@ -77734,7 +77765,51 @@ var init_diagnostic_lines = __esm(() => {
77734
77765
  });
77735
77766
 
77736
77767
  // packages/omo-config-core/src/loader/disabled-skills.ts
77737
- 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
+ });
77738
77813
 
77739
77814
  // packages/omo-config-core/src/loader/merge.ts
77740
77815
  function isUnsafeObjectKey2(key) {
@@ -77970,7 +78045,7 @@ function stripUnrecognizedKeys(record, issues) {
77970
78045
  }
77971
78046
  return { issuePaths, stripped };
77972
78047
  }
77973
- function toRecord(value) {
78048
+ function toRecord2(value) {
77974
78049
  if (value === null || typeof value !== "object" || Array.isArray(value))
77975
78050
  return null;
77976
78051
  const record = {};
@@ -77981,7 +78056,7 @@ function toRecord(value) {
77981
78056
  }
77982
78057
  function validateConfigLayer(path, data) {
77983
78058
  const sanitized = sanitizeUnsafeKeys(data);
77984
- const record = toRecord(sanitized.value);
78059
+ const record = toRecord2(sanitized.value);
77985
78060
  const unsafeIssuePaths = sanitized.issues.flatMap((issue) => issue.keys.map((key) => [...issue.path, key].join(".")));
77986
78061
  const unsafeDiagnostics = unsafeIssuePaths.length === 0 ? [] : [{ kind: "unknown-keys", message: `Ignored unknown keys in ${path}: ${unsafeIssuePaths.join(", ")}`, path, issuePaths: unsafeIssuePaths }];
77987
78062
  const validation = OmoConfigLayerSchema.safeParse(sanitized.value);
@@ -78134,7 +78209,7 @@ function resolveOmoProfileName(options = {}) {
78134
78209
  const env = options.env ?? process.env;
78135
78210
  return profileName(options.profile) ?? profileName(env["OMO_PROFILE"]) ?? profileName(env["OCX_PROFILE"]) ?? profileNameFromOpenCodeConfigDir(env["OPENCODE_CONFIG_DIR"]);
78136
78211
  }
78137
- function toRecord2(value) {
78212
+ function toRecord3(value) {
78138
78213
  if (value === null || typeof value !== "object" || Array.isArray(value))
78139
78214
  return;
78140
78215
  return Object.fromEntries(Object.entries(value));
@@ -78155,13 +78230,13 @@ function harnessLayer(config, harness) {
78155
78230
  const legacyKeys = Object.entries(OMO_CONFIG_LEGACY_HARNESS_ALIASES).filter(([, target]) => target === canonical).map(([legacy]) => harnessBlockKey(legacy));
78156
78231
  let layer = {};
78157
78232
  for (const key of [...legacyKeys, harnessBlockKey(canonical)]) {
78158
- layer = mergeOmoConfigRecords(layer, toRecord2(config[key]) ?? {});
78233
+ layer = mergeOmoConfigRecords(layer, toRecord3(config[key]) ?? {});
78159
78234
  }
78160
78235
  return layer;
78161
78236
  }
78162
78237
  function resolveOmoConfigView(options) {
78163
- const profiles = toRecord2(options.config["profiles"]);
78164
- 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]);
78165
78240
  const diagnostics = profile === undefined && options.profile !== undefined ? [{
78166
78241
  kind: "profile",
78167
78242
  message: `Activated omo profile "${options.profile}" does not exist; using the base configuration`,
@@ -78302,9 +78377,15 @@ function loadOmoConfig(options = {}) {
78302
78377
  });
78303
78378
  const finalInput = mergeOmoConfigRecords(DEFAULT_RAW_CONFIG, resolved.config);
78304
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] };
78305
78386
  if (finalConfig.success) {
78306
78387
  return {
78307
- config: stripResolutionControlKeys(finalConfig.data),
78388
+ config: withExcludedModels(stripResolutionControlKeys(finalConfig.data)),
78308
78389
  diagnostics: [...diagnostics, ...resolved.diagnostics],
78309
78390
  layers,
78310
78391
  ...resolved.profile === undefined ? {} : { profile: resolved.profile },
@@ -78317,7 +78398,7 @@ function loadOmoConfig(options = {}) {
78317
78398
  });
78318
78399
  if (pruned.ok) {
78319
78400
  return {
78320
- config: stripResolutionControlKeys(OmoConfigSchema.parse(pruned.config)),
78401
+ config: withExcludedModels(stripResolutionControlKeys(OmoConfigSchema.parse(pruned.config))),
78321
78402
  diagnostics: [...diagnostics, ...resolved.diagnostics, ...invalidValueDiagnostics(MERGED_OMO_CONFIG_PATH, pruned.dropped)],
78322
78403
  layers,
78323
78404
  ...resolved.profile === undefined ? {} : { profile: resolved.profile },
@@ -78336,6 +78417,7 @@ var DEFAULT_RAW_CONFIG;
78336
78417
  var init_loader2 = __esm(() => {
78337
78418
  init_main();
78338
78419
  init_schema();
78420
+ init_disabled_skills();
78339
78421
  init_layer_validation();
78340
78422
  init_merge();
78341
78423
  init_paths();
@@ -92198,7 +92280,7 @@ var package_default2;
92198
92280
  var init_package2 = __esm(() => {
92199
92281
  package_default2 = {
92200
92282
  name: "@oh-my-opencode/omo-codex",
92201
- version: "5.1.40",
92283
+ version: "5.1.42",
92202
92284
  type: "module",
92203
92285
  private: true,
92204
92286
  description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
@@ -99504,6 +99586,8 @@ var REQUIRED_PLUGIN_ARTIFACTS = [
99504
99586
  join63("extensions", "loro_wasm_bg.wasm"),
99505
99587
  join63("extensions", "CaseFolding.txt"),
99506
99588
  join63("extensions", "omo-thread-client.js"),
99589
+ join63("extensions", "omo-feedback.js"),
99590
+ join63("extensions", "omo-claim-receipt.js"),
99507
99591
  join63("extensions", "assets.generated.json"),
99508
99592
  join63("extensions", "omo-member.js"),
99509
99593
  join63("extensions", "memory-run-supervisor.mjs"),
@@ -108546,6 +108630,10 @@ var package_default3 = {
108546
108630
  types: "./src/config-migration/index.ts",
108547
108631
  import: "./src/config-migration/index.ts"
108548
108632
  },
108633
+ "./service-auth": {
108634
+ types: "./src/cli/service-auth/index.ts",
108635
+ import: "./src/cli/service-auth/index.ts"
108636
+ },
108549
108637
  "./binary-downloader": {
108550
108638
  types: "./src/shared/binary-downloader.ts",
108551
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.40",
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",
@@ -1404,6 +1404,13 @@ function validateCwd(cwd) {
1404
1404
  };
1405
1405
  }
1406
1406
  }
1407
+ function guardPipeErrors(stream, pipe) {
1408
+ stream.on("error", (error) => {
1409
+ if (stream.listenerCount("error") > 1)
1410
+ return;
1411
+ reportBestEffortCleanupError(`server ${pipe}`, error);
1412
+ });
1413
+ }
1407
1414
  function wrap(proc) {
1408
1415
  const exitedPromise = new Promise((resolve) => {
1409
1416
  proc.once("close", (code) => resolve(code ?? 0));
@@ -1412,6 +1419,9 @@ function wrap(proc) {
1412
1419
  if (!proc.stdin || !proc.stdout || !proc.stderr) {
1413
1420
  throw new LspProcessSpawnError("Spawned process is missing one of stdin/stdout/stderr pipes");
1414
1421
  }
1422
+ guardPipeErrors(proc.stdin, "stdin");
1423
+ guardPipeErrors(proc.stdout, "stdout");
1424
+ guardPipeErrors(proc.stderr, "stderr");
1415
1425
  return {
1416
1426
  stdin: proc.stdin,
1417
1427
  stdout: proc.stdout,
@@ -1640,6 +1640,13 @@ function validateCwd(cwd) {
1640
1640
  };
1641
1641
  }
1642
1642
  }
1643
+ function guardPipeErrors(stream, pipe) {
1644
+ stream.on("error", (error) => {
1645
+ if (stream.listenerCount("error") > 1)
1646
+ return;
1647
+ reportBestEffortCleanupError(`server ${pipe}`, error);
1648
+ });
1649
+ }
1643
1650
  function wrap(proc) {
1644
1651
  const exitedPromise = new Promise((resolve) => {
1645
1652
  proc.once("close", (code) => resolve(code ?? 0));
@@ -1648,6 +1655,9 @@ function wrap(proc) {
1648
1655
  if (!proc.stdin || !proc.stdout || !proc.stderr) {
1649
1656
  throw new LspProcessSpawnError("Spawned process is missing one of stdin/stdout/stderr pipes");
1650
1657
  }
1658
+ guardPipeErrors(proc.stdin, "stdin");
1659
+ guardPipeErrors(proc.stdout, "stdout");
1660
+ guardPipeErrors(proc.stderr, "stderr");
1651
1661
  return {
1652
1662
  stdin: proc.stdin,
1653
1663
  stdout: proc.stdout,
@@ -465,6 +465,13 @@ function validateCwd(cwd) {
465
465
  };
466
466
  }
467
467
  }
468
+ function guardPipeErrors(stream, pipe) {
469
+ stream.on("error", (error) => {
470
+ if (stream.listenerCount("error") > 1)
471
+ return;
472
+ reportBestEffortCleanupError(`server ${pipe}`, error);
473
+ });
474
+ }
468
475
  function wrap(proc) {
469
476
  const exitedPromise = new Promise((resolve) => {
470
477
  proc.once("close", (code) => resolve(code ?? 0));
@@ -473,6 +480,9 @@ function wrap(proc) {
473
480
  if (!proc.stdin || !proc.stdout || !proc.stderr) {
474
481
  throw new LspProcessSpawnError("Spawned process is missing one of stdin/stdout/stderr pipes");
475
482
  }
483
+ guardPipeErrors(proc.stdin, "stdin");
484
+ guardPipeErrors(proc.stdout, "stdout");
485
+ guardPipeErrors(proc.stderr, "stderr");
476
486
  return {
477
487
  stdin: proc.stdin,
478
488
  stdout: proc.stdout,
@@ -470,6 +470,13 @@ function validateCwd(cwd) {
470
470
  };
471
471
  }
472
472
  }
473
+ function guardPipeErrors(stream, pipe) {
474
+ stream.on("error", (error) => {
475
+ if (stream.listenerCount("error") > 1)
476
+ return;
477
+ reportBestEffortCleanupError(`server ${pipe}`, error);
478
+ });
479
+ }
473
480
  function wrap(proc) {
474
481
  const exitedPromise = new Promise((resolve) => {
475
482
  proc.once("close", (code) => resolve(code ?? 0));
@@ -478,6 +485,9 @@ function wrap(proc) {
478
485
  if (!proc.stdin || !proc.stdout || !proc.stderr) {
479
486
  throw new LspProcessSpawnError("Spawned process is missing one of stdin/stdout/stderr pipes");
480
487
  }
488
+ guardPipeErrors(proc.stdin, "stdin");
489
+ guardPipeErrors(proc.stdout, "stdout");
490
+ guardPipeErrors(proc.stderr, "stderr");
481
491
  return {
482
492
  stdin: proc.stdin,
483
493
  stdout: proc.stdout,
@@ -465,6 +465,13 @@ function validateCwd(cwd) {
465
465
  };
466
466
  }
467
467
  }
468
+ function guardPipeErrors(stream, pipe) {
469
+ stream.on("error", (error) => {
470
+ if (stream.listenerCount("error") > 1)
471
+ return;
472
+ reportBestEffortCleanupError(`server ${pipe}`, error);
473
+ });
474
+ }
468
475
  function wrap(proc) {
469
476
  const exitedPromise = new Promise((resolve) => {
470
477
  proc.once("close", (code) => resolve(code ?? 0));
@@ -473,6 +480,9 @@ function wrap(proc) {
473
480
  if (!proc.stdin || !proc.stdout || !proc.stderr) {
474
481
  throw new LspProcessSpawnError("Spawned process is missing one of stdin/stdout/stderr pipes");
475
482
  }
483
+ guardPipeErrors(proc.stdin, "stdin");
484
+ guardPipeErrors(proc.stdout, "stdout");
485
+ guardPipeErrors(proc.stderr, "stderr");
476
486
  return {
477
487
  stdin: proc.stdin,
478
488
  stdout: proc.stdout,
@@ -969,6 +969,13 @@ function validateCwd(cwd) {
969
969
  };
970
970
  }
971
971
  }
972
+ function guardPipeErrors(stream, pipe) {
973
+ stream.on("error", (error) => {
974
+ if (stream.listenerCount("error") > 1)
975
+ return;
976
+ reportBestEffortCleanupError(`server ${pipe}`, error);
977
+ });
978
+ }
972
979
  function wrap(proc) {
973
980
  const exitedPromise = new Promise((resolve) => {
974
981
  proc.once("close", (code) => resolve(code ?? 0));
@@ -977,6 +984,9 @@ function wrap(proc) {
977
984
  if (!proc.stdin || !proc.stdout || !proc.stderr) {
978
985
  throw new LspProcessSpawnError("Spawned process is missing one of stdin/stdout/stderr pipes");
979
986
  }
987
+ guardPipeErrors(proc.stdin, "stdin");
988
+ guardPipeErrors(proc.stdout, "stdout");
989
+ guardPipeErrors(proc.stderr, "stderr");
980
990
  return {
981
991
  stdin: proc.stdin,
982
992
  stdout: proc.stdout,
@@ -657,6 +657,13 @@ function validateCwd(cwd) {
657
657
  };
658
658
  }
659
659
  }
660
+ function guardPipeErrors(stream, pipe) {
661
+ stream.on("error", (error) => {
662
+ if (stream.listenerCount("error") > 1)
663
+ return;
664
+ reportBestEffortCleanupError(`server ${pipe}`, error);
665
+ });
666
+ }
660
667
  function wrap(proc) {
661
668
  const exitedPromise = new Promise((resolve) => {
662
669
  proc.once("close", (code) => resolve(code ?? 0));
@@ -665,6 +672,9 @@ function wrap(proc) {
665
672
  if (!proc.stdin || !proc.stdout || !proc.stderr) {
666
673
  throw new LspProcessSpawnError("Spawned process is missing one of stdin/stdout/stderr pipes");
667
674
  }
675
+ guardPipeErrors(proc.stdin, "stdin");
676
+ guardPipeErrors(proc.stdout, "stdout");
677
+ guardPipeErrors(proc.stderr, "stderr");
668
678
  return {
669
679
  stdin: proc.stdin,
670
680
  stdout: proc.stdout,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omo",
3
- "version": "5.1.40",
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",