oh-my-opencode 5.0.0-beta.51 → 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/doctor/checks/index.d.ts +2 -0
- package/dist/cli/doctor/checks/latest-version.d.ts +11 -0
- package/dist/cli/doctor/framework/constants.d.ts +5 -0
- package/dist/cli/doctor/framework/types.d.ts +2 -0
- package/dist/cli/index.js +181 -63
- package/dist/cli-node/index.js +181 -63
- package/dist/features/background-agent/manager.d.ts +7 -0
- package/dist/features/background-agent/types.d.ts +4 -0
- package/dist/features/claude-tasks/storage.d.ts +7 -2
- package/dist/features/hook-message-injector/index.d.ts +1 -0
- package/dist/features/hook-message-injector/sdk-message-lookup.d.ts +1 -0
- package/dist/hooks/keyword-detector/hook.d.ts +2 -0
- package/dist/hooks/keyword-detector/ultrawork/index.d.ts +2 -0
- package/dist/hooks/unstable-agent-babysitter/task-message-analyzer.d.ts +1 -0
- package/dist/index.js +1539 -1292
- package/dist/plugin/chat-message/types.d.ts +3 -1
- package/dist/plugin/stop-continuation.d.ts +3 -0
- package/dist/plugin/system-transform.d.ts +5 -1
- package/dist/skills/frontend/ATTRIBUTION.md +10 -0
- package/dist/skills/frontend/SKILL.md +3 -0
- package/dist/skills/frontend/references/design/README.md +10 -2
- package/dist/skills/frontend/references/design/_INDEX.md +1 -0
- package/dist/skills/frontend/references/design/ambience-skill.md +145 -0
- package/dist/skills/frontend/references/design/interaction-skill.md +2 -0
- 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 +89 -13
- package/package.json +14 -14
- package/packages/lsp-daemon/dist/cli.js +1 -2
- package/packages/lsp-daemon/dist/ownership.js +2 -2
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
- package/packages/omo-codex/plugin/components/git-bash/dist/cli.js +1 -1
- package/packages/omo-codex/plugin/components/git-bash/dist/codex-hook.js +2 -1
- package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
- package/packages/omo-codex/plugin/components/git-bash/src/codex-hook.ts +2 -1
- package/packages/omo-codex/plugin/components/git-bash/test/codex-hook.test.ts +6 -7
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
- package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
- package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/rules/package.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/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/frontend/ATTRIBUTION.md +10 -0
- package/packages/omo-codex/plugin/skills/frontend/SKILL.md +3 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/README.md +10 -2
- package/packages/omo-codex/plugin/skills/frontend/references/design/_INDEX.md +1 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/ambience-skill.md +145 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/interaction-skill.md +2 -0
- package/packages/omo-codex/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/frontend/ATTRIBUTION.md +10 -0
- package/packages/shared-skills/skills/frontend/SKILL.md +3 -0
- package/packages/shared-skills/skills/frontend/references/design/README.md +10 -2
- package/packages/shared-skills/skills/frontend/references/design/_INDEX.md +1 -0
- package/packages/shared-skills/skills/frontend/references/design/ambience-skill.md +145 -0
- package/packages/shared-skills/skills/frontend/references/design/interaction-skill.md +2 -0
- 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
package/dist/tui.js
CHANGED
|
@@ -3170,7 +3170,7 @@ var init_command_executor2 = __esm(() => {
|
|
|
3170
3170
|
var init_contains_path2 = () => {};
|
|
3171
3171
|
|
|
3172
3172
|
// packages/omo-opencode/src/shared/plugin-identity.ts
|
|
3173
|
-
var LOG_FILENAME = "oh-my-opencode.log", CACHE_DIR_NAME = "oh-my-opencode";
|
|
3173
|
+
var PUBLISHED_PACKAGE_NAME = "oh-my-openagent", LOG_FILENAME = "oh-my-opencode.log", CACHE_DIR_NAME = "oh-my-opencode";
|
|
3174
3174
|
var init_plugin_identity = () => {};
|
|
3175
3175
|
|
|
3176
3176
|
// packages/omo-opencode/src/shared/logger.ts
|
|
@@ -59867,6 +59867,7 @@ var init_injector = __esm(() => {
|
|
|
59867
59867
|
var init_hook_message_injector = __esm(() => {
|
|
59868
59868
|
init_injector();
|
|
59869
59869
|
init_constants2();
|
|
59870
|
+
init_id_generation();
|
|
59870
59871
|
});
|
|
59871
59872
|
|
|
59872
59873
|
// packages/omo-opencode/src/shared/opencode-message-dir.ts
|
|
@@ -68205,6 +68206,25 @@ var init_model_catalog = __esm(() => {
|
|
|
68205
68206
|
OmoModelCatalogLayerSchema = record(string2(), OmoModelCatalogEntryLayerSchema);
|
|
68206
68207
|
});
|
|
68207
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
|
+
|
|
68208
68228
|
// packages/omo-config-core/src/schema/task.ts
|
|
68209
68229
|
import { availableParallelism } from "os";
|
|
68210
68230
|
function resolveOmoTaskSettings(input, resolveParallelism = availableParallelism) {
|
|
@@ -68397,6 +68417,7 @@ var init_config = __esm(() => {
|
|
|
68397
68417
|
init_git_master();
|
|
68398
68418
|
init_memory();
|
|
68399
68419
|
init_model_catalog();
|
|
68420
|
+
init_model_profile();
|
|
68400
68421
|
init_task();
|
|
68401
68422
|
init_team();
|
|
68402
68423
|
init_telemetry();
|
|
@@ -68410,6 +68431,8 @@ var init_config = __esm(() => {
|
|
|
68410
68431
|
task: OmoTaskSettingsLayerSchema.optional(),
|
|
68411
68432
|
teams: OmoTeamsConfigLayerSchema.optional(),
|
|
68412
68433
|
models: OmoModelCatalogLayerSchema.optional(),
|
|
68434
|
+
model_profiles: OmoModelProfilesLayerSchema.optional(),
|
|
68435
|
+
model_profile: string2().optional(),
|
|
68413
68436
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
68414
68437
|
telemetry: OmoTelemetrySettingsLayerSchema.optional()
|
|
68415
68438
|
}).strict();
|
|
@@ -68421,6 +68444,8 @@ var init_config = __esm(() => {
|
|
|
68421
68444
|
task: OmoTaskSettingsLayerSchema.optional(),
|
|
68422
68445
|
teams: OmoTeamsConfigLayerSchema.optional(),
|
|
68423
68446
|
models: OmoModelCatalogLayerSchema.optional(),
|
|
68447
|
+
model_profiles: OmoModelProfilesLayerSchema.optional(),
|
|
68448
|
+
model_profile: string2().optional(),
|
|
68424
68449
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
68425
68450
|
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
68426
68451
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
@@ -68436,6 +68461,8 @@ var init_config = __esm(() => {
|
|
|
68436
68461
|
task: OmoTaskSettingsSchema.optional(),
|
|
68437
68462
|
teams: OmoTeamsConfigSchema.optional(),
|
|
68438
68463
|
models: OmoModelCatalogSchema.optional(),
|
|
68464
|
+
model_profiles: OmoModelProfilesSchema.optional(),
|
|
68465
|
+
model_profile: string2().optional(),
|
|
68439
68466
|
memory: OmoMemorySettingsSchema.optional(),
|
|
68440
68467
|
telemetry: OmoTelemetrySettingsSchema.optional(),
|
|
68441
68468
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
@@ -68454,6 +68481,8 @@ var init_config = __esm(() => {
|
|
|
68454
68481
|
task: OmoTaskSettingsLayerSchema.optional(),
|
|
68455
68482
|
teams: OmoTeamsConfigLayerSchema.optional(),
|
|
68456
68483
|
models: OmoModelCatalogLayerSchema.optional(),
|
|
68484
|
+
model_profiles: OmoModelProfilesLayerSchema.optional(),
|
|
68485
|
+
model_profile: string2().optional(),
|
|
68457
68486
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
68458
68487
|
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
68459
68488
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
@@ -68476,6 +68505,7 @@ var init_schema = __esm(() => {
|
|
|
68476
68505
|
init_harness();
|
|
68477
68506
|
init_memory();
|
|
68478
68507
|
init_model_catalog();
|
|
68508
|
+
init_model_profile();
|
|
68479
68509
|
init_model_ref();
|
|
68480
68510
|
init_task();
|
|
68481
68511
|
init_team();
|
|
@@ -68723,29 +68753,27 @@ function validationDiagnostic(path, issues) {
|
|
|
68723
68753
|
function unrecognizedKeyIssues(issues) {
|
|
68724
68754
|
return issues.flatMap((issue) => issue.code === "unrecognized_keys" ? [{ keys: issue.keys, path: issue.path.map((segment) => String(segment)) }] : []);
|
|
68725
68755
|
}
|
|
68726
|
-
function hasUnsafeUnrecognizedKey(
|
|
68727
|
-
|
|
68728
|
-
return true;
|
|
68729
|
-
return hasTamperedPrototype(parsed);
|
|
68756
|
+
function hasUnsafeUnrecognizedKey(issues) {
|
|
68757
|
+
return issues.some((issue) => issue.keys.some((key) => isUnsafeObjectKey2(key)));
|
|
68730
68758
|
}
|
|
68731
68759
|
function hasTamperedPrototype(value) {
|
|
68732
68760
|
if (Array.isArray(value))
|
|
68733
68761
|
return value.some((entry) => hasTamperedPrototype(entry));
|
|
68734
|
-
if (!
|
|
68762
|
+
if (!isRecord9(value))
|
|
68735
68763
|
return false;
|
|
68736
68764
|
const prototype = Object.getPrototypeOf(value);
|
|
68737
68765
|
if (prototype !== Object.prototype && prototype !== null)
|
|
68738
68766
|
return true;
|
|
68739
68767
|
return Object.values(value).some((entry) => hasTamperedPrototype(entry));
|
|
68740
68768
|
}
|
|
68741
|
-
function
|
|
68769
|
+
function isRecord9(value) {
|
|
68742
68770
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
68743
68771
|
}
|
|
68744
68772
|
function containerAt(record, path) {
|
|
68745
68773
|
let container = record;
|
|
68746
68774
|
for (const segment of path) {
|
|
68747
68775
|
const next = container[segment];
|
|
68748
|
-
if (!
|
|
68776
|
+
if (!isRecord9(next))
|
|
68749
68777
|
return null;
|
|
68750
68778
|
container = next;
|
|
68751
68779
|
}
|
|
@@ -68799,11 +68827,17 @@ function readConfigSource(path, scope, fileSystem) {
|
|
|
68799
68827
|
source: { exists: true, loaded: false, path, scope }
|
|
68800
68828
|
};
|
|
68801
68829
|
}
|
|
68830
|
+
if (hasTamperedPrototype(parsed.data)) {
|
|
68831
|
+
return {
|
|
68832
|
+
diagnostic: { kind: "validation", message: `Invalid omo config at ${path}: "__proto__" member is not allowed`, path },
|
|
68833
|
+
source: { exists: true, loaded: false, path, scope }
|
|
68834
|
+
};
|
|
68835
|
+
}
|
|
68802
68836
|
const parsedRecord = toRecord2(parsed.data);
|
|
68803
68837
|
const validation = OmoConfigLayerSchema.safeParse(parsed.data);
|
|
68804
68838
|
if (!validation.success) {
|
|
68805
68839
|
const unrecognized = unrecognizedKeyIssues(validation.error.issues);
|
|
68806
|
-
if (
|
|
68840
|
+
if (hasUnsafeUnrecognizedKey(unrecognized)) {
|
|
68807
68841
|
return {
|
|
68808
68842
|
diagnostic: validationDiagnostic(path, validation.error.issues),
|
|
68809
68843
|
source: { exists: true, loaded: false, path, scope }
|
|
@@ -69001,6 +69035,38 @@ function resolveCategoryDefinition(definition, catalog, cycleNames) {
|
|
|
69001
69035
|
...definition.fallback_models === undefined ? {} : { fallback_models: resolveFallbackModels(definition.fallback_models, catalog, cycleNames) }
|
|
69002
69036
|
};
|
|
69003
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
|
+
}
|
|
69004
69070
|
function cycleDiagnostics(catalog) {
|
|
69005
69071
|
if (catalog === undefined)
|
|
69006
69072
|
return [];
|
|
@@ -69011,9 +69077,10 @@ function cycleDiagnostics(catalog) {
|
|
|
69011
69077
|
}));
|
|
69012
69078
|
}
|
|
69013
69079
|
function resolveModelReferences(view) {
|
|
69014
|
-
const
|
|
69080
|
+
const cycles = cycleDiagnostics(view.models);
|
|
69081
|
+
const diagnostics = [...cycles, ...modelProfileDiagnostics(view)];
|
|
69015
69082
|
const cycleNames = new Set;
|
|
69016
|
-
for (const diagnostic of
|
|
69083
|
+
for (const diagnostic of cycles) {
|
|
69017
69084
|
const name = diagnostic.path.split(".")[1];
|
|
69018
69085
|
if (name !== undefined)
|
|
69019
69086
|
cycleNames.add(name);
|
|
@@ -69026,12 +69093,17 @@ function resolveModelReferences(view) {
|
|
|
69026
69093
|
name,
|
|
69027
69094
|
resolveCategoryDefinition(definition, view.models, cycleNames)
|
|
69028
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
|
+
]));
|
|
69029
69100
|
return {
|
|
69030
69101
|
diagnostics,
|
|
69031
69102
|
view: {
|
|
69032
69103
|
...view,
|
|
69033
69104
|
...agents === undefined ? {} : { agents },
|
|
69034
|
-
...categories === undefined ? {} : { categories }
|
|
69105
|
+
...categories === undefined ? {} : { categories },
|
|
69106
|
+
...modelProfiles === undefined ? {} : { model_profiles: modelProfiles }
|
|
69035
69107
|
}
|
|
69036
69108
|
};
|
|
69037
69109
|
}
|
|
@@ -70455,7 +70527,7 @@ var require_picocolors = __commonJS(function(exports, module) {
|
|
|
70455
70527
|
});
|
|
70456
70528
|
|
|
70457
70529
|
// packages/omo-opencode/src/cli/doctor/framework/constants.ts
|
|
70458
|
-
var import_picocolors, SYMBOLS, STATUS_COLORS, CHECK_IDS, CHECK_NAMES;
|
|
70530
|
+
var import_picocolors, SYMBOLS, STATUS_COLORS, CHECK_IDS, CHECK_NAMES, UPDATE_COMMANDS;
|
|
70459
70531
|
var init_constants5 = __esm(() => {
|
|
70460
70532
|
init_shared();
|
|
70461
70533
|
import_picocolors = __toESM(require_picocolors(), 1);
|
|
@@ -70494,6 +70566,10 @@ var init_constants5 = __esm(() => {
|
|
|
70494
70566
|
[CHECK_IDS.TEAM_MODE]: "Team Mode",
|
|
70495
70567
|
[CHECK_IDS.CODEX]: "Codex"
|
|
70496
70568
|
};
|
|
70569
|
+
UPDATE_COMMANDS = {
|
|
70570
|
+
opencode: `bunx ${PUBLISHED_PACKAGE_NAME} install`,
|
|
70571
|
+
codex: "npx lazycodex-ai install --no-tui --codex-autonomous"
|
|
70572
|
+
};
|
|
70497
70573
|
});
|
|
70498
70574
|
|
|
70499
70575
|
// packages/omo-opencode/src/cli/doctor/checks/model-resolution-cache.ts
|
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.
|
|
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",
|
|
@@ -6833,8 +6833,7 @@ async function validateExistingOwner(paths, pingOwner) {
|
|
|
6833
6833
|
if (isProcessAlive2(owner.pid))
|
|
6834
6834
|
throw new DaemonStartupDeferredError("owner_pid_live_unreachable");
|
|
6835
6835
|
const reread = readDaemonOwner(paths);
|
|
6836
|
-
|
|
6837
|
-
if (!reread || reread.nonce !== owner.nonce || !sameEndpoint(endpoint, owner.endpoint)) {
|
|
6836
|
+
if (!reread || !sameOwner(reread, owner)) {
|
|
6838
6837
|
throw new DaemonStartupDeferredError("owner_changed_during_cleanup");
|
|
6839
6838
|
}
|
|
6840
6839
|
cleanupDeadOwner(paths, owner);
|
|
@@ -107,9 +107,9 @@ async function validateExistingOwner(paths, pingOwner) {
|
|
|
107
107
|
continue;
|
|
108
108
|
if (isProcessAlive(owner.pid))
|
|
109
109
|
throw new DaemonStartupDeferredError("owner_pid_live_unreachable");
|
|
110
|
+
// Compare the two file reads only: a live socket stat drifts across reboots (st_dev, tmpfs) while the pid is dead.
|
|
110
111
|
const reread = readDaemonOwner(paths);
|
|
111
|
-
|
|
112
|
-
if (!reread || reread.nonce !== owner.nonce || !sameEndpoint(endpoint, owner.endpoint)) {
|
|
112
|
+
if (!reread || !sameOwner(reread, owner)) {
|
|
113
113
|
throw new DaemonStartupDeferredError("owner_changed_during_cleanup");
|
|
114
114
|
}
|
|
115
115
|
cleanupDeadOwner(paths, owner);
|
|
@@ -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,
|
|
@@ -5,7 +5,7 @@ import { existsSync, mkdirSync, rmSync, writeFileSync } from "node:fs";
|
|
|
5
5
|
import { homedir } from "node:os";
|
|
6
6
|
import { dirname, join } from "node:path";
|
|
7
7
|
var BASH_TOOL_NAME = "Bash";
|
|
8
|
-
var REMINDER = "On Windows, prefer the OMO git_bash MCP for shell commands before using built-in exec_command. Use exec_command only when git_bash is unavailable or for non-shell operations.";
|
|
8
|
+
var REMINDER = "On Windows, prefer the OMO git_bash MCP for shell commands before using built-in exec_command. Use exec_command only when git_bash is unavailable or for non-shell operations. " + "In code mode, these tools may be deferred: inspect ALL_TOOLS with exec to discover the actual git_bash run, diagnose, and which_bash tool names, then invoke the matching entries through the tools object inside exec before treating git_bash as unavailable. Do not issue deferred names as top-level tool calls.";
|
|
9
9
|
function parsePreToolUsePayload(raw) {
|
|
10
10
|
if (raw.trim().length === 0)
|
|
11
11
|
return null;
|
|
@@ -2,7 +2,8 @@ import { existsSync, mkdirSync, rmSync, writeFileSync } from "node:fs";
|
|
|
2
2
|
import { homedir } from "node:os";
|
|
3
3
|
import { dirname, join } from "node:path";
|
|
4
4
|
const BASH_TOOL_NAME = "Bash";
|
|
5
|
-
const REMINDER = "On Windows, prefer the OMO git_bash MCP for shell commands before using built-in exec_command. Use exec_command only when git_bash is unavailable or for non-shell operations."
|
|
5
|
+
const REMINDER = "On Windows, prefer the OMO git_bash MCP for shell commands before using built-in exec_command. Use exec_command only when git_bash is unavailable or for non-shell operations. " +
|
|
6
|
+
"In code mode, these tools may be deferred: inspect ALL_TOOLS with exec to discover the actual git_bash run, diagnose, and which_bash tool names, then invoke the matching entries through the tools object inside exec before treating git_bash as unavailable. Do not issue deferred names as top-level tool calls.";
|
|
6
7
|
export function parsePreToolUsePayload(raw) {
|
|
7
8
|
if (raw.trim().length === 0)
|
|
8
9
|
return null;
|
|
@@ -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
|
}
|
|
@@ -37,7 +37,8 @@ interface PreToolUseHookOutput {
|
|
|
37
37
|
|
|
38
38
|
const BASH_TOOL_NAME = "Bash";
|
|
39
39
|
const REMINDER =
|
|
40
|
-
"On Windows, prefer the OMO git_bash MCP for shell commands before using built-in exec_command. Use exec_command only when git_bash is unavailable or for non-shell operations."
|
|
40
|
+
"On Windows, prefer the OMO git_bash MCP for shell commands before using built-in exec_command. Use exec_command only when git_bash is unavailable or for non-shell operations. " +
|
|
41
|
+
"In code mode, these tools may be deferred: inspect ALL_TOOLS with exec to discover the actual git_bash run, diagnose, and which_bash tool names, then invoke the matching entries through the tools object inside exec before treating git_bash as unavailable. Do not issue deferred names as top-level tool calls.";
|
|
41
42
|
|
|
42
43
|
export function parsePreToolUsePayload(raw: string): PreToolUsePayload | null {
|
|
43
44
|
if (raw.trim().length === 0) return null;
|
|
@@ -81,8 +81,7 @@ describe("applyGitBashPreToolUseReminder", () => {
|
|
|
81
81
|
const parsed = JSON.parse(output);
|
|
82
82
|
expect(parsed.hookSpecificOutput).toEqual({
|
|
83
83
|
hookEventName: "PreToolUse",
|
|
84
|
-
additionalContext:
|
|
85
|
-
"On Windows, prefer the OMO git_bash MCP for shell commands before using built-in exec_command. Use exec_command only when git_bash is unavailable or for non-shell operations.",
|
|
84
|
+
additionalContext: expect.any(String),
|
|
86
85
|
});
|
|
87
86
|
});
|
|
88
87
|
|
|
@@ -96,7 +95,7 @@ describe("applyGitBashPreToolUseReminder", () => {
|
|
|
96
95
|
const second = applyGitBashPreToolUseReminder(payload, { env: windowsEnv(), platform: "linux", pluginDataRoot });
|
|
97
96
|
|
|
98
97
|
// then
|
|
99
|
-
expect(first).
|
|
98
|
+
expect(JSON.parse(first).hookSpecificOutput.hookEventName).toBe("PreToolUse");
|
|
100
99
|
expect(second).toBe("");
|
|
101
100
|
});
|
|
102
101
|
|
|
@@ -148,9 +147,9 @@ describe("applyGitBashPostCompactReset", () => {
|
|
|
148
147
|
});
|
|
149
148
|
|
|
150
149
|
// then
|
|
151
|
-
expect(first).
|
|
150
|
+
expect(JSON.parse(first).hookSpecificOutput.hookEventName).toBe("PreToolUse");
|
|
152
151
|
expect(second).toBe("");
|
|
153
|
-
expect(afterCompact).
|
|
152
|
+
expect(JSON.parse(afterCompact).hookSpecificOutput.hookEventName).toBe("PreToolUse");
|
|
154
153
|
});
|
|
155
154
|
});
|
|
156
155
|
|
|
@@ -169,7 +168,7 @@ describe("runGitBashHookCli", () => {
|
|
|
169
168
|
});
|
|
170
169
|
|
|
171
170
|
// then
|
|
172
|
-
expect(capture.read()).
|
|
171
|
+
expect(JSON.parse(capture.read()).hookSpecificOutput.hookEventName).toBe("PreToolUse");
|
|
173
172
|
});
|
|
174
173
|
|
|
175
174
|
it("#given PostCompact stdin #when CLI hook runs #then it resets the one-shot reminder", async () => {
|
|
@@ -190,6 +189,6 @@ describe("runGitBashHookCli", () => {
|
|
|
190
189
|
|
|
191
190
|
// then
|
|
192
191
|
expect(capture.read()).toBe("");
|
|
193
|
-
expect(afterCompact).
|
|
192
|
+
expect(JSON.parse(afterCompact).hookSpecificOutput.hookEventName).toBe("PreToolUse");
|
|
194
193
|
});
|
|
195
194
|
});
|
|
@@ -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
|
}
|