@mondaydotcomorg/atp-vercel-sdk 0.20.1 → 0.20.3
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.map +1 -1
- package/dist/client.js +19 -7
- package/dist/client.js.map +1 -1
- package/dist/event-adapter.d.ts +89 -0
- package/dist/event-adapter.d.ts.map +1 -0
- package/dist/event-adapter.js +201 -0
- package/dist/event-adapter.js.map +1 -0
- package/dist/index.cjs +473 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +466 -2
- package/dist/index.js.map +1 -1
- package/dist/tools.d.ts +28 -1
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +95 -0
- package/dist/tools.js.map +1 -1
- package/dist/types.d.ts +38 -9
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/client.ts +18 -7
- package/src/event-adapter.ts +275 -0
- package/src/index.ts +9 -1
- package/src/tools.ts +108 -1
- package/src/types.ts +42 -9
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,EAIxB,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;gBAE9B,OAAO,EAAE,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,EAIxB,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;gBAE9B,OAAO,EAAE,wBAAwB;IAmDvC,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
|
@@ -6,13 +6,25 @@ export class VercelAIATPClient {
|
|
|
6
6
|
embeddings;
|
|
7
7
|
approvalHandler;
|
|
8
8
|
constructor(options) {
|
|
9
|
-
const {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
9
|
+
const { model, embeddings, tools, approvalHandler, hooks } = options;
|
|
10
|
+
if ('server' in options && options.server) {
|
|
11
|
+
this.client = new AgentToolProtocolClient({
|
|
12
|
+
server: options.server,
|
|
13
|
+
hooks,
|
|
14
|
+
serviceProviders: tools ? { tools } : undefined,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
else if ('serverUrl' in options && options.serverUrl) {
|
|
18
|
+
this.client = new AgentToolProtocolClient({
|
|
19
|
+
baseUrl: options.serverUrl,
|
|
20
|
+
headers: options.headers,
|
|
21
|
+
hooks,
|
|
22
|
+
serviceProviders: tools ? { tools } : undefined,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
throw new Error('Either serverUrl or server must be provided');
|
|
27
|
+
}
|
|
16
28
|
this.model = model;
|
|
17
29
|
this.embeddings = embeddings;
|
|
18
30
|
this.approvalHandler = approvalHandler;
|
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;AAQlD,MAAM,OAAO,iBAAiB;IACrB,MAAM,CAA0B;IAChC,KAAK,CAAM;IACX,UAAU,CAAqB;IAC/B,eAAe,CAAmB;IAE1C,YAAY,OAAiC;QAC5C,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vercel AI SDK Event Adapter
|
|
3
|
+
*
|
|
4
|
+
* Converts ATP streaming events to Vercel AI SDK UIMessageStream format.
|
|
5
|
+
* Use this to forward ATP events to the chat UI.
|
|
6
|
+
*/
|
|
7
|
+
import { type ATPEvent } from '@mondaydotcomorg/atp-protocol';
|
|
8
|
+
/**
|
|
9
|
+
* UIMessageStreamWriter interface (subset of Vercel AI SDK's UIMessageStreamWriter)
|
|
10
|
+
*/
|
|
11
|
+
export interface UIMessageStreamWriter {
|
|
12
|
+
write(event: UIStreamEvent): void;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* UI Stream event types that Vercel AI SDK understands
|
|
16
|
+
*/
|
|
17
|
+
export type UIStreamEvent = {
|
|
18
|
+
type: 'text-start';
|
|
19
|
+
id: string;
|
|
20
|
+
} | {
|
|
21
|
+
type: 'text-delta';
|
|
22
|
+
id: string;
|
|
23
|
+
delta: string;
|
|
24
|
+
} | {
|
|
25
|
+
type: 'text-end';
|
|
26
|
+
id: string;
|
|
27
|
+
} | {
|
|
28
|
+
type: 'reasoning-start';
|
|
29
|
+
id: string;
|
|
30
|
+
} | {
|
|
31
|
+
type: 'reasoning-delta';
|
|
32
|
+
id: string;
|
|
33
|
+
delta: string;
|
|
34
|
+
} | {
|
|
35
|
+
type: 'reasoning-end';
|
|
36
|
+
id: string;
|
|
37
|
+
} | {
|
|
38
|
+
type: 'source-url';
|
|
39
|
+
url: string;
|
|
40
|
+
title: string;
|
|
41
|
+
sourceId: string;
|
|
42
|
+
providerMetadata?: unknown;
|
|
43
|
+
} | {
|
|
44
|
+
type: string;
|
|
45
|
+
data?: unknown;
|
|
46
|
+
transient?: boolean;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Options for creating the Vercel event handler
|
|
50
|
+
*/
|
|
51
|
+
export interface CreateVercelEventHandlerOptions {
|
|
52
|
+
/**
|
|
53
|
+
* Prefix for generated text run IDs
|
|
54
|
+
* @default 'atp-text'
|
|
55
|
+
*/
|
|
56
|
+
textRunIdPrefix?: string;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Creates an event handler that forwards ATP events to a Vercel AI SDK UIMessageStreamWriter.
|
|
60
|
+
*
|
|
61
|
+
* Handles nested tool calls properly:
|
|
62
|
+
* - First tool_start triggers agentStepStart
|
|
63
|
+
* - Inner tool_start/end emit agentStep updates (not start/end)
|
|
64
|
+
* - Last tool_end triggers agentStepEnd
|
|
65
|
+
*
|
|
66
|
+
* @param dataStream - The Vercel AI SDK UIMessageStreamWriter to write events to
|
|
67
|
+
* @param options - Optional configuration
|
|
68
|
+
* @returns An event handler function to pass to ATP's executeStream
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```typescript
|
|
72
|
+
* const handler = createVercelEventHandler(dataStream);
|
|
73
|
+
*
|
|
74
|
+
* const result = await client.executeStream(code, {}, handler);
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
export declare function createVercelEventHandler(dataStream: UIMessageStreamWriter, options?: CreateVercelEventHandlerOptions): (event: ATPEvent) => void;
|
|
78
|
+
/**
|
|
79
|
+
* Creates an event handler that collects events into an array.
|
|
80
|
+
* Useful for testing or post-processing events.
|
|
81
|
+
*
|
|
82
|
+
* @returns Object with handler function and collected events array
|
|
83
|
+
*/
|
|
84
|
+
export declare function createEventCollector(): {
|
|
85
|
+
handler: (event: ATPEvent) => void;
|
|
86
|
+
events: ATPEvent[];
|
|
87
|
+
clear: () => void;
|
|
88
|
+
};
|
|
89
|
+
//# sourceMappingURL=event-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-adapter.d.ts","sourceRoot":"","sources":["../src/event-adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,QAAQ,EAAgB,MAAM,+BAA+B,CAAC;AAE5E;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACrC,KAAK,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GACtB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAE,GAChG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC/C;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,wBAAwB,CACvC,UAAU,EAAE,qBAAqB,EACjC,OAAO,GAAE,+BAAoC,GAC3C,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CA2L3B;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI;IACvC,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;IACnC,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,IAAI,CAAC;CAClB,CAYA"}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vercel AI SDK Event Adapter
|
|
3
|
+
*
|
|
4
|
+
* Converts ATP streaming events to Vercel AI SDK UIMessageStream format.
|
|
5
|
+
* Use this to forward ATP events to the chat UI.
|
|
6
|
+
*/
|
|
7
|
+
import { ATPEventType } from '@mondaydotcomorg/atp-protocol';
|
|
8
|
+
/**
|
|
9
|
+
* Creates an event handler that forwards ATP events to a Vercel AI SDK UIMessageStreamWriter.
|
|
10
|
+
*
|
|
11
|
+
* Handles nested tool calls properly:
|
|
12
|
+
* - First tool_start triggers agentStepStart
|
|
13
|
+
* - Inner tool_start/end emit agentStep updates (not start/end)
|
|
14
|
+
* - Last tool_end triggers agentStepEnd
|
|
15
|
+
*
|
|
16
|
+
* @param dataStream - The Vercel AI SDK UIMessageStreamWriter to write events to
|
|
17
|
+
* @param options - Optional configuration
|
|
18
|
+
* @returns An event handler function to pass to ATP's executeStream
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* const handler = createVercelEventHandler(dataStream);
|
|
23
|
+
*
|
|
24
|
+
* const result = await client.executeStream(code, {}, handler);
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export function createVercelEventHandler(dataStream, options = {}) {
|
|
28
|
+
const { textRunIdPrefix = 'atp-text' } = options;
|
|
29
|
+
let currentTextRunId;
|
|
30
|
+
let textRunCounter = 0;
|
|
31
|
+
// Track reasoning state for proper start/delta/end events
|
|
32
|
+
let reasoningRunId;
|
|
33
|
+
let reasoningCounter = 0;
|
|
34
|
+
// Track nested tool calls with a stack
|
|
35
|
+
const toolStack = [];
|
|
36
|
+
return (event) => {
|
|
37
|
+
switch (event.type) {
|
|
38
|
+
case ATPEventType.THINKING: {
|
|
39
|
+
const data = event.data;
|
|
40
|
+
// Start new reasoning block if needed
|
|
41
|
+
if (!reasoningRunId) {
|
|
42
|
+
reasoningRunId = `atp-reasoning-${++reasoningCounter}`;
|
|
43
|
+
dataStream.write({
|
|
44
|
+
type: 'reasoning-start',
|
|
45
|
+
id: reasoningRunId,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
// Write reasoning delta
|
|
49
|
+
dataStream.write({
|
|
50
|
+
type: 'reasoning-delta',
|
|
51
|
+
id: reasoningRunId,
|
|
52
|
+
delta: data.content + '\n',
|
|
53
|
+
});
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
case ATPEventType.TOOL_START: {
|
|
57
|
+
const data = event.data;
|
|
58
|
+
const isFirstTool = toolStack.length === 0;
|
|
59
|
+
toolStack.push({ toolName: data.toolName, apiGroup: data.apiGroup });
|
|
60
|
+
if (isFirstTool) {
|
|
61
|
+
// First tool - emit agentStepStart
|
|
62
|
+
dataStream.write({
|
|
63
|
+
type: 'data-agentStepStart',
|
|
64
|
+
data: `Executing ${data.apiGroup}.${data.toolName}...`,
|
|
65
|
+
transient: true,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
// Nested tool - emit progress update instead
|
|
70
|
+
dataStream.write({
|
|
71
|
+
type: 'data-agentStep',
|
|
72
|
+
data: `→ ${data.apiGroup}.${data.toolName}`,
|
|
73
|
+
transient: true,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
case ATPEventType.TOOL_END: {
|
|
79
|
+
const data = event.data;
|
|
80
|
+
toolStack.pop();
|
|
81
|
+
const isLastTool = toolStack.length === 0;
|
|
82
|
+
// Close reasoning block when outer tool ends
|
|
83
|
+
if (isLastTool && reasoningRunId) {
|
|
84
|
+
dataStream.write({
|
|
85
|
+
type: 'reasoning-end',
|
|
86
|
+
id: reasoningRunId,
|
|
87
|
+
});
|
|
88
|
+
reasoningRunId = undefined;
|
|
89
|
+
}
|
|
90
|
+
if (isLastTool) {
|
|
91
|
+
// Last tool - emit agentStepEnd
|
|
92
|
+
dataStream.write({
|
|
93
|
+
type: 'data-agentStepEnd',
|
|
94
|
+
data: data.success
|
|
95
|
+
? `Completed ${data.apiGroup}.${data.toolName} (${data.duration}ms)`
|
|
96
|
+
: `Failed ${data.apiGroup}.${data.toolName}: ${data.error}`,
|
|
97
|
+
transient: true,
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
// Nested tool finished - emit progress update
|
|
102
|
+
dataStream.write({
|
|
103
|
+
type: 'data-agentStep',
|
|
104
|
+
data: data.success
|
|
105
|
+
? `✓ ${data.apiGroup}.${data.toolName} (${data.duration}ms)`
|
|
106
|
+
: `✗ ${data.apiGroup}.${data.toolName}: ${data.error}`,
|
|
107
|
+
transient: true,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
break;
|
|
111
|
+
}
|
|
112
|
+
case ATPEventType.TEXT: {
|
|
113
|
+
const data = event.data;
|
|
114
|
+
const runId = event.runId || `${textRunIdPrefix}-${++textRunCounter}`;
|
|
115
|
+
// If we're starting a new text run, close the previous one
|
|
116
|
+
if (currentTextRunId && currentTextRunId !== runId) {
|
|
117
|
+
dataStream.write({ type: 'text-end', id: currentTextRunId });
|
|
118
|
+
currentTextRunId = undefined;
|
|
119
|
+
}
|
|
120
|
+
// Start new text run if needed
|
|
121
|
+
if (!currentTextRunId || currentTextRunId !== runId) {
|
|
122
|
+
currentTextRunId = runId;
|
|
123
|
+
dataStream.write({ type: 'text-start', id: currentTextRunId });
|
|
124
|
+
}
|
|
125
|
+
// Write text delta
|
|
126
|
+
dataStream.write({
|
|
127
|
+
type: 'text-delta',
|
|
128
|
+
id: currentTextRunId,
|
|
129
|
+
delta: data.text,
|
|
130
|
+
});
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
case ATPEventType.TEXT_END:
|
|
134
|
+
if (currentTextRunId) {
|
|
135
|
+
dataStream.write({ type: 'text-end', id: currentTextRunId });
|
|
136
|
+
currentTextRunId = undefined;
|
|
137
|
+
}
|
|
138
|
+
break;
|
|
139
|
+
case ATPEventType.SOURCE: {
|
|
140
|
+
const data = event.data;
|
|
141
|
+
dataStream.write({
|
|
142
|
+
type: 'source-url',
|
|
143
|
+
url: data.url,
|
|
144
|
+
title: data.title,
|
|
145
|
+
sourceId: `${data.title}-${event.timestamp}`,
|
|
146
|
+
providerMetadata: {
|
|
147
|
+
aiChat: {
|
|
148
|
+
summary: data.summary,
|
|
149
|
+
createdAt: data.createdAt,
|
|
150
|
+
},
|
|
151
|
+
},
|
|
152
|
+
});
|
|
153
|
+
break;
|
|
154
|
+
}
|
|
155
|
+
case ATPEventType.PROGRESS: {
|
|
156
|
+
const data = event.data;
|
|
157
|
+
dataStream.write({
|
|
158
|
+
type: 'data-agentStep',
|
|
159
|
+
data: `${data.message} (${Math.round(data.fraction * 100)}%)`,
|
|
160
|
+
transient: true,
|
|
161
|
+
});
|
|
162
|
+
break;
|
|
163
|
+
}
|
|
164
|
+
case ATPEventType.ERROR: {
|
|
165
|
+
const data = event.data;
|
|
166
|
+
dataStream.write({
|
|
167
|
+
type: 'data-error',
|
|
168
|
+
data: data.message,
|
|
169
|
+
});
|
|
170
|
+
break;
|
|
171
|
+
}
|
|
172
|
+
default:
|
|
173
|
+
// Forward unknown events as custom data events
|
|
174
|
+
dataStream.write({
|
|
175
|
+
type: `data-${event.type}`,
|
|
176
|
+
data: event.data,
|
|
177
|
+
transient: true,
|
|
178
|
+
});
|
|
179
|
+
break;
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Creates an event handler that collects events into an array.
|
|
185
|
+
* Useful for testing or post-processing events.
|
|
186
|
+
*
|
|
187
|
+
* @returns Object with handler function and collected events array
|
|
188
|
+
*/
|
|
189
|
+
export function createEventCollector() {
|
|
190
|
+
const events = [];
|
|
191
|
+
return {
|
|
192
|
+
handler: (event) => {
|
|
193
|
+
events.push(event);
|
|
194
|
+
},
|
|
195
|
+
events,
|
|
196
|
+
clear: () => {
|
|
197
|
+
events.length = 0;
|
|
198
|
+
},
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
//# sourceMappingURL=event-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-adapter.js","sourceRoot":"","sources":["../src/event-adapter.ts"],"names":[],"mappings":"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"}
|