lazycodex-ai 5.0.0-beta.82 → 5.0.0-beta.84
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.ja.md +2 -2
- package/README.ko.md +2 -2
- package/README.md +4 -4
- package/README.ru.md +2 -2
- package/README.zh-cn.md +2 -2
- package/dist/cli/index.js +707 -146
- package/dist/cli/install-native/index.d.ts +4 -0
- package/dist/cli/install-native/plan.d.ts +11 -0
- package/dist/cli/install-native/run-native-install.d.ts +23 -0
- package/dist/cli/install-native-dev/index.d.ts +4 -0
- package/dist/cli/native-dev-platform-flag.d.ts +5 -0
- package/dist/cli/native-edition-hint.d.ts +10 -0
- package/dist/cli/types.d.ts +3 -2
- package/dist/cli-node/index.js +707 -146
- package/package.json +1 -1
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +84 -11
- 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/lcx/skills/lcx-contribute-bug-fix/SKILL.md +1 -1
- package/packages/omo-codex/plugin/components/lcx/skills/lcx-doctor/SKILL.md +3 -3
- package/packages/omo-codex/plugin/components/lcx/skills/lcx-report-bug/SKILL.md +5 -5
- 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 +24 -10
- package/packages/omo-codex/plugin/components/ulw-loop/dist/spawn-guard.js +8 -6
- package/packages/omo-codex/plugin/components/ulw-loop/dist/surface.d.ts +2 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/surface.js +21 -4
- 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/src/surface.ts +24 -6
- package/packages/omo-codex/plugin/components/ulw-loop/test/spawn-guard-native-reviewer.test.ts +207 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/spawn-guard.test.ts +6 -4
- package/packages/omo-codex/plugin/components/ulw-loop/test/surface.test.ts +43 -4
- 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/ATTRIBUTION.md +25 -0
- package/packages/omo-codex/plugin/skills/browser/SKILL.md +89 -0
- package/packages/omo-codex/plugin/skills/browser/agents/openai.yaml +2 -0
- package/packages/omo-codex/plugin/skills/browser/references/commands.md +90 -0
- package/packages/omo-codex/plugin/skills/browser/references/install.md +71 -0
- package/packages/omo-codex/plugin/skills/browser/references/owned-engine/README.md +42 -0
- package/packages/omo-codex/plugin/skills/browser/references/owned-engine/frames-and-humans.md +39 -0
- package/packages/omo-codex/plugin/skills/browser/references/owned-engine/ladder.md +59 -0
- package/packages/omo-codex/plugin/skills/browser/references/owned-engine/network.md +42 -0
- package/packages/omo-codex/plugin/skills/browser/references/recipes/1password.md +59 -0
- package/packages/omo-codex/plugin/skills/browser/references/remote.md +24 -0
- package/packages/omo-codex/plugin/skills/browser/scripts/browser-doctor.mjs +41 -0
- package/packages/omo-codex/plugin/skills/browser/scripts/browser-env.mjs +41 -0
- package/packages/omo-codex/plugin/skills/browser/scripts/browser-install.mjs +51 -0
- package/packages/omo-codex/plugin/skills/lcx-contribute-bug-fix/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/lcx-doctor/SKILL.md +3 -3
- package/packages/omo-codex/plugin/skills/lcx-report-bug/SKILL.md +5 -5
- package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +1 -0
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +90 -17
- package/packages/shared-skills/skills/browser/ATTRIBUTION.md +25 -0
- package/packages/shared-skills/skills/browser/SKILL.md +89 -0
- package/packages/shared-skills/skills/browser/references/commands.md +90 -0
- package/packages/shared-skills/skills/browser/references/install.md +71 -0
- package/packages/shared-skills/skills/browser/references/owned-engine/README.md +42 -0
- package/packages/shared-skills/skills/browser/references/owned-engine/frames-and-humans.md +39 -0
- package/packages/shared-skills/skills/browser/references/owned-engine/ladder.md +59 -0
- package/packages/shared-skills/skills/browser/references/owned-engine/network.md +42 -0
- package/packages/shared-skills/skills/browser/references/recipes/1password.md +59 -0
- package/packages/shared-skills/skills/browser/references/remote.md +24 -0
- package/packages/shared-skills/skills/browser/scripts/browser-doctor.mjs +41 -0
- package/packages/shared-skills/skills/browser/scripts/browser-env.mjs +41 -0
- package/packages/shared-skills/skills/browser/scripts/browser-install.mjs +51 -0
- package/dist/cli/install-senpi/index.d.ts +0 -1
- package/dist/cli/senpi-edition-hint.d.ts +0 -10
- package/dist/cli/senpi-platform-flag.d.ts +0 -4
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lazycodex-ai",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.84",
|
|
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",
|
|
@@ -7072,8 +7072,10 @@ var OmoGitMasterSettingsSchema = OmoGitMasterSettingsLayerSchema.extend({
|
|
|
7072
7072
|
|
|
7073
7073
|
// ../../omo-config-core/src/schema/harness.ts
|
|
7074
7074
|
var HARNESS_IDS = ["codex", "opencode", "omo"];
|
|
7075
|
-
var OMO_CONFIG_HARNESS_IDS = ["opencode", "
|
|
7075
|
+
var OMO_CONFIG_HARNESS_IDS = ["opencode", "native", "codex"];
|
|
7076
7076
|
var OmoHarnessIdSchema = _enum(OMO_CONFIG_HARNESS_IDS);
|
|
7077
|
+
var OMO_CONFIG_LEGACY_HARNESS_ALIASES = { senpi: "native" };
|
|
7078
|
+
var OMO_CONFIG_LEGACY_HARNESS_IDS = Object.keys(OMO_CONFIG_LEGACY_HARNESS_ALIASES);
|
|
7077
7079
|
|
|
7078
7080
|
// ../../omo-config-core/src/schema/memory.ts
|
|
7079
7081
|
var OmoMemoryReflectionTriggerSchema = object({
|
|
@@ -7532,6 +7534,7 @@ var OmoConfigProfileSchema = object({
|
|
|
7532
7534
|
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
7533
7535
|
disabled_skills: OmoDisabledSkillsSchema.optional(),
|
|
7534
7536
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
7537
|
+
"[native]": OmoTypedHarnessConfigSchema.optional(),
|
|
7535
7538
|
"[senpi]": OmoTypedHarnessConfigSchema.optional(),
|
|
7536
7539
|
"[codex]": OmoTypedHarnessConfigSchema.optional()
|
|
7537
7540
|
}).strict();
|
|
@@ -7550,6 +7553,7 @@ var OmoConfigSchema = object({
|
|
|
7550
7553
|
telemetry: OmoTelemetrySettingsSchema.optional(),
|
|
7551
7554
|
disabled_skills: OmoDisabledSkillsSchema.optional(),
|
|
7552
7555
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
7556
|
+
"[native]": OmoTypedHarnessConfigSchema.optional(),
|
|
7553
7557
|
"[senpi]": OmoTypedHarnessConfigSchema.optional(),
|
|
7554
7558
|
"[codex]": OmoTypedHarnessConfigSchema.optional(),
|
|
7555
7559
|
profiles: record(string2(), OmoConfigProfileSchema).default({}),
|
|
@@ -7571,6 +7575,7 @@ var OmoConfigLayerSchema = object({
|
|
|
7571
7575
|
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
7572
7576
|
disabled_skills: OmoDisabledSkillsSchema.optional(),
|
|
7573
7577
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
7578
|
+
"[native]": OmoTypedHarnessConfigSchema.optional(),
|
|
7574
7579
|
"[senpi]": OmoTypedHarnessConfigSchema.optional(),
|
|
7575
7580
|
"[codex]": OmoTypedHarnessConfigSchema.optional(),
|
|
7576
7581
|
profiles: record(string2(), OmoConfigProfileSchema).optional(),
|
|
@@ -7634,6 +7639,54 @@ function canonicalizeLegacyCategoryNames(document) {
|
|
|
7634
7639
|
return { document: canonicalized, renames };
|
|
7635
7640
|
}
|
|
7636
7641
|
|
|
7642
|
+
// ../../omo-config-core/src/schema/legacy-harness-names.ts
|
|
7643
|
+
function canonicalHarnessName(name) {
|
|
7644
|
+
return Object.hasOwn(OMO_CONFIG_LEGACY_HARNESS_ALIASES, name) ? OMO_CONFIG_LEGACY_HARNESS_ALIASES[name] : name;
|
|
7645
|
+
}
|
|
7646
|
+
function harnessBlockKey(harness) {
|
|
7647
|
+
return `[${harness}]`;
|
|
7648
|
+
}
|
|
7649
|
+
function legacyHarnessOfBlockKey(key) {
|
|
7650
|
+
if (!key.startsWith("[") || !key.endsWith("]"))
|
|
7651
|
+
return;
|
|
7652
|
+
const harness = key.slice(1, -1);
|
|
7653
|
+
return Object.hasOwn(OMO_CONFIG_LEGACY_HARNESS_ALIASES, harness) ? harness : undefined;
|
|
7654
|
+
}
|
|
7655
|
+
function isRecord8(value) {
|
|
7656
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
7657
|
+
}
|
|
7658
|
+
function canonicalizeBlocksIn(container, path, renames) {
|
|
7659
|
+
const result = {};
|
|
7660
|
+
for (const [key, value] of Object.entries(container)) {
|
|
7661
|
+
const legacyHarness = legacyHarnessOfBlockKey(key);
|
|
7662
|
+
if (legacyHarness === undefined) {
|
|
7663
|
+
result[key] = value;
|
|
7664
|
+
continue;
|
|
7665
|
+
}
|
|
7666
|
+
const canonical = harnessBlockKey(canonicalHarnessName(legacyHarness));
|
|
7667
|
+
const dropped = Object.hasOwn(container, canonical);
|
|
7668
|
+
renames.push({ canonical, dropped, legacy: key, path: [...path, key].join(".") });
|
|
7669
|
+
if (!dropped)
|
|
7670
|
+
result[canonical] = value;
|
|
7671
|
+
}
|
|
7672
|
+
return result;
|
|
7673
|
+
}
|
|
7674
|
+
function canonicalizeLegacyHarnessBlocks(document) {
|
|
7675
|
+
if (!isRecord8(document))
|
|
7676
|
+
return { document: {}, renames: [] };
|
|
7677
|
+
const renames = [];
|
|
7678
|
+
const canonicalized = canonicalizeBlocksIn(document, [], renames);
|
|
7679
|
+
const profiles = canonicalized["profiles"];
|
|
7680
|
+
if (isRecord8(profiles)) {
|
|
7681
|
+
const canonicalProfiles = {};
|
|
7682
|
+
for (const [name, profile] of Object.entries(profiles)) {
|
|
7683
|
+
canonicalProfiles[name] = isRecord8(profile) ? canonicalizeBlocksIn(profile, ["profiles", name], renames) : profile;
|
|
7684
|
+
}
|
|
7685
|
+
canonicalized["profiles"] = canonicalProfiles;
|
|
7686
|
+
}
|
|
7687
|
+
return { document: canonicalized, renames };
|
|
7688
|
+
}
|
|
7689
|
+
|
|
7637
7690
|
// ../../../node_modules/.bun/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/scanner.js
|
|
7638
7691
|
function createScanner(text, ignoreTrivia = false) {
|
|
7639
7692
|
const len = text.length;
|
|
@@ -8609,7 +8662,7 @@ function resolveOmoConfigPaths(options) {
|
|
|
8609
8662
|
}
|
|
8610
8663
|
|
|
8611
8664
|
// ../../omo-config-core/src/loader/resolution.ts
|
|
8612
|
-
var HARNESS_KEYS = [...new Set([...HARNESS_IDS, ...OMO_CONFIG_HARNESS_IDS])].map((harness) =>
|
|
8665
|
+
var HARNESS_KEYS = [...new Set([...HARNESS_IDS, ...OMO_CONFIG_HARNESS_IDS, ...OMO_CONFIG_LEGACY_HARNESS_IDS])].map((harness) => harnessBlockKey(harness));
|
|
8613
8666
|
function profileName(value) {
|
|
8614
8667
|
return value === "" ? undefined : value;
|
|
8615
8668
|
}
|
|
@@ -8638,7 +8691,13 @@ function withoutControlKeys(config) {
|
|
|
8638
8691
|
function harnessLayer(config, harness) {
|
|
8639
8692
|
if (harness === undefined)
|
|
8640
8693
|
return {};
|
|
8641
|
-
|
|
8694
|
+
const canonical = canonicalHarnessName(harness);
|
|
8695
|
+
const legacyKeys = Object.entries(OMO_CONFIG_LEGACY_HARNESS_ALIASES).filter(([, target]) => target === canonical).map(([legacy]) => harnessBlockKey(legacy));
|
|
8696
|
+
let layer = {};
|
|
8697
|
+
for (const key of [...legacyKeys, harnessBlockKey(canonical)]) {
|
|
8698
|
+
layer = mergeOmoConfigRecords(layer, toRecord(config[key]) ?? {});
|
|
8699
|
+
}
|
|
8700
|
+
return layer;
|
|
8642
8701
|
}
|
|
8643
8702
|
function resolveOmoConfigView(options) {
|
|
8644
8703
|
const profiles = toRecord(options.config["profiles"]);
|
|
@@ -8689,6 +8748,7 @@ var DEFAULT_RAW_CONFIG = {
|
|
|
8689
8748
|
function stripResolutionControlKeys(config) {
|
|
8690
8749
|
const {
|
|
8691
8750
|
"[codex]": _codex,
|
|
8751
|
+
"[native]": _native,
|
|
8692
8752
|
"[opencode]": _opencode,
|
|
8693
8753
|
"[senpi]": _senpi,
|
|
8694
8754
|
profiles: _profiles,
|
|
@@ -8714,21 +8774,21 @@ function hasUnsafeUnrecognizedKey(issues) {
|
|
|
8714
8774
|
function hasTamperedPrototype(value) {
|
|
8715
8775
|
if (Array.isArray(value))
|
|
8716
8776
|
return value.some((entry) => hasTamperedPrototype(entry));
|
|
8717
|
-
if (!
|
|
8777
|
+
if (!isRecord9(value))
|
|
8718
8778
|
return false;
|
|
8719
8779
|
const prototype = Object.getPrototypeOf(value);
|
|
8720
8780
|
if (prototype !== Object.prototype && prototype !== null)
|
|
8721
8781
|
return true;
|
|
8722
8782
|
return Object.values(value).some((entry) => hasTamperedPrototype(entry));
|
|
8723
8783
|
}
|
|
8724
|
-
function
|
|
8784
|
+
function isRecord9(value) {
|
|
8725
8785
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
8726
8786
|
}
|
|
8727
8787
|
function containerAt(record, path) {
|
|
8728
8788
|
let container = record;
|
|
8729
8789
|
for (const segment of path) {
|
|
8730
8790
|
const next = container[segment];
|
|
8731
|
-
if (!
|
|
8791
|
+
if (!isRecord9(next))
|
|
8732
8792
|
return null;
|
|
8733
8793
|
container = next;
|
|
8734
8794
|
}
|
|
@@ -8839,6 +8899,15 @@ function legacyCategoryDiagnostic(path, renames) {
|
|
|
8839
8899
|
issuePaths: renames.map((rename) => rename.path)
|
|
8840
8900
|
};
|
|
8841
8901
|
}
|
|
8902
|
+
function legacyHarnessDiagnostic(path, renames) {
|
|
8903
|
+
const detail = renames.map((rename) => rename.dropped ? `${rename.path} ignored because ${rename.canonical} is also configured` : `${rename.path} renamed to ${rename.canonical}`).join(", ");
|
|
8904
|
+
return {
|
|
8905
|
+
kind: "deprecated-keys",
|
|
8906
|
+
message: `Deprecated harness block in ${path}: ${detail}. Rename it; the alias is removed in a future release.`,
|
|
8907
|
+
path,
|
|
8908
|
+
issuePaths: renames.map((rename) => rename.path)
|
|
8909
|
+
};
|
|
8910
|
+
}
|
|
8842
8911
|
function loadOmoConfig(options = {}) {
|
|
8843
8912
|
const fileSystem = options.fileSystem ?? DEFAULT_READ_FILE_SYSTEM;
|
|
8844
8913
|
const cwd = options.cwd ?? process.cwd();
|
|
@@ -8861,8 +8930,12 @@ function loadOmoConfig(options = {}) {
|
|
|
8861
8930
|
if (canonicalized.renames.length > 0) {
|
|
8862
8931
|
diagnostics.push(legacyCategoryDiagnostic(candidate.path, canonicalized.renames));
|
|
8863
8932
|
}
|
|
8864
|
-
|
|
8865
|
-
|
|
8933
|
+
const harnessCanonicalized = canonicalizeLegacyHarnessBlocks(canonicalized.document);
|
|
8934
|
+
if (harnessCanonicalized.renames.length > 0) {
|
|
8935
|
+
diagnostics.push(legacyHarnessDiagnostic(candidate.path, harnessCanonicalized.renames));
|
|
8936
|
+
}
|
|
8937
|
+
layers.push({ config: harnessCanonicalized.document, source: loaded.source });
|
|
8938
|
+
merged = mergeOmoConfigRecords(merged, harnessCanonicalized.document);
|
|
8866
8939
|
}
|
|
8867
8940
|
}
|
|
8868
8941
|
const requestedProfile = resolveOmoProfileName({
|
|
@@ -11266,10 +11339,10 @@ function readCatalogMultiAgentVersion(model, cachePath) {
|
|
|
11266
11339
|
} catch {
|
|
11267
11340
|
return null;
|
|
11268
11341
|
}
|
|
11269
|
-
if (!
|
|
11342
|
+
if (!isRecord10(cache) || !Array.isArray(cache.models))
|
|
11270
11343
|
return null;
|
|
11271
11344
|
for (const entry of cache.models) {
|
|
11272
|
-
if (!
|
|
11345
|
+
if (!isRecord10(entry))
|
|
11273
11346
|
continue;
|
|
11274
11347
|
if (entry.slug !== model && entry.id !== model)
|
|
11275
11348
|
continue;
|
|
@@ -11294,7 +11367,7 @@ function readRootModelCatalogPath(config) {
|
|
|
11294
11367
|
const single = config.match(/^\s*model_catalog_json\s*=\s*'([^']+)'/m);
|
|
11295
11368
|
return single?.[1] ?? null;
|
|
11296
11369
|
}
|
|
11297
|
-
function
|
|
11370
|
+
function isRecord10(value) {
|
|
11298
11371
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
11299
11372
|
}
|
|
11300
11373
|
function removeFeatureFlagSetting(config, featureName) {
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/bootstrap/dist/cli.js\" hook session-start",
|
|
9
9
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\bootstrap.ps1\"",
|
|
10
10
|
"timeout": 30,
|
|
11
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
11
|
+
"statusMessage": "(OmO 5.0.0-beta.84) Checking Bootstrap Provisioning"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sisyphuslabs/codex-bootstrap",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.84",
|
|
4
4
|
"description": "Codex SessionStart bootstrap component that provisions LazyCodex runtime dependencies from a detached worker.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"private": true,
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "command",
|
|
9
9
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook pre-tool-use",
|
|
10
10
|
"timeout": 5,
|
|
11
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
11
|
+
"statusMessage": "(OmO 5.0.0-beta.84) Recommending Git Bash MCP"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"type": "command",
|
|
21
21
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
|
|
22
22
|
"timeout": 5,
|
|
23
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
23
|
+
"statusMessage": "(OmO 5.0.0-beta.84) 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 5.0.0-beta.
|
|
11
|
+
"statusMessage": "(OmO 5.0.0-beta.84) Verifying LazyCodex Executor Evidence"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code-yeongyu/codex-lazycodex-executor-verify",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.84",
|
|
4
4
|
"description": "Codex SubagentStop evidence verifier for LazyCodex executor completions.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "npm@11.12.1",
|
|
@@ -84,7 +84,7 @@ sync_latest_source() {
|
|
|
84
84
|
git -C "$DEST" checkout -B "$DEFAULT_BRANCH" FETCH_HEAD
|
|
85
85
|
}
|
|
86
86
|
sync_latest_source code-yeongyu/lazycodex "$LAZYCODEX_SOURCE_ROOT/lazycodex-source"
|
|
87
|
-
sync_latest_source openai/codex "$LAZYCODEX_SOURCE_ROOT/
|
|
87
|
+
sync_latest_source openai/codex "$LAZYCODEX_SOURCE_ROOT/chatgpt-subscription-source"
|
|
88
88
|
```
|
|
89
89
|
4. Create a fresh temporary clone and branch under `${TMPDIR:-/tmp}`. Do not modify the user's current repository for the target fix unless the current repository is itself the requested target and the user explicitly asked for local edits.
|
|
90
90
|
|
|
@@ -58,7 +58,7 @@ sync_latest_source() {
|
|
|
58
58
|
git -C "$DEST" checkout -B "$DEFAULT_BRANCH" FETCH_HEAD
|
|
59
59
|
}
|
|
60
60
|
sync_latest_source code-yeongyu/lazycodex "$LAZYCODEX_SOURCE_ROOT/lazycodex-source"
|
|
61
|
-
sync_latest_source openai/codex "$LAZYCODEX_SOURCE_ROOT/
|
|
61
|
+
sync_latest_source openai/codex "$LAZYCODEX_SOURCE_ROOT/chatgpt-subscription-source"
|
|
62
62
|
```
|
|
63
63
|
|
|
64
64
|
2. Inventory the installed surface. Resolve `CODEX_HOME` (default `~/.codex`), then collect:
|
|
@@ -102,7 +102,7 @@ sync_latest_source openai/codex "$LAZYCODEX_SOURCE_ROOT/openai-codex-source"
|
|
|
102
102
|
| Plugin payload wiring | PASS/WARN/FAIL | [evidence] |
|
|
103
103
|
| Bin links / aliases | PASS/WARN/FAIL | [evidence] |
|
|
104
104
|
| Runtime probe | PASS/WARN/FAIL | [evidence] |
|
|
105
|
-
| Drift vs latest source | PASS/WARN/FAIL | [evidence, citing `$LAZYCODEX_SOURCE_ROOT/lazycodex-source` or `$LAZYCODEX_SOURCE_ROOT/
|
|
105
|
+
| Drift vs latest source | PASS/WARN/FAIL | [evidence, citing `$LAZYCODEX_SOURCE_ROOT/lazycodex-source` or `$LAZYCODEX_SOURCE_ROOT/chatgpt-subscription-source` paths] |
|
|
106
106
|
|
|
107
107
|
### Remediations
|
|
108
108
|
1. [Most important fix first: exact command or config edit, and what it resolves. When Astra readiness is WARN: upgrade Codex to 0.153.1 or newer and relaunch it once so `models_cache.json` picks up `gpt-6-astra`.]
|
|
@@ -124,7 +124,7 @@ Do not:
|
|
|
124
124
|
|
|
125
125
|
- mutate config, installs, or repositories during diagnosis
|
|
126
126
|
- report a verdict without captured evidence
|
|
127
|
-
- compare against remembered source layout instead of `$LAZYCODEX_SOURCE_ROOT/lazycodex-source` and `$LAZYCODEX_SOURCE_ROOT/
|
|
127
|
+
- compare against remembered source layout instead of `$LAZYCODEX_SOURCE_ROOT/lazycodex-source` and `$LAZYCODEX_SOURCE_ROOT/chatgpt-subscription-source`
|
|
128
128
|
- require retired payload paths that the current `.codex-plugin/plugin.json` does not declare
|
|
129
129
|
- force a runtime-probe model unless the user explicitly passed one
|
|
130
130
|
- declare healthy while any probe output was never captured
|
|
@@ -78,14 +78,14 @@ sync_latest_source() {
|
|
|
78
78
|
git -C "$DEST" checkout -B "$DEFAULT_BRANCH" FETCH_HEAD
|
|
79
79
|
}
|
|
80
80
|
sync_latest_source code-yeongyu/lazycodex "$LAZYCODEX_SOURCE_ROOT/lazycodex-source"
|
|
81
|
-
sync_latest_source openai/codex "$LAZYCODEX_SOURCE_ROOT/
|
|
81
|
+
sync_latest_source openai/codex "$LAZYCODEX_SOURCE_ROOT/chatgpt-subscription-source"
|
|
82
82
|
```
|
|
83
83
|
4. Follow the debugging skill far enough to gather runtime evidence:
|
|
84
84
|
- form at least three plausible hypotheses
|
|
85
85
|
- run the smallest reproduction that exercises the real surface
|
|
86
86
|
- confirm the root cause by observing the failing state
|
|
87
87
|
- identify the minimal fix path or maintainer action
|
|
88
|
-
5. Compare runtime evidence with both `$LAZYCODEX_SOURCE_ROOT/lazycodex-source` and `$LAZYCODEX_SOURCE_ROOT/
|
|
88
|
+
5. Compare runtime evidence with both `$LAZYCODEX_SOURCE_ROOT/lazycodex-source` and `$LAZYCODEX_SOURCE_ROOT/chatgpt-subscription-source` before choosing the target repo. Cite exact files, commands, logs, or source paths that support the routing decision.
|
|
89
89
|
6. Choose the target repo:
|
|
90
90
|
- Use `code-yeongyu/lazycodex` when the bug is in LazyCodex integration, distribution, bundled plugin code, skills, hooks, MCP wiring, installer behavior, aliases, marketplace sync, docs, or any behavior that disappears in clean upstream Codex.
|
|
91
91
|
- Use `openai/codex` when the bug reproduces in clean upstream Codex without LazyCodex, or the failing behavior comes from Codex CLI core, plugin API contracts, sandboxing, approvals, config loading, or built-in tool behavior.
|
|
@@ -142,7 +142,7 @@ Write the issue body in English and keep it direct:
|
|
|
142
142
|
- Target repository:
|
|
143
143
|
- Why this belongs there:
|
|
144
144
|
- LazyCodex evidence (runtime + `$LAZYCODEX_SOURCE_ROOT/lazycodex-source`):
|
|
145
|
-
- Upstream Codex source evidence from `$LAZYCODEX_SOURCE_ROOT/
|
|
145
|
+
- Upstream Codex source evidence from `$LAZYCODEX_SOURCE_ROOT/chatgpt-subscription-source`:
|
|
146
146
|
|
|
147
147
|
## Reproduction
|
|
148
148
|
1. [Exact command or UI action]
|
|
@@ -186,7 +186,7 @@ Use this only when a PR is the right artifact, which is only ever for `openai/co
|
|
|
186
186
|
- Target repository:
|
|
187
187
|
- Why this belongs there:
|
|
188
188
|
- LazyCodex evidence (runtime + `$LAZYCODEX_SOURCE_ROOT/lazycodex-source`):
|
|
189
|
-
- Upstream Codex source evidence from `$LAZYCODEX_SOURCE_ROOT/
|
|
189
|
+
- Upstream Codex source evidence from `$LAZYCODEX_SOURCE_ROOT/chatgpt-subscription-source`:
|
|
190
190
|
|
|
191
191
|
## Root Cause
|
|
192
192
|
[Confirmed cause. Cite runtime evidence and source paths.]
|
|
@@ -263,6 +263,6 @@ Do not file:
|
|
|
263
263
|
- a vague issue without reproduction steps
|
|
264
264
|
- an issue that claims a root cause not supported by runtime evidence
|
|
265
265
|
- a duplicate when commenting on an existing issue is enough
|
|
266
|
-
- an issue without checking the latest `$LAZYCODEX_SOURCE_ROOT/lazycodex-source` and `$LAZYCODEX_SOURCE_ROOT/
|
|
266
|
+
- an issue without checking the latest `$LAZYCODEX_SOURCE_ROOT/lazycodex-source` and `$LAZYCODEX_SOURCE_ROOT/chatgpt-subscription-source` checkouts
|
|
267
267
|
- a LazyCodex issue when the bug is proven to reproduce in clean upstream Codex
|
|
268
268
|
- a fix PR without a concrete branch, implemented fix, and verification result
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"version": "5.0.0-beta.
|
|
4
|
-
"inputDigest": "sha256:
|
|
3
|
+
"version": "5.0.0-beta.84",
|
|
4
|
+
"inputDigest": "sha256:2352c5de469837fdff11b099d62ed46ad84c9bceacdee57fff7434cd5fe8731b",
|
|
5
5
|
"outputs": [
|
|
6
6
|
{
|
|
7
7
|
"path": "cli.d.ts",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "command",
|
|
9
9
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
|
|
10
10
|
"timeout": 60,
|
|
11
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
11
|
+
"statusMessage": "(OmO 5.0.0-beta.84) Checking LSP Diagnostics"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"type": "command",
|
|
22
22
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
|
|
23
23
|
"timeout": 5,
|
|
24
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
24
|
+
"statusMessage": "(OmO 5.0.0-beta.84) Resetting LSP Diagnostics Cache"
|
|
25
25
|
}
|
|
26
26
|
]
|
|
27
27
|
}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook session-start",
|
|
9
9
|
"timeout": 10,
|
|
10
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
10
|
+
"statusMessage": "(OmO 5.0.0-beta.84) Loading Project Rules"
|
|
11
11
|
}
|
|
12
12
|
]
|
|
13
13
|
}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"type": "command",
|
|
20
20
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook user-prompt-submit",
|
|
21
21
|
"timeout": 10,
|
|
22
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
22
|
+
"statusMessage": "(OmO 5.0.0-beta.84) Loading Project Rules"
|
|
23
23
|
}
|
|
24
24
|
]
|
|
25
25
|
}
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"type": "command",
|
|
33
33
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
|
|
34
34
|
"timeout": 10,
|
|
35
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
35
|
+
"statusMessage": "(OmO 5.0.0-beta.84) Matching Project Rules"
|
|
36
36
|
}
|
|
37
37
|
]
|
|
38
38
|
}
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"type": "command",
|
|
46
46
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
|
|
47
47
|
"timeout": 10,
|
|
48
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
48
|
+
"statusMessage": "(OmO 5.0.0-beta.84) Resetting Project Rule Cache"
|
|
49
49
|
}
|
|
50
50
|
]
|
|
51
51
|
}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "command",
|
|
9
9
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
|
|
10
10
|
"timeout": 10,
|
|
11
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
11
|
+
"statusMessage": "(OmO 5.0.0-beta.84) Checking Thread Title Hygiene"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code-yeongyu/codex-telemetry",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.84",
|
|
4
4
|
"description": "Codex plugin component that emits omo-codex anonymous daily-active telemetry on SessionStart.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "npm@11.12.1",
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook user-prompt-submit",
|
|
9
9
|
"timeout": 5,
|
|
10
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
10
|
+
"statusMessage": "(OmO 5.0.0-beta.84) Checking Ultrawork Trigger"
|
|
11
11
|
}
|
|
12
12
|
]
|
|
13
13
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code-yeongyu/codex-ultrawork",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.84",
|
|
4
4
|
"description": "Codex plugin that injects the ultrawork orchestration directive and ships LazyCodex planning, review, QA, and gate agent roles.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "npm@11.12.1",
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/ulw-execute-continuation/dist/cli.js\" hook stop",
|
|
9
9
|
"timeout": 10,
|
|
10
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
10
|
+
"statusMessage": "(OmO 5.0.0-beta.84) Checking Ulw-Execute Continuation"
|
|
11
11
|
}
|
|
12
12
|
]
|
|
13
13
|
}
|
|
@@ -1362,12 +1362,24 @@ var REVIEWER_ROLES_BY_SURFACE = {
|
|
|
1362
1362
|
gateReview: "lazycodex-gate-reviewer"
|
|
1363
1363
|
},
|
|
1364
1364
|
"omo-senpi": {
|
|
1365
|
-
codeReview: "omo-
|
|
1366
|
-
manualQa: "omo-
|
|
1367
|
-
gateReview: "omo-
|
|
1365
|
+
codeReview: "omo-native-code-reviewer",
|
|
1366
|
+
manualQa: "omo-native-qa-executor",
|
|
1367
|
+
gateReview: "omo-native-gate-reviewer"
|
|
1368
1368
|
}
|
|
1369
1369
|
};
|
|
1370
|
-
var
|
|
1370
|
+
var LEGACY_REVIEWER_AGENT_ALIASES = {
|
|
1371
|
+
"omo-senpi-code-reviewer": REVIEWER_ROLES_BY_SURFACE["omo-senpi"].codeReview,
|
|
1372
|
+
"omo-senpi-qa-executor": REVIEWER_ROLES_BY_SURFACE["omo-senpi"].manualQa,
|
|
1373
|
+
"omo-senpi-gate-reviewer": REVIEWER_ROLES_BY_SURFACE["omo-senpi"].gateReview
|
|
1374
|
+
};
|
|
1375
|
+
function canonicalReviewerAgentName(reviewer) {
|
|
1376
|
+
return LEGACY_REVIEWER_AGENT_ALIASES[reviewer] ?? reviewer;
|
|
1377
|
+
}
|
|
1378
|
+
var CANONICAL_GATE_REVIEW_NAMES = Object.values(REVIEWER_ROLES_BY_SURFACE).map((roles) => roles.gateReview);
|
|
1379
|
+
var GATE_REVIEWER_AGENT_NAMES = new Set([
|
|
1380
|
+
...CANONICAL_GATE_REVIEW_NAMES,
|
|
1381
|
+
...Object.entries(LEGACY_REVIEWER_AGENT_ALIASES).filter(([, canonical]) => CANONICAL_GATE_REVIEW_NAMES.includes(canonical)).map(([legacy]) => legacy)
|
|
1382
|
+
]);
|
|
1371
1383
|
var REQUIRED_GATE_SECTIONS_BY_SURFACE = {
|
|
1372
1384
|
lazycodex: ["manualQa", "gateReview", "iteration", "criteriaCoverage"],
|
|
1373
1385
|
"omo-senpi": ["manualQa", "gateReview", "iteration", "criteriaCoverage"]
|
|
@@ -4437,11 +4449,12 @@ var SPAWN_TOOL_TOKENS = new Set([
|
|
|
4437
4449
|
]);
|
|
4438
4450
|
var DEFAULT_FANOUT_LIMIT = 24;
|
|
4439
4451
|
var DEFAULT_REVIEW_SPAWN_LIMIT = 3;
|
|
4440
|
-
var GATE_MESSAGE_PATTERN = /lazycodex-gate-reviewer|omo-senpi-gate-reviewer|final gate review/i;
|
|
4452
|
+
var GATE_MESSAGE_PATTERN = /lazycodex-gate-reviewer|omo-native-gate-reviewer|omo-senpi-gate-reviewer|final gate review/i;
|
|
4441
4453
|
var REVIEW_AGENT_TYPES = [
|
|
4442
4454
|
...Object.values(REVIEWER_ROLES_BY_SURFACE).map((roles) => roles.gateReview),
|
|
4443
4455
|
...Object.values(REVIEWER_ROLES_BY_SURFACE).map((roles) => roles.codeReview),
|
|
4444
|
-
...Object.values(REVIEWER_ROLES_BY_SURFACE).map((roles) => roles.manualQa)
|
|
4456
|
+
...Object.values(REVIEWER_ROLES_BY_SURFACE).map((roles) => roles.manualQa),
|
|
4457
|
+
...Object.keys(LEGACY_REVIEWER_AGENT_ALIASES)
|
|
4445
4458
|
];
|
|
4446
4459
|
var REVIEW_AGENT_TYPE_SET = new Set(REVIEW_AGENT_TYPES);
|
|
4447
4460
|
function applySpawnGuards(payload, options = {}) {
|
|
@@ -4623,16 +4636,17 @@ function reviewAgentType(toolInput) {
|
|
|
4623
4636
|
return GATE_MESSAGE_PATTERN.test(message) ? reviewerRolesFor(resolveToolkitSurface()).gateReview : null;
|
|
4624
4637
|
}
|
|
4625
4638
|
function activeSurfaceReviewerAlias(reviewer) {
|
|
4639
|
+
const canonical = canonicalReviewerAgentName(reviewer);
|
|
4626
4640
|
const activeRoles = reviewerRolesFor(resolveToolkitSurface());
|
|
4627
4641
|
for (const roles of Object.values(REVIEWER_ROLES_BY_SURFACE)) {
|
|
4628
|
-
if (
|
|
4642
|
+
if (canonical === roles.codeReview)
|
|
4629
4643
|
return activeRoles.codeReview;
|
|
4630
|
-
if (
|
|
4644
|
+
if (canonical === roles.manualQa)
|
|
4631
4645
|
return activeRoles.manualQa;
|
|
4632
|
-
if (
|
|
4646
|
+
if (canonical === roles.gateReview)
|
|
4633
4647
|
return activeRoles.gateReview;
|
|
4634
4648
|
}
|
|
4635
|
-
return
|
|
4649
|
+
return canonical;
|
|
4636
4650
|
}
|
|
4637
4651
|
function deny(reason) {
|
|
4638
4652
|
return `${JSON.stringify({
|