experimental-agent 0.4.0 → 0.6.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.
Files changed (52) hide show
  1. package/dist/{adapter-zgOel4wW.d.mts → adapter-DmlMKodR.d.mts} +4 -60
  2. package/dist/{adapter-zgOel4wW.d.ts → adapter-DmlMKodR.d.ts} +4 -60
  3. package/dist/{chunk-ZUFJJYC4.mjs → chunk-2Y7EZPIP.mjs} +3 -2
  4. package/dist/{chunk-MSTM6W3Y.mjs → chunk-355UN6NT.mjs} +11 -3
  5. package/dist/{chunk-RT72C52I.mjs → chunk-6MS4CGEZ.mjs} +3 -2
  6. package/dist/chunk-CS2SEUAA.mjs +405 -0
  7. package/dist/chunk-LZOMFHX3.mjs +38 -0
  8. package/dist/chunk-NOW6XL5E.mjs +310 -0
  9. package/dist/chunk-PH2FXKOU.mjs +9 -0
  10. package/dist/client-Cd-79N5B.d.ts +494 -0
  11. package/dist/client-panIugEx.d.mts +494 -0
  12. package/dist/client.mjs +1 -1
  13. package/dist/{docker-QPCLWLYR.mjs → docker-FCSNVBEQ.mjs} +2 -2
  14. package/dist/entry-CciSxlDK.d.mts +45 -0
  15. package/dist/entry-MCzvxs7U.d.ts +45 -0
  16. package/dist/index.d.mts +475 -384
  17. package/dist/index.d.ts +475 -384
  18. package/dist/index.js +16693 -219
  19. package/dist/index.mjs +16545 -160
  20. package/dist/lifecycle-workflow-steps.d.mts +2 -2
  21. package/dist/lifecycle-workflow-steps.d.ts +2 -2
  22. package/dist/lifecycle-workflow-steps.mjs +1 -1
  23. package/dist/lifecycle-workflow.d.mts +2 -2
  24. package/dist/lifecycle-workflow.d.ts +2 -2
  25. package/dist/lifecycle-workflow.mjs +1 -1
  26. package/dist/{local-KJ3BSIFJ.mjs → local-NXHIUJTO.mjs} +2 -2
  27. package/dist/next/loader.js +11 -3
  28. package/dist/next/loader.mjs +2 -2
  29. package/dist/next.js +11 -3
  30. package/dist/next.mjs +2 -2
  31. package/dist/{process-manager-WQHAIVRB.mjs → process-manager-26NELLRU.mjs} +1 -1
  32. package/dist/react.d.mts +56 -0
  33. package/dist/react.d.ts +56 -0
  34. package/dist/react.js +144 -0
  35. package/dist/react.mjs +117 -0
  36. package/dist/sandbox.d.mts +3 -3
  37. package/dist/sandbox.d.ts +3 -3
  38. package/dist/sandbox.js +15 -5
  39. package/dist/sandbox.mjs +4 -4
  40. package/dist/{steps-BIsP57pm.d.mts → steps-DWQYXexO.d.mts} +5 -2
  41. package/dist/{steps-DShnXBLf.d.ts → steps-DnvPkAtl.d.ts} +5 -2
  42. package/dist/storage.d.mts +2 -2
  43. package/dist/storage.d.ts +2 -2
  44. package/dist/storage.js +133 -56
  45. package/dist/storage.mjs +2 -2
  46. package/dist/{vercel-QZ6INPMV.mjs → vercel-LJEWLD4T.mjs} +2 -2
  47. package/package.json +10 -2
  48. package/dist/chunk-BFFNCESS.mjs +0 -302
  49. package/dist/chunk-BJTO5JO5.mjs +0 -11
  50. package/dist/chunk-IV75IMEW.mjs +0 -328
  51. package/dist/entry-6HYg5qqg.d.mts +0 -36
  52. package/dist/entry-BrWOmEK2.d.ts +0 -36
package/dist/index.d.ts CHANGED
@@ -1,392 +1,50 @@
1
- import * as _vercel_sandbox from '@vercel/sandbox';
2
- import { S as SandboxBinding, a as SandboxSetupFields, b as SandboxInstance, W as WithConfig, c as LoggingConfig, E as ExecResult, U as UploadableFile } from './steps-DShnXBLf.js';
3
- export { d as SandboxAgentRef } from './steps-DShnXBLf.js';
4
- import { L as LocalBindingConfig, a as LocalBindingMetadata, V as VercelBindingConfig, b as VercelBindingMetadata, D as DockerBindingConfig, c as DockerBindingMetadata } from './entry-BrWOmEK2.js';
1
+ import { T as ToolContext, A as AnyAgent, S as SessionSendArgs, b as SendResult } from './client-Cd-79N5B.js';
2
+ export { c as AgentDataTypes, d as AgentHooks, e as AgentOptions, a as AgentStatus, f as ApprovalData, B as BuiltInToolName, G as GitSkillEntry, g as GitSkillInput, H as HostSkillEntry, h as HostSkillInput, I as InferSession, i as InferUIMessage, j as InlineSkillEntry, k as InlineSkillInput, N as NeedsApprovalMap, R as Resolvable, l as ResolvableArgs, m as SandboxSkillEntry, n as SandboxSkillInput, o as SendInput, p as SessionDefaults, q as SkillEntry, r as SkillInput, s as SkillSourceType, t as StepUsage, U as UsageSummary, W as WorkflowRunLike, u as agent, v as builtinToolNames } from './client-Cd-79N5B.js';
3
+ import * as errore from 'errore';
4
+ import * as elysia from 'elysia';
5
+ import elysia__default from 'elysia';
5
6
  import * as ai from 'ai';
