Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 570fdae9c4 |
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "paperclip-adapter-opencode-k8s",
|
"name": "paperclip-adapter-opencode-k8s",
|
||||||
"version": "0.1.35",
|
"version": "0.1.36",
|
||||||
"description": "Paperclip adapter plugin that runs OpenCode agents as Kubernetes Jobs",
|
"description": "Paperclip adapter plugin that runs OpenCode agents as Kubernetes Jobs",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
|
|||||||
+2
-1
@@ -1,7 +1,7 @@
|
|||||||
import type { ServerAdapterModule } from "@paperclipai/adapter-utils";
|
import type { ServerAdapterModule } from "@paperclipai/adapter-utils";
|
||||||
import { getAdapterSessionManagement } from "@paperclipai/adapter-utils";
|
import { getAdapterSessionManagement } from "@paperclipai/adapter-utils";
|
||||||
import { type, agentConfigurationDoc } from "../index.js";
|
import { type, agentConfigurationDoc } from "../index.js";
|
||||||
import { listK8sModels } from "./models.js";
|
import { listK8sModels, STATIC_MODELS } from "./models.js";
|
||||||
import { execute } from "./execute.js";
|
import { execute } from "./execute.js";
|
||||||
import { testEnvironment } from "./test.js";
|
import { testEnvironment } from "./test.js";
|
||||||
import { sessionCodec } from "./session.js";
|
import { sessionCodec } from "./session.js";
|
||||||
@@ -14,6 +14,7 @@ export function createServerAdapter(): ServerAdapterModule {
|
|||||||
execute,
|
execute,
|
||||||
testEnvironment,
|
testEnvironment,
|
||||||
sessionCodec,
|
sessionCodec,
|
||||||
|
models: STATIC_MODELS,
|
||||||
listModels: listK8sModels,
|
listModels: listK8sModels,
|
||||||
listSkills: listOpenCodeSkills,
|
listSkills: listOpenCodeSkills,
|
||||||
syncSkills: syncOpenCodeSkills,
|
syncSkills: syncOpenCodeSkills,
|
||||||
|
|||||||
@@ -3,6 +3,15 @@ import os from "node:os";
|
|||||||
import type { AdapterModel } from "@paperclipai/adapter-utils";
|
import type { AdapterModel } from "@paperclipai/adapter-utils";
|
||||||
import { asString, ensurePathInEnv, runChildProcess } from "@paperclipai/adapter-utils/server-utils";
|
import { asString, ensurePathInEnv, runChildProcess } from "@paperclipai/adapter-utils/server-utils";
|
||||||
|
|
||||||
|
export const STATIC_MODELS: AdapterModel[] = [
|
||||||
|
{ id: "anthropic/claude-opus-4-7", label: "anthropic/claude-opus-4-7" },
|
||||||
|
{ id: "anthropic/claude-sonnet-4-6", label: "anthropic/claude-sonnet-4-6" },
|
||||||
|
{ id: "anthropic/claude-haiku-4-5", label: "anthropic/claude-haiku-4-5" },
|
||||||
|
{ id: "openai/gpt-4o", label: "openai/gpt-4o" },
|
||||||
|
{ id: "google/gemini-2.5-pro", label: "google/gemini-2.5-pro" },
|
||||||
|
{ id: "google/gemini-2.5-flash", label: "google/gemini-2.5-flash" },
|
||||||
|
];
|
||||||
|
|
||||||
const MODELS_CACHE_TTL_MS = 60_000;
|
const MODELS_CACHE_TTL_MS = 60_000;
|
||||||
const MODELS_DISCOVERY_TIMEOUT_MS = 20_000;
|
const MODELS_DISCOVERY_TIMEOUT_MS = 20_000;
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,16 @@ describe("createServerAdapter", () => {
|
|||||||
expect(adapter.type).toBe("opencode_k8s");
|
expect(adapter.type).toBe("opencode_k8s");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("exposes a non-empty static models list so the UI renders before listModels resolves", () => {
|
||||||
|
const adapter = createServerAdapter();
|
||||||
|
expect(Array.isArray(adapter.models)).toBe(true);
|
||||||
|
expect(adapter.models!.length).toBeGreaterThan(0);
|
||||||
|
for (const m of adapter.models!) {
|
||||||
|
expect(m.id).toMatch(/^[^/]+\/.+/);
|
||||||
|
expect(m.label).toBe(m.id);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
it("exposes listModels for dynamic model discovery", () => {
|
it("exposes listModels for dynamic model discovery", () => {
|
||||||
const adapter = createServerAdapter();
|
const adapter = createServerAdapter();
|
||||||
expect(typeof adapter.listModels).toBe("function");
|
expect(typeof adapter.listModels).toBe("function");
|
||||||
|
|||||||
Reference in New Issue
Block a user