@mondaydotcomorg/atp-vercel-sdk 0.20.9 → 0.21.1
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/index.cjs +62 -38
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +62 -38
- package/dist/index.js.map +1 -1
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +44 -40
- package/dist/tools.js.map +1 -1
- package/package.json +3 -3
- package/src/tools.ts +52 -44
package/dist/index.cjs
CHANGED
|
@@ -349,31 +349,41 @@ async function createATPTools(options) {
|
|
|
349
349
|
};
|
|
350
350
|
}
|
|
351
351
|
} catch (error) {
|
|
352
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
352
353
|
return {
|
|
353
354
|
success: false,
|
|
354
|
-
error:
|
|
355
|
+
error: message || "Unknown error"
|
|
355
356
|
};
|
|
356
357
|
}
|
|
357
358
|
}, "execute")
|
|
358
359
|
});
|
|
359
360
|
vercelTools.atp_explore_api = ai.tool({
|
|
360
|
-
description: "Explore APIs using filesystem-like navigation. Navigate through directories to discover available functions.",
|
|
361
|
+
description: "Explore APIs using filesystem-like navigation. Navigate through directories to discover available functions. Accepts a single path string or array of paths.",
|
|
361
362
|
inputSchema: TOOL_SCHEMAS[atpClient.ToolNames.EXPLORE_API],
|
|
362
|
-
execute: /* @__PURE__ */ __name(async ({
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
363
|
+
execute: /* @__PURE__ */ __name(async ({ paths }) => {
|
|
364
|
+
const pathsToExplore = Array.isArray(paths) ? paths : [
|
|
365
|
+
paths
|
|
366
|
+
];
|
|
367
|
+
const results = await Promise.all(pathsToExplore.map(async (path) => {
|
|
368
|
+
try {
|
|
369
|
+
const result = await underlyingClient.exploreAPI(path, {
|
|
370
|
+
toolRules: defaultExecutionConfig?.toolRules
|
|
371
|
+
});
|
|
372
|
+
return {
|
|
373
|
+
success: true,
|
|
374
|
+
path,
|
|
375
|
+
result
|
|
376
|
+
};
|
|
377
|
+
} catch (error) {
|
|
378
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
379
|
+
return {
|
|
380
|
+
success: false,
|
|
381
|
+
path,
|
|
382
|
+
error: message
|
|
383
|
+
};
|
|
384
|
+
}
|
|
385
|
+
}));
|
|
386
|
+
return results;
|
|
377
387
|
}, "execute")
|
|
378
388
|
});
|
|
379
389
|
vercelTools.atp_search_api = ai.tool({
|
|
@@ -396,9 +406,10 @@ async function createATPTools(options) {
|
|
|
396
406
|
count: results.length
|
|
397
407
|
};
|
|
398
408
|
} catch (error) {
|
|
409
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
399
410
|
return {
|
|
400
411
|
success: false,
|
|
401
|
-
error:
|
|
412
|
+
error: message
|
|
402
413
|
};
|
|
403
414
|
}
|
|
404
415
|
}, "execute")
|
|
@@ -414,9 +425,10 @@ async function createATPTools(options) {
|
|
|
414
425
|
types
|
|
415
426
|
};
|
|
416
427
|
} catch (error) {
|
|
428
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
417
429
|
return {
|
|
418
430
|
success: false,
|
|
419
|
-
error:
|
|
431
|
+
error: message
|
|
420
432
|
};
|
|
421
433
|
}
|
|
422
434
|
}, "execute")
|
|
@@ -459,31 +471,41 @@ async function createATPStreamingTools(options) {
|
|
|
459
471
|
};
|
|
460
472
|
}
|
|
461
473
|
} catch (error) {
|
|
474
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
462
475
|
return {
|
|
463
476
|
success: false,
|
|
464
|
-
error:
|
|
477
|
+
error: message || "Unknown error"
|
|
465
478
|
};
|
|
466
479
|
}
|
|
467
480
|
}, "execute")
|
|
468
481
|
});
|
|
469
482
|
vercelTools.atp_explore_api = ai.tool({
|
|
470
|
-
description: "Explore APIs using filesystem-like navigation. Navigate through directories to discover available functions.",
|
|
483
|
+
description: "Explore APIs using filesystem-like navigation. Navigate through directories to discover available functions. Accepts a single path string or array of paths.",
|
|
471
484
|
inputSchema: TOOL_SCHEMAS[atpClient.ToolNames.EXPLORE_API],
|
|
472
|
-
execute: /* @__PURE__ */ __name(async ({
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
485
|
+
execute: /* @__PURE__ */ __name(async ({ paths }) => {
|
|
486
|
+
const pathsToExplore = Array.isArray(paths) ? paths : [
|
|
487
|
+
paths
|
|
488
|
+
];
|
|
489
|
+
const results = await Promise.all(pathsToExplore.map(async (path) => {
|
|
490
|
+
try {
|
|
491
|
+
const result = await underlyingClient.exploreAPI(path, {
|
|
492
|
+
toolRules: defaultExecutionConfig?.toolRules
|
|
493
|
+
});
|
|
494
|
+
return {
|
|
495
|
+
success: true,
|
|
496
|
+
path,
|
|
497
|
+
result
|
|
498
|
+
};
|
|
499
|
+
} catch (error) {
|
|
500
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
501
|
+
return {
|
|
502
|
+
success: false,
|
|
503
|
+
path,
|
|
504
|
+
error: message
|
|
505
|
+
};
|
|
506
|
+
}
|
|
507
|
+
}));
|
|
508
|
+
return results;
|
|
487
509
|
}, "execute")
|
|
488
510
|
});
|
|
489
511
|
vercelTools.atp_search_api = ai.tool({
|
|
@@ -506,9 +528,10 @@ async function createATPStreamingTools(options) {
|
|
|
506
528
|
count: results.length
|
|
507
529
|
};
|
|
508
530
|
} catch (error) {
|
|
531
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
509
532
|
return {
|
|
510
533
|
success: false,
|
|
511
|
-
error:
|
|
534
|
+
error: message
|
|
512
535
|
};
|
|
513
536
|
}
|
|
514
537
|
}, "execute")
|
|
@@ -524,9 +547,10 @@ async function createATPStreamingTools(options) {
|
|
|
524
547
|
types
|
|
525
548
|
};
|
|
526
549
|
} catch (error) {
|
|
550
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
527
551
|
return {
|
|
528
552
|
success: false,
|
|
529
|
-
error:
|
|
553
|
+
error: message
|
|
530
554
|
};
|
|
531
555
|
}
|
|
532
556
|
}, "execute")
|
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","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","toolRules","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\t\ttoolRules: defaultExecutionConfig?.toolRules,\n\t\t\t\t});\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\t\tquery,\n\t\t\t\t\ttoolRules: defaultExecutionConfig?.toolRules,\n\t\t\t\t});\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\t\ttoolRules: defaultExecutionConfig?.toolRules,\n\t\t\t\t});\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\t\tquery,\n\t\t\t\t\ttoolRules: defaultExecutionConfig?.toolRules,\n\t\t\t\t});\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"]}
|
|
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","String","atp_explore_api","paths","pathsToExplore","Array","isArray","results","Promise","all","map","path","exploreAPI","toolRules","atp_search_api","query","searchAPI","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: unknown) {\n\t\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: 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. Accepts a single path string or array of paths.',\n\t\tinputSchema: TOOL_SCHEMAS[ToolNames.EXPLORE_API],\n\t\texecute: async ({ paths }: { paths: string | string[] }) => {\n\t\t\tconst pathsToExplore = Array.isArray(paths) ? paths : [paths];\n\t\t\tconst results = await Promise.all(\n\t\t\t\tpathsToExplore.map(async (path) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst result = await underlyingClient.exploreAPI(path, {\n\t\t\t\t\t\t\ttoolRules: defaultExecutionConfig?.toolRules,\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn { success: true, path, result };\n\t\t\t\t\t} catch (error: unknown) {\n\t\t\t\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\t\t\t\treturn { success: false, path, error: message };\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn results;\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\t\tquery,\n\t\t\t\t\ttoolRules: defaultExecutionConfig?.toolRules,\n\t\t\t\t});\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: unknown) {\n\t\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: 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: unknown) {\n\t\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: 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: unknown) {\n\t\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: 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. Accepts a single path string or array of paths.',\n\t\tinputSchema: TOOL_SCHEMAS[ToolNames.EXPLORE_API],\n\t\texecute: async ({ paths }: { paths: string | string[] }) => {\n\t\t\tconst pathsToExplore = Array.isArray(paths) ? paths : [paths];\n\t\t\tconst results = await Promise.all(\n\t\t\t\tpathsToExplore.map(async (path) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst result = await underlyingClient.exploreAPI(path, {\n\t\t\t\t\t\t\ttoolRules: defaultExecutionConfig?.toolRules,\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn { success: true, path, result };\n\t\t\t\t\t} catch (error: unknown) {\n\t\t\t\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\t\t\t\treturn { success: false, path, error: message };\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn results;\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\t\tquery,\n\t\t\t\t\ttoolRules: defaultExecutionConfig?.toolRules,\n\t\t\t\t});\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: unknown) {\n\t\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: 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: unknown) {\n\t\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: 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
|
@@ -347,31 +347,41 @@ async function createATPTools(options) {
|
|
|
347
347
|
};
|
|
348
348
|
}
|
|
349
349
|
} catch (error) {
|
|
350
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
350
351
|
return {
|
|
351
352
|
success: false,
|
|
352
|
-
error:
|
|
353
|
+
error: message || "Unknown error"
|
|
353
354
|
};
|
|
354
355
|
}
|
|
355
356
|
}, "execute")
|
|
356
357
|
});
|
|
357
358
|
vercelTools.atp_explore_api = tool({
|
|
358
|
-
description: "Explore APIs using filesystem-like navigation. Navigate through directories to discover available functions.",
|
|
359
|
+
description: "Explore APIs using filesystem-like navigation. Navigate through directories to discover available functions. Accepts a single path string or array of paths.",
|
|
359
360
|
inputSchema: TOOL_SCHEMAS[ToolNames.EXPLORE_API],
|
|
360
|
-
execute: /* @__PURE__ */ __name(async ({
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
361
|
+
execute: /* @__PURE__ */ __name(async ({ paths }) => {
|
|
362
|
+
const pathsToExplore = Array.isArray(paths) ? paths : [
|
|
363
|
+
paths
|
|
364
|
+
];
|
|
365
|
+
const results = await Promise.all(pathsToExplore.map(async (path) => {
|
|
366
|
+
try {
|
|
367
|
+
const result = await underlyingClient.exploreAPI(path, {
|
|
368
|
+
toolRules: defaultExecutionConfig?.toolRules
|
|
369
|
+
});
|
|
370
|
+
return {
|
|
371
|
+
success: true,
|
|
372
|
+
path,
|
|
373
|
+
result
|
|
374
|
+
};
|
|
375
|
+
} catch (error) {
|
|
376
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
377
|
+
return {
|
|
378
|
+
success: false,
|
|
379
|
+
path,
|
|
380
|
+
error: message
|
|
381
|
+
};
|
|
382
|
+
}
|
|
383
|
+
}));
|
|
384
|
+
return results;
|
|
375
385
|
}, "execute")
|
|
376
386
|
});
|
|
377
387
|
vercelTools.atp_search_api = tool({
|
|
@@ -394,9 +404,10 @@ async function createATPTools(options) {
|
|
|
394
404
|
count: results.length
|
|
395
405
|
};
|
|
396
406
|
} catch (error) {
|
|
407
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
397
408
|
return {
|
|
398
409
|
success: false,
|
|
399
|
-
error:
|
|
410
|
+
error: message
|
|
400
411
|
};
|
|
401
412
|
}
|
|
402
413
|
}, "execute")
|
|
@@ -412,9 +423,10 @@ async function createATPTools(options) {
|
|
|
412
423
|
types
|
|
413
424
|
};
|
|
414
425
|
} catch (error) {
|
|
426
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
415
427
|
return {
|
|
416
428
|
success: false,
|
|
417
|
-
error:
|
|
429
|
+
error: message
|
|
418
430
|
};
|
|
419
431
|
}
|
|
420
432
|
}, "execute")
|
|
@@ -457,31 +469,41 @@ async function createATPStreamingTools(options) {
|
|
|
457
469
|
};
|
|
458
470
|
}
|
|
459
471
|
} catch (error) {
|
|
472
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
460
473
|
return {
|
|
461
474
|
success: false,
|
|
462
|
-
error:
|
|
475
|
+
error: message || "Unknown error"
|
|
463
476
|
};
|
|
464
477
|
}
|
|
465
478
|
}, "execute")
|
|
466
479
|
});
|
|
467
480
|
vercelTools.atp_explore_api = tool({
|
|
468
|
-
description: "Explore APIs using filesystem-like navigation. Navigate through directories to discover available functions.",
|
|
481
|
+
description: "Explore APIs using filesystem-like navigation. Navigate through directories to discover available functions. Accepts a single path string or array of paths.",
|
|
469
482
|
inputSchema: TOOL_SCHEMAS[ToolNames.EXPLORE_API],
|
|
470
|
-
execute: /* @__PURE__ */ __name(async ({
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
483
|
+
execute: /* @__PURE__ */ __name(async ({ paths }) => {
|
|
484
|
+
const pathsToExplore = Array.isArray(paths) ? paths : [
|
|
485
|
+
paths
|
|
486
|
+
];
|
|
487
|
+
const results = await Promise.all(pathsToExplore.map(async (path) => {
|
|
488
|
+
try {
|
|
489
|
+
const result = await underlyingClient.exploreAPI(path, {
|
|
490
|
+
toolRules: defaultExecutionConfig?.toolRules
|
|
491
|
+
});
|
|
492
|
+
return {
|
|
493
|
+
success: true,
|
|
494
|
+
path,
|
|
495
|
+
result
|
|
496
|
+
};
|
|
497
|
+
} catch (error) {
|
|
498
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
499
|
+
return {
|
|
500
|
+
success: false,
|
|
501
|
+
path,
|
|
502
|
+
error: message
|
|
503
|
+
};
|
|
504
|
+
}
|
|
505
|
+
}));
|
|
506
|
+
return results;
|
|
485
507
|
}, "execute")
|
|
486
508
|
});
|
|
487
509
|
vercelTools.atp_search_api = tool({
|
|
@@ -504,9 +526,10 @@ async function createATPStreamingTools(options) {
|
|
|
504
526
|
count: results.length
|
|
505
527
|
};
|
|
506
528
|
} catch (error) {
|
|
529
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
507
530
|
return {
|
|
508
531
|
success: false,
|
|
509
|
-
error:
|
|
532
|
+
error: message
|
|
510
533
|
};
|
|
511
534
|
}
|
|
512
535
|
}, "execute")
|
|
@@ -522,9 +545,10 @@ async function createATPStreamingTools(options) {
|
|
|
522
545
|
types
|
|
523
546
|
};
|
|
524
547
|
} catch (error) {
|
|
548
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
525
549
|
return {
|
|
526
550
|
success: false,
|
|
527
|
-
error:
|
|
551
|
+
error: message
|
|
528
552
|
};
|
|
529
553
|
}
|
|
530
554
|
}, "execute")
|
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","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","toolRules","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\t\ttoolRules: defaultExecutionConfig?.toolRules,\n\t\t\t\t});\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\t\tquery,\n\t\t\t\t\ttoolRules: defaultExecutionConfig?.toolRules,\n\t\t\t\t});\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\t\ttoolRules: defaultExecutionConfig?.toolRules,\n\t\t\t\t});\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\t\tquery,\n\t\t\t\t\ttoolRules: defaultExecutionConfig?.toolRules,\n\t\t\t\t});\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"]}
|
|
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","String","atp_explore_api","paths","pathsToExplore","Array","isArray","results","Promise","all","map","path","exploreAPI","toolRules","atp_search_api","query","searchAPI","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: unknown) {\n\t\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: 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. Accepts a single path string or array of paths.',\n\t\tinputSchema: TOOL_SCHEMAS[ToolNames.EXPLORE_API],\n\t\texecute: async ({ paths }: { paths: string | string[] }) => {\n\t\t\tconst pathsToExplore = Array.isArray(paths) ? paths : [paths];\n\t\t\tconst results = await Promise.all(\n\t\t\t\tpathsToExplore.map(async (path) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst result = await underlyingClient.exploreAPI(path, {\n\t\t\t\t\t\t\ttoolRules: defaultExecutionConfig?.toolRules,\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn { success: true, path, result };\n\t\t\t\t\t} catch (error: unknown) {\n\t\t\t\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\t\t\t\treturn { success: false, path, error: message };\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn results;\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\t\tquery,\n\t\t\t\t\ttoolRules: defaultExecutionConfig?.toolRules,\n\t\t\t\t});\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: unknown) {\n\t\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: 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: unknown) {\n\t\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: 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: unknown) {\n\t\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: 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. Accepts a single path string or array of paths.',\n\t\tinputSchema: TOOL_SCHEMAS[ToolNames.EXPLORE_API],\n\t\texecute: async ({ paths }: { paths: string | string[] }) => {\n\t\t\tconst pathsToExplore = Array.isArray(paths) ? paths : [paths];\n\t\t\tconst results = await Promise.all(\n\t\t\t\tpathsToExplore.map(async (path) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst result = await underlyingClient.exploreAPI(path, {\n\t\t\t\t\t\t\ttoolRules: defaultExecutionConfig?.toolRules,\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn { success: true, path, result };\n\t\t\t\t\t} catch (error: unknown) {\n\t\t\t\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\t\t\t\treturn { success: false, path, error: message };\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn results;\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\t\tquery,\n\t\t\t\t\ttoolRules: defaultExecutionConfig?.toolRules,\n\t\t\t\t});\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: unknown) {\n\t\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: 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: unknown) {\n\t\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: 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;AAmB/F,wBAAsB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,cAAc,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,CA2H5F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,uBAAuB,CAC5C,OAAO,EAAE,qBAAqB,GAC5B,OAAO,CAAC,cAAc,CAAC,CAiIzB"}
|
package/dist/tools.js
CHANGED
|
@@ -44,32 +44,32 @@ export async function createATPTools(options) {
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
catch (error) {
|
|
47
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
47
48
|
return {
|
|
48
49
|
success: false,
|
|
49
|
-
error:
|
|
50
|
+
error: message || 'Unknown error',
|
|
50
51
|
};
|
|
51
52
|
}
|
|
52
53
|
},
|
|
53
54
|
});
|
|
54
55
|
vercelTools.atp_explore_api = tool({
|
|
55
|
-
description: 'Explore APIs using filesystem-like navigation. Navigate through directories to discover available functions.',
|
|
56
|
+
description: 'Explore APIs using filesystem-like navigation. Navigate through directories to discover available functions. Accepts a single path string or array of paths.',
|
|
56
57
|
inputSchema: TOOL_SCHEMAS[ToolNames.EXPLORE_API],
|
|
57
|
-
execute: async ({
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
result
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
58
|
+
execute: async ({ paths }) => {
|
|
59
|
+
const pathsToExplore = Array.isArray(paths) ? paths : [paths];
|
|
60
|
+
const results = await Promise.all(pathsToExplore.map(async (path) => {
|
|
61
|
+
try {
|
|
62
|
+
const result = await underlyingClient.exploreAPI(path, {
|
|
63
|
+
toolRules: defaultExecutionConfig?.toolRules,
|
|
64
|
+
});
|
|
65
|
+
return { success: true, path, result };
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
69
|
+
return { success: false, path, error: message };
|
|
70
|
+
}
|
|
71
|
+
}));
|
|
72
|
+
return results;
|
|
73
73
|
},
|
|
74
74
|
});
|
|
75
75
|
vercelTools.atp_search_api = tool({
|
|
@@ -93,9 +93,10 @@ export async function createATPTools(options) {
|
|
|
93
93
|
};
|
|
94
94
|
}
|
|
95
95
|
catch (error) {
|
|
96
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
96
97
|
return {
|
|
97
98
|
success: false,
|
|
98
|
-
error:
|
|
99
|
+
error: message,
|
|
99
100
|
};
|
|
100
101
|
}
|
|
101
102
|
},
|
|
@@ -112,9 +113,10 @@ export async function createATPTools(options) {
|
|
|
112
113
|
};
|
|
113
114
|
}
|
|
114
115
|
catch (error) {
|
|
116
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
115
117
|
return {
|
|
116
118
|
success: false,
|
|
117
|
-
error:
|
|
119
|
+
error: message,
|
|
118
120
|
};
|
|
119
121
|
}
|
|
120
122
|
},
|
|
@@ -185,32 +187,32 @@ export async function createATPStreamingTools(options) {
|
|
|
185
187
|
}
|
|
186
188
|
}
|
|
187
189
|
catch (error) {
|
|
190
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
188
191
|
return {
|
|
189
192
|
success: false,
|
|
190
|
-
error:
|
|
193
|
+
error: message || 'Unknown error',
|
|
191
194
|
};
|
|
192
195
|
}
|
|
193
196
|
},
|
|
194
197
|
});
|
|
195
198
|
vercelTools.atp_explore_api = tool({
|
|
196
|
-
description: 'Explore APIs using filesystem-like navigation. Navigate through directories to discover available functions.',
|
|
199
|
+
description: 'Explore APIs using filesystem-like navigation. Navigate through directories to discover available functions. Accepts a single path string or array of paths.',
|
|
197
200
|
inputSchema: TOOL_SCHEMAS[ToolNames.EXPLORE_API],
|
|
198
|
-
execute: async ({
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
result
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
}
|
|
201
|
+
execute: async ({ paths }) => {
|
|
202
|
+
const pathsToExplore = Array.isArray(paths) ? paths : [paths];
|
|
203
|
+
const results = await Promise.all(pathsToExplore.map(async (path) => {
|
|
204
|
+
try {
|
|
205
|
+
const result = await underlyingClient.exploreAPI(path, {
|
|
206
|
+
toolRules: defaultExecutionConfig?.toolRules,
|
|
207
|
+
});
|
|
208
|
+
return { success: true, path, result };
|
|
209
|
+
}
|
|
210
|
+
catch (error) {
|
|
211
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
212
|
+
return { success: false, path, error: message };
|
|
213
|
+
}
|
|
214
|
+
}));
|
|
215
|
+
return results;
|
|
214
216
|
},
|
|
215
217
|
});
|
|
216
218
|
vercelTools.atp_search_api = tool({
|
|
@@ -234,9 +236,10 @@ export async function createATPStreamingTools(options) {
|
|
|
234
236
|
};
|
|
235
237
|
}
|
|
236
238
|
catch (error) {
|
|
239
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
237
240
|
return {
|
|
238
241
|
success: false,
|
|
239
|
-
error:
|
|
242
|
+
error: message,
|
|
240
243
|
};
|
|
241
244
|
}
|
|
242
245
|
},
|
|
@@ -253,9 +256,10 @@ export async function createATPStreamingTools(options) {
|
|
|
253
256
|
};
|
|
254
257
|
}
|
|
255
258
|
catch (error) {
|
|
259
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
256
260
|
return {
|
|
257
261
|
success: false,
|
|
258
|
-
error:
|
|
262
|
+
error: message,
|
|
259
263
|
};
|
|
260
264
|
}
|
|
261
265
|
},
|
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,EACN,SAAS,EACT,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,GACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC1B,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,MAAM,YAAY,GAAG;IACpB,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,sBAAsB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACrE,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,qBAAqB;IAC9C,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,oBAAoB;IAC5C,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,uBAAuB;CAC1C,CAAC;AAEX,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAA8B;IAClE,MAAM,EAAE,sBAAsB,EAAE,GAAG,aAAa,EAAE,GAAG,OAAO,CAAC;IAE7D,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC,aAAa,CAAC,CAAC;IACpD,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;IAEvB,MAAM,gBAAgB,GAAG,MAAM,CAAC,mBAAmB,EAAE,CAAC;IACtD,MAAM,WAAW,GAAwB,EAAE,CAAC;IAE5C,WAAW,CAAC,gBAAgB,GAAG,IAAI,CAAC;QACnC,WAAW,EACV,iHAAiH;QAClH,WAAW,EAAE,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC;QACjD,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAoB,EAAE,EAAE;YAC7C,IAAI,CAAC;gBACJ,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;gBAElE,IAAI,MAAM,CAAC,MAAM,KAAK,eAAe,CAAC,SAAS,EAAE,CAAC;oBACjD,OAAO;wBACN,OAAO,EAAE,IAAI;wBACb,MAAM,EAAE,MAAM,CAAC,MAAM;wBACrB,KAAK,EAAE,MAAM,CAAC,KAAK;qBACnB,CAAC;gBACH,CAAC;qBAAM,IAAI,MAAM,CAAC,MAAM,KAAK,eAAe,CAAC,MAAM,EAAE,CAAC;oBACrD,OAAO;wBACN,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,MAAM,CAAC,KAAK;wBACnB,KAAK,EAAE,MAAM,CAAC,KAAK;qBACnB,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACP,OAAO;wBACN,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,iCAAiC,GAAG,MAAM,CAAC,MAAM;qBACxD,CAAC;gBACH,CAAC;YACF,CAAC;YAAC,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.
|
|
3
|
+
"version": "0.21.1",
|
|
4
4
|
"description": "Vercel AI SDK integration for Agent Tool Protocol",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -44,8 +44,8 @@
|
|
|
44
44
|
],
|
|
45
45
|
"license": "MIT",
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@mondaydotcomorg/atp-client": "0.
|
|
48
|
-
"@mondaydotcomorg/atp-protocol": "0.19.
|
|
47
|
+
"@mondaydotcomorg/atp-client": "0.20.1",
|
|
48
|
+
"@mondaydotcomorg/atp-protocol": "0.19.20"
|
|
49
49
|
},
|
|
50
50
|
"peerDependencies": {
|
|
51
51
|
"ai": "^5.0.0",
|
package/src/tools.ts
CHANGED
|
@@ -54,10 +54,11 @@ export async function createATPTools(options: CreateATPToolsOptions): Promise<AT
|
|
|
54
54
|
error: 'Execution in unexpected state: ' + result.status,
|
|
55
55
|
};
|
|
56
56
|
}
|
|
57
|
-
} catch (error:
|
|
57
|
+
} catch (error: unknown) {
|
|
58
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
58
59
|
return {
|
|
59
60
|
success: false,
|
|
60
|
-
error:
|
|
61
|
+
error: message || 'Unknown error',
|
|
61
62
|
};
|
|
62
63
|
}
|
|
63
64
|
},
|
|
@@ -65,23 +66,24 @@ export async function createATPTools(options: CreateATPToolsOptions): Promise<AT
|
|
|
65
66
|
|
|
66
67
|
vercelTools.atp_explore_api = tool({
|
|
67
68
|
description:
|
|
68
|
-
'Explore APIs using filesystem-like navigation. Navigate through directories to discover available functions.',
|
|
69
|
+
'Explore APIs using filesystem-like navigation. Navigate through directories to discover available functions. Accepts a single path string or array of paths.',
|
|
69
70
|
inputSchema: TOOL_SCHEMAS[ToolNames.EXPLORE_API],
|
|
70
|
-
execute: async ({
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
}
|
|
84
|
-
|
|
71
|
+
execute: async ({ paths }: { paths: string | string[] }) => {
|
|
72
|
+
const pathsToExplore = Array.isArray(paths) ? paths : [paths];
|
|
73
|
+
const results = await Promise.all(
|
|
74
|
+
pathsToExplore.map(async (path) => {
|
|
75
|
+
try {
|
|
76
|
+
const result = await underlyingClient.exploreAPI(path, {
|
|
77
|
+
toolRules: defaultExecutionConfig?.toolRules,
|
|
78
|
+
});
|
|
79
|
+
return { success: true, path, result };
|
|
80
|
+
} catch (error: unknown) {
|
|
81
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
82
|
+
return { success: false, path, error: message };
|
|
83
|
+
}
|
|
84
|
+
})
|
|
85
|
+
);
|
|
86
|
+
return results;
|
|
85
87
|
},
|
|
86
88
|
});
|
|
87
89
|
|
|
@@ -105,10 +107,11 @@ export async function createATPTools(options: CreateATPToolsOptions): Promise<AT
|
|
|
105
107
|
})),
|
|
106
108
|
count: results.length,
|
|
107
109
|
};
|
|
108
|
-
} catch (error:
|
|
110
|
+
} catch (error: unknown) {
|
|
111
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
109
112
|
return {
|
|
110
113
|
success: false,
|
|
111
|
-
error:
|
|
114
|
+
error: message,
|
|
112
115
|
};
|
|
113
116
|
}
|
|
114
117
|
},
|
|
@@ -125,10 +128,11 @@ export async function createATPTools(options: CreateATPToolsOptions): Promise<AT
|
|
|
125
128
|
success: true,
|
|
126
129
|
types,
|
|
127
130
|
};
|
|
128
|
-
} catch (error:
|
|
131
|
+
} catch (error: unknown) {
|
|
132
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
129
133
|
return {
|
|
130
134
|
success: false,
|
|
131
|
-
error:
|
|
135
|
+
error: message,
|
|
132
136
|
};
|
|
133
137
|
}
|
|
134
138
|
},
|
|
@@ -209,10 +213,11 @@ export async function createATPStreamingTools(
|
|
|
209
213
|
error: 'Execution in unexpected state: ' + result.status,
|
|
210
214
|
};
|
|
211
215
|
}
|
|
212
|
-
} catch (error:
|
|
216
|
+
} catch (error: unknown) {
|
|
217
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
213
218
|
return {
|
|
214
219
|
success: false,
|
|
215
|
-
error:
|
|
220
|
+
error: message || 'Unknown error',
|
|
216
221
|
};
|
|
217
222
|
}
|
|
218
223
|
},
|
|
@@ -220,23 +225,24 @@ export async function createATPStreamingTools(
|
|
|
220
225
|
|
|
221
226
|
vercelTools.atp_explore_api = tool({
|
|
222
227
|
description:
|
|
223
|
-
'Explore APIs using filesystem-like navigation. Navigate through directories to discover available functions.',
|
|
228
|
+
'Explore APIs using filesystem-like navigation. Navigate through directories to discover available functions. Accepts a single path string or array of paths.',
|
|
224
229
|
inputSchema: TOOL_SCHEMAS[ToolNames.EXPLORE_API],
|
|
225
|
-
execute: async ({
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
}
|
|
239
|
-
|
|
230
|
+
execute: async ({ paths }: { paths: string | string[] }) => {
|
|
231
|
+
const pathsToExplore = Array.isArray(paths) ? paths : [paths];
|
|
232
|
+
const results = await Promise.all(
|
|
233
|
+
pathsToExplore.map(async (path) => {
|
|
234
|
+
try {
|
|
235
|
+
const result = await underlyingClient.exploreAPI(path, {
|
|
236
|
+
toolRules: defaultExecutionConfig?.toolRules,
|
|
237
|
+
});
|
|
238
|
+
return { success: true, path, result };
|
|
239
|
+
} catch (error: unknown) {
|
|
240
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
241
|
+
return { success: false, path, error: message };
|
|
242
|
+
}
|
|
243
|
+
})
|
|
244
|
+
);
|
|
245
|
+
return results;
|
|
240
246
|
},
|
|
241
247
|
});
|
|
242
248
|
|
|
@@ -260,10 +266,11 @@ export async function createATPStreamingTools(
|
|
|
260
266
|
})),
|
|
261
267
|
count: results.length,
|
|
262
268
|
};
|
|
263
|
-
} catch (error:
|
|
269
|
+
} catch (error: unknown) {
|
|
270
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
264
271
|
return {
|
|
265
272
|
success: false,
|
|
266
|
-
error:
|
|
273
|
+
error: message,
|
|
267
274
|
};
|
|
268
275
|
}
|
|
269
276
|
},
|
|
@@ -280,10 +287,11 @@ export async function createATPStreamingTools(
|
|
|
280
287
|
success: true,
|
|
281
288
|
types,
|
|
282
289
|
};
|
|
283
|
-
} catch (error:
|
|
290
|
+
} catch (error: unknown) {
|
|
291
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
284
292
|
return {
|
|
285
293
|
success: false,
|
|
286
|
-
error:
|
|
294
|
+
error: message,
|
|
287
295
|
};
|
|
288
296
|
}
|
|
289
297
|
},
|