32 lines
1 KiB
JavaScript
32 lines
1 KiB
JavaScript
|
|
import { DefaultExecutor } from "./default.js";
|
||
|
|
|
||
|
|
/**
|
||
|
|
* WorkBuddyExecutor — talks to https://www.codebuddy.cn/v2/chat/completions
|
||
|
|
*
|
||
|
|
* WorkBuddy is a B2B/enterprise skin of CodeBuddy CN (same codebuddy.cn
|
||
|
|
* OpenAI-compatible gateway). Behavior mirrors CodeBuddyExecutor:
|
||
|
|
* gateway rejects non-stream requests, and reasoning must be surfaced via
|
||
|
|
* OpenAI-style reasoning_effort + reasoning_summary:"auto" (vendor-native
|
||
|
|
* thinking shapes are not honored by the unified gateway).
|
||
|
|
*/
|
||
|
|
export class WorkBuddyExecutor extends DefaultExecutor {
|
||
|
|
constructor() {
|
||
|
|
super("workbuddy");
|
||
|
|
}
|
||
|
|
|
||
|
|
transformRequest(model, body, stream, credentials) {
|
||
|
|
const transformed = super.transformRequest(model, body, stream, credentials);
|
||
|
|
transformed.stream = true;
|
||
|
|
|
||
|
|
const eff = transformed.reasoning_effort;
|
||
|
|
if (eff === "none" || eff === "off") {
|
||
|
|
delete transformed.reasoning_effort;
|
||
|
|
} else if (eff) {
|
||
|
|
transformed.reasoning_summary = "auto";
|
||
|
|
}
|
||
|
|
return transformed;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
export default WorkBuddyExecutor;
|