diff --git a/package.json b/package.json index f0dfc8f..b1c227f 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,8 @@ "exports": { ".": "./dist/index.js", "./server": "./dist/server/index.js", - "./ui-parser": "./dist/ui-parser.js" + "./ui-parser": "./dist/ui-parser.js", + "./cli": "./dist/cli/index.js" }, "files": [ "dist" @@ -23,10 +24,11 @@ "test:watch": "vitest" }, "dependencies": { - "@kubernetes/client-node": "^1.0.0" + "@kubernetes/client-node": "^1.0.0", + "picocolors": "^1.1.1" }, "peerDependencies": { - "@paperclipai/adapter-utils": "2026.415.0-canary.7" + "@paperclipai/adapter-utils": ">=2026.415.0-canary.7" }, "devDependencies": { "@paperclipai/adapter-utils": "2026.415.0-canary.7", diff --git a/src/index.ts b/src/index.ts index cb8b275..0036501 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,8 +1,6 @@ export const type = "opencode_k8s"; export const label = "OpenCode (Kubernetes)"; -export const models: undefined = undefined; - import type { CLIAdapterModule } from "@paperclipai/adapter-utils"; import { formatEvent } from "./cli/format-event.js"; diff --git a/src/server/index.ts b/src/server/index.ts index 72065d1..a189ef3 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -1,6 +1,7 @@ import type { ServerAdapterModule } from "@paperclipai/adapter-utils"; import { getAdapterSessionManagement } from "@paperclipai/adapter-utils"; -import { type, models, agentConfigurationDoc } from "../index.js"; +import { type, agentConfigurationDoc } from "../index.js"; +import { listK8sModels } from "./models.js"; import { execute } from "./execute.js"; import { testEnvironment } from "./test.js"; import { sessionCodec } from "./session.js"; @@ -13,7 +14,7 @@ export function createServerAdapter(): ServerAdapterModule { execute, testEnvironment, sessionCodec, - models, + listModels: listK8sModels, listSkills: listOpenCodeSkills, syncSkills: syncOpenCodeSkills, supportsLocalAgentJwt: true, diff --git a/src/server/models.ts b/src/server/models.ts new file mode 100644 index 0000000..4b4bcbc --- /dev/null +++ b/src/server/models.ts @@ -0,0 +1,15 @@ +import type { AdapterModel } from "@paperclipai/adapter-utils"; + +const MODELS: AdapterModel[] = [ + { id: "anthropic/claude-opus-4-7", label: "Claude Opus 4.7" }, + { id: "anthropic/claude-sonnet-4-6", label: "Claude Sonnet 4.6" }, + { id: "anthropic/claude-haiku-4-5", label: "Claude Haiku 4.5" }, + { id: "openai/gpt-4o", label: "GPT-4o" }, + { id: "openai/gpt-4o-mini", label: "GPT-4o mini" }, + { id: "google/gemini-2.5-pro", label: "Gemini 2.5 Pro" }, + { id: "google/gemini-2.5-flash", label: "Gemini 2.5 Flash" }, +]; + +export async function listK8sModels(): Promise { + return MODELS; +} diff --git a/src/server/test.ts b/src/server/test.ts index 5f7af8f..5341c37 100644 --- a/src/server/test.ts +++ b/src/server/test.ts @@ -87,6 +87,10 @@ async function checkRbac( { resource: "jobs", group: "batch", verb: "get", code: "k8s_rbac_job_get", label: "get Jobs" }, { resource: "pods", group: "", verb: "list", code: "k8s_rbac_pod_list", label: "list Pods" }, { resource: "pods/log", group: "", verb: "get", code: "k8s_rbac_pod_log", label: "get Pod logs" }, + { resource: "secrets", group: "", verb: "create", code: "k8s_rbac_secret_create", label: "create Secrets" }, + { resource: "secrets", group: "", verb: "delete", code: "k8s_rbac_secret_delete", label: "delete Secrets" }, + { resource: "secrets", group: "", verb: "get", code: "k8s_rbac_secret_get", label: "get Secrets" }, + { resource: "persistentvolumeclaims", group: "", verb: "get", code: "k8s_rbac_pvc_get", label: "get PersistentVolumeClaims" }, ]; for (const check of rbacChecks) {