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.
- package/README.de.md +118 -0
- package/README.es.md +118 -0
- package/README.fr.md +118 -0
- package/README.it.md +118 -0
- package/README.ja.md +2 -1
- package/README.ko.md +2 -1
- package/README.md +3 -2
- package/README.pt-br.md +118 -0
- package/README.ru.md +2 -1
- package/README.zh-cn.md +2 -1
- package/dist/cli/index.js +115 -27
- package/dist/cli/service-auth/index.d.ts +3 -0
- package/dist/cli-node/index.js +115 -27
- package/package.json +1 -1
- package/packages/lsp-daemon/dist/cli.js +10 -0
- package/packages/lsp-daemon/dist/client.js +10 -0
- package/packages/lsp-daemon/dist/index.js +10 -0
- package/packages/lsp-tools-mcp/dist/cli.js +10 -0
- package/packages/lsp-tools-mcp/dist/lsp/manager.js +10 -0
- package/packages/lsp-tools-mcp/dist/mcp.js +10 -0
- package/packages/lsp-tools-mcp/dist/tools.js +10 -0
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +84 -9
- 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 +3 -3
- package/packages/omo-codex/plugin/components/lsp/dist/cli.js +10 -0
- 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/browser/runtime/omowright/manifest.json +1 -1
- package/packages/omo-codex/plugin/skills/frontend/SKILL.md +6 -6
- package/packages/omo-codex/plugin/skills/frontend/references/design/README.md +2 -2
- package/packages/omo-codex/plugin/skills/frontend/references/perfection/README.md +2 -2
- package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/accent-stripes/declarations.ts +22 -13
- package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/accent-stripes/findings.ts +7 -6
- package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/accent-stripes/lint.ts +18 -24
- package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/accent-stripes/markup.ts +14 -7
- package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/accent-stripes/selector.ts +5 -1
- package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/accent-stripes/tailwind.ts +32 -14
- package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/check-accent-stripes.ts +1 -1
- package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/accent-stripes/negative/inline-ok.tsx +1 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/accent-stripes/negative/neutral-and-flat.css +1 -1
- package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/accent-stripes/negative/tailwind-ok.tsx +5 -2
- package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/accent-stripes/negative/uniform-and-rings.css +2 -2
- package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/accent-stripes/positive/accent-outlines.css +4 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/accent-stripes/positive/accent-outlines.tsx +8 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/accent-stripes/{negative → positive}/flat-stripe-side.tsx +3 -1
- package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/accent-stripes/positive/report-callouts.html +8 -0
- package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/accent-stripes/positive/square-surfaces.css +8 -0
- package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +10 -2
- package/packages/omo-codex/plugin/skills/ulw-research/references/deliverable-phase.md +10 -0
- package/packages/omo-codex/plugin/skills/ulw-research/references/report-visualization.md +23 -0
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +86 -11
- package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +1 -1
- package/packages/shared-skills/skills/frontend/SKILL.md +6 -6
- package/packages/shared-skills/skills/frontend/references/design/README.md +2 -2
- package/packages/shared-skills/skills/frontend/references/perfection/README.md +2 -2
- package/packages/shared-skills/skills/frontend/scripts/perfection/accent-stripes/declarations.ts +22 -13
- package/packages/shared-skills/skills/frontend/scripts/perfection/accent-stripes/findings.ts +7 -6
- package/packages/shared-skills/skills/frontend/scripts/perfection/accent-stripes/lint.ts +18 -24
- package/packages/shared-skills/skills/frontend/scripts/perfection/accent-stripes/markup.ts +14 -7
- package/packages/shared-skills/skills/frontend/scripts/perfection/accent-stripes/selector.ts +5 -1
- package/packages/shared-skills/skills/frontend/scripts/perfection/accent-stripes/tailwind.ts +32 -14
- package/packages/shared-skills/skills/frontend/scripts/perfection/check-accent-stripes.test.ts +15 -6
- package/packages/shared-skills/skills/frontend/scripts/perfection/check-accent-stripes.ts +1 -1
- package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/accent-stripes/negative/inline-ok.tsx +1 -0
- package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/accent-stripes/negative/neutral-and-flat.css +1 -1
- package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/accent-stripes/negative/tailwind-ok.tsx +5 -2
- package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/accent-stripes/negative/uniform-and-rings.css +2 -2
- package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/accent-stripes/positive/accent-outlines.css +4 -0
- package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/accent-stripes/positive/accent-outlines.tsx +8 -0
- package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/accent-stripes/{negative → positive}/flat-stripe-side.tsx +3 -1
- package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/accent-stripes/positive/report-callouts.html +8 -0
- package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/accent-stripes/positive/square-surfaces.css +8 -0
- package/packages/shared-skills/skills/ulw-research/SKILL.md +10 -2
- package/packages/shared-skills/skills/ulw-research/references/deliverable-phase.md +10 -0
- package/packages/shared-skills/skills/ulw-research/references/report-visualization.md +23 -0
package/dist/cli-node/index.js
CHANGED
|
@@ -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.
|
|
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.
|
|
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.
|
|
2375
|
-
"oh-my-opencode-darwin-x64": "5.1.
|
|
2376
|
-
"oh-my-opencode-darwin-x64-baseline": "5.1.
|
|
2377
|
-
"oh-my-opencode-linux-arm64": "5.1.
|
|
2378
|
-
"oh-my-opencode-linux-arm64-musl": "5.1.
|
|
2379
|
-
"oh-my-opencode-linux-x64": "5.1.
|
|
2380
|
-
"oh-my-opencode-linux-x64-baseline": "5.1.
|
|
2381
|
-
"oh-my-opencode-linux-x64-musl": "5.1.
|
|
2382
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.1.
|
|
2383
|
-
"oh-my-opencode-windows-arm64": "5.1.
|
|
2384
|
-
"oh-my-opencode-windows-x64": "5.1.
|
|
2385
|
-
"oh-my-opencode-windows-x64-baseline": "5.1.
|
|
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
|
-
|
|
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
|
|
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 =
|
|
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
|
|
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,
|
|
78233
|
+
layer = mergeOmoConfigRecords(layer, toRecord3(config[key]) ?? {});
|
|
78159
78234
|
}
|
|
78160
78235
|
return layer;
|
|
78161
78236
|
}
|
|
78162
78237
|
function resolveOmoConfigView(options) {
|
|
78163
|
-
const profiles =
|
|
78164
|
-
const profile = options.profile === undefined ? undefined :
|
|
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.
|
|
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.
|
|
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,
|