lazycodex-ai 5.0.0-beta.81 → 5.0.0-beta.83
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 +439 -98
- 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 +439 -98
- package/package.json +2 -1
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +111 -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/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/test/sync-skills-test-support.mjs +1 -0
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +117 -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-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.83",
|
|
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",
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"packages/openclaw-core",
|
|
25
25
|
"packages/boulder-state",
|
|
26
26
|
"packages/memory-core",
|
|
27
|
+
"packages/isolation-core",
|
|
27
28
|
"packages/telemetry-core",
|
|
28
29
|
"packages/claude-code-compat-core",
|
|
29
30
|
"packages/skills-loader-core",
|
|
@@ -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({
|
|
@@ -7315,6 +7317,31 @@ var OmoTaskTeamSettingsSchema = object({
|
|
|
7315
7317
|
var OmoTaskWarningsSchema = object({
|
|
7316
7318
|
unavailable_categories: boolean2().default(true)
|
|
7317
7319
|
}).strict();
|
|
7320
|
+
var IsolationBackendKindSchema = _enum([
|
|
7321
|
+
"auto",
|
|
7322
|
+
"apfs",
|
|
7323
|
+
"btrfs",
|
|
7324
|
+
"zfs",
|
|
7325
|
+
"reflink",
|
|
7326
|
+
"overlayfs",
|
|
7327
|
+
"block-clone",
|
|
7328
|
+
"rcopy"
|
|
7329
|
+
]);
|
|
7330
|
+
var OmoTaskIsolationSchema = object({
|
|
7331
|
+
enabled: boolean2().default(false),
|
|
7332
|
+
backend: IsolationBackendKindSchema.default("auto"),
|
|
7333
|
+
apply: boolean2().default(true),
|
|
7334
|
+
merge: _enum(["patch", "branch"]).default("patch"),
|
|
7335
|
+
commits: _enum(["generic", "ai"]).default("generic")
|
|
7336
|
+
}).strict();
|
|
7337
|
+
var isolationDefaults = OmoTaskIsolationSchema.parse({});
|
|
7338
|
+
var OmoTaskIsolationLayerSchema = object({
|
|
7339
|
+
enabled: boolean2().optional(),
|
|
7340
|
+
backend: IsolationBackendKindSchema.optional(),
|
|
7341
|
+
apply: boolean2().optional(),
|
|
7342
|
+
merge: _enum(["patch", "branch"]).optional(),
|
|
7343
|
+
commits: _enum(["generic", "ai"]).optional()
|
|
7344
|
+
}).strict();
|
|
7318
7345
|
var OmoTaskDagSettingsSchema = object({
|
|
7319
7346
|
max_nodes_per_run: number2().int().positive().default(64),
|
|
7320
7347
|
max_runs_per_session: number2().int().positive().default(16),
|
|
@@ -7326,6 +7353,7 @@ var OmoTaskDagSettingsSchema = object({
|
|
|
7326
7353
|
max_prompt_bytes: number2().int().positive().default(262144)
|
|
7327
7354
|
}).strict();
|
|
7328
7355
|
var OmoTaskSettingsSchema = object({
|
|
7356
|
+
isolation: OmoTaskIsolationSchema.default(isolationDefaults),
|
|
7329
7357
|
default_execution_mode: _enum(["auto", "in-process", "process"]).default("auto"),
|
|
7330
7358
|
process_runner: _enum(["host", "child-process"]).default("host"),
|
|
7331
7359
|
host_engine_policy: _enum(["upgrade", "fallback"]).default("upgrade"),
|
|
@@ -7374,6 +7402,7 @@ var OmoTaskWarningsLayerSchema = object({
|
|
|
7374
7402
|
unavailable_categories: boolean2().optional()
|
|
7375
7403
|
}).strict();
|
|
7376
7404
|
var OmoTaskSettingsLayerSchema = object({
|
|
7405
|
+
isolation: OmoTaskIsolationLayerSchema.optional(),
|
|
7377
7406
|
default_execution_mode: _enum(["auto", "in-process", "process"]).optional(),
|
|
7378
7407
|
process_runner: _enum(["host", "child-process"]).optional(),
|
|
7379
7408
|
host_engine_policy: _enum(["upgrade", "fallback"]).optional(),
|
|
@@ -7505,6 +7534,7 @@ var OmoConfigProfileSchema = object({
|
|
|
7505
7534
|
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
7506
7535
|
disabled_skills: OmoDisabledSkillsSchema.optional(),
|
|
7507
7536
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
7537
|
+
"[native]": OmoTypedHarnessConfigSchema.optional(),
|
|
7508
7538
|
"[senpi]": OmoTypedHarnessConfigSchema.optional(),
|
|
7509
7539
|
"[codex]": OmoTypedHarnessConfigSchema.optional()
|
|
7510
7540
|
}).strict();
|
|
@@ -7523,6 +7553,7 @@ var OmoConfigSchema = object({
|
|
|
7523
7553
|
telemetry: OmoTelemetrySettingsSchema.optional(),
|
|
7524
7554
|
disabled_skills: OmoDisabledSkillsSchema.optional(),
|
|
7525
7555
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
7556
|
+
"[native]": OmoTypedHarnessConfigSchema.optional(),
|
|
7526
7557
|
"[senpi]": OmoTypedHarnessConfigSchema.optional(),
|
|
7527
7558
|
"[codex]": OmoTypedHarnessConfigSchema.optional(),
|
|
7528
7559
|
profiles: record(string2(), OmoConfigProfileSchema).default({}),
|
|
@@ -7544,6 +7575,7 @@ var OmoConfigLayerSchema = object({
|
|
|
7544
7575
|
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
7545
7576
|
disabled_skills: OmoDisabledSkillsSchema.optional(),
|
|
7546
7577
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
7578
|
+
"[native]": OmoTypedHarnessConfigSchema.optional(),
|
|
7547
7579
|
"[senpi]": OmoTypedHarnessConfigSchema.optional(),
|
|
7548
7580
|
"[codex]": OmoTypedHarnessConfigSchema.optional(),
|
|
7549
7581
|
profiles: record(string2(), OmoConfigProfileSchema).optional(),
|
|
@@ -7607,6 +7639,54 @@ function canonicalizeLegacyCategoryNames(document) {
|
|
|
7607
7639
|
return { document: canonicalized, renames };
|
|
7608
7640
|
}
|
|
7609
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
|
+
|
|
7610
7690
|
// ../../../node_modules/.bun/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/scanner.js
|
|
7611
7691
|
function createScanner(text, ignoreTrivia = false) {
|
|
7612
7692
|
const len = text.length;
|
|
@@ -8582,7 +8662,7 @@ function resolveOmoConfigPaths(options) {
|
|
|
8582
8662
|
}
|
|
8583
8663
|
|
|
8584
8664
|
// ../../omo-config-core/src/loader/resolution.ts
|
|
8585
|
-
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));
|
|
8586
8666
|
function profileName(value) {
|
|
8587
8667
|
return value === "" ? undefined : value;
|
|
8588
8668
|
}
|
|
@@ -8611,7 +8691,13 @@ function withoutControlKeys(config) {
|
|
|
8611
8691
|
function harnessLayer(config, harness) {
|
|
8612
8692
|
if (harness === undefined)
|
|
8613
8693
|
return {};
|
|
8614
|
-
|
|
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;
|
|
8615
8701
|
}
|
|
8616
8702
|
function resolveOmoConfigView(options) {
|
|
8617
8703
|
const profiles = toRecord(options.config["profiles"]);
|
|
@@ -8662,6 +8748,7 @@ var DEFAULT_RAW_CONFIG = {
|
|
|
8662
8748
|
function stripResolutionControlKeys(config) {
|
|
8663
8749
|
const {
|
|
8664
8750
|
"[codex]": _codex,
|
|
8751
|
+
"[native]": _native,
|
|
8665
8752
|
"[opencode]": _opencode,
|
|
8666
8753
|
"[senpi]": _senpi,
|
|
8667
8754
|
profiles: _profiles,
|
|
@@ -8687,21 +8774,21 @@ function hasUnsafeUnrecognizedKey(issues) {
|
|
|
8687
8774
|
function hasTamperedPrototype(value) {
|
|
8688
8775
|
if (Array.isArray(value))
|
|
8689
8776
|
return value.some((entry) => hasTamperedPrototype(entry));
|
|
8690
|
-
if (!
|
|
8777
|
+
if (!isRecord9(value))
|
|
8691
8778
|
return false;
|
|
8692
8779
|
const prototype = Object.getPrototypeOf(value);
|
|
8693
8780
|
if (prototype !== Object.prototype && prototype !== null)
|
|
8694
8781
|
return true;
|
|
8695
8782
|
return Object.values(value).some((entry) => hasTamperedPrototype(entry));
|
|
8696
8783
|
}
|
|
8697
|
-
function
|
|
8784
|
+
function isRecord9(value) {
|
|
8698
8785
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
8699
8786
|
}
|
|
8700
8787
|
function containerAt(record, path) {
|
|
8701
8788
|
let container = record;
|
|
8702
8789
|
for (const segment of path) {
|
|
8703
8790
|
const next = container[segment];
|
|
8704
|
-
if (!
|
|
8791
|
+
if (!isRecord9(next))
|
|
8705
8792
|
return null;
|
|
8706
8793
|
container = next;
|
|
8707
8794
|
}
|
|
@@ -8812,6 +8899,15 @@ function legacyCategoryDiagnostic(path, renames) {
|
|
|
8812
8899
|
issuePaths: renames.map((rename) => rename.path)
|
|
8813
8900
|
};
|
|
8814
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
|
+
}
|
|
8815
8911
|
function loadOmoConfig(options = {}) {
|
|
8816
8912
|
const fileSystem = options.fileSystem ?? DEFAULT_READ_FILE_SYSTEM;
|
|
8817
8913
|
const cwd = options.cwd ?? process.cwd();
|
|
@@ -8834,8 +8930,12 @@ function loadOmoConfig(options = {}) {
|
|
|
8834
8930
|
if (canonicalized.renames.length > 0) {
|
|
8835
8931
|
diagnostics.push(legacyCategoryDiagnostic(candidate.path, canonicalized.renames));
|
|
8836
8932
|
}
|
|
8837
|
-
|
|
8838
|
-
|
|
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);
|
|
8839
8939
|
}
|
|
8840
8940
|
}
|
|
8841
8941
|
const requestedProfile = resolveOmoProfileName({
|
|
@@ -11239,10 +11339,10 @@ function readCatalogMultiAgentVersion(model, cachePath) {
|
|
|
11239
11339
|
} catch {
|
|
11240
11340
|
return null;
|
|
11241
11341
|
}
|
|
11242
|
-
if (!
|
|
11342
|
+
if (!isRecord10(cache) || !Array.isArray(cache.models))
|
|
11243
11343
|
return null;
|
|
11244
11344
|
for (const entry of cache.models) {
|
|
11245
|
-
if (!
|
|
11345
|
+
if (!isRecord10(entry))
|
|
11246
11346
|
continue;
|
|
11247
11347
|
if (entry.slug !== model && entry.id !== model)
|
|
11248
11348
|
continue;
|
|
@@ -11267,7 +11367,7 @@ function readRootModelCatalogPath(config) {
|
|
|
11267
11367
|
const single = config.match(/^\s*model_catalog_json\s*=\s*'([^']+)'/m);
|
|
11268
11368
|
return single?.[1] ?? null;
|
|
11269
11369
|
}
|
|
11270
|
-
function
|
|
11370
|
+
function isRecord10(value) {
|
|
11271
11371
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
11272
11372
|
}
|
|
11273
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.83) 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.83",
|
|
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.83) 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.83) 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.83) 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.83",
|
|
4
4
|
"description": "Codex SubagentStop evidence verifier for LazyCodex executor completions.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "npm@11.12.1",
|
|
@@ -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.83",
|
|
4
|
+
"inputDigest": "sha256:c2a4d0a5733ce0a84a7b045a3c294a3b1b17f06e421e60a6f19ce486a03aaa2f",
|
|
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.83) 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.83) 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.83) 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.83) 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.83) 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.83) 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.83) 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.83",
|
|
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.83) 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.83",
|
|
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.83) 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({
|
|
@@ -7,7 +7,7 @@ import { readUlwLoopPlanSync } from "./plan-io.js";
|
|
|
7
7
|
import { atomicWriteJson, isNonEmptyFile, readAdmissionBreaker, readCount, readCounts } from "./spawn-budget-io.js";
|
|
8
8
|
import { spawnRoleDenial } from "./spawn-role-guard.js";
|
|
9
9
|
import { isStateLockTimeout, withStateLockSync } from "./state-lock.js";
|
|
10
|
-
import { GATE_REVIEWER_AGENT_NAMES, REVIEWER_ROLES_BY_SURFACE, resolveToolkitSurface, reviewerRolesFor, } from "./surface.js";
|
|
10
|
+
import { canonicalReviewerAgentName, GATE_REVIEWER_AGENT_NAMES, LEGACY_REVIEWER_AGENT_ALIASES, REVIEWER_ROLES_BY_SURFACE, resolveToolkitSurface, reviewerRolesFor, } from "./surface.js";
|
|
11
11
|
// spawn_agent = v1; collaborationspawn_agent = the delimiter-free flattened v2
|
|
12
12
|
// hook token from codex-rs hook_names.rs; collaboration.spawn_agent = the
|
|
13
13
|
// dotted token observed live in the task-1 probe (hook-tool-tokens.txt).
|
|
@@ -19,11 +19,12 @@ const SPAWN_TOOL_TOKENS = new Set([
|
|
|
19
19
|
]);
|
|
20
20
|
export const DEFAULT_FANOUT_LIMIT = 24;
|
|
21
21
|
const DEFAULT_REVIEW_SPAWN_LIMIT = 3;
|
|
22
|
-
const GATE_MESSAGE_PATTERN = /lazycodex-gate-reviewer|omo-senpi-gate-reviewer|final gate review/i;
|
|
22
|
+
const GATE_MESSAGE_PATTERN = /lazycodex-gate-reviewer|omo-native-gate-reviewer|omo-senpi-gate-reviewer|final gate review/i;
|
|
23
23
|
const REVIEW_AGENT_TYPES = [
|
|
24
24
|
...Object.values(REVIEWER_ROLES_BY_SURFACE).map((roles) => roles.gateReview),
|
|
25
25
|
...Object.values(REVIEWER_ROLES_BY_SURFACE).map((roles) => roles.codeReview),
|
|
26
26
|
...Object.values(REVIEWER_ROLES_BY_SURFACE).map((roles) => roles.manualQa),
|
|
27
|
+
...Object.keys(LEGACY_REVIEWER_AGENT_ALIASES),
|
|
27
28
|
];
|
|
28
29
|
const REVIEW_AGENT_TYPE_SET = new Set(REVIEW_AGENT_TYPES);
|
|
29
30
|
export function applySpawnGuards(payload, options = {}) {
|
|
@@ -230,16 +231,17 @@ function reviewAgentType(toolInput) {
|
|
|
230
231
|
return GATE_MESSAGE_PATTERN.test(message) ? reviewerRolesFor(resolveToolkitSurface()).gateReview : null;
|
|
231
232
|
}
|
|
232
233
|
function activeSurfaceReviewerAlias(reviewer) {
|
|
234
|
+
const canonical = canonicalReviewerAgentName(reviewer);
|
|
233
235
|
const activeRoles = reviewerRolesFor(resolveToolkitSurface());
|
|
234
236
|
for (const roles of Object.values(REVIEWER_ROLES_BY_SURFACE)) {
|
|
235
|
-
if (
|
|
237
|
+
if (canonical === roles.codeReview)
|
|
236
238
|
return activeRoles.codeReview;
|
|
237
|
-
if (
|
|
239
|
+
if (canonical === roles.manualQa)
|
|
238
240
|
return activeRoles.manualQa;
|
|
239
|
-
if (
|
|
241
|
+
if (canonical === roles.gateReview)
|
|
240
242
|
return activeRoles.gateReview;
|
|
241
243
|
}
|
|
242
|
-
return
|
|
244
|
+
return canonical;
|
|
243
245
|
}
|
|
244
246
|
function deny(reason) {
|
|
245
247
|
return `${JSON.stringify({
|
|
@@ -5,6 +5,8 @@ export interface UlwLoopReviewerRoles {
|
|
|
5
5
|
readonly gateReview: string;
|
|
6
6
|
}
|
|
7
7
|
export declare const REVIEWER_ROLES_BY_SURFACE: Readonly<Record<UlwLoopToolkitSurface, UlwLoopReviewerRoles>>;
|
|
8
|
+
export declare const LEGACY_REVIEWER_AGENT_ALIASES: Readonly<Record<string, string>>;
|
|
9
|
+
export declare function canonicalReviewerAgentName(reviewer: string): string;
|
|
8
10
|
export declare const GATE_REVIEWER_AGENT_NAMES: ReadonlySet<string>;
|
|
9
11
|
export type UlwLoopGateSection = "codeReview" | "manualQa" | "gateReview" | "iteration" | "criteriaCoverage";
|
|
10
12
|
export declare const REQUIRED_GATE_SECTIONS_BY_SURFACE: Readonly<Record<UlwLoopToolkitSurface, readonly UlwLoopGateSection[]>>;
|