@keystrokehq/keystroke 1.0.13 → 1.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent.cjs +116 -9
- package/dist/agent.cjs.map +1 -1
- package/dist/agent.d.cts +1 -1
- package/dist/agent.d.mts +1 -1
- package/dist/agent.mjs +116 -9
- package/dist/agent.mjs.map +1 -1
- package/dist/{index-Ohwnfidc.d.cts → index-BQEzTb7P.d.cts} +3 -3
- package/dist/index-BQEzTb7P.d.cts.map +1 -0
- package/dist/{index-DdAOmbQc.d.mts → index-ub0OqZXh.d.mts} +3 -3
- package/dist/index-ub0OqZXh.d.mts.map +1 -0
- package/dist/trigger.d.cts +1 -1
- package/dist/trigger.d.mts +1 -1
- package/package.json +3 -3
- package/dist/index-DdAOmbQc.d.mts.map +0 -1
- package/dist/index-Ohwnfidc.d.cts.map +0 -1
package/dist/agent.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { l as ThinkingLevel, u as getModel } from "./index-BByNfhJU.cjs";
|
|
2
|
-
import { A as forceToolChoice, B as runAgentPrompt, C as SubagentToolMetadata, D as defineSubagentTool, E as defineAgent, F as prompt, G as AgentModelId, H as snapshot, I as resolveAgentAssets, J as ThinkingLevelSchema, K as AgentModelIdSchema, L as resolveAgentId, M as messages, N as normalizeAgentDefinition, O as defineTool, P as prepareAgentSession, R as resolveAgentTools, S as SubagentToolInherit, T as createAgent, U as AgentCreateInput, V as runLlm, W as AgentCreateInputSchema, X as resolveAgentModel, Y as parseAgentCreateInput, Z as resolveThinkingLevel, _ as SessionAgentMismatchError, a as AgentDefinitionInput, b as SubagentTool, c as BuildAgentRuntimeContext, d as PromptInput, f as PromptResponse, g as SandboxedAgentRuntime, h as SUBAGENT_TOOL, i as AgentDefinition, j as getSubagentToolMetadata, k as errorMessage, l as DefineSubagentToolInput, m as RunAgentPromptOptions, n as AgentAssetInput, o as AgentRuntime, p as ResolvedAgentAssets, q as DEFAULT_THINKING_LEVEL, r as AgentConfig, s as AgentSnapshot, t as Agent, u as ForcedToolChoice, v as SessionLifecycle, w as buildAgentRuntime, x as SubagentToolDetails, y as SessionLifecycleContext, z as resolveAgentWorkspaceRoot } from "./index-
|
|
2
|
+
import { A as forceToolChoice, B as runAgentPrompt, C as SubagentToolMetadata, D as defineSubagentTool, E as defineAgent, F as prompt, G as AgentModelId, H as snapshot, I as resolveAgentAssets, J as ThinkingLevelSchema, K as AgentModelIdSchema, L as resolveAgentId, M as messages, N as normalizeAgentDefinition, O as defineTool, P as prepareAgentSession, R as resolveAgentTools, S as SubagentToolInherit, T as createAgent, U as AgentCreateInput, V as runLlm, W as AgentCreateInputSchema, X as resolveAgentModel, Y as parseAgentCreateInput, Z as resolveThinkingLevel, _ as SessionAgentMismatchError, a as AgentDefinitionInput, b as SubagentTool, c as BuildAgentRuntimeContext, d as PromptInput, f as PromptResponse, g as SandboxedAgentRuntime, h as SUBAGENT_TOOL, i as AgentDefinition, j as getSubagentToolMetadata, k as errorMessage, l as DefineSubagentToolInput, m as RunAgentPromptOptions, n as AgentAssetInput, o as AgentRuntime, p as ResolvedAgentAssets, q as DEFAULT_THINKING_LEVEL, r as AgentConfig, s as AgentSnapshot, t as Agent, u as ForcedToolChoice, v as SessionLifecycle, w as buildAgentRuntime, x as SubagentToolDetails, y as SessionLifecycleContext, z as resolveAgentWorkspaceRoot } from "./index-BQEzTb7P.cjs";
|
|
3
3
|
import { a as McpDefinition, c as McpServerOptions, d as McpTransport, f as connectMcpDefinition, g as isMcp, h as defineMcp, i as McpConnection, l as McpStdioOptions, m as connectMcpStdio, n as McpAuthOptions, o as McpDefinitionInput, p as connectMcpServer, r as McpCallToolOptions, s as McpHttpTransport, t as ToolCredentialResolver, u as McpStdioTransport } from "./index-BTz2OMAM.cjs";
|
|
4
4
|
import { z as loadAssetManifest } from "./index-DstR-eGs.cjs";
|
|
5
5
|
export { type Agent, type AgentAssetInput, type AgentConfig, type AgentCreateInput, AgentCreateInputSchema, type AgentDefinition, type AgentDefinitionInput, type AgentModelId, AgentModelIdSchema, type AgentRuntime, type AgentSnapshot, type BuildAgentRuntimeContext, DEFAULT_THINKING_LEVEL, type DefineSubagentToolInput, type ForcedToolChoice, type McpAuthOptions, type McpCallToolOptions, type McpConnection, type McpDefinition, type McpDefinitionInput, type McpHttpTransport, type McpServerOptions, type McpStdioOptions, type McpStdioTransport, type McpTransport, type PromptInput, type PromptResponse, type ResolvedAgentAssets, type RunAgentPromptOptions, SUBAGENT_TOOL, type SandboxedAgentRuntime, SessionAgentMismatchError, type SessionLifecycle, type SessionLifecycleContext, type SubagentTool, type SubagentToolDetails, type SubagentToolInherit, type SubagentToolMetadata, type ThinkingLevel, ThinkingLevelSchema, type ToolCredentialResolver, buildAgentRuntime, connectMcpDefinition, connectMcpServer, connectMcpStdio, createAgent, defineAgent, defineMcp, defineSubagentTool, defineTool, errorMessage, forceToolChoice, getModel, getSubagentToolMetadata, isMcp, loadAssetManifest, messages, normalizeAgentDefinition, parseAgentCreateInput, prepareAgentSession, prompt, resolveAgentAssets, resolveAgentId, resolveAgentModel, resolveAgentTools, resolveAgentWorkspaceRoot, resolveThinkingLevel, runAgentPrompt, runLlm, snapshot };
|
package/dist/agent.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { l as ThinkingLevel, u as getModel } from "./index-ClGiGBy7.mjs";
|
|
2
|
-
import { A as forceToolChoice, B as runAgentPrompt, C as SubagentToolMetadata, D as defineSubagentTool, E as defineAgent, F as prompt, G as AgentModelId, H as snapshot, I as resolveAgentAssets, J as ThinkingLevelSchema, K as AgentModelIdSchema, L as resolveAgentId, M as messages, N as normalizeAgentDefinition, O as defineTool, P as prepareAgentSession, R as resolveAgentTools, S as SubagentToolInherit, T as createAgent, U as AgentCreateInput, V as runLlm, W as AgentCreateInputSchema, X as resolveAgentModel, Y as parseAgentCreateInput, Z as resolveThinkingLevel, _ as SessionAgentMismatchError, a as AgentDefinitionInput, b as SubagentTool, c as BuildAgentRuntimeContext, d as PromptInput, f as PromptResponse, g as SandboxedAgentRuntime, h as SUBAGENT_TOOL, i as AgentDefinition, j as getSubagentToolMetadata, k as errorMessage, l as DefineSubagentToolInput, m as RunAgentPromptOptions, n as AgentAssetInput, o as AgentRuntime, p as ResolvedAgentAssets, q as DEFAULT_THINKING_LEVEL, r as AgentConfig, s as AgentSnapshot, t as Agent, u as ForcedToolChoice, v as SessionLifecycle, w as buildAgentRuntime, x as SubagentToolDetails, y as SessionLifecycleContext, z as resolveAgentWorkspaceRoot } from "./index-
|
|
2
|
+
import { A as forceToolChoice, B as runAgentPrompt, C as SubagentToolMetadata, D as defineSubagentTool, E as defineAgent, F as prompt, G as AgentModelId, H as snapshot, I as resolveAgentAssets, J as ThinkingLevelSchema, K as AgentModelIdSchema, L as resolveAgentId, M as messages, N as normalizeAgentDefinition, O as defineTool, P as prepareAgentSession, R as resolveAgentTools, S as SubagentToolInherit, T as createAgent, U as AgentCreateInput, V as runLlm, W as AgentCreateInputSchema, X as resolveAgentModel, Y as parseAgentCreateInput, Z as resolveThinkingLevel, _ as SessionAgentMismatchError, a as AgentDefinitionInput, b as SubagentTool, c as BuildAgentRuntimeContext, d as PromptInput, f as PromptResponse, g as SandboxedAgentRuntime, h as SUBAGENT_TOOL, i as AgentDefinition, j as getSubagentToolMetadata, k as errorMessage, l as DefineSubagentToolInput, m as RunAgentPromptOptions, n as AgentAssetInput, o as AgentRuntime, p as ResolvedAgentAssets, q as DEFAULT_THINKING_LEVEL, r as AgentConfig, s as AgentSnapshot, t as Agent, u as ForcedToolChoice, v as SessionLifecycle, w as buildAgentRuntime, x as SubagentToolDetails, y as SessionLifecycleContext, z as resolveAgentWorkspaceRoot } from "./index-ub0OqZXh.mjs";
|
|
3
3
|
import { a as McpDefinition, c as McpServerOptions, d as McpTransport, f as connectMcpDefinition, g as isMcp, h as defineMcp, i as McpConnection, l as McpStdioOptions, m as connectMcpStdio, n as McpAuthOptions, o as McpDefinitionInput, p as connectMcpServer, r as McpCallToolOptions, s as McpHttpTransport, t as ToolCredentialResolver, u as McpStdioTransport } from "./index-Cq2F2XdS.mjs";
|
|
4
4
|
import { z as loadAssetManifest } from "./index-B3iWqXUd.mjs";
|
|
5
5
|
export { type Agent, type AgentAssetInput, type AgentConfig, type AgentCreateInput, AgentCreateInputSchema, type AgentDefinition, type AgentDefinitionInput, type AgentModelId, AgentModelIdSchema, type AgentRuntime, type AgentSnapshot, type BuildAgentRuntimeContext, DEFAULT_THINKING_LEVEL, type DefineSubagentToolInput, type ForcedToolChoice, type McpAuthOptions, type McpCallToolOptions, type McpConnection, type McpDefinition, type McpDefinitionInput, type McpHttpTransport, type McpServerOptions, type McpStdioOptions, type McpStdioTransport, type McpTransport, type PromptInput, type PromptResponse, type ResolvedAgentAssets, type RunAgentPromptOptions, SUBAGENT_TOOL, type SandboxedAgentRuntime, SessionAgentMismatchError, type SessionLifecycle, type SessionLifecycleContext, type SubagentTool, type SubagentToolDetails, type SubagentToolInherit, type SubagentToolMetadata, type ThinkingLevel, ThinkingLevelSchema, type ToolCredentialResolver, buildAgentRuntime, connectMcpDefinition, connectMcpServer, connectMcpStdio, createAgent, defineAgent, defineMcp, defineSubagentTool, defineTool, errorMessage, forceToolChoice, getModel, getSubagentToolMetadata, isMcp, loadAssetManifest, messages, normalizeAgentDefinition, parseAgentCreateInput, prepareAgentSession, prompt, resolveAgentAssets, resolveAgentId, resolveAgentModel, resolveAgentTools, resolveAgentWorkspaceRoot, resolveThinkingLevel, runAgentPrompt, runLlm, snapshot };
|
package/dist/agent.mjs
CHANGED
|
@@ -5314,10 +5314,29 @@ function validateToolArguments(tool, toolCall) {
|
|
|
5314
5314
|
throw new Error(errorMessage);
|
|
5315
5315
|
}
|
|
5316
5316
|
//#endregion
|
|
5317
|
-
//#region ../agent/dist/schemas-
|
|
5317
|
+
//#region ../agent/dist/schemas-T2usEGaN.mjs
|
|
5318
5318
|
const getModelLoose = getModel;
|
|
5319
|
+
const DEFAULT_GATEWAY_ORIGIN = "https://ai-gateway.vercel.sh";
|
|
5319
5320
|
const AGENT_MODEL_ID_PATTERN = /^[a-z0-9-]+\/.+/;
|
|
5320
5321
|
const AgentModelIdSchema = z.custom((value) => typeof value === "string" && AGENT_MODEL_ID_PATTERN.test(value), "model must be vendor/model-id");
|
|
5322
|
+
const GatewayModelPricingSchema = z.object({
|
|
5323
|
+
input: z.string().optional(),
|
|
5324
|
+
output: z.string().optional(),
|
|
5325
|
+
input_cache_read: z.string().optional()
|
|
5326
|
+
});
|
|
5327
|
+
const GatewayModelResponseSchema = z.object({
|
|
5328
|
+
id: z.string().min(1),
|
|
5329
|
+
name: z.string().optional(),
|
|
5330
|
+
type: z.string().optional(),
|
|
5331
|
+
context_window: z.number().int().positive().optional(),
|
|
5332
|
+
max_tokens: z.number().int().positive().optional(),
|
|
5333
|
+
tags: z.array(z.string()).optional(),
|
|
5334
|
+
pricing: GatewayModelPricingSchema.optional()
|
|
5335
|
+
});
|
|
5336
|
+
function parseGatewayModelResponse(body) {
|
|
5337
|
+
const parsed = GatewayModelResponseSchema.safeParse(body);
|
|
5338
|
+
return parsed.success ? parsed.data : void 0;
|
|
5339
|
+
}
|
|
5321
5340
|
function splitAgentModelId(modelId) {
|
|
5322
5341
|
const slash = modelId.indexOf("/");
|
|
5323
5342
|
return {
|
|
@@ -5348,11 +5367,95 @@ function resolveGatewayBaseUrl() {
|
|
|
5348
5367
|
const projectId = getProjectScopeId();
|
|
5349
5368
|
return `${platformUrl.replace(/\/$/, "")}/internal/projects/${encodeURIComponent(projectId)}/llm`;
|
|
5350
5369
|
}
|
|
5351
|
-
function
|
|
5370
|
+
function resolveGatewayOrigin(baseUrl) {
|
|
5371
|
+
return baseUrl ?? DEFAULT_GATEWAY_ORIGIN;
|
|
5372
|
+
}
|
|
5373
|
+
function pricePerMillion(value) {
|
|
5374
|
+
if (!value) return 0;
|
|
5375
|
+
const perToken = Number(value);
|
|
5376
|
+
if (!Number.isFinite(perToken) || perToken <= 0) return 0;
|
|
5377
|
+
return perToken * 1e6;
|
|
5378
|
+
}
|
|
5379
|
+
function buildGatewayModel(raw, baseUrl) {
|
|
5380
|
+
if (raw.type && raw.type !== "language") return;
|
|
5381
|
+
const tags = raw.tags ?? [];
|
|
5382
|
+
return {
|
|
5383
|
+
id: raw.id,
|
|
5384
|
+
name: raw.name ?? raw.id,
|
|
5385
|
+
api: "anthropic-messages",
|
|
5386
|
+
provider: "vercel-ai-gateway",
|
|
5387
|
+
baseUrl: resolveGatewayOrigin(baseUrl),
|
|
5388
|
+
reasoning: tags.includes("reasoning"),
|
|
5389
|
+
input: tags.includes("vision") ? ["text", "image"] : ["text"],
|
|
5390
|
+
cost: {
|
|
5391
|
+
input: pricePerMillion(raw.pricing?.input),
|
|
5392
|
+
output: pricePerMillion(raw.pricing?.output),
|
|
5393
|
+
cacheRead: pricePerMillion(raw.pricing?.input_cache_read),
|
|
5394
|
+
cacheWrite: 0
|
|
5395
|
+
},
|
|
5396
|
+
contextWindow: raw.context_window ?? 128e3,
|
|
5397
|
+
maxTokens: raw.max_tokens ?? 8192
|
|
5398
|
+
};
|
|
5399
|
+
}
|
|
5400
|
+
const gatewayModelCache = /* @__PURE__ */ new Map();
|
|
5401
|
+
const gatewayModelPending = /* @__PURE__ */ new Map();
|
|
5402
|
+
function gatewayModelCacheKey(modelId, baseUrl) {
|
|
5403
|
+
return `${resolveGatewayOrigin(baseUrl)}::${modelId}`;
|
|
5404
|
+
}
|
|
5405
|
+
function readCachedGatewayModel(cacheKey) {
|
|
5406
|
+
const entry = gatewayModelCache.get(cacheKey);
|
|
5407
|
+
if (!entry) return { cached: false };
|
|
5408
|
+
return {
|
|
5409
|
+
cached: true,
|
|
5410
|
+
model: entry.status === "found" ? entry.model : void 0
|
|
5411
|
+
};
|
|
5412
|
+
}
|
|
5413
|
+
function writeCachedGatewayModel(cacheKey, model) {
|
|
5414
|
+
gatewayModelCache.set(cacheKey, model ? {
|
|
5415
|
+
status: "found",
|
|
5416
|
+
model
|
|
5417
|
+
} : { status: "missing" });
|
|
5418
|
+
}
|
|
5419
|
+
async function fetchGatewayModel(modelId, baseUrl) {
|
|
5420
|
+
const cacheKey = gatewayModelCacheKey(modelId, baseUrl);
|
|
5421
|
+
const cached = readCachedGatewayModel(cacheKey);
|
|
5422
|
+
if (cached.cached) return cached.model;
|
|
5423
|
+
const pending = gatewayModelPending.get(cacheKey);
|
|
5424
|
+
if (pending) return pending;
|
|
5425
|
+
const request = (async () => {
|
|
5426
|
+
const gatewayApiKey = process.env.AI_GATEWAY_API_KEY?.trim();
|
|
5427
|
+
const headers = {};
|
|
5428
|
+
if (gatewayApiKey) headers.authorization = `Bearer ${gatewayApiKey}`;
|
|
5429
|
+
const url = `${resolveGatewayOrigin(baseUrl)}/v1/models/${modelId}`;
|
|
5430
|
+
try {
|
|
5431
|
+
const response = await fetch(url, { headers });
|
|
5432
|
+
if (!response.ok) {
|
|
5433
|
+
writeCachedGatewayModel(cacheKey, void 0);
|
|
5434
|
+
return;
|
|
5435
|
+
}
|
|
5436
|
+
const raw = parseGatewayModelResponse(await response.json());
|
|
5437
|
+
if (!raw) {
|
|
5438
|
+
writeCachedGatewayModel(cacheKey, void 0);
|
|
5439
|
+
return;
|
|
5440
|
+
}
|
|
5441
|
+
const model = buildGatewayModel(raw, baseUrl);
|
|
5442
|
+
writeCachedGatewayModel(cacheKey, model);
|
|
5443
|
+
return model;
|
|
5444
|
+
} catch {
|
|
5445
|
+
writeCachedGatewayModel(cacheKey, void 0);
|
|
5446
|
+
return;
|
|
5447
|
+
} finally {
|
|
5448
|
+
gatewayModelPending.delete(cacheKey);
|
|
5449
|
+
}
|
|
5450
|
+
})();
|
|
5451
|
+
gatewayModelPending.set(cacheKey, request);
|
|
5452
|
+
return request;
|
|
5453
|
+
}
|
|
5454
|
+
async function resolveGatewayModel(modelId) {
|
|
5455
|
+
const baseUrl = resolveGatewayBaseUrl();
|
|
5352
5456
|
for (const candidate of agentModelIdCandidates(modelId)) {
|
|
5353
5457
|
const registered = getModelLoose("vercel-ai-gateway", candidate);
|
|
5354
5458
|
if (registered) {
|
|
5355
|
-
const baseUrl = resolveGatewayBaseUrl();
|
|
5356
5459
|
if (!baseUrl) return registered;
|
|
5357
5460
|
return {
|
|
5358
5461
|
...registered,
|
|
@@ -5360,6 +5463,10 @@ function resolveGatewayModel(modelId) {
|
|
|
5360
5463
|
};
|
|
5361
5464
|
}
|
|
5362
5465
|
}
|
|
5466
|
+
for (const candidate of agentModelIdCandidates(modelId)) {
|
|
5467
|
+
const fetched = await fetchGatewayModel(candidate, baseUrl);
|
|
5468
|
+
if (fetched) return fetched;
|
|
5469
|
+
}
|
|
5363
5470
|
throw new Error(`Unknown gateway model: ${modelId}`);
|
|
5364
5471
|
}
|
|
5365
5472
|
function resolveDirectModel(modelId) {
|
|
@@ -5371,7 +5478,7 @@ function resolveDirectModel(modelId) {
|
|
|
5371
5478
|
throw new Error(`Unknown model: ${modelId}`);
|
|
5372
5479
|
}
|
|
5373
5480
|
/** Resolve a user-authored model id to a pi-ai {@link Model} for the current runtime env. */
|
|
5374
|
-
function resolveAgentModel(modelId) {
|
|
5481
|
+
async function resolveAgentModel(modelId) {
|
|
5375
5482
|
if (shouldUseGatewayTransport()) return resolveGatewayModel(modelId);
|
|
5376
5483
|
return resolveDirectModel(modelId);
|
|
5377
5484
|
}
|
|
@@ -13929,7 +14036,7 @@ function normalizeTitle(raw) {
|
|
|
13929
14036
|
async function generateSessionTitle(message) {
|
|
13930
14037
|
const input = message.trim();
|
|
13931
14038
|
if (!input) return null;
|
|
13932
|
-
return normalizeTitle((await completeSimple(resolveAgentModel(TITLE_MODEL_ID), {
|
|
14039
|
+
return normalizeTitle((await completeSimple(await resolveAgentModel(TITLE_MODEL_ID), {
|
|
13933
14040
|
systemPrompt: TITLE_SYSTEM_PROMPT,
|
|
13934
14041
|
messages: [{
|
|
13935
14042
|
role: "user",
|
|
@@ -14340,7 +14447,7 @@ async function buildAgentRuntime(def, ctx, runPrompt = {}, agentSlug) {
|
|
|
14340
14447
|
return {
|
|
14341
14448
|
...createAgent({
|
|
14342
14449
|
systemPrompt,
|
|
14343
|
-
model: resolveAgentModel(def.model),
|
|
14450
|
+
model: await resolveAgentModel(def.model),
|
|
14344
14451
|
thinkingLevel,
|
|
14345
14452
|
messages: ctx.messages,
|
|
14346
14453
|
tools
|
|
@@ -14518,7 +14625,7 @@ const RESPOND_TOOL_NAME = "respond";
|
|
|
14518
14625
|
const STRUCTURED_OUTPUT_INSTRUCTION = "Respond only by calling `respond` with arguments matching the schema; do not answer in plain text.";
|
|
14519
14626
|
const MAX_OBJECT_ATTEMPTS = 3;
|
|
14520
14627
|
/** Same validation as `defineAgent` — format check before catalog lookup. */
|
|
14521
|
-
function resolvePromptModel(model) {
|
|
14628
|
+
async function resolvePromptModel(model) {
|
|
14522
14629
|
return resolveAgentModel(AgentModelIdSchema.parse(model));
|
|
14523
14630
|
}
|
|
14524
14631
|
/**
|
|
@@ -14569,7 +14676,7 @@ async function recordUsageFromMessage(message, hooks) {
|
|
|
14569
14676
|
if (usage) await hooks?.onUsage?.(usage);
|
|
14570
14677
|
}
|
|
14571
14678
|
async function runPromptText(opts, hooks) {
|
|
14572
|
-
const model = resolvePromptModel(opts.model);
|
|
14679
|
+
const model = await resolvePromptModel(opts.model);
|
|
14573
14680
|
const reasoning = resolvePromptReasoning(opts.thinkingLevel);
|
|
14574
14681
|
const message = await completeSimple(model, {
|
|
14575
14682
|
systemPrompt: opts.system,
|
|
@@ -14590,7 +14697,7 @@ async function runPromptText(opts, hooks) {
|
|
|
14590
14697
|
async function runPromptObject(opts, hooks) {
|
|
14591
14698
|
const schema = opts.outputSchema;
|
|
14592
14699
|
if (!schema) throw new Error("outputSchema is required for structured LLM output");
|
|
14593
|
-
const model = resolvePromptModel(opts.model);
|
|
14700
|
+
const model = await resolvePromptModel(opts.model);
|
|
14594
14701
|
const reasoning = resolvePromptReasoning(opts.thinkingLevel);
|
|
14595
14702
|
const { toolSchema, unwrap } = wrapSchemaForTool(schema);
|
|
14596
14703
|
const tool = buildRespondTool(toolSchema);
|