oh-my-opencode 5.0.0-beta.52 → 5.0.0-beta.53
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 +11 -18
- package/README.ko.md +10 -17
- package/README.md +11 -18
- package/README.ru.md +11 -18
- package/README.zh-cn.md +11 -18
- package/dist/cli/index.js +109 -42
- package/dist/cli-node/index.js +109 -42
- package/dist/index.js +1267 -1197
- package/dist/skills/refactor/SKILL.md +3 -3
- package/dist/skills/review-work/SKILL.md +1 -1
- package/dist/skills/ulw-execute/SKILL.md +5 -5
- package/dist/tui.js +73 -6
- package/package.json +14 -14
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -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/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/hooks/hooks.json +5 -5
- package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
- package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/package-lock.json +12 -12
- package/packages/omo-codex/plugin/package.json +1 -1
- package/packages/omo-codex/plugin/skills/refactor/SKILL.md +3 -3
- package/packages/omo-codex/plugin/skills/ulw-execute/SKILL.md +5 -5
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +2 -2
- package/packages/shared-skills/skills/refactor/SKILL.md +3 -3
- package/packages/shared-skills/skills/review-work/SKILL.md +1 -1
- package/packages/shared-skills/skills/ulw-execute/SKILL.md +5 -5
|
@@ -684,7 +684,7 @@ Record the chosen path in the TodoWrite list.
|
|
|
684
684
|
|
|
685
685
|
Rationale for this composition:
|
|
686
686
|
- **4 workers = team mode's parallel cap.** 5+ just queues.
|
|
687
|
-
- **No verifier team member.** Verification needs \`deep\` reasoning (or \`unspecified-high\` fallback). In-team category routing downcasts to
|
|
687
|
+
- **No verifier team member.** Verification needs \`deep\` reasoning (or \`unspecified-high\` fallback). In-team category routing downcasts to the category worker, which is weaker than required — the verifier runs OUTSIDE the team as a \`task(category="deep")\`.
|
|
688
688
|
- **quick × 2** for mechanical edits, **unspecified-low × 2** for reasoning edits — mirrors the plan's split.
|
|
689
689
|
|
|
690
690
|
**Team lifecycle** (one team, reused until Phase 6 cleanup):
|
|
@@ -713,7 +713,7 @@ Rationale for this composition:
|
|
|
713
713
|
While any team task is \`pending | claimed | in_progress\`:
|
|
714
714
|
|
|
715
715
|
- Wait for \`<system-reminder>\` or member messages. Avoid tight polling; a single \`team_status\` check is acceptable if no notification arrives within roughly 10 seconds of expected completion.
|
|
716
|
-
- On a worker completion report, immediately dispatch an **external verifier** — verification runs OUTSIDE the team because team-member category routing downcasts to
|
|
716
|
+
- On a worker completion report, immediately dispatch an **external verifier** — verification runs OUTSIDE the team because team-member category routing downcasts to the category worker:
|
|
717
717
|
\`\`\`
|
|
718
718
|
task(
|
|
719
719
|
category="deep",
|
|
@@ -750,5 +750,5 @@ Append to the 6.6 summary a "Dispatch path" line and, when team path was used, t
|
|
|
750
750
|
- Do not inline the Intent Card or verify-spec into task descriptions — rely on the broadcasts.
|
|
751
751
|
- Do not recreate the team mid-session.
|
|
752
752
|
- Do not run tests from Lead — the external verifier owns that lane.
|
|
753
|
-
- Do not put \`oracle\` / \`librarian\` / \`deep\` into the team spec —
|
|
753
|
+
- Do not put \`oracle\` / \`librarian\` / \`deep\` into the team spec — curated read-only agents are team-ineligible, and \`deep\` under category routing downcasts to the category worker. Use them via \`task()\` outside the team when needed.
|
|
754
754
|
`
|
|
@@ -16,7 +16,7 @@ This skill may include examples copied from the OpenCode harness. In Codex, do n
|
|
|
16
16
|
| `background_output(task_id="...")` | `multi_agent_v1.wait_agent(...)` for mailbox signals |
|
|
17
17
|
| `team_*(...)` | Use Codex native subagents via `multi_agent_v1.spawn_agent` and `multi_agent_v1.wait_agent`; use `multi_agent_v1.send_input` and `multi_agent_v1.close_agent` only when exposed in the active tools list |
|
|
18
18
|
|
|
19
|
-
Role-specific behavior must be described in a self-contained `message`. Use `fork_context: false` to start the child with only the initial prompt (no parent history); use `fork_context: true` only when full parent history is truly required. Include any required conversation context, files, diffs, constraints, and requested skill names directly in the spawned agent's `message`. OMO installs these selectable agent roles into `~/.codex/agents/`: `explorer`, `librarian`, `plan`, `momus`, `metis`, `lazycodex-code-reviewer`, `lazycodex-qa-executor`, and `lazycodex-gate-reviewer` — pass the matching name as `agent_type` so the child gets that role's model and instructions. If the spawn tool exposes no `agent_type` parameter, omit it and describe the role inside `message`. If a code block below conflicts with this section, this section wins.
|
|
19
|
+
Role-specific behavior must be described in a self-contained `message`. Use `fork_context: false` to start the child with only the initial prompt (no parent history); use `fork_context: true` only when full parent history is truly required. Include any required conversation context, files, diffs, constraints, and requested skill names directly in the spawned agent's `message`. OMO installs these selectable agent roles into `~/.codex/agents/`: `explorer`, `librarian`, `plan`, `momus`, `metis`, `lazycodex-code-reviewer`, `lazycodex-qa-executor`, and `lazycodex-gate-reviewer` — pass the matching name as `agent_type` so the child gets that role's model and instructions. If the spawn tool exposes no `agent_type` parameter, omit it and describe the role inside `message`. If a code block below conflicts with this section, this section wins. <!-- retired-name-allowed -->
|
|
20
20
|
|
|
21
21
|
Codex exposes ONE of two subagent tool surfaces per session; check your own tool list and route accordingly. If `multi_agent_v1.*` tools exist, use the table above as written. If instead a flat `spawn_agent` with a required `task_name` exists (`multi_agent_v2`), rewrite every `multi_agent_v1.*` example: `multi_agent_v1.spawn_agent({...,"fork_context":false})` becomes `spawn_agent({"task_name":"<lowercase_digits_underscores>","message":...,"agent_type":...,"fork_turns":"none"})` (`"all"` only when full parent history is truly required); `send_input` becomes `send_message`; do not call `close_agent`/`resume_agent` (finished agents end on their own; `followup_task` re-tasks one, `interrupt_agent` stops one); `wait_agent` takes only `timeout_ms` and returns on any child mailbox activity. `agent_type` works the same on both surfaces. If a code block below conflicts with this section, this section wins.
|
|
22
22
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ulw-execute
|
|
3
|
-
description: "Executes a written
|
|
3
|
+
description: "Executes a written ulw-plan work plan with Boulder state, evidence ledger, worktree discipline, and parallel subagents. Use when the user says ulw-execute or asks to run a .omo/plans plan."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
## ABSOLUTE RULE: YOU ARE AN ORCHESTRATOR — NEVER THE IMPLEMENTER
|
|
@@ -33,7 +33,7 @@ Plan and reviewer agents may run for a long time: spawn them in the background a
|
|
|
33
33
|
|
|
34
34
|
# ulw-execute
|
|
35
35
|
|
|
36
|
-
Execute a
|
|
36
|
+
Execute a work plan until every top-level checkbox is complete. This skill pairs with the harness's ulw-execute continuation hook, which re-injects the next turn while `.omo/boulder.json` says this `codex:<session_id>` still has unchecked plan work.
|
|
37
37
|
|
|
38
38
|
## Usage
|
|
39
39
|
|
|
@@ -57,7 +57,7 @@ Do ALL of this immediately after the plan is selected, BEFORE the first implemen
|
|
|
57
57
|
## Phase 1: Select the plan
|
|
58
58
|
|
|
59
59
|
1. Read `.omo/boulder.json` if it exists.
|
|
60
|
-
2. List
|
|
60
|
+
2. List work plan files under `.omo/plans/`.
|
|
61
61
|
3. If `plan-name` was provided, select the matching plan.
|
|
62
62
|
4. If exactly one active or paused Boulder work exists for this session, resume it.
|
|
63
63
|
5. If no active work exists and exactly one plan exists, select it.
|
|
@@ -69,7 +69,7 @@ Do ALL of this immediately after the plan is selected, BEFORE the first implemen
|
|
|
69
69
|
When the user explicitly said `start work` / `$ulw-execute` and no selectable plan exists, treat that phrase as approval: bootstrap `ulw-plan` to create the approved plan before execution and implementation, instead of stalling or asking for generic approval again. A brief or notes file without waves, checkboxes, and acceptance criteria is NOT decision-complete — enter this bootstrap too.
|
|
70
70
|
|
|
71
71
|
1. Invoke the `ulw-plan` skill from the current request and require its dynamic adversarial workflow: collect, verify, design, adversarial plan-review, synthesize.
|
|
72
|
-
2. The generated
|
|
72
|
+
2. The generated work plan must be saved under `.omo/plans/<slug>.md` before implementation or Boulder state writes that point at plan work.
|
|
73
73
|
3. Use maximum safe parallelism in the generated plan: independent files/tasks fan out; same-file writes, shared state, and named dependencies serialize.
|
|
74
74
|
4. Preserve safety boundaries. Ask one focused question only when the objective is missing, destructive, or has a safety/product ambiguity that repository exploration cannot resolve.
|
|
75
75
|
5. After the plan exists, continue directly to Phase 2.
|
|
@@ -181,7 +181,7 @@ For each checkbox, complete all five gates before marking it done:
|
|
|
181
181
|
|
|
182
182
|
Append evidence to `.omo/ulw-execute/ledger.jsonl`, one JSON object per line. Include at least `event`, `plan`, `task`, `session_id`, `commands`, `artifact`, `adversarial_classes`, and `cleanup` fields. `adversarial_classes` lists each probed class with its observable result and each ruled-out class with a one-line reason.
|
|
183
183
|
|
|
184
|
-
###
|
|
184
|
+
### Completion contract
|
|
185
185
|
|
|
186
186
|
A worker done claim is never final: each implementation sub-task returns a `DoneClaim`, a different context runs `AdversarialVerify` probing or reproducing the claim, failures loop back to the executor, and only a confirmed verifier verdict becomes `FullyDone`.
|
|
187
187
|
|
package/dist/tui.js
CHANGED
|
@@ -68206,6 +68206,25 @@ var init_model_catalog = __esm(() => {
|
|
|
68206
68206
|
OmoModelCatalogLayerSchema = record(string2(), OmoModelCatalogEntryLayerSchema);
|
|
68207
68207
|
});
|
|
68208
68208
|
|
|
68209
|
+
// packages/omo-config-core/src/schema/model-profile.ts
|
|
68210
|
+
function isRecord8(value) {
|
|
68211
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
68212
|
+
}
|
|
68213
|
+
var OmoModelProfileInputSchema, OmoModelProfileSchema, OmoModelProfilesSchema, OmoModelProfileLayerInputSchema, OmoModelProfileLayerSchema, OmoModelProfilesLayerSchema;
|
|
68214
|
+
var init_model_profile = __esm(() => {
|
|
68215
|
+
init_zod();
|
|
68216
|
+
init_fallback_models();
|
|
68217
|
+
OmoModelProfileInputSchema = object({
|
|
68218
|
+
display_name: string2().optional(),
|
|
68219
|
+
models: array(union([string2(), OmoFallbackModelObjectSchema])).optional()
|
|
68220
|
+
}).strict();
|
|
68221
|
+
OmoModelProfileSchema = preprocess((value) => isRecord8(value) ? normalizeLegacyModelFields(value) : value, OmoModelProfileInputSchema);
|
|
68222
|
+
OmoModelProfilesSchema = record(string2(), OmoModelProfileSchema);
|
|
68223
|
+
OmoModelProfileLayerInputSchema = OmoModelProfileInputSchema.partial();
|
|
68224
|
+
OmoModelProfileLayerSchema = preprocess((value) => isRecord8(value) ? normalizeLegacyModelFields(value) : value, OmoModelProfileLayerInputSchema);
|
|
68225
|
+
OmoModelProfilesLayerSchema = record(string2(), OmoModelProfileLayerSchema);
|
|
68226
|
+
});
|
|
68227
|
+
|
|
68209
68228
|
// packages/omo-config-core/src/schema/task.ts
|
|
68210
68229
|
import { availableParallelism } from "os";
|
|
68211
68230
|
function resolveOmoTaskSettings(input, resolveParallelism = availableParallelism) {
|
|
@@ -68398,6 +68417,7 @@ var init_config = __esm(() => {
|
|
|
68398
68417
|
init_git_master();
|
|
68399
68418
|
init_memory();
|
|
68400
68419
|
init_model_catalog();
|
|
68420
|
+
init_model_profile();
|
|
68401
68421
|
init_task();
|
|
68402
68422
|
init_team();
|
|
68403
68423
|
init_telemetry();
|
|
@@ -68411,6 +68431,8 @@ var init_config = __esm(() => {
|
|
|
68411
68431
|
task: OmoTaskSettingsLayerSchema.optional(),
|
|
68412
68432
|
teams: OmoTeamsConfigLayerSchema.optional(),
|
|
68413
68433
|
models: OmoModelCatalogLayerSchema.optional(),
|
|
68434
|
+
model_profiles: OmoModelProfilesLayerSchema.optional(),
|
|
68435
|
+
model_profile: string2().optional(),
|
|
68414
68436
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
68415
68437
|
telemetry: OmoTelemetrySettingsLayerSchema.optional()
|
|
68416
68438
|
}).strict();
|
|
@@ -68422,6 +68444,8 @@ var init_config = __esm(() => {
|
|
|
68422
68444
|
task: OmoTaskSettingsLayerSchema.optional(),
|
|
68423
68445
|
teams: OmoTeamsConfigLayerSchema.optional(),
|
|
68424
68446
|
models: OmoModelCatalogLayerSchema.optional(),
|
|
68447
|
+
model_profiles: OmoModelProfilesLayerSchema.optional(),
|
|
68448
|
+
model_profile: string2().optional(),
|
|
68425
68449
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
68426
68450
|
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
68427
68451
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
@@ -68437,6 +68461,8 @@ var init_config = __esm(() => {
|
|
|
68437
68461
|
task: OmoTaskSettingsSchema.optional(),
|
|
68438
68462
|
teams: OmoTeamsConfigSchema.optional(),
|
|
68439
68463
|
models: OmoModelCatalogSchema.optional(),
|
|
68464
|
+
model_profiles: OmoModelProfilesSchema.optional(),
|
|
68465
|
+
model_profile: string2().optional(),
|
|
68440
68466
|
memory: OmoMemorySettingsSchema.optional(),
|
|
68441
68467
|
telemetry: OmoTelemetrySettingsSchema.optional(),
|
|
68442
68468
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
@@ -68455,6 +68481,8 @@ var init_config = __esm(() => {
|
|
|
68455
68481
|
task: OmoTaskSettingsLayerSchema.optional(),
|
|
68456
68482
|
teams: OmoTeamsConfigLayerSchema.optional(),
|
|
68457
68483
|
models: OmoModelCatalogLayerSchema.optional(),
|
|
68484
|
+
model_profiles: OmoModelProfilesLayerSchema.optional(),
|
|
68485
|
+
model_profile: string2().optional(),
|
|
68458
68486
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
68459
68487
|
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
68460
68488
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
@@ -68477,6 +68505,7 @@ var init_schema = __esm(() => {
|
|
|
68477
68505
|
init_harness();
|
|
68478
68506
|
init_memory();
|
|
68479
68507
|
init_model_catalog();
|
|
68508
|
+
init_model_profile();
|
|
68480
68509
|
init_model_ref();
|
|
68481
68510
|
init_task();
|
|
68482
68511
|
init_team();
|
|
@@ -68730,21 +68759,21 @@ function hasUnsafeUnrecognizedKey(issues) {
|
|
|
68730
68759
|
function hasTamperedPrototype(value) {
|
|
68731
68760
|
if (Array.isArray(value))
|
|
68732
68761
|
return value.some((entry) => hasTamperedPrototype(entry));
|
|
68733
|
-
if (!
|
|
68762
|
+
if (!isRecord9(value))
|
|
68734
68763
|
return false;
|
|
68735
68764
|
const prototype = Object.getPrototypeOf(value);
|
|
68736
68765
|
if (prototype !== Object.prototype && prototype !== null)
|
|
68737
68766
|
return true;
|
|
68738
68767
|
return Object.values(value).some((entry) => hasTamperedPrototype(entry));
|
|
68739
68768
|
}
|
|
68740
|
-
function
|
|
68769
|
+
function isRecord9(value) {
|
|
68741
68770
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
68742
68771
|
}
|
|
68743
68772
|
function containerAt(record, path) {
|
|
68744
68773
|
let container = record;
|
|
68745
68774
|
for (const segment of path) {
|
|
68746
68775
|
const next = container[segment];
|
|
68747
|
-
if (!
|
|
68776
|
+
if (!isRecord9(next))
|
|
68748
68777
|
return null;
|
|
68749
68778
|
container = next;
|
|
68750
68779
|
}
|
|
@@ -69006,6 +69035,38 @@ function resolveCategoryDefinition(definition, catalog, cycleNames) {
|
|
|
69006
69035
|
...definition.fallback_models === undefined ? {} : { fallback_models: resolveFallbackModels(definition.fallback_models, catalog, cycleNames) }
|
|
69007
69036
|
};
|
|
69008
69037
|
}
|
|
69038
|
+
function resolveModelProfile(definition, catalog, cycleNames) {
|
|
69039
|
+
return {
|
|
69040
|
+
...definition,
|
|
69041
|
+
...definition.models === undefined ? {} : { models: definition.models.map((entry) => resolveModelEntry(entry, catalog, cycleNames)) }
|
|
69042
|
+
};
|
|
69043
|
+
}
|
|
69044
|
+
function profileShadowDiagnostics(view) {
|
|
69045
|
+
if (view.model_profiles === undefined || view.models === undefined)
|
|
69046
|
+
return [];
|
|
69047
|
+
return Object.keys(view.model_profiles).flatMap((name) => view.models?.[name] === undefined ? [] : [{
|
|
69048
|
+
kind: "validation",
|
|
69049
|
+
message: `Model profile "${name}" shadows a model catalog entry of the same name`,
|
|
69050
|
+
path: `model_profiles.${name}`
|
|
69051
|
+
}]);
|
|
69052
|
+
}
|
|
69053
|
+
function profileSpliceDiagnostics(section, definitions, profileNames) {
|
|
69054
|
+
if (definitions === undefined || profileNames.size === 0)
|
|
69055
|
+
return [];
|
|
69056
|
+
return Object.entries(definitions).flatMap(([name, definition]) => (definition.models ?? []).flatMap((entry, index) => typeof entry !== "string" || !profileNames.has(entry) ? [] : [{
|
|
69057
|
+
kind: "validation",
|
|
69058
|
+
message: `"${entry}" is a model profile; splicing a profile into a category chain is not supported yet`,
|
|
69059
|
+
path: `${section}.${name}.models.${index}`
|
|
69060
|
+
}]));
|
|
69061
|
+
}
|
|
69062
|
+
function modelProfileDiagnostics(view) {
|
|
69063
|
+
const profileNames = new Set(Object.keys(view.model_profiles ?? {}));
|
|
69064
|
+
return [
|
|
69065
|
+
...profileShadowDiagnostics(view),
|
|
69066
|
+
...profileSpliceDiagnostics("categories", view.categories, profileNames),
|
|
69067
|
+
...profileSpliceDiagnostics("agents", view.agents, profileNames)
|
|
69068
|
+
];
|
|
69069
|
+
}
|
|
69009
69070
|
function cycleDiagnostics(catalog) {
|
|
69010
69071
|
if (catalog === undefined)
|
|
69011
69072
|
return [];
|
|
@@ -69016,9 +69077,10 @@ function cycleDiagnostics(catalog) {
|
|
|
69016
69077
|
}));
|
|
69017
69078
|
}
|
|
69018
69079
|
function resolveModelReferences(view) {
|
|
69019
|
-
const
|
|
69080
|
+
const cycles = cycleDiagnostics(view.models);
|
|
69081
|
+
const diagnostics = [...cycles, ...modelProfileDiagnostics(view)];
|
|
69020
69082
|
const cycleNames = new Set;
|
|
69021
|
-
for (const diagnostic of
|
|
69083
|
+
for (const diagnostic of cycles) {
|
|
69022
69084
|
const name = diagnostic.path.split(".")[1];
|
|
69023
69085
|
if (name !== undefined)
|
|
69024
69086
|
cycleNames.add(name);
|
|
@@ -69031,12 +69093,17 @@ function resolveModelReferences(view) {
|
|
|
69031
69093
|
name,
|
|
69032
69094
|
resolveCategoryDefinition(definition, view.models, cycleNames)
|
|
69033
69095
|
]));
|
|
69096
|
+
const modelProfiles = view.model_profiles === undefined ? undefined : Object.fromEntries(Object.entries(view.model_profiles).map(([name, definition]) => [
|
|
69097
|
+
name,
|
|
69098
|
+
resolveModelProfile(definition, view.models, cycleNames)
|
|
69099
|
+
]));
|
|
69034
69100
|
return {
|
|
69035
69101
|
diagnostics,
|
|
69036
69102
|
view: {
|
|
69037
69103
|
...view,
|
|
69038
69104
|
...agents === undefined ? {} : { agents },
|
|
69039
|
-
...categories === undefined ? {} : { categories }
|
|
69105
|
+
...categories === undefined ? {} : { categories },
|
|
69106
|
+
...modelProfiles === undefined ? {} : { model_profiles: modelProfiles }
|
|
69040
69107
|
}
|
|
69041
69108
|
};
|
|
69042
69109
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "oh-my-opencode",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.53",
|
|
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",
|
|
@@ -184,7 +184,7 @@
|
|
|
184
184
|
"zod": "^4.4.3"
|
|
185
185
|
},
|
|
186
186
|
"devDependencies": {
|
|
187
|
-
"@code-yeongyu/senpi": "2026.9.10",
|
|
187
|
+
"@code-yeongyu/senpi": "2026.9.10-2",
|
|
188
188
|
"@oh-my-opencode/agents-md-core": "workspace:*",
|
|
189
189
|
"@oh-my-opencode/ast-grep-mcp": "workspace:*",
|
|
190
190
|
"@oh-my-opencode/boulder-state": "workspace:*",
|
|
@@ -225,18 +225,18 @@
|
|
|
225
225
|
"typescript": "^7.0.2"
|
|
226
226
|
},
|
|
227
227
|
"optionalDependencies": {
|
|
228
|
-
"oh-my-opencode-darwin-arm64": "5.0.0-beta.
|
|
229
|
-
"oh-my-opencode-darwin-x64": "5.0.0-beta.
|
|
230
|
-
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.
|
|
231
|
-
"oh-my-opencode-linux-arm64": "5.0.0-beta.
|
|
232
|
-
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.
|
|
233
|
-
"oh-my-opencode-linux-x64": "5.0.0-beta.
|
|
234
|
-
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.
|
|
235
|
-
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.
|
|
236
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.
|
|
237
|
-
"oh-my-opencode-windows-arm64": "5.0.0-beta.
|
|
238
|
-
"oh-my-opencode-windows-x64": "5.0.0-beta.
|
|
239
|
-
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.
|
|
228
|
+
"oh-my-opencode-darwin-arm64": "5.0.0-beta.53",
|
|
229
|
+
"oh-my-opencode-darwin-x64": "5.0.0-beta.53",
|
|
230
|
+
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.53",
|
|
231
|
+
"oh-my-opencode-linux-arm64": "5.0.0-beta.53",
|
|
232
|
+
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.53",
|
|
233
|
+
"oh-my-opencode-linux-x64": "5.0.0-beta.53",
|
|
234
|
+
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.53",
|
|
235
|
+
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.53",
|
|
236
|
+
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.53",
|
|
237
|
+
"oh-my-opencode-windows-arm64": "5.0.0-beta.53",
|
|
238
|
+
"oh-my-opencode-windows-x64": "5.0.0-beta.53",
|
|
239
|
+
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.53"
|
|
240
240
|
},
|
|
241
241
|
"overrides": {
|
|
242
242
|
"@earendil-works/pi-agent-core": "0.84.2",
|
|
@@ -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.53) 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.53",
|
|
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.53) 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.53) 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.53) 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.53",
|
|
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.53",
|
|
4
|
+
"inputDigest": "sha256:f202c8adb130249d2a7745db228ccd528b47f0cfeaeb5db5c99ab13d9b76af00",
|
|
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.53) 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.53) 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.53) 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.53) 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.53) 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.53) 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.53) 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.53",
|
|
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.53) 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.53",
|
|
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.53) Checking Ulw-Execute Continuation"
|
|
11
11
|
}
|
|
12
12
|
]
|
|
13
13
|
}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook user-prompt-submit --with-ultrawork",
|
|
9
9
|
"timeout": 10,
|
|
10
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
10
|
+
"statusMessage": "(OmO 5.0.0-beta.53) Checking Ulw-Loop Steering"
|
|
11
11
|
}
|
|
12
12
|
]
|
|
13
13
|
}
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"type": "command",
|
|
21
21
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use-spawn",
|
|
22
22
|
"timeout": 5,
|
|
23
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
23
|
+
"statusMessage": "(OmO 5.0.0-beta.53) Recording Spawn Admission"
|
|
24
24
|
}
|
|
25
25
|
]
|
|
26
26
|
}
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"type": "command",
|
|
34
34
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook pre-tool-use",
|
|
35
35
|
"timeout": 5,
|
|
36
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
36
|
+
"statusMessage": "(OmO 5.0.0-beta.53) Enforcing Unlimited Ulw-Loop Budget"
|
|
37
37
|
}
|
|
38
38
|
]
|
|
39
39
|
},
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"type": "command",
|
|
45
45
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook pre-tool-use-spawn",
|
|
46
46
|
"timeout": 5,
|
|
47
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
47
|
+
"statusMessage": "(OmO 5.0.0-beta.53) Guarding Ulw-Loop Spawns"
|
|
48
48
|
}
|
|
49
49
|
]
|
|
50
50
|
}
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"type": "command",
|
|
57
57
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook stop",
|
|
58
58
|
"timeout": 10,
|
|
59
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
59
|
+
"statusMessage": "(OmO 5.0.0-beta.53) Checking Ulw-Loop Resume"
|
|
60
60
|
}
|
|
61
61
|
]
|
|
62
62
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code-yeongyu/codex-ulw-loop",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.53",
|
|
4
4
|
"description": "Codex plugin: durable repo-native multi-goal orchestration with embedded success criteria and observable evidence audit.",
|
|
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/git-bash/dist/cli.js\" hook post-compact",
|
|
9
9
|
"timeout": 5,
|
|
10
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
10
|
+
"statusMessage": "(OmO 5.0.0-beta.53) Resetting Git Bash MCP Reminder",
|
|
11
11
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\git-bash\\dist\\cli.js\" hook post-compact"
|
|
12
12
|
}
|
|
13
13
|
],
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/lsp/dist/cli.js\" hook post-compact",
|
|
9
9
|
"timeout": 5,
|
|
10
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
10
|
+
"statusMessage": "(OmO 5.0.0-beta.53) Resetting LSP Diagnostics Cache",
|
|
11
11
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\lsp\\dist\\cli.js\" hook post-compact"
|
|
12
12
|
}
|
|
13
13
|
],
|