Built-in design generation now runs as an agentic MCP tool-loop (reusing the agent-rs BuiltInProvider), gated behind OPENPENCIL_DESIGN_AGENT_LOOP / the Settings experimental toggle; the orchestrator stays the default. - design-agent system prompt + in-process design toolset (parity-locked with the MCP surface) + flag-gated Intent::Design routing - spawn_agents execution as sequential sub-loops + live creation-mode badges (per-agent glow + 'N/M designing...' header) - new MCP tools: get_guidelines, ToolSearch, get_screenshot, get_editor_state, export_nodes, spawn_agents; style-guide local audit - #27 AI panel restyle: rounded tool cards + green check-rings, gray user bubbles, model-pill bottom toolbar, header, empty-state pills, the PARALLEL AGENTS (agent_team_size) 1x-6x chip dropdown - multi-chat tabs: ChatSessions model (Deref-to-active) + tab row UI (switch / close / + / Cmd+T) with each run bound to its tab Large checkpoint commit spanning the working tree (Rust shell crates).
42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
/**
|
|
* Zhipu GLM (智谱) Coding Plan wrapper. Uses the official GLM coding
|
|
* endpoint at open.bigmodel.cn/api/coding/paas/v4 (CN). Key is the
|
|
* `api_key.secret` pair format (`xxx.yyy`) passed verbatim as the
|
|
* Bearer token — GLM's own auth handles the split internally.
|
|
*
|
|
* Key env var: `GLM_OFFICIAL_CODING_KEY`. See
|
|
* builtin-provider-presets.ts `glm-coding` preset.
|
|
*/
|
|
|
|
import { callOpenAICompat } from './openai-compat';
|
|
|
|
const GLM_BASE_URL = process.env.GLM_BASE_URL ?? 'https://open.bigmodel.cn/api/coding/paas/v4';
|
|
const GLM_API_KEY_ENV = 'GLM_OFFICIAL_CODING_KEY';
|
|
|
|
export interface CallGlmArgs {
|
|
model: string;
|
|
system: string;
|
|
user: string;
|
|
temperature?: number;
|
|
maxTokens?: number;
|
|
}
|
|
|
|
export async function callGlm(args: CallGlmArgs): Promise<string> {
|
|
const apiKey = process.env[GLM_API_KEY_ENV];
|
|
if (!apiKey) {
|
|
throw new Error(
|
|
`${GLM_API_KEY_ENV} not set — export it (GLM official CP xxx.yyy key) before running with --live`,
|
|
);
|
|
}
|
|
return callOpenAICompat({
|
|
baseURL: GLM_BASE_URL,
|
|
apiKey,
|
|
model: args.model,
|
|
system: args.system,
|
|
user: args.user,
|
|
temperature: args.temperature,
|
|
maxTokens: args.maxTokens,
|
|
label: 'glm',
|
|
});
|
|
}
|