oh-my-opencode 4.19.3 → 4.19.4
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/.agents/command/get-unpublished-changes.md +2 -0
- package/.agents/command/omomomo.md +1 -1
- package/.agents/command/publish.md +7 -0
- package/.agents/skills/get-unpublished-changes/SKILL.md +2 -0
- package/.agents/skills/hyperplan/SKILL.md +3 -3
- package/.agents/skills/omomomo/SKILL.md +1 -1
- package/.agents/skills/publish/SKILL.md +7 -0
- package/.opencode/command/get-unpublished-changes.md +2 -0
- package/.opencode/command/omomomo.md +1 -1
- package/.opencode/command/publish.md +7 -0
- package/.opencode/skills/hyperplan/SKILL.md +3 -3
- package/dist/agents/sisyphus-junior/agent.d.ts +1 -1
- package/dist/cli/doctor/checks/deprecated-reasoning-keys.d.ts +2 -0
- package/dist/cli/index.js +1625 -1368
- package/dist/cli-node/index.js +1625 -1368
- package/dist/config/schema/agent-overrides.d.ts +800 -0
- package/dist/config/schema/categories.d.ts +132 -0
- package/dist/config/schema/fallback-models.d.ts +50 -0
- package/dist/config/schema/oh-my-opencode-config.d.ts +818 -2
- package/dist/config-migration/index.d.ts +1 -0
- package/dist/config-migration/migration-plans.d.ts +1 -0
- package/dist/config-migration/reasoning-unification.d.ts +3 -0
- package/dist/features/team-mode/tools/lifecycle-test-fixture.d.ts +2 -0
- package/dist/hooks/codegraph-bootstrap/command-runner.d.ts +1 -0
- package/dist/hooks/model-fallback/next-fallback.d.ts +1 -0
- package/dist/hooks/runtime-fallback/constants.d.ts +1 -1
- package/dist/index.js +3558 -3241
- package/dist/oh-my-opencode.schema.json +1672 -8
- package/dist/plugin-handlers/prometheus-agent-config-builder.d.ts +1 -0
- package/dist/shared/agent-variant.d.ts +11 -0
- package/dist/shared/session-prompt-params-helpers.d.ts +6 -1
- package/dist/skills/coding-agent-sessions/SKILL.md +4 -3
- package/dist/skills/coding-agent-sessions/references/all-platforms.md +3 -1
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/aside_scanner.py +140 -0
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +3 -0
- package/dist/skills/data-scientist/SKILL.md +243 -0
- package/dist/skills/data-scientist/references/common-scenarios.md +176 -0
- package/dist/skills/data-scientist/references/execution-templates.md +197 -0
- package/dist/skills/data-scientist/references/integration-patterns.md +153 -0
- package/dist/skills/data-scientist/references/performance-benchmarks.md +37 -0
- package/dist/skills/data-scientist/references/uv-setup.md +78 -0
- package/dist/skills/data-scientist/scripts/quick-query.py +111 -0
- package/dist/skills/data-scientist/scripts/setup-uv.ps1 +53 -0
- package/dist/skills/data-scientist/scripts/setup-uv.sh +60 -0
- package/dist/skills/debugging/SKILL.md +1 -1
- package/dist/skills/programming/SKILL.md +1 -2
- package/dist/skills/ulw-plan/SKILL.md +1 -1
- package/dist/skills/ulw-research/SKILL.md +122 -11
- package/dist/tools/delegate-task/builtin-categories.d.ts +1 -0
- package/dist/tools/delegate-task/builtin-category-definition.d.ts +1 -0
- package/dist/tools/delegate-task/constants.d.ts +1 -1
- package/dist/tui.js +974 -1090
- package/package.json +13 -13
- package/packages/lsp-core/src/lsp/client-diagnostics-freshness.integration.test.ts +2 -2
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +21 -3
- 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/codegraph/dist/cli.js +279 -58
- package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +230 -41
- package/packages/omo-codex/plugin/components/codegraph/package.json +1 -1
- package/packages/omo-codex/plugin/components/codegraph/test/hook.test.ts +6 -0
- package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
- package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
- package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
- package/packages/omo-codex/plugin/components/rules/dist/cli.js +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/rules/src/post-compact-budget.ts +1 -1
- package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/start-work-continuation/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/ultrawork/skills/ulw-plan/SKILL.md +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
- 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-codegraph-init-guidance.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/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-checking-codegraph-bootstrap.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-start-work-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-checking-start-work-continuation.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 +13 -13
- package/packages/omo-codex/plugin/package.json +1 -1
- package/packages/omo-codex/plugin/scripts/sync-skills.mjs +6 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/SKILL.md +4 -3
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/all-platforms.md +3 -1
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/aside_scanner.py +140 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +3 -0
- package/packages/omo-codex/plugin/skills/data-scientist/SKILL.md +243 -0
- package/packages/omo-codex/plugin/skills/data-scientist/agents/openai.yaml +2 -0
- package/packages/omo-codex/plugin/skills/data-scientist/references/common-scenarios.md +176 -0
- package/packages/omo-codex/plugin/skills/data-scientist/references/execution-templates.md +197 -0
- package/packages/omo-codex/plugin/skills/data-scientist/references/integration-patterns.md +153 -0
- package/packages/omo-codex/plugin/skills/data-scientist/references/performance-benchmarks.md +37 -0
- package/packages/omo-codex/plugin/skills/data-scientist/references/uv-setup.md +78 -0
- package/packages/omo-codex/plugin/skills/data-scientist/scripts/quick-query.py +111 -0
- package/packages/omo-codex/plugin/skills/data-scientist/scripts/setup-uv.ps1 +53 -0
- package/packages/omo-codex/plugin/skills/data-scientist/scripts/setup-uv.sh +60 -0
- package/packages/omo-codex/plugin/skills/debugging/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/programming/SKILL.md +1 -2
- package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +121 -11
- package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +7 -0
- package/packages/omo-codex/plugin/test/sync-skills.test.mjs +12 -0
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +24 -5
- package/packages/shared-skills/skills/coding-agent-sessions/SKILL.md +4 -3
- package/packages/shared-skills/skills/coding-agent-sessions/references/all-platforms.md +3 -1
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/aside_scanner.py +140 -0
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +3 -0
- package/packages/shared-skills/skills/data-scientist/SKILL.md +243 -0
- package/packages/shared-skills/skills/data-scientist/references/common-scenarios.md +176 -0
- package/packages/shared-skills/skills/data-scientist/references/execution-templates.md +197 -0
- package/packages/shared-skills/skills/data-scientist/references/integration-patterns.md +153 -0
- package/packages/shared-skills/skills/data-scientist/references/performance-benchmarks.md +37 -0
- package/packages/shared-skills/skills/data-scientist/references/uv-setup.md +78 -0
- package/packages/shared-skills/skills/data-scientist/scripts/quick-query.py +111 -0
- package/packages/shared-skills/skills/data-scientist/scripts/setup-uv.ps1 +53 -0
- package/packages/shared-skills/skills/data-scientist/scripts/setup-uv.sh +60 -0
- package/packages/shared-skills/skills/debugging/SKILL.md +1 -1
- package/packages/shared-skills/skills/programming/SKILL.md +1 -2
- package/packages/shared-skills/skills/ulw-plan/SKILL.md +1 -1
- package/packages/shared-skills/skills/ulw-research/SKILL.md +122 -11
|
@@ -3477,6 +3477,9 @@ function handlePipeResult(left, next, ctx) {
|
|
|
3477
3477
|
}
|
|
3478
3478
|
return next._zod.run({ value: left.value, issues: left.issues, fallback: left.fallback }, ctx);
|
|
3479
3479
|
}
|
|
3480
|
+
var $ZodPreprocess = /* @__PURE__ */ $constructor("$ZodPreprocess", (inst, def) => {
|
|
3481
|
+
$ZodPipe.init(inst, def);
|
|
3482
|
+
});
|
|
3480
3483
|
var $ZodReadonly = /* @__PURE__ */ $constructor("$ZodReadonly", (inst, def) => {
|
|
3481
3484
|
$ZodType.init(inst, def);
|
|
3482
3485
|
defineLazy(inst._zod, "propValues", () => def.innerType._zod.propValues);
|
|
@@ -5563,6 +5566,10 @@ function pipe(in_, out) {
|
|
|
5563
5566
|
out
|
|
5564
5567
|
});
|
|
5565
5568
|
}
|
|
5569
|
+
var ZodPreprocess = /* @__PURE__ */ $constructor("ZodPreprocess", (inst, def) => {
|
|
5570
|
+
ZodPipe.init(inst, def);
|
|
5571
|
+
$ZodPreprocess.init(inst, def);
|
|
5572
|
+
});
|
|
5566
5573
|
var ZodReadonly = /* @__PURE__ */ $constructor("ZodReadonly", (inst, def) => {
|
|
5567
5574
|
$ZodReadonly.init(inst, def);
|
|
5568
5575
|
ZodType.init(inst, def);
|
|
@@ -5586,22 +5593,142 @@ function refine(fn, _params = {}) {
|
|
|
5586
5593
|
function superRefine(fn, params) {
|
|
5587
5594
|
return _superRefine(fn, params);
|
|
5588
5595
|
}
|
|
5596
|
+
function preprocess(fn, schema) {
|
|
5597
|
+
return new ZodPreprocess({
|
|
5598
|
+
type: "pipe",
|
|
5599
|
+
in: transform(fn),
|
|
5600
|
+
out: schema
|
|
5601
|
+
});
|
|
5602
|
+
}
|
|
5603
|
+
|
|
5604
|
+
// ../../../../omo-config-core/src/schema/reasoning-vocabulary.ts
|
|
5605
|
+
var REASONING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
|
|
5606
|
+
var REASONING_AUTO = "auto";
|
|
5607
|
+
var REASONING_LEVEL_SET = new Set(REASONING_LEVELS);
|
|
5608
|
+
var REASONING_LEVEL_OR_AUTO_SET = new Set([...REASONING_LEVELS, REASONING_AUTO]);
|
|
5609
|
+
function isReasoningLevel(value) {
|
|
5610
|
+
return REASONING_LEVEL_SET.has(value);
|
|
5611
|
+
}
|
|
5612
|
+
function normalizeReasoning(input) {
|
|
5613
|
+
const normalized = input.trim().toLowerCase();
|
|
5614
|
+
if (!normalized)
|
|
5615
|
+
return {};
|
|
5616
|
+
if (normalized === "none")
|
|
5617
|
+
return { level: "off" };
|
|
5618
|
+
if (normalized === REASONING_AUTO)
|
|
5619
|
+
return { level: REASONING_AUTO };
|
|
5620
|
+
if (isReasoningLevel(normalized))
|
|
5621
|
+
return { level: normalized };
|
|
5622
|
+
return { passthrough: normalized };
|
|
5623
|
+
}
|
|
5624
|
+
function splitReasoningSuffix(model, options) {
|
|
5625
|
+
if (typeof model !== "string")
|
|
5626
|
+
return { base: "" };
|
|
5627
|
+
const trimmed = model.trim();
|
|
5628
|
+
if (!trimmed)
|
|
5629
|
+
return { base: "" };
|
|
5630
|
+
const separatorIndex = trimmed.lastIndexOf(":");
|
|
5631
|
+
if (separatorIndex === -1)
|
|
5632
|
+
return { base: trimmed };
|
|
5633
|
+
const base = trimmed.slice(0, separatorIndex).trim();
|
|
5634
|
+
const token = trimmed.slice(separatorIndex + 1).trim().toLowerCase();
|
|
5635
|
+
if (!base || !REASONING_LEVEL_OR_AUTO_SET.has(token))
|
|
5636
|
+
return { base: trimmed };
|
|
5637
|
+
if (token === "max" && !(options?.allowMaxSuffix ?? base.includes("/")))
|
|
5638
|
+
return { base: trimmed };
|
|
5639
|
+
return { base, level: token };
|
|
5640
|
+
}
|
|
5641
|
+
|
|
5642
|
+
// ../../../../omo-config-core/src/schema/model-ref.ts
|
|
5643
|
+
var REASONING_LEVELS_OR_AUTO = [...REASONING_LEVELS, "auto"];
|
|
5644
|
+
var OmoReasoningSchema = union([
|
|
5645
|
+
_enum(REASONING_LEVELS_OR_AUTO),
|
|
5646
|
+
string2()
|
|
5647
|
+
]);
|
|
5648
|
+
var OmoModelRefObjectSchema = object({
|
|
5649
|
+
model: string2(),
|
|
5650
|
+
reasoning: OmoReasoningSchema.optional(),
|
|
5651
|
+
temperature: number2().min(0).max(2).optional(),
|
|
5652
|
+
top_p: number2().min(0).max(1).optional(),
|
|
5653
|
+
max_tokens: number2().int().positive().optional(),
|
|
5654
|
+
provider_options: record(string2(), unknown()).optional()
|
|
5655
|
+
}).strict();
|
|
5656
|
+
var OmoModelRefSchema = union([string2(), OmoModelRefObjectSchema]);
|
|
5589
5657
|
|
|
5590
5658
|
// ../../../../omo-config-core/src/schema/fallback-models.ts
|
|
5591
5659
|
var OmoThinkingConfigSchema = object({
|
|
5592
5660
|
type: _enum(["enabled", "disabled"]),
|
|
5593
5661
|
budgetTokens: number2().optional()
|
|
5594
5662
|
}).strict();
|
|
5595
|
-
var OmoReasoningEffortSchema =
|
|
5596
|
-
|
|
5663
|
+
var OmoReasoningEffortSchema = OmoReasoningSchema;
|
|
5664
|
+
function isRecord(value) {
|
|
5665
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
5666
|
+
}
|
|
5667
|
+
function canonicalReasoning(value) {
|
|
5668
|
+
if (typeof value !== "string")
|
|
5669
|
+
return;
|
|
5670
|
+
const normalized = normalizeReasoning(value);
|
|
5671
|
+
return normalized.level ?? normalized.passthrough;
|
|
5672
|
+
}
|
|
5673
|
+
function canonicalModelString(model) {
|
|
5674
|
+
const colon = splitReasoningSuffix(model, { allowMaxSuffix: true });
|
|
5675
|
+
if (colon.level !== undefined)
|
|
5676
|
+
return `${colon.base}:${colon.level}`;
|
|
5677
|
+
const trimmed = model.trim();
|
|
5678
|
+
const parenthesized = trimmed.match(/^(.*)\(([^()]+)\)\s*$/);
|
|
5679
|
+
const spaced = parenthesized === null ? trimmed.match(/^(.*\S)\s+([a-z][a-z0-9_-]*)$/i) : null;
|
|
5680
|
+
const base = (parenthesized?.[1] ?? spaced?.[1])?.trim();
|
|
5681
|
+
const token = (parenthesized?.[2] ?? spaced?.[2])?.trim();
|
|
5682
|
+
if (base === undefined || token === undefined)
|
|
5683
|
+
return trimmed;
|
|
5684
|
+
const normalized = normalizeReasoning(token);
|
|
5685
|
+
return normalized.level === undefined ? trimmed : `${base}:${normalized.level}`;
|
|
5686
|
+
}
|
|
5687
|
+
function normalizeLegacyModelFields(entry) {
|
|
5688
|
+
const normalized = { ...entry };
|
|
5689
|
+
delete normalized["variant"];
|
|
5690
|
+
delete normalized["reasoningEffort"];
|
|
5691
|
+
delete normalized["thinking"];
|
|
5692
|
+
delete normalized["textVerbosity"];
|
|
5693
|
+
delete normalized["maxTokens"];
|
|
5694
|
+
delete normalized["providerOptions"];
|
|
5695
|
+
if (typeof entry["model"] === "string")
|
|
5696
|
+
normalized["model"] = canonicalModelString(entry["model"]);
|
|
5697
|
+
const explicitReasoning = canonicalReasoning(entry["reasoning"]);
|
|
5698
|
+
const variant = canonicalReasoning(entry["variant"]);
|
|
5699
|
+
const reasoningEffort = canonicalReasoning(entry["reasoningEffort"]);
|
|
5700
|
+
const thinking = isRecord(entry["thinking"]) ? entry["thinking"] : undefined;
|
|
5701
|
+
const reasoning = explicitReasoning ?? reasoningEffort ?? variant ?? (thinking?.["type"] === "disabled" ? "off" : undefined);
|
|
5702
|
+
if (reasoning !== undefined)
|
|
5703
|
+
normalized["reasoning"] = reasoning;
|
|
5704
|
+
const providerOptions = isRecord(entry["provider_options"]) ? { ...entry["provider_options"] } : isRecord(entry["providerOptions"]) ? { ...entry["providerOptions"] } : {};
|
|
5705
|
+
if (thinking?.["type"] === "enabled")
|
|
5706
|
+
providerOptions["thinking"] = { ...thinking };
|
|
5707
|
+
if (entry["textVerbosity"] !== undefined)
|
|
5708
|
+
providerOptions["textVerbosity"] = entry["textVerbosity"];
|
|
5709
|
+
if (Object.keys(providerOptions).length > 0)
|
|
5710
|
+
normalized["provider_options"] = providerOptions;
|
|
5711
|
+
if (entry["max_tokens"] !== undefined)
|
|
5712
|
+
normalized["max_tokens"] = entry["max_tokens"];
|
|
5713
|
+
else if (entry["maxTokens"] !== undefined)
|
|
5714
|
+
normalized["max_tokens"] = entry["maxTokens"];
|
|
5715
|
+
return normalized;
|
|
5716
|
+
}
|
|
5717
|
+
var OmoLegacyFallbackModelObjectInputSchema = object({
|
|
5597
5718
|
model: string2(),
|
|
5598
|
-
|
|
5599
|
-
reasoningEffort: OmoReasoningEffortSchema.optional(),
|
|
5719
|
+
reasoning: OmoReasoningSchema.optional(),
|
|
5600
5720
|
temperature: number2().min(0).max(2).optional(),
|
|
5601
5721
|
top_p: number2().min(0).max(1).optional(),
|
|
5722
|
+
max_tokens: number2().int().positive().optional(),
|
|
5723
|
+
provider_options: record(string2(), unknown()).optional(),
|
|
5724
|
+
variant: string2().optional(),
|
|
5725
|
+
reasoningEffort: OmoReasoningEffortSchema.optional(),
|
|
5726
|
+
thinking: OmoThinkingConfigSchema.optional(),
|
|
5727
|
+
textVerbosity: _enum(["low", "medium", "high"]).optional(),
|
|
5602
5728
|
maxTokens: number2().optional(),
|
|
5603
|
-
|
|
5729
|
+
providerOptions: record(string2(), unknown()).optional()
|
|
5604
5730
|
}).strict();
|
|
5731
|
+
var OmoFallbackModelObjectSchema = preprocess((value) => isRecord(value) ? normalizeLegacyModelFields(value) : value, OmoLegacyFallbackModelObjectInputSchema);
|
|
5605
5732
|
var OmoFallbackModelsSchema = union([
|
|
5606
5733
|
string2(),
|
|
5607
5734
|
array(string2()),
|
|
@@ -5610,19 +5737,16 @@ var OmoFallbackModelsSchema = union([
|
|
|
5610
5737
|
]);
|
|
5611
5738
|
|
|
5612
5739
|
// ../../../../omo-config-core/src/schema/agent.ts
|
|
5613
|
-
|
|
5614
|
-
|
|
5615
|
-
|
|
5616
|
-
|
|
5617
|
-
|
|
5618
|
-
reasoningEffort: OmoReasoningEffortSchema.optional()
|
|
5619
|
-
}).strict()
|
|
5620
|
-
]);
|
|
5621
|
-
var OmoAgentDefSchema = object({
|
|
5740
|
+
function isRecord2(value) {
|
|
5741
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
5742
|
+
}
|
|
5743
|
+
var OmoAgentModelEntrySchema = union([string2(), OmoFallbackModelObjectSchema]);
|
|
5744
|
+
var OmoAgentDefInputSchema = object({
|
|
5622
5745
|
description: string2().optional(),
|
|
5623
5746
|
prompt: string2().optional(),
|
|
5624
5747
|
model: string2().optional(),
|
|
5625
5748
|
models: array(OmoAgentModelEntrySchema).optional(),
|
|
5749
|
+
reasoning: OmoReasoningSchema.optional(),
|
|
5626
5750
|
variant: string2().optional(),
|
|
5627
5751
|
reasoningEffort: OmoReasoningEffortSchema.optional(),
|
|
5628
5752
|
tools: record(string2(), boolean2()).optional(),
|
|
@@ -5635,16 +5759,24 @@ var OmoAgentDefSchema = object({
|
|
|
5635
5759
|
temperature: number2().min(0).max(2).optional(),
|
|
5636
5760
|
disable: boolean2().optional()
|
|
5637
5761
|
}).strict();
|
|
5762
|
+
var OmoAgentDefSchema = preprocess((value) => isRecord2(value) ? normalizeLegacyModelFields(value) : value, OmoAgentDefInputSchema);
|
|
5638
5763
|
var OmoAgentsConfigSchema = record(string2(), OmoAgentDefSchema);
|
|
5639
5764
|
|
|
5640
5765
|
// ../../../../omo-config-core/src/schema/category.ts
|
|
5641
|
-
|
|
5766
|
+
function isRecord3(value) {
|
|
5767
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
5768
|
+
}
|
|
5769
|
+
var OmoCategoryConfigObjectSchema = object({
|
|
5642
5770
|
description: string2().optional(),
|
|
5643
5771
|
model: string2().optional(),
|
|
5644
|
-
|
|
5645
|
-
|
|
5772
|
+
models: array(union([string2(), OmoFallbackModelObjectSchema])).optional(),
|
|
5773
|
+
reasoning: OmoReasoningSchema.optional(),
|
|
5646
5774
|
temperature: number2().min(0).max(2).optional(),
|
|
5647
5775
|
top_p: number2().min(0).max(1).optional(),
|
|
5776
|
+
max_tokens: number2().int().positive().optional(),
|
|
5777
|
+
provider_options: record(string2(), unknown()).optional(),
|
|
5778
|
+
fallback_models: OmoFallbackModelsSchema.optional(),
|
|
5779
|
+
variant: string2().optional(),
|
|
5648
5780
|
maxTokens: number2().optional(),
|
|
5649
5781
|
thinking: OmoThinkingConfigSchema.optional(),
|
|
5650
5782
|
reasoningEffort: OmoReasoningEffortSchema.optional(),
|
|
@@ -5653,8 +5785,10 @@ var OmoCategoryConfigSchema = object({
|
|
|
5653
5785
|
prompt_append: string2().optional(),
|
|
5654
5786
|
max_prompt_tokens: number2().int().positive().optional(),
|
|
5655
5787
|
is_unstable_agent: boolean2().optional(),
|
|
5656
|
-
disable: boolean2().optional()
|
|
5788
|
+
disable: boolean2().optional(),
|
|
5789
|
+
warn_unavailable: boolean2().optional()
|
|
5657
5790
|
}).strict();
|
|
5791
|
+
var OmoCategoryConfigSchema = preprocess((value) => isRecord3(value) ? normalizeLegacyModelFields(value) : value, OmoCategoryConfigObjectSchema);
|
|
5658
5792
|
var OmoCategoriesConfigSchema = record(string2(), OmoCategoryConfigSchema);
|
|
5659
5793
|
|
|
5660
5794
|
// ../../../../omo-config-core/src/schema/harness.ts
|
|
@@ -5682,13 +5816,19 @@ var OmoCodegraphSettingsSchema = OmoCodegraphSettingsLayerSchema.extend({
|
|
|
5682
5816
|
}).strict();
|
|
5683
5817
|
|
|
5684
5818
|
// ../../../../omo-config-core/src/schema/model-catalog.ts
|
|
5685
|
-
|
|
5819
|
+
function isRecord4(value) {
|
|
5820
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
5821
|
+
}
|
|
5822
|
+
var OmoModelCatalogEntryInputSchema = object({
|
|
5686
5823
|
model: string2(),
|
|
5824
|
+
reasoning: OmoReasoningSchema.optional(),
|
|
5687
5825
|
variant: string2().optional(),
|
|
5688
5826
|
reasoningEffort: OmoReasoningEffortSchema.optional()
|
|
5689
5827
|
}).strict();
|
|
5828
|
+
var OmoModelCatalogEntrySchema = preprocess((value) => isRecord4(value) ? normalizeLegacyModelFields(value) : value, OmoModelCatalogEntryInputSchema);
|
|
5690
5829
|
var OmoModelCatalogSchema = record(string2(), OmoModelCatalogEntrySchema);
|
|
5691
|
-
var
|
|
5830
|
+
var OmoModelCatalogEntryLayerInputSchema = OmoModelCatalogEntryInputSchema.partial();
|
|
5831
|
+
var OmoModelCatalogEntryLayerSchema = preprocess((value) => isRecord4(value) ? normalizeLegacyModelFields(value) : value, OmoModelCatalogEntryLayerInputSchema);
|
|
5692
5832
|
var OmoModelCatalogLayerSchema = record(string2(), OmoModelCatalogEntryLayerSchema);
|
|
5693
5833
|
|
|
5694
5834
|
// ../../../../omo-config-core/src/schema/task.ts
|
|
@@ -5702,6 +5842,9 @@ var OmoTaskTeamSettingsSchema = object({
|
|
|
5702
5842
|
max_parallel_members: number2().int().min(1).max(8).default(4),
|
|
5703
5843
|
max_wall_clock_minutes: number2().int().positive().default(120)
|
|
5704
5844
|
}).strict();
|
|
5845
|
+
var OmoTaskWarningsSchema = object({
|
|
5846
|
+
unavailable_categories: boolean2().default(true)
|
|
5847
|
+
}).strict();
|
|
5705
5848
|
var OmoTaskSettingsSchema = object({
|
|
5706
5849
|
default_execution_mode: _enum(["in-process", "process"]).default("in-process"),
|
|
5707
5850
|
default_concurrency: number2().int().positive().default(5),
|
|
@@ -5712,6 +5855,7 @@ var OmoTaskSettingsSchema = object({
|
|
|
5712
5855
|
ttl_ms: number2().int().positive().default(86400000),
|
|
5713
5856
|
state_dir: string2().optional(),
|
|
5714
5857
|
reattach_on_reconcile: boolean2().optional(),
|
|
5858
|
+
warnings: OmoTaskWarningsSchema.default({ unavailable_categories: true }),
|
|
5715
5859
|
wait: OmoTaskWaitSchema.default({ min_ms: 5000, default_ms: 60000, max_ms: 600000 }),
|
|
5716
5860
|
team: OmoTaskTeamSettingsSchema.default({
|
|
5717
5861
|
max_members: 8,
|
|
@@ -5729,6 +5873,9 @@ var OmoTaskTeamSettingsLayerSchema = object({
|
|
|
5729
5873
|
max_parallel_members: number2().int().min(1).max(8).optional(),
|
|
5730
5874
|
max_wall_clock_minutes: number2().int().positive().optional()
|
|
5731
5875
|
}).strict();
|
|
5876
|
+
var OmoTaskWarningsLayerSchema = object({
|
|
5877
|
+
unavailable_categories: boolean2().optional()
|
|
5878
|
+
}).strict();
|
|
5732
5879
|
var OmoTaskSettingsLayerSchema = object({
|
|
5733
5880
|
default_execution_mode: _enum(["in-process", "process"]).optional(),
|
|
5734
5881
|
default_concurrency: number2().int().positive().optional(),
|
|
@@ -5739,6 +5886,7 @@ var OmoTaskSettingsLayerSchema = object({
|
|
|
5739
5886
|
ttl_ms: number2().int().positive().optional(),
|
|
5740
5887
|
state_dir: string2().optional(),
|
|
5741
5888
|
reattach_on_reconcile: boolean2().optional(),
|
|
5889
|
+
warnings: OmoTaskWarningsLayerSchema.optional(),
|
|
5742
5890
|
wait: OmoTaskWaitLayerSchema.optional(),
|
|
5743
5891
|
team: OmoTaskTeamSettingsLayerSchema.optional()
|
|
5744
5892
|
}).strict();
|
|
@@ -7239,7 +7387,8 @@ function mergeOmoConfigRecords(base, override, parentKey) {
|
|
|
7239
7387
|
}
|
|
7240
7388
|
|
|
7241
7389
|
// ../../../../omo-config-core/src/loader/paths.ts
|
|
7242
|
-
import {
|
|
7390
|
+
import { userInfo } from "node:os";
|
|
7391
|
+
import { dirname as dirname2, join as join7, posix, resolve as resolve3 } from "node:path";
|
|
7243
7392
|
|
|
7244
7393
|
// ../../../../omo-config-core/src/internal/posix-path.ts
|
|
7245
7394
|
function toPosixPath(path) {
|
|
@@ -7257,10 +7406,7 @@ var DEFAULT_READ_FILE_SYSTEM = {
|
|
|
7257
7406
|
|
|
7258
7407
|
// ../../../../omo-config-core/src/loader/paths.ts
|
|
7259
7408
|
var MAX_PROJECT_CONFIG_DIRECTORY_DEPTH = 256;
|
|
7260
|
-
|
|
7261
|
-
const pathToChild = relative(parent, child);
|
|
7262
|
-
return pathToChild === "" || !pathToChild.startsWith("..") && !isAbsolute2(pathToChild);
|
|
7263
|
-
}
|
|
7409
|
+
var ACCOUNT_HOME_DIR = userInfo().homedir;
|
|
7264
7410
|
function resolveHomeDir(env = process.env) {
|
|
7265
7411
|
const homeDir = env.HOME ?? env.USERPROFILE ?? process.cwd();
|
|
7266
7412
|
return homeDir.startsWith("/") ? posix.resolve(homeDir) : toPosixPath(resolve3(homeDir));
|
|
@@ -7312,15 +7458,14 @@ function realpathOrSelf(path, fileSystem) {
|
|
|
7312
7458
|
return path;
|
|
7313
7459
|
}
|
|
7314
7460
|
}
|
|
7315
|
-
function findProjectConfigPathsFarthestFirst(cwd, homeDir, fileSystem) {
|
|
7461
|
+
function findProjectConfigPathsFarthestFirst(cwd, homeDir, fileSystem, accountHomeDir = homeDir) {
|
|
7316
7462
|
const startDir = resolve3(cwd);
|
|
7317
|
-
const
|
|
7318
|
-
const
|
|
7319
|
-
const stopDir = containsPath(realHomeDir, realpathOrSelf(startDir, fileSystem)) ? realHomeDir : null;
|
|
7463
|
+
const boundaryDirs = [...new Set([resolve3(homeDir), resolve3(accountHomeDir)])];
|
|
7464
|
+
const realBoundaryDirs = new Set(boundaryDirs.map((path) => realpathOrSelf(path, fileSystem)));
|
|
7320
7465
|
const nearestFirst = [];
|
|
7321
7466
|
let currentDir = startDir;
|
|
7322
7467
|
for (let depth = 0;depth < MAX_PROJECT_CONFIG_DIRECTORY_DEPTH; depth += 1) {
|
|
7323
|
-
const isHomeDir = currentDir
|
|
7468
|
+
const isHomeDir = boundaryDirs.includes(currentDir) || realBoundaryDirs.has(realpathOrSelf(currentDir, fileSystem));
|
|
7324
7469
|
const configPath = isHomeDir ? null : detectOmoJsonPath(currentDir, fileSystem);
|
|
7325
7470
|
if (configPath !== null)
|
|
7326
7471
|
nearestFirst.push(configPath);
|
|
@@ -7337,7 +7482,7 @@ function resolveOmoConfigPaths(options) {
|
|
|
7337
7482
|
const fileSystem = options.fileSystem ?? DEFAULT_READ_FILE_SYSTEM;
|
|
7338
7483
|
const env = options.env ?? process.env;
|
|
7339
7484
|
const userPath = detectUserOmoJsonPath(env, fileSystem);
|
|
7340
|
-
const projectPaths = findProjectConfigPathsFarthestFirst(options.cwd, resolveHomeDir(env), fileSystem);
|
|
7485
|
+
const projectPaths = findProjectConfigPathsFarthestFirst(options.cwd, resolveHomeDir(env), fileSystem, ACCOUNT_HOME_DIR);
|
|
7341
7486
|
return [
|
|
7342
7487
|
{ path: userPath, scope: "user" },
|
|
7343
7488
|
...projectPaths.map((path) => ({ path, scope: "project" }))
|
|
@@ -7972,6 +8117,23 @@ function prepareTargetWrite(input) {
|
|
|
7972
8117
|
const edits = [...collectMigrationEdits(merged.additions), { path: ["_migrations"], value: marker }];
|
|
7973
8118
|
return { diagnostics: merged.diagnostics, document, edits };
|
|
7974
8119
|
}
|
|
8120
|
+
function prepareTargetReplacement(input) {
|
|
8121
|
+
const marker = markerValue(input.target, input.migrationId, input.targetPath);
|
|
8122
|
+
const document = { ...input.document, _migrations: marker };
|
|
8123
|
+
validateTarget(input.targetPath, document);
|
|
8124
|
+
const edits = [];
|
|
8125
|
+
for (const key of Object.keys(input.target)) {
|
|
8126
|
+
if (key !== "_migrations" && !Object.prototype.hasOwnProperty.call(input.document, key)) {
|
|
8127
|
+
edits.push({ path: [key], value: undefined });
|
|
8128
|
+
}
|
|
8129
|
+
}
|
|
8130
|
+
for (const [key, value] of Object.entries(input.document)) {
|
|
8131
|
+
if (key !== "_migrations")
|
|
8132
|
+
edits.push({ path: [key], value });
|
|
8133
|
+
}
|
|
8134
|
+
edits.push({ path: ["_migrations"], value: marker });
|
|
8135
|
+
return { diagnostics: [], document, edits };
|
|
8136
|
+
}
|
|
7975
8137
|
function writePreparedTarget(input) {
|
|
7976
8138
|
input.writeTarget({
|
|
7977
8139
|
edits: input.prepared.edits,
|
|
@@ -8004,9 +8166,17 @@ function parseJournal(value) {
|
|
|
8004
8166
|
if (!isPlainObject3(value["targetWrite"]) || !isPlainObject3(value["targetWrite"]["additions"])) {
|
|
8005
8167
|
throw new Error("Migration journal target write is invalid");
|
|
8006
8168
|
}
|
|
8169
|
+
const targetWriteMode = value["targetWrite"]["mode"];
|
|
8170
|
+
if (targetWriteMode !== undefined && targetWriteMode !== "replace-target") {
|
|
8171
|
+
throw new Error("Migration journal target write mode is invalid");
|
|
8172
|
+
}
|
|
8007
8173
|
if (typeof value["targetWritten"] !== "boolean" || !Array.isArray(value["completedMoves"])) {
|
|
8008
8174
|
throw new Error("Migration journal completion state is invalid");
|
|
8009
8175
|
}
|
|
8176
|
+
const diagnostics = value["diagnostics"];
|
|
8177
|
+
if (diagnostics !== undefined && (!Array.isArray(diagnostics) || !diagnostics.every((entry) => typeof entry === "string"))) {
|
|
8178
|
+
throw new Error("Migration journal diagnostics are invalid");
|
|
8179
|
+
}
|
|
8010
8180
|
if (!value["completedMoves"].every((path) => typeof path === "string")) {
|
|
8011
8181
|
throw new Error("Migration journal completed moves are invalid");
|
|
8012
8182
|
}
|
|
@@ -8022,9 +8192,13 @@ function parseJournal(value) {
|
|
|
8022
8192
|
return {
|
|
8023
8193
|
backupMoves,
|
|
8024
8194
|
completedMoves: [...value["completedMoves"]],
|
|
8195
|
+
diagnostics: diagnostics === undefined ? [] : [...diagnostics],
|
|
8025
8196
|
migrationId: value["migrationId"],
|
|
8026
8197
|
targetPath: value["targetPath"],
|
|
8027
|
-
targetWrite: {
|
|
8198
|
+
targetWrite: {
|
|
8199
|
+
additions: { ...value["targetWrite"]["additions"] },
|
|
8200
|
+
...targetWriteMode === undefined ? {} : { mode: targetWriteMode }
|
|
8201
|
+
},
|
|
8028
8202
|
targetWritten: value["targetWritten"],
|
|
8029
8203
|
version: 1
|
|
8030
8204
|
};
|
|
@@ -8215,7 +8389,12 @@ function resumeMigrationJournal(input) {
|
|
|
8215
8389
|
input.renewLock();
|
|
8216
8390
|
const target = targetDocument(journal.targetPath, input.fileSystem);
|
|
8217
8391
|
if (!hasMigrationMarker(target, journal.migrationId)) {
|
|
8218
|
-
const prepared =
|
|
8392
|
+
const prepared = journal.targetWrite.mode === "replace-target" ? prepareTargetReplacement({
|
|
8393
|
+
document: journal.targetWrite.additions,
|
|
8394
|
+
migrationId: journal.migrationId,
|
|
8395
|
+
target,
|
|
8396
|
+
targetPath: journal.targetPath
|
|
8397
|
+
}) : prepareTargetWrite({
|
|
8219
8398
|
additions: journal.targetWrite.additions,
|
|
8220
8399
|
migrationId: journal.migrationId,
|
|
8221
8400
|
target,
|
|
@@ -8319,11 +8498,17 @@ function executePlan(input) {
|
|
|
8319
8498
|
assertSafeSourcePaths(plan.sources, protectedPaths);
|
|
8320
8499
|
const existingSources = plan.sources.filter((source) => fileSystem.existsSync(source.path));
|
|
8321
8500
|
const target = targetDocument(plan.targetPath, fileSystem);
|
|
8322
|
-
|
|
8501
|
+
const replaceTarget = plan.mode === "replace-target";
|
|
8502
|
+
if (!shouldRunMigration({
|
|
8503
|
+
legacySourcesExist: replaceTarget ? fileSystem.existsSync(plan.targetPath) : existingSources.length > 0,
|
|
8504
|
+
migrationId: plan.id,
|
|
8505
|
+
target
|
|
8506
|
+
})) {
|
|
8323
8507
|
return { diagnostics: [], journalResumed, status: "skipped" };
|
|
8324
8508
|
}
|
|
8325
|
-
const
|
|
8326
|
-
const
|
|
8509
|
+
const loaded = replaceTarget ? [{ path: plan.targetPath, value: target }] : loadSources(existingSources, fileSystem);
|
|
8510
|
+
const transformed = transformResult(plan.transform(loaded));
|
|
8511
|
+
const prepared = replaceTarget ? prepareTargetReplacement({ document: transformed.document, migrationId: plan.id, target, targetPath: plan.targetPath }) : prepareTargetWrite({ additions: transformed.document, migrationId: plan.id, target, targetPath: plan.targetPath });
|
|
8327
8512
|
const diagnostics = [...transformed.diagnostics, ...prepared.diagnostics];
|
|
8328
8513
|
const moves = backupMoves(existingSources, plan.id, fileSystem, protectedPaths);
|
|
8329
8514
|
const preview = { backupMoves: moves, targetPath: plan.targetPath, transform: transformed.document };
|
|
@@ -8333,9 +8518,13 @@ function executePlan(input) {
|
|
|
8333
8518
|
const journal = {
|
|
8334
8519
|
backupMoves: moves,
|
|
8335
8520
|
completedMoves: [],
|
|
8521
|
+
diagnostics,
|
|
8336
8522
|
migrationId: plan.id,
|
|
8337
8523
|
targetPath: plan.targetPath,
|
|
8338
|
-
targetWrite: {
|
|
8524
|
+
targetWrite: {
|
|
8525
|
+
additions: transformed.document,
|
|
8526
|
+
...replaceTarget ? { mode: "replace-target" } : {}
|
|
8527
|
+
},
|
|
8339
8528
|
targetWritten: false,
|
|
8340
8529
|
version: 1
|
|
8341
8530
|
};
|
|
@@ -8399,17 +8588,17 @@ import { existsSync as existsSync6 } from "node:fs";
|
|
|
8399
8588
|
import { posix as posix4, win32 } from "node:path";
|
|
8400
8589
|
var MIGRATION_ID = "2026-07-codex-config-jsonc";
|
|
8401
8590
|
var OMO_SCHEMA_URL = "https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/dev/assets/omo.schema.json";
|
|
8402
|
-
function
|
|
8591
|
+
function isRecord5(value) {
|
|
8403
8592
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
8404
8593
|
}
|
|
8405
8594
|
function recordAt(value, key) {
|
|
8406
8595
|
const candidate = value[key];
|
|
8407
|
-
return
|
|
8596
|
+
return isRecord5(candidate) ? candidate : undefined;
|
|
8408
8597
|
}
|
|
8409
8598
|
function migrationHistory(sources, configPath) {
|
|
8410
8599
|
const history = [];
|
|
8411
8600
|
for (const source of sources) {
|
|
8412
|
-
if (!
|
|
8601
|
+
if (!isRecord5(source.value))
|
|
8413
8602
|
continue;
|
|
8414
8603
|
for (const key of ["_migrations", "appliedMigrations"]) {
|
|
8415
8604
|
const values = source.value[key];
|
|
@@ -8425,7 +8614,7 @@ function migrationHistory(sources, configPath) {
|
|
|
8425
8614
|
}
|
|
8426
8615
|
function transformConfigJsonc(configPath, sources) {
|
|
8427
8616
|
const config2 = sources.find((source) => source.path === configPath);
|
|
8428
|
-
const legacy = config2 === undefined || !
|
|
8617
|
+
const legacy = config2 === undefined || !isRecord5(config2.value) ? {} : config2.value;
|
|
8429
8618
|
const omo = recordAt(legacy, "[omo]");
|
|
8430
8619
|
const senpi = recordAt(legacy, "[senpi]");
|
|
8431
8620
|
const history = migrationHistory(sources, configPath);
|
|
@@ -115,6 +115,7 @@ describe("CodeGraph SessionStart hook", () => {
|
|
|
115
115
|
env: {},
|
|
116
116
|
stdin: Readable.from(["{}"]),
|
|
117
117
|
stdout: { write: (chunk) => stdout.push(chunk) },
|
|
118
|
+
sweepZombies: () => undefined,
|
|
118
119
|
spawnWorker: (invocation) => spawned.push(invocation),
|
|
119
120
|
});
|
|
120
121
|
|
|
@@ -143,6 +144,7 @@ describe("CodeGraph SessionStart hook", () => {
|
|
|
143
144
|
env: { HOME: homeDir },
|
|
144
145
|
stdin: Readable.from(["{}"]),
|
|
145
146
|
stdout: { write: (chunk) => stdout.push(chunk) },
|
|
147
|
+
sweepZombies: () => undefined,
|
|
146
148
|
spawnWorker: (invocation) => spawned.push(invocation),
|
|
147
149
|
});
|
|
148
150
|
|
|
@@ -174,6 +176,7 @@ describe("CodeGraph SessionStart hook", () => {
|
|
|
174
176
|
env: { HOME: homeDir },
|
|
175
177
|
stdin: Readable.from(["{}"]),
|
|
176
178
|
stdout: { write: (chunk) => stdout.push(chunk) },
|
|
179
|
+
sweepZombies: () => undefined,
|
|
177
180
|
spawnWorker: (invocation) => spawned.push(invocation),
|
|
178
181
|
});
|
|
179
182
|
|
|
@@ -201,6 +204,7 @@ describe("CodeGraph SessionStart hook", () => {
|
|
|
201
204
|
env: { CODEX_CODEGRAPH_ENABLED: "0", HOME: homeDir },
|
|
202
205
|
stdin: Readable.from(["{}"]),
|
|
203
206
|
stdout: { write: (chunk) => stdout.push(chunk) },
|
|
207
|
+
sweepZombies: () => undefined,
|
|
204
208
|
spawnWorker: (invocation) => spawned.push(invocation),
|
|
205
209
|
});
|
|
206
210
|
|
|
@@ -278,6 +282,7 @@ describe("CodeGraph SessionStart hook", () => {
|
|
|
278
282
|
env: { HOME: homeDir, KEEP: "1" },
|
|
279
283
|
stdin: Readable.from(["{}"]),
|
|
280
284
|
stdout: { write: (chunk) => stdout.push(chunk) },
|
|
285
|
+
sweepZombies: () => undefined,
|
|
281
286
|
spawnWorker: (invocation) => spawned.push(invocation),
|
|
282
287
|
});
|
|
283
288
|
|
|
@@ -302,6 +307,7 @@ describe("CodeGraph SessionStart hook", () => {
|
|
|
302
307
|
env: {},
|
|
303
308
|
stdin: Readable.from(["{not-json"]),
|
|
304
309
|
stdout: { write: (chunk) => stdout.push(chunk) },
|
|
310
|
+
sweepZombies: () => undefined,
|
|
305
311
|
spawnWorker: (invocation) => spawned.push(invocation),
|
|
306
312
|
});
|
|
307
313
|
|
|
@@ -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 4.19.
|
|
11
|
+
"statusMessage": "(OmO 4.19.4) 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 4.19.
|
|
23
|
+
"statusMessage": "(OmO 4.19.4) Resetting Git Bash MCP Reminder"
|
|
24
24
|
}
|
|
25
25
|
]
|
|
26
26
|
}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "command",
|
|
9
9
|
"command": "node \"${PLUGIN_ROOT}/components/lazycodex-executor-verify/dist/cli.js\" hook subagent-stop",
|
|
10
10
|
"timeout": 10,
|
|
11
|
-
"statusMessage": "(OmO 4.19.
|
|
11
|
+
"statusMessage": "(OmO 4.19.4) Verifying LazyCodex Executor Evidence"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"version": "4.19.
|
|
4
|
-
"inputDigest": "sha256:
|
|
3
|
+
"version": "4.19.4",
|
|
4
|
+
"inputDigest": "sha256:a327f51e89b7da87ac4e114b07551b3345e45ad919c6ca2ebed067aaa954b004",
|
|
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 4.19.
|
|
11
|
+
"statusMessage": "(OmO 4.19.4) 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 4.19.
|
|
24
|
+
"statusMessage": "(OmO 4.19.4) Resetting LSP Diagnostics Cache"
|
|
25
25
|
}
|
|
26
26
|
]
|
|
27
27
|
}
|
|
@@ -3883,7 +3883,7 @@ var MODEL_CONTEXT_BUDGETS = [
|
|
|
3883
3883
|
effectivePercent: DEFAULT_EFFECTIVE_CONTEXT_WINDOW_PERCENT
|
|
3884
3884
|
},
|
|
3885
3885
|
{ slug: "gpt-5.5", contextWindowTokens: 272000, effectivePercent: DEFAULT_EFFECTIVE_CONTEXT_WINDOW_PERCENT },
|
|
3886
|
-
{ slug: "gpt-5.
|
|
3886
|
+
{ slug: "gpt-5.6-luna-fast", contextWindowTokens: 272000, effectivePercent: DEFAULT_EFFECTIVE_CONTEXT_WINDOW_PERCENT },
|
|
3887
3887
|
{
|
|
3888
3888
|
slug: "codex-auto-review",
|
|
3889
3889
|
contextWindowTokens: 272000,
|