experimental-a2 0.12.0 → 0.14.0
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/CHANGELOG.md +47 -0
- package/dist/{actor-DJi3RsNu.d.ts → actor-BfQSE0KC.d.ts} +4 -4
- package/dist/{actor-DJi3RsNu.d.ts.map → actor-BfQSE0KC.d.ts.map} +1 -1
- package/dist/actor-client.d.ts +1 -1
- package/dist/actor-client.js +1 -1
- package/dist/actor-react.d.ts +3 -3
- package/dist/actor-react.js +2 -2
- package/dist/{actor-shared-DI7J5upy.js → actor-shared-B5tJfzt-.js} +2 -2
- package/dist/{actor-shared-DI7J5upy.js.map → actor-shared-B5tJfzt-.js.map} +1 -1
- package/dist/actor.d.ts +1 -1
- package/dist/actor.js +3 -3
- package/dist/ai-Cai-lCbj.d.ts +580 -0
- package/dist/ai-Cai-lCbj.d.ts.map +1 -0
- package/dist/ai-control-CcD4hh3y.js +119 -0
- package/dist/ai-control-CcD4hh3y.js.map +1 -0
- package/dist/ai-server.d.ts +16 -8
- package/dist/ai-server.d.ts.map +1 -1
- package/dist/ai-server.js +1322 -475
- package/dist/ai-server.js.map +1 -1
- package/dist/ai.d.ts +2 -334
- package/dist/ai.js +838 -85
- package/dist/ai.js.map +1 -1
- package/dist/{client-P_NNNRM-.d.ts → client-BAEABRZB.d.ts} +2 -2
- package/dist/{client-P_NNNRM-.d.ts.map → client-BAEABRZB.d.ts.map} +1 -1
- package/dist/{client-Bf6uSEAk.js → client-BYzHjkwU.js} +21 -6
- package/dist/client-BYzHjkwU.js.map +1 -0
- package/dist/client.d.ts +1 -1
- package/dist/client.js +1 -1
- package/dist/{contract-48bUMgcL.js → contract-CKRg_E4q.js} +3 -26
- package/dist/contract-CKRg_E4q.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/react.d.ts +2 -2
- package/dist/react.js +1 -1
- package/dist/{reducer-DJKWm3cp.d.ts → reducer-BcS9VDKC.d.ts} +4 -1
- package/dist/{reducer-DJKWm3cp.d.ts.map → reducer-BcS9VDKC.d.ts.map} +1 -1
- package/dist/reducer-DEMjEY_O.js +29 -0
- package/dist/reducer-DEMjEY_O.js.map +1 -0
- package/dist/scheduler-qstash.d.ts +2 -2
- package/dist/scheduler-qstash.js +1 -1
- package/dist/scheduler-vercel.d.ts +2 -2
- package/dist/scheduler-vercel.js +1 -1
- package/dist/{server-DjZZa1wr.d.ts → server-Bp5Nd1pF.d.ts} +3 -3
- package/dist/{server-DjZZa1wr.d.ts.map → server-Bp5Nd1pF.d.ts.map} +1 -1
- package/dist/{server-BeNADlCI.js → server-CjJSGcF7.js} +4 -3
- package/dist/server-CjJSGcF7.js.map +1 -0
- package/dist/server.d.ts +3 -3
- package/dist/server.js +1 -1
- package/dist/{store-DtDOWLSn.d.ts → store-D_yhNdPz.d.ts} +7 -2
- package/dist/{store-DtDOWLSn.d.ts.map → store-D_yhNdPz.d.ts.map} +1 -1
- package/dist/store-N8PXxDAS.js.map +1 -1
- package/dist/store-memory.d.ts +1 -1
- package/dist/store-postgres.d.ts +1 -1
- package/dist/store-postgres.js +19 -0
- package/dist/store-postgres.js.map +1 -1
- package/dist/store-redis-http.d.ts +1 -1
- package/dist/store-redis-http.js +1 -1
- package/dist/{store-redis-notify-BUCyXOn0.js → store-redis-notify-D2EI6gwX.js} +27 -2
- package/dist/store-redis-notify-D2EI6gwX.js.map +1 -0
- package/dist/store-redis.d.ts +1 -1
- package/dist/store-redis.js +1 -1
- package/dist/store-sqlite.d.ts +1 -1
- package/docs/guides/06-ai-agents.mdx +361 -76
- package/docs/reference/01-api.mdx +159 -27
- package/examples/playground/app/agent/[agentId]/agent-client.tsx +145 -33
- package/examples/playground/app/agent/[agentId]/agent-queue.tsx +289 -0
- package/examples/playground/app/agent/[agentId]/compaction/route.ts +14 -0
- package/examples/playground/app/agent/[agentId]/compaction-event.tsx +38 -0
- package/examples/playground/app/agent/[agentId]/compaction-panel.tsx +294 -0
- package/examples/playground/app/agent/compaction-settings.test.ts +144 -0
- package/examples/playground/app/agent/compaction-settings.ts +49 -0
- package/examples/playground/app/agent/compaction-timeline.test.ts +337 -0
- package/examples/playground/app/agent/compaction-timeline.ts +198 -0
- package/examples/playground/app/agent/model.ts +56 -1
- package/examples/playground/app/agent/server.ts +9 -2
- package/examples/playground/app/chat/[chatId]/chat-client.tsx +3 -13
- package/examples/playground/app/chat/model.ts +2 -2
- package/examples/playground/app/chat/server.ts +24 -17
- package/examples/playground/app/globals.css +333 -0
- package/examples/playground/package.json +1 -1
- package/package.json +1 -1
- package/src/ai-client-state.ts +185 -0
- package/src/ai-control-server.ts +829 -0
- package/src/ai-control-state.ts +152 -0
- package/src/ai-control.ts +139 -0
- package/src/ai-coordinator.ts +99 -32
- package/src/ai-model-metadata.ts +108 -0
- package/src/ai-progress-batches.ts +68 -0
- package/src/ai-projector.ts +76 -15
- package/src/ai-sdk-step.ts +5 -2
- package/src/ai-server.ts +920 -638
- package/src/ai.ts +650 -110
- package/src/client.ts +31 -9
- package/src/licenses/Apache-2.0.txt +55 -0
- package/src/parse-partial-json.ts +441 -0
- package/src/reducer.ts +6 -0
- package/src/server.ts +8 -4
- package/src/store-postgres.ts +27 -0
- package/src/store-redis-core.ts +53 -1
- package/src/store-redis-notify.ts +1 -0
- package/src/store.ts +6 -0
- package/dist/ai.d.ts.map +0 -1
- package/dist/client-Bf6uSEAk.js.map +0 -1
- package/dist/contract-48bUMgcL.js.map +0 -1
- package/dist/server-BeNADlCI.js.map +0 -1
- package/dist/store-redis-notify-BUCyXOn0.js.map +0 -1
|
@@ -0,0 +1,580 @@
|
|
|
1
|
+
import { h as StandardSchemaV1, i as Contract, s as EventDefs, t as Reducer } from "./reducer-BcS9VDKC.js";
|
|
2
|
+
import { s as HandlerContext } from "./server-Bp5Nd1pF.js";
|
|
3
|
+
import { FinishReason, JSONValue, LanguageModelUsage, UIMessage, UIMessage as UIMessage$1, UIMessageChunk, UIMessageChunk as UIMessageChunk$1 } from "ai";
|
|
4
|
+
//#region src/ai-control.d.ts
|
|
5
|
+
type InboxItem<M extends UIMessage = UIMessage> = {
|
|
6
|
+
id: string;
|
|
7
|
+
revision: number;
|
|
8
|
+
message: M;
|
|
9
|
+
generate: boolean;
|
|
10
|
+
afterStepOf?: string;
|
|
11
|
+
};
|
|
12
|
+
type ControlCommand<M extends UIMessage = UIMessage> = {
|
|
13
|
+
action: "send";
|
|
14
|
+
message: M;
|
|
15
|
+
generate?: boolean;
|
|
16
|
+
} | {
|
|
17
|
+
action: "edit";
|
|
18
|
+
message: M;
|
|
19
|
+
expectedRevision: number;
|
|
20
|
+
} | {
|
|
21
|
+
action: "move";
|
|
22
|
+
inputId: string;
|
|
23
|
+
beforeId: string | null;
|
|
24
|
+
} | {
|
|
25
|
+
action: "remove";
|
|
26
|
+
inputId: string;
|
|
27
|
+
} | {
|
|
28
|
+
action: "send-now";
|
|
29
|
+
inputId: string;
|
|
30
|
+
turnId: string | null;
|
|
31
|
+
lastSeenIndex?: number;
|
|
32
|
+
} | {
|
|
33
|
+
action: "stop";
|
|
34
|
+
turnId: string;
|
|
35
|
+
lastSeenIndex?: number;
|
|
36
|
+
} | {
|
|
37
|
+
action: "steer";
|
|
38
|
+
turnId: string;
|
|
39
|
+
message: M;
|
|
40
|
+
lastSeenIndex?: number;
|
|
41
|
+
} | {
|
|
42
|
+
action: "pause";
|
|
43
|
+
when: "now" | "after-turn";
|
|
44
|
+
} | {
|
|
45
|
+
action: "resume";
|
|
46
|
+
} | {
|
|
47
|
+
action: "tool-result";
|
|
48
|
+
result: ToolResultPayload;
|
|
49
|
+
} | {
|
|
50
|
+
action: "approval";
|
|
51
|
+
response: ApprovalRespondedPayload;
|
|
52
|
+
} | {
|
|
53
|
+
action: "input";
|
|
54
|
+
response: InputRespondedPayload;
|
|
55
|
+
} | {
|
|
56
|
+
action: "request-input";
|
|
57
|
+
request: InputRequestedPayload;
|
|
58
|
+
} | {
|
|
59
|
+
action: "retry";
|
|
60
|
+
request: RetryRequestedPayload;
|
|
61
|
+
} | {
|
|
62
|
+
action: "interrupt";
|
|
63
|
+
request: MessageInterruptedPayload;
|
|
64
|
+
};
|
|
65
|
+
type ControlReceipt = {
|
|
66
|
+
commandId: string;
|
|
67
|
+
work?: true;
|
|
68
|
+
outcome: "applied" | "rejected";
|
|
69
|
+
reason?: "already-active" | "revision-conflict" | "stale-turn" | "not-found" | "duplicate-input" | "closed" | "stale-work" | "not-user-input";
|
|
70
|
+
};
|
|
71
|
+
type ActiveTurn<M extends UIMessage = UIMessage> = {
|
|
72
|
+
turnId: string;
|
|
73
|
+
input: InboxItem<M>;
|
|
74
|
+
phase: "starting" | "generating" | "tools" | "waiting" | "failed" | "pausing" | "paused";
|
|
75
|
+
};
|
|
76
|
+
type WorkFact = {
|
|
77
|
+
type: string;
|
|
78
|
+
id: string;
|
|
79
|
+
payload: unknown;
|
|
80
|
+
};
|
|
81
|
+
type WorkReport = {
|
|
82
|
+
attempt: number;
|
|
83
|
+
workId: string;
|
|
84
|
+
turnId: string;
|
|
85
|
+
version: number;
|
|
86
|
+
kind: "model" | "tool";
|
|
87
|
+
settled: boolean;
|
|
88
|
+
events: WorkFact[];
|
|
89
|
+
};
|
|
90
|
+
type ToolExecutionRequest = {
|
|
91
|
+
turnId: string;
|
|
92
|
+
version: number;
|
|
93
|
+
call: ToolCalledPayload;
|
|
94
|
+
generation: GenerationStartedPayload;
|
|
95
|
+
};
|
|
96
|
+
type ControlChange = {
|
|
97
|
+
path: (string | number)[];
|
|
98
|
+
value?: unknown;
|
|
99
|
+
remove?: true;
|
|
100
|
+
splice?: {
|
|
101
|
+
index: number;
|
|
102
|
+
deleteCount: number;
|
|
103
|
+
items: unknown[];
|
|
104
|
+
};
|
|
105
|
+
move?: {
|
|
106
|
+
from: number;
|
|
107
|
+
to: number;
|
|
108
|
+
};
|
|
109
|
+
};
|
|
110
|
+
type ControlCommit = {
|
|
111
|
+
changes: ControlChange[];
|
|
112
|
+
view: {
|
|
113
|
+
turnId: string | null;
|
|
114
|
+
version: number | null;
|
|
115
|
+
phase: ActiveTurn["phase"] | null;
|
|
116
|
+
paused: boolean;
|
|
117
|
+
closed: boolean;
|
|
118
|
+
requestId: string | null;
|
|
119
|
+
responseMessageId: string | null;
|
|
120
|
+
};
|
|
121
|
+
};
|
|
122
|
+
//#endregion
|
|
123
|
+
//#region src/ai-client-state.d.ts
|
|
124
|
+
type QueueCommand<M extends UIMessage> = Extract<ControlCommand<M>, {
|
|
125
|
+
action: "send" | "edit" | "move" | "remove" | "send-now" | "steer" | "pause" | "resume";
|
|
126
|
+
}>;
|
|
127
|
+
type PendingQueueCommand<M extends UIMessage> = {
|
|
128
|
+
commandId: string;
|
|
129
|
+
command: QueueCommand<M>;
|
|
130
|
+
};
|
|
131
|
+
//#endregion
|
|
132
|
+
//#region src/ai-projector.d.ts
|
|
133
|
+
type PartialToolCall = {
|
|
134
|
+
text: string;
|
|
135
|
+
toolName: string;
|
|
136
|
+
dynamic: boolean;
|
|
137
|
+
providerExecuted?: boolean;
|
|
138
|
+
providerMetadata?: unknown;
|
|
139
|
+
toolMetadata?: unknown;
|
|
140
|
+
title?: string;
|
|
141
|
+
};
|
|
142
|
+
type UIMessageCursor = {
|
|
143
|
+
text: Record<string, number>;
|
|
144
|
+
reasoning: Record<string, number>;
|
|
145
|
+
tools: Record<string, PartialToolCall>;
|
|
146
|
+
};
|
|
147
|
+
//#endregion
|
|
148
|
+
//#region src/ai-progress-batches.d.ts
|
|
149
|
+
type ProgressBatch = {
|
|
150
|
+
index: number;
|
|
151
|
+
chunks: UIMessageChunk[];
|
|
152
|
+
};
|
|
153
|
+
type BatchBlock = ProgressBatch[] | {
|
|
154
|
+
left: BatchBlock;
|
|
155
|
+
right: BatchBlock;
|
|
156
|
+
};
|
|
157
|
+
type ProgressBatches = {
|
|
158
|
+
length: number;
|
|
159
|
+
tail: ProgressBatch[];
|
|
160
|
+
blocks: Array<BatchBlock | null>;
|
|
161
|
+
};
|
|
162
|
+
//#endregion
|
|
163
|
+
//#region src/ai.d.ts
|
|
164
|
+
type AgentStatus = "idle" | "generating" | "waiting" | "failed" | "closed" | "paused";
|
|
165
|
+
type GenerationReason = "message" | "tool" | "input" | "retry" | "resume";
|
|
166
|
+
type SessionCreatedPayload = {
|
|
167
|
+
metadata?: JSONValue;
|
|
168
|
+
};
|
|
169
|
+
type SessionClosedPayload = {
|
|
170
|
+
reason?: string;
|
|
171
|
+
};
|
|
172
|
+
type MessageCreatedPayload<M extends UIMessage$1> = {
|
|
173
|
+
message: M;
|
|
174
|
+
/** For user messages, false records passive context. Omission or true schedules. */
|
|
175
|
+
generate?: boolean;
|
|
176
|
+
};
|
|
177
|
+
type MessageCompletedPayload = {
|
|
178
|
+
messageId: string;
|
|
179
|
+
};
|
|
180
|
+
type MessageInterruption = {
|
|
181
|
+
messageId: string;
|
|
182
|
+
reason?: string;
|
|
183
|
+
/** Last confirmed event-log index visible to the interrupter. */
|
|
184
|
+
lastSeenIndex?: number;
|
|
185
|
+
};
|
|
186
|
+
type MessageInterruptedPayload = MessageInterruption & ({
|
|
187
|
+
generationId: string;
|
|
188
|
+
requestId?: never;
|
|
189
|
+
} | {
|
|
190
|
+
requestId: string;
|
|
191
|
+
generationId?: never;
|
|
192
|
+
});
|
|
193
|
+
type GenerationRequestedPayload = {
|
|
194
|
+
control?: {
|
|
195
|
+
turnId: string;
|
|
196
|
+
version: number;
|
|
197
|
+
};
|
|
198
|
+
messageId: string;
|
|
199
|
+
reason: GenerationReason;
|
|
200
|
+
responseMessageId?: string;
|
|
201
|
+
};
|
|
202
|
+
type RetryGenerationOptions = {
|
|
203
|
+
messageId: string;
|
|
204
|
+
responseMessageId: string;
|
|
205
|
+
retryId: string;
|
|
206
|
+
};
|
|
207
|
+
type RetryRequestedPayload = RetryGenerationOptions;
|
|
208
|
+
type GenerationStartedPayload = {
|
|
209
|
+
requestId: string;
|
|
210
|
+
messageId: string;
|
|
211
|
+
generationId: string;
|
|
212
|
+
responseMessageId: string;
|
|
213
|
+
attempt: number;
|
|
214
|
+
model: string;
|
|
215
|
+
promptThroughIndex?: number;
|
|
216
|
+
};
|
|
217
|
+
type GenerationProgressPayload = {
|
|
218
|
+
requestId: string;
|
|
219
|
+
messageId: string;
|
|
220
|
+
generationId: string;
|
|
221
|
+
responseMessageId: string;
|
|
222
|
+
sequence: number;
|
|
223
|
+
chunks: UIMessageChunk$1[];
|
|
224
|
+
};
|
|
225
|
+
type GenerationCompletedPayload = {
|
|
226
|
+
requestId: string;
|
|
227
|
+
messageId: string;
|
|
228
|
+
generationId: string;
|
|
229
|
+
responseMessageId: string;
|
|
230
|
+
finishReason?: FinishReason;
|
|
231
|
+
usage?: LanguageModelUsage;
|
|
232
|
+
inputTokenEstimate?: number;
|
|
233
|
+
};
|
|
234
|
+
type GenerationFailedPayload = {
|
|
235
|
+
requestId: string;
|
|
236
|
+
messageId: string;
|
|
237
|
+
generationId: string;
|
|
238
|
+
responseMessageId: string;
|
|
239
|
+
error: string;
|
|
240
|
+
/** True when a later attempt replaced an incomplete attempt. */
|
|
241
|
+
superseded?: boolean;
|
|
242
|
+
stepLimit?: boolean;
|
|
243
|
+
};
|
|
244
|
+
type ToolCalledPayload = {
|
|
245
|
+
requestId: string;
|
|
246
|
+
messageId: string;
|
|
247
|
+
generationId: string;
|
|
248
|
+
toolCallId: string;
|
|
249
|
+
toolName: string;
|
|
250
|
+
input: unknown;
|
|
251
|
+
dynamic?: boolean;
|
|
252
|
+
providerExecuted?: boolean;
|
|
253
|
+
supportsDeferredResults?: boolean;
|
|
254
|
+
providerMetadata?: unknown;
|
|
255
|
+
toolMetadata?: unknown;
|
|
256
|
+
title?: string;
|
|
257
|
+
};
|
|
258
|
+
type ToolResultPayload = {
|
|
259
|
+
requestId: string;
|
|
260
|
+
messageId: string;
|
|
261
|
+
generationId: string;
|
|
262
|
+
toolCallId: string;
|
|
263
|
+
toolName?: string;
|
|
264
|
+
input?: unknown;
|
|
265
|
+
rawInput?: unknown;
|
|
266
|
+
output?: unknown;
|
|
267
|
+
error?: string;
|
|
268
|
+
denied?: boolean;
|
|
269
|
+
preliminary?: boolean;
|
|
270
|
+
phase?: "input" | "execution";
|
|
271
|
+
dynamic?: boolean;
|
|
272
|
+
providerExecuted?: boolean;
|
|
273
|
+
providerMetadata?: unknown;
|
|
274
|
+
toolMetadata?: unknown;
|
|
275
|
+
};
|
|
276
|
+
type ApprovalRequestedPayload = {
|
|
277
|
+
messageId: string;
|
|
278
|
+
generationId: string;
|
|
279
|
+
approvalId: string;
|
|
280
|
+
toolCallId: string;
|
|
281
|
+
isAutomatic?: boolean;
|
|
282
|
+
signature?: string;
|
|
283
|
+
};
|
|
284
|
+
type ApprovalRespondedPayload = {
|
|
285
|
+
messageId: string;
|
|
286
|
+
generationId: string;
|
|
287
|
+
approvalId: string;
|
|
288
|
+
approved: boolean;
|
|
289
|
+
reason?: string;
|
|
290
|
+
};
|
|
291
|
+
type InputRequestedPayload = {
|
|
292
|
+
messageId: string;
|
|
293
|
+
generationId: string;
|
|
294
|
+
inputId: string;
|
|
295
|
+
name: string;
|
|
296
|
+
question?: JSONValue;
|
|
297
|
+
};
|
|
298
|
+
type InputRespondedPayload = {
|
|
299
|
+
messageId: string;
|
|
300
|
+
generationId: string;
|
|
301
|
+
inputId: string;
|
|
302
|
+
name: string;
|
|
303
|
+
value: JSONValue;
|
|
304
|
+
};
|
|
305
|
+
type ModelLimits = {
|
|
306
|
+
contextWindow: number;
|
|
307
|
+
maxOutputTokens: number;
|
|
308
|
+
};
|
|
309
|
+
type ModelMetadataRequestedPayload = {
|
|
310
|
+
modelId: string;
|
|
311
|
+
};
|
|
312
|
+
type ModelMetadataResolvedPayload = {
|
|
313
|
+
modelId: string;
|
|
314
|
+
limits: ModelLimits | null;
|
|
315
|
+
};
|
|
316
|
+
type ModelMetadataState = {
|
|
317
|
+
status: "pending";
|
|
318
|
+
} | {
|
|
319
|
+
status: "resolved";
|
|
320
|
+
limits: ModelLimits;
|
|
321
|
+
} | {
|
|
322
|
+
status: "unavailable";
|
|
323
|
+
};
|
|
324
|
+
type CompactionRequestedPayload = {
|
|
325
|
+
generationId: string;
|
|
326
|
+
throughMessageId: string;
|
|
327
|
+
throughIndex?: number;
|
|
328
|
+
};
|
|
329
|
+
type CompactionCompletedPayload<M extends UIMessage$1> = {
|
|
330
|
+
generationId: string;
|
|
331
|
+
throughMessageId: string;
|
|
332
|
+
throughIndex?: number;
|
|
333
|
+
messages: M[];
|
|
334
|
+
retainedMessageIds?: string[];
|
|
335
|
+
summary?: string;
|
|
336
|
+
usage?: LanguageModelUsage;
|
|
337
|
+
};
|
|
338
|
+
type AIEventDefs<M extends UIMessage$1 = UIMessage$1> = {
|
|
339
|
+
"ai.control.requested": StandardSchemaV1<ControlCommand<M>>;
|
|
340
|
+
"ai.control.committed": StandardSchemaV1<ControlCommit>;
|
|
341
|
+
"ai.control.decided": StandardSchemaV1<ControlReceipt>;
|
|
342
|
+
"ai.work.reported": StandardSchemaV1<WorkReport>;
|
|
343
|
+
"ai.tool.execution.requested": StandardSchemaV1<ToolExecutionRequest>;
|
|
344
|
+
"ai.generation.paused": StandardSchemaV1<{
|
|
345
|
+
generationId: string;
|
|
346
|
+
messageId: string;
|
|
347
|
+
}>;
|
|
348
|
+
"ai.session.created": StandardSchemaV1<SessionCreatedPayload>;
|
|
349
|
+
"ai.session.closed": StandardSchemaV1<SessionClosedPayload>;
|
|
350
|
+
"ai.message.created": StandardSchemaV1<MessageCreatedPayload<M>>;
|
|
351
|
+
"ai.message.completed": StandardSchemaV1<MessageCompletedPayload>;
|
|
352
|
+
"ai.message.interrupted": StandardSchemaV1<MessageInterruptedPayload>;
|
|
353
|
+
"ai.generation.requested": StandardSchemaV1<GenerationRequestedPayload>;
|
|
354
|
+
"ai.retry.requested": StandardSchemaV1<RetryRequestedPayload>;
|
|
355
|
+
"ai.generation.started": StandardSchemaV1<GenerationStartedPayload>;
|
|
356
|
+
"ai.generation.progress": StandardSchemaV1<GenerationProgressPayload>;
|
|
357
|
+
"ai.generation.completed": StandardSchemaV1<GenerationCompletedPayload>;
|
|
358
|
+
"ai.generation.failed": StandardSchemaV1<GenerationFailedPayload>;
|
|
359
|
+
"ai.tool.called": StandardSchemaV1<ToolCalledPayload>;
|
|
360
|
+
"ai.tool.result": StandardSchemaV1<ToolResultPayload>;
|
|
361
|
+
"ai.approval.requested": StandardSchemaV1<ApprovalRequestedPayload>;
|
|
362
|
+
"ai.approval.responded": StandardSchemaV1<ApprovalRespondedPayload>;
|
|
363
|
+
"ai.input.requested": StandardSchemaV1<InputRequestedPayload>;
|
|
364
|
+
"ai.input.responded": StandardSchemaV1<InputRespondedPayload>;
|
|
365
|
+
"ai.compaction.requested": StandardSchemaV1<CompactionRequestedPayload>;
|
|
366
|
+
"ai.compaction.completed": StandardSchemaV1<CompactionCompletedPayload<M>>;
|
|
367
|
+
"ai.model.metadata.requested": StandardSchemaV1<ModelMetadataRequestedPayload>;
|
|
368
|
+
"ai.model.metadata.resolved": StandardSchemaV1<ModelMetadataResolvedPayload>;
|
|
369
|
+
};
|
|
370
|
+
type ActiveGeneration = GenerationStartedPayload;
|
|
371
|
+
type ActiveGenerationProjection<M extends UIMessage$1 = UIMessage$1> = {
|
|
372
|
+
generationId: string;
|
|
373
|
+
responseMessageId: string;
|
|
374
|
+
/** Log index of the completed model step while its response remains interruptible. */
|
|
375
|
+
completionIndex?: number;
|
|
376
|
+
baseMessage?: M;
|
|
377
|
+
promptThroughIndex?: number;
|
|
378
|
+
cursor?: {
|
|
379
|
+
throughIndex: number;
|
|
380
|
+
stream: UIMessageCursor;
|
|
381
|
+
} | null;
|
|
382
|
+
baseCompaction?: CompactionState<M> | null;
|
|
383
|
+
batches: ProgressBatches;
|
|
384
|
+
baseTools: ToolActivity[];
|
|
385
|
+
toolEvents: Array<{
|
|
386
|
+
index: number;
|
|
387
|
+
type: "ai.tool.called";
|
|
388
|
+
payload: ToolCalledPayload;
|
|
389
|
+
} | {
|
|
390
|
+
index: number;
|
|
391
|
+
type: "ai.tool.result";
|
|
392
|
+
payload: ToolResultPayload;
|
|
393
|
+
}>;
|
|
394
|
+
approvalEvents: Array<{
|
|
395
|
+
index: number;
|
|
396
|
+
type: "ai.approval.requested";
|
|
397
|
+
payload: ApprovalRequestedPayload;
|
|
398
|
+
} | {
|
|
399
|
+
index: number;
|
|
400
|
+
type: "ai.approval.responded";
|
|
401
|
+
payload: ApprovalRespondedPayload;
|
|
402
|
+
}>;
|
|
403
|
+
};
|
|
404
|
+
type PendingApproval = ApprovalRequestedPayload;
|
|
405
|
+
type PendingInput = InputRequestedPayload;
|
|
406
|
+
type ToolActivity = {
|
|
407
|
+
requestId: string;
|
|
408
|
+
messageId: string;
|
|
409
|
+
generationId: string;
|
|
410
|
+
toolCallId: string;
|
|
411
|
+
toolName?: string;
|
|
412
|
+
input?: unknown;
|
|
413
|
+
rawInput?: unknown;
|
|
414
|
+
output?: unknown;
|
|
415
|
+
error?: string;
|
|
416
|
+
preliminary?: boolean;
|
|
417
|
+
phase?: "input" | "execution";
|
|
418
|
+
dynamic?: boolean;
|
|
419
|
+
providerExecuted?: boolean;
|
|
420
|
+
callProviderMetadata?: unknown;
|
|
421
|
+
resultProviderMetadata?: unknown;
|
|
422
|
+
toolMetadata?: unknown;
|
|
423
|
+
title?: string;
|
|
424
|
+
status: "running" | "completed" | "failed" | "denied";
|
|
425
|
+
};
|
|
426
|
+
type CompactionState<M extends UIMessage$1> = {
|
|
427
|
+
status: "running" | "completed";
|
|
428
|
+
generationId: string;
|
|
429
|
+
throughMessageId: string;
|
|
430
|
+
throughIndex?: number;
|
|
431
|
+
messages?: M[];
|
|
432
|
+
retainedMessageIds?: string[];
|
|
433
|
+
summary?: string;
|
|
434
|
+
usage?: LanguageModelUsage;
|
|
435
|
+
};
|
|
436
|
+
type GenerationUsage = {
|
|
437
|
+
generationId: string;
|
|
438
|
+
usage: LanguageModelUsage;
|
|
439
|
+
};
|
|
440
|
+
type AIState<M extends UIMessage$1 = UIMessage$1> = {
|
|
441
|
+
inbox: {
|
|
442
|
+
paused: boolean;
|
|
443
|
+
items: InboxItem<M>[];
|
|
444
|
+
};
|
|
445
|
+
pendingQueueCommands?: PendingQueueCommand<M>[];
|
|
446
|
+
active: ActiveTurn<M> | null;
|
|
447
|
+
starting: boolean;
|
|
448
|
+
receipt: ControlReceipt | null;
|
|
449
|
+
pausedGenerationIds?: Record<string, true>;
|
|
450
|
+
session: {
|
|
451
|
+
created: boolean;
|
|
452
|
+
metadata?: JSONValue;
|
|
453
|
+
};
|
|
454
|
+
messages: M[];
|
|
455
|
+
status: AgentStatus;
|
|
456
|
+
activeGeneration: ActiveGeneration | null;
|
|
457
|
+
activeRequestId: string | null;
|
|
458
|
+
activeResponseMessageId: string | null;
|
|
459
|
+
activeProjection: ActiveGenerationProjection<M> | null;
|
|
460
|
+
responseGenerationIds: Record<string, string>;
|
|
461
|
+
terminalRequestIds?: Record<string, true>;
|
|
462
|
+
terminalGenerations?: Record<string, "completed" | "failed" | "interrupted" | "superseded">;
|
|
463
|
+
pendingApprovals: PendingApproval[];
|
|
464
|
+
pendingInputs: PendingInput[];
|
|
465
|
+
tools: ToolActivity[];
|
|
466
|
+
compaction: CompactionState<M> | null;
|
|
467
|
+
modelMetadata: Record<string, ModelMetadataState>;
|
|
468
|
+
usage: GenerationUsage[];
|
|
469
|
+
error: string | null;
|
|
470
|
+
};
|
|
471
|
+
type AgentDefinition<M extends UIMessage$1 = UIMessage$1, D extends EventDefs = AIEventDefs<M>> = {
|
|
472
|
+
readonly contract: Contract<D>;
|
|
473
|
+
readonly reducer: Reducer<D, AIState<M>>;
|
|
474
|
+
};
|
|
475
|
+
type AgentToolEventDefs = EventDefs & Pick<AIEventDefs, "ai.tool.execution.requested">;
|
|
476
|
+
/** The durable handler context supplied when A2 executes a local AI tool. */
|
|
477
|
+
type AgentToolContext<D extends AgentToolEventDefs> = HandlerContext<D, "ai.tool.execution.requested">;
|
|
478
|
+
type AgentOptions<M extends UIMessage$1, E extends EventDefs> = {
|
|
479
|
+
name: string;
|
|
480
|
+
events?: E;
|
|
481
|
+
/** Optional stricter schema for custom UIMessage metadata/data/tool types. */
|
|
482
|
+
messageSchema?: StandardSchemaV1<M>;
|
|
483
|
+
/** Snapshot identity. Bump when application-level projection semantics change. */
|
|
484
|
+
reducerName?: string;
|
|
485
|
+
};
|
|
486
|
+
type AIMessageFrom<D extends EventDefs> = D extends Record<"ai.message.created", infer S extends StandardSchemaV1> ? StandardSchemaV1.InferOutput<S> extends MessageCreatedPayload<infer M extends UIMessage$1> ? M : UIMessage$1 : UIMessage$1;
|
|
487
|
+
declare function createEvents<M extends UIMessage$1 = UIMessage$1>(options?: {
|
|
488
|
+
messageSchema?: StandardSchemaV1<M>;
|
|
489
|
+
}): AIEventDefs<M>;
|
|
490
|
+
declare const events: AIEventDefs<UIMessage$1>;
|
|
491
|
+
/** Pure projection of the built-in AI protocol. Unknown extension events are ignored. */
|
|
492
|
+
declare function reduceAIState<M extends UIMessage$1>(state: AIState<M>, event: {
|
|
493
|
+
type: string;
|
|
494
|
+
payload: unknown;
|
|
495
|
+
index: number;
|
|
496
|
+
id?: string;
|
|
497
|
+
}): AIState<M>;
|
|
498
|
+
/** Derive AI SDK UI messages directly from an A2 event history. */
|
|
499
|
+
declare function deriveUIMessages<M extends UIMessage$1 = UIMessage$1>(history: readonly {
|
|
500
|
+
type: string;
|
|
501
|
+
payload: unknown;
|
|
502
|
+
index: number;
|
|
503
|
+
}[]): M[];
|
|
504
|
+
/** Build the standard AI state projection for any contract containing the protocol. */
|
|
505
|
+
declare function createReducer<D extends EventDefs>(options: {
|
|
506
|
+
contract: Contract<D>;
|
|
507
|
+
name?: string;
|
|
508
|
+
}): Reducer<D, AIState<AIMessageFrom<D>>>;
|
|
509
|
+
type CommandInput<C> = {
|
|
510
|
+
type: "ai.control.requested";
|
|
511
|
+
payload: C;
|
|
512
|
+
id?: string;
|
|
513
|
+
};
|
|
514
|
+
type ControlInput<M extends UIMessage$1, A extends ControlCommand<M>["action"]> = CommandInput<Extract<ControlCommand<M>, {
|
|
515
|
+
action: A;
|
|
516
|
+
}>>;
|
|
517
|
+
type AIInputs = {
|
|
518
|
+
message<M extends UIMessage$1>(message: M, options?: {
|
|
519
|
+
generate?: boolean;
|
|
520
|
+
}): ControlInput<M, "send">[];
|
|
521
|
+
seed<M extends UIMessage$1>(message: M): ControlInput<M, "send">[];
|
|
522
|
+
queue: {
|
|
523
|
+
remove(options: {
|
|
524
|
+
inputId: string;
|
|
525
|
+
}): ControlInput<UIMessage$1, "remove">[];
|
|
526
|
+
sendNow(options: {
|
|
527
|
+
inputId: string;
|
|
528
|
+
turnId: string | null;
|
|
529
|
+
lastSeenIndex?: number;
|
|
530
|
+
}): ControlInput<UIMessage$1, "send-now">[];
|
|
531
|
+
edit<M extends UIMessage$1>(options: {
|
|
532
|
+
message: M;
|
|
533
|
+
expectedRevision: number;
|
|
534
|
+
}): ControlInput<M, "edit">[];
|
|
535
|
+
move(options: {
|
|
536
|
+
inputId: string;
|
|
537
|
+
beforeId: string | null;
|
|
538
|
+
}): ControlInput<UIMessage$1, "move">[];
|
|
539
|
+
};
|
|
540
|
+
stop(options: {
|
|
541
|
+
turnId: string;
|
|
542
|
+
lastSeenIndex?: number;
|
|
543
|
+
}): ControlInput<UIMessage$1, "stop">[];
|
|
544
|
+
steer<M extends UIMessage$1>(options: {
|
|
545
|
+
turnId: string;
|
|
546
|
+
message: M;
|
|
547
|
+
lastSeenIndex?: number;
|
|
548
|
+
}): ControlInput<M, "steer">[];
|
|
549
|
+
pause(options: {
|
|
550
|
+
when: "now" | "after-turn";
|
|
551
|
+
}): ControlInput<UIMessage$1, "pause">[];
|
|
552
|
+
resume(): ControlInput<UIMessage$1, "resume">[];
|
|
553
|
+
approval(response: ApprovalRespondedPayload): ControlInput<UIMessage$1, "approval">[];
|
|
554
|
+
input(response: InputRespondedPayload): ControlInput<UIMessage$1, "input">[];
|
|
555
|
+
requestInput(request: InputRequestedPayload): ControlInput<UIMessage$1, "request-input">[];
|
|
556
|
+
retry(request: RetryGenerationOptions): ControlInput<UIMessage$1, "retry">[];
|
|
557
|
+
interrupt(request: MessageInterruptedPayload): ControlInput<UIMessage$1, "interrupt">[];
|
|
558
|
+
toolResult(result: ToolResultPayload): ControlInput<UIMessage$1, "tool-result">[];
|
|
559
|
+
};
|
|
560
|
+
/** Pure append inputs for the built-in AI protocol. */
|
|
561
|
+
declare const inputs: AIInputs;
|
|
562
|
+
/**
|
|
563
|
+
* Read the durable handler context ambient to the current AI tool
|
|
564
|
+
* execution. A2 runs each local tool's `execute` inside this scope, so
|
|
565
|
+
* plain AI SDK `tool()` definitions reach their `event`, `attempt`,
|
|
566
|
+
* `session`, and `signal` without an A2-specific wrapper. The agent (or
|
|
567
|
+
* contract) argument carries the event types and is verified against
|
|
568
|
+
* the executing server's contract.
|
|
569
|
+
*/
|
|
570
|
+
declare function handlerContext<D extends AgentToolEventDefs>(agentOrContract: Contract<D> | {
|
|
571
|
+
readonly contract: Contract<D>;
|
|
572
|
+
}): AgentToolContext<D>;
|
|
573
|
+
/**
|
|
574
|
+
* Define an agent: built-in AI protocol + application events and one state
|
|
575
|
+
* reducer. The result is isomorphic.
|
|
576
|
+
*/
|
|
577
|
+
declare function agent<M extends UIMessage$1 = UIMessage$1, E extends EventDefs = Record<never, never>>(options: AgentOptions<M, E>): AgentDefinition<M, AIEventDefs<M> & E>;
|
|
578
|
+
//#endregion
|
|
579
|
+
export { reduceAIState as $, MessageInterruptedPayload as A, SessionCreatedPayload as B, GenerationUsage as C, LanguageModelUsage as D, JSONValue as E, PendingApproval as F, UIMessageChunk$1 as G, ToolCalledPayload as H, PendingInput as I, createReducer as J, agent as K, RetryGenerationOptions as L, ModelMetadataRequestedPayload as M, ModelMetadataResolvedPayload as N, MessageCompletedPayload as O, ModelMetadataState as P, inputs as Q, RetryRequestedPayload as R, GenerationStartedPayload as S, InputRespondedPayload as T, ToolResultPayload as U, ToolActivity as V, UIMessage$1 as W, events as X, deriveUIMessages as Y, handlerContext as Z, GenerationCompletedPayload as _, ActiveGenerationProjection as a, GenerationReason as b, AgentStatus as c, ApprovalRequestedPayload as d, PendingQueueCommand as et, ApprovalRespondedPayload as f, FinishReason as g, CompactionState as h, ActiveGeneration as i, InboxItem as it, ModelLimits as j, MessageCreatedPayload as k, AgentToolContext as l, CompactionRequestedPayload as m, AIInputs as n, ControlCommand as nt, AgentDefinition as o, CompactionCompletedPayload as p, createEvents as q, AIState as r, ControlReceipt as rt, AgentOptions as s, AIEventDefs as t, ActiveTurn as tt, AgentToolEventDefs as u, GenerationFailedPayload as v, InputRequestedPayload as w, GenerationRequestedPayload as x, GenerationProgressPayload as y, SessionClosedPayload as z };
|
|
580
|
+
//# sourceMappingURL=ai-Cai-lCbj.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-Cai-lCbj.d.ts","names":[],"sources":["../src/ai-control.ts","../src/ai-client-state.ts","../src/ai-projector.ts","../src/ai-progress-batches.ts","../src/ai.ts"],"mappings":"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"}
|