agents 0.10.1 → 0.11.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 (55) hide show
  1. package/dist/browser/ai.d.ts +31 -0
  2. package/dist/browser/ai.js +54 -0
  3. package/dist/browser/ai.js.map +1 -0
  4. package/dist/browser/index.d.ts +51 -0
  5. package/dist/browser/index.js +2 -0
  6. package/dist/browser/tanstack-ai.d.ts +31 -0
  7. package/dist/browser/tanstack-ai.js +51 -0
  8. package/dist/browser/tanstack-ai.js.map +1 -0
  9. package/dist/chat/index.js +24 -4
  10. package/dist/chat/index.js.map +1 -1
  11. package/dist/classPrivateFieldGet2-BVdP0e3Z.js +27 -0
  12. package/dist/client.d.ts +2 -2
  13. package/dist/{compaction-helpers-BPE1_ziA.js → compaction-helpers-C_cN3z55.js} +1 -1
  14. package/dist/{compaction-helpers-BPE1_ziA.js.map → compaction-helpers-C_cN3z55.js.map} +1 -1
  15. package/dist/{compaction-helpers-BdQbZiML.d.ts → compaction-helpers-YzCLvunJ.d.ts} +1 -1
  16. package/dist/{do-oauth-client-provider-31gqR33H.d.ts → do-oauth-client-provider-C38aWbFV.d.ts} +1 -1
  17. package/dist/{email-Cql45SKP.d.ts → email-X72-zjuq.d.ts} +1 -1
  18. package/dist/email.d.ts +2 -2
  19. package/dist/email.js +1 -2
  20. package/dist/email.js.map +1 -1
  21. package/dist/experimental/memory/session/index.d.ts +1 -1
  22. package/dist/experimental/memory/session/index.js +1 -1
  23. package/dist/experimental/memory/utils/index.d.ts +1 -1
  24. package/dist/experimental/memory/utils/index.js +1 -1
  25. package/dist/{index-D2lfljd3.d.ts → index-CrOzHA2T.d.ts} +8 -8
  26. package/dist/{index-DDSX-g7W.d.ts → index-Cubsi2Qv.d.ts} +1 -1
  27. package/dist/index.d.ts +6 -6
  28. package/dist/index.js +3188 -2
  29. package/dist/index.js.map +1 -0
  30. package/dist/{internal_context-DuQZFvWI.d.ts → internal_context-BvuGZieY.d.ts} +1 -1
  31. package/dist/internal_context.d.ts +1 -1
  32. package/dist/mcp/client.d.ts +1 -1
  33. package/dist/mcp/do-oauth-client-provider.d.ts +1 -1
  34. package/dist/mcp/index.d.ts +1 -1
  35. package/dist/mcp/index.js +2 -3
  36. package/dist/mcp/index.js.map +1 -1
  37. package/dist/observability/index.d.ts +1 -1
  38. package/dist/react.d.ts +1 -1
  39. package/dist/react.js.map +1 -1
  40. package/dist/{retries-B_CN5KM9.d.ts → retries-JlwH9mnV.d.ts} +1 -1
  41. package/dist/retries.d.ts +1 -1
  42. package/dist/{serializable-DGdO8CDh.d.ts → serializable-Bg8ARWlN.d.ts} +1 -1
  43. package/dist/serializable.d.ts +1 -1
  44. package/dist/shared-BUHZFGTk.d.ts +34 -0
  45. package/dist/shared-BtPEbm_U.js +437 -0
  46. package/dist/shared-BtPEbm_U.js.map +1 -0
  47. package/dist/{types-B9A8AU7B.d.ts → types-DAHCZC_W.d.ts} +1 -1
  48. package/dist/types.d.ts +1 -1
  49. package/dist/{workflow-types-XmOkuI7A.d.ts → workflow-types-DHs0L0KP.d.ts} +1 -1
  50. package/dist/workflow-types.d.ts +1 -1
  51. package/dist/workflows.d.ts +2 -2
  52. package/dist/workflows.js +1 -1
  53. package/package.json +30 -13
  54. package/dist/src-B8NZxxsO.js +0 -3217
  55. package/dist/src-B8NZxxsO.js.map +0 -1
@@ -0,0 +1,31 @@
1
+ import { t as BrowserToolsOptions } from "../shared-BUHZFGTk.js";
2
+ import { ToolSet } from "ai";
3
+
4
+ //#region src/browser/ai.d.ts
5
+ /**
6
+ * Create AI SDK tools for browser automation via CDP code mode.
7
+ *
8
+ * Returns a `ToolSet` with `search` (query the CDP spec) and
9
+ * `execute` (run CDP commands against a live browser).
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * import { createBrowserTools } from "agents/browser/ai";
14
+ * import { generateText } from "ai";
15
+ *
16
+ * const browserTools = createBrowserTools({
17
+ * browser: env.BROWSER,
18
+ * loader: env.LOADER,
19
+ * });
20
+ *
21
+ * const result = await generateText({
22
+ * model,
23
+ * tools: { ...browserTools, ...otherTools },
24
+ * messages,
25
+ * });
26
+ * ```
27
+ */
28
+ declare function createBrowserTools(options: BrowserToolsOptions): ToolSet;
29
+ //#endregion
30
+ export { type BrowserToolsOptions, createBrowserTools };
31
+ //# sourceMappingURL=ai.d.ts.map
@@ -0,0 +1,54 @@
1
+ import { n as SEARCH_DESCRIPTION, r as createBrowserToolHandlers, t as EXECUTE_DESCRIPTION } from "../shared-BtPEbm_U.js";
2
+ import { z } from "zod";
3
+ import { tool } from "ai";
4
+ //#region src/browser/ai.ts
5
+ /**
6
+ * Create AI SDK tools for browser automation via CDP code mode.
7
+ *
8
+ * Returns a `ToolSet` with `search` (query the CDP spec) and
9
+ * `execute` (run CDP commands against a live browser).
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * import { createBrowserTools } from "agents/browser/ai";
14
+ * import { generateText } from "ai";
15
+ *
16
+ * const browserTools = createBrowserTools({
17
+ * browser: env.BROWSER,
18
+ * loader: env.LOADER,
19
+ * });
20
+ *
21
+ * const result = await generateText({
22
+ * model,
23
+ * tools: { ...browserTools, ...otherTools },
24
+ * messages,
25
+ * });
26
+ * ```
27
+ */
28
+ function createBrowserTools(options) {
29
+ const handlers = createBrowserToolHandlers(options);
30
+ return {
31
+ browser_search: tool({
32
+ description: SEARCH_DESCRIPTION,
33
+ inputSchema: z.object({ code: z.string().describe("JavaScript async arrow function that queries the CDP spec") }),
34
+ execute: async ({ code }) => {
35
+ const result = await handlers.search(code);
36
+ if (result.isError) throw new Error(result.text);
37
+ return result.text;
38
+ }
39
+ }),
40
+ browser_execute: tool({
41
+ description: EXECUTE_DESCRIPTION,
42
+ inputSchema: z.object({ code: z.string().describe("JavaScript async arrow function that uses the cdp helper") }),
43
+ execute: async ({ code }) => {
44
+ const result = await handlers.execute(code);
45
+ if (result.isError) throw new Error(result.text);
46
+ return result.text;
47
+ }
48
+ })
49
+ };
50
+ }
51
+ //#endregion
52
+ export { createBrowserTools };
53
+
54
+ //# sourceMappingURL=ai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai.js","names":[],"sources":["../../src/browser/ai.ts"],"sourcesContent":["import { tool } from \"ai\";\nimport type { ToolSet } from \"ai\";\nimport { z } from \"zod\";\nimport {\n createBrowserToolHandlers,\n SEARCH_DESCRIPTION,\n EXECUTE_DESCRIPTION,\n type BrowserToolsOptions\n} from \"./shared\";\n\nexport type { BrowserToolsOptions } from \"./shared\";\n\n/**\n * Create AI SDK tools for browser automation via CDP code mode.\n *\n * Returns a `ToolSet` with `search` (query the CDP spec) and\n * `execute` (run CDP commands against a live browser).\n *\n * @example\n * ```ts\n * import { createBrowserTools } from \"agents/browser/ai\";\n * import { generateText } from \"ai\";\n *\n * const browserTools = createBrowserTools({\n * browser: env.BROWSER,\n * loader: env.LOADER,\n * });\n *\n * const result = await generateText({\n * model,\n * tools: { ...browserTools, ...otherTools },\n * messages,\n * });\n * ```\n */\nexport function createBrowserTools(options: BrowserToolsOptions): ToolSet {\n const handlers = createBrowserToolHandlers(options);\n\n return {\n browser_search: tool({\n description: SEARCH_DESCRIPTION,\n inputSchema: z.object({\n code: z\n .string()\n .describe(\"JavaScript async arrow function that queries the CDP spec\")\n }),\n execute: async ({ code }) => {\n const result = await handlers.search(code);\n if (result.isError) {\n throw new Error(result.text);\n }\n return result.text;\n }\n }),\n\n browser_execute: tool({\n description: EXECUTE_DESCRIPTION,\n inputSchema: z.object({\n code: z\n .string()\n .describe(\"JavaScript async arrow function that uses the cdp helper\")\n }),\n execute: async ({ code }) => {\n const result = await handlers.execute(code);\n if (result.isError) {\n throw new Error(result.text);\n }\n return result.text;\n }\n })\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCA,SAAgB,mBAAmB,SAAuC;CACxE,MAAM,WAAW,0BAA0B,QAAQ;AAEnD,QAAO;EACL,gBAAgB,KAAK;GACnB,aAAa;GACb,aAAa,EAAE,OAAO,EACpB,MAAM,EACH,QAAQ,CACR,SAAS,4DAA4D,EACzE,CAAC;GACF,SAAS,OAAO,EAAE,WAAW;IAC3B,MAAM,SAAS,MAAM,SAAS,OAAO,KAAK;AAC1C,QAAI,OAAO,QACT,OAAM,IAAI,MAAM,OAAO,KAAK;AAE9B,WAAO,OAAO;;GAEjB,CAAC;EAEF,iBAAiB,KAAK;GACpB,aAAa;GACb,aAAa,EAAE,OAAO,EACpB,MAAM,EACH,QAAQ,CACR,SAAS,2DAA2D,EACxE,CAAC;GACF,SAAS,OAAO,EAAE,WAAW;IAC3B,MAAM,SAAS,MAAM,SAAS,QAAQ,KAAK;AAC3C,QAAI,OAAO,QACT,OAAM,IAAI,MAAM,OAAO,KAAK;AAE9B,WAAO,OAAO;;GAEjB,CAAC;EACH"}
@@ -0,0 +1,51 @@
1
+ import { a as createBrowserToolHandlers, i as ToolResult, n as EXECUTE_DESCRIPTION, r as SEARCH_DESCRIPTION, t as BrowserToolsOptions } from "../shared-BUHZFGTk.js";
2
+
3
+ //#region src/browser/cdp-session.d.ts
4
+ interface DebugEntry {
5
+ at: string;
6
+ type: string;
7
+ [key: string]: unknown;
8
+ }
9
+ interface CdpSendOptions {
10
+ timeoutMs?: number;
11
+ sessionId?: string;
12
+ }
13
+ interface CdpAttachOptions {
14
+ timeoutMs?: number;
15
+ }
16
+ /**
17
+ * A CDP session over an open WebSocket. Manages command correlation,
18
+ * timeouts, target sessions, and a debug event ring buffer.
19
+ *
20
+ * Used host-side (not in the sandbox) — the sandbox calls into this
21
+ * via DynamicWorkerExecutor's ToolDispatcher RPC.
22
+ */
23
+ declare class CdpSession {
24
+ #private;
25
+ constructor(socket: WebSocket, defaultTimeoutMs?: number, dispose?: () => void);
26
+ send(method: string, params?: unknown, options?: CdpSendOptions): Promise<unknown>;
27
+ attachToTarget(targetId: string, options?: CdpAttachOptions): Promise<string>;
28
+ getDebugLog(limit?: number): DebugEntry[];
29
+ clearDebugLog(): void;
30
+ close(): void;
31
+ }
32
+ /**
33
+ * Connect to a browser via the Browser Rendering binding (Fetcher).
34
+ * Establishes a CDP WebSocket through the binding's fetch interface.
35
+ */
36
+ declare function connectBrowser(browser: Fetcher, timeoutMs?: number): Promise<CdpSession>;
37
+ /**
38
+ * Connect to a browser via a CDP base URL (e.g. http://localhost:9222).
39
+ * Discovers the WebSocket debugger URL via /json/version,
40
+ * rewrites localhost URLs to the base URL host, and opens the WebSocket.
41
+ *
42
+ * Useful for local development with `chrome --remote-debugging-port=9222`
43
+ * or when connecting through a tunnel.
44
+ */
45
+ declare function connectUrl(baseUrl: string, options?: {
46
+ timeoutMs?: number;
47
+ headers?: Record<string, string>;
48
+ }): Promise<CdpSession>;
49
+ //#endregion
50
+ export { type BrowserToolsOptions, type CdpAttachOptions, type CdpSendOptions, CdpSession, EXECUTE_DESCRIPTION, SEARCH_DESCRIPTION, type ToolResult, connectBrowser, connectUrl, createBrowserToolHandlers };
51
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,2 @@
1
+ import { a as connectBrowser, i as CdpSession, n as SEARCH_DESCRIPTION, o as connectUrl, r as createBrowserToolHandlers, t as EXECUTE_DESCRIPTION } from "../shared-BtPEbm_U.js";
2
+ export { CdpSession, EXECUTE_DESCRIPTION, SEARCH_DESCRIPTION, connectBrowser, connectUrl, createBrowserToolHandlers };
@@ -0,0 +1,31 @@
1
+ import { t as BrowserToolsOptions } from "../shared-BUHZFGTk.js";
2
+ import { ServerTool } from "@tanstack/ai";
3
+
4
+ //#region src/browser/tanstack-ai.d.ts
5
+ /**
6
+ * Create TanStack AI tools for browser automation via CDP code mode.
7
+ *
8
+ * Returns an array of `ServerTool`s: `browser_search` (query the CDP spec)
9
+ * and `browser_execute` (run CDP commands against a live browser).
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * import { createBrowserTools } from "agents/browser/tanstack-ai";
14
+ * import { chat } from "@tanstack/ai";
15
+ *
16
+ * const browserTools = createBrowserTools({
17
+ * browser: env.BROWSER,
18
+ * loader: env.LOADER,
19
+ * });
20
+ *
21
+ * const stream = chat({
22
+ * adapter: openaiText("gpt-4o"),
23
+ * tools: [...browserTools, ...otherTools],
24
+ * messages,
25
+ * });
26
+ * ```
27
+ */
28
+ declare function createBrowserTools(options: BrowserToolsOptions): ServerTool[];
29
+ //#endregion
30
+ export { type BrowserToolsOptions, createBrowserTools };
31
+ //# sourceMappingURL=tanstack-ai.d.ts.map
@@ -0,0 +1,51 @@
1
+ import { n as SEARCH_DESCRIPTION, r as createBrowserToolHandlers, t as EXECUTE_DESCRIPTION } from "../shared-BtPEbm_U.js";
2
+ import { z } from "zod";
3
+ import { toolDefinition } from "@tanstack/ai";
4
+ //#region src/browser/tanstack-ai.ts
5
+ /**
6
+ * Create TanStack AI tools for browser automation via CDP code mode.
7
+ *
8
+ * Returns an array of `ServerTool`s: `browser_search` (query the CDP spec)
9
+ * and `browser_execute` (run CDP commands against a live browser).
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * import { createBrowserTools } from "agents/browser/tanstack-ai";
14
+ * import { chat } from "@tanstack/ai";
15
+ *
16
+ * const browserTools = createBrowserTools({
17
+ * browser: env.BROWSER,
18
+ * loader: env.LOADER,
19
+ * });
20
+ *
21
+ * const stream = chat({
22
+ * adapter: openaiText("gpt-4o"),
23
+ * tools: [...browserTools, ...otherTools],
24
+ * messages,
25
+ * });
26
+ * ```
27
+ */
28
+ function createBrowserTools(options) {
29
+ const handlers = createBrowserToolHandlers(options);
30
+ return [toolDefinition({
31
+ name: "browser_search",
32
+ description: SEARCH_DESCRIPTION,
33
+ inputSchema: z.object({ code: z.string().meta({ description: "JavaScript async arrow function that queries the CDP spec" }) })
34
+ }).server(async ({ code }) => {
35
+ const result = await handlers.search(code);
36
+ if (result.isError) throw new Error(result.text);
37
+ return { text: result.text };
38
+ }), toolDefinition({
39
+ name: "browser_execute",
40
+ description: EXECUTE_DESCRIPTION,
41
+ inputSchema: z.object({ code: z.string().meta({ description: "JavaScript async arrow function that uses the cdp helper" }) })
42
+ }).server(async ({ code }) => {
43
+ const result = await handlers.execute(code);
44
+ if (result.isError) throw new Error(result.text);
45
+ return { text: result.text };
46
+ })];
47
+ }
48
+ //#endregion
49
+ export { createBrowserTools };
50
+
51
+ //# sourceMappingURL=tanstack-ai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tanstack-ai.js","names":[],"sources":["../../src/browser/tanstack-ai.ts"],"sourcesContent":["import { toolDefinition } from \"@tanstack/ai\";\nimport type { ServerTool } from \"@tanstack/ai\";\nimport { z } from \"zod\";\nimport {\n createBrowserToolHandlers,\n SEARCH_DESCRIPTION,\n EXECUTE_DESCRIPTION,\n type BrowserToolsOptions\n} from \"./shared\";\n\nexport type { BrowserToolsOptions } from \"./shared\";\n\n/**\n * Create TanStack AI tools for browser automation via CDP code mode.\n *\n * Returns an array of `ServerTool`s: `browser_search` (query the CDP spec)\n * and `browser_execute` (run CDP commands against a live browser).\n *\n * @example\n * ```ts\n * import { createBrowserTools } from \"agents/browser/tanstack-ai\";\n * import { chat } from \"@tanstack/ai\";\n *\n * const browserTools = createBrowserTools({\n * browser: env.BROWSER,\n * loader: env.LOADER,\n * });\n *\n * const stream = chat({\n * adapter: openaiText(\"gpt-4o\"),\n * tools: [...browserTools, ...otherTools],\n * messages,\n * });\n * ```\n */\nexport function createBrowserTools(options: BrowserToolsOptions): ServerTool[] {\n const handlers = createBrowserToolHandlers(options);\n\n const search = toolDefinition({\n name: \"browser_search\" as const,\n description: SEARCH_DESCRIPTION,\n inputSchema: z.object({\n code: z.string().meta({\n description: \"JavaScript async arrow function that queries the CDP spec\"\n })\n })\n }).server(async ({ code }) => {\n const result = await handlers.search(code);\n if (result.isError) {\n throw new Error(result.text);\n }\n return { text: result.text };\n });\n\n const execute = toolDefinition({\n name: \"browser_execute\" as const,\n description: EXECUTE_DESCRIPTION,\n inputSchema: z.object({\n code: z.string().meta({\n description: \"JavaScript async arrow function that uses the cdp helper\"\n })\n })\n }).server(async ({ code }) => {\n const result = await handlers.execute(code);\n if (result.isError) {\n throw new Error(result.text);\n }\n return { text: result.text };\n });\n\n return [search, execute];\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCA,SAAgB,mBAAmB,SAA4C;CAC7E,MAAM,WAAW,0BAA0B,QAAQ;AAkCnD,QAAO,CAhCQ,eAAe;EAC5B,MAAM;EACN,aAAa;EACb,aAAa,EAAE,OAAO,EACpB,MAAM,EAAE,QAAQ,CAAC,KAAK,EACpB,aAAa,6DACd,CAAC,EACH,CAAC;EACH,CAAC,CAAC,OAAO,OAAO,EAAE,WAAW;EAC5B,MAAM,SAAS,MAAM,SAAS,OAAO,KAAK;AAC1C,MAAI,OAAO,QACT,OAAM,IAAI,MAAM,OAAO,KAAK;AAE9B,SAAO,EAAE,MAAM,OAAO,MAAM;GAC5B,EAEc,eAAe;EAC7B,MAAM;EACN,aAAa;EACb,aAAa,EAAE,OAAO,EACpB,MAAM,EAAE,QAAQ,CAAC,KAAK,EACpB,aAAa,4DACd,CAAC,EACH,CAAC;EACH,CAAC,CAAC,OAAO,OAAO,EAAE,WAAW;EAC5B,MAAM,SAAS,MAAM,SAAS,QAAQ,KAAK;AAC3C,MAAI,OAAO,QACT,OAAM,IAAI,MAAM,OAAO,KAAK;AAE9B,SAAO,EAAE,MAAM,OAAO,MAAM;GAC5B,CAEsB"}
@@ -53,17 +53,23 @@ function applyChunkToParts(parts, chunk) {
53
53
  return true;
54
54
  case "reasoning-delta": {
55
55
  const lastReasoningPart = findLastPartByType(parts, "reasoning");
56
- if (lastReasoningPart && lastReasoningPart.type === "reasoning") lastReasoningPart.text += chunk.delta ?? "";
57
- else parts.push({
56
+ if (lastReasoningPart && lastReasoningPart.type === "reasoning") {
57
+ lastReasoningPart.text += chunk.delta ?? "";
58
+ mergeProviderMetadata(lastReasoningPart, chunk.providerMetadata);
59
+ } else parts.push({
58
60
  type: "reasoning",
59
61
  text: chunk.delta ?? "",
60
- state: "streaming"
62
+ state: "streaming",
63
+ ...chunk.providerMetadata != null ? { providerMetadata: chunk.providerMetadata } : {}
61
64
  });
62
65
  return true;
63
66
  }
64
67
  case "reasoning-end": {
65
68
  const lastReasoningPart = findLastPartByType(parts, "reasoning");
66
- if (lastReasoningPart && "state" in lastReasoningPart) lastReasoningPart.state = "done";
69
+ if (lastReasoningPart && "state" in lastReasoningPart) {
70
+ lastReasoningPart.state = "done";
71
+ mergeProviderMetadata(lastReasoningPart, chunk.providerMetadata);
72
+ }
67
73
  return true;
68
74
  }
69
75
  case "file":
@@ -230,6 +236,20 @@ function findToolPartByCallId(parts, toolCallId) {
230
236
  }
231
237
  }
232
238
  /**
239
+ * Shallow-merges providerMetadata from a chunk onto an existing part.
240
+ * Preserves any metadata already on the part (e.g. from earlier deltas)
241
+ * while adding new keys from the chunk. This is critical for providers
242
+ * like Anthropic that emit the thinking block signature on reasoning-end.
243
+ */
244
+ function mergeProviderMetadata(part, metadata) {
245
+ if (metadata == null) return;
246
+ const p = part;
247
+ p.providerMetadata = {
248
+ ...p.providerMetadata,
249
+ ...metadata
250
+ };
251
+ }
252
+ /**
233
253
  * Finds a data part by its type and id for reconciliation.
234
254
  * Data parts use type+id as a composite key so when the same combination
235
255
  * is seen again, the existing part's data is updated in-place.