MCPcopy Index your code
hub / github.com/cloudflare/agents / execute

Method execute

packages/codemode/src/executor.ts:208–355  ·  view source on GitHub ↗
(
    code: string,
    providersOrFns:
      | ResolvedProvider[]
      | Record<string, (...args: unknown[]) => Promise<unknown>>
  )

Source from the content-addressed store, hash-verified

206 }
207
208 async execute(
209 code: string,
210 providersOrFns:
211 | ResolvedProvider[]
212 | Record<string, (...args: unknown[]) => Promise<unknown>>
213 ): Promise<ExecuteResult> {
214 // Backwards compat: detect old `execute(code, fns)` signature.
215 let providers: ResolvedProvider[];
216 if (!Array.isArray(providersOrFns)) {
217 console.warn(
218 "[@cloudflare/codemode] Passing raw fns to executor.execute() is deprecated. " +
219 "Use ResolvedProvider[] instead. This will be removed in the next major version."
220 );
221 providers = [{ name: "codemode", fns: providersOrFns }];
222 } else {
223 providers = providersOrFns;
224 }
225
226 const normalized = normalizeCode(code);
227 const timeoutMs = this.#timeout;
228
229 // Validate provider names.
230 const RESERVED_NAMES = new Set(["__dispatchers", "__logs"]);
231 const VALID_IDENT = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/;
232 const seenNames = new Set<string>();
233 for (const provider of providers) {
234 if (RESERVED_NAMES.has(provider.name)) {
235 return {
236 result: undefined,
237 error: `Provider name "${provider.name}" is reserved`
238 };
239 }
240 if (!VALID_IDENT.test(provider.name)) {
241 return {
242 result: undefined,
243 error: `Provider name "${provider.name}" is not a valid JavaScript identifier`
244 };
245 }
246 if (seenNames.has(provider.name)) {
247 return {
248 result: undefined,
249 error: `Duplicate provider name "${provider.name}"`
250 };
251 }
252 seenNames.add(provider.name);
253 }
254
255 // Generate a Proxy global for each provider namespace.
256 const proxyInits = providers.map((p) => {
257 if (p.positionalArgs) {
258 return (
259 ` const ${p.name} = new Proxy({}, {\n` +
260 ` get: (_, toolName) => async (...args) => {\n` +
261 ` const resJson = await __dispatchers.${p.name}.call(String(toolName), JSON.stringify(args));\n` +
262 ` const data = JSON.parse(resJson);\n` +
263 ` if (data.error) throw new Error(data.error);\n` +
264 ` return data.result;\n` +
265 ` }\n` +

Callers 2

handleExecuteFunction · 0.95
onChatMessageMethod · 0.95

Calls 8

normalizeCodeFunction · 0.90
sanitizeToolNameFunction · 0.90
getEntrypointMethod · 0.80
warnMethod · 0.65
getMethod · 0.65
hasMethod · 0.45
addMethod · 0.45
joinMethod · 0.45

Tested by

no test coverage detected