openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
98 lines (97 loc) • 4.27 kB
JavaScript
import { o as getRuntimeConfigSnapshot } from "../../runtime-snapshot-BaQikjTR.js";
import { t as jsonResult } from "../../tool-results-BCM3fdVS.js";
import { h as readToolStringParam } from "../../common-Bm6UTDDA.js";
import "../../runtime-config-snapshot-u1Kj68kx.js";
import "../../provider-web-search-Buu1PWOm.js";
import { n as createCodeExecutionToolDefinition, t as buildMissingCodeExecutionApiKeyPayload } from "../../code-execution-tool-shared-CeAkKo1Y.js";
import { a as XAI_DEFAULT_MODEL_ID } from "../../model-definitions-T5B2ehi7.js";
import { r as resolveXaiToolApiKeyWithAuth } from "../../tool-auth-shared-Duhg2OA4.js";
import { n as readPluginCodeExecutionConfig, r as resolveCodeExecutionEnabled, t as readCodeExecutionConfigRecord } from "../../code-execution-config-Bt4A_RD0.js";
import { a as requestXaiResponsesTool, i as XAI_RESPONSES_ENDPOINT, n as resolveNormalizedXaiToolModel, o as requireXaiResponseTextAndCitations, r as resolvePositiveIntegerToolConfig } from "../../tool-config-shared-C_UULlHY.js";
//#region extensions/xai/src/code-execution-shared.ts
const XAI_CODE_EXECUTION_ENDPOINT = XAI_RESPONSES_ENDPOINT;
const XAI_DEFAULT_CODE_EXECUTION_MODEL = XAI_DEFAULT_MODEL_ID;
function resolveXaiCodeExecutionModel(config) {
return resolveNormalizedXaiToolModel({
config,
defaultModel: XAI_DEFAULT_CODE_EXECUTION_MODEL
});
}
function resolveXaiCodeExecutionMaxTurns(config) {
return resolvePositiveIntegerToolConfig(config, "maxTurns");
}
function buildXaiCodeExecutionPayload(params) {
return {
task: params.task,
provider: "xai",
model: params.model,
tookMs: params.tookMs,
content: params.content,
citations: params.citations,
usedCodeExecution: params.usedCodeExecution,
outputTypes: params.outputTypes
};
}
async function requestXaiCodeExecution(params) {
return await requestXaiResponsesTool({
...params,
endpoint: XAI_CODE_EXECUTION_ENDPOINT,
inputText: params.task,
tools: [{ type: "code_interpreter" }],
reasoningEffort: params.model === XAI_DEFAULT_CODE_EXECUTION_MODEL ? "low" : void 0,
errorLabel: "xAI code execution failed"
}, (data) => {
const { content, citations } = requireXaiResponseTextAndCitations(data, "xAI code execution failed");
const outputTypes = Array.isArray(data.output) ? [...new Set(data.output.map((entry) => entry?.type).filter((value) => Boolean(value)))] : [];
return {
content,
citations,
usedCodeExecution: outputTypes.includes("code_interpreter_call"),
outputTypes
};
});
}
//#endregion
//#region extensions/xai/code-execution.ts
function createCodeExecutionTool(options) {
const runtimeConfig = options?.runtimeConfig ?? getRuntimeConfigSnapshot();
const codeExecutionConfig = readPluginCodeExecutionConfig(runtimeConfig ?? void 0) ?? readPluginCodeExecutionConfig(options?.config);
if (!resolveCodeExecutionEnabled({
sourceConfig: options?.config,
runtimeConfig: runtimeConfig ?? void 0,
config: codeExecutionConfig,
auth: options?.auth
})) return null;
return createCodeExecutionToolDefinition(async (_toolCallId, args) => {
const apiKey = await resolveXaiToolApiKeyWithAuth({
runtimeConfig: runtimeConfig ?? void 0,
sourceConfig: options?.config,
auth: options?.auth
});
if (!apiKey) return jsonResult(buildMissingCodeExecutionApiKeyPayload());
const task = readToolStringParam(args, "task", { required: true });
const codeExecutionConfigRecord = readCodeExecutionConfigRecord(codeExecutionConfig);
const model = resolveXaiCodeExecutionModel(codeExecutionConfigRecord);
const maxTurns = resolveXaiCodeExecutionMaxTurns(codeExecutionConfigRecord);
const timeoutSeconds = typeof codeExecutionConfigRecord?.timeoutSeconds === "number" && Number.isFinite(codeExecutionConfigRecord.timeoutSeconds) ? codeExecutionConfigRecord.timeoutSeconds : 30;
const startedAt = Date.now();
const result = await requestXaiCodeExecution({
apiKey,
model,
timeoutSeconds,
maxTurns,
task
});
return jsonResult(buildXaiCodeExecutionPayload({
task,
model,
tookMs: Date.now() - startedAt,
content: result.content,
citations: result.citations,
usedCodeExecution: result.usedCodeExecution,
outputTypes: result.outputTypes
}));
});
}
//#endregion
export { createCodeExecutionTool };