6
- import { InferToolInput, ModelMessage, ToolSet, UIMessage, InferUITools, GatewayModelId } from 'ai';
7
+ import { Tool } from 'ai';
8
+ import z$1 from '../../node_modules/zod/v4/classic/external.cjs';
9
+ export { E as ExecResult, S as SandboxAgentRef, a as SandboxBinding, b as SandboxInstance, c as SandboxSetupFields, U as UploadableFile } from './steps-DnvPkAtl.js';
7
10
  import { z } from 'zod';
8
- import { c as Session, f as Storage, j as SkillInput, k as StorageInput } from './adapter-zgOel4wW.js';
9
- export { l as GitSkillEntry, m as GitSkillInput, H as HostSkillEntry, n as HostSkillInput, I as InlineSkillEntry, o as InlineSkillInput, p as SandboxSkillEntry, q as SandboxSkillInput, r as SkillEntry, s as SkillSourceType } from './adapter-zgOel4wW.js';
10
- import { WORKFLOW_SERIALIZE, WORKFLOW_DESERIALIZE } from '@workflow/serde';
11
- import * as errore from 'errore';
12
-
13
- type BuiltInBindings = SandboxBinding<"local", LocalBindingConfig, LocalBindingMetadata> | SandboxBinding<"vercel", VercelBindingConfig, VercelBindingMetadata> | SandboxBinding<"docker", DockerBindingConfig, DockerBindingMetadata>;
14
-
15
- type SandboxOptions = {
16
- id?: string;
17
- };
18
-
19
- type SetupCommonFields = Partial<SandboxSetupFields> & {
20
- cwd?: string;
21
- run?: (sandbox: SandboxInstance) => Promise<void>;
22
- signal?: AbortSignal;
23
- };
24
- type ToBindingUnion<T extends SandboxBinding | SandboxBinding[]> = T extends SandboxBinding[] ? T[number] : T;
25
- type SetupOptsForBinding<B extends SandboxBinding> = B extends SandboxBinding<infer T, infer C, any> ? {
26
- type: T;
27
- } & SetupCommonFields & WithConfig<C> : never;
28
- type IsDefault<T extends SandboxBinding | SandboxBinding[]> = SandboxBinding extends T ? true : false;
29
- type SetupOpts<TSandboxBindings extends SandboxBinding | SandboxBinding[]> = SetupOptsForBinding<IsDefault<TSandboxBindings> extends true ? BuiltInBindings : ToBindingUnion<TSandboxBindings>> | (SetupCommonFields & {
30
- type?: never;
31
- });
32
- type SetupResult = {
33
- done: Promise<SandboxInstance>;
34
- };
35
-
36
- type StepUsage = {
37
- stepIndex: number;
38
- model: string;
39
- inputTokens: number;
40
- outputTokens: number;
41
- totalTokens: number;
42
- cacheReadTokens: number;
43
- cacheWriteTokens: number;
44
- reasoningTokens: number;
45
- };
46
- type UsageSummary = {
47
- model: string;
48
- inputTokens: number;
49
- outputTokens: number;
50
- totalTokens: number;
51
- cacheReadTokens: number;
52
- cacheWriteTokens: number;
53
- reasoningTokens: number;
54
- stepCount: number;
55
- };
56
- type SessionUsage = {
57
- total: UsageSummary & {
58
- messageCount: number;
59
- };
60
- byMessageId: Record<string, UsageSummary | null>;
61
- };
62
-
63
- type ToolContext<TContext = Record<string, unknown>> = {
64
- session: Session;
65
- sandbox: SandboxInstance;
66
- storage: Storage;
67
- context: TContext;
68
- };
69
- declare const builtInTools: {
70
- Read: ai.Tool<{
71
- label: string;
72
- path: string;
73
- startLine?: number | undefined;
74
- endLine?: number | undefined;
75
- }, {
76
- content: string;
77
- metadata: {
78
- totalLines: number;
79
- linesShown: number;
80
- startLine: number;
81
- endLine: number;
82
- isPaginated: boolean;
83
- fileSize: string;
84
- path: string;
85
- };
86
- }>;
87
- Grep: ai.Tool<{
88
- label: string;
89
- pattern: string;
90
- caseSensitive: boolean;
91
- filesWithMatches: boolean;
92
- path?: string | undefined;
93
- fileType?: string | undefined;
94
- glob?: string | undefined;
95
- contextLines?: number | undefined;
96
- maxCount?: number | undefined;
97
- }, {
98
- matches: string;
99
- summary: {
100
- matchCount: number;
101
- fileCount: number;
102
- searchPath: string;
103
- pattern: string;
104
- };
105
- }>;
106
- List: ai.Tool<{
107
- label: string;
108
- includeHidden: boolean;
109
- filesOnly: boolean;
110
- path?: string | undefined;
111
- depth?: number | undefined;
112
- pattern?: string | undefined;
113
- }, {
114
- listing: string;
115
- summary: {
116
- totalItems: number;
117
- totalFiles: number;
118
- totalDirs: number;
119
- searchPath: string;
120
- depth?: number | undefined;
121
- };
122
- }>;
123
- Write: ai.Tool<{
124
- label: string;
125
- path: string;
126
- content: string;
127
- }, {
128
- success: boolean;
129
- path: string;
130
- bytesWritten: number;
131
- error?: string | undefined;
132
- }>;
133
- Edit: ai.Tool<{
134
- label: string;
135
- path: string;
136
- old_string: string;
137
- new_string: string;
138
- }, {
139
- success: boolean;
140
- path: string;
141
- error?: string | undefined;
142
- }>;
143
- Bash: ai.Tool<{
144
- label: string;
145
- command: string;
146
- waitUntil?: number | undefined;
147
- }, {
148
- commandId: string;
149
- stdout: string;
150
- stderr: string;
151
- exitCode: number;
152
- status: "running" | "failed" | "completed";
153
- outputDir: string;
154
- }>;
155
- Skill: ai.Tool<{
156
- label: string;
157
- name: string;
158
- }, {
159
- name: string;
160
- description: string;
161
- content: string;
162
- path: string;
163
- }>;
164
- JavaScript: ai.Tool<{
165
- label: string;
166
- code: string;
167
- }, any>;
168
- };
169
- type BuiltInToolName = keyof typeof builtInTools;
170
- declare const builtinToolNames: { [K in BuiltInToolName]: K; };
11
+ import '@vercel/sandbox';
12
+ import './entry-MCzvxs7U.js';
13
+ import './adapter-DmlMKodR.js';
14
+ import '@workflow/serde';
171
15
 
