From 31df0635aa1bf6bd552dc8f74fc1357434f14ace Mon Sep 17 00:00:00 2001 From: whale9820 Date: Wed, 29 Jul 2026 20:04:17 +0700 Subject: [PATCH] feat(providers): add Poolside provider (OpenAI-compatible) Adds Poolside (inference.poolside.ai) as an API-key provider using the default OpenAI transport. Registers three Laguna models with reasoning capabilities (262K context, 32K max output). --- open-sse/providers/capabilities.js | 6 +++++ open-sse/providers/registry/index.js | 2 ++ open-sse/providers/registry/poolside.js | 31 ++++++++++++++++++++++++ public/providers/poolside.png | Bin 0 -> 11703 bytes 4 files changed, 39 insertions(+) create mode 100644 open-sse/providers/registry/poolside.js create mode 100644 public/providers/poolside.png diff --git a/open-sse/providers/capabilities.js b/open-sse/providers/capabilities.js index e113b4cd..d999278d 100644 --- a/open-sse/providers/capabilities.js +++ b/open-sse/providers/capabilities.js @@ -174,6 +174,12 @@ export const PROVIDER_CAPABILITIES = { "deepseek-v4-flash": { vision: true, reasoning: true, thinkingFormat: "openai", thinkingCanDisable: false, contextWindow: 1000000, maxOutput: 50000 }, "deepseek-v3-2-volc": { reasoning: true, thinkingFormat: "openai", thinkingCanDisable: false, contextWindow: 96000, maxOutput: 32000 }, }, + // Poolside Laguna — OpenAI-compatible, all reasoning-capable (262K context, 32K max output). + "poolside": { + "laguna-s-2.1": { reasoning: true, thinkingFormat: "openai", contextWindow: 262000, maxOutput: 32000 }, + "laguna-xs-2.1": { reasoning: true, thinkingFormat: "openai", contextWindow: 262000, maxOutput: 32000 }, + "laguna-m.1": { reasoning: true, thinkingFormat: "openai", contextWindow: 262000, maxOutput: 32000 }, + }, }; /** diff --git a/open-sse/providers/registry/index.js b/open-sse/providers/registry/index.js index 3afa797d..8d29e2cb 100644 --- a/open-sse/providers/registry/index.js +++ b/open-sse/providers/registry/index.js @@ -115,6 +115,7 @@ import p112 from "./tencent.js"; import p113 from "./morph.js"; import p114 from "./devin-cli.js"; // import p104 from "./windsurf.js"; +import p115 from "./poolside.js"; export default [ p0, @@ -231,4 +232,5 @@ export default [ p113, p114, // p104, // windsurf — hidden, no tool calling + p115, ]; diff --git a/open-sse/providers/registry/poolside.js b/open-sse/providers/registry/poolside.js new file mode 100644 index 00000000..462bd3f4 --- /dev/null +++ b/open-sse/providers/registry/poolside.js @@ -0,0 +1,31 @@ +export default { + id: "poolside", + priority: 60, + alias: "poolside", + aliases: [ + "ps", + ], + uiAlias: "ps", + display: { + name: "Poolside", + icon: "water_drop", + color: "#0EA5E9", + textIcon: "PS", + website: "https://poolside.ai", + notice: { + apiKeyUrl: "https://platform.poolside.ai/api-keys", + }, + }, + category: "freeTier", + authType: "apikey", + authModes: ["apikey"], + transport: { + baseUrl: "https://inference.poolside.ai/v1/chat/completions", + validateUrl: "https://inference.poolside.ai/v1/models", + }, + models: [ + { id: "poolside/laguna-s-2.1", name: "Laguna S 2.1" }, + { id: "poolside/laguna-xs-2.1", name: "Laguna XS 2.1" }, + { id: "poolside/laguna-m.1", name: "Laguna M.1" }, + ], +}; diff --git a/public/providers/poolside.png b/public/providers/poolside.png new file mode 100644 index 0000000000000000000000000000000000000000..592d604e32249c82f144cca6636fc3daf6329bef GIT binary patch literal 11703 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