mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-10-23 17:33:51 +02:00
Address ACPX adapter config review
This commit is contained in:
1 parent
3c84a47cab
commit
c971bbfacd
5 files changed
+85
-19
No files matched your search
@@ -3,7 +3,7 @@ import { models as codexFallbackModels } from "@paperclipai/adapter-codex-local"
|
||||
import { models as cursorFallbackModels } from "@paperclipai/adapter-cursor-local";
|
||||
import { models as opencodeFallbackModels } from "@paperclipai/adapter-opencode-local";
|
||||
import { resetOpenCodeModelsCacheForTests } from "@paperclipai/adapter-opencode-local/server";
|
||||
import { listAdapterModels, refreshAdapterModels } from "../adapters/index.js";
|
||||
import { listAdapterModels, listServerAdapters, refreshAdapterModels } from "../adapters/index.js";
|
||||
import { resetCodexModelsCacheForTests } from "../adapters/codex-models.js";
|
||||
import { resetCursorModelsCacheForTests, setCursorModelsRunnerForTests } from "../adapters/cursor-models.js";
|
||||
|
||||
@@ -30,6 +30,13 @@ describe("adapter model listing", () => {
|
||||
expect(models).toEqual([]);
|
||||
});
|
||||
|
||||
it("uses provider-prefixed ACPX fallback model labels", () => {
|
||||
const adapter = listServerAdapters().find((candidate) => candidate.type === "acpx_local");
|
||||
|
||||
expect(adapter?.models?.some((model) => model.label.startsWith("Claude: "))).toBe(true);
|
||||
expect(adapter?.models?.some((model) => model.label.startsWith("Codex: "))).toBe(true);
|
||||
});
|
||||
|
||||
it("returns codex fallback models when no OpenAI key is available", async () => {
|
||||
const fetchSpy = vi.spyOn(globalThis, "fetch");
|
||||
const models = await listAdapterModels("codex_local");
|
||||
|
||||
@@ -202,6 +202,14 @@ function dedupeAdapterModels(models: AdapterModel[]): AdapterModel[] {
|
||||
return result;
|
||||
}
|
||||
|
||||
function prefixAdapterModelLabels(models: AdapterModel[], provider: "Claude" | "Codex"): AdapterModel[] {
|
||||
const prefix = `${provider}: `;
|
||||
return models.map((model) => ({
|
||||
...model,
|
||||
label: model.label.startsWith(prefix) ? model.label : `${prefix}${model.label}`,
|
||||
}));
|
||||
}
|
||||
|
||||
async function listAcpxModels(): Promise<AdapterModel[]> {
|
||||
const [claude, codex] = await Promise.all([
|
||||
listClaudeModels().catch(() => claudeModels),
|
||||
@@ -209,14 +217,8 @@ async function listAcpxModels(): Promise<AdapterModel[]> {
|
||||
]);
|
||||
return dedupeAdapterModels([
|
||||
...acpxModels,
|
||||
...claude.map((model) => ({
|
||||
...model,
|
||||
label: model.label.startsWith("Claude: ") ? model.label : `Claude: ${model.label}`,
|
||||
})),
|
||||
...codex.map((model) => ({
|
||||
...model,
|
||||
label: model.label.startsWith("Codex: ") ? model.label : `Codex: ${model.label}`,
|
||||
})),
|
||||
...prefixAdapterModelLabels(claude, "Claude"),
|
||||
...prefixAdapterModelLabels(codex, "Codex"),
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -249,7 +251,10 @@ const acpxLocalAdapter: ServerAdapterModule = {
|
||||
syncSkills: syncAcpxSkills,
|
||||
sessionCodec: acpxSessionCodec,
|
||||
sessionManagement: getAdapterSessionManagement("acpx_local") ?? undefined,
|
||||
models: dedupeAdapterModels([...claudeModels, ...codexModels]),
|
||||
models: dedupeAdapterModels([
|
||||
...prefixAdapterModelLabels(claudeModels, "Claude"),
|
||||
...prefixAdapterModelLabels(codexModels, "Codex"),
|
||||
]),
|
||||
listModels: listAcpxModels,
|
||||
supportsLocalAgentJwt: true,
|
||||
supportsInstructionsBundle: true,
|
||||
|
||||
Reference in new issue
Block a user