lazycodex-ai 5.0.0-beta.50 → 5.0.0-beta.52
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/dist/cli/doctor/checks/index.d.ts +2 -0
- package/dist/cli/doctor/checks/latest-version.d.ts +11 -0
- package/dist/cli/doctor/framework/constants.d.ts +5 -0
- package/dist/cli/doctor/framework/types.d.ts +2 -0
- package/dist/cli/index.js +110 -44
- package/dist/cli-node/index.js +110 -44
- package/package.json +1 -1
- package/packages/lsp-daemon/dist/cli.js +1 -2
- package/packages/lsp-daemon/dist/ownership.js +2 -2
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +5 -1
- package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
- package/packages/omo-codex/plugin/components/git-bash/dist/cli.js +1 -1
- package/packages/omo-codex/plugin/components/git-bash/dist/codex-hook.js +2 -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/git-bash/src/codex-hook.ts +2 -1
- package/packages/omo-codex/plugin/components/git-bash/test/codex-hook.test.ts +6 -7
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
- package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
- package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/rules/package.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +11 -5
- package/packages/omo-codex/plugin/components/ulw-loop/dist/spawn-guard.js +11 -5
- 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/components/ulw-loop/src/spawn-guard.ts +10 -5
- package/packages/omo-codex/plugin/components/ulw-loop/test/spawn-guard.test.ts +21 -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/scripts/migrate-codex-config/subagent-limit-guard.mjs +1 -0
- package/packages/omo-codex/plugin/skills/frontend/ATTRIBUTION.md +10 -0
- package/packages/omo-codex/plugin/skills/frontend/SKILL.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/README.md +10 -2
- package/packages/omo-codex/plugin/skills/frontend/references/design/_INDEX.md +1 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/ambience-skill.md +145 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/interaction-skill.md +2 -0
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +9 -5
- package/packages/shared-skills/skills/frontend/ATTRIBUTION.md +10 -0
- package/packages/shared-skills/skills/frontend/SKILL.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/README.md +10 -2
- package/packages/shared-skills/skills/frontend/references/design/_INDEX.md +1 -0
- package/packages/shared-skills/skills/frontend/references/design/ambience-skill.md +145 -0
- package/packages/shared-skills/skills/frontend/references/design/interaction-skill.md +2 -0
|
@@ -2,9 +2,11 @@ import type { CheckDefinition } from "../framework/types";
|
|
|
2
2
|
import { gatherSystemInfo } from "./system";
|
|
3
3
|
import { gatherToolsSummary } from "./tools";
|
|
4
4
|
import { gatherCodexSummary } from "./codex";
|
|
5
|
+
import { gatherEditionDistTags, resolveLatestVersion } from "./latest-version";
|
|
5
6
|
export type { CheckDefinition };
|
|
6
7
|
export * from "./model-resolution-types";
|
|
7
8
|
export { gatherSystemInfo, gatherToolsSummary };
|
|
8
9
|
export { gatherCodexSummary };
|
|
10
|
+
export { gatherEditionDistTags, resolveLatestVersion };
|
|
9
11
|
export declare function getAllCheckDefinitions(): CheckDefinition[];
|
|
10
12
|
export declare function getCodexCheckDefinitions(): CheckDefinition[];
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type NpmDistTags } from "../../config-manager/npm-dist-tags";
|
|
2
|
+
import type { CodexDoctorSummary, DoctorTarget, SystemInfo } from "../framework/types";
|
|
3
|
+
export type FetchDistTags = (packageName: string) => Promise<NpmDistTags | null>;
|
|
4
|
+
export interface LatestVersionInput {
|
|
5
|
+
target: DoctorTarget;
|
|
6
|
+
systemInfo: SystemInfo;
|
|
7
|
+
codex: CodexDoctorSummary | undefined;
|
|
8
|
+
distTags: NpmDistTags | null;
|
|
9
|
+
}
|
|
10
|
+
export declare function gatherEditionDistTags(target: DoctorTarget, fetchDistTags?: FetchDistTags): Promise<NpmDistTags | null>;
|
|
11
|
+
export declare function resolveLatestVersion(input: LatestVersionInput): string | null;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { DoctorTarget } from "./types";
|
|
1
2
|
export declare const SYMBOLS: {
|
|
2
3
|
readonly check: string;
|
|
3
4
|
readonly cross: string;
|
|
@@ -31,3 +32,7 @@ export declare const EXIT_CODES: {
|
|
|
31
32
|
export declare const MIN_OPENCODE_VERSION = "1.4.0";
|
|
32
33
|
export declare const PACKAGE_NAME = "oh-my-openagent";
|
|
33
34
|
export declare const OPENCODE_BINARIES: readonly ["opencode", "opencode-desktop"];
|
|
35
|
+
export declare const EDITION_LABELS: Record<DoctorTarget, string>;
|
|
36
|
+
export declare const EDITION_PACKAGE_NAMES: Record<DoctorTarget, string>;
|
|
37
|
+
export declare const UPDATE_COMMANDS: Record<DoctorTarget, string>;
|
|
38
|
+
export declare const LATEST_UNAVAILABLE_TEXT = "could not check";
|
|
@@ -69,6 +69,8 @@ export interface DoctorResult {
|
|
|
69
69
|
exitCode: number;
|
|
70
70
|
target?: DoctorTarget;
|
|
71
71
|
codex?: CodexDoctorSummary;
|
|
72
|
+
/** Latest published version on the installed channel; null when the registry lookup failed. */
|
|
73
|
+
latestVersion: string | null;
|
|
72
74
|
}
|
|
73
75
|
export interface CodexConfigSummary {
|
|
74
76
|
readonly exists: boolean;
|
package/dist/cli/index.js
CHANGED
|
@@ -64,7 +64,7 @@ var package_default;
|
|
|
64
64
|
var init_package = __esm(() => {
|
|
65
65
|
package_default = {
|
|
66
66
|
name: "oh-my-opencode",
|
|
67
|
-
version: "5.0.0-beta.
|
|
67
|
+
version: "5.0.0-beta.52",
|
|
68
68
|
description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
69
69
|
main: "./dist/index.js",
|
|
70
70
|
types: "dist/index.d.ts",
|
|
@@ -248,7 +248,7 @@ var init_package = __esm(() => {
|
|
|
248
248
|
zod: "^4.4.3"
|
|
249
249
|
},
|
|
250
250
|
devDependencies: {
|
|
251
|
-
"@code-yeongyu/senpi": "2026.9.
|
|
251
|
+
"@code-yeongyu/senpi": "2026.9.10",
|
|
252
252
|
"@oh-my-opencode/agents-md-core": "workspace:*",
|
|
253
253
|
"@oh-my-opencode/ast-grep-mcp": "workspace:*",
|
|
254
254
|
"@oh-my-opencode/boulder-state": "workspace:*",
|
|
@@ -289,18 +289,18 @@ var init_package = __esm(() => {
|
|
|
289
289
|
typescript: "^7.0.2"
|
|
290
290
|
},
|
|
291
291
|
optionalDependencies: {
|
|
292
|
-
"oh-my-opencode-darwin-arm64": "5.0.0-beta.
|
|
293
|
-
"oh-my-opencode-darwin-x64": "5.0.0-beta.
|
|
294
|
-
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.
|
|
295
|
-
"oh-my-opencode-linux-arm64": "5.0.0-beta.
|
|
296
|
-
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.
|
|
297
|
-
"oh-my-opencode-linux-x64": "5.0.0-beta.
|
|
298
|
-
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.
|
|
299
|
-
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.
|
|
300
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.
|
|
301
|
-
"oh-my-opencode-windows-arm64": "5.0.0-beta.
|
|
302
|
-
"oh-my-opencode-windows-x64": "5.0.0-beta.
|
|
303
|
-
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.
|
|
292
|
+
"oh-my-opencode-darwin-arm64": "5.0.0-beta.52",
|
|
293
|
+
"oh-my-opencode-darwin-x64": "5.0.0-beta.52",
|
|
294
|
+
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.52",
|
|
295
|
+
"oh-my-opencode-linux-arm64": "5.0.0-beta.52",
|
|
296
|
+
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.52",
|
|
297
|
+
"oh-my-opencode-linux-x64": "5.0.0-beta.52",
|
|
298
|
+
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.52",
|
|
299
|
+
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.52",
|
|
300
|
+
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.52",
|
|
301
|
+
"oh-my-opencode-windows-arm64": "5.0.0-beta.52",
|
|
302
|
+
"oh-my-opencode-windows-x64": "5.0.0-beta.52",
|
|
303
|
+
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.52"
|
|
304
304
|
},
|
|
305
305
|
overrides: {
|
|
306
306
|
"@earendil-works/pi-agent-core": "0.84.2",
|
|
@@ -64424,6 +64424,7 @@ var init_injector = __esm(() => {
|
|
|
64424
64424
|
var init_hook_message_injector = __esm(() => {
|
|
64425
64425
|
init_injector();
|
|
64426
64426
|
init_constants2();
|
|
64427
|
+
init_id_generation();
|
|
64427
64428
|
});
|
|
64428
64429
|
|
|
64429
64430
|
// packages/omo-opencode/src/shared/opencode-message-dir.ts
|
|
@@ -73359,10 +73360,8 @@ function validationDiagnostic(path, issues) {
|
|
|
73359
73360
|
function unrecognizedKeyIssues(issues) {
|
|
73360
73361
|
return issues.flatMap((issue) => issue.code === "unrecognized_keys" ? [{ keys: issue.keys, path: issue.path.map((segment) => String(segment)) }] : []);
|
|
73361
73362
|
}
|
|
73362
|
-
function hasUnsafeUnrecognizedKey(
|
|
73363
|
-
|
|
73364
|
-
return true;
|
|
73365
|
-
return hasTamperedPrototype(parsed);
|
|
73363
|
+
function hasUnsafeUnrecognizedKey(issues) {
|
|
73364
|
+
return issues.some((issue) => issue.keys.some((key) => isUnsafeObjectKey2(key)));
|
|
73366
73365
|
}
|
|
73367
73366
|
function hasTamperedPrototype(value) {
|
|
73368
73367
|
if (Array.isArray(value))
|
|
@@ -73435,11 +73434,17 @@ function readConfigSource(path, scope, fileSystem) {
|
|
|
73435
73434
|
source: { exists: true, loaded: false, path, scope }
|
|
73436
73435
|
};
|
|
73437
73436
|
}
|
|
73437
|
+
if (hasTamperedPrototype(parsed.data)) {
|
|
73438
|
+
return {
|
|
73439
|
+
diagnostic: { kind: "validation", message: `Invalid omo config at ${path}: "__proto__" member is not allowed`, path },
|
|
73440
|
+
source: { exists: true, loaded: false, path, scope }
|
|
73441
|
+
};
|
|
73442
|
+
}
|
|
73438
73443
|
const parsedRecord = toRecord2(parsed.data);
|
|
73439
73444
|
const validation = OmoConfigLayerSchema.safeParse(parsed.data);
|
|
73440
73445
|
if (!validation.success) {
|
|
73441
73446
|
const unrecognized = unrecognizedKeyIssues(validation.error.issues);
|
|
73442
|
-
if (
|
|
73447
|
+
if (hasUnsafeUnrecognizedKey(unrecognized)) {
|
|
73443
73448
|
return {
|
|
73444
73449
|
diagnostic: validationDiagnostic(path, validation.error.issues),
|
|
73445
73450
|
source: { exists: true, loaded: false, path, scope }
|
|
@@ -84439,7 +84444,7 @@ var package_default2;
|
|
|
84439
84444
|
var init_package2 = __esm(() => {
|
|
84440
84445
|
package_default2 = {
|
|
84441
84446
|
name: "@oh-my-opencode/omo-codex",
|
|
84442
|
-
version: "5.0.0-beta.
|
|
84447
|
+
version: "5.0.0-beta.52",
|
|
84443
84448
|
type: "module",
|
|
84444
84449
|
private: true,
|
|
84445
84450
|
description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
|
|
@@ -87860,6 +87865,19 @@ var EXIT_CODES = {
|
|
|
87860
87865
|
var MIN_OPENCODE_VERSION = "1.4.0";
|
|
87861
87866
|
var PACKAGE_NAME = PUBLISHED_PACKAGE_NAME;
|
|
87862
87867
|
var OPENCODE_BINARIES2 = ["opencode", "opencode-desktop"];
|
|
87868
|
+
var EDITION_LABELS = {
|
|
87869
|
+
opencode: "OpenCode",
|
|
87870
|
+
codex: "Codex"
|
|
87871
|
+
};
|
|
87872
|
+
var EDITION_PACKAGE_NAMES = {
|
|
87873
|
+
opencode: PUBLISHED_PACKAGE_NAME,
|
|
87874
|
+
codex: "lazycodex-ai"
|
|
87875
|
+
};
|
|
87876
|
+
var UPDATE_COMMANDS = {
|
|
87877
|
+
opencode: `bunx ${PUBLISHED_PACKAGE_NAME} install`,
|
|
87878
|
+
codex: "npx lazycodex-ai install --no-tui --codex-autonomous"
|
|
87879
|
+
};
|
|
87880
|
+
var LATEST_UNAVAILABLE_TEXT = "could not check";
|
|
87863
87881
|
|
|
87864
87882
|
// packages/omo-opencode/src/cli/minimum-opencode-version.ts
|
|
87865
87883
|
init_opencode_version();
|
|
@@ -90436,7 +90454,7 @@ var CODEX_AGENTS_HEADER = "agents";
|
|
|
90436
90454
|
var CODEX_MULTI_AGENT_V2_HEADER = "features.multi_agent_v2";
|
|
90437
90455
|
function ensureCodexMultiAgentV2Config(config, options = {}) {
|
|
90438
90456
|
const featureFlag = removeFeatureFlagSetting(config, "multi_agent_v2");
|
|
90439
|
-
const v2Preferred = options.multiAgentVersion === "v2";
|
|
90457
|
+
const v2Preferred = options.multiAgentVersion === "v2" || isMultiAgentV2Enabled(featureFlag.config);
|
|
90440
90458
|
const agentsConfig = removeAgentsMaxThreads(featureFlag.config, v2Preferred);
|
|
90441
90459
|
const preserveDisable = featureFlag.value === false && !v2Preferred;
|
|
90442
90460
|
const featureConfig = preserveDisable ? setMultiAgentV2Disable(agentsConfig) : v2Preferred ? removeMultiAgentV2Disable(agentsConfig) : agentsConfig;
|
|
@@ -90515,6 +90533,10 @@ function removeFeatureFlagSetting(config, featureName) {
|
|
|
90515
90533
|
value: readBooleanSetting(section.text, featureName)
|
|
90516
90534
|
};
|
|
90517
90535
|
}
|
|
90536
|
+
function isMultiAgentV2Enabled(config) {
|
|
90537
|
+
const section = findTomlSection(config, CODEX_MULTI_AGENT_V2_HEADER);
|
|
90538
|
+
return section !== null && /^\s*enabled\s*=\s*true[ \t]*(?:#.*)?$/m.test(section.text);
|
|
90539
|
+
}
|
|
90518
90540
|
function removeAgentsMaxThreads(config, v2Preferred) {
|
|
90519
90541
|
const section = findTomlSection(config, CODEX_AGENTS_HEADER);
|
|
90520
90542
|
if (!section)
|
|
@@ -91677,7 +91699,7 @@ function lastValue(values) {
|
|
|
91677
91699
|
return values.length > 0 ? values[values.length - 1] ?? null : null;
|
|
91678
91700
|
}
|
|
91679
91701
|
function repairProjectLocalCodexConfigText(config) {
|
|
91680
|
-
if (!
|
|
91702
|
+
if (!isMultiAgentV2Enabled2(config))
|
|
91681
91703
|
return { config, changed: false, removedKeys: [] };
|
|
91682
91704
|
let nextConfig = config;
|
|
91683
91705
|
const removedKeys = [];
|
|
@@ -91767,7 +91789,7 @@ async function collectProjectLocalArtifacts(projectRoots) {
|
|
|
91767
91789
|
}
|
|
91768
91790
|
return artifacts;
|
|
91769
91791
|
}
|
|
91770
|
-
function
|
|
91792
|
+
function isMultiAgentV2Enabled2(config) {
|
|
91771
91793
|
const featuresSection = findTomlSection(config, "features");
|
|
91772
91794
|
if (featuresSection !== null && settingIsBooleanTrue(featuresSection.text, "multi_agent_v2"))
|
|
91773
91795
|
return true;
|
|
@@ -93198,6 +93220,20 @@ import { constants as constants9 } from "fs";
|
|
|
93198
93220
|
import { access as access2, readFile as readFile26, stat as stat6 } from "fs/promises";
|
|
93199
93221
|
import { dirname as dirname23, join as join59 } from "path";
|
|
93200
93222
|
|
|
93223
|
+
// packages/memory-core/src/personas/manifest.ts
|
|
93224
|
+
var PERSONA_ASSET_FILENAMES = {
|
|
93225
|
+
reflection: "reflection-persona.md",
|
|
93226
|
+
dream: "dream-persona.md",
|
|
93227
|
+
facts: "facts-persona.md",
|
|
93228
|
+
kibitzer: "kibitzer-persona.md"
|
|
93229
|
+
};
|
|
93230
|
+
var PERSONA_ASSET_FILES = [
|
|
93231
|
+
PERSONA_ASSET_FILENAMES.reflection,
|
|
93232
|
+
PERSONA_ASSET_FILENAMES.dream,
|
|
93233
|
+
PERSONA_ASSET_FILENAMES.facts,
|
|
93234
|
+
PERSONA_ASSET_FILENAMES.kibitzer
|
|
93235
|
+
];
|
|
93236
|
+
|
|
93201
93237
|
// packages/omo-senpi/src/install/senpi-settings.ts
|
|
93202
93238
|
import { constants as constants8 } from "fs";
|
|
93203
93239
|
import { access, copyFile as copyFile3, mkdir as mkdir9, readFile as readFile25, rename as rename5, writeFile as writeFile14 } from "fs/promises";
|
|
@@ -93321,10 +93357,7 @@ var REQUIRED_PLUGIN_ARTIFACTS = [
|
|
|
93321
93357
|
join59("extensions", "omo-task.js"),
|
|
93322
93358
|
join59("extensions", "omo-member.js"),
|
|
93323
93359
|
join59("extensions", "memory-run-supervisor.mjs"),
|
|
93324
|
-
join59("extensions",
|
|
93325
|
-
join59("extensions", "dream-persona.md"),
|
|
93326
|
-
join59("extensions", "facts-persona.md"),
|
|
93327
|
-
join59("extensions", "kibitzer-persona.md"),
|
|
93360
|
+
...PERSONA_ASSET_FILES.map((filename) => join59("extensions", filename)),
|
|
93328
93361
|
join59("skills", "ast-grep", "SKILL.md"),
|
|
93329
93362
|
join59("skills", "coding-agent-sessions", "SKILL.md"),
|
|
93330
93363
|
join59("skills", "debugging", "SKILL.md"),
|
|
@@ -100644,7 +100677,9 @@ async function checkConfig() {
|
|
|
100644
100677
|
}
|
|
100645
100678
|
|
|
100646
100679
|
// packages/omo-opencode/src/cli/doctor/checks/deprecated-reasoning-keys.ts
|
|
100680
|
+
init_src4();
|
|
100647
100681
|
init_main();
|
|
100682
|
+
init_config_migration();
|
|
100648
100683
|
import { existsSync as existsSync52, readFileSync as readFileSync33 } from "fs";
|
|
100649
100684
|
import { join as join78 } from "path";
|
|
100650
100685
|
var CANONICAL_REPLACEMENT = new Map([
|
|
@@ -100652,8 +100687,9 @@ var CANONICAL_REPLACEMENT = new Map([
|
|
|
100652
100687
|
["reasoningEffort", "reasoning"],
|
|
100653
100688
|
["thinking", 'reasoning: "off" or provider_options.thinking'],
|
|
100654
100689
|
["textVerbosity", "provider_options.textVerbosity"],
|
|
100655
|
-
["fallback_models", "models"]
|
|
100690
|
+
["fallback_models", "models: [<primary>, ...fallbacks] (the first entry becomes the primary model)"]
|
|
100656
100691
|
]);
|
|
100692
|
+
var MIGRATE_SUFFIX = ", or run: oh-my-openagent config migrate";
|
|
100657
100693
|
var TUNING_CONTAINERS = new Set(["agents", "categories", "models"]);
|
|
100658
100694
|
var PASSTHROUGH_CONTAINERS = new Set(["provider_options", "providerOptions"]);
|
|
100659
100695
|
function isRecord13(value) {
|
|
@@ -100662,7 +100698,7 @@ function isRecord13(value) {
|
|
|
100662
100698
|
function isHarnessBlock(key) {
|
|
100663
100699
|
return key.startsWith("[") && key.endsWith("]");
|
|
100664
100700
|
}
|
|
100665
|
-
function collectIssues(configPath, value, prefix) {
|
|
100701
|
+
function collectIssues(configPath, value, prefix, fixSuffix) {
|
|
100666
100702
|
if (!isRecord13(value))
|
|
100667
100703
|
return [];
|
|
100668
100704
|
const issues = [];
|
|
@@ -100673,7 +100709,7 @@ function collectIssues(configPath, value, prefix) {
|
|
|
100673
100709
|
issues.push({
|
|
100674
100710
|
title: "Deprecated config key",
|
|
100675
100711
|
description: `${configPath}: ${path}`,
|
|
100676
|
-
fix: `Replace ${key} with ${replacement}
|
|
100712
|
+
fix: `Replace ${key} with ${replacement}${fixSuffix}`,
|
|
100677
100713
|
severity: "warning",
|
|
100678
100714
|
affects: [path]
|
|
100679
100715
|
});
|
|
@@ -100685,18 +100721,23 @@ function collectIssues(configPath, value, prefix) {
|
|
|
100685
100721
|
continue;
|
|
100686
100722
|
if (prefix.length === 0 && key === "profiles") {
|
|
100687
100723
|
for (const profile of Object.values(child)) {
|
|
100688
|
-
issues.push(...collectIssues(configPath, profile, ""));
|
|
100724
|
+
issues.push(...collectIssues(configPath, profile, "", fixSuffix));
|
|
100689
100725
|
}
|
|
100690
100726
|
continue;
|
|
100691
100727
|
}
|
|
100692
100728
|
if (key === "[opencode]")
|
|
100693
100729
|
continue;
|
|
100694
100730
|
if (TUNING_CONTAINERS.has(key) || isHarnessBlock(key) || prefix.length > 0) {
|
|
100695
|
-
issues.push(...collectIssues(configPath, child, path));
|
|
100731
|
+
issues.push(...collectIssues(configPath, child, path, fixSuffix));
|
|
100696
100732
|
}
|
|
100697
100733
|
}
|
|
100698
100734
|
return issues;
|
|
100699
100735
|
}
|
|
100736
|
+
function migrateFixSuffix(parsed) {
|
|
100737
|
+
if (isRecord13(parsed) && hasMigrationMarker(parsed, REASONING_UNIFICATION_MIGRATION_ID))
|
|
100738
|
+
return "";
|
|
100739
|
+
return MIGRATE_SUFFIX;
|
|
100740
|
+
}
|
|
100700
100741
|
function userConfigPaths() {
|
|
100701
100742
|
const home = process.env.HOME ?? process.env.USERPROFILE;
|
|
100702
100743
|
if (home === undefined || home.length === 0)
|
|
@@ -100711,7 +100752,7 @@ async function checkDeprecatedReasoningKeys() {
|
|
|
100711
100752
|
continue;
|
|
100712
100753
|
scanned.push(configPath);
|
|
100713
100754
|
const parsed = parse2(readFileSync33(configPath, "utf-8"));
|
|
100714
|
-
issues.push(...collectIssues(configPath, parsed, ""));
|
|
100755
|
+
issues.push(...collectIssues(configPath, parsed, "", migrateFixSuffix(parsed)));
|
|
100715
100756
|
}
|
|
100716
100757
|
return {
|
|
100717
100758
|
name: CHECK_NAMES[CHECK_IDS.CONFIG],
|
|
@@ -101837,6 +101878,24 @@ async function pathExists2(path) {
|
|
|
101837
101878
|
}
|
|
101838
101879
|
}
|
|
101839
101880
|
|
|
101881
|
+
// packages/omo-opencode/src/cli/doctor/checks/latest-version.ts
|
|
101882
|
+
init_auto_update_checker();
|
|
101883
|
+
function gatherEditionDistTags(target, fetchDistTags = fetchNpmDistTags) {
|
|
101884
|
+
return fetchDistTags(EDITION_PACKAGE_NAMES[target]);
|
|
101885
|
+
}
|
|
101886
|
+
function resolveInstalledVersion(input) {
|
|
101887
|
+
if (input.target === "codex" && input.codex) {
|
|
101888
|
+
return input.codex.packageVersion ?? input.codex.installerVersion;
|
|
101889
|
+
}
|
|
101890
|
+
return input.systemInfo.pluginVersion;
|
|
101891
|
+
}
|
|
101892
|
+
function resolveLatestVersion(input) {
|
|
101893
|
+
if (!input.distTags)
|
|
101894
|
+
return null;
|
|
101895
|
+
const channel = extractChannel(resolveInstalledVersion(input));
|
|
101896
|
+
return input.distTags[channel] ?? input.distTags.latest ?? null;
|
|
101897
|
+
}
|
|
101898
|
+
|
|
101840
101899
|
// packages/omo-opencode/src/cli/doctor/checks/codex-components.ts
|
|
101841
101900
|
init_src();
|
|
101842
101901
|
import { readdir as readdir15, readFile as readFile28, stat as stat7 } from "fs/promises";
|
|
@@ -102247,7 +102306,6 @@ function getCodexCheckDefinitions() {
|
|
|
102247
102306
|
}
|
|
102248
102307
|
|
|
102249
102308
|
// packages/omo-opencode/src/cli/doctor/framework/format-default.ts
|
|
102250
|
-
init_shared();
|
|
102251
102309
|
var import_picocolors19 = __toESM(require_picocolors(), 1);
|
|
102252
102310
|
|
|
102253
102311
|
// packages/omo-opencode/src/cli/doctor/framework/format-shared.ts
|
|
@@ -102289,23 +102347,27 @@ function formatIssue(issue, index) {
|
|
|
102289
102347
|
}
|
|
102290
102348
|
|
|
102291
102349
|
// packages/omo-opencode/src/cli/doctor/framework/format-default.ts
|
|
102350
|
+
function formatOkSummary(result, headline, installedVersion) {
|
|
102351
|
+
const target = result.target ?? "opencode";
|
|
102352
|
+
const latest = result.latestVersion ?? LATEST_UNAVAILABLE_TEXT;
|
|
102353
|
+
return [
|
|
102354
|
+
` ${import_picocolors19.default.green(SYMBOLS2.check)} ${import_picocolors19.default.green(`${headline} \xB7 Edition: ${EDITION_LABELS[target]} \xB7 Installed: ${installedVersion} \xB7 Latest: ${latest}`)}`,
|
|
102355
|
+
` Update: ${UPDATE_COMMANDS[target]}`
|
|
102356
|
+
];
|
|
102357
|
+
}
|
|
102292
102358
|
function formatDefault(result) {
|
|
102293
102359
|
const lines = [];
|
|
102294
102360
|
lines.push(formatHeader());
|
|
102295
102361
|
const allIssues = result.results.flatMap((r) => r.issues);
|
|
102296
102362
|
if (allIssues.length === 0) {
|
|
102297
102363
|
if (result.target === "codex" && result.codex) {
|
|
102298
|
-
const codex = result.codex.codexPath ?? result.codex.codexAppId ?? "unknown";
|
|
102299
|
-
const pluginVer = result.codex.pluginVersion ?? "unknown";
|
|
102300
|
-
const packageName = result.codex.packageName ?? "lazycodex-ai";
|
|
102301
102364
|
const packageVer = result.codex.packageVersion ?? result.codex.installerVersion;
|
|
102302
|
-
lines.push(
|
|
102365
|
+
lines.push(...formatOkSummary(result, "LazyCodex OK", packageVer));
|
|
102303
102366
|
return lines.join(`
|
|
102304
102367
|
`);
|
|
102305
102368
|
}
|
|
102306
|
-
const opencodeVer = result.systemInfo.opencodeVersion ?? "unknown";
|
|
102307
102369
|
const pluginVer = result.systemInfo.pluginVersion ?? "unknown";
|
|
102308
|
-
lines.push(
|
|
102370
|
+
lines.push(...formatOkSummary(result, "System OK", pluginVer));
|
|
102309
102371
|
} else {
|
|
102310
102372
|
const issueCount = allIssues.filter((i) => i.severity === "error").length;
|
|
102311
102373
|
const warnCount = allIssues.filter((i) => i.severity === "warning").length;
|
|
@@ -102552,7 +102614,8 @@ function buildTimeoutResult(start, options) {
|
|
|
102552
102614
|
systemInfo: { opencodeVersion: null, opencodePath: null, pluginVersion: null, loadedVersion: null, bunVersion: null, configPath: null, configValid: false, isLocalDev: false },
|
|
102553
102615
|
tools: { lspServers: [], astGrepCli: false, commentChecker: false, ghCli: { installed: false, authenticated: false, username: null }, mcpBuiltin: [], mcpUser: [] },
|
|
102554
102616
|
summary: { total: 1, passed: 0, failed: 1, warnings: 0, skipped: 0, duration: Math.round(performance.now() - start) },
|
|
102555
|
-
exitCode: EXIT_CODES.FAILURE
|
|
102617
|
+
exitCode: EXIT_CODES.FAILURE,
|
|
102618
|
+
latestVersion: null
|
|
102556
102619
|
};
|
|
102557
102620
|
if (options.json) {
|
|
102558
102621
|
console.log(formatJsonOutput2(timeoutResult));
|
|
@@ -102572,7 +102635,8 @@ async function runDoctor(options) {
|
|
|
102572
102635
|
Promise.all(allChecks.map(runCheck)),
|
|
102573
102636
|
gatherSystemInfo(),
|
|
102574
102637
|
gatherToolsSummary(),
|
|
102575
|
-
target === "codex" ? gatherCodexSummary() : Promise.resolve(undefined)
|
|
102638
|
+
target === "codex" ? gatherCodexSummary() : Promise.resolve(undefined),
|
|
102639
|
+
gatherEditionDistTags(target)
|
|
102576
102640
|
]);
|
|
102577
102641
|
let timer;
|
|
102578
102642
|
const timeoutPromise = new Promise((_, reject) => {
|
|
@@ -102582,8 +102646,9 @@ async function runDoctor(options) {
|
|
|
102582
102646
|
let systemInfo;
|
|
102583
102647
|
let tools;
|
|
102584
102648
|
let codex;
|
|
102649
|
+
let distTags;
|
|
102585
102650
|
try {
|
|
102586
|
-
[results, systemInfo, tools, codex] = await Promise.race([checksPromise, timeoutPromise]);
|
|
102651
|
+
[results, systemInfo, tools, codex, distTags] = await Promise.race([checksPromise, timeoutPromise]);
|
|
102587
102652
|
} catch (error) {
|
|
102588
102653
|
clearTimeout(timer);
|
|
102589
102654
|
if (error instanceof DoctorTimeoutError) {
|
|
@@ -102602,7 +102667,8 @@ async function runDoctor(options) {
|
|
|
102602
102667
|
summary,
|
|
102603
102668
|
exitCode,
|
|
102604
102669
|
target,
|
|
102605
|
-
codex
|
|
102670
|
+
codex,
|
|
102671
|
+
latestVersion: resolveLatestVersion({ target, systemInfo, codex, distTags })
|
|
102606
102672
|
};
|
|
102607
102673
|
if (options.json) {
|
|
102608
102674
|
console.log(formatJsonOutput2(doctorResult));
|