172
16
  /**
173
- * Transient status indicators emitted over the stream during long-running phases.
174
- * Delivered to the client as `data-status` chunks with `transient: true` — not persisted.
17
+ * Define an agent tool with typed context and state.
18
+ *
19
+ * Pass the same `contextSchema` and/or `stateSchema` (Zod objects) used in
20
+ * your agent definition to get typed `context` and `state` inside `execute`.
21
+ *
22
+ * ```ts
23
+ * import { tool } from "experimental-agent";
24
+ * import { contextSchema, stateSchema } from "./context";
25
+ *
26
+ * export const MyTool = tool({
27
+ * contextSchema,
28
+ * stateSchema,
29
+ * inputSchema: z.object({ query: z.string() }),
30
+ * execute: async ({ query }, { context, state, sandbox }) => {
31
+ * context.channelId // ✓ typed from contextSchema
32
+ * state.counter++ // ✓ typed from stateSchema, mutable
33
+ * },
34
+ * });
35
+ * ```
175
36
  */
176
- declare const AgentStatus: z.ZodDiscriminatedUnion<[z.ZodObject<{
177
- type: z.ZodLiteral<"sandbox-setup">;
178
- }, z.core.$strip>, z.ZodObject<{
179
- type: z.ZodLiteral<"sandbox-setup-cold">;
180
- }, z.core.$strip>, z.ZodObject<{
181
- type: z.ZodLiteral<"loading-skills">;
182
- }, z.core.$strip>, z.ZodObject<{
183
- type: z.ZodLiteral<"processing-approvals">;
184
- }, z.core.$strip>, z.ZodObject<{
185
- type: z.ZodLiteral<"needs-approval">;
186
- }, z.core.$strip>, z.ZodObject<{
187
- type: z.ZodLiteral<"thinking">;
188
- }, z.core.$strip>, z.ZodObject<{
189
- type: z.ZodLiteral<"custom">;
190
- status: z.ZodString;
191
- }, z.core.$strip>], "type">;
192
- type AgentStatus = z.infer<typeof AgentStatus>;
193
- type AgentDataTypes = {
194
- status: AgentStatus;
195
- };
196
- type AgentHooks = {
197
- "tool.before"?: (opts: {
198
- name: string;
199
- input: unknown;
200
- context: ToolContext;
201
- }) => Promise<undefined | {
202
- input: unknown;
203
- }>;
204
- "tool.after"?: (opts: {
205
- name: string;
206
- input: unknown;
207
- result: unknown;
208
- context: ToolContext;
209
- }) => Promise<undefined | {
210
- result: unknown;
211
- }>;
212
- status?: (status: AgentStatus) => void | Promise<void>;
213
- };
214
- type ToolName<Tools> = Extract<keyof Tools, string> | BuiltInToolName;
215
- type ToolInput<Tools, K> = K extends BuiltInToolName ? InferToolInput<(typeof builtInTools)[K]> : K extends keyof Tools ? Tools[K] extends ai.Tool ? InferToolInput<Tools[K]> : unknown : unknown;
216
- type NeedsApprovalMap<Tools> = {
217
- [K in ToolName<Tools>]?: boolean | ((input: ToolInput<Tools, K>, options: {
37
+ declare function tool<TInputSchema extends z.ZodType, TContextSchema extends z.ZodType = z.ZodType<Record<string, unknown>>, TStateSchema extends z.ZodType = z.ZodType<Record<string, unknown>>, TOutputSchema extends z.ZodType = z.ZodType<any>>(def: {
38
+ description?: string;
39
+ inputSchema: TInputSchema;
40
+ outputSchema?: TOutputSchema;
41
+ contextSchema?: TContextSchema;
42
+ stateSchema?: TStateSchema;
43
+ execute?: (input: z.infer<TInputSchema>, options: ToolContext<z.infer<TContextSchema>, z.infer<TStateSchema>> & {
218
44
  toolCallId: string;
219
- messages: ModelMessage[];
220
- experimental_context: unknown;
221
- }) => boolean | Promise<boolean>);
222
- };
223
- type InferUIMessage<A> = A extends {
224
- tools: infer T extends ToolSet;
225
- $UIMessage: UIMessage<infer M>;
226
- } ? UIMessage<M, AgentDataTypes, InferUITools<T>> : A extends {
227
- tools: infer T extends ToolSet;
228
- } ? UIMessage<unknown, AgentDataTypes, InferUITools<T>> : UIMessage<unknown, AgentDataTypes>;
229
- type TypedUIMessage<TMessageMetadata = unknown, Tools extends ToolSet = ToolSet> = UIMessage<TMessageMetadata, AgentDataTypes, InferUITools<Tools>>;
230
-
231
- type StreamOptions = {
232
- messageId?: string;
233
- startIndex?: number;
234
- };
235
- type WorkflowRunLike = {
236
- getReadable(options?: {
237
- startIndex?: number;
238
- }): ReadableStream;
239
- };
240
-
241
- type UpdateOptions<Tools extends ToolSet> = Partial<Omit<Session, "id" | "activeTools" | "model"> & {
242
- model?: GatewayModelId;
243
- activeTools?: (Extract<keyof Tools, string> | BuiltInToolName)[];
244
- }>;
245
-
246
- type ApprovalData = {
247
- approvalId: string;
248
- approved: boolean;
249
- reason?: string;
250
- };
251
- type MessageData<Tools extends ToolSet> = UIMessage | {
252
- role?: TypedUIMessage<unknown, Tools>["role"];
253
- parts: TypedUIMessage<unknown, Tools>["parts"];
254
- metadata?: Record<string, unknown> | null;
255
- id?: string;
256
- };
257
- type SendInput<Tools extends ToolSet> = string | MessageData<Tools> | {
258
- type: "message";
259
- message: MessageData<Tools>;
260
- } | {
261
- type: "approval";
262
- approval: ApprovalData;
263
- };
264
- type SendOptions<Tools extends ToolSet, TContext> = {
265
- interruptIfStreaming?: boolean | {
266
- lastPart: {
267
- index: number;
268
- part: unknown;
269
- };
270
- };
271
- context?: TContext;
272
- abortSignal?: AbortSignal;
273
- } & UpdateOptions<Tools>;
274
- type SendResult = {
275
- assistantMessageId: string;
276
- done: true | Promise<true>;
277
- };
278
-
279
- type InterruptOptions = {
280
- lastPart?: {
281
- index: number;
282
- part: unknown;
283
- };
284
- };
285
-
286
- type SessionDefaults<Tools extends ToolSet = ToolSet> = {
287
- model?: GatewayModelId;
288
- system?: string;
289
- generation?: Session["generation"];
290
- activeTools?: (Extract<keyof Tools, string> | BuiltInToolName)[];
291
- skills?: SkillInput[];
292
- };
293
- type AgentOptions<Tools extends ToolSet = any, TSandboxBindings extends SandboxBinding | SandboxBinding[] = SandboxBinding, TContext extends Record<string, unknown> = Record<string, never>> = SessionDefaults<Tools> & {
294
- storage?: StorageInput;
295
- sandbox?: TSandboxBindings;
296
- tools?: Tools;
297
- hooks?: AgentHooks;
298
- needsApproval?: NeedsApprovalMap<Tools>;
299
- contextSchema?: z.ZodType<TContext>;
300
- logging?: Omit<LoggingConfig, "name">;
301
- };
302
- type AnyAgent = Agent<any, any, any, any>;
303
- type InferSession<Agent extends AnyAgent = AnyAgent> = ReturnType<Agent["session"]>;
304
- type SessionSendArgs<Agent extends AnyAgent, Session extends InferSession<Agent> = InferSession<Agent>> = Parameters<Session["send"]>;
305
- declare class Agent<TMessageMetadata = unknown, Tools extends ToolSet = ToolSet, TSandboxBindings extends SandboxBinding | SandboxBinding[] = SandboxBinding, TContext extends Record<string, unknown> = Record<string, never>> {
306
- readonly name: string;
307
- options: AgentOptions<Tools, TSandboxBindings, TContext>;
308
- constructor(name: string, options?: AgentOptions<Tools, TSandboxBindings, TContext>);
309
- static [WORKFLOW_SERIALIZE](instance: AnyAgent): {
310
- name: string;
311
- };
312
- static [WORKFLOW_DESERIALIZE](data: {
313
- name: string;
314
- }): AnyAgent;
315
- private _resolvedStorage;
316
- get storage(): Storage;
317
- get tools(): typeof builtInTools & Tools;
318
- get sessionDefaults(): SessionDefaults;
319
- get hooks(): AgentHooks;
320
- readonly session: (id?: string | {
321
- id?: string;
322
- } | undefined) => {
323
- id: string;
324
- send: (input: SendInput<Tools> | SendInput<Tools>[], opts?: SendOptions<Tools, TContext> | undefined) => Promise<SendResult>;
325
- stream: (runOrOpts?: WorkflowRunLike | StreamOptions | undefined) => Promise<ReadableStream<ai.UIMessageChunk>>;
326
- history: () => Promise<{
327
- messages: UIMessage<unknown, AgentDataTypes, InferUITools<Tools>>[];
328
- streamingMessageId: string | null;
329
- usage: SessionUsage;
330
- }>;
331
- interrupt: (opts?: InterruptOptions | undefined) => Promise<void>;
332
- usage: () => Promise<SessionUsage>;
333
- update: (opts: Partial<Omit<Session, "id" | "model" | "activeTools"> & {
334
- model?: GatewayModelId;
335
- activeTools?: ("Read" | "Grep" | "List" | "Write" | "Edit" | "Bash" | "Skill" | "JavaScript" | Extract<keyof Tools, string>)[] | undefined;
336
- }>) => Promise<void>;
337
- };
338
- readonly sandbox: (id?: string | SandboxOptions | undefined) => {
339
- id: string;
340
- readonly cwd: string;
341
- setup: (opts?: SetupOpts<TSandboxBindings> | undefined) => Promise<SetupResult>;
342
- exec: (opts: {
343
- command: string;
344
- args?: string[];
345
- cwd?: string;
346
- env?: Record<string, string>;
347
- sudo?: boolean;
348
- signal?: AbortSignal;
349
- }) => Promise<ExecResult>;
350
- readFile: (opts: {
351
- path: string;
352
- signal?: AbortSignal;
353
- }) => Promise<Buffer | null>;
354
- writeFiles: (opts: {
355
- files: UploadableFile[];
356
- destPath: string;
357
- signal?: AbortSignal;
358
- }) => Promise<void>;
359
- getDomain: (opts: {
360
- port: number;
361
- signal?: AbortSignal;
362
- }) => Promise<string>;
363
- updateNetworkPolicy: (opts: {
364
- policy: _vercel_sandbox.NetworkPolicy;
365
- signal?: AbortSignal;
366
- }) => Promise<_vercel_sandbox.NetworkPolicy>;
367
- start: (opts?: {
368
- signal?: AbortSignal;
369
- } | undefined) => Promise<void>;
370
- stop: (opts?: {
371
- signal?: AbortSignal;
372
- } | undefined) => Promise<void>;
373
- kill: (opts: {
374
- commandId: string;
375
- signal?: AbortSignal;
376
- }) => Promise<void>;
377
- snapshot: (opts?: {
378
- signal?: AbortSignal;
379
- } | undefined) => Promise<{
380
- snapshotId: string;
381
- }>;
382
- getStatus: (opts?: {
383
- signal?: AbortSignal;
384
- } | undefined) => Promise<"pending" | "running" | "stopping" | "stopped" | "failed">;
385
- };
386
- /** Phantom property for type inference. Use `typeof myAgent.$UIMessage` to get the typed UIMessage. */
387
- readonly $UIMessage: UIMessage<TMessageMetadata, AgentDataTypes, InferUITools<typeof builtInTools & Tools>>;
388
- }
389
- declare function agent<TMessageMetadata = unknown, Tools extends ToolSet = ToolSet, TSandboxBindings extends SandboxBinding | SandboxBinding[] = SandboxBinding, TContext extends Record<string, unknown> = Record<string, never>>(name: string, options?: AgentOptions<Tools, TSandboxBindings, TContext>): Agent<TMessageMetadata, Tools, TSandboxBindings, TContext>;
45
+ abortSignal: AbortSignal;
46
+ }) => any;
47
+ }): Tool<any, any>;
390
48
 
391
49
  declare const SessionNotFoundError_base: errore.FactoryTaggedErrorClass<"SessionNotFoundError", "Session $id not found", Error>;
392
50
  declare class SessionNotFoundError extends SessionNotFoundError_base {
@@ -407,4 +65,437 @@ declare const MessageNotFoundError_base: errore.FactoryTaggedErrorClass<"Message
407
65
  declare class MessageNotFoundError extends MessageNotFoundError_base {
408
66
  }
409
67
 
410
- export { type AgentDataTypes, type AgentHooks, type AgentOptions, AgentStatus, type AnyAgent, type ApprovalData, type BuiltInToolName, ExecResult, type InferSession, type InferUIMessage, MessageNotFoundError, type NeedsApprovalMap, SandboxBinding, SandboxError, SandboxInstance, SandboxNotFoundError, SandboxSetupFields, type SendInput, type SessionDefaults, SessionNotFoundError, type SessionSendArgs, SkillInput, type StepUsage, StorageConflictError, StorageError, type ToolContext, UploadableFile, type UsageSummary, type WorkflowRunLike, agent, builtinToolNames };
68
+ declare function agentContract<Agent extends AnyAgent>(agent: Agent): {
69
+ "session.get": {
70
+ params: z$1.ZodObject<{
71
+ sessionId: z$1.ZodString;
72
+ }, z$1.core.$strip>;
73
+ response: z$1.ZodObject<{
74
+ messages: z$1.ZodArray<z$1.ZodObject<{
75
+ id: z$1.ZodString;
76
+ role: z$1.ZodEnum<{
77
+ user: "user";
78
+ assistant: "assistant";
79
+ system: "system";
80
+ }>;
81
+ parts: z$1.ZodArray<z$1.ZodType<ai.TextUIPart | ai.ReasoningUIPart | ai.SourceUrlUIPart | ai.FileUIPart | ai.StepStartUIPart | ({
82
+ type: `tool-${string}`;
83
+ } & ai.UIToolInvocation<ai.InferUITool<any>>), unknown, z$1.core.$ZodTypeInternals<ai.TextUIPart | ai.ReasoningUIPart | ai.SourceUrlUIPart | ai.FileUIPart | ai.StepStartUIPart | ({
84
+ type: `tool-${string}`;
85
+ } & ai.UIToolInvocation<ai.InferUITool<any>>), unknown>>>;
86
+ }, z$1.core.$strip>>;
87
+ streamingMessageId: z$1.ZodNullable<z$1.ZodString>;
88
+ usage: z$1.ZodObject<{
89
+ total: z$1.ZodObject<{
90
+ model: z$1.ZodString;
91
+ inputTokens: z$1.ZodNumber;
92
+ outputTokens: z$1.ZodNumber;
93
+ totalTokens: z$1.ZodNumber;
94
+ cacheReadTokens: z$1.ZodNumber;
95
+ cacheWriteTokens: z$1.ZodNumber;
96
+ reasoningTokens: z$1.ZodNumber;
97
+ stepCount: z$1.ZodNumber;
98
+ messageCount: z$1.ZodNumber;
99
+ }, z$1.core.$strip>;
100
+ byMessageId: z$1.ZodRecord<z$1.ZodString, z$1.ZodNullable<z$1.ZodObject<{
101
+ model: z$1.ZodString;
102
+ inputTokens: z$1.ZodNumber;
103
+ outputTokens: z$1.ZodNumber;
104
+ totalTokens: z$1.ZodNumber;
105
+ cacheReadTokens: z$1.ZodNumber;
106
+ cacheWriteTokens: z$1.ZodNumber;
107
+ reasoningTokens: z$1.ZodNumber;
108
+ stepCount: z$1.ZodNumber;
109
+ }, z$1.core.$strip>>>;
110
+ }, z$1.core.$strip>;
111
+ }, z$1.core.$strip>;
112
+ };
113
+ "session.post": {
114
+ params: z$1.ZodObject<{
115
+ sessionId: z$1.ZodString;
116
+ }, z$1.core.$strip>;
117
+ body: z$1.ZodUnion<readonly [z$1.ZodString, z$1.ZodObject<{
118
+ id: z$1.ZodString;
119
+ role: z$1.ZodEnum<{
120
+ user: "user";
121
+ assistant: "assistant";
122
+ system: "system";
123
+ }>;
124
+ parts: z$1.ZodArray<z$1.ZodType<ai.TextUIPart | ai.ReasoningUIPart | ai.SourceUrlUIPart | ai.FileUIPart | ai.StepStartUIPart | ({
125
+ type: `tool-${string}`;
126
+ } & ai.UIToolInvocation<ai.InferUITool<any>>), unknown, z$1.core.$ZodTypeInternals<ai.TextUIPart | ai.ReasoningUIPart | ai.SourceUrlUIPart | ai.FileUIPart | ai.StepStartUIPart | ({
127
+ type: `tool-${string}`;
128
+ } & ai.UIToolInvocation<ai.InferUITool<any>>), unknown>>>;
129
+ }, z$1.core.$strip>]>;
130
+ response: z$1.ZodAny;
131
+ };
132
+ "reconnect.get": {
133
+ params: z$1.ZodObject<{
134
+ sessionId: z$1.ZodString;
135
+ }, z$1.core.$strip>;
136
+ response: z$1.ZodAny;
137
+ };
138
+ "interrupt.post": {
139
+ params: z$1.ZodObject<{
140
+ sessionId: z$1.ZodString;
141
+ }, z$1.core.$strip>;
142
+ body: z$1.ZodOptional<z$1.ZodObject<{
143
+ lastPart: z$1.ZodOptional<z$1.ZodObject<{
144
+ index: z$1.ZodNumber;
145
+ part: z$1.ZodType<ai.TextUIPart | ai.ReasoningUIPart | ai.SourceUrlUIPart | ai.FileUIPart | ai.StepStartUIPart | ({
146
+ type: `tool-${string}`;
147
+ } & ai.UIToolInvocation<ai.InferUITool<any>>), unknown, z$1.core.$ZodTypeInternals<ai.TextUIPart | ai.ReasoningUIPart | ai.SourceUrlUIPart | ai.FileUIPart | ai.StepStartUIPart | ({
148
+ type: `tool-${string}`;
149
+ } & ai.UIToolInvocation<ai.InferUITool<any>>), unknown>>;
150
+ }, z$1.core.$strip>>;
151
+ }, z$1.core.$strip>>;
152
+ response: z$1.ZodObject<{
153
+ success: z$1.ZodBoolean;
154
+ }, z$1.core.$strip>;
155
+ };
156
+ };
157
+ type AgentContract<Agent extends AnyAgent> = ReturnType<typeof agentContract<Agent>>;
158
+ type InferContract<Agent extends AnyAgent> = {
159
+ [K in keyof AgentContract<Agent>]: {
160
+ [K2 in keyof AgentContract<Agent>[K]]: z$1.infer<AgentContract<Agent>[K][K2]>;
161
+ };
162
+ };
163
+ type InferResponse<Agent extends AnyAgent, Key extends keyof AgentContract<Agent>> = InferContract<Agent>[Key]["response"];
164
+
165
+ type BasePath = `/api/agents/[agent]`;
166
+
167
+ type Without<O, K extends keyof O> = Omit<O, K>;
168
+ declare function handleRequest<Agent extends AnyAgent, AgentBasePath extends string = BasePath>(agent: Agent, options?: {
169
+ basePath?: AgentBasePath;
170
+ workflow?: (sessionId: string, ...args: SessionSendArgs<AnyAgent>) => Promise<SendResult>;
171
+ overrides?: {
172
+ [K in keyof AgentContract<Agent>]?: (contract: Without<InferContract<Agent>[K], "response">, next: () => Promise<InferResponse<Agent, K> | Response>) => Promise<InferResponse<Agent, K> | Response>;
173
+ };
174
+ }): elysia__default<`/api/agents/${string}` | AgentBasePath, {
175
+ decorator: {};
176
+ store: {};
177
+ derive: {};
178
+ resolve: {};
179
+ }, {
180
+ typebox: {};
181
+ error: {};
182
+ }, {
183
+ schema: {};
184
+ standaloneSchema: {};
185
+ macro: {};
186
+ macroFn: {};
187
+ parser: {};
188
+ response: {};
189
+ }, ((({
190
+ api: {
191
+ agents: {
192
+ [x: string]: {
193
+ ":sessionId": {
194
+ get: {
195
+ body: unknown;
196
+ params: {
197
+ sessionId: string;
198
+ };
199
+ query: unknown;
200
+ headers: unknown;
201
+ response: {
202
+ 422: {
203
+ type: "validation";
204
+ on: string;
205
+ summary?: string;
206
+ message?: string;
207
+ found?: unknown;
208
+ property?: string;
209
+ expected?: string;
210
+ };
211
+ 200: {
212
+ messages: {
213
+ id: string;
214
+ role: "user" | "assistant" | "system";
215
+ parts: (ai.TextUIPart | ai.ReasoningUIPart | ai.SourceUrlUIPart | ai.FileUIPart | ai.StepStartUIPart | ({
216
+ type: `tool-${string}`;
217
+ } & ai.UIToolInvocation<ai.InferUITool<any>>))[];
218
+ }[];
219
+ streamingMessageId: string | null;
220
+ usage: {
221
+ total: {
222
+ model: string;
223
+ inputTokens: number;
224
+ outputTokens: number;
225
+ totalTokens: number;
226
+ cacheReadTokens: number;
227
+ cacheWriteTokens: number;
228
+ reasoningTokens: number;
229
+ stepCount: number;
230
+ messageCount: number;
231
+ };
232
+ byMessageId: Record<string, {
233
+ model: string;
234
+ inputTokens: number;
235
+ outputTokens: number;
236
+ totalTokens: number;
237
+ cacheReadTokens: number;
238
+ cacheWriteTokens: number;
239
+ reasoningTokens: number;
240
+ stepCount: number;
241
+ } | null>;
242
+ };
243
+ };
244
+ };
245
+ };
246
+ };
247
+ };
248
+ };
249
+ };
250
+ } | ({} & elysia.CreateEden<`${AgentBasePath}/:sessionId`, {
251
+ get: {
252
+ body: unknown;
253
+ params: {
254
+ sessionId: string;
255
+ };
256
+ query: unknown;
257
+ headers: unknown;
258
+ response: {
259
+ 422: {
260
+ type: "validation";
261
+ on: string;
262
+ summary?: string;
263
+ message?: string;
264
+ found?: unknown;
265
+ property?: string;
266
+ expected?: string;
267
+ };
268
+ 200: {
269
+ messages: {
270
+ id: string;
271
+ role: "user" | "assistant" | "system";
272
+ parts: (ai.TextUIPart | ai.ReasoningUIPart | ai.SourceUrlUIPart | ai.FileUIPart | ai.StepStartUIPart | ({
273
+ type: `tool-${string}`;
274
+ } & ai.UIToolInvocation<ai.InferUITool<any>>))[];
275
+ }[];
276
+ streamingMessageId: string | null;
277
+ usage: {
278
+ total: {
279
+ model: string;
280
+ inputTokens: number;
281
+ outputTokens: number;
282
+ totalTokens: number;
283
+ cacheReadTokens: number;
284
+ cacheWriteTokens: number;
285
+ reasoningTokens: number;
286
+ stepCount: number;
287
+ messageCount: number;
288
+ };
289
+ byMessageId: Record<string, {
290
+ model: string;
291
+ inputTokens: number;
292
+ outputTokens: number;
293
+ totalTokens: number;
294
+ cacheReadTokens: number;
295
+ cacheWriteTokens: number;
296
+ reasoningTokens: number;
297
+ stepCount: number;
298
+ } | null>;
299
+ };
300
+ };
301
+ };
302
+ };
303
+ }>)) & ({
304
+ api: {
305
+ agents: {
306
+ [x: string]: {
307
+ ":sessionId": {
308
+ post: {
309
+ body: string | {
310
+ id: string;
311
+ role: "user" | "assistant" | "system";
312
+ parts: (ai.TextUIPart | ai.ReasoningUIPart | ai.SourceUrlUIPart | ai.FileUIPart | ai.StepStartUIPart | ({
313
+ type: `tool-${string}`;
314
+ } & ai.UIToolInvocation<ai.InferUITool<any>>))[];
315
+ };
316
+ params: {
317
+ sessionId: string;
318
+ };
319
+ query: unknown;
320
+ headers: unknown;
321
+ response: {
322
+ 422: {
323
+ type: "validation";
324
+ on: string;
325
+ summary?: string;
326
+ message?: string;
327
+ found?: unknown;
328
+ property?: string;
329
+ expected?: string;
330
+ };
331
+ 200: any;
332
+ };
333
+ };
334
+ };
335
+ };
336
+ };
337
+ };
338
+ } | elysia.CreateEden<`${AgentBasePath}/:sessionId`, {
339
+ post: {
340
+ body: string | {
341
+ id: string;
342
+ role: "user" | "assistant" | "system";
343
+ parts: (ai.TextUIPart | ai.ReasoningUIPart | ai.SourceUrlUIPart | ai.FileUIPart | ai.StepStartUIPart | ({
344
+ type: `tool-${string}`;
345
+ } & ai.UIToolInvocation<ai.InferUITool<any>>))[];
346
+ };
347
+ params: {
348
+ sessionId: string;
349
+ };
350
+ query: unknown;
351
+ headers: unknown;
352
+ response: {
353
+ 422: {
354
+ type: "validation";
355
+ on: string;
356
+ summary?: string;
357
+ message?: string;
358
+ found?: unknown;
359
+ property?: string;
360
+ expected?: string;
361
+ };
362
+ 200: any;
363
+ };
364
+ };
365
+ }>)) & ({
366
+ api: {
367
+ agents: {
368
+ [x: string]: {
369
+ ":sessionId": {
370
+ reconnect: {
371
+ get: {
372
+ body: unknown;
373
+ params: {
374
+ sessionId: string;
375
+ };
376
+ query: unknown;
377
+ headers: unknown;
378
+ response: {
379
+ 422: {
380
+ type: "validation";
381
+ on: string;
382
+ summary?: string;
383
+ message?: string;
384
+ found?: unknown;
385
+ property?: string;
386
+ expected?: string;
387
+ };
388
+ 200: any;
389
+ };
390
+ };
391
+ };
392
+ };
393
+ };
394
+ };
395
+ };
396
+ } | elysia.CreateEden<`${AgentBasePath}/:sessionId/reconnect`, {
397
+ get: {
398
+ body: unknown;
399
+ params: {
400
+ sessionId: string;
401
+ };
402
+ query: unknown;
403
+ headers: unknown;
404
+ response: {
405
+ 422: {
406
+ type: "validation";
407
+ on: string;
408
+ summary?: string;
409
+ message?: string;
410
+ found?: unknown;
411
+ property?: string;
412
+ expected?: string;
413
+ };
414
+ 200: any;
415
+ };
416
+ };
417
+ }>)) & ({
418
+ api: {
419
+ agents: {
420
+ [x: string]: {
421
+ ":sessionId": {
422
+ interrupt: {
423
+ post: {
424
+ body: {
425
+ lastPart?: {
426
+ index: number;
427
+ part: ai.TextUIPart | ai.ReasoningUIPart | ai.SourceUrlUIPart | ai.FileUIPart | ai.StepStartUIPart | ({
428
+ type: `tool-${string}`;
429
+ } & ai.UIToolInvocation<ai.InferUITool<any>>);
430
+ } | undefined;
431
+ } | undefined;
432
+ params: {
433
+ sessionId: string;
434
+ };
435
+ query: unknown;
436
+ headers: unknown;
437
+ response: {
438
+ 422: {
439
+ type: "validation";
440
+ on: string;
441
+ summary?: string;
442
+ message?: string;
443
+ found?: unknown;
444
+ property?: string;
445
+ expected?: string;
446
+ };
447
+ 200: {
448
+ success: boolean;
449
+ };
450
+ };
451
+ };
452
+ };
453
+ };
454
+ };
455
+ };
456
+ };
457
+ } | elysia.CreateEden<`${AgentBasePath}/:sessionId/interrupt`, {
458
+ post: {
459
+ body: {
460
+ lastPart?: {
461
+ index: number;
462
+ part: ai.TextUIPart | ai.ReasoningUIPart | ai.SourceUrlUIPart | ai.FileUIPart | ai.StepStartUIPart | ({
463
+ type: `tool-${string}`;
464
+ } & ai.UIToolInvocation<ai.InferUITool<any>>);
465
+ } | undefined;
466
+ } | undefined;
467
+ params: {
468
+ sessionId: string;
469
+ };
470
+ query: unknown;
471
+ headers: unknown;
472
+ response: {
473
+ 422: {
474
+ type: "validation";
475
+ on: string;
476
+ summary?: string;
477
+ message?: string;
478
+ found?: unknown;
479
+ property?: string;
480
+ expected?: string;
481
+ };
482
+ 200: {
483
+ success: boolean;
484
+ };
485
+ };
486
+ };
487
+ }>), {
488
+ derive: {};
489
+ resolve: {};
490
+ schema: {};
491
+ standaloneSchema: {};
492
+ response: {};
493
+ }, {
494
+ derive: {};
495
+ resolve: {};
496
+ schema: {};
497
+ standaloneSchema: {};
498
+ response: {};
499
+ }>;
500
+
501
+ export { AnyAgent, MessageNotFoundError, SandboxError, SandboxNotFoundError, SessionNotFoundError, SessionSendArgs, StorageConflictError, StorageError, ToolContext, handleRequest, tool };