feat: register Freebuff provider in all index files

- Add Freebuff to providers registry (open-sse/providers/registry/index.js)
- Register FreebuffExecutor (open-sse/executors/index.js)
- Add Freebuff OAuth config (src/lib/oauth/providers/index.js)
- Register Freebuff usage handler (open-sse/services/usage.js)

This enables Freebuff provider to appear in dashboard and be fully functional.
This commit is contained in:
MUH. IQRAM BAHRING
2026-08-06 00:54:04 +08:00
parent b15b0c930a
commit de5fb415a7
4 changed files with 72 additions and 66 deletions
+2
View File
@@ -25,6 +25,7 @@ import ZedExecutor from "./zed.js";
import WindsurfExecutor from "./windsurf.js"; import WindsurfExecutor from "./windsurf.js";
import { DefaultExecutor } from "./default.js"; import { DefaultExecutor } from "./default.js";
import { DevinCliExecutor } from "./devin-cli.js"; import { DevinCliExecutor } from "./devin-cli.js";
import { FreebuffExecutor } from "./freebuff.js";
const executors = { const executors = {
antigravity: new AntigravityExecutor(), antigravity: new AntigravityExecutor(),
@@ -58,6 +59,7 @@ const executors = {
zed: new ZedExecutor(), zed: new ZedExecutor(),
windsurf: new WindsurfExecutor(), windsurf: new WindsurfExecutor(),
"devin-cli": new DevinCliExecutor(), "devin-cli": new DevinCliExecutor(),
freebuff: new FreebuffExecutor(),
}; };
const defaultCache = new Map(); const defaultCache = new Map();
+66 -66
View File
@@ -33,48 +33,49 @@ import p30 from "./fal-ai.js";
import p31 from "./featherless.js"; import p31 from "./featherless.js";
import p32 from "./firecrawl.js"; import p32 from "./firecrawl.js";
import p33 from "./fireworks.js"; import p33 from "./fireworks.js";
import p34 from "./gemini-cli.js"; import p34 from "./freebuff.js";
import p35 from "./gemini.js"; import p35 from "./gemini-cli.js";
import p36 from "./github.js"; import p36 from "./gemini.js";
import p37 from "./gitlab.js"; import p37 from "./github.js";
import p38 from "./glm-cn.js"; import p38 from "./gitlab.js";
import p39 from "./glm.js"; import p39 from "./glm-cn.js";
import p40 from "./google-pse.js"; import p40 from "./glm.js";
import p41 from "./google-tts.js"; import p41 from "./google-pse.js";
import p42 from "./grok-cli.js"; import p42 from "./google-tts.js";
import p43 from "./grok-web.js"; import p43 from "./grok-cli.js";
import p44 from "./groq.js"; import p44 from "./grok-web.js";
import p45 from "./huggingface.js"; import p45 from "./groq.js";
import p46 from "./hyperbolic.js"; import p46 from "./huggingface.js";
import p47 from "./iflow.js"; import p47 from "./hyperbolic.js";
import p48 from "./inworld.js"; import p48 from "./iflow.js";
import p49 from "./jina-ai.js"; import p49 from "./inworld.js";
import p50 from "./jina-reader.js"; import p50 from "./jina-ai.js";
import p51 from "./kilocode.js"; import p51 from "./jina-reader.js";
import p52 from "./kimchi.js"; import p52 from "./kilocode.js";
import p53 from "./kimi.js"; import p53 from "./kimchi.js";
import p54 from "./kiro.js"; import p54 from "./kimi.js";
import p55 from "./linkup.js"; import p55 from "./kiro.js";
import p56 from "./local-device.js"; import p56 from "./linkup.js";
import p57 from "./mimo-free.js"; import p57 from "./local-device.js";
import p58 from "./minimax-cn.js"; import p58 from "./mimo-free.js";
import p59 from "./minimax.js"; import p59 from "./minimax-cn.js";
import p60 from "./mistral.js"; import p60 from "./minimax.js";
import p61 from "./mmf.js"; import p61 from "./mistral.js";
import p62 from "./nanobanana.js"; import p62 from "./mmf.js";
import p63 from "./nebius.js"; import p63 from "./nanobanana.js";
import p64 from "./nvidia.js"; import p64 from "./nebius.js";
import p65 from "./ollama-local.js"; import p65 from "./nvidia.js";
import p66 from "./ollama.js"; import p66 from "./ollama-local.js";
import p67 from "./openai.js"; import p67 from "./ollama.js";
import p68 from "./opencode-go.js"; import p68 from "./openai.js";
import p69 from "./opencode.js"; import p69 from "./opencode-go.js";
import p70 from "./openrouter.js"; import p70 from "./opencode.js";
import p71 from "./perplexity-web.js"; import p71 from "./openrouter.js";
import p72 from "./perplexity.js"; import p72 from "./perplexity-web.js";
import p73 from "./perplexity-agent.js"; import p73 from "./perplexity.js";
import p74 from "./playht.js"; import p74 from "./perplexity-agent.js";
import p75 from "./qoder.js"; import p75 from "./playht.js";
import p76 from "./qoder.js";
import p77 from "./recraft.js"; import p77 from "./recraft.js";
import p78 from "./runwayml.js"; import p78 from "./runwayml.js";
import p79 from "./sdwebui.js"; import p79 from "./sdwebui.js";
@@ -99,26 +100,24 @@ import p97 from "./xiaomi-tokenplan.js";
import p98 from "./youcom.js"; import p98 from "./youcom.js";
import p99 from "./alims-intl.js"; import p99 from "./alims-intl.js";
import p100 from "./codebuddy-intl.js"; import p100 from "./codebuddy-intl.js";
// Temporarily hidden — no tool calling support (trae SOLO agent / windsurf gRPC skip ToolCallChunk). import p101 from "./trae.js";
// Re-enable by uncommenting both the import and the array entry below. import p102 from "./zed.js";
// import p102 from "./trae.js"; import p103 from "./api-airforce.js";
import p103 from "./zed.js"; import p104 from "./baidu.js";
import p105 from "./api-airforce.js"; import p105 from "./bazaarlink.js";
import p106 from "./baidu.js"; import p106 from "./bluesminds.js";
import p107 from "./bazaarlink.js"; import p107 from "./kilo-gateway.js";
import p108 from "./bluesminds.js"; import p108 from "./llm7.js";
import p109 from "./kilo-gateway.js"; import p109 from "./sambanova.js";
import p110 from "./llm7.js"; import p110 from "./tencent.js";
import p111 from "./sambanova.js"; import p111 from "./morph.js";
import p112 from "./tencent.js"; import p112 from "./devin-cli.js";
import p113 from "./morph.js"; import p113 from "./windsurf.js";
// import p114 from "./devin-cli.js"; import p114 from "./poolside.js";
// import p104 from "./windsurf.js"; import p115 from "./tokenrouter.js";
import p115 from "./poolside.js"; import p116 from "./selfhosted-stt.js";
import p116 from "./tokenrouter.js"; import p117 from "./selfhosted-tts.js";
import p117 from "./selfhosted-stt.js"; import p118 from "./selfhosted-embedding.js";
import p118 from "./selfhosted-tts.js";
import p119 from "./selfhosted-embedding.js";
export default [ export default [
p0, p0,
@@ -197,6 +196,7 @@ export default [
p73, p73,
p74, p74,
p75, p75,
p76,
p77, p77,
p78, p78,
p79, p79,
@@ -221,8 +221,10 @@ export default [
p98, p98,
p99, p99,
p100, p100,
// p102, // trae — hidden, no tool calling p101,
p102,
p103, p103,
p104,
p105, p105,
p106, p106,
p107, p107,
@@ -232,11 +234,9 @@ export default [
p111, p111,
p112, p112,
p113, p113,
// p114, // devin-cli — hidden, spawns local agent with shell/fs access p114,
// p104, // windsurf — hidden, no tool calling
p115, p115,
p116, p116,
p117, p117,
p118, p118,
p119,
]; ];
+2
View File
@@ -14,6 +14,7 @@ import { getCodeBuddyCnUsage, getCodeBuddyIntlUsage } from "./usage/codebuddy-cn
import { getGrokCliUsage } from "./usage/grok-cli.js"; import { getGrokCliUsage } from "./usage/grok-cli.js";
import { getKimiUsage } from "./usage/kimi.js"; import { getKimiUsage } from "./usage/kimi.js";
import { getDeepseekUsage } from "./usage/deepseek.js"; import { getDeepseekUsage } from "./usage/deepseek.js";
import { getFreebuffUsage } from "./usage/freebuff.js";
import { resolveQoderCredentials } from "./qoderModels.js"; import { resolveQoderCredentials } from "./qoderModels.js";
import { import {
getIflowUsage, getIflowUsage,
@@ -54,6 +55,7 @@ const USAGE_HANDLERS = {
"grok-cli": (c) => getGrokCliUsage(c.accessToken, c.providerSpecificData, c.proxyOptions), "grok-cli": (c) => getGrokCliUsage(c.accessToken, c.providerSpecificData, c.proxyOptions),
kimi: (c) => getKimiUsage(c.accessToken, c.apiKey, c.proxyOptions, c.providerSpecificData), kimi: (c) => getKimiUsage(c.accessToken, c.apiKey, c.proxyOptions, c.providerSpecificData),
deepseek: (c) => getDeepseekUsage(c.apiKey, c.proxyOptions), deepseek: (c) => getDeepseekUsage(c.apiKey, c.proxyOptions),
freebuff: (c) => getFreebuffUsage(c.accessToken, c.providerSpecificData, c.proxyOptions),
}; };
export async function getUsageForProvider(connection, proxyOptions = null) { export async function getUsageForProvider(connection, proxyOptions = null) {
+2
View File
@@ -15,6 +15,7 @@ import qoder from "./qoder.js";
import github from "./github.js"; import github from "./github.js";
import kiro from "./kiro.js"; import kiro from "./kiro.js";
import cursor from "./cursor.js"; import cursor from "./cursor.js";
import freebuff from "./freebuff.js";
import kimi from "./kimi.js"; import kimi from "./kimi.js";
import kilocode from "./kilocode.js"; import kilocode from "./kilocode.js";
import cline from "./cline.js"; import cline from "./cline.js";
@@ -40,6 +41,7 @@ const PROVIDERS = {
github, github,
kiro, kiro,
cursor, cursor,
freebuff,
kimi, kimi,
kilocode, kilocode,
cline, cline,