@mondaydotcomorg/atp-vercel-sdk 0.20.5 → 0.20.7
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/client.js +2 -2
- package/dist/client.js.map +1 -1
- package/dist/index.cjs +15 -19
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +16 -20
- package/dist/index.js.map +1 -1
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +13 -21
- package/dist/tools.js.map +1 -1
- package/package.json +5 -4
- package/src/client.ts +2 -2
- package/src/tools.ts +19 -21
package/dist/client.js
CHANGED
|
@@ -70,7 +70,7 @@ export class VercelAIATPClient {
|
|
|
70
70
|
model: this.model,
|
|
71
71
|
prompt,
|
|
72
72
|
temperature: options?.temperature,
|
|
73
|
-
|
|
73
|
+
maxOutputTokens: options?.maxTokens,
|
|
74
74
|
system: options?.systemPrompt,
|
|
75
75
|
});
|
|
76
76
|
return result.text;
|
|
@@ -82,7 +82,7 @@ export class VercelAIATPClient {
|
|
|
82
82
|
schema,
|
|
83
83
|
system: options?.systemPrompt,
|
|
84
84
|
temperature: options?.temperature,
|
|
85
|
-
|
|
85
|
+
maxOutputTokens: options?.maxTokens,
|
|
86
86
|
});
|
|
87
87
|
return result.object;
|
|
88
88
|
}
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.cjs
CHANGED
|
@@ -85,7 +85,7 @@ var VercelAIATPClient = class {
|
|
|
85
85
|
model: this.model,
|
|
86
86
|
prompt,
|
|
87
87
|
temperature: options?.temperature,
|
|
88
|
-
|
|
88
|
+
maxOutputTokens: options?.maxTokens,
|
|
89
89
|
system: options?.systemPrompt
|
|
90
90
|
});
|
|
91
91
|
return result.text;
|
|
@@ -97,7 +97,7 @@ var VercelAIATPClient = class {
|
|
|
97
97
|
schema,
|
|
98
98
|
system: options?.systemPrompt,
|
|
99
99
|
temperature: options?.temperature,
|
|
100
|
-
|
|
100
|
+
maxOutputTokens: options?.maxTokens
|
|
101
101
|
});
|
|
102
102
|
return result.object;
|
|
103
103
|
}
|
|
@@ -311,16 +311,12 @@ __name(createEventCollector, "createEventCollector");
|
|
|
311
311
|
|
|
312
312
|
// src/tools.ts
|
|
313
313
|
var TOOL_SCHEMAS = {
|
|
314
|
-
[atpClient.ToolNames.EXECUTE_CODE]:
|
|
315
|
-
code:
|
|
314
|
+
[atpClient.ToolNames.EXECUTE_CODE]: atpClient.executeCodeInputSchema.pick({
|
|
315
|
+
code: true
|
|
316
316
|
}),
|
|
317
|
-
[atpClient.ToolNames.EXPLORE_API]:
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
[atpClient.ToolNames.SEARCH_API]: zod.z.object({
|
|
321
|
-
query: zod.z.string().describe("Search query string to find APIs")
|
|
322
|
-
}),
|
|
323
|
-
[atpClient.ToolNames.FETCH_ALL_APIS]: zod.z.object({})
|
|
317
|
+
[atpClient.ToolNames.EXPLORE_API]: atpClient.exploreApiInputSchema,
|
|
318
|
+
[atpClient.ToolNames.SEARCH_API]: atpClient.searchApiInputSchema,
|
|
319
|
+
[atpClient.ToolNames.FETCH_ALL_APIS]: atpClient.fetchAllApisInputSchema
|
|
324
320
|
};
|
|
325
321
|
async function createATPTools(options) {
|
|
326
322
|
const { defaultExecutionConfig, ...clientOptions } = options;
|
|
@@ -330,7 +326,7 @@ async function createATPTools(options) {
|
|
|
330
326
|
const vercelTools = {};
|
|
331
327
|
vercelTools.atp_execute_code = ai.tool({
|
|
332
328
|
description: "Execute TypeScript code in ATP sandbox with access to runtime APIs (atp.llm.*, atp.embedding.*, atp.approval.*)",
|
|
333
|
-
|
|
329
|
+
inputSchema: TOOL_SCHEMAS[atpClient.ToolNames.EXECUTE_CODE],
|
|
334
330
|
execute: /* @__PURE__ */ __name(async ({ code }) => {
|
|
335
331
|
try {
|
|
336
332
|
const result = await client.execute(code, defaultExecutionConfig);
|
|
@@ -362,7 +358,7 @@ async function createATPTools(options) {
|
|
|
362
358
|
});
|
|
363
359
|
vercelTools.atp_explore_api = ai.tool({
|
|
364
360
|
description: "Explore APIs using filesystem-like navigation. Navigate through directories to discover available functions.",
|
|
365
|
-
|
|
361
|
+
inputSchema: TOOL_SCHEMAS[atpClient.ToolNames.EXPLORE_API],
|
|
366
362
|
execute: /* @__PURE__ */ __name(async ({ path }) => {
|
|
367
363
|
try {
|
|
368
364
|
const result = await underlyingClient.exploreAPI(path);
|
|
@@ -380,7 +376,7 @@ async function createATPTools(options) {
|
|
|
380
376
|
});
|
|
381
377
|
vercelTools.atp_search_api = ai.tool({
|
|
382
378
|
description: 'Search for APIs by keyword. Provide search term as string like "add", "math", "user", etc.',
|
|
383
|
-
|
|
379
|
+
inputSchema: TOOL_SCHEMAS[atpClient.ToolNames.SEARCH_API],
|
|
384
380
|
execute: /* @__PURE__ */ __name(async ({ query }) => {
|
|
385
381
|
try {
|
|
386
382
|
const results = await underlyingClient.searchAPI(query);
|
|
@@ -404,7 +400,7 @@ async function createATPTools(options) {
|
|
|
404
400
|
});
|
|
405
401
|
vercelTools.atp_get_type_definitions = ai.tool({
|
|
406
402
|
description: "Get TypeScript type definitions for ATP runtime APIs to understand available functions",
|
|
407
|
-
|
|
403
|
+
inputSchema: zod.z.object({}),
|
|
408
404
|
execute: /* @__PURE__ */ __name(async () => {
|
|
409
405
|
try {
|
|
410
406
|
const types = client.getTypeDefinitions();
|
|
@@ -435,7 +431,7 @@ async function createATPStreamingTools(options) {
|
|
|
435
431
|
const vercelTools = {};
|
|
436
432
|
vercelTools.atp_execute_code = ai.tool({
|
|
437
433
|
description: "Execute TypeScript code in ATP sandbox with streaming events for thinking, tool execution, and text output",
|
|
438
|
-
|
|
434
|
+
inputSchema: TOOL_SCHEMAS[atpClient.ToolNames.EXECUTE_CODE],
|
|
439
435
|
execute: /* @__PURE__ */ __name(async ({ code }) => {
|
|
440
436
|
try {
|
|
441
437
|
const result = await underlyingClient.executeStream(code, defaultExecutionConfig, eventHandler);
|
|
@@ -467,7 +463,7 @@ async function createATPStreamingTools(options) {
|
|
|
467
463
|
});
|
|
468
464
|
vercelTools.atp_explore_api = ai.tool({
|
|
469
465
|
description: "Explore APIs using filesystem-like navigation. Navigate through directories to discover available functions.",
|
|
470
|
-
|
|
466
|
+
inputSchema: TOOL_SCHEMAS[atpClient.ToolNames.EXPLORE_API],
|
|
471
467
|
execute: /* @__PURE__ */ __name(async ({ path }) => {
|
|
472
468
|
try {
|
|
473
469
|
const result = await underlyingClient.exploreAPI(path);
|
|
@@ -485,7 +481,7 @@ async function createATPStreamingTools(options) {
|
|
|
485
481
|
});
|
|
486
482
|
vercelTools.atp_search_api = ai.tool({
|
|
487
483
|
description: 'Search for APIs by keyword. Provide search term as string like "add", "math", "user", etc.',
|
|
488
|
-
|
|
484
|
+
inputSchema: TOOL_SCHEMAS[atpClient.ToolNames.SEARCH_API],
|
|
489
485
|
execute: /* @__PURE__ */ __name(async ({ query }) => {
|
|
490
486
|
try {
|
|
491
487
|
const results = await underlyingClient.searchAPI(query);
|
|
@@ -509,7 +505,7 @@ async function createATPStreamingTools(options) {
|
|
|
509
505
|
});
|
|
510
506
|
vercelTools.atp_get_type_definitions = ai.tool({
|
|
511
507
|
description: "Get TypeScript type definitions for ATP runtime APIs to understand available functions",
|
|
512
|
-
|
|
508
|
+
inputSchema: zod.z.object({}),
|
|
513
509
|
execute: /* @__PURE__ */ __name(async () => {
|
|
514
510
|
try {
|
|
515
511
|
const types = client.getTypeDefinitions();
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/client.ts","../src/event-adapter.ts","../src/tools.ts"],"names":["VercelAIATPClient","client","model","embeddings","approvalHandler","constructor","options","tools","hooks","server","AgentToolProtocolClient","serviceProviders","undefined","serverUrl","baseUrl","headers","Error","provideLLM","call","prompt","handleLLMCall","extract","schema","handleLLMExtract","classify","text","categories","handleLLMClassify","provideEmbedding","embed","handleEmbedding","provideApproval","request","message","context","handleApprovalRequest","connect","init","name","version","getTypeDefinitions","execute","code","config","getUnderlyingClient","result","generateText","temperature","maxTokens","system","systemPrompt","generateObject","object","promptText","join","classification","trim","includes","category","toLowerCase","fallback","approved","timestamp","Date","now","createVercelEventHandler","dataStream","textRunIdPrefix","currentTextRunId","textRunCounter","reasoningRunId","reasoningCounter","toolStack","event","type","ATPEventType","THINKING","data","write","id","delta","content","TOOL_START","isFirstTool","length","push","toolName","apiGroup","transient","TOOL_END","pop","isLastTool","success","duration","error","TEXT","runId","TEXT_END","SOURCE","url","title","sourceId","providerMetadata","aiChat","summary","createdAt","PROGRESS","Math","round","fraction","ERROR","createEventCollector","events","handler","clear","TOOL_SCHEMAS","ToolNames","EXECUTE_CODE","z","string","describe","EXPLORE_API","path","SEARCH_API","query","FETCH_ALL_APIS","createATPTools","defaultExecutionConfig","clientOptions","underlyingClient","vercelTools","atp_execute_code","tool","description","parameters","status","ExecutionStatus","COMPLETED","stats","FAILED","atp_explore_api","exploreAPI","atp_search_api","results","searchAPI","map","r","functionName","signature","count","atp_get_type_definitions","types","createATPStreamingTools","eventHandler","executeStream"],"mappings":"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","file":"index.cjs","sourcesContent":["import { AgentToolProtocolClient } from '@mondaydotcomorg/atp-client';\nimport type { ExecutionResult, ExecutionConfig } from '@mondaydotcomorg/atp-protocol';\nimport { generateObject, generateText } from 'ai';\nimport type {\n\tVercelAIATPClientOptions,\n\tApprovalResponse,\n\tEmbeddingProvider,\n\tApprovalHandler,\n} from './types.js';\n\nexport class VercelAIATPClient {\n\tprivate client: AgentToolProtocolClient;\n\tprivate model: any;\n\tprivate embeddings?: EmbeddingProvider;\n\tprivate approvalHandler?: ApprovalHandler;\n\n\tconstructor(options: VercelAIATPClientOptions) {\n\t\tconst { model, embeddings, tools, approvalHandler, hooks } = options;\n\n\t\tif ('server' in options && options.server) {\n\t\t\tthis.client = new AgentToolProtocolClient({\n\t\t\t\tserver: options.server,\n\t\t\t\thooks,\n\t\t\t\tserviceProviders: tools ? { tools } : undefined,\n\t\t\t});\n\t\t} else if ('serverUrl' in options && options.serverUrl) {\n\t\t\tthis.client = new AgentToolProtocolClient({\n\t\t\t\tbaseUrl: options.serverUrl,\n\t\t\t\theaders: options.headers,\n\t\t\t\thooks,\n\t\t\t\tserviceProviders: tools ? { tools } : undefined,\n\t\t\t});\n\t\t} else {\n\t\t\tthrow new Error('Either serverUrl or server must be provided');\n\t\t}\n\n\t\tthis.model = model;\n\t\tthis.embeddings = embeddings;\n\t\tthis.approvalHandler = approvalHandler;\n\n\t\tthis.client.provideLLM({\n\t\t\tcall: async (prompt: string, options?: any) => {\n\t\t\t\treturn await this.handleLLMCall(prompt, options);\n\t\t\t},\n\t\t\textract: async (prompt: string, schema: any, options?: any) => {\n\t\t\t\treturn await this.handleLLMExtract(prompt, schema, options);\n\t\t\t},\n\t\t\tclassify: async (text: string, categories: string[], options?: any) => {\n\t\t\t\treturn await this.handleLLMClassify(text, categories, options);\n\t\t\t},\n\t\t});\n\n\t\tif (this.embeddings) {\n\t\t\tthis.client.provideEmbedding({\n\t\t\t\tembed: async (text: string) => {\n\t\t\t\t\treturn await this.handleEmbedding(text);\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tthis.client.provideApproval({\n\t\t\trequest: async (message: string, context?: Record<string, unknown>) => {\n\t\t\t\treturn await this.handleApprovalRequest(message, context);\n\t\t\t},\n\t\t});\n\t}\n\n\tasync connect(): Promise<void> {\n\t\tawait this.client.init({ name: 'vercel-ai-sdk-atp-client', version: '1.0.0' });\n\t\tawait this.client.connect();\n\t}\n\n\tgetTypeDefinitions(): string {\n\t\treturn this.client.getTypeDefinitions();\n\t}\n\n\tasync execute(code: string, config?: Partial<ExecutionConfig>): Promise<ExecutionResult> {\n\t\treturn await this.client.execute(code, config);\n\t}\n\n\tgetUnderlyingClient(): AgentToolProtocolClient {\n\t\treturn this.client;\n\t}\n\n\tprivate async handleLLMCall(prompt: string, options?: any): Promise<string> {\n\t\tconst result = await generateText({\n\t\t\tmodel: this.model,\n\t\t\tprompt,\n\t\t\ttemperature: options?.temperature,\n\t\t\tmaxTokens: options?.maxTokens,\n\t\t\tsystem: options?.systemPrompt,\n\t\t});\n\n\t\treturn result.text;\n\t}\n\n\tprivate async handleLLMExtract(prompt: string, schema: any, options?: any): Promise<any> {\n\t\tconst result = await generateObject({\n\t\t\tmodel: this.model,\n\t\t\tprompt,\n\t\t\tschema,\n\t\t\tsystem: options?.systemPrompt,\n\t\t\ttemperature: options?.temperature,\n\t\t\tmaxTokens: options?.maxTokens,\n\t\t});\n\n\t\treturn result.object;\n\t}\n\n\tprivate async handleLLMClassify(\n\t\ttext: string,\n\t\tcategories: string[],\n\t\toptions?: any\n\t): Promise<string> {\n\t\tconst promptText = `Classify the following text into one of these categories: ${categories.join(', ')}\\n\\nText: ${text}\\n\\nRespond with ONLY the category name, nothing else.`;\n\n\t\tconst result = await generateText({\n\t\t\tmodel: this.model,\n\t\t\tprompt: promptText,\n\t\t\tsystem: options?.systemPrompt,\n\t\t\ttemperature: 0,\n\t\t});\n\n\t\tconst classification = result.text.trim();\n\n\t\tif (categories.includes(classification)) {\n\t\t\treturn classification;\n\t\t}\n\n\t\tfor (const category of categories) {\n\t\t\tif (classification.toLowerCase().includes(category.toLowerCase())) {\n\t\t\t\treturn category;\n\t\t\t}\n\t\t}\n\n\t\tconst fallback = categories[0];\n\t\tif (!fallback) {\n\t\t\tthrow new Error('No categories provided for classification');\n\t\t}\n\t\treturn fallback;\n\t}\n\n\tprivate async handleEmbedding(text: string): Promise<number[]> {\n\t\tif (!this.embeddings) {\n\t\t\tthrow new Error(\n\t\t\t\t'Embeddings provider not configured. Pass embeddings option when creating VercelAIATPClient.'\n\t\t\t);\n\t\t}\n\n\t\treturn await this.embeddings.embed(text);\n\t}\n\n\tprivate async handleApprovalRequest(\n\t\tmessage: string,\n\t\tcontext?: Record<string, unknown>\n\t): Promise<ApprovalResponse> {\n\t\tif (!this.approvalHandler) {\n\t\t\tthrow new Error(\n\t\t\t\t'No approval handler configured. Pass approvalHandler option when creating VercelAIATPClient.'\n\t\t\t);\n\t\t}\n\n\t\tconst approved = await this.approvalHandler(message, context);\n\t\treturn {\n\t\t\tapproved,\n\t\t\ttimestamp: Date.now(),\n\t\t};\n\t}\n}\n","/**\n * Vercel AI SDK Event Adapter\n *\n * Converts ATP streaming events to Vercel AI SDK UIMessageStream format.\n * Use this to forward ATP events to the chat UI.\n */\n\nimport { type ATPEvent, ATPEventType } from '@mondaydotcomorg/atp-protocol';\n\n/**\n * UIMessageStreamWriter interface (subset of Vercel AI SDK's UIMessageStreamWriter)\n */\nexport interface UIMessageStreamWriter {\n\twrite(event: UIStreamEvent): void;\n}\n\n/**\n * UI Stream event types that Vercel AI SDK understands\n */\nexport type UIStreamEvent =\n\t| { type: 'text-start'; id: string }\n\t| { type: 'text-delta'; id: string; delta: string }\n\t| { type: 'text-end'; id: string }\n\t| { type: 'reasoning-start'; id: string }\n\t| { type: 'reasoning-delta'; id: string; delta: string }\n\t| { type: 'reasoning-end'; id: string }\n\t| { type: 'source-url'; url: string; title: string; sourceId: string; providerMetadata?: unknown }\n\t| { type: string; data?: unknown; transient?: boolean };\n\n/**\n * Options for creating the Vercel event handler\n */\nexport interface CreateVercelEventHandlerOptions {\n\t/**\n\t * Prefix for generated text run IDs\n\t * @default 'atp-text'\n\t */\n\ttextRunIdPrefix?: string;\n}\n\n/**\n * Creates an event handler that forwards ATP events to a Vercel AI SDK UIMessageStreamWriter.\n *\n * Handles nested tool calls properly:\n * - First tool_start triggers agentStepStart\n * - Inner tool_start/end emit agentStep updates (not start/end)\n * - Last tool_end triggers agentStepEnd\n *\n * @param dataStream - The Vercel AI SDK UIMessageStreamWriter to write events to\n * @param options - Optional configuration\n * @returns An event handler function to pass to ATP's executeStream\n *\n * @example\n * ```typescript\n * const handler = createVercelEventHandler(dataStream);\n *\n * const result = await client.executeStream(code, {}, handler);\n * ```\n */\nexport function createVercelEventHandler(\n\tdataStream: UIMessageStreamWriter,\n\toptions: CreateVercelEventHandlerOptions = {}\n): (event: ATPEvent) => void {\n\tconst { textRunIdPrefix = 'atp-text' } = options;\n\n\tlet currentTextRunId: string | undefined;\n\tlet textRunCounter = 0;\n\n\t// Track reasoning state for proper start/delta/end events\n\tlet reasoningRunId: string | undefined;\n\tlet reasoningCounter = 0;\n\n\t// Track nested tool calls with a stack\n\tconst toolStack: Array<{ toolName: string; apiGroup: string }> = [];\n\n\treturn (event: ATPEvent) => {\n\t\tswitch (event.type) {\n\t\t\tcase ATPEventType.THINKING: {\n\t\t\t\tconst data = event.data as { content: string; step?: string };\n\n\t\t\t\t// Start new reasoning block if needed\n\t\t\t\tif (!reasoningRunId) {\n\t\t\t\t\treasoningRunId = `atp-reasoning-${++reasoningCounter}`;\n\t\t\t\t\tdataStream.write({\n\t\t\t\t\t\ttype: 'reasoning-start',\n\t\t\t\t\t\tid: reasoningRunId,\n\t\t\t\t\t} as UIStreamEvent);\n\t\t\t\t}\n\n\t\t\t\t// Write reasoning delta\n\t\t\t\tdataStream.write({\n\t\t\t\t\ttype: 'reasoning-delta',\n\t\t\t\t\tid: reasoningRunId,\n\t\t\t\t\tdelta: data.content + '\\n',\n\t\t\t\t} as UIStreamEvent);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase ATPEventType.TOOL_START: {\n\t\t\t\tconst data = event.data as { toolName: string; apiGroup: string; input: unknown };\n\t\t\t\tconst isFirstTool = toolStack.length === 0;\n\n\t\t\t\ttoolStack.push({ toolName: data.toolName, apiGroup: data.apiGroup });\n\n\t\t\t\tif (isFirstTool) {\n\t\t\t\t\t// First tool - emit agentStepStart\n\t\t\t\t\tdataStream.write({\n\t\t\t\t\t\ttype: 'data-agentStepStart',\n\t\t\t\t\t\tdata: `Executing ${data.apiGroup}.${data.toolName}...`,\n\t\t\t\t\t\ttransient: true,\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t// Nested tool - emit progress update instead\n\t\t\t\t\tdataStream.write({\n\t\t\t\t\t\ttype: 'data-agentStep',\n\t\t\t\t\t\tdata: `→ ${data.apiGroup}.${data.toolName}`,\n\t\t\t\t\t\ttransient: true,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase ATPEventType.TOOL_END: {\n\t\t\t\tconst data = event.data as {\n\t\t\t\t\ttoolName: string;\n\t\t\t\t\tapiGroup: string;\n\t\t\t\t\toutput: unknown;\n\t\t\t\t\tduration: number;\n\t\t\t\t\tsuccess: boolean;\n\t\t\t\t\terror?: string;\n\t\t\t\t};\n\n\t\t\t\ttoolStack.pop();\n\t\t\t\tconst isLastTool = toolStack.length === 0;\n\n\t\t\t\t// Close reasoning block when outer tool ends\n\t\t\t\tif (isLastTool && reasoningRunId) {\n\t\t\t\t\tdataStream.write({\n\t\t\t\t\t\ttype: 'reasoning-end',\n\t\t\t\t\t\tid: reasoningRunId,\n\t\t\t\t\t} as UIStreamEvent);\n\t\t\t\t\treasoningRunId = undefined;\n\t\t\t\t}\n\n\t\t\t\tif (isLastTool) {\n\t\t\t\t\t// Last tool - emit agentStepEnd\n\t\t\t\t\tdataStream.write({\n\t\t\t\t\t\ttype: 'data-agentStepEnd',\n\t\t\t\t\t\tdata: data.success\n\t\t\t\t\t\t\t? `Completed ${data.apiGroup}.${data.toolName} (${data.duration}ms)`\n\t\t\t\t\t\t\t: `Failed ${data.apiGroup}.${data.toolName}: ${data.error}`,\n\t\t\t\t\t\ttransient: true,\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t// Nested tool finished - emit progress update\n\t\t\t\t\tdataStream.write({\n\t\t\t\t\t\ttype: 'data-agentStep',\n\t\t\t\t\t\tdata: data.success\n\t\t\t\t\t\t\t? `✓ ${data.apiGroup}.${data.toolName} (${data.duration}ms)`\n\t\t\t\t\t\t\t: `✗ ${data.apiGroup}.${data.toolName}: ${data.error}`,\n\t\t\t\t\t\ttransient: true,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase ATPEventType.TEXT: {\n\t\t\t\tconst data = event.data as { text: string };\n\t\t\t\tconst runId = event.runId || `${textRunIdPrefix}-${++textRunCounter}`;\n\n\t\t\t\t// If we're starting a new text run, close the previous one\n\t\t\t\tif (currentTextRunId && currentTextRunId !== runId) {\n\t\t\t\t\tdataStream.write({ type: 'text-end', id: currentTextRunId });\n\t\t\t\t\tcurrentTextRunId = undefined;\n\t\t\t\t}\n\n\t\t\t\t// Start new text run if needed\n\t\t\t\tif (!currentTextRunId || currentTextRunId !== runId) {\n\t\t\t\t\tcurrentTextRunId = runId;\n\t\t\t\t\tdataStream.write({ type: 'text-start', id: currentTextRunId });\n\t\t\t\t}\n\n\t\t\t\t// Write text delta\n\t\t\t\tdataStream.write({\n\t\t\t\t\ttype: 'text-delta',\n\t\t\t\t\tid: currentTextRunId,\n\t\t\t\t\tdelta: data.text,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase ATPEventType.TEXT_END:\n\t\t\t\tif (currentTextRunId) {\n\t\t\t\t\tdataStream.write({ type: 'text-end', id: currentTextRunId });\n\t\t\t\t\tcurrentTextRunId = undefined;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase ATPEventType.SOURCE: {\n\t\t\t\tconst data = event.data as {\n\t\t\t\t\turl: string;\n\t\t\t\t\ttitle: string;\n\t\t\t\t\tsummary?: string;\n\t\t\t\t\tcreatedAt?: string;\n\t\t\t\t};\n\t\t\t\tdataStream.write({\n\t\t\t\t\ttype: 'source-url',\n\t\t\t\t\turl: data.url,\n\t\t\t\t\ttitle: data.title,\n\t\t\t\t\tsourceId: `${data.title}-${event.timestamp}`,\n\t\t\t\t\tproviderMetadata: {\n\t\t\t\t\t\taiChat: {\n\t\t\t\t\t\t\tsummary: data.summary,\n\t\t\t\t\t\t\tcreatedAt: data.createdAt,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase ATPEventType.PROGRESS: {\n\t\t\t\tconst data = event.data as { message: string; fraction: number };\n\t\t\t\tdataStream.write({\n\t\t\t\t\ttype: 'data-agentStep',\n\t\t\t\t\tdata: `${data.message} (${Math.round(data.fraction * 100)}%)`,\n\t\t\t\t\ttransient: true,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase ATPEventType.ERROR: {\n\t\t\t\tconst data = event.data as { message: string; code?: string };\n\t\t\t\tdataStream.write({\n\t\t\t\t\ttype: 'data-error',\n\t\t\t\t\tdata: data.message,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tdefault:\n\t\t\t\t// Forward unknown events as custom data events\n\t\t\t\tdataStream.write({\n\t\t\t\t\ttype: `data-${event.type}`,\n\t\t\t\t\tdata: event.data,\n\t\t\t\t\ttransient: true,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t}\n\t};\n}\n\n/**\n * Creates an event handler that collects events into an array.\n * Useful for testing or post-processing events.\n *\n * @returns Object with handler function and collected events array\n */\nexport function createEventCollector(): {\n\thandler: (event: ATPEvent) => void;\n\tevents: ATPEvent[];\n\tclear: () => void;\n} {\n\tconst events: ATPEvent[] = [];\n\n\treturn {\n\t\thandler: (event: ATPEvent) => {\n\t\t\tevents.push(event);\n\t\t},\n\t\tevents,\n\t\tclear: () => {\n\t\t\tevents.length = 0;\n\t\t},\n\t};\n}\n\n","import { z } from 'zod';\nimport { VercelAIATPClient } from './client.js';\nimport type { CreateATPToolsOptions, ATPToolsResult, StreamingToolsOptions } from './types.js';\nimport { ToolNames } from '@mondaydotcomorg/atp-client';\nimport { ExecutionStatus } from '@mondaydotcomorg/atp-protocol';\nimport { tool } from 'ai';\nimport { createVercelEventHandler } from './event-adapter.js';\n\nconst TOOL_SCHEMAS = {\n\t[ToolNames.EXECUTE_CODE]: z.object({\n\t\tcode: z.string().describe('The JavaScript/TypeScript code to execute'),\n\t}),\n\t[ToolNames.EXPLORE_API]: z.object({\n\t\tpath: z\n\t\t\t.string()\n\t\t\t.describe('The path to explore (e.g., \"/\" for root, \"/openapi\" for OpenAPI group)'),\n\t}),\n\t[ToolNames.SEARCH_API]: z.object({\n\t\tquery: z.string().describe('Search query string to find APIs'),\n\t}),\n\t[ToolNames.FETCH_ALL_APIS]: z.object({}),\n} as const;\n\nexport async function createATPTools(options: CreateATPToolsOptions): Promise<ATPToolsResult> {\n\tconst { defaultExecutionConfig, ...clientOptions } = options;\n\n\tconst client = new VercelAIATPClient(clientOptions);\n\tawait client.connect();\n\n\tconst underlyingClient = client.getUnderlyingClient();\n\tconst vercelTools: Record<string, any> = {};\n\n\tvercelTools.atp_execute_code = tool({\n\t\tdescription:\n\t\t\t'Execute TypeScript code in ATP sandbox with access to runtime APIs (atp.llm.*, atp.embedding.*, atp.approval.*)',\n\t\tparameters: TOOL_SCHEMAS[ToolNames.EXECUTE_CODE],\n\t\texecute: async ({ code }: { code: string }) => {\n\t\t\ttry {\n\t\t\t\tconst result = await client.execute(code, defaultExecutionConfig);\n\n\t\t\t\tif (result.status === ExecutionStatus.COMPLETED) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\tresult: result.result,\n\t\t\t\t\t\tstats: result.stats,\n\t\t\t\t\t};\n\t\t\t\t} else if (result.status === ExecutionStatus.FAILED) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\terror: result.error,\n\t\t\t\t\t\tstats: result.stats,\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\terror: 'Execution in unexpected state: ' + result.status,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} catch (error: any) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: error.message || 'Unknown error',\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t});\n\n\tvercelTools.atp_explore_api = tool({\n\t\tdescription:\n\t\t\t'Explore APIs using filesystem-like navigation. Navigate through directories to discover available functions.',\n\t\tparameters: TOOL_SCHEMAS[ToolNames.EXPLORE_API],\n\t\texecute: async ({ path }: { path: string }) => {\n\t\t\ttry {\n\t\t\t\tconst result = await underlyingClient.exploreAPI(path);\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\tresult,\n\t\t\t\t};\n\t\t\t} catch (error: any) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: error.message,\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t});\n\n\tvercelTools.atp_search_api = tool({\n\t\tdescription:\n\t\t\t'Search for APIs by keyword. Provide search term as string like \"add\", \"math\", \"user\", etc.',\n\t\tparameters: TOOL_SCHEMAS[ToolNames.SEARCH_API],\n\t\texecute: async ({ query }: { query: string }) => {\n\t\t\ttry {\n\t\t\t\tconst results = await underlyingClient.searchAPI(query);\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\tresults: results.map((r: any) => ({\n\t\t\t\t\t\tapiGroup: r.apiGroup,\n\t\t\t\t\t\tfunctionName: r.functionName,\n\t\t\t\t\t\tdescription: r.description,\n\t\t\t\t\t\tsignature: r.signature,\n\t\t\t\t\t})),\n\t\t\t\t\tcount: results.length,\n\t\t\t\t};\n\t\t\t} catch (error: any) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: error.message,\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t});\n\n\tvercelTools.atp_get_type_definitions = tool({\n\t\tdescription:\n\t\t\t'Get TypeScript type definitions for ATP runtime APIs to understand available functions',\n\t\tparameters: z.object({}),\n\t\texecute: async () => {\n\t\t\ttry {\n\t\t\t\tconst types = client.getTypeDefinitions();\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\ttypes,\n\t\t\t\t};\n\t\t\t} catch (error: any) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: error.message,\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t});\n\n\treturn {\n\t\tclient,\n\t\ttools: vercelTools,\n\t};\n}\n\n/**\n * Creates ATP tools with streaming event support.\n * Events from tool execution will be forwarded to the provided dataStream.\n *\n * @param options - Tool creation options including dataStream for event forwarding\n * @returns Promise resolving to client and tools with streaming support\n *\n * @example\n * ```typescript\n * // In your Vercel AI SDK route handler\n * const dataStream = createUIMessageStream({...});\n *\n * const { tools } = await createATPStreamingTools({\n * serverUrl: 'http://localhost:3333',\n * model: openai('gpt-4'),\n * dataStream,\n * });\n *\n * // Use tools in streamText\n * const result = streamText({\n * model: openai('gpt-4'),\n * messages,\n * tools,\n * });\n * ```\n */\nexport async function createATPStreamingTools(\n\toptions: StreamingToolsOptions\n): Promise<ATPToolsResult> {\n\tconst { dataStream, defaultExecutionConfig, ...clientOptions } = options;\n\n\tconst client = new VercelAIATPClient(clientOptions);\n\tawait client.connect();\n\n\tconst eventHandler = createVercelEventHandler(dataStream);\n\tconst underlyingClient = client.getUnderlyingClient();\n\n\tconst vercelTools: Record<string, any> = {};\n\n\tvercelTools.atp_execute_code = tool({\n\t\tdescription:\n\t\t\t'Execute TypeScript code in ATP sandbox with streaming events for thinking, tool execution, and text output',\n\t\tparameters: TOOL_SCHEMAS[ToolNames.EXECUTE_CODE],\n\t\texecute: async ({ code }: { code: string }) => {\n\t\t\ttry {\n\t\t\t\tconst result = await underlyingClient.executeStream(\n\t\t\t\t\tcode,\n\t\t\t\t\tdefaultExecutionConfig,\n\t\t\t\t\teventHandler\n\t\t\t\t);\n\n\t\t\t\tif (result.status === ExecutionStatus.COMPLETED) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\tresult: result.result,\n\t\t\t\t\t\tstats: result.stats,\n\t\t\t\t\t};\n\t\t\t\t} else if (result.status === ExecutionStatus.FAILED) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\terror: result.error,\n\t\t\t\t\t\tstats: result.stats,\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\terror: 'Execution in unexpected state: ' + result.status,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} catch (error: any) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: error.message || 'Unknown error',\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t});\n\n\tvercelTools.atp_explore_api = tool({\n\t\tdescription:\n\t\t\t'Explore APIs using filesystem-like navigation. Navigate through directories to discover available functions.',\n\t\tparameters: TOOL_SCHEMAS[ToolNames.EXPLORE_API],\n\t\texecute: async ({ path }: { path: string }) => {\n\t\t\ttry {\n\t\t\t\tconst result = await underlyingClient.exploreAPI(path);\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\tresult,\n\t\t\t\t};\n\t\t\t} catch (error: any) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: error.message,\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t});\n\n\tvercelTools.atp_search_api = tool({\n\t\tdescription:\n\t\t\t'Search for APIs by keyword. Provide search term as string like \"add\", \"math\", \"user\", etc.',\n\t\tparameters: TOOL_SCHEMAS[ToolNames.SEARCH_API],\n\t\texecute: async ({ query }: { query: string }) => {\n\t\t\ttry {\n\t\t\t\tconst results = await underlyingClient.searchAPI(query);\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\tresults: results.map((r: any) => ({\n\t\t\t\t\t\tapiGroup: r.apiGroup,\n\t\t\t\t\t\tfunctionName: r.functionName,\n\t\t\t\t\t\tdescription: r.description,\n\t\t\t\t\t\tsignature: r.signature,\n\t\t\t\t\t})),\n\t\t\t\t\tcount: results.length,\n\t\t\t\t};\n\t\t\t} catch (error: any) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: error.message,\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t});\n\n\tvercelTools.atp_get_type_definitions = tool({\n\t\tdescription:\n\t\t\t'Get TypeScript type definitions for ATP runtime APIs to understand available functions',\n\t\tparameters: z.object({}),\n\t\texecute: async () => {\n\t\t\ttry {\n\t\t\t\tconst types = client.getTypeDefinitions();\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\ttypes,\n\t\t\t\t};\n\t\t\t} catch (error: any) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: error.message,\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t});\n\n\treturn {\n\t\tclient,\n\t\ttools: vercelTools,\n\t};\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/client.ts","../src/event-adapter.ts","../src/tools.ts"],"names":["VercelAIATPClient","client","model","embeddings","approvalHandler","constructor","options","tools","hooks","server","AgentToolProtocolClient","serviceProviders","undefined","serverUrl","baseUrl","headers","Error","provideLLM","call","prompt","handleLLMCall","extract","schema","handleLLMExtract","classify","text","categories","handleLLMClassify","provideEmbedding","embed","handleEmbedding","provideApproval","request","message","context","handleApprovalRequest","connect","init","name","version","getTypeDefinitions","execute","code","config","getUnderlyingClient","result","generateText","temperature","maxOutputTokens","maxTokens","system","systemPrompt","generateObject","object","promptText","join","classification","trim","includes","category","toLowerCase","fallback","approved","timestamp","Date","now","createVercelEventHandler","dataStream","textRunIdPrefix","currentTextRunId","textRunCounter","reasoningRunId","reasoningCounter","toolStack","event","type","ATPEventType","THINKING","data","write","id","delta","content","TOOL_START","isFirstTool","length","push","toolName","apiGroup","transient","TOOL_END","pop","isLastTool","success","duration","error","TEXT","runId","TEXT_END","SOURCE","url","title","sourceId","providerMetadata","aiChat","summary","createdAt","PROGRESS","Math","round","fraction","ERROR","createEventCollector","events","handler","clear","TOOL_SCHEMAS","ToolNames","EXECUTE_CODE","executeCodeInputSchema","pick","EXPLORE_API","exploreApiInputSchema","SEARCH_API","searchApiInputSchema","FETCH_ALL_APIS","fetchAllApisInputSchema","createATPTools","defaultExecutionConfig","clientOptions","underlyingClient","vercelTools","atp_execute_code","tool","description","inputSchema","status","ExecutionStatus","COMPLETED","stats","FAILED","atp_explore_api","path","exploreAPI","atp_search_api","query","results","searchAPI","map","r","functionName","signature","count","atp_get_type_definitions","z","types","createATPStreamingTools","eventHandler","executeStream"],"mappings":"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","file":"index.cjs","sourcesContent":["import { AgentToolProtocolClient } from '@mondaydotcomorg/atp-client';\nimport type { ExecutionResult, ExecutionConfig } from '@mondaydotcomorg/atp-protocol';\nimport { generateObject, generateText } from 'ai';\nimport type {\n\tVercelAIATPClientOptions,\n\tApprovalResponse,\n\tEmbeddingProvider,\n\tApprovalHandler,\n} from './types.js';\n\nexport class VercelAIATPClient {\n\tprivate client: AgentToolProtocolClient;\n\tprivate model: any;\n\tprivate embeddings?: EmbeddingProvider;\n\tprivate approvalHandler?: ApprovalHandler;\n\n\tconstructor(options: VercelAIATPClientOptions) {\n\t\tconst { model, embeddings, tools, approvalHandler, hooks } = options;\n\n\t\tif ('server' in options && options.server) {\n\t\t\tthis.client = new AgentToolProtocolClient({\n\t\t\t\tserver: options.server,\n\t\t\t\thooks,\n\t\t\t\tserviceProviders: tools ? { tools } : undefined,\n\t\t\t});\n\t\t} else if ('serverUrl' in options && options.serverUrl) {\n\t\t\tthis.client = new AgentToolProtocolClient({\n\t\t\t\tbaseUrl: options.serverUrl,\n\t\t\t\theaders: options.headers,\n\t\t\t\thooks,\n\t\t\t\tserviceProviders: tools ? { tools } : undefined,\n\t\t\t});\n\t\t} else {\n\t\t\tthrow new Error('Either serverUrl or server must be provided');\n\t\t}\n\n\t\tthis.model = model;\n\t\tthis.embeddings = embeddings;\n\t\tthis.approvalHandler = approvalHandler;\n\n\t\tthis.client.provideLLM({\n\t\t\tcall: async (prompt: string, options?: any) => {\n\t\t\t\treturn await this.handleLLMCall(prompt, options);\n\t\t\t},\n\t\t\textract: async (prompt: string, schema: any, options?: any) => {\n\t\t\t\treturn await this.handleLLMExtract(prompt, schema, options);\n\t\t\t},\n\t\t\tclassify: async (text: string, categories: string[], options?: any) => {\n\t\t\t\treturn await this.handleLLMClassify(text, categories, options);\n\t\t\t},\n\t\t});\n\n\t\tif (this.embeddings) {\n\t\t\tthis.client.provideEmbedding({\n\t\t\t\tembed: async (text: string) => {\n\t\t\t\t\treturn await this.handleEmbedding(text);\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tthis.client.provideApproval({\n\t\t\trequest: async (message: string, context?: Record<string, unknown>) => {\n\t\t\t\treturn await this.handleApprovalRequest(message, context);\n\t\t\t},\n\t\t});\n\t}\n\n\tasync connect(): Promise<void> {\n\t\tawait this.client.init({ name: 'vercel-ai-sdk-atp-client', version: '1.0.0' });\n\t\tawait this.client.connect();\n\t}\n\n\tgetTypeDefinitions(): string {\n\t\treturn this.client.getTypeDefinitions();\n\t}\n\n\tasync execute(code: string, config?: Partial<ExecutionConfig>): Promise<ExecutionResult> {\n\t\treturn await this.client.execute(code, config);\n\t}\n\n\tgetUnderlyingClient(): AgentToolProtocolClient {\n\t\treturn this.client;\n\t}\n\n\tprivate async handleLLMCall(prompt: string, options?: any): Promise<string> {\n\t\tconst result = await generateText({\n\t\t\tmodel: this.model,\n\t\t\tprompt,\n\t\t\ttemperature: options?.temperature,\n\t\t\tmaxOutputTokens: options?.maxTokens,\n\t\t\tsystem: options?.systemPrompt,\n\t\t});\n\n\t\treturn result.text;\n\t}\n\n\tprivate async handleLLMExtract(prompt: string, schema: any, options?: any): Promise<any> {\n\t\tconst result = await generateObject({\n\t\t\tmodel: this.model,\n\t\t\tprompt,\n\t\t\tschema,\n\t\t\tsystem: options?.systemPrompt,\n\t\t\ttemperature: options?.temperature,\n\t\t\tmaxOutputTokens: options?.maxTokens,\n\t\t});\n\n\t\treturn result.object;\n\t}\n\n\tprivate async handleLLMClassify(\n\t\ttext: string,\n\t\tcategories: string[],\n\t\toptions?: any\n\t): Promise<string> {\n\t\tconst promptText = `Classify the following text into one of these categories: ${categories.join(', ')}\\n\\nText: ${text}\\n\\nRespond with ONLY the category name, nothing else.`;\n\n\t\tconst result = await generateText({\n\t\t\tmodel: this.model,\n\t\t\tprompt: promptText,\n\t\t\tsystem: options?.systemPrompt,\n\t\t\ttemperature: 0,\n\t\t});\n\n\t\tconst classification = result.text.trim();\n\n\t\tif (categories.includes(classification)) {\n\t\t\treturn classification;\n\t\t}\n\n\t\tfor (const category of categories) {\n\t\t\tif (classification.toLowerCase().includes(category.toLowerCase())) {\n\t\t\t\treturn category;\n\t\t\t}\n\t\t}\n\n\t\tconst fallback = categories[0];\n\t\tif (!fallback) {\n\t\t\tthrow new Error('No categories provided for classification');\n\t\t}\n\t\treturn fallback;\n\t}\n\n\tprivate async handleEmbedding(text: string): Promise<number[]> {\n\t\tif (!this.embeddings) {\n\t\t\tthrow new Error(\n\t\t\t\t'Embeddings provider not configured. Pass embeddings option when creating VercelAIATPClient.'\n\t\t\t);\n\t\t}\n\n\t\treturn await this.embeddings.embed(text);\n\t}\n\n\tprivate async handleApprovalRequest(\n\t\tmessage: string,\n\t\tcontext?: Record<string, unknown>\n\t): Promise<ApprovalResponse> {\n\t\tif (!this.approvalHandler) {\n\t\t\tthrow new Error(\n\t\t\t\t'No approval handler configured. Pass approvalHandler option when creating VercelAIATPClient.'\n\t\t\t);\n\t\t}\n\n\t\tconst approved = await this.approvalHandler(message, context);\n\t\treturn {\n\t\t\tapproved,\n\t\t\ttimestamp: Date.now(),\n\t\t};\n\t}\n}\n","/**\n * Vercel AI SDK Event Adapter\n *\n * Converts ATP streaming events to Vercel AI SDK UIMessageStream format.\n * Use this to forward ATP events to the chat UI.\n */\n\nimport { type ATPEvent, ATPEventType } from '@mondaydotcomorg/atp-protocol';\n\n/**\n * UIMessageStreamWriter interface (subset of Vercel AI SDK's UIMessageStreamWriter)\n */\nexport interface UIMessageStreamWriter {\n\twrite(event: UIStreamEvent): void;\n}\n\n/**\n * UI Stream event types that Vercel AI SDK understands\n */\nexport type UIStreamEvent =\n\t| { type: 'text-start'; id: string }\n\t| { type: 'text-delta'; id: string; delta: string }\n\t| { type: 'text-end'; id: string }\n\t| { type: 'reasoning-start'; id: string }\n\t| { type: 'reasoning-delta'; id: string; delta: string }\n\t| { type: 'reasoning-end'; id: string }\n\t| { type: 'source-url'; url: string; title: string; sourceId: string; providerMetadata?: unknown }\n\t| { type: string; data?: unknown; transient?: boolean };\n\n/**\n * Options for creating the Vercel event handler\n */\nexport interface CreateVercelEventHandlerOptions {\n\t/**\n\t * Prefix for generated text run IDs\n\t * @default 'atp-text'\n\t */\n\ttextRunIdPrefix?: string;\n}\n\n/**\n * Creates an event handler that forwards ATP events to a Vercel AI SDK UIMessageStreamWriter.\n *\n * Handles nested tool calls properly:\n * - First tool_start triggers agentStepStart\n * - Inner tool_start/end emit agentStep updates (not start/end)\n * - Last tool_end triggers agentStepEnd\n *\n * @param dataStream - The Vercel AI SDK UIMessageStreamWriter to write events to\n * @param options - Optional configuration\n * @returns An event handler function to pass to ATP's executeStream\n *\n * @example\n * ```typescript\n * const handler = createVercelEventHandler(dataStream);\n *\n * const result = await client.executeStream(code, {}, handler);\n * ```\n */\nexport function createVercelEventHandler(\n\tdataStream: UIMessageStreamWriter,\n\toptions: CreateVercelEventHandlerOptions = {}\n): (event: ATPEvent) => void {\n\tconst { textRunIdPrefix = 'atp-text' } = options;\n\n\tlet currentTextRunId: string | undefined;\n\tlet textRunCounter = 0;\n\n\t// Track reasoning state for proper start/delta/end events\n\tlet reasoningRunId: string | undefined;\n\tlet reasoningCounter = 0;\n\n\t// Track nested tool calls with a stack\n\tconst toolStack: Array<{ toolName: string; apiGroup: string }> = [];\n\n\treturn (event: ATPEvent) => {\n\t\tswitch (event.type) {\n\t\t\tcase ATPEventType.THINKING: {\n\t\t\t\tconst data = event.data as { content: string; step?: string };\n\n\t\t\t\t// Start new reasoning block if needed\n\t\t\t\tif (!reasoningRunId) {\n\t\t\t\t\treasoningRunId = `atp-reasoning-${++reasoningCounter}`;\n\t\t\t\t\tdataStream.write({\n\t\t\t\t\t\ttype: 'reasoning-start',\n\t\t\t\t\t\tid: reasoningRunId,\n\t\t\t\t\t} as UIStreamEvent);\n\t\t\t\t}\n\n\t\t\t\t// Write reasoning delta\n\t\t\t\tdataStream.write({\n\t\t\t\t\ttype: 'reasoning-delta',\n\t\t\t\t\tid: reasoningRunId,\n\t\t\t\t\tdelta: data.content + '\\n',\n\t\t\t\t} as UIStreamEvent);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase ATPEventType.TOOL_START: {\n\t\t\t\tconst data = event.data as { toolName: string; apiGroup: string; input: unknown };\n\t\t\t\tconst isFirstTool = toolStack.length === 0;\n\n\t\t\t\ttoolStack.push({ toolName: data.toolName, apiGroup: data.apiGroup });\n\n\t\t\t\tif (isFirstTool) {\n\t\t\t\t\t// First tool - emit agentStepStart\n\t\t\t\t\tdataStream.write({\n\t\t\t\t\t\ttype: 'data-agentStepStart',\n\t\t\t\t\t\tdata: `Executing ${data.apiGroup}.${data.toolName}...`,\n\t\t\t\t\t\ttransient: true,\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t// Nested tool - emit progress update instead\n\t\t\t\t\tdataStream.write({\n\t\t\t\t\t\ttype: 'data-agentStep',\n\t\t\t\t\t\tdata: `→ ${data.apiGroup}.${data.toolName}`,\n\t\t\t\t\t\ttransient: true,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase ATPEventType.TOOL_END: {\n\t\t\t\tconst data = event.data as {\n\t\t\t\t\ttoolName: string;\n\t\t\t\t\tapiGroup: string;\n\t\t\t\t\toutput: unknown;\n\t\t\t\t\tduration: number;\n\t\t\t\t\tsuccess: boolean;\n\t\t\t\t\terror?: string;\n\t\t\t\t};\n\n\t\t\t\ttoolStack.pop();\n\t\t\t\tconst isLastTool = toolStack.length === 0;\n\n\t\t\t\t// Close reasoning block when outer tool ends\n\t\t\t\tif (isLastTool && reasoningRunId) {\n\t\t\t\t\tdataStream.write({\n\t\t\t\t\t\ttype: 'reasoning-end',\n\t\t\t\t\t\tid: reasoningRunId,\n\t\t\t\t\t} as UIStreamEvent);\n\t\t\t\t\treasoningRunId = undefined;\n\t\t\t\t}\n\n\t\t\t\tif (isLastTool) {\n\t\t\t\t\t// Last tool - emit agentStepEnd\n\t\t\t\t\tdataStream.write({\n\t\t\t\t\t\ttype: 'data-agentStepEnd',\n\t\t\t\t\t\tdata: data.success\n\t\t\t\t\t\t\t? `Completed ${data.apiGroup}.${data.toolName} (${data.duration}ms)`\n\t\t\t\t\t\t\t: `Failed ${data.apiGroup}.${data.toolName}: ${data.error}`,\n\t\t\t\t\t\ttransient: true,\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t// Nested tool finished - emit progress update\n\t\t\t\t\tdataStream.write({\n\t\t\t\t\t\ttype: 'data-agentStep',\n\t\t\t\t\t\tdata: data.success\n\t\t\t\t\t\t\t? `✓ ${data.apiGroup}.${data.toolName} (${data.duration}ms)`\n\t\t\t\t\t\t\t: `✗ ${data.apiGroup}.${data.toolName}: ${data.error}`,\n\t\t\t\t\t\ttransient: true,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase ATPEventType.TEXT: {\n\t\t\t\tconst data = event.data as { text: string };\n\t\t\t\tconst runId = event.runId || `${textRunIdPrefix}-${++textRunCounter}`;\n\n\t\t\t\t// If we're starting a new text run, close the previous one\n\t\t\t\tif (currentTextRunId && currentTextRunId !== runId) {\n\t\t\t\t\tdataStream.write({ type: 'text-end', id: currentTextRunId });\n\t\t\t\t\tcurrentTextRunId = undefined;\n\t\t\t\t}\n\n\t\t\t\t// Start new text run if needed\n\t\t\t\tif (!currentTextRunId || currentTextRunId !== runId) {\n\t\t\t\t\tcurrentTextRunId = runId;\n\t\t\t\t\tdataStream.write({ type: 'text-start', id: currentTextRunId });\n\t\t\t\t}\n\n\t\t\t\t// Write text delta\n\t\t\t\tdataStream.write({\n\t\t\t\t\ttype: 'text-delta',\n\t\t\t\t\tid: currentTextRunId,\n\t\t\t\t\tdelta: data.text,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase ATPEventType.TEXT_END:\n\t\t\t\tif (currentTextRunId) {\n\t\t\t\t\tdataStream.write({ type: 'text-end', id: currentTextRunId });\n\t\t\t\t\tcurrentTextRunId = undefined;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase ATPEventType.SOURCE: {\n\t\t\t\tconst data = event.data as {\n\t\t\t\t\turl: string;\n\t\t\t\t\ttitle: string;\n\t\t\t\t\tsummary?: string;\n\t\t\t\t\tcreatedAt?: string;\n\t\t\t\t};\n\t\t\t\tdataStream.write({\n\t\t\t\t\ttype: 'source-url',\n\t\t\t\t\turl: data.url,\n\t\t\t\t\ttitle: data.title,\n\t\t\t\t\tsourceId: `${data.title}-${event.timestamp}`,\n\t\t\t\t\tproviderMetadata: {\n\t\t\t\t\t\taiChat: {\n\t\t\t\t\t\t\tsummary: data.summary,\n\t\t\t\t\t\t\tcreatedAt: data.createdAt,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase ATPEventType.PROGRESS: {\n\t\t\t\tconst data = event.data as { message: string; fraction: number };\n\t\t\t\tdataStream.write({\n\t\t\t\t\ttype: 'data-agentStep',\n\t\t\t\t\tdata: `${data.message} (${Math.round(data.fraction * 100)}%)`,\n\t\t\t\t\ttransient: true,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase ATPEventType.ERROR: {\n\t\t\t\tconst data = event.data as { message: string; code?: string };\n\t\t\t\tdataStream.write({\n\t\t\t\t\ttype: 'data-error',\n\t\t\t\t\tdata: data.message,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tdefault:\n\t\t\t\t// Forward unknown events as custom data events\n\t\t\t\tdataStream.write({\n\t\t\t\t\ttype: `data-${event.type}`,\n\t\t\t\t\tdata: event.data,\n\t\t\t\t\ttransient: true,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t}\n\t};\n}\n\n/**\n * Creates an event handler that collects events into an array.\n * Useful for testing or post-processing events.\n *\n * @returns Object with handler function and collected events array\n */\nexport function createEventCollector(): {\n\thandler: (event: ATPEvent) => void;\n\tevents: ATPEvent[];\n\tclear: () => void;\n} {\n\tconst events: ATPEvent[] = [];\n\n\treturn {\n\t\thandler: (event: ATPEvent) => {\n\t\t\tevents.push(event);\n\t\t},\n\t\tevents,\n\t\tclear: () => {\n\t\t\tevents.length = 0;\n\t\t},\n\t};\n}\n\n","import { z } from 'zod';\nimport { VercelAIATPClient } from './client.js';\nimport type { CreateATPToolsOptions, ATPToolsResult, StreamingToolsOptions } from './types.js';\nimport {\n\tToolNames,\n\texecuteCodeInputSchema,\n\texploreApiInputSchema,\n\tsearchApiInputSchema,\n\tfetchAllApisInputSchema,\n} from '@mondaydotcomorg/atp-client';\nimport { ExecutionStatus } from '@mondaydotcomorg/atp-protocol';\nimport { tool } from 'ai';\nimport { createVercelEventHandler } from './event-adapter.js';\n\nconst TOOL_SCHEMAS = {\n\t[ToolNames.EXECUTE_CODE]: executeCodeInputSchema.pick({ code: true }),\n\t[ToolNames.EXPLORE_API]: exploreApiInputSchema,\n\t[ToolNames.SEARCH_API]: searchApiInputSchema,\n\t[ToolNames.FETCH_ALL_APIS]: fetchAllApisInputSchema,\n} as const;\n\nexport async function createATPTools(options: CreateATPToolsOptions): Promise<ATPToolsResult> {\n\tconst { defaultExecutionConfig, ...clientOptions } = options;\n\n\tconst client = new VercelAIATPClient(clientOptions);\n\tawait client.connect();\n\n\tconst underlyingClient = client.getUnderlyingClient();\n\tconst vercelTools: Record<string, any> = {};\n\n\tvercelTools.atp_execute_code = tool({\n\t\tdescription:\n\t\t\t'Execute TypeScript code in ATP sandbox with access to runtime APIs (atp.llm.*, atp.embedding.*, atp.approval.*)',\n\t\tinputSchema: TOOL_SCHEMAS[ToolNames.EXECUTE_CODE],\n\t\texecute: async ({ code }: { code: string }) => {\n\t\t\ttry {\n\t\t\t\tconst result = await client.execute(code, defaultExecutionConfig);\n\n\t\t\t\tif (result.status === ExecutionStatus.COMPLETED) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\tresult: result.result,\n\t\t\t\t\t\tstats: result.stats,\n\t\t\t\t\t};\n\t\t\t\t} else if (result.status === ExecutionStatus.FAILED) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\terror: result.error,\n\t\t\t\t\t\tstats: result.stats,\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\terror: 'Execution in unexpected state: ' + result.status,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} catch (error: any) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: error.message || 'Unknown error',\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t});\n\n\tvercelTools.atp_explore_api = tool({\n\t\tdescription:\n\t\t\t'Explore APIs using filesystem-like navigation. Navigate through directories to discover available functions.',\n\t\tinputSchema: TOOL_SCHEMAS[ToolNames.EXPLORE_API],\n\t\texecute: async ({ path }: { path: string }) => {\n\t\t\ttry {\n\t\t\t\tconst result = await underlyingClient.exploreAPI(path);\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\tresult,\n\t\t\t\t};\n\t\t\t} catch (error: any) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: error.message,\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t});\n\n\tvercelTools.atp_search_api = tool({\n\t\tdescription:\n\t\t\t'Search for APIs by keyword. Provide search term as string like \"add\", \"math\", \"user\", etc.',\n\t\tinputSchema: TOOL_SCHEMAS[ToolNames.SEARCH_API],\n\t\texecute: async ({ query }: { query: string }) => {\n\t\t\ttry {\n\t\t\t\tconst results = await underlyingClient.searchAPI(query);\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\tresults: results.map((r: any) => ({\n\t\t\t\t\t\tapiGroup: r.apiGroup,\n\t\t\t\t\t\tfunctionName: r.functionName,\n\t\t\t\t\t\tdescription: r.description,\n\t\t\t\t\t\tsignature: r.signature,\n\t\t\t\t\t})),\n\t\t\t\t\tcount: results.length,\n\t\t\t\t};\n\t\t\t} catch (error: any) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: error.message,\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t});\n\n\tvercelTools.atp_get_type_definitions = tool({\n\t\tdescription:\n\t\t\t'Get TypeScript type definitions for ATP runtime APIs to understand available functions',\n\t\tinputSchema: z.object({}),\n\t\texecute: async () => {\n\t\t\ttry {\n\t\t\t\tconst types = client.getTypeDefinitions();\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\ttypes,\n\t\t\t\t};\n\t\t\t} catch (error: any) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: error.message,\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t});\n\n\treturn {\n\t\tclient,\n\t\ttools: vercelTools,\n\t};\n}\n\n/**\n * Creates ATP tools with streaming event support.\n * Events from tool execution will be forwarded to the provided dataStream.\n *\n * @param options - Tool creation options including dataStream for event forwarding\n * @returns Promise resolving to client and tools with streaming support\n *\n * @example\n * ```typescript\n * // In your Vercel AI SDK route handler\n * const dataStream = createUIMessageStream({...});\n *\n * const { tools } = await createATPStreamingTools({\n * serverUrl: 'http://localhost:3333',\n * model: openai('gpt-4'),\n * dataStream,\n * });\n *\n * // Use tools in streamText\n * const result = streamText({\n * model: openai('gpt-4'),\n * messages,\n * tools,\n * });\n * ```\n */\nexport async function createATPStreamingTools(\n\toptions: StreamingToolsOptions\n): Promise<ATPToolsResult> {\n\tconst { dataStream, defaultExecutionConfig, ...clientOptions } = options;\n\n\tconst client = new VercelAIATPClient(clientOptions);\n\tawait client.connect();\n\n\tconst eventHandler = createVercelEventHandler(dataStream);\n\tconst underlyingClient = client.getUnderlyingClient();\n\n\tconst vercelTools: Record<string, any> = {};\n\n\tvercelTools.atp_execute_code = tool({\n\t\tdescription:\n\t\t\t'Execute TypeScript code in ATP sandbox with streaming events for thinking, tool execution, and text output',\n\t\tinputSchema: TOOL_SCHEMAS[ToolNames.EXECUTE_CODE],\n\t\texecute: async ({ code }: { code: string }) => {\n\t\t\ttry {\n\t\t\t\tconst result = await underlyingClient.executeStream(\n\t\t\t\t\tcode,\n\t\t\t\t\tdefaultExecutionConfig,\n\t\t\t\t\teventHandler\n\t\t\t\t);\n\n\t\t\t\tif (result.status === ExecutionStatus.COMPLETED) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\tresult: result.result,\n\t\t\t\t\t\tstats: result.stats,\n\t\t\t\t\t};\n\t\t\t\t} else if (result.status === ExecutionStatus.FAILED) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\terror: result.error,\n\t\t\t\t\t\tstats: result.stats,\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\terror: 'Execution in unexpected state: ' + result.status,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} catch (error: any) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: error.message || 'Unknown error',\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t});\n\n\tvercelTools.atp_explore_api = tool({\n\t\tdescription:\n\t\t\t'Explore APIs using filesystem-like navigation. Navigate through directories to discover available functions.',\n\t\tinputSchema: TOOL_SCHEMAS[ToolNames.EXPLORE_API],\n\t\texecute: async ({ path }: { path: string }) => {\n\t\t\ttry {\n\t\t\t\tconst result = await underlyingClient.exploreAPI(path);\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\tresult,\n\t\t\t\t};\n\t\t\t} catch (error: any) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: error.message,\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t});\n\n\tvercelTools.atp_search_api = tool({\n\t\tdescription:\n\t\t\t'Search for APIs by keyword. Provide search term as string like \"add\", \"math\", \"user\", etc.',\n\t\tinputSchema: TOOL_SCHEMAS[ToolNames.SEARCH_API],\n\t\texecute: async ({ query }: { query: string }) => {\n\t\t\ttry {\n\t\t\t\tconst results = await underlyingClient.searchAPI(query);\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\tresults: results.map((r: any) => ({\n\t\t\t\t\t\tapiGroup: r.apiGroup,\n\t\t\t\t\t\tfunctionName: r.functionName,\n\t\t\t\t\t\tdescription: r.description,\n\t\t\t\t\t\tsignature: r.signature,\n\t\t\t\t\t})),\n\t\t\t\t\tcount: results.length,\n\t\t\t\t};\n\t\t\t} catch (error: any) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: error.message,\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t});\n\n\tvercelTools.atp_get_type_definitions = tool({\n\t\tdescription:\n\t\t\t'Get TypeScript type definitions for ATP runtime APIs to understand available functions',\n\t\tinputSchema: z.object({}),\n\t\texecute: async () => {\n\t\t\ttry {\n\t\t\t\tconst types = client.getTypeDefinitions();\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\ttypes,\n\t\t\t\t};\n\t\t\t} catch (error: any) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: error.message,\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t});\n\n\treturn {\n\t\tclient,\n\t\ttools: vercelTools,\n\t};\n}\n"]}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AgentToolProtocolClient, ToolNames } from '@mondaydotcomorg/atp-client';
|
|
1
|
+
import { AgentToolProtocolClient, ToolNames, fetchAllApisInputSchema, searchApiInputSchema, exploreApiInputSchema, executeCodeInputSchema } from '@mondaydotcomorg/atp-client';
|
|
2
2
|
import { generateText, generateObject, tool } from 'ai';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import { ATPEventType, ExecutionStatus } from '@mondaydotcomorg/atp-protocol';
|
|
@@ -83,7 +83,7 @@ var VercelAIATPClient = class {
|
|
|
83
83
|
model: this.model,
|
|
84
84
|
prompt,
|
|
85
85
|
temperature: options?.temperature,
|
|
86
|
-
|
|
86
|
+
maxOutputTokens: options?.maxTokens,
|
|
87
87
|
system: options?.systemPrompt
|
|
88
88
|
});
|
|
89
89
|
return result.text;
|
|
@@ -95,7 +95,7 @@ var VercelAIATPClient = class {
|
|
|
95
95
|
schema,
|
|
96
96
|
system: options?.systemPrompt,
|
|
97
97
|
temperature: options?.temperature,
|
|
98
|
-
|
|
98
|
+
maxOutputTokens: options?.maxTokens
|
|
99
99
|
});
|
|
100
100
|
return result.object;
|
|
101
101
|
}
|
|
@@ -309,16 +309,12 @@ __name(createEventCollector, "createEventCollector");
|
|
|
309
309
|
|
|
310
310
|
// src/tools.ts
|
|
311
311
|
var TOOL_SCHEMAS = {
|
|
312
|
-
[ToolNames.EXECUTE_CODE]:
|
|
313
|
-
code:
|
|
312
|
+
[ToolNames.EXECUTE_CODE]: executeCodeInputSchema.pick({
|
|
313
|
+
code: true
|
|
314
314
|
}),
|
|
315
|
-
[ToolNames.EXPLORE_API]:
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
[ToolNames.SEARCH_API]: z.object({
|
|
319
|
-
query: z.string().describe("Search query string to find APIs")
|
|
320
|
-
}),
|
|
321
|
-
[ToolNames.FETCH_ALL_APIS]: z.object({})
|
|
315
|
+
[ToolNames.EXPLORE_API]: exploreApiInputSchema,
|
|
316
|
+
[ToolNames.SEARCH_API]: searchApiInputSchema,
|
|
317
|
+
[ToolNames.FETCH_ALL_APIS]: fetchAllApisInputSchema
|
|
322
318
|
};
|
|
323
319
|
async function createATPTools(options) {
|
|
324
320
|
const { defaultExecutionConfig, ...clientOptions } = options;
|
|
@@ -328,7 +324,7 @@ async function createATPTools(options) {
|
|
|
328
324
|
const vercelTools = {};
|
|
329
325
|
vercelTools.atp_execute_code = tool({
|
|
330
326
|
description: "Execute TypeScript code in ATP sandbox with access to runtime APIs (atp.llm.*, atp.embedding.*, atp.approval.*)",
|
|
331
|
-
|
|
327
|
+
inputSchema: TOOL_SCHEMAS[ToolNames.EXECUTE_CODE],
|
|
332
328
|
execute: /* @__PURE__ */ __name(async ({ code }) => {
|
|
333
329
|
try {
|
|
334
330
|
const result = await client.execute(code, defaultExecutionConfig);
|
|
@@ -360,7 +356,7 @@ async function createATPTools(options) {
|
|
|
360
356
|
});
|
|
361
357
|
vercelTools.atp_explore_api = tool({
|
|
362
358
|
description: "Explore APIs using filesystem-like navigation. Navigate through directories to discover available functions.",
|
|
363
|
-
|
|
359
|
+
inputSchema: TOOL_SCHEMAS[ToolNames.EXPLORE_API],
|
|
364
360
|
execute: /* @__PURE__ */ __name(async ({ path }) => {
|
|
365
361
|
try {
|
|
366
362
|
const result = await underlyingClient.exploreAPI(path);
|
|
@@ -378,7 +374,7 @@ async function createATPTools(options) {
|
|
|
378
374
|
});
|
|
379
375
|
vercelTools.atp_search_api = tool({
|
|
380
376
|
description: 'Search for APIs by keyword. Provide search term as string like "add", "math", "user", etc.',
|
|
381
|
-
|
|
377
|
+
inputSchema: TOOL_SCHEMAS[ToolNames.SEARCH_API],
|
|
382
378
|
execute: /* @__PURE__ */ __name(async ({ query }) => {
|
|
383
379
|
try {
|
|
384
380
|
const results = await underlyingClient.searchAPI(query);
|
|
@@ -402,7 +398,7 @@ async function createATPTools(options) {
|
|
|
402
398
|
});
|
|
403
399
|
vercelTools.atp_get_type_definitions = tool({
|
|
404
400
|
description: "Get TypeScript type definitions for ATP runtime APIs to understand available functions",
|
|
405
|
-
|
|
401
|
+
inputSchema: z.object({}),
|
|
406
402
|
execute: /* @__PURE__ */ __name(async () => {
|
|
407
403
|
try {
|
|
408
404
|
const types = client.getTypeDefinitions();
|
|
@@ -433,7 +429,7 @@ async function createATPStreamingTools(options) {
|
|
|
433
429
|
const vercelTools = {};
|
|
434
430
|
vercelTools.atp_execute_code = tool({
|
|
435
431
|
description: "Execute TypeScript code in ATP sandbox with streaming events for thinking, tool execution, and text output",
|
|
436
|
-
|
|
432
|
+
inputSchema: TOOL_SCHEMAS[ToolNames.EXECUTE_CODE],
|
|
437
433
|
execute: /* @__PURE__ */ __name(async ({ code }) => {
|
|
438
434
|
try {
|
|
439
435
|
const result = await underlyingClient.executeStream(code, defaultExecutionConfig, eventHandler);
|
|
@@ -465,7 +461,7 @@ async function createATPStreamingTools(options) {
|
|
|
465
461
|
});
|
|
466
462
|
vercelTools.atp_explore_api = tool({
|
|
467
463
|
description: "Explore APIs using filesystem-like navigation. Navigate through directories to discover available functions.",
|
|
468
|
-
|
|
464
|
+
inputSchema: TOOL_SCHEMAS[ToolNames.EXPLORE_API],
|
|
469
465
|
execute: /* @__PURE__ */ __name(async ({ path }) => {
|
|
470
466
|
try {
|
|
471
467
|
const result = await underlyingClient.exploreAPI(path);
|
|
@@ -483,7 +479,7 @@ async function createATPStreamingTools(options) {
|
|
|
483
479
|
});
|
|
484
480
|
vercelTools.atp_search_api = tool({
|
|
485
481
|
description: 'Search for APIs by keyword. Provide search term as string like "add", "math", "user", etc.',
|
|
486
|
-
|
|
482
|
+
inputSchema: TOOL_SCHEMAS[ToolNames.SEARCH_API],
|
|
487
483
|
execute: /* @__PURE__ */ __name(async ({ query }) => {
|
|
488
484
|
try {
|
|
489
485
|
const results = await underlyingClient.searchAPI(query);
|
|
@@ -507,7 +503,7 @@ async function createATPStreamingTools(options) {
|
|
|
507
503
|
});
|
|
508
504
|
vercelTools.atp_get_type_definitions = tool({
|
|
509
505
|
description: "Get TypeScript type definitions for ATP runtime APIs to understand available functions",
|
|
510
|
-
|
|
506
|
+
inputSchema: z.object({}),
|
|
511
507
|
execute: /* @__PURE__ */ __name(async () => {
|
|
512
508
|
try {
|
|
513
509
|
const types = client.getTypeDefinitions();
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/client.ts","../src/event-adapter.ts","../src/tools.ts"],"names":["VercelAIATPClient","client","model","embeddings","approvalHandler","constructor","options","tools","hooks","server","AgentToolProtocolClient","serviceProviders","undefined","serverUrl","baseUrl","headers","Error","provideLLM","call","prompt","handleLLMCall","extract","schema","handleLLMExtract","classify","text","categories","handleLLMClassify","provideEmbedding","embed","handleEmbedding","provideApproval","request","message","context","handleApprovalRequest","connect","init","name","version","getTypeDefinitions","execute","code","config","getUnderlyingClient","result","generateText","temperature","maxTokens","system","systemPrompt","generateObject","object","promptText","join","classification","trim","includes","category","toLowerCase","fallback","approved","timestamp","Date","now","createVercelEventHandler","dataStream","textRunIdPrefix","currentTextRunId","textRunCounter","reasoningRunId","reasoningCounter","toolStack","event","type","ATPEventType","THINKING","data","write","id","delta","content","TOOL_START","isFirstTool","length","push","toolName","apiGroup","transient","TOOL_END","pop","isLastTool","success","duration","error","TEXT","runId","TEXT_END","SOURCE","url","title","sourceId","providerMetadata","aiChat","summary","createdAt","PROGRESS","Math","round","fraction","ERROR","createEventCollector","events","handler","clear","TOOL_SCHEMAS","ToolNames","EXECUTE_CODE","z","string","describe","EXPLORE_API","path","SEARCH_API","query","FETCH_ALL_APIS","createATPTools","defaultExecutionConfig","clientOptions","underlyingClient","vercelTools","atp_execute_code","tool","description","parameters","status","ExecutionStatus","COMPLETED","stats","FAILED","atp_explore_api","exploreAPI","atp_search_api","results","searchAPI","map","r","functionName","signature","count","atp_get_type_definitions","types","createATPStreamingTools","eventHandler","executeStream"],"mappings":"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","file":"index.js","sourcesContent":["import { AgentToolProtocolClient } from '@mondaydotcomorg/atp-client';\nimport type { ExecutionResult, ExecutionConfig } from '@mondaydotcomorg/atp-protocol';\nimport { generateObject, generateText } from 'ai';\nimport type {\n\tVercelAIATPClientOptions,\n\tApprovalResponse,\n\tEmbeddingProvider,\n\tApprovalHandler,\n} from './types.js';\n\nexport class VercelAIATPClient {\n\tprivate client: AgentToolProtocolClient;\n\tprivate model: any;\n\tprivate embeddings?: EmbeddingProvider;\n\tprivate approvalHandler?: ApprovalHandler;\n\n\tconstructor(options: VercelAIATPClientOptions) {\n\t\tconst { model, embeddings, tools, approvalHandler, hooks } = options;\n\n\t\tif ('server' in options && options.server) {\n\t\t\tthis.client = new AgentToolProtocolClient({\n\t\t\t\tserver: options.server,\n\t\t\t\thooks,\n\t\t\t\tserviceProviders: tools ? { tools } : undefined,\n\t\t\t});\n\t\t} else if ('serverUrl' in options && options.serverUrl) {\n\t\t\tthis.client = new AgentToolProtocolClient({\n\t\t\t\tbaseUrl: options.serverUrl,\n\t\t\t\theaders: options.headers,\n\t\t\t\thooks,\n\t\t\t\tserviceProviders: tools ? { tools } : undefined,\n\t\t\t});\n\t\t} else {\n\t\t\tthrow new Error('Either serverUrl or server must be provided');\n\t\t}\n\n\t\tthis.model = model;\n\t\tthis.embeddings = embeddings;\n\t\tthis.approvalHandler = approvalHandler;\n\n\t\tthis.client.provideLLM({\n\t\t\tcall: async (prompt: string, options?: any) => {\n\t\t\t\treturn await this.handleLLMCall(prompt, options);\n\t\t\t},\n\t\t\textract: async (prompt: string, schema: any, options?: any) => {\n\t\t\t\treturn await this.handleLLMExtract(prompt, schema, options);\n\t\t\t},\n\t\t\tclassify: async (text: string, categories: string[], options?: any) => {\n\t\t\t\treturn await this.handleLLMClassify(text, categories, options);\n\t\t\t},\n\t\t});\n\n\t\tif (this.embeddings) {\n\t\t\tthis.client.provideEmbedding({\n\t\t\t\tembed: async (text: string) => {\n\t\t\t\t\treturn await this.handleEmbedding(text);\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tthis.client.provideApproval({\n\t\t\trequest: async (message: string, context?: Record<string, unknown>) => {\n\t\t\t\treturn await this.handleApprovalRequest(message, context);\n\t\t\t},\n\t\t});\n\t}\n\n\tasync connect(): Promise<void> {\n\t\tawait this.client.init({ name: 'vercel-ai-sdk-atp-client', version: '1.0.0' });\n\t\tawait this.client.connect();\n\t}\n\n\tgetTypeDefinitions(): string {\n\t\treturn this.client.getTypeDefinitions();\n\t}\n\n\tasync execute(code: string, config?: Partial<ExecutionConfig>): Promise<ExecutionResult> {\n\t\treturn await this.client.execute(code, config);\n\t}\n\n\tgetUnderlyingClient(): AgentToolProtocolClient {\n\t\treturn this.client;\n\t}\n\n\tprivate async handleLLMCall(prompt: string, options?: any): Promise<string> {\n\t\tconst result = await generateText({\n\t\t\tmodel: this.model,\n\t\t\tprompt,\n\t\t\ttemperature: options?.temperature,\n\t\t\tmaxTokens: options?.maxTokens,\n\t\t\tsystem: options?.systemPrompt,\n\t\t});\n\n\t\treturn result.text;\n\t}\n\n\tprivate async handleLLMExtract(prompt: string, schema: any, options?: any): Promise<any> {\n\t\tconst result = await generateObject({\n\t\t\tmodel: this.model,\n\t\t\tprompt,\n\t\t\tschema,\n\t\t\tsystem: options?.systemPrompt,\n\t\t\ttemperature: options?.temperature,\n\t\t\tmaxTokens: options?.maxTokens,\n\t\t});\n\n\t\treturn result.object;\n\t}\n\n\tprivate async handleLLMClassify(\n\t\ttext: string,\n\t\tcategories: string[],\n\t\toptions?: any\n\t): Promise<string> {\n\t\tconst promptText = `Classify the following text into one of these categories: ${categories.join(', ')}\\n\\nText: ${text}\\n\\nRespond with ONLY the category name, nothing else.`;\n\n\t\tconst result = await generateText({\n\t\t\tmodel: this.model,\n\t\t\tprompt: promptText,\n\t\t\tsystem: options?.systemPrompt,\n\t\t\ttemperature: 0,\n\t\t});\n\n\t\tconst classification = result.text.trim();\n\n\t\tif (categories.includes(classification)) {\n\t\t\treturn classification;\n\t\t}\n\n\t\tfor (const category of categories) {\n\t\t\tif (classification.toLowerCase().includes(category.toLowerCase())) {\n\t\t\t\treturn category;\n\t\t\t}\n\t\t}\n\n\t\tconst fallback = categories[0];\n\t\tif (!fallback) {\n\t\t\tthrow new Error('No categories provided for classification');\n\t\t}\n\t\treturn fallback;\n\t}\n\n\tprivate async handleEmbedding(text: string): Promise<number[]> {\n\t\tif (!this.embeddings) {\n\t\t\tthrow new Error(\n\t\t\t\t'Embeddings provider not configured. Pass embeddings option when creating VercelAIATPClient.'\n\t\t\t);\n\t\t}\n\n\t\treturn await this.embeddings.embed(text);\n\t}\n\n\tprivate async handleApprovalRequest(\n\t\tmessage: string,\n\t\tcontext?: Record<string, unknown>\n\t): Promise<ApprovalResponse> {\n\t\tif (!this.approvalHandler) {\n\t\t\tthrow new Error(\n\t\t\t\t'No approval handler configured. Pass approvalHandler option when creating VercelAIATPClient.'\n\t\t\t);\n\t\t}\n\n\t\tconst approved = await this.approvalHandler(message, context);\n\t\treturn {\n\t\t\tapproved,\n\t\t\ttimestamp: Date.now(),\n\t\t};\n\t}\n}\n","/**\n * Vercel AI SDK Event Adapter\n *\n * Converts ATP streaming events to Vercel AI SDK UIMessageStream format.\n * Use this to forward ATP events to the chat UI.\n */\n\nimport { type ATPEvent, ATPEventType } from '@mondaydotcomorg/atp-protocol';\n\n/**\n * UIMessageStreamWriter interface (subset of Vercel AI SDK's UIMessageStreamWriter)\n */\nexport interface UIMessageStreamWriter {\n\twrite(event: UIStreamEvent): void;\n}\n\n/**\n * UI Stream event types that Vercel AI SDK understands\n */\nexport type UIStreamEvent =\n\t| { type: 'text-start'; id: string }\n\t| { type: 'text-delta'; id: string; delta: string }\n\t| { type: 'text-end'; id: string }\n\t| { type: 'reasoning-start'; id: string }\n\t| { type: 'reasoning-delta'; id: string; delta: string }\n\t| { type: 'reasoning-end'; id: string }\n\t| { type: 'source-url'; url: string; title: string; sourceId: string; providerMetadata?: unknown }\n\t| { type: string; data?: unknown; transient?: boolean };\n\n/**\n * Options for creating the Vercel event handler\n */\nexport interface CreateVercelEventHandlerOptions {\n\t/**\n\t * Prefix for generated text run IDs\n\t * @default 'atp-text'\n\t */\n\ttextRunIdPrefix?: string;\n}\n\n/**\n * Creates an event handler that forwards ATP events to a Vercel AI SDK UIMessageStreamWriter.\n *\n * Handles nested tool calls properly:\n * - First tool_start triggers agentStepStart\n * - Inner tool_start/end emit agentStep updates (not start/end)\n * - Last tool_end triggers agentStepEnd\n *\n * @param dataStream - The Vercel AI SDK UIMessageStreamWriter to write events to\n * @param options - Optional configuration\n * @returns An event handler function to pass to ATP's executeStream\n *\n * @example\n * ```typescript\n * const handler = createVercelEventHandler(dataStream);\n *\n * const result = await client.executeStream(code, {}, handler);\n * ```\n */\nexport function createVercelEventHandler(\n\tdataStream: UIMessageStreamWriter,\n\toptions: CreateVercelEventHandlerOptions = {}\n): (event: ATPEvent) => void {\n\tconst { textRunIdPrefix = 'atp-text' } = options;\n\n\tlet currentTextRunId: string | undefined;\n\tlet textRunCounter = 0;\n\n\t// Track reasoning state for proper start/delta/end events\n\tlet reasoningRunId: string | undefined;\n\tlet reasoningCounter = 0;\n\n\t// Track nested tool calls with a stack\n\tconst toolStack: Array<{ toolName: string; apiGroup: string }> = [];\n\n\treturn (event: ATPEvent) => {\n\t\tswitch (event.type) {\n\t\t\tcase ATPEventType.THINKING: {\n\t\t\t\tconst data = event.data as { content: string; step?: string };\n\n\t\t\t\t// Start new reasoning block if needed\n\t\t\t\tif (!reasoningRunId) {\n\t\t\t\t\treasoningRunId = `atp-reasoning-${++reasoningCounter}`;\n\t\t\t\t\tdataStream.write({\n\t\t\t\t\t\ttype: 'reasoning-start',\n\t\t\t\t\t\tid: reasoningRunId,\n\t\t\t\t\t} as UIStreamEvent);\n\t\t\t\t}\n\n\t\t\t\t// Write reasoning delta\n\t\t\t\tdataStream.write({\n\t\t\t\t\ttype: 'reasoning-delta',\n\t\t\t\t\tid: reasoningRunId,\n\t\t\t\t\tdelta: data.content + '\\n',\n\t\t\t\t} as UIStreamEvent);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase ATPEventType.TOOL_START: {\n\t\t\t\tconst data = event.data as { toolName: string; apiGroup: string; input: unknown };\n\t\t\t\tconst isFirstTool = toolStack.length === 0;\n\n\t\t\t\ttoolStack.push({ toolName: data.toolName, apiGroup: data.apiGroup });\n\n\t\t\t\tif (isFirstTool) {\n\t\t\t\t\t// First tool - emit agentStepStart\n\t\t\t\t\tdataStream.write({\n\t\t\t\t\t\ttype: 'data-agentStepStart',\n\t\t\t\t\t\tdata: `Executing ${data.apiGroup}.${data.toolName}...`,\n\t\t\t\t\t\ttransient: true,\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t// Nested tool - emit progress update instead\n\t\t\t\t\tdataStream.write({\n\t\t\t\t\t\ttype: 'data-agentStep',\n\t\t\t\t\t\tdata: `→ ${data.apiGroup}.${data.toolName}`,\n\t\t\t\t\t\ttransient: true,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase ATPEventType.TOOL_END: {\n\t\t\t\tconst data = event.data as {\n\t\t\t\t\ttoolName: string;\n\t\t\t\t\tapiGroup: string;\n\t\t\t\t\toutput: unknown;\n\t\t\t\t\tduration: number;\n\t\t\t\t\tsuccess: boolean;\n\t\t\t\t\terror?: string;\n\t\t\t\t};\n\n\t\t\t\ttoolStack.pop();\n\t\t\t\tconst isLastTool = toolStack.length === 0;\n\n\t\t\t\t// Close reasoning block when outer tool ends\n\t\t\t\tif (isLastTool && reasoningRunId) {\n\t\t\t\t\tdataStream.write({\n\t\t\t\t\t\ttype: 'reasoning-end',\n\t\t\t\t\t\tid: reasoningRunId,\n\t\t\t\t\t} as UIStreamEvent);\n\t\t\t\t\treasoningRunId = undefined;\n\t\t\t\t}\n\n\t\t\t\tif (isLastTool) {\n\t\t\t\t\t// Last tool - emit agentStepEnd\n\t\t\t\t\tdataStream.write({\n\t\t\t\t\t\ttype: 'data-agentStepEnd',\n\t\t\t\t\t\tdata: data.success\n\t\t\t\t\t\t\t? `Completed ${data.apiGroup}.${data.toolName} (${data.duration}ms)`\n\t\t\t\t\t\t\t: `Failed ${data.apiGroup}.${data.toolName}: ${data.error}`,\n\t\t\t\t\t\ttransient: true,\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t// Nested tool finished - emit progress update\n\t\t\t\t\tdataStream.write({\n\t\t\t\t\t\ttype: 'data-agentStep',\n\t\t\t\t\t\tdata: data.success\n\t\t\t\t\t\t\t? `✓ ${data.apiGroup}.${data.toolName} (${data.duration}ms)`\n\t\t\t\t\t\t\t: `✗ ${data.apiGroup}.${data.toolName}: ${data.error}`,\n\t\t\t\t\t\ttransient: true,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase ATPEventType.TEXT: {\n\t\t\t\tconst data = event.data as { text: string };\n\t\t\t\tconst runId = event.runId || `${textRunIdPrefix}-${++textRunCounter}`;\n\n\t\t\t\t// If we're starting a new text run, close the previous one\n\t\t\t\tif (currentTextRunId && currentTextRunId !== runId) {\n\t\t\t\t\tdataStream.write({ type: 'text-end', id: currentTextRunId });\n\t\t\t\t\tcurrentTextRunId = undefined;\n\t\t\t\t}\n\n\t\t\t\t// Start new text run if needed\n\t\t\t\tif (!currentTextRunId || currentTextRunId !== runId) {\n\t\t\t\t\tcurrentTextRunId = runId;\n\t\t\t\t\tdataStream.write({ type: 'text-start', id: currentTextRunId });\n\t\t\t\t}\n\n\t\t\t\t// Write text delta\n\t\t\t\tdataStream.write({\n\t\t\t\t\ttype: 'text-delta',\n\t\t\t\t\tid: currentTextRunId,\n\t\t\t\t\tdelta: data.text,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase ATPEventType.TEXT_END:\n\t\t\t\tif (currentTextRunId) {\n\t\t\t\t\tdataStream.write({ type: 'text-end', id: currentTextRunId });\n\t\t\t\t\tcurrentTextRunId = undefined;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase ATPEventType.SOURCE: {\n\t\t\t\tconst data = event.data as {\n\t\t\t\t\turl: string;\n\t\t\t\t\ttitle: string;\n\t\t\t\t\tsummary?: string;\n\t\t\t\t\tcreatedAt?: string;\n\t\t\t\t};\n\t\t\t\tdataStream.write({\n\t\t\t\t\ttype: 'source-url',\n\t\t\t\t\turl: data.url,\n\t\t\t\t\ttitle: data.title,\n\t\t\t\t\tsourceId: `${data.title}-${event.timestamp}`,\n\t\t\t\t\tproviderMetadata: {\n\t\t\t\t\t\taiChat: {\n\t\t\t\t\t\t\tsummary: data.summary,\n\t\t\t\t\t\t\tcreatedAt: data.createdAt,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase ATPEventType.PROGRESS: {\n\t\t\t\tconst data = event.data as { message: string; fraction: number };\n\t\t\t\tdataStream.write({\n\t\t\t\t\ttype: 'data-agentStep',\n\t\t\t\t\tdata: `${data.message} (${Math.round(data.fraction * 100)}%)`,\n\t\t\t\t\ttransient: true,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase ATPEventType.ERROR: {\n\t\t\t\tconst data = event.data as { message: string; code?: string };\n\t\t\t\tdataStream.write({\n\t\t\t\t\ttype: 'data-error',\n\t\t\t\t\tdata: data.message,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tdefault:\n\t\t\t\t// Forward unknown events as custom data events\n\t\t\t\tdataStream.write({\n\t\t\t\t\ttype: `data-${event.type}`,\n\t\t\t\t\tdata: event.data,\n\t\t\t\t\ttransient: true,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t}\n\t};\n}\n\n/**\n * Creates an event handler that collects events into an array.\n * Useful for testing or post-processing events.\n *\n * @returns Object with handler function and collected events array\n */\nexport function createEventCollector(): {\n\thandler: (event: ATPEvent) => void;\n\tevents: ATPEvent[];\n\tclear: () => void;\n} {\n\tconst events: ATPEvent[] = [];\n\n\treturn {\n\t\thandler: (event: ATPEvent) => {\n\t\t\tevents.push(event);\n\t\t},\n\t\tevents,\n\t\tclear: () => {\n\t\t\tevents.length = 0;\n\t\t},\n\t};\n}\n\n","import { z } from 'zod';\nimport { VercelAIATPClient } from './client.js';\nimport type { CreateATPToolsOptions, ATPToolsResult, StreamingToolsOptions } from './types.js';\nimport { ToolNames } from '@mondaydotcomorg/atp-client';\nimport { ExecutionStatus } from '@mondaydotcomorg/atp-protocol';\nimport { tool } from 'ai';\nimport { createVercelEventHandler } from './event-adapter.js';\n\nconst TOOL_SCHEMAS = {\n\t[ToolNames.EXECUTE_CODE]: z.object({\n\t\tcode: z.string().describe('The JavaScript/TypeScript code to execute'),\n\t}),\n\t[ToolNames.EXPLORE_API]: z.object({\n\t\tpath: z\n\t\t\t.string()\n\t\t\t.describe('The path to explore (e.g., \"/\" for root, \"/openapi\" for OpenAPI group)'),\n\t}),\n\t[ToolNames.SEARCH_API]: z.object({\n\t\tquery: z.string().describe('Search query string to find APIs'),\n\t}),\n\t[ToolNames.FETCH_ALL_APIS]: z.object({}),\n} as const;\n\nexport async function createATPTools(options: CreateATPToolsOptions): Promise<ATPToolsResult> {\n\tconst { defaultExecutionConfig, ...clientOptions } = options;\n\n\tconst client = new VercelAIATPClient(clientOptions);\n\tawait client.connect();\n\n\tconst underlyingClient = client.getUnderlyingClient();\n\tconst vercelTools: Record<string, any> = {};\n\n\tvercelTools.atp_execute_code = tool({\n\t\tdescription:\n\t\t\t'Execute TypeScript code in ATP sandbox with access to runtime APIs (atp.llm.*, atp.embedding.*, atp.approval.*)',\n\t\tparameters: TOOL_SCHEMAS[ToolNames.EXECUTE_CODE],\n\t\texecute: async ({ code }: { code: string }) => {\n\t\t\ttry {\n\t\t\t\tconst result = await client.execute(code, defaultExecutionConfig);\n\n\t\t\t\tif (result.status === ExecutionStatus.COMPLETED) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\tresult: result.result,\n\t\t\t\t\t\tstats: result.stats,\n\t\t\t\t\t};\n\t\t\t\t} else if (result.status === ExecutionStatus.FAILED) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\terror: result.error,\n\t\t\t\t\t\tstats: result.stats,\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\terror: 'Execution in unexpected state: ' + result.status,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} catch (error: any) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: error.message || 'Unknown error',\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t});\n\n\tvercelTools.atp_explore_api = tool({\n\t\tdescription:\n\t\t\t'Explore APIs using filesystem-like navigation. Navigate through directories to discover available functions.',\n\t\tparameters: TOOL_SCHEMAS[ToolNames.EXPLORE_API],\n\t\texecute: async ({ path }: { path: string }) => {\n\t\t\ttry {\n\t\t\t\tconst result = await underlyingClient.exploreAPI(path);\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\tresult,\n\t\t\t\t};\n\t\t\t} catch (error: any) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: error.message,\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t});\n\n\tvercelTools.atp_search_api = tool({\n\t\tdescription:\n\t\t\t'Search for APIs by keyword. Provide search term as string like \"add\", \"math\", \"user\", etc.',\n\t\tparameters: TOOL_SCHEMAS[ToolNames.SEARCH_API],\n\t\texecute: async ({ query }: { query: string }) => {\n\t\t\ttry {\n\t\t\t\tconst results = await underlyingClient.searchAPI(query);\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\tresults: results.map((r: any) => ({\n\t\t\t\t\t\tapiGroup: r.apiGroup,\n\t\t\t\t\t\tfunctionName: r.functionName,\n\t\t\t\t\t\tdescription: r.description,\n\t\t\t\t\t\tsignature: r.signature,\n\t\t\t\t\t})),\n\t\t\t\t\tcount: results.length,\n\t\t\t\t};\n\t\t\t} catch (error: any) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: error.message,\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t});\n\n\tvercelTools.atp_get_type_definitions = tool({\n\t\tdescription:\n\t\t\t'Get TypeScript type definitions for ATP runtime APIs to understand available functions',\n\t\tparameters: z.object({}),\n\t\texecute: async () => {\n\t\t\ttry {\n\t\t\t\tconst types = client.getTypeDefinitions();\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\ttypes,\n\t\t\t\t};\n\t\t\t} catch (error: any) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: error.message,\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t});\n\n\treturn {\n\t\tclient,\n\t\ttools: vercelTools,\n\t};\n}\n\n/**\n * Creates ATP tools with streaming event support.\n * Events from tool execution will be forwarded to the provided dataStream.\n *\n * @param options - Tool creation options including dataStream for event forwarding\n * @returns Promise resolving to client and tools with streaming support\n *\n * @example\n * ```typescript\n * // In your Vercel AI SDK route handler\n * const dataStream = createUIMessageStream({...});\n *\n * const { tools } = await createATPStreamingTools({\n * serverUrl: 'http://localhost:3333',\n * model: openai('gpt-4'),\n * dataStream,\n * });\n *\n * // Use tools in streamText\n * const result = streamText({\n * model: openai('gpt-4'),\n * messages,\n * tools,\n * });\n * ```\n */\nexport async function createATPStreamingTools(\n\toptions: StreamingToolsOptions\n): Promise<ATPToolsResult> {\n\tconst { dataStream, defaultExecutionConfig, ...clientOptions } = options;\n\n\tconst client = new VercelAIATPClient(clientOptions);\n\tawait client.connect();\n\n\tconst eventHandler = createVercelEventHandler(dataStream);\n\tconst underlyingClient = client.getUnderlyingClient();\n\n\tconst vercelTools: Record<string, any> = {};\n\n\tvercelTools.atp_execute_code = tool({\n\t\tdescription:\n\t\t\t'Execute TypeScript code in ATP sandbox with streaming events for thinking, tool execution, and text output',\n\t\tparameters: TOOL_SCHEMAS[ToolNames.EXECUTE_CODE],\n\t\texecute: async ({ code }: { code: string }) => {\n\t\t\ttry {\n\t\t\t\tconst result = await underlyingClient.executeStream(\n\t\t\t\t\tcode,\n\t\t\t\t\tdefaultExecutionConfig,\n\t\t\t\t\teventHandler\n\t\t\t\t);\n\n\t\t\t\tif (result.status === ExecutionStatus.COMPLETED) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\tresult: result.result,\n\t\t\t\t\t\tstats: result.stats,\n\t\t\t\t\t};\n\t\t\t\t} else if (result.status === ExecutionStatus.FAILED) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\terror: result.error,\n\t\t\t\t\t\tstats: result.stats,\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\terror: 'Execution in unexpected state: ' + result.status,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} catch (error: any) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: error.message || 'Unknown error',\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t});\n\n\tvercelTools.atp_explore_api = tool({\n\t\tdescription:\n\t\t\t'Explore APIs using filesystem-like navigation. Navigate through directories to discover available functions.',\n\t\tparameters: TOOL_SCHEMAS[ToolNames.EXPLORE_API],\n\t\texecute: async ({ path }: { path: string }) => {\n\t\t\ttry {\n\t\t\t\tconst result = await underlyingClient.exploreAPI(path);\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\tresult,\n\t\t\t\t};\n\t\t\t} catch (error: any) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: error.message,\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t});\n\n\tvercelTools.atp_search_api = tool({\n\t\tdescription:\n\t\t\t'Search for APIs by keyword. Provide search term as string like \"add\", \"math\", \"user\", etc.',\n\t\tparameters: TOOL_SCHEMAS[ToolNames.SEARCH_API],\n\t\texecute: async ({ query }: { query: string }) => {\n\t\t\ttry {\n\t\t\t\tconst results = await underlyingClient.searchAPI(query);\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\tresults: results.map((r: any) => ({\n\t\t\t\t\t\tapiGroup: r.apiGroup,\n\t\t\t\t\t\tfunctionName: r.functionName,\n\t\t\t\t\t\tdescription: r.description,\n\t\t\t\t\t\tsignature: r.signature,\n\t\t\t\t\t})),\n\t\t\t\t\tcount: results.length,\n\t\t\t\t};\n\t\t\t} catch (error: any) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: error.message,\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t});\n\n\tvercelTools.atp_get_type_definitions = tool({\n\t\tdescription:\n\t\t\t'Get TypeScript type definitions for ATP runtime APIs to understand available functions',\n\t\tparameters: z.object({}),\n\t\texecute: async () => {\n\t\t\ttry {\n\t\t\t\tconst types = client.getTypeDefinitions();\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\ttypes,\n\t\t\t\t};\n\t\t\t} catch (error: any) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: error.message,\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t});\n\n\treturn {\n\t\tclient,\n\t\ttools: vercelTools,\n\t};\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/client.ts","../src/event-adapter.ts","../src/tools.ts"],"names":["VercelAIATPClient","client","model","embeddings","approvalHandler","constructor","options","tools","hooks","server","AgentToolProtocolClient","serviceProviders","undefined","serverUrl","baseUrl","headers","Error","provideLLM","call","prompt","handleLLMCall","extract","schema","handleLLMExtract","classify","text","categories","handleLLMClassify","provideEmbedding","embed","handleEmbedding","provideApproval","request","message","context","handleApprovalRequest","connect","init","name","version","getTypeDefinitions","execute","code","config","getUnderlyingClient","result","generateText","temperature","maxOutputTokens","maxTokens","system","systemPrompt","generateObject","object","promptText","join","classification","trim","includes","category","toLowerCase","fallback","approved","timestamp","Date","now","createVercelEventHandler","dataStream","textRunIdPrefix","currentTextRunId","textRunCounter","reasoningRunId","reasoningCounter","toolStack","event","type","ATPEventType","THINKING","data","write","id","delta","content","TOOL_START","isFirstTool","length","push","toolName","apiGroup","transient","TOOL_END","pop","isLastTool","success","duration","error","TEXT","runId","TEXT_END","SOURCE","url","title","sourceId","providerMetadata","aiChat","summary","createdAt","PROGRESS","Math","round","fraction","ERROR","createEventCollector","events","handler","clear","TOOL_SCHEMAS","ToolNames","EXECUTE_CODE","executeCodeInputSchema","pick","EXPLORE_API","exploreApiInputSchema","SEARCH_API","searchApiInputSchema","FETCH_ALL_APIS","fetchAllApisInputSchema","createATPTools","defaultExecutionConfig","clientOptions","underlyingClient","vercelTools","atp_execute_code","tool","description","inputSchema","status","ExecutionStatus","COMPLETED","stats","FAILED","atp_explore_api","path","exploreAPI","atp_search_api","query","results","searchAPI","map","r","functionName","signature","count","atp_get_type_definitions","z","types","createATPStreamingTools","eventHandler","executeStream"],"mappings":"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","file":"index.js","sourcesContent":["import { AgentToolProtocolClient } from '@mondaydotcomorg/atp-client';\nimport type { ExecutionResult, ExecutionConfig } from '@mondaydotcomorg/atp-protocol';\nimport { generateObject, generateText } from 'ai';\nimport type {\n\tVercelAIATPClientOptions,\n\tApprovalResponse,\n\tEmbeddingProvider,\n\tApprovalHandler,\n} from './types.js';\n\nexport class VercelAIATPClient {\n\tprivate client: AgentToolProtocolClient;\n\tprivate model: any;\n\tprivate embeddings?: EmbeddingProvider;\n\tprivate approvalHandler?: ApprovalHandler;\n\n\tconstructor(options: VercelAIATPClientOptions) {\n\t\tconst { model, embeddings, tools, approvalHandler, hooks } = options;\n\n\t\tif ('server' in options && options.server) {\n\t\t\tthis.client = new AgentToolProtocolClient({\n\t\t\t\tserver: options.server,\n\t\t\t\thooks,\n\t\t\t\tserviceProviders: tools ? { tools } : undefined,\n\t\t\t});\n\t\t} else if ('serverUrl' in options && options.serverUrl) {\n\t\t\tthis.client = new AgentToolProtocolClient({\n\t\t\t\tbaseUrl: options.serverUrl,\n\t\t\t\theaders: options.headers,\n\t\t\t\thooks,\n\t\t\t\tserviceProviders: tools ? { tools } : undefined,\n\t\t\t});\n\t\t} else {\n\t\t\tthrow new Error('Either serverUrl or server must be provided');\n\t\t}\n\n\t\tthis.model = model;\n\t\tthis.embeddings = embeddings;\n\t\tthis.approvalHandler = approvalHandler;\n\n\t\tthis.client.provideLLM({\n\t\t\tcall: async (prompt: string, options?: any) => {\n\t\t\t\treturn await this.handleLLMCall(prompt, options);\n\t\t\t},\n\t\t\textract: async (prompt: string, schema: any, options?: any) => {\n\t\t\t\treturn await this.handleLLMExtract(prompt, schema, options);\n\t\t\t},\n\t\t\tclassify: async (text: string, categories: string[], options?: any) => {\n\t\t\t\treturn await this.handleLLMClassify(text, categories, options);\n\t\t\t},\n\t\t});\n\n\t\tif (this.embeddings) {\n\t\t\tthis.client.provideEmbedding({\n\t\t\t\tembed: async (text: string) => {\n\t\t\t\t\treturn await this.handleEmbedding(text);\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tthis.client.provideApproval({\n\t\t\trequest: async (message: string, context?: Record<string, unknown>) => {\n\t\t\t\treturn await this.handleApprovalRequest(message, context);\n\t\t\t},\n\t\t});\n\t}\n\n\tasync connect(): Promise<void> {\n\t\tawait this.client.init({ name: 'vercel-ai-sdk-atp-client', version: '1.0.0' });\n\t\tawait this.client.connect();\n\t}\n\n\tgetTypeDefinitions(): string {\n\t\treturn this.client.getTypeDefinitions();\n\t}\n\n\tasync execute(code: string, config?: Partial<ExecutionConfig>): Promise<ExecutionResult> {\n\t\treturn await this.client.execute(code, config);\n\t}\n\n\tgetUnderlyingClient(): AgentToolProtocolClient {\n\t\treturn this.client;\n\t}\n\n\tprivate async handleLLMCall(prompt: string, options?: any): Promise<string> {\n\t\tconst result = await generateText({\n\t\t\tmodel: this.model,\n\t\t\tprompt,\n\t\t\ttemperature: options?.temperature,\n\t\t\tmaxOutputTokens: options?.maxTokens,\n\t\t\tsystem: options?.systemPrompt,\n\t\t});\n\n\t\treturn result.text;\n\t}\n\n\tprivate async handleLLMExtract(prompt: string, schema: any, options?: any): Promise<any> {\n\t\tconst result = await generateObject({\n\t\t\tmodel: this.model,\n\t\t\tprompt,\n\t\t\tschema,\n\t\t\tsystem: options?.systemPrompt,\n\t\t\ttemperature: options?.temperature,\n\t\t\tmaxOutputTokens: options?.maxTokens,\n\t\t});\n\n\t\treturn result.object;\n\t}\n\n\tprivate async handleLLMClassify(\n\t\ttext: string,\n\t\tcategories: string[],\n\t\toptions?: any\n\t): Promise<string> {\n\t\tconst promptText = `Classify the following text into one of these categories: ${categories.join(', ')}\\n\\nText: ${text}\\n\\nRespond with ONLY the category name, nothing else.`;\n\n\t\tconst result = await generateText({\n\t\t\tmodel: this.model,\n\t\t\tprompt: promptText,\n\t\t\tsystem: options?.systemPrompt,\n\t\t\ttemperature: 0,\n\t\t});\n\n\t\tconst classification = result.text.trim();\n\n\t\tif (categories.includes(classification)) {\n\t\t\treturn classification;\n\t\t}\n\n\t\tfor (const category of categories) {\n\t\t\tif (classification.toLowerCase().includes(category.toLowerCase())) {\n\t\t\t\treturn category;\n\t\t\t}\n\t\t}\n\n\t\tconst fallback = categories[0];\n\t\tif (!fallback) {\n\t\t\tthrow new Error('No categories provided for classification');\n\t\t}\n\t\treturn fallback;\n\t}\n\n\tprivate async handleEmbedding(text: string): Promise<number[]> {\n\t\tif (!this.embeddings) {\n\t\t\tthrow new Error(\n\t\t\t\t'Embeddings provider not configured. Pass embeddings option when creating VercelAIATPClient.'\n\t\t\t);\n\t\t}\n\n\t\treturn await this.embeddings.embed(text);\n\t}\n\n\tprivate async handleApprovalRequest(\n\t\tmessage: string,\n\t\tcontext?: Record<string, unknown>\n\t): Promise<ApprovalResponse> {\n\t\tif (!this.approvalHandler) {\n\t\t\tthrow new Error(\n\t\t\t\t'No approval handler configured. Pass approvalHandler option when creating VercelAIATPClient.'\n\t\t\t);\n\t\t}\n\n\t\tconst approved = await this.approvalHandler(message, context);\n\t\treturn {\n\t\t\tapproved,\n\t\t\ttimestamp: Date.now(),\n\t\t};\n\t}\n}\n","/**\n * Vercel AI SDK Event Adapter\n *\n * Converts ATP streaming events to Vercel AI SDK UIMessageStream format.\n * Use this to forward ATP events to the chat UI.\n */\n\nimport { type ATPEvent, ATPEventType } from '@mondaydotcomorg/atp-protocol';\n\n/**\n * UIMessageStreamWriter interface (subset of Vercel AI SDK's UIMessageStreamWriter)\n */\nexport interface UIMessageStreamWriter {\n\twrite(event: UIStreamEvent): void;\n}\n\n/**\n * UI Stream event types that Vercel AI SDK understands\n */\nexport type UIStreamEvent =\n\t| { type: 'text-start'; id: string }\n\t| { type: 'text-delta'; id: string; delta: string }\n\t| { type: 'text-end'; id: string }\n\t| { type: 'reasoning-start'; id: string }\n\t| { type: 'reasoning-delta'; id: string; delta: string }\n\t| { type: 'reasoning-end'; id: string }\n\t| { type: 'source-url'; url: string; title: string; sourceId: string; providerMetadata?: unknown }\n\t| { type: string; data?: unknown; transient?: boolean };\n\n/**\n * Options for creating the Vercel event handler\n */\nexport interface CreateVercelEventHandlerOptions {\n\t/**\n\t * Prefix for generated text run IDs\n\t * @default 'atp-text'\n\t */\n\ttextRunIdPrefix?: string;\n}\n\n/**\n * Creates an event handler that forwards ATP events to a Vercel AI SDK UIMessageStreamWriter.\n *\n * Handles nested tool calls properly:\n * - First tool_start triggers agentStepStart\n * - Inner tool_start/end emit agentStep updates (not start/end)\n * - Last tool_end triggers agentStepEnd\n *\n * @param dataStream - The Vercel AI SDK UIMessageStreamWriter to write events to\n * @param options - Optional configuration\n * @returns An event handler function to pass to ATP's executeStream\n *\n * @example\n * ```typescript\n * const handler = createVercelEventHandler(dataStream);\n *\n * const result = await client.executeStream(code, {}, handler);\n * ```\n */\nexport function createVercelEventHandler(\n\tdataStream: UIMessageStreamWriter,\n\toptions: CreateVercelEventHandlerOptions = {}\n): (event: ATPEvent) => void {\n\tconst { textRunIdPrefix = 'atp-text' } = options;\n\n\tlet currentTextRunId: string | undefined;\n\tlet textRunCounter = 0;\n\n\t// Track reasoning state for proper start/delta/end events\n\tlet reasoningRunId: string | undefined;\n\tlet reasoningCounter = 0;\n\n\t// Track nested tool calls with a stack\n\tconst toolStack: Array<{ toolName: string; apiGroup: string }> = [];\n\n\treturn (event: ATPEvent) => {\n\t\tswitch (event.type) {\n\t\t\tcase ATPEventType.THINKING: {\n\t\t\t\tconst data = event.data as { content: string; step?: string };\n\n\t\t\t\t// Start new reasoning block if needed\n\t\t\t\tif (!reasoningRunId) {\n\t\t\t\t\treasoningRunId = `atp-reasoning-${++reasoningCounter}`;\n\t\t\t\t\tdataStream.write({\n\t\t\t\t\t\ttype: 'reasoning-start',\n\t\t\t\t\t\tid: reasoningRunId,\n\t\t\t\t\t} as UIStreamEvent);\n\t\t\t\t}\n\n\t\t\t\t// Write reasoning delta\n\t\t\t\tdataStream.write({\n\t\t\t\t\ttype: 'reasoning-delta',\n\t\t\t\t\tid: reasoningRunId,\n\t\t\t\t\tdelta: data.content + '\\n',\n\t\t\t\t} as UIStreamEvent);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase ATPEventType.TOOL_START: {\n\t\t\t\tconst data = event.data as { toolName: string; apiGroup: string; input: unknown };\n\t\t\t\tconst isFirstTool = toolStack.length === 0;\n\n\t\t\t\ttoolStack.push({ toolName: data.toolName, apiGroup: data.apiGroup });\n\n\t\t\t\tif (isFirstTool) {\n\t\t\t\t\t// First tool - emit agentStepStart\n\t\t\t\t\tdataStream.write({\n\t\t\t\t\t\ttype: 'data-agentStepStart',\n\t\t\t\t\t\tdata: `Executing ${data.apiGroup}.${data.toolName}...`,\n\t\t\t\t\t\ttransient: true,\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t// Nested tool - emit progress update instead\n\t\t\t\t\tdataStream.write({\n\t\t\t\t\t\ttype: 'data-agentStep',\n\t\t\t\t\t\tdata: `→ ${data.apiGroup}.${data.toolName}`,\n\t\t\t\t\t\ttransient: true,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase ATPEventType.TOOL_END: {\n\t\t\t\tconst data = event.data as {\n\t\t\t\t\ttoolName: string;\n\t\t\t\t\tapiGroup: string;\n\t\t\t\t\toutput: unknown;\n\t\t\t\t\tduration: number;\n\t\t\t\t\tsuccess: boolean;\n\t\t\t\t\terror?: string;\n\t\t\t\t};\n\n\t\t\t\ttoolStack.pop();\n\t\t\t\tconst isLastTool = toolStack.length === 0;\n\n\t\t\t\t// Close reasoning block when outer tool ends\n\t\t\t\tif (isLastTool && reasoningRunId) {\n\t\t\t\t\tdataStream.write({\n\t\t\t\t\t\ttype: 'reasoning-end',\n\t\t\t\t\t\tid: reasoningRunId,\n\t\t\t\t\t} as UIStreamEvent);\n\t\t\t\t\treasoningRunId = undefined;\n\t\t\t\t}\n\n\t\t\t\tif (isLastTool) {\n\t\t\t\t\t// Last tool - emit agentStepEnd\n\t\t\t\t\tdataStream.write({\n\t\t\t\t\t\ttype: 'data-agentStepEnd',\n\t\t\t\t\t\tdata: data.success\n\t\t\t\t\t\t\t? `Completed ${data.apiGroup}.${data.toolName} (${data.duration}ms)`\n\t\t\t\t\t\t\t: `Failed ${data.apiGroup}.${data.toolName}: ${data.error}`,\n\t\t\t\t\t\ttransient: true,\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t// Nested tool finished - emit progress update\n\t\t\t\t\tdataStream.write({\n\t\t\t\t\t\ttype: 'data-agentStep',\n\t\t\t\t\t\tdata: data.success\n\t\t\t\t\t\t\t? `✓ ${data.apiGroup}.${data.toolName} (${data.duration}ms)`\n\t\t\t\t\t\t\t: `✗ ${data.apiGroup}.${data.toolName}: ${data.error}`,\n\t\t\t\t\t\ttransient: true,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase ATPEventType.TEXT: {\n\t\t\t\tconst data = event.data as { text: string };\n\t\t\t\tconst runId = event.runId || `${textRunIdPrefix}-${++textRunCounter}`;\n\n\t\t\t\t// If we're starting a new text run, close the previous one\n\t\t\t\tif (currentTextRunId && currentTextRunId !== runId) {\n\t\t\t\t\tdataStream.write({ type: 'text-end', id: currentTextRunId });\n\t\t\t\t\tcurrentTextRunId = undefined;\n\t\t\t\t}\n\n\t\t\t\t// Start new text run if needed\n\t\t\t\tif (!currentTextRunId || currentTextRunId !== runId) {\n\t\t\t\t\tcurrentTextRunId = runId;\n\t\t\t\t\tdataStream.write({ type: 'text-start', id: currentTextRunId });\n\t\t\t\t}\n\n\t\t\t\t// Write text delta\n\t\t\t\tdataStream.write({\n\t\t\t\t\ttype: 'text-delta',\n\t\t\t\t\tid: currentTextRunId,\n\t\t\t\t\tdelta: data.text,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase ATPEventType.TEXT_END:\n\t\t\t\tif (currentTextRunId) {\n\t\t\t\t\tdataStream.write({ type: 'text-end', id: currentTextRunId });\n\t\t\t\t\tcurrentTextRunId = undefined;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase ATPEventType.SOURCE: {\n\t\t\t\tconst data = event.data as {\n\t\t\t\t\turl: string;\n\t\t\t\t\ttitle: string;\n\t\t\t\t\tsummary?: string;\n\t\t\t\t\tcreatedAt?: string;\n\t\t\t\t};\n\t\t\t\tdataStream.write({\n\t\t\t\t\ttype: 'source-url',\n\t\t\t\t\turl: data.url,\n\t\t\t\t\ttitle: data.title,\n\t\t\t\t\tsourceId: `${data.title}-${event.timestamp}`,\n\t\t\t\t\tproviderMetadata: {\n\t\t\t\t\t\taiChat: {\n\t\t\t\t\t\t\tsummary: data.summary,\n\t\t\t\t\t\t\tcreatedAt: data.createdAt,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase ATPEventType.PROGRESS: {\n\t\t\t\tconst data = event.data as { message: string; fraction: number };\n\t\t\t\tdataStream.write({\n\t\t\t\t\ttype: 'data-agentStep',\n\t\t\t\t\tdata: `${data.message} (${Math.round(data.fraction * 100)}%)`,\n\t\t\t\t\ttransient: true,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase ATPEventType.ERROR: {\n\t\t\t\tconst data = event.data as { message: string; code?: string };\n\t\t\t\tdataStream.write({\n\t\t\t\t\ttype: 'data-error',\n\t\t\t\t\tdata: data.message,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tdefault:\n\t\t\t\t// Forward unknown events as custom data events\n\t\t\t\tdataStream.write({\n\t\t\t\t\ttype: `data-${event.type}`,\n\t\t\t\t\tdata: event.data,\n\t\t\t\t\ttransient: true,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t}\n\t};\n}\n\n/**\n * Creates an event handler that collects events into an array.\n * Useful for testing or post-processing events.\n *\n * @returns Object with handler function and collected events array\n */\nexport function createEventCollector(): {\n\thandler: (event: ATPEvent) => void;\n\tevents: ATPEvent[];\n\tclear: () => void;\n} {\n\tconst events: ATPEvent[] = [];\n\n\treturn {\n\t\thandler: (event: ATPEvent) => {\n\t\t\tevents.push(event);\n\t\t},\n\t\tevents,\n\t\tclear: () => {\n\t\t\tevents.length = 0;\n\t\t},\n\t};\n}\n\n","import { z } from 'zod';\nimport { VercelAIATPClient } from './client.js';\nimport type { CreateATPToolsOptions, ATPToolsResult, StreamingToolsOptions } from './types.js';\nimport {\n\tToolNames,\n\texecuteCodeInputSchema,\n\texploreApiInputSchema,\n\tsearchApiInputSchema,\n\tfetchAllApisInputSchema,\n} from '@mondaydotcomorg/atp-client';\nimport { ExecutionStatus } from '@mondaydotcomorg/atp-protocol';\nimport { tool } from 'ai';\nimport { createVercelEventHandler } from './event-adapter.js';\n\nconst TOOL_SCHEMAS = {\n\t[ToolNames.EXECUTE_CODE]: executeCodeInputSchema.pick({ code: true }),\n\t[ToolNames.EXPLORE_API]: exploreApiInputSchema,\n\t[ToolNames.SEARCH_API]: searchApiInputSchema,\n\t[ToolNames.FETCH_ALL_APIS]: fetchAllApisInputSchema,\n} as const;\n\nexport async function createATPTools(options: CreateATPToolsOptions): Promise<ATPToolsResult> {\n\tconst { defaultExecutionConfig, ...clientOptions } = options;\n\n\tconst client = new VercelAIATPClient(clientOptions);\n\tawait client.connect();\n\n\tconst underlyingClient = client.getUnderlyingClient();\n\tconst vercelTools: Record<string, any> = {};\n\n\tvercelTools.atp_execute_code = tool({\n\t\tdescription:\n\t\t\t'Execute TypeScript code in ATP sandbox with access to runtime APIs (atp.llm.*, atp.embedding.*, atp.approval.*)',\n\t\tinputSchema: TOOL_SCHEMAS[ToolNames.EXECUTE_CODE],\n\t\texecute: async ({ code }: { code: string }) => {\n\t\t\ttry {\n\t\t\t\tconst result = await client.execute(code, defaultExecutionConfig);\n\n\t\t\t\tif (result.status === ExecutionStatus.COMPLETED) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\tresult: result.result,\n\t\t\t\t\t\tstats: result.stats,\n\t\t\t\t\t};\n\t\t\t\t} else if (result.status === ExecutionStatus.FAILED) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\terror: result.error,\n\t\t\t\t\t\tstats: result.stats,\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\terror: 'Execution in unexpected state: ' + result.status,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} catch (error: any) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: error.message || 'Unknown error',\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t});\n\n\tvercelTools.atp_explore_api = tool({\n\t\tdescription:\n\t\t\t'Explore APIs using filesystem-like navigation. Navigate through directories to discover available functions.',\n\t\tinputSchema: TOOL_SCHEMAS[ToolNames.EXPLORE_API],\n\t\texecute: async ({ path }: { path: string }) => {\n\t\t\ttry {\n\t\t\t\tconst result = await underlyingClient.exploreAPI(path);\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\tresult,\n\t\t\t\t};\n\t\t\t} catch (error: any) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: error.message,\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t});\n\n\tvercelTools.atp_search_api = tool({\n\t\tdescription:\n\t\t\t'Search for APIs by keyword. Provide search term as string like \"add\", \"math\", \"user\", etc.',\n\t\tinputSchema: TOOL_SCHEMAS[ToolNames.SEARCH_API],\n\t\texecute: async ({ query }: { query: string }) => {\n\t\t\ttry {\n\t\t\t\tconst results = await underlyingClient.searchAPI(query);\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\tresults: results.map((r: any) => ({\n\t\t\t\t\t\tapiGroup: r.apiGroup,\n\t\t\t\t\t\tfunctionName: r.functionName,\n\t\t\t\t\t\tdescription: r.description,\n\t\t\t\t\t\tsignature: r.signature,\n\t\t\t\t\t})),\n\t\t\t\t\tcount: results.length,\n\t\t\t\t};\n\t\t\t} catch (error: any) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: error.message,\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t});\n\n\tvercelTools.atp_get_type_definitions = tool({\n\t\tdescription:\n\t\t\t'Get TypeScript type definitions for ATP runtime APIs to understand available functions',\n\t\tinputSchema: z.object({}),\n\t\texecute: async () => {\n\t\t\ttry {\n\t\t\t\tconst types = client.getTypeDefinitions();\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\ttypes,\n\t\t\t\t};\n\t\t\t} catch (error: any) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: error.message,\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t});\n\n\treturn {\n\t\tclient,\n\t\ttools: vercelTools,\n\t};\n}\n\n/**\n * Creates ATP tools with streaming event support.\n * Events from tool execution will be forwarded to the provided dataStream.\n *\n * @param options - Tool creation options including dataStream for event forwarding\n * @returns Promise resolving to client and tools with streaming support\n *\n * @example\n * ```typescript\n * // In your Vercel AI SDK route handler\n * const dataStream = createUIMessageStream({...});\n *\n * const { tools } = await createATPStreamingTools({\n * serverUrl: 'http://localhost:3333',\n * model: openai('gpt-4'),\n * dataStream,\n * });\n *\n * // Use tools in streamText\n * const result = streamText({\n * model: openai('gpt-4'),\n * messages,\n * tools,\n * });\n * ```\n */\nexport async function createATPStreamingTools(\n\toptions: StreamingToolsOptions\n): Promise<ATPToolsResult> {\n\tconst { dataStream, defaultExecutionConfig, ...clientOptions } = options;\n\n\tconst client = new VercelAIATPClient(clientOptions);\n\tawait client.connect();\n\n\tconst eventHandler = createVercelEventHandler(dataStream);\n\tconst underlyingClient = client.getUnderlyingClient();\n\n\tconst vercelTools: Record<string, any> = {};\n\n\tvercelTools.atp_execute_code = tool({\n\t\tdescription:\n\t\t\t'Execute TypeScript code in ATP sandbox with streaming events for thinking, tool execution, and text output',\n\t\tinputSchema: TOOL_SCHEMAS[ToolNames.EXECUTE_CODE],\n\t\texecute: async ({ code }: { code: string }) => {\n\t\t\ttry {\n\t\t\t\tconst result = await underlyingClient.executeStream(\n\t\t\t\t\tcode,\n\t\t\t\t\tdefaultExecutionConfig,\n\t\t\t\t\teventHandler\n\t\t\t\t);\n\n\t\t\t\tif (result.status === ExecutionStatus.COMPLETED) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\tresult: result.result,\n\t\t\t\t\t\tstats: result.stats,\n\t\t\t\t\t};\n\t\t\t\t} else if (result.status === ExecutionStatus.FAILED) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\terror: result.error,\n\t\t\t\t\t\tstats: result.stats,\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\terror: 'Execution in unexpected state: ' + result.status,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} catch (error: any) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: error.message || 'Unknown error',\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t});\n\n\tvercelTools.atp_explore_api = tool({\n\t\tdescription:\n\t\t\t'Explore APIs using filesystem-like navigation. Navigate through directories to discover available functions.',\n\t\tinputSchema: TOOL_SCHEMAS[ToolNames.EXPLORE_API],\n\t\texecute: async ({ path }: { path: string }) => {\n\t\t\ttry {\n\t\t\t\tconst result = await underlyingClient.exploreAPI(path);\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\tresult,\n\t\t\t\t};\n\t\t\t} catch (error: any) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: error.message,\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t});\n\n\tvercelTools.atp_search_api = tool({\n\t\tdescription:\n\t\t\t'Search for APIs by keyword. Provide search term as string like \"add\", \"math\", \"user\", etc.',\n\t\tinputSchema: TOOL_SCHEMAS[ToolNames.SEARCH_API],\n\t\texecute: async ({ query }: { query: string }) => {\n\t\t\ttry {\n\t\t\t\tconst results = await underlyingClient.searchAPI(query);\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\tresults: results.map((r: any) => ({\n\t\t\t\t\t\tapiGroup: r.apiGroup,\n\t\t\t\t\t\tfunctionName: r.functionName,\n\t\t\t\t\t\tdescription: r.description,\n\t\t\t\t\t\tsignature: r.signature,\n\t\t\t\t\t})),\n\t\t\t\t\tcount: results.length,\n\t\t\t\t};\n\t\t\t} catch (error: any) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: error.message,\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t});\n\n\tvercelTools.atp_get_type_definitions = tool({\n\t\tdescription:\n\t\t\t'Get TypeScript type definitions for ATP runtime APIs to understand available functions',\n\t\tinputSchema: z.object({}),\n\t\texecute: async () => {\n\t\t\ttry {\n\t\t\t\tconst types = client.getTypeDefinitions();\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\ttypes,\n\t\t\t\t};\n\t\t\t} catch (error: any) {\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: error.message,\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t});\n\n\treturn {\n\t\tclient,\n\t\ttools: vercelTools,\n\t};\n}\n"]}
|
package/dist/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAmB/F,wBAAsB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,cAAc,CAAC,CAkH5F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,uBAAuB,CAC5C,OAAO,EAAE,qBAAqB,GAC5B,OAAO,CAAC,cAAc,CAAC,CAwHzB"}
|
package/dist/tools.js
CHANGED
|
@@ -1,22 +1,14 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { VercelAIATPClient } from './client.js';
|
|
3
|
-
import { ToolNames } from '@mondaydotcomorg/atp-client';
|
|
3
|
+
import { ToolNames, executeCodeInputSchema, exploreApiInputSchema, searchApiInputSchema, fetchAllApisInputSchema, } from '@mondaydotcomorg/atp-client';
|
|
4
4
|
import { ExecutionStatus } from '@mondaydotcomorg/atp-protocol';
|
|
5
5
|
import { tool } from 'ai';
|
|
6
6
|
import { createVercelEventHandler } from './event-adapter.js';
|
|
7
7
|
const TOOL_SCHEMAS = {
|
|
8
|
-
[ToolNames.EXECUTE_CODE]:
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
[ToolNames.
|
|
12
|
-
path: z
|
|
13
|
-
.string()
|
|
14
|
-
.describe('The path to explore (e.g., "/" for root, "/openapi" for OpenAPI group)'),
|
|
15
|
-
}),
|
|
16
|
-
[ToolNames.SEARCH_API]: z.object({
|
|
17
|
-
query: z.string().describe('Search query string to find APIs'),
|
|
18
|
-
}),
|
|
19
|
-
[ToolNames.FETCH_ALL_APIS]: z.object({}),
|
|
8
|
+
[ToolNames.EXECUTE_CODE]: executeCodeInputSchema.pick({ code: true }),
|
|
9
|
+
[ToolNames.EXPLORE_API]: exploreApiInputSchema,
|
|
10
|
+
[ToolNames.SEARCH_API]: searchApiInputSchema,
|
|
11
|
+
[ToolNames.FETCH_ALL_APIS]: fetchAllApisInputSchema,
|
|
20
12
|
};
|
|
21
13
|
export async function createATPTools(options) {
|
|
22
14
|
const { defaultExecutionConfig, ...clientOptions } = options;
|
|
@@ -26,7 +18,7 @@ export async function createATPTools(options) {
|
|
|
26
18
|
const vercelTools = {};
|
|
27
19
|
vercelTools.atp_execute_code = tool({
|
|
28
20
|
description: 'Execute TypeScript code in ATP sandbox with access to runtime APIs (atp.llm.*, atp.embedding.*, atp.approval.*)',
|
|
29
|
-
|
|
21
|
+
inputSchema: TOOL_SCHEMAS[ToolNames.EXECUTE_CODE],
|
|
30
22
|
execute: async ({ code }) => {
|
|
31
23
|
try {
|
|
32
24
|
const result = await client.execute(code, defaultExecutionConfig);
|
|
@@ -61,7 +53,7 @@ export async function createATPTools(options) {
|
|
|
61
53
|
});
|
|
62
54
|
vercelTools.atp_explore_api = tool({
|
|
63
55
|
description: 'Explore APIs using filesystem-like navigation. Navigate through directories to discover available functions.',
|
|
64
|
-
|
|
56
|
+
inputSchema: TOOL_SCHEMAS[ToolNames.EXPLORE_API],
|
|
65
57
|
execute: async ({ path }) => {
|
|
66
58
|
try {
|
|
67
59
|
const result = await underlyingClient.exploreAPI(path);
|
|
@@ -80,7 +72,7 @@ export async function createATPTools(options) {
|
|
|
80
72
|
});
|
|
81
73
|
vercelTools.atp_search_api = tool({
|
|
82
74
|
description: 'Search for APIs by keyword. Provide search term as string like "add", "math", "user", etc.',
|
|
83
|
-
|
|
75
|
+
inputSchema: TOOL_SCHEMAS[ToolNames.SEARCH_API],
|
|
84
76
|
execute: async ({ query }) => {
|
|
85
77
|
try {
|
|
86
78
|
const results = await underlyingClient.searchAPI(query);
|
|
@@ -105,7 +97,7 @@ export async function createATPTools(options) {
|
|
|
105
97
|
});
|
|
106
98
|
vercelTools.atp_get_type_definitions = tool({
|
|
107
99
|
description: 'Get TypeScript type definitions for ATP runtime APIs to understand available functions',
|
|
108
|
-
|
|
100
|
+
inputSchema: z.object({}),
|
|
109
101
|
execute: async () => {
|
|
110
102
|
try {
|
|
111
103
|
const types = client.getTypeDefinitions();
|
|
@@ -162,7 +154,7 @@ export async function createATPStreamingTools(options) {
|
|
|
162
154
|
const vercelTools = {};
|
|
163
155
|
vercelTools.atp_execute_code = tool({
|
|
164
156
|
description: 'Execute TypeScript code in ATP sandbox with streaming events for thinking, tool execution, and text output',
|
|
165
|
-
|
|
157
|
+
inputSchema: TOOL_SCHEMAS[ToolNames.EXECUTE_CODE],
|
|
166
158
|
execute: async ({ code }) => {
|
|
167
159
|
try {
|
|
168
160
|
const result = await underlyingClient.executeStream(code, defaultExecutionConfig, eventHandler);
|
|
@@ -197,7 +189,7 @@ export async function createATPStreamingTools(options) {
|
|
|
197
189
|
});
|
|
198
190
|
vercelTools.atp_explore_api = tool({
|
|
199
191
|
description: 'Explore APIs using filesystem-like navigation. Navigate through directories to discover available functions.',
|
|
200
|
-
|
|
192
|
+
inputSchema: TOOL_SCHEMAS[ToolNames.EXPLORE_API],
|
|
201
193
|
execute: async ({ path }) => {
|
|
202
194
|
try {
|
|
203
195
|
const result = await underlyingClient.exploreAPI(path);
|
|
@@ -216,7 +208,7 @@ export async function createATPStreamingTools(options) {
|
|
|
216
208
|
});
|
|
217
209
|
vercelTools.atp_search_api = tool({
|
|
218
210
|
description: 'Search for APIs by keyword. Provide search term as string like "add", "math", "user", etc.',
|
|
219
|
-
|
|
211
|
+
inputSchema: TOOL_SCHEMAS[ToolNames.SEARCH_API],
|
|
220
212
|
execute: async ({ query }) => {
|
|
221
213
|
try {
|
|
222
214
|
const results = await underlyingClient.searchAPI(query);
|
|
@@ -241,7 +233,7 @@ export async function createATPStreamingTools(options) {
|
|
|
241
233
|
});
|
|
242
234
|
vercelTools.atp_get_type_definitions = tool({
|
|
243
235
|
description: 'Get TypeScript type definitions for ATP runtime APIs to understand available functions',
|
|
244
|
-
|
|
236
|
+
inputSchema: z.object({}),
|
|
245
237
|
execute: async () => {
|
|
246
238
|
try {
|
|
247
239
|
const types = client.getTypeDefinitions();
|
package/dist/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mondaydotcomorg/atp-vercel-sdk",
|
|
3
|
-
"version": "0.20.
|
|
3
|
+
"version": "0.20.7",
|
|
4
4
|
"description": "Vercel AI SDK integration for Agent Tool Protocol",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -44,16 +44,17 @@
|
|
|
44
44
|
],
|
|
45
45
|
"license": "MIT",
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@mondaydotcomorg/atp-client": "0.19.
|
|
48
|
-
"@mondaydotcomorg/atp-protocol": "0.19.
|
|
47
|
+
"@mondaydotcomorg/atp-client": "0.19.18",
|
|
48
|
+
"@mondaydotcomorg/atp-protocol": "0.19.17"
|
|
49
49
|
},
|
|
50
50
|
"peerDependencies": {
|
|
51
|
-
"ai": "^
|
|
51
|
+
"ai": "^5.0.0",
|
|
52
52
|
"zod": "^3.25.0"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
55
|
"@jest/globals": "^29.7.0",
|
|
56
56
|
"@types/jest": "^29.5.11",
|
|
57
|
+
"ai": "^5.0.0",
|
|
57
58
|
"jest": "^29.7.0",
|
|
58
59
|
"tsup": "^8.5.1",
|
|
59
60
|
"typescript": "^5.3.3",
|
package/src/client.ts
CHANGED
|
@@ -87,7 +87,7 @@ export class VercelAIATPClient {
|
|
|
87
87
|
model: this.model,
|
|
88
88
|
prompt,
|
|
89
89
|
temperature: options?.temperature,
|
|
90
|
-
|
|
90
|
+
maxOutputTokens: options?.maxTokens,
|
|
91
91
|
system: options?.systemPrompt,
|
|
92
92
|
});
|
|
93
93
|
|
|
@@ -101,7 +101,7 @@ export class VercelAIATPClient {
|
|
|
101
101
|
schema,
|
|
102
102
|
system: options?.systemPrompt,
|
|
103
103
|
temperature: options?.temperature,
|
|
104
|
-
|
|
104
|
+
maxOutputTokens: options?.maxTokens,
|
|
105
105
|
});
|
|
106
106
|
|
|
107
107
|
return result.object;
|
package/src/tools.ts
CHANGED
|
@@ -1,24 +1,22 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { VercelAIATPClient } from './client.js';
|
|
3
3
|
import type { CreateATPToolsOptions, ATPToolsResult, StreamingToolsOptions } from './types.js';
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
ToolNames,
|
|
6
|
+
executeCodeInputSchema,
|
|
7
|
+
exploreApiInputSchema,
|
|
8
|
+
searchApiInputSchema,
|
|
9
|
+
fetchAllApisInputSchema,
|
|
10
|
+
} from '@mondaydotcomorg/atp-client';
|
|
5
11
|
import { ExecutionStatus } from '@mondaydotcomorg/atp-protocol';
|
|
6
12
|
import { tool } from 'ai';
|
|
7
13
|
import { createVercelEventHandler } from './event-adapter.js';
|
|
8
14
|
|
|
9
15
|
const TOOL_SCHEMAS = {
|
|
10
|
-
[ToolNames.EXECUTE_CODE]:
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
[ToolNames.
|
|
14
|
-
path: z
|
|
15
|
-
.string()
|
|
16
|
-
.describe('The path to explore (e.g., "/" for root, "/openapi" for OpenAPI group)'),
|
|
17
|
-
}),
|
|
18
|
-
[ToolNames.SEARCH_API]: z.object({
|
|
19
|
-
query: z.string().describe('Search query string to find APIs'),
|
|
20
|
-
}),
|
|
21
|
-
[ToolNames.FETCH_ALL_APIS]: z.object({}),
|
|
16
|
+
[ToolNames.EXECUTE_CODE]: executeCodeInputSchema.pick({ code: true }),
|
|
17
|
+
[ToolNames.EXPLORE_API]: exploreApiInputSchema,
|
|
18
|
+
[ToolNames.SEARCH_API]: searchApiInputSchema,
|
|
19
|
+
[ToolNames.FETCH_ALL_APIS]: fetchAllApisInputSchema,
|
|
22
20
|
} as const;
|
|
23
21
|
|
|
24
22
|
export async function createATPTools(options: CreateATPToolsOptions): Promise<ATPToolsResult> {
|
|
@@ -33,7 +31,7 @@ export async function createATPTools(options: CreateATPToolsOptions): Promise<AT
|
|
|
33
31
|
vercelTools.atp_execute_code = tool({
|
|
34
32
|
description:
|
|
35
33
|
'Execute TypeScript code in ATP sandbox with access to runtime APIs (atp.llm.*, atp.embedding.*, atp.approval.*)',
|
|
36
|
-
|
|
34
|
+
inputSchema: TOOL_SCHEMAS[ToolNames.EXECUTE_CODE],
|
|
37
35
|
execute: async ({ code }: { code: string }) => {
|
|
38
36
|
try {
|
|
39
37
|
const result = await client.execute(code, defaultExecutionConfig);
|
|
@@ -68,7 +66,7 @@ export async function createATPTools(options: CreateATPToolsOptions): Promise<AT
|
|
|
68
66
|
vercelTools.atp_explore_api = tool({
|
|
69
67
|
description:
|
|
70
68
|
'Explore APIs using filesystem-like navigation. Navigate through directories to discover available functions.',
|
|
71
|
-
|
|
69
|
+
inputSchema: TOOL_SCHEMAS[ToolNames.EXPLORE_API],
|
|
72
70
|
execute: async ({ path }: { path: string }) => {
|
|
73
71
|
try {
|
|
74
72
|
const result = await underlyingClient.exploreAPI(path);
|
|
@@ -88,7 +86,7 @@ export async function createATPTools(options: CreateATPToolsOptions): Promise<AT
|
|
|
88
86
|
vercelTools.atp_search_api = tool({
|
|
89
87
|
description:
|
|
90
88
|
'Search for APIs by keyword. Provide search term as string like "add", "math", "user", etc.',
|
|
91
|
-
|
|
89
|
+
inputSchema: TOOL_SCHEMAS[ToolNames.SEARCH_API],
|
|
92
90
|
execute: async ({ query }: { query: string }) => {
|
|
93
91
|
try {
|
|
94
92
|
const results = await underlyingClient.searchAPI(query);
|
|
@@ -114,7 +112,7 @@ export async function createATPTools(options: CreateATPToolsOptions): Promise<AT
|
|
|
114
112
|
vercelTools.atp_get_type_definitions = tool({
|
|
115
113
|
description:
|
|
116
114
|
'Get TypeScript type definitions for ATP runtime APIs to understand available functions',
|
|
117
|
-
|
|
115
|
+
inputSchema: z.object({}),
|
|
118
116
|
execute: async () => {
|
|
119
117
|
try {
|
|
120
118
|
const types = client.getTypeDefinitions();
|
|
@@ -179,7 +177,7 @@ export async function createATPStreamingTools(
|
|
|
179
177
|
vercelTools.atp_execute_code = tool({
|
|
180
178
|
description:
|
|
181
179
|
'Execute TypeScript code in ATP sandbox with streaming events for thinking, tool execution, and text output',
|
|
182
|
-
|
|
180
|
+
inputSchema: TOOL_SCHEMAS[ToolNames.EXECUTE_CODE],
|
|
183
181
|
execute: async ({ code }: { code: string }) => {
|
|
184
182
|
try {
|
|
185
183
|
const result = await underlyingClient.executeStream(
|
|
@@ -218,7 +216,7 @@ export async function createATPStreamingTools(
|
|
|
218
216
|
vercelTools.atp_explore_api = tool({
|
|
219
217
|
description:
|
|
220
218
|
'Explore APIs using filesystem-like navigation. Navigate through directories to discover available functions.',
|
|
221
|
-
|
|
219
|
+
inputSchema: TOOL_SCHEMAS[ToolNames.EXPLORE_API],
|
|
222
220
|
execute: async ({ path }: { path: string }) => {
|
|
223
221
|
try {
|
|
224
222
|
const result = await underlyingClient.exploreAPI(path);
|
|
@@ -238,7 +236,7 @@ export async function createATPStreamingTools(
|
|
|
238
236
|
vercelTools.atp_search_api = tool({
|
|
239
237
|
description:
|
|
240
238
|
'Search for APIs by keyword. Provide search term as string like "add", "math", "user", etc.',
|
|
241
|
-
|
|
239
|
+
inputSchema: TOOL_SCHEMAS[ToolNames.SEARCH_API],
|
|
242
240
|
execute: async ({ query }: { query: string }) => {
|
|
243
241
|
try {
|
|
244
242
|
const results = await underlyingClient.searchAPI(query);
|
|
@@ -264,7 +262,7 @@ export async function createATPStreamingTools(
|
|
|
264
262
|
vercelTools.atp_get_type_definitions = tool({
|
|
265
263
|
description:
|
|
266
264
|
'Get TypeScript type definitions for ATP runtime APIs to understand available functions',
|
|
267
|
-
|
|
265
|
+
inputSchema: z.object({}),
|
|
268
266
|
execute: async () => {
|
|
269
267
|
try {
|
|
270
268
|
const types = client.getTypeDefinitions();
|