experimental-agent 0.3.0 → 0.5.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 (40) hide show
  1. package/README.md +61 -0
  2. package/dist/{adapter-BigchkkI.d.mts → adapter-Cl735Kp4.d.mts} +37 -39
  3. package/dist/{adapter-BigchkkI.d.ts → adapter-Cl735Kp4.d.ts} +37 -39
  4. package/dist/{chunk-ZUFJJYC4.mjs → chunk-2Y7EZPIP.mjs} +3 -2
  5. package/dist/{chunk-RT72C52I.mjs → chunk-6MS4CGEZ.mjs} +3 -2
  6. package/dist/{chunk-ELWIUJUK.mjs → chunk-AB2JYY6A.mjs} +6 -3
  7. package/dist/chunk-I5DCB7RU.mjs +346 -0
  8. package/dist/chunk-NOW6XL5E.mjs +310 -0
  9. package/dist/{docker-QPCLWLYR.mjs → docker-OBUQX5ZI.mjs} +1 -1
  10. package/dist/entry-Bs17QEiq.d.mts +45 -0
  11. package/dist/entry-QNyd4S1s.d.ts +45 -0
  12. package/dist/index.d.mts +162 -85
  13. package/dist/index.d.ts +162 -85
  14. package/dist/index.js +636 -161
  15. package/dist/index.mjs +469 -153
  16. package/dist/lifecycle-workflow-steps.d.mts +2 -2
  17. package/dist/lifecycle-workflow-steps.d.ts +2 -2
  18. package/dist/lifecycle-workflow.d.mts +2 -2
  19. package/dist/lifecycle-workflow.d.ts +2 -2
  20. package/dist/{local-KJ3BSIFJ.mjs → local-4C3V4EFS.mjs} +1 -1
  21. package/dist/next/loader.js +6 -3
  22. package/dist/next/loader.mjs +1 -1
  23. package/dist/next.js +10 -4
  24. package/dist/next.mjs +6 -3
  25. package/dist/sandbox.d.mts +3 -3
  26. package/dist/sandbox.d.ts +3 -3
  27. package/dist/sandbox.js +15 -5
  28. package/dist/sandbox.mjs +3 -3
  29. package/dist/{steps-BnkRQKlc.d.ts → steps-XA4wG8W3.d.ts} +4 -1
  30. package/dist/{steps-u-mGDbP_.d.mts → steps-eTytqxQb.d.mts} +4 -1
  31. package/dist/storage.d.mts +9 -3
  32. package/dist/storage.d.ts +9 -3
  33. package/dist/storage.js +161 -9
  34. package/dist/storage.mjs +5 -1
  35. package/dist/{vercel-QZ6INPMV.mjs → vercel-6ORAC625.mjs} +1 -1
  36. package/package.json +5 -2
  37. package/dist/chunk-BFFNCESS.mjs +0 -302
  38. package/dist/chunk-DOD4MC5D.mjs +0 -196
  39. package/dist/entry-BmQ8FO-5.d.ts +0 -36
  40. package/dist/entry-CZd9aAwn.d.mts +0 -36
package/dist/index.d.ts CHANGED
@@ -1,20 +1,16 @@
1
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-BnkRQKlc.js';
3
- export { d as SandboxAgentRef } from './steps-BnkRQKlc.js';
4
- import { L as LocalBindingConfig, a as LocalBindingMetadata, V as VercelBindingConfig, b as VercelBindingMetadata, D as DockerBindingConfig, c as DockerBindingMetadata } from './entry-BmQ8FO-5.js';
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-XA4wG8W3.js';
3
+ export { d as SandboxAgentRef } from './steps-XA4wG8W3.js';
4
+ import { L as LocalBindingConfig, a as LocalBindingMetadata, V as VercelBindingConfig, b as VercelBindingMetadata, D as DockerBindingConfig, c as DockerBindingMetadata } from './entry-QNyd4S1s.js';
5
+ import { G as GenerationOptions, j as StorageInput, f as Storage, c as Session } from './adapter-Cl735Kp4.js';
5
6
  import * as ai from 'ai';
6
- import { InferToolInput, ModelMessage, ToolSet, UIMessage, InferUITools, GatewayModelId } from 'ai';
7
- import { b as Session, e as Storage, i as StorageInput } from './adapter-BigchkkI.js';
7
+ import { ToolSet, InferToolInput, ModelMessage, UIMessage, InferUITools, GatewayModelId } from 'ai';
8
8
  import { z } from 'zod';
9
9
  import { WORKFLOW_SERIALIZE, WORKFLOW_DESERIALIZE } from '@workflow/serde';
10
10
  import * as errore from 'errore';
11
11
 
12
12
  type BuiltInBindings = SandboxBinding<"local", LocalBindingConfig, LocalBindingMetadata> | SandboxBinding<"vercel", VercelBindingConfig, VercelBindingMetadata> | SandboxBinding<"docker", DockerBindingConfig, DockerBindingMetadata>;
13
13
 
14
- type SandboxOptions = {
15
- id?: string;
16
- };
17
-
18
14
  type SetupCommonFields = Partial<SandboxSetupFields> & {
19
15
  cwd?: string;
20
16
  run?: (sandbox: SandboxInstance) => Promise<void>;
@@ -32,6 +28,10 @@ type SetupResult = {
32
28
  done: Promise<SandboxInstance>;
33
29
  };
34
30
 
31
+ type SandboxOptions = {
32
+ id?: string;
33
+ };
34
+
35
35
  type StepUsage = {
36
36
  stepIndex: number;
37
37
  model: string;
@@ -59,22 +59,59 @@ type SessionUsage = {
59
59
  byMessageId: Record<string, UsageSummary | null>;
60
60
  };
61
61
 
62
- type StreamOptions = {
63
- messageId?: string;
64
- startIndex?: number;
62
+ type SkillSourceType = "sandbox" | "host" | "git" | "inline";
63
+ type SandboxSkillInput = {
64
+ type: "sandbox";
65
+ path: string;
65
66
  };
66
- type WorkflowRunLike = {
67
- getReadable(options?: {
68
- startIndex?: number;
69
- }): ReadableStream;
67
+ type HostSkillInput = {
68
+ type: "host";
69
+ path: string;
70
70
  };
71
-
72
- type ToolContext<TContext = Record<string, unknown>> = {
73
- session: Session;
74
- sandbox: SandboxInstance;
75
- storage: Storage;
76
- context: TContext;
71
+ type GitSkillInput = {
72
+ type: "git";
73
+ repo: string;
74
+ ref?: string;
75
+ path?: string;
76
+ /**
77
+ * Skill directory name under `path`.
78
+ */
79
+ name?: string;
80
+ };
81
+ type InlineSkillInput = {
82
+ type: "inline";
83
+ name: string;
84
+ description: string;
85
+ instructions: string;
86
+ };
87
+ type SkillInput = SandboxSkillInput | HostSkillInput | GitSkillInput | InlineSkillInput;
88
+ type SandboxSkillEntry = {
89
+ type: "sandbox";
90
+ path: string;
91
+ };
92
+ type HostSkillEntry = {
93
+ type: "host";
94
+ path: string;
95
+ };
96
+ type GitSkillEntry = {
97
+ type: "git";
98
+ repo: string;
99
+ ref?: string;
100
+ path?: string;
101
+ /**
102
+ * Skill directory name under `path`.
103
+ */
104
+ name?: string;
77
105
  };
106
+ type InlineSkillEntry = {
107
+ type: "inline";
108
+ name: string;
109
+ description: string;
110
+ instructions: string;
111
+ };
112
+ type SkillEntry = SandboxSkillEntry | HostSkillEntry | GitSkillEntry | InlineSkillEntry;
113
+
114
+ type ToolContext<TContext = Record<string, unknown>, Tools extends ToolSet = ToolSet> = ResolvableArgs<TContext, Tools>;
78
115
  declare const builtInTools: {
79
116
  Read: ai.Tool<{
80
117
  label: string;
@@ -231,15 +268,41 @@ type NeedsApprovalMap<Tools> = {
231
268
  };
232
269
  type InferUIMessage<A> = A extends {
233
270
  tools: infer T extends ToolSet;
271
+ $UIMessage: UIMessage<infer M>;
272
+ } ? UIMessage<M, AgentDataTypes, InferUITools<T>> : A extends {
273
+ tools: infer T extends ToolSet;
234
274
  } ? UIMessage<unknown, AgentDataTypes, InferUITools<T>> : UIMessage<unknown, AgentDataTypes>;
235
- type TypedUIMessage<Tools extends ToolSet = ToolSet> = UIMessage<unknown, AgentDataTypes, InferUITools<Tools>>;
275
+ type TypedUIMessage<TMessageMetadata = unknown, Tools extends ToolSet = ToolSet> = UIMessage<TMessageMetadata, AgentDataTypes, InferUITools<Tools>>;
236
276
 
237
- type UpdateOptions<Tools extends ToolSet> = Partial<Omit<Session, "id" | "activeTools" | "model"> & {
238
- model?: GatewayModelId;
239
- activeTools?: (Extract<keyof Tools, string> | BuiltInToolName)[];
240
- }>;
277
+ type StreamOptions = {
278
+ messageId?: string;
279
+ startIndex?: number;
280
+ };
281
+ type WorkflowRunLike = {
282
+ getReadable(options?: {
283
+ startIndex?: number;
284
+ }): ReadableStream;
285
+ };
241
286
 
242
- type SendOptions<Tools extends ToolSet, TContext> = {
287
+ type ApprovalData = {
288
+ approvalId: string;
289
+ approved: boolean;
290
+ reason?: string;
291
+ };
292
+ type MessageData<Tools extends ToolSet> = UIMessage | {
293
+ role?: TypedUIMessage<unknown, Tools>["role"];
294
+ parts: TypedUIMessage<unknown, Tools>["parts"];
295
+ metadata?: Record<string, unknown> | null;
296
+ id?: string;
297
+ };
298
+ type SendInput<Tools extends ToolSet> = string | MessageData<Tools> | {
299
+ type: "message";
300
+ message: MessageData<Tools>;
301
+ } | {
302
+ type: "approval";
303
+ approval: ApprovalData;
304
+ };
305
+ type SendOptions<TContext> = {
243
306
  interruptIfStreaming?: boolean | {
244
307
  lastPart: {
245
308
  index: number;
@@ -248,7 +311,8 @@ type SendOptions<Tools extends ToolSet, TContext> = {
248
311
  };
249
312
  context?: TContext;
250
313
  abortSignal?: AbortSignal;
251
- } & UpdateOptions<Tools>;
314
+ sandboxId?: string;
315
+ };
252
316
  type SendResult = {
253
317
  assistantMessageId: string;
254
318
  done: true | Promise<true>;
@@ -261,14 +325,21 @@ type InterruptOptions = {
261
325
  };
262
326
  };
263
327
 
264
- type SessionDefaults<Tools extends ToolSet = ToolSet> = {
265
- model?: GatewayModelId;
266
- system?: string;
267
- generation?: Session["generation"];
268
- activeTools?: (Extract<keyof Tools, string> | BuiltInToolName)[];
269
- skillsDir?: string | string[];
328
+ type ResolvableArgs<TContext = Record<string, unknown>, Tools extends ToolSet = ToolSet> = {
329
+ context: TContext;
330
+ sessionId: string;
331
+ sandbox: SandboxInstance;
332
+ messages: UIMessage<unknown, AgentDataTypes, InferUITools<Tools>>[];
270
333
  };
271
- type AgentOptions<Tools extends ToolSet = any, TSandboxBindings extends SandboxBinding | SandboxBinding[] = SandboxBinding, TContext extends Record<string, unknown> = Record<string, never>> = SessionDefaults<Tools> & {
334
+ type Resolvable<T, TContext = Record<string, unknown>, Tools extends ToolSet = ToolSet> = T | ((args: ResolvableArgs<TContext, Tools>) => T | Promise<T>);
335
+ type SessionDefaults<Tools extends ToolSet = ToolSet, TContext extends Record<string, unknown> = Record<string, unknown>> = {
336
+ model?: Resolvable<GatewayModelId | undefined, TContext, Tools>;
337
+ system?: Resolvable<string | string[] | undefined, TContext, Tools>;
338
+ generation?: Resolvable<GenerationOptions | undefined, TContext, Tools>;
339
+ activeTools?: Resolvable<readonly (Extract<keyof Tools, string> | BuiltInToolName)[] | undefined, TContext, Tools>;
340
+ skills?: Resolvable<SkillInput[] | undefined, TContext, Tools>;
341
+ };
342
+ type AgentOptions<Tools extends ToolSet = any, TSandboxBindings extends SandboxBinding | SandboxBinding[] = SandboxBinding, TContext extends Record<string, unknown> = Record<string, never>> = SessionDefaults<Tools, TContext> & {
272
343
  storage?: StorageInput;
273
344
  sandbox?: TSandboxBindings;
274
345
  tools?: Tools;
@@ -277,10 +348,10 @@ type AgentOptions<Tools extends ToolSet = any, TSandboxBindings extends SandboxB
277
348
  contextSchema?: z.ZodType<TContext>;
278
349
  logging?: Omit<LoggingConfig, "name">;
279
350
  };
280
- type AnyAgent = Agent<any, any, any>;
351
+ type AnyAgent = Agent<any, any, any, any>;
281
352
  type InferSession<Agent extends AnyAgent = AnyAgent> = ReturnType<Agent["session"]>;
282
353
  type SessionSendArgs<Agent extends AnyAgent, Session extends InferSession<Agent> = InferSession<Agent>> = Parameters<Session["send"]>;
283
- declare class Agent<Tools extends ToolSet, TSandboxBindings extends SandboxBinding | SandboxBinding[] = SandboxBinding, TContext extends Record<string, unknown> = Record<string, never>> {
354
+ declare class Agent<TMessageMetadata = unknown, Tools extends ToolSet = ToolSet, TSandboxBindings extends SandboxBinding | SandboxBinding[] = SandboxBinding, TContext extends Record<string, unknown> = Record<string, never>> {
284
355
  readonly name: string;
285
356
  options: AgentOptions<Tools, TSandboxBindings, TContext>;
286
357
  constructor(name: string, options?: AgentOptions<Tools, TSandboxBindings, TContext>);
@@ -290,53 +361,16 @@ declare class Agent<Tools extends ToolSet, TSandboxBindings extends SandboxBindi
290
361
  static [WORKFLOW_DESERIALIZE](data: {
291
362
  name: string;
292
363
  }): AnyAgent;
293
- private _storageWarned;
364
+ private _resolvedStorage;
294
365
  get storage(): Storage;
295
366
  get tools(): typeof builtInTools & Tools;
296
- get sessionDefaults(): SessionDefaults;
297
367
  get hooks(): AgentHooks;
298
368
  readonly session: (id?: string | {
299
369
  id?: string;
300
370
  } | undefined) => {
301
371
  id: string;
302
- send: (input: (string | {
303
- type: "approval";
304
- approval: {
305
- approvalId: string;
306
- approved: boolean;
307
- reason?: string;
308
- };
309
- } | (UIMessage<unknown, ai.UIDataTypes, ai.UITools> | {
310
- role?: TypedUIMessage<Tools_1>["role"];
311
- parts: ai.UIMessagePart<AgentDataTypes, InferUITools<Tools>>[];
312
- id?: string;
313
- }) | {
314
- type: "message";
315
- message: UIMessage<unknown, ai.UIDataTypes, ai.UITools> | {
316
- role?: TypedUIMessage<Tools_1>["role"];
317
- parts: ai.UIMessagePart<AgentDataTypes, InferUITools<Tools>>[];
318
- id?: string;
319
- };
320
- }) | (string | {
321
- type: "approval";
322
- approval: {
323
- approvalId: string;
324
- approved: boolean;
325
- reason?: string;
326
- };
327
- } | (UIMessage<unknown, ai.UIDataTypes, ai.UITools> | {
328
- role?: TypedUIMessage<Tools_1>["role"];
329
- parts: ai.UIMessagePart<AgentDataTypes, InferUITools<Tools>>[];
330
- id?: string;
331
- }) | {
332
- type: "message";
333
- message: UIMessage<unknown, ai.UIDataTypes, ai.UITools> | {
334
- role?: TypedUIMessage<Tools_1>["role"];
335
- parts: ai.UIMessagePart<AgentDataTypes, InferUITools<Tools>>[];
336
- id?: string;
337
- };
338
- })[], opts?: SendOptions<Tools, TContext> | undefined) => Promise<SendResult>;
339
- stream: (runOrOpts?: WorkflowRunLike | StreamOptions | undefined) => Promise<ReadableStream<ai.UIMessageChunk>>;
372
+ send: (input: SendInput<Tools> | SendInput<Tools>[], opts?: SendOptions<TContext> | undefined) => Promise<SendResult>;
373
+ stream: (runOrOpts?: StreamOptions | WorkflowRunLike | undefined) => Promise<ReadableStream<ai.UIMessageChunk>>;
340
374
  history: () => Promise<{
341
375
  messages: UIMessage<unknown, AgentDataTypes, InferUITools<Tools>>[];
342
376
  streamingMessageId: string | null;
@@ -344,10 +378,53 @@ declare class Agent<Tools extends ToolSet, TSandboxBindings extends SandboxBindi
344
378
  }>;
345
379
  interrupt: (opts?: InterruptOptions | undefined) => Promise<void>;
346
380
  usage: () => Promise<SessionUsage>;
347
- update: (opts: Partial<Omit<Session, "id" | "model" | "activeTools"> & {
348
- model?: GatewayModelId;
349
- activeTools?: ("Read" | "Grep" | "List" | "Write" | "Edit" | "Bash" | "Skill" | "JavaScript" | Extract<keyof Tools, string>)[] | undefined;
350
- }>) => Promise<void>;
381
+ update: (opts: Partial<Omit<Session, "id" | "createdAt" | "updatedAt">>) => Promise<void>;
382
+ sandbox: {
383
+ setup: (opts?: SetupOpts<TSandboxBindings> | undefined) => Promise<SetupResult>;
384
+ exec: (opts: {
385
+ command: string;
386
+ args?: string[];
387
+ cwd?: string;
388
+ env?: Record<string, string>;
389
+ sudo?: boolean;
390
+ signal?: AbortSignal;
391
+ }) => Promise<ExecResult>;
392
+ stop: (opts?: {
393
+ signal?: AbortSignal;
394
+ } | undefined) => Promise<void>;
395
+ snapshot: (opts?: {
396
+ signal?: AbortSignal;
397
+ } | undefined) => Promise<{
398
+ snapshotId: string;
399
+ }>;
400
+ getDomain: (opts: {
401
+ port: number;
402
+ signal?: AbortSignal;
403
+ }) => Promise<string>;
404
+ getStatus: (opts?: {
405
+ signal?: AbortSignal;
406
+ } | undefined) => Promise<"pending" | "running" | "stopping" | "stopped" | "failed">;
407
+ kill: (opts: {
408
+ commandId: string;
409
+ signal?: AbortSignal;
410
+ }) => Promise<void>;
411
+ readFile: (opts: {
412
+ path: string;
413
+ signal?: AbortSignal;
414
+ }) => Promise<Buffer | null>;
415
+ start: (opts?: {
416
+ signal?: AbortSignal;
417
+ } | undefined) => Promise<void>;
418
+ updateNetworkPolicy: (opts: {
419
+ policy: _vercel_sandbox.NetworkPolicy;
420
+ signal?: AbortSignal;
421
+ }) => Promise<_vercel_sandbox.NetworkPolicy>;
422
+ writeFiles: (opts: {
423
+ files: UploadableFile[];
424
+ destPath: string;
425
+ signal?: AbortSignal;
426
+ }) => Promise<void>;
427
+ };
351
428
  };
352
429
  readonly sandbox: (id?: string | SandboxOptions | undefined) => {
353
430
  id: string;
@@ -398,9 +475,9 @@ declare class Agent<Tools extends ToolSet, TSandboxBindings extends SandboxBindi
398
475
  } | undefined) => Promise<"pending" | "running" | "stopping" | "stopped" | "failed">;
399
476
  };
400
477
  /** Phantom property for type inference. Use `typeof myAgent.$UIMessage` to get the typed UIMessage. */
401
- readonly $UIMessage: UIMessage<unknown, AgentDataTypes, InferUITools<typeof builtInTools & Tools>>;
478
+ readonly $UIMessage: UIMessage<TMessageMetadata, AgentDataTypes, InferUITools<typeof builtInTools & Tools>>;
402
479
  }
403
- declare function agent<Tools extends ToolSet, TSandboxBindings extends SandboxBinding | SandboxBinding[] = SandboxBinding, TContext extends Record<string, unknown> = Record<string, never>>(name: string, options?: AgentOptions<Tools, TSandboxBindings, TContext>): Agent<Tools, TSandboxBindings, TContext>;
480
+ 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>;
404
481
 
405
482
  declare const SessionNotFoundError_base: errore.FactoryTaggedErrorClass<"SessionNotFoundError", "Session $id not found", Error>;
406
483
  declare class SessionNotFoundError extends SessionNotFoundError_base {
@@ -421,4 +498,4 @@ declare const MessageNotFoundError_base: errore.FactoryTaggedErrorClass<"Message
421
498
  declare class MessageNotFoundError extends MessageNotFoundError_base {
422
499
  }
423
500
 
424
- export { type AgentDataTypes, type AgentHooks, type AgentOptions, AgentStatus, type AnyAgent, type BuiltInToolName, ExecResult, type InferSession, type InferUIMessage, MessageNotFoundError, type NeedsApprovalMap, SandboxBinding, SandboxError, SandboxInstance, SandboxNotFoundError, SandboxSetupFields, type SessionDefaults, SessionNotFoundError, type SessionSendArgs, type StepUsage, StorageConflictError, StorageError, type ToolContext, UploadableFile, type UsageSummary, type WorkflowRunLike, agent, builtinToolNames };
501
+ export { type AgentDataTypes, type AgentHooks, type AgentOptions, AgentStatus, type AnyAgent, type ApprovalData, type BuiltInToolName, ExecResult, type GitSkillEntry, type GitSkillInput, type HostSkillEntry, type HostSkillInput, type InferSession, type InferUIMessage, type InlineSkillEntry, type InlineSkillInput, MessageNotFoundError, type NeedsApprovalMap, type Resolvable, type ResolvableArgs, SandboxBinding, SandboxError, SandboxInstance, SandboxNotFoundError, SandboxSetupFields, type SandboxSkillEntry, type SandboxSkillInput, type SendInput, type SessionDefaults, SessionNotFoundError, type SessionSendArgs, type SkillEntry, type SkillInput, type SkillSourceType, type StepUsage, StorageConflictError, StorageError, type ToolContext, UploadableFile, type UsageSummary, type WorkflowRunLike, agent, builtinToolNames };