diff --git a/README.ko.md b/README.ko.md index 72c16d45..61e0cdcc 100644 --- a/README.ko.md +++ b/README.ko.md @@ -13,7 +13,7 @@
-
+
diff --git a/README.md b/README.md
index 7acf90cb..37bd3cb4 100644
--- a/README.md
+++ b/README.md
@@ -13,7 +13,7 @@
-
+
diff --git a/README.zh.md b/README.zh.md
index 7ea8c542..0f01141d 100644
--- a/README.zh.md
+++ b/README.zh.md
@@ -13,7 +13,7 @@
-
+
diff --git a/plugins/codexclaw/components/subagent-config/dist/catalog.js b/plugins/codexclaw/components/subagent-config/dist/catalog.js
index bb81a9bf..b8f6795e 100644
--- a/plugins/codexclaw/components/subagent-config/dist/catalog.js
+++ b/plugins/codexclaw/components/subagent-config/dist/catalog.js
@@ -85,7 +85,7 @@ export function reasoningEfforts(raw ) {
}))];
}
-export function readNativeCatalog(env = process.env) {
+export function readNativeCatalog(env = process.env, accountSelectorsOnly = false) {
const path = nativeCatalogPath(env);
if (!path || !existsSync(path)) return null;
try {
@@ -96,10 +96,11 @@ export function readNativeCatalog(env = process.env)
return list.flatMap(raw => {
const id = entryKey(raw);
const row = raw && typeof raw === "object" ? raw : {};
+ if (accountSelectorsOnly && (row.opencodex_catalog_kind !== "account-selector-v1" || !id || id.split("/").length !== 2 || id.split("/").some(part => !part))) return [];
if (!id?.trim() || seen.has(id) || row.disabled === true || row.visibility === "hide") return [];
seen.add(id);
const source = isRoutedSlug(id) ? "ocx" : "native";
- return [{ id, source, label: id, reasoningEfforts: reasoningEfforts(row.reasoningEfforts ?? row.supported_reasoning_levels) }];
+ return [{ id, source, label: typeof row.display_name === "string" && row.display_name.trim() ? row.display_name : id, reasoningEfforts: reasoningEfforts(row.reasoningEfforts ?? row.supported_reasoning_levels) }];
});
} catch { return null; }
}
diff --git a/plugins/codexclaw/components/subagent-config/dist/live-catalog.js b/plugins/codexclaw/components/subagent-config/dist/live-catalog.js
index a69a08d5..c6ba618f 100644
--- a/plugins/codexclaw/components/subagent-config/dist/live-catalog.js
+++ b/plugins/codexclaw/components/subagent-config/dist/live-catalog.js
@@ -103,6 +103,14 @@ export async function readCatalog(options = {})
if (native === null) throw new Error("native catalog unavailable");
entries = native;
}
+ if (source === "ocx") {
+ const seen = new Set(entries.map(entry => entry.id));
+ for (const entry of readNativeCatalog(env, true) ?? []) {
+ if (seen.has(entry.id)) continue;
+ seen.add(entry.id);
+ entries.push(entry);
+ }
+ }
const catalog = { state: source === "ocx" ? "ocx-active" : "native-catalog", entries,
status: "fresh", source, fetchedAt: new Date(now()).toISOString() };
if (!persist(path, key, catalog, home)) catalog.message = "Model list loaded; its cache could not be saved.";
diff --git a/plugins/codexclaw/components/subagent-config/src/catalog.ts b/plugins/codexclaw/components/subagent-config/src/catalog.ts
index 647a1dbd..26f3a18f 100644
--- a/plugins/codexclaw/components/subagent-config/src/catalog.ts
+++ b/plugins/codexclaw/components/subagent-config/src/catalog.ts
@@ -85,7 +85,7 @@ export function reasoningEfforts(raw: unknown): string[] | null {
}))];
}
-export function readNativeCatalog(env: NodeJS.ProcessEnv = process.env): CatalogEntry[] | null {
+export function readNativeCatalog(env: NodeJS.ProcessEnv = process.env, accountSelectorsOnly = false): CatalogEntry[] | null {
const path = nativeCatalogPath(env);
if (!path || !existsSync(path)) return null;
try {
@@ -96,10 +96,11 @@ export function readNativeCatalog(env: NodeJS.ProcessEnv = process.env): Catalog
return list.flatMap(raw => {
const id = entryKey(raw);
const row = raw && typeof raw === "object" ? raw as Record