@mondaydotcomorg/atp-vercel-sdk 0.21.2 → 0.21.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client.d.ts +2 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +8 -4
- package/dist/client.js.map +1 -1
- package/dist/index.cjs +8 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -5
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +35 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/client.ts +18 -4
- package/src/index.ts +6 -0
- package/src/types.ts +45 -0
package/dist/client.d.ts
CHANGED
|
@@ -6,6 +6,8 @@ export declare class VercelAIATPClient {
|
|
|
6
6
|
private model;
|
|
7
7
|
private embeddings?;
|
|
8
8
|
private approvalHandler?;
|
|
9
|
+
private generateTextFn;
|
|
10
|
+
private generateObjectFn;
|
|
9
11
|
constructor(options: VercelAIATPClientOptions);
|
|
10
12
|
connect(): Promise<void>;
|
|
11
13
|
getTypeDefinitions(): string;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEtF,OAAO,KAAK,EACX,wBAAwB,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEtF,OAAO,KAAK,EACX,wBAAwB,EAMxB,MAAM,YAAY,CAAC;AAEpB,qBAAa,iBAAiB;IAC7B,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,KAAK,CAAM;IACnB,OAAO,CAAC,UAAU,CAAC,CAAoB;IACvC,OAAO,CAAC,eAAe,CAAC,CAAkB;IAC1C,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,gBAAgB,CAAyB;gBAErC,OAAO,EAAE,wBAAwB;IA6DvC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B,kBAAkB,IAAI,MAAM;IAItB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;IAIxF,mBAAmB,IAAI,uBAAuB;YAIhC,aAAa;YAYb,gBAAgB;YAahB,iBAAiB;YAiCjB,eAAe;YAUf,qBAAqB;CAgBnC"}
|
package/dist/client.js
CHANGED
|
@@ -5,8 +5,10 @@ export class VercelAIATPClient {
|
|
|
5
5
|
model;
|
|
6
6
|
embeddings;
|
|
7
7
|
approvalHandler;
|
|
8
|
+
generateTextFn;
|
|
9
|
+
generateObjectFn;
|
|
8
10
|
constructor(options) {
|
|
9
|
-
const { model, embeddings, tools, approvalHandler, hooks } = options;
|
|
11
|
+
const { model, embeddings, tools, approvalHandler, hooks, generateTextFn = generateText, generateObjectFn = generateObject, } = options;
|
|
10
12
|
if ('server' in options && options.server) {
|
|
11
13
|
this.client = new AgentToolProtocolClient({
|
|
12
14
|
server: options.server,
|
|
@@ -28,6 +30,8 @@ export class VercelAIATPClient {
|
|
|
28
30
|
this.model = model;
|
|
29
31
|
this.embeddings = embeddings;
|
|
30
32
|
this.approvalHandler = approvalHandler;
|
|
33
|
+
this.generateTextFn = generateTextFn;
|
|
34
|
+
this.generateObjectFn = generateObjectFn;
|
|
31
35
|
this.client.provideLLM({
|
|
32
36
|
call: async (prompt, options) => {
|
|
33
37
|
return await this.handleLLMCall(prompt, options);
|
|
@@ -66,7 +70,7 @@ export class VercelAIATPClient {
|
|
|
66
70
|
return this.client;
|
|
67
71
|
}
|
|
68
72
|
async handleLLMCall(prompt, options) {
|
|
69
|
-
const result = await
|
|
73
|
+
const result = await this.generateTextFn({
|
|
70
74
|
model: this.model,
|
|
71
75
|
prompt,
|
|
72
76
|
temperature: options?.temperature,
|
|
@@ -76,7 +80,7 @@ export class VercelAIATPClient {
|
|
|
76
80
|
return result.text;
|
|
77
81
|
}
|
|
78
82
|
async handleLLMExtract(prompt, schema, options) {
|
|
79
|
-
const result = await
|
|
83
|
+
const result = await this.generateObjectFn({
|
|
80
84
|
model: this.model,
|
|
81
85
|
prompt,
|
|
82
86
|
schema,
|
|
@@ -88,7 +92,7 @@ export class VercelAIATPClient {
|
|
|
88
92
|
}
|
|
89
93
|
async handleLLMClassify(text, categories, options) {
|
|
90
94
|
const promptText = `Classify the following text into one of these categories: ${categories.join(', ')}\n\nText: ${text}\n\nRespond with ONLY the category name, nothing else.`;
|
|
91
|
-
const result = await
|
|
95
|
+
const result = await this.generateTextFn({
|
|
92
96
|
model: this.model,
|
|
93
97
|
prompt: promptText,
|
|
94
98
|
system: options?.systemPrompt,
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.cjs
CHANGED
|
@@ -15,8 +15,10 @@ var VercelAIATPClient = class {
|
|
|
15
15
|
model;
|
|
16
16
|
embeddings;
|
|
17
17
|
approvalHandler;
|
|
18
|
+
generateTextFn;
|
|
19
|
+
generateObjectFn;
|
|
18
20
|
constructor(options) {
|
|
19
|
-
const { model, embeddings, tools, approvalHandler, hooks } = options;
|
|
21
|
+
const { model, embeddings, tools, approvalHandler, hooks, generateTextFn = ai.generateText, generateObjectFn = ai.generateObject } = options;
|
|
20
22
|
if ("server" in options && options.server) {
|
|
21
23
|
this.client = new atpClient.AgentToolProtocolClient({
|
|
22
24
|
server: options.server,
|
|
@@ -40,6 +42,8 @@ var VercelAIATPClient = class {
|
|
|
40
42
|
this.model = model;
|
|
41
43
|
this.embeddings = embeddings;
|
|
42
44
|
this.approvalHandler = approvalHandler;
|
|
45
|
+
this.generateTextFn = generateTextFn;
|
|
46
|
+
this.generateObjectFn = generateObjectFn;
|
|
43
47
|
this.client.provideLLM({
|
|
44
48
|
call: /* @__PURE__ */ __name(async (prompt, options2) => {
|
|
45
49
|
return await this.handleLLMCall(prompt, options2);
|
|
@@ -81,7 +85,7 @@ var VercelAIATPClient = class {
|
|
|
81
85
|
return this.client;
|
|
82
86
|
}
|
|
83
87
|
async handleLLMCall(prompt, options) {
|
|
84
|
-
const result = await
|
|
88
|
+
const result = await this.generateTextFn({
|
|
85
89
|
model: this.model,
|
|
86
90
|
prompt,
|
|
87
91
|
temperature: options?.temperature,
|
|
@@ -91,7 +95,7 @@ var VercelAIATPClient = class {
|
|
|
91
95
|
return result.text;
|
|
92
96
|
}
|
|
93
97
|
async handleLLMExtract(prompt, schema, options) {
|
|
94
|
-
const result = await
|
|
98
|
+
const result = await this.generateObjectFn({
|
|
95
99
|
model: this.model,
|
|
96
100
|
prompt,
|
|
97
101
|
schema,
|
|
@@ -107,7 +111,7 @@ var VercelAIATPClient = class {
|
|
|
107
111
|
Text: ${text}
|
|
108
112
|
|
|
109
113
|
Respond with ONLY the category name, nothing else.`;
|
|
110
|
-
const result = await
|
|
114
|
+
const result = await this.generateTextFn({
|
|
111
115
|
model: this.model,
|
|
112
116
|
prompt: promptText,
|
|
113
117
|
system: options?.systemPrompt,
|
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","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"]}
|
|
1
|
+
{"version":3,"sources":["../src/client.ts","../src/event-adapter.ts","../src/tools.ts"],"names":["VercelAIATPClient","client","model","embeddings","approvalHandler","generateTextFn","generateObjectFn","constructor","options","tools","hooks","generateText","generateObject","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","temperature","maxOutputTokens","maxTokens","system","systemPrompt","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\tGenerateTextFunction,\n\tGenerateObjectFunction,\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\tprivate generateTextFn: GenerateTextFunction;\n\tprivate generateObjectFn: GenerateObjectFunction;\n\n\tconstructor(options: VercelAIATPClientOptions) {\n\t\tconst {\n\t\t\tmodel,\n\t\t\tembeddings,\n\t\t\ttools,\n\t\t\tapprovalHandler,\n\t\t\thooks,\n\t\t\tgenerateTextFn = generateText,\n\t\t\tgenerateObjectFn = generateObject,\n\t\t} = 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\t\tthis.generateTextFn = generateTextFn;\n\t\tthis.generateObjectFn = generateObjectFn;\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 this.generateTextFn({\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 this.generateObjectFn({\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 this.generateTextFn({\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.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { VercelAIATPClient } from './client.js';
|
|
2
2
|
export { createATPTools, createATPStreamingTools } from './tools.js';
|
|
3
3
|
export { createVercelEventHandler, createEventCollector, type UIMessageStreamWriter, type UIStreamEvent, type CreateVercelEventHandlerOptions, } from './event-adapter.js';
|
|
4
|
-
export type { VercelAIATPClientOptions, CreateATPToolsOptions, StreamingToolsOptions, ATPToolsResult, ApprovalHandler, ApprovalRequest, ApprovalResponse, EmbeddingProvider, } from './types.js';
|
|
4
|
+
export type { VercelAIATPClientOptions, CreateATPToolsOptions, StreamingToolsOptions, ATPToolsResult, ApprovalHandler, ApprovalRequest, ApprovalResponse, EmbeddingProvider, GenerateTextFunction, GenerateTextOptions, GenerateTextResult, GenerateObjectFunction, GenerateObjectOptions, GenerateObjectResult, } from './types.js';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EACN,wBAAwB,EACxB,oBAAoB,EACpB,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,+BAA+B,GACpC,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACX,wBAAwB,EACxB,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACd,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EACN,wBAAwB,EACxB,oBAAoB,EACpB,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,+BAA+B,GACpC,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACX,wBAAwB,EACxB,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACd,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,GACpB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AgentToolProtocolClient, ToolNames, fetchAllApisInputSchema, searchApiInputSchema, exploreApiInputSchema, executeCodeInputSchema } from '@mondaydotcomorg/atp-client';
|
|
2
|
-
import {
|
|
2
|
+
import { generateObject, generateText, tool } from 'ai';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import { ATPEventType, ExecutionStatus } from '@mondaydotcomorg/atp-protocol';
|
|
5
5
|
|
|
@@ -13,8 +13,10 @@ var VercelAIATPClient = class {
|
|
|
13
13
|
model;
|
|
14
14
|
embeddings;
|
|
15
15
|
approvalHandler;
|
|
16
|
+
generateTextFn;
|
|
17
|
+
generateObjectFn;
|
|
16
18
|
constructor(options) {
|
|
17
|
-
const { model, embeddings, tools, approvalHandler, hooks } = options;
|
|
19
|
+
const { model, embeddings, tools, approvalHandler, hooks, generateTextFn = generateText, generateObjectFn = generateObject } = options;
|
|
18
20
|
if ("server" in options && options.server) {
|
|
19
21
|
this.client = new AgentToolProtocolClient({
|
|
20
22
|
server: options.server,
|
|
@@ -38,6 +40,8 @@ var VercelAIATPClient = class {
|
|
|
38
40
|
this.model = model;
|
|
39
41
|
this.embeddings = embeddings;
|
|
40
42
|
this.approvalHandler = approvalHandler;
|
|
43
|
+
this.generateTextFn = generateTextFn;
|
|
44
|
+
this.generateObjectFn = generateObjectFn;
|
|
41
45
|
this.client.provideLLM({
|
|
42
46
|
call: /* @__PURE__ */ __name(async (prompt, options2) => {
|
|
43
47
|
return await this.handleLLMCall(prompt, options2);
|
|
@@ -79,7 +83,7 @@ var VercelAIATPClient = class {
|
|
|
79
83
|
return this.client;
|
|
80
84
|
}
|
|
81
85
|
async handleLLMCall(prompt, options) {
|
|
82
|
-
const result = await
|
|
86
|
+
const result = await this.generateTextFn({
|
|
83
87
|
model: this.model,
|
|
84
88
|
prompt,
|
|
85
89
|
temperature: options?.temperature,
|
|
@@ -89,7 +93,7 @@ var VercelAIATPClient = class {
|
|
|
89
93
|
return result.text;
|
|
90
94
|
}
|
|
91
95
|
async handleLLMExtract(prompt, schema, options) {
|
|
92
|
-
const result = await
|
|
96
|
+
const result = await this.generateObjectFn({
|
|
93
97
|
model: this.model,
|
|
94
98
|
prompt,
|
|
95
99
|
schema,
|
|
@@ -105,7 +109,7 @@ var VercelAIATPClient = class {
|
|
|
105
109
|
Text: ${text}
|
|
106
110
|
|
|
107
111
|
Respond with ONLY the category name, nothing else.`;
|
|
108
|
-
const result = await
|
|
112
|
+
const result = await this.generateTextFn({
|
|
109
113
|
model: this.model,
|
|
110
114
|
prompt: promptText,
|
|
111
115
|
system: options?.systemPrompt,
|
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","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"]}
|
|
1
|
+
{"version":3,"sources":["../src/client.ts","../src/event-adapter.ts","../src/tools.ts"],"names":["VercelAIATPClient","client","model","embeddings","approvalHandler","generateTextFn","generateObjectFn","constructor","options","tools","hooks","generateText","generateObject","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","temperature","maxOutputTokens","maxTokens","system","systemPrompt","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\tGenerateTextFunction,\n\tGenerateObjectFunction,\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\tprivate generateTextFn: GenerateTextFunction;\n\tprivate generateObjectFn: GenerateObjectFunction;\n\n\tconstructor(options: VercelAIATPClientOptions) {\n\t\tconst {\n\t\t\tmodel,\n\t\t\tembeddings,\n\t\t\ttools,\n\t\t\tapprovalHandler,\n\t\t\thooks,\n\t\t\tgenerateTextFn = generateText,\n\t\t\tgenerateObjectFn = generateObject,\n\t\t} = 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\t\tthis.generateTextFn = generateTextFn;\n\t\tthis.generateObjectFn = generateObjectFn;\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 this.generateTextFn({\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 this.generateObjectFn({\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 this.generateTextFn({\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/types.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { ExecutionConfig, ClientTool } from '@mondaydotcomorg/atp-protocol';
|
|
2
2
|
import type { ClientHooks } from '@mondaydotcomorg/atp-client';
|
|
3
3
|
import type { UIMessageStreamWriter } from './event-adapter.js';
|
|
4
|
+
import type { generateText, generateObject } from 'ai';
|
|
4
5
|
export interface ApprovalRequest {
|
|
5
6
|
message: string;
|
|
6
7
|
context?: Record<string, unknown>;
|
|
@@ -15,6 +16,38 @@ export type ApprovalHandler = (message: string, context?: Record<string, unknown
|
|
|
15
16
|
export interface EmbeddingProvider {
|
|
16
17
|
embed(text: string): Promise<number[]>;
|
|
17
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Options for generateText function - uses the full parameter type from Vercel AI SDK
|
|
21
|
+
* This allows consumers to pass any valid options that generateText accepts
|
|
22
|
+
*/
|
|
23
|
+
export type GenerateTextOptions = Parameters<typeof generateText>[0];
|
|
24
|
+
/**
|
|
25
|
+
* Result from generateText function - uses the full return type from Vercel AI SDK
|
|
26
|
+
* This ensures type compatibility with the actual generateText function
|
|
27
|
+
*/
|
|
28
|
+
export type GenerateTextResult = Awaited<ReturnType<typeof generateText>>;
|
|
29
|
+
/**
|
|
30
|
+
* Type signature for generateText function from Vercel AI SDK
|
|
31
|
+
* Consumers can provide their own implementation that matches this signature
|
|
32
|
+
* The function accepts the full options type and returns the full result type
|
|
33
|
+
*/
|
|
34
|
+
export type GenerateTextFunction = (options: GenerateTextOptions) => Promise<GenerateTextResult>;
|
|
35
|
+
/**
|
|
36
|
+
* Options for generateObject function - uses the full parameter type from Vercel AI SDK
|
|
37
|
+
* This allows consumers to pass any valid options that generateObject accepts
|
|
38
|
+
*/
|
|
39
|
+
export type GenerateObjectOptions = Parameters<typeof generateObject>[0];
|
|
40
|
+
/**
|
|
41
|
+
* Result from generateObject function - uses the full return type from Vercel AI SDK
|
|
42
|
+
* This ensures type compatibility with the actual generateObject function
|
|
43
|
+
*/
|
|
44
|
+
export type GenerateObjectResult = Awaited<ReturnType<typeof generateObject>>;
|
|
45
|
+
/**
|
|
46
|
+
* Type signature for generateObject function from Vercel AI SDK
|
|
47
|
+
* Consumers can provide their own implementation that matches this signature
|
|
48
|
+
* The function accepts the full options type and returns the full result type
|
|
49
|
+
*/
|
|
50
|
+
export type GenerateObjectFunction = (options: GenerateObjectOptions) => Promise<GenerateObjectResult>;
|
|
18
51
|
export interface InProcessServer {
|
|
19
52
|
start(): Promise<void>;
|
|
20
53
|
handleInit(ctx: unknown): Promise<unknown>;
|
|
@@ -32,6 +65,8 @@ interface BaseClientOptions {
|
|
|
32
65
|
tools?: ClientTool[];
|
|
33
66
|
approvalHandler?: ApprovalHandler;
|
|
34
67
|
hooks?: ClientHooks;
|
|
68
|
+
generateTextFn?: GenerateTextFunction;
|
|
69
|
+
generateObjectFn?: GenerateObjectFunction;
|
|
35
70
|
}
|
|
36
71
|
/** HTTP mode options */
|
|
37
72
|
interface HttpModeOptions extends BaseClientOptions {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,IAAI,CAAC;AAEvD,MAAM,WAAW,eAAe;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,eAAe,GAAG,CAC7B,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC7B,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,MAAM,WAAW,iBAAiB;IACjC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CACvC;AAED;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAErE;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC;AAE1E;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAClC,OAAO,EAAE,mBAAmB,KACxB,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAEjC;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAEzE;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC;AAE9E;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,CACpC,OAAO,EAAE,qBAAqB,KAC1B,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAEnC,MAAM,WAAW,eAAe;IAC/B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,cAAc,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,qBAAqB,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACtD,OAAO,IAAI,OAAO,CAAC;IACnB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAClE;AAED,UAAU,iBAAiB;IAC1B,KAAK,EAAE,GAAG,CAAC;IACX,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,cAAc,CAAC,EAAE,oBAAoB,CAAC;IACtC,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;CAC1C;AAED,wBAAwB;AACxB,UAAU,eAAgB,SAAQ,iBAAiB;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,KAAK,CAAC;CACf;AAED,8BAA8B;AAC9B,UAAU,oBAAqB,SAAQ,iBAAiB;IACvD,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,CAAC,EAAE,KAAK,CAAC;IAClB,OAAO,CAAC,EAAE,KAAK,CAAC;CAChB;AAED,MAAM,MAAM,wBAAwB,GAAG,eAAe,GAAG,oBAAoB,CAAC;AAE9E,MAAM,MAAM,qBAAqB,GAAG,CAAC,eAAe,GAAG,oBAAoB,CAAC,GAAG;IAC9E,sBAAsB,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;CAClD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,qBAAqB,GAAG;IAC3D;;;;OAIG;IACH,UAAU,EAAE,qBAAqB,CAAC;CAClC,CAAC;AAEF,MAAM,WAAW,cAAc;IAC9B,MAAM,EAAE,GAAG,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC3B"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mondaydotcomorg/atp-vercel-sdk",
|
|
3
|
-
"version": "0.21.
|
|
4
|
-
"description": "Vercel AI SDK integration for Agent Tool Protocol",
|
|
3
|
+
"version": "0.21.6",
|
|
4
|
+
"description": "Vercel AI SDK integration for Agent Tool Protocol.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
7
7
|
"module": "./dist/index.js",
|
|
@@ -44,8 +44,8 @@
|
|
|
44
44
|
],
|
|
45
45
|
"license": "MIT",
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@mondaydotcomorg/atp-client": "0.20.
|
|
48
|
-
"@mondaydotcomorg/atp-protocol": "0.19.
|
|
47
|
+
"@mondaydotcomorg/atp-client": "0.20.3",
|
|
48
|
+
"@mondaydotcomorg/atp-protocol": "0.19.22"
|
|
49
49
|
},
|
|
50
50
|
"peerDependencies": {
|
|
51
51
|
"ai": "^5.0.0",
|
package/src/client.ts
CHANGED
|
@@ -6,6 +6,8 @@ import type {
|
|
|
6
6
|
ApprovalResponse,
|
|
7
7
|
EmbeddingProvider,
|
|
8
8
|
ApprovalHandler,
|
|
9
|
+
GenerateTextFunction,
|
|
10
|
+
GenerateObjectFunction,
|
|
9
11
|
} from './types.js';
|
|
10
12
|
|
|
11
13
|
export class VercelAIATPClient {
|
|
@@ -13,9 +15,19 @@ export class VercelAIATPClient {
|
|
|
13
15
|
private model: any;
|
|
14
16
|
private embeddings?: EmbeddingProvider;
|
|
15
17
|
private approvalHandler?: ApprovalHandler;
|
|
18
|
+
private generateTextFn: GenerateTextFunction;
|
|
19
|
+
private generateObjectFn: GenerateObjectFunction;
|
|
16
20
|
|
|
17
21
|
constructor(options: VercelAIATPClientOptions) {
|
|
18
|
-
const {
|
|
22
|
+
const {
|
|
23
|
+
model,
|
|
24
|
+
embeddings,
|
|
25
|
+
tools,
|
|
26
|
+
approvalHandler,
|
|
27
|
+
hooks,
|
|
28
|
+
generateTextFn = generateText,
|
|
29
|
+
generateObjectFn = generateObject,
|
|
30
|
+
} = options;
|
|
19
31
|
|
|
20
32
|
if ('server' in options && options.server) {
|
|
21
33
|
this.client = new AgentToolProtocolClient({
|
|
@@ -37,6 +49,8 @@ export class VercelAIATPClient {
|
|
|
37
49
|
this.model = model;
|
|
38
50
|
this.embeddings = embeddings;
|
|
39
51
|
this.approvalHandler = approvalHandler;
|
|
52
|
+
this.generateTextFn = generateTextFn;
|
|
53
|
+
this.generateObjectFn = generateObjectFn;
|
|
40
54
|
|
|
41
55
|
this.client.provideLLM({
|
|
42
56
|
call: async (prompt: string, options?: any) => {
|
|
@@ -83,7 +97,7 @@ export class VercelAIATPClient {
|
|
|
83
97
|
}
|
|
84
98
|
|
|
85
99
|
private async handleLLMCall(prompt: string, options?: any): Promise<string> {
|
|
86
|
-
const result = await
|
|
100
|
+
const result = await this.generateTextFn({
|
|
87
101
|
model: this.model,
|
|
88
102
|
prompt,
|
|
89
103
|
temperature: options?.temperature,
|
|
@@ -95,7 +109,7 @@ export class VercelAIATPClient {
|
|
|
95
109
|
}
|
|
96
110
|
|
|
97
111
|
private async handleLLMExtract(prompt: string, schema: any, options?: any): Promise<any> {
|
|
98
|
-
const result = await
|
|
112
|
+
const result = await this.generateObjectFn({
|
|
99
113
|
model: this.model,
|
|
100
114
|
prompt,
|
|
101
115
|
schema,
|
|
@@ -114,7 +128,7 @@ export class VercelAIATPClient {
|
|
|
114
128
|
): Promise<string> {
|
|
115
129
|
const promptText = `Classify the following text into one of these categories: ${categories.join(', ')}\n\nText: ${text}\n\nRespond with ONLY the category name, nothing else.`;
|
|
116
130
|
|
|
117
|
-
const result = await
|
|
131
|
+
const result = await this.generateTextFn({
|
|
118
132
|
model: this.model,
|
|
119
133
|
prompt: promptText,
|
|
120
134
|
system: options?.systemPrompt,
|
package/src/index.ts
CHANGED
package/src/types.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { ExecutionConfig, ClientTool } from '@mondaydotcomorg/atp-protocol';
|
|
2
2
|
import type { ClientHooks } from '@mondaydotcomorg/atp-client';
|
|
3
3
|
import type { UIMessageStreamWriter } from './event-adapter.js';
|
|
4
|
+
import type { generateText, generateObject } from 'ai';
|
|
4
5
|
|
|
5
6
|
export interface ApprovalRequest {
|
|
6
7
|
message: string;
|
|
@@ -23,6 +24,48 @@ export interface EmbeddingProvider {
|
|
|
23
24
|
embed(text: string): Promise<number[]>;
|
|
24
25
|
}
|
|
25
26
|
|
|
27
|
+
/**
|
|
28
|
+
* Options for generateText function - uses the full parameter type from Vercel AI SDK
|
|
29
|
+
* This allows consumers to pass any valid options that generateText accepts
|
|
30
|
+
*/
|
|
31
|
+
export type GenerateTextOptions = Parameters<typeof generateText>[0];
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Result from generateText function - uses the full return type from Vercel AI SDK
|
|
35
|
+
* This ensures type compatibility with the actual generateText function
|
|
36
|
+
*/
|
|
37
|
+
export type GenerateTextResult = Awaited<ReturnType<typeof generateText>>;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Type signature for generateText function from Vercel AI SDK
|
|
41
|
+
* Consumers can provide their own implementation that matches this signature
|
|
42
|
+
* The function accepts the full options type and returns the full result type
|
|
43
|
+
*/
|
|
44
|
+
export type GenerateTextFunction = (
|
|
45
|
+
options: GenerateTextOptions
|
|
46
|
+
) => Promise<GenerateTextResult>;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Options for generateObject function - uses the full parameter type from Vercel AI SDK
|
|
50
|
+
* This allows consumers to pass any valid options that generateObject accepts
|
|
51
|
+
*/
|
|
52
|
+
export type GenerateObjectOptions = Parameters<typeof generateObject>[0];
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Result from generateObject function - uses the full return type from Vercel AI SDK
|
|
56
|
+
* This ensures type compatibility with the actual generateObject function
|
|
57
|
+
*/
|
|
58
|
+
export type GenerateObjectResult = Awaited<ReturnType<typeof generateObject>>;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Type signature for generateObject function from Vercel AI SDK
|
|
62
|
+
* Consumers can provide their own implementation that matches this signature
|
|
63
|
+
* The function accepts the full options type and returns the full result type
|
|
64
|
+
*/
|
|
65
|
+
export type GenerateObjectFunction = (
|
|
66
|
+
options: GenerateObjectOptions
|
|
67
|
+
) => Promise<GenerateObjectResult>;
|
|
68
|
+
|
|
26
69
|
export interface InProcessServer {
|
|
27
70
|
start(): Promise<void>;
|
|
28
71
|
handleInit(ctx: unknown): Promise<unknown>;
|
|
@@ -41,6 +84,8 @@ interface BaseClientOptions {
|
|
|
41
84
|
tools?: ClientTool[];
|
|
42
85
|
approvalHandler?: ApprovalHandler;
|
|
43
86
|
hooks?: ClientHooks;
|
|
87
|
+
generateTextFn?: GenerateTextFunction;
|
|
88
|
+
generateObjectFn?: GenerateObjectFunction;
|
|
44
89
|
}
|
|
45
90
|
|
|
46
91
|
/** HTTP mode options */
|