@a2anet/a2a-utils 0.5.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.
@@ -1,12 +1,123 @@
1
- import type { JsonObject } from "../types.js";
1
+ import { z } from "zod";
2
2
  import { ArtifactSettings } from "../types.js";
3
3
  import type { A2ASession } from "./a2a-session.js";
4
4
  export declare const TEXT_MINIMIZED_TIP = "Text was minimized. Call view_text_artifact() to view specific line ranges.";
5
5
  export declare const DATA_MINIMIZED_TIP = "Data was minimized. Call view_data_artifact() to navigate to specific data.";
6
+ declare const getAgentSchema: z.ZodObject<{
7
+ agentId: z.ZodString;
8
+ }, "strip", z.ZodTypeAny, {
9
+ agentId: string;
10
+ }, {
11
+ agentId: string;
12
+ }>;
13
+ declare const sendMessageSchema: z.ZodObject<{
14
+ agentId: z.ZodString;
15
+ message: z.ZodString;
16
+ contextId: z.ZodOptional<z.ZodString>;
17
+ taskId: z.ZodOptional<z.ZodString>;
18
+ timeout: z.ZodOptional<z.ZodNumber>;
19
+ data: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
20
+ files: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
21
+ }, "strip", z.ZodTypeAny, {
22
+ message: string;
23
+ agentId: string;
24
+ data?: unknown[] | undefined;
25
+ files?: string[] | undefined;
26
+ taskId?: string | undefined;
27
+ timeout?: number | undefined;
28
+ contextId?: string | undefined;
29
+ }, {
30
+ message: string;
31
+ agentId: string;
32
+ data?: unknown[] | undefined;
33
+ files?: string[] | undefined;
34
+ taskId?: string | undefined;
35
+ timeout?: number | undefined;
36
+ contextId?: string | undefined;
37
+ }>;
38
+ declare const getTaskSchema: z.ZodObject<{
39
+ agentId: z.ZodString;
40
+ taskId: z.ZodString;
41
+ timeout: z.ZodOptional<z.ZodNumber>;
42
+ pollInterval: z.ZodOptional<z.ZodNumber>;
43
+ }, "strip", z.ZodTypeAny, {
44
+ agentId: string;
45
+ taskId: string;
46
+ timeout?: number | undefined;
47
+ pollInterval?: number | undefined;
48
+ }, {
49
+ agentId: string;
50
+ taskId: string;
51
+ timeout?: number | undefined;
52
+ pollInterval?: number | undefined;
53
+ }>;
54
+ declare const viewTextArtifactSchema: z.ZodObject<{
55
+ agentId: z.ZodString;
56
+ taskId: z.ZodString;
57
+ artifactId: z.ZodString;
58
+ lineStart: z.ZodOptional<z.ZodNumber>;
59
+ lineEnd: z.ZodOptional<z.ZodNumber>;
60
+ characterStart: z.ZodOptional<z.ZodNumber>;
61
+ characterEnd: z.ZodOptional<z.ZodNumber>;
62
+ }, "strip", z.ZodTypeAny, {
63
+ agentId: string;
64
+ taskId: string;
65
+ artifactId: string;
66
+ lineStart?: number | undefined;
67
+ lineEnd?: number | undefined;
68
+ characterStart?: number | undefined;
69
+ characterEnd?: number | undefined;
70
+ }, {
71
+ agentId: string;
72
+ taskId: string;
73
+ artifactId: string;
74
+ lineStart?: number | undefined;
75
+ lineEnd?: number | undefined;
76
+ characterStart?: number | undefined;
77
+ characterEnd?: number | undefined;
78
+ }>;
79
+ declare const viewDataArtifactSchema: z.ZodObject<{
80
+ agentId: z.ZodString;
81
+ taskId: z.ZodString;
82
+ artifactId: z.ZodString;
83
+ jsonPath: z.ZodOptional<z.ZodString>;
84
+ rows: z.ZodOptional<z.ZodString>;
85
+ columns: z.ZodOptional<z.ZodString>;
86
+ }, "strip", z.ZodTypeAny, {
87
+ agentId: string;
88
+ taskId: string;
89
+ artifactId: string;
90
+ jsonPath?: string | undefined;
91
+ rows?: string | undefined;
92
+ columns?: string | undefined;
93
+ }, {
94
+ agentId: string;
95
+ taskId: string;
96
+ artifactId: string;
97
+ jsonPath?: string | undefined;
98
+ rows?: string | undefined;
99
+ columns?: string | undefined;
100
+ }>;
101
+ /**
102
+ * A tool definition with name, description, Zod schema, and execute function.
103
+ *
104
+ * Individual tool properties on `A2ATools` are more specifically typed via
105
+ * inference. This interface is used for the `toolDefinitions` array where
106
+ * the concrete schema type is erased.
107
+ */
108
+ export interface A2AToolDefinition {
109
+ readonly name: string;
110
+ readonly description: string;
111
+ readonly schema: z.ZodObject<z.ZodRawShape>;
112
+ readonly execute: (params: any) => Promise<Record<string, unknown>>;
113
+ }
6
114
  /**
7
115
  * LLM-friendly tools that can be used out-of-the-box with agent frameworks.
8
116
  *
9
- * Each method has LLM-friendly docstrings, returns JSON-serialisable objects, and returns actionable error messages.
117
+ * Each tool has LLM-friendly docstrings, returns JSON-serialisable objects, and returns actionable error messages.
118
+ *
119
+ * Each tool is an instance property with `name`, `description`, `schema` (Zod),
120
+ * and `execute`. Use the `toolDefinitions` getter for the full array.
10
121
  */
11
122
  export declare class A2ATools {
12
123
  private readonly session;
@@ -14,157 +125,148 @@ export declare class A2ATools {
14
125
  constructor(session: A2ASession, opts?: {
15
126
  artifactSettings?: ArtifactSettings | null;
16
127
  });
17
- /**
18
- * List all available agents with their names and descriptions.
19
- *
20
- * Use this first to discover what agents are available before sending messages.
21
- * Each agent has a unique ID (the key) that you'll need for other tools like
22
- * send_message and get_agent.
23
- *
24
- * Returns an object mapping agent IDs to their name and description.
25
- * If any agents failed to load, an "errors" field is included with details.
26
- */
27
- getAgents(): Promise<Record<string, unknown>>;
28
- /**
29
- * Get detailed information about a specific agent, including its skills.
30
- *
31
- * Use this after get_agents to learn more about what a specific agent can do.
32
- * The response includes the agent's name, description, and a list of skills
33
- * with their descriptions.
34
- *
35
- * @param agentId - The agent's unique identifier (from get_agents).
36
- */
37
- getAgent(agentId: string): Promise<Record<string, unknown>>;
38
- /**
39
- * Send a message to an agent and receive a structured response.
40
- *
41
- * This is the primary way to communicate with agents. The response includes
42
- * the agent's reply and any generated artifacts.
43
- *
44
- * Artifact data in responses may be minimized for display. Fields prefixed
45
- * with "_" indicate metadata about minimized content. Use view_text_artifact
46
- * or view_data_artifact to access full artifact data.
47
- *
48
- * If the task is still in progress after the timeout, the response includes
49
- * a task_id. Use get_task with that task_id to continue monitoring.
50
- *
51
- * @param agentId - ID of the agent to message (from get_agents).
52
- * @param message - The message content to send.
53
- * @param opts.contextId - Continue an existing conversation by providing its context ID.
54
- * Omit to start a new conversation.
55
- * @param opts.taskId - Attach to an existing task (for input_required flows).
56
- * @param opts.timeout - Override the default timeout in seconds.
57
- * @param opts.data - Structured data to include with the message. Each item
58
- * is sent as a separate JSON object alongside the text.
59
- * @param opts.files - Files to include with the message. Accepts local file
60
- * paths (read and sent as binary, max 1MB) or URLs (sent as references
61
- * for the remote agent to fetch).
62
- */
63
- sendMessage(agentId: string, message: string, opts?: {
64
- contextId?: string | null;
65
- taskId?: string | null;
66
- timeout?: number | null;
67
- data?: JsonObject[];
68
- files?: string[];
69
- }): Promise<Record<string, unknown>>;
70
- /**
71
- * Check the progress of a task that is still in progress.
72
- *
73
- * Use this after send_message returns a task in a non-terminal state
74
- * (e.g. "working") to monitor its progress.
75
- *
76
- * If the task is still running after the timeout, the current state is
77
- * returned. Call get_task again to continue monitoring.
78
- *
79
- * @param agentId - ID of the agent that owns the task.
80
- * @param taskId - Task ID from a previous send_message response.
81
- * @param timeout - Override the monitoring timeout in seconds.
82
- * @param pollInterval - Override the interval between status checks in seconds.
83
- */
84
- getTask(agentId: string, taskId: string, timeout?: number | null, pollInterval?: number | null): Promise<Record<string, unknown>>;
85
- /**
86
- * View text content from an artifact, optionally selecting a range.
87
- *
88
- * Use this for artifacts containing text (documents, logs, code, etc.).
89
- * You can select by line range OR character range, but not both.
90
- *
91
- * @param agentId - ID of the agent that produced the artifact.
92
- * @param taskId - Task ID containing the artifact.
93
- * @param artifactId - The artifact's unique identifier (from the task's artifacts list).
94
- * @param lineStart - Starting line number (1-based, inclusive).
95
- * @param lineEnd - Ending line number (1-based, inclusive).
96
- * @param characterStart - Starting character index (0-based, inclusive).
97
- * @param characterEnd - Ending character index (0-based, exclusive).
98
- */
99
- viewTextArtifact(agentId: string, taskId: string, artifactId: string, lineStart?: number | null, lineEnd?: number | null, characterStart?: number | null, characterEnd?: number | null): Promise<Record<string, unknown>>;
100
- /**
101
- * View structured data from an artifact with optional filtering.
102
- *
103
- * Use this for artifacts containing JSON data (objects, arrays, tables).
104
- * You can navigate to specific data with json_path, then filter with
105
- * rows and columns for tabular data.
106
- *
107
- * @param agentId - ID of the agent that produced the artifact.
108
- * @param taskId - Task ID containing the artifact.
109
- * @param artifactId - The artifact's unique identifier (from the task's artifacts list).
110
- * @param jsonPath - Dot-separated path to navigate into the data (e.g. "results.items").
111
- * @param rows - Row selection for list data. Examples: "0" (single row), "0-10" (range),
112
- * "0,2,5" (specific rows), "all" (every row).
113
- * @param columns - Column selection for tabular data (list of objects). Examples:
114
- * "name" (single column), "name,age" (multiple columns), "all" (every column).
115
- */
116
- viewDataArtifact(agentId: string, taskId: string, artifactId: string, jsonPath?: string | null, rows?: string | null, columns?: string | null): Promise<Record<string, unknown>>;
117
- /**
118
- * Convert an A2A Message to MessageForLLM.
119
- *
120
- * Combines all TextParts into a single TextPartForLLM.
121
- * Includes FileParts with saved path metadata.
122
- */
128
+ readonly getAgents: {
129
+ name: string;
130
+ description: string;
131
+ schema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
132
+ execute: () => Promise<Record<string, Record<string, unknown>> | {
133
+ error: boolean;
134
+ error_message: string;
135
+ }>;
136
+ };
137
+ readonly getAgent: {
138
+ name: string;
139
+ description: string;
140
+ schema: z.ZodObject<{
141
+ agentId: z.ZodString;
142
+ }, "strip", z.ZodTypeAny, {
143
+ agentId: string;
144
+ }, {
145
+ agentId: string;
146
+ }>;
147
+ execute: ({ agentId }: z.infer<typeof getAgentSchema>) => Promise<Record<string, unknown>>;
148
+ };
149
+ readonly sendMessage: {
150
+ name: string;
151
+ description: string;
152
+ schema: z.ZodObject<{
153
+ agentId: z.ZodString;
154
+ message: z.ZodString;
155
+ contextId: z.ZodOptional<z.ZodString>;
156
+ taskId: z.ZodOptional<z.ZodString>;
157
+ timeout: z.ZodOptional<z.ZodNumber>;
158
+ data: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
159
+ files: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
160
+ }, "strip", z.ZodTypeAny, {
161
+ message: string;
162
+ agentId: string;
163
+ data?: unknown[] | undefined;
164
+ files?: string[] | undefined;
165
+ taskId?: string | undefined;
166
+ timeout?: number | undefined;
167
+ contextId?: string | undefined;
168
+ }, {
169
+ message: string;
170
+ agentId: string;
171
+ data?: unknown[] | undefined;
172
+ files?: string[] | undefined;
173
+ taskId?: string | undefined;
174
+ timeout?: number | undefined;
175
+ contextId?: string | undefined;
176
+ }>;
177
+ execute: ({ agentId, message, contextId, taskId, timeout, data, files, }: z.infer<typeof sendMessageSchema>) => Promise<Record<string, unknown>>;
178
+ };
179
+ readonly getTask: {
180
+ name: string;
181
+ description: string;
182
+ schema: z.ZodObject<{
183
+ agentId: z.ZodString;
184
+ taskId: z.ZodString;
185
+ timeout: z.ZodOptional<z.ZodNumber>;
186
+ pollInterval: z.ZodOptional<z.ZodNumber>;
187
+ }, "strip", z.ZodTypeAny, {
188
+ agentId: string;
189
+ taskId: string;
190
+ timeout?: number | undefined;
191
+ pollInterval?: number | undefined;
192
+ }, {
193
+ agentId: string;
194
+ taskId: string;
195
+ timeout?: number | undefined;
196
+ pollInterval?: number | undefined;
197
+ }>;
198
+ execute: ({ agentId, taskId, timeout, pollInterval, }: z.infer<typeof getTaskSchema>) => Promise<Record<string, unknown>>;
199
+ };
200
+ readonly viewTextArtifact: {
201
+ name: string;
202
+ description: string;
203
+ schema: z.ZodObject<{
204
+ agentId: z.ZodString;
205
+ taskId: z.ZodString;
206
+ artifactId: z.ZodString;
207
+ lineStart: z.ZodOptional<z.ZodNumber>;
208
+ lineEnd: z.ZodOptional<z.ZodNumber>;
209
+ characterStart: z.ZodOptional<z.ZodNumber>;
210
+ characterEnd: z.ZodOptional<z.ZodNumber>;
211
+ }, "strip", z.ZodTypeAny, {
212
+ agentId: string;
213
+ taskId: string;
214
+ artifactId: string;
215
+ lineStart?: number | undefined;
216
+ lineEnd?: number | undefined;
217
+ characterStart?: number | undefined;
218
+ characterEnd?: number | undefined;
219
+ }, {
220
+ agentId: string;
221
+ taskId: string;
222
+ artifactId: string;
223
+ lineStart?: number | undefined;
224
+ lineEnd?: number | undefined;
225
+ characterStart?: number | undefined;
226
+ characterEnd?: number | undefined;
227
+ }>;
228
+ execute: ({ agentId, taskId, artifactId, lineStart, lineEnd, characterStart, characterEnd, }: z.infer<typeof viewTextArtifactSchema>) => Promise<Record<string, unknown>>;
229
+ };
230
+ readonly viewDataArtifact: {
231
+ name: string;
232
+ description: string;
233
+ schema: z.ZodObject<{
234
+ agentId: z.ZodString;
235
+ taskId: z.ZodString;
236
+ artifactId: z.ZodString;
237
+ jsonPath: z.ZodOptional<z.ZodString>;
238
+ rows: z.ZodOptional<z.ZodString>;
239
+ columns: z.ZodOptional<z.ZodString>;
240
+ }, "strip", z.ZodTypeAny, {
241
+ agentId: string;
242
+ taskId: string;
243
+ artifactId: string;
244
+ jsonPath?: string | undefined;
245
+ rows?: string | undefined;
246
+ columns?: string | undefined;
247
+ }, {
248
+ agentId: string;
249
+ taskId: string;
250
+ artifactId: string;
251
+ jsonPath?: string | undefined;
252
+ rows?: string | undefined;
253
+ columns?: string | undefined;
254
+ }>;
255
+ execute: ({ agentId, taskId, artifactId, jsonPath, rows, columns, }: z.infer<typeof viewDataArtifactSchema>) => Promise<Record<string, unknown>>;
256
+ };
257
+ /** All tool definitions as an array. */
258
+ get toolDefinitions(): A2AToolDefinition[];
259
+ /** Convert an A2A Message to MessageForLLM. */
123
260
  private buildMessageForLlm;
124
261
  /** Convert a Task to TaskForLLM with artifact minimization and file path queries. */
125
262
  private buildTaskForLlm;
126
- /**
127
- * Look up an artifact through the resolution chain.
128
- *
129
- * 1. Check the task store (local cache)
130
- * 2. Fetch fresh via session.getTask (remote retrieval)
131
- *
132
- * @returns The Artifact.
133
- *
134
- * @throws Error if artifact cannot be found.
135
- */
263
+ /** Look up an artifact through the resolution chain. */
136
264
  private getArtifact;
137
- /**
138
- * Extract text content from artifact parts.
139
- *
140
- * @throws Error if artifact does not contain text content.
141
- */
142
265
  private static extractText;
143
- /**
144
- * Extract data content from artifact parts.
145
- *
146
- * @throws Error if artifact does not contain data content.
147
- */
148
266
  private static extractData;
149
- /**
150
- * Parse a rows string into the type expected by DataArtifacts.view.
151
- *
152
- * Accepts: "0" (single int), "0-10" (range string), "0,2,5" (comma-separated
153
- * list of ints), "all" (passthrough string), or null.
154
- */
155
- private static parseRows;
156
- /**
157
- * Parse a columns string into the type expected by DataArtifacts.view.
158
- *
159
- * Accepts: "name" (single column), "name,age" (comma-separated list),
160
- * "all" (passthrough string), or null.
161
- */
162
- private static parseColumns;
163
- /**
164
- * Build a FilePartForLLM from a file Part.
165
- *
166
- * Used by both message and artifact file handling.
167
- */
267
+ static parseRows(rows: string | null): number | number[] | string | null;
268
+ static parseColumns(columns: string | null): string | string[] | null;
168
269
  private static buildFilePartForLlm;
169
270
  }
271
+ export {};
170
272
  //# sourceMappingURL=a2a-tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"a2a-tools.d.ts","sourceRoot":"","sources":["../../src/client/a2a-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"a2a-tools.d.ts","sourceRoot":"","sources":["../../src/client/a2a-tools.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,eAAO,MAAM,kBAAkB,gFACkD,CAAC;AAClF,eAAO,MAAM,kBAAkB,gFACkD,CAAC;AAMlF,QAAA,MAAM,cAAc;;;;;;EAElB,CAAC;AAEH,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;EA2BrB,CAAC;AAEH,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;EAQjB,CAAC;AAEH,QAAA,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;EAa1B,CAAC;AAEH,QAAA,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;EAsB1B,CAAC;AAIH;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAE5C,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACvE;AAED;;;;;;;GAOG;AACH,qBAAa,QAAQ;IACjB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;gBAExC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;KAAE;IAOtF,QAAQ,CAAC,SAAS;;;;;;;;MA0BhB;IAEF,QAAQ,CAAC,QAAQ;;;;;;;;;;+BAQgB,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC;MAe7D;IAEF,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;kFAoBb,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC;MAmCtC;IAEF,QAAQ,CAAC,OAAO;;;;;;;;;;;;;;;;;;;+DAcT,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC;MA2BlC;IAEF,QAAQ,CAAC,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;sGAelB,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC;MAmC3C;IAEF,QAAQ,CAAC,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;6EAelB,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC;MAqC3C;IAEF,wCAAwC;IACxC,IAAI,eAAe,IAAI,iBAAiB,EAAE,CASzC;IAID,+CAA+C;YACjC,kBAAkB;IA0ChC,qFAAqF;YACvE,eAAe;IA0C7B,wDAAwD;YAC1C,WAAW;IA4BzB,OAAO,CAAC,MAAM,CAAC,WAAW;IAiB1B,OAAO,CAAC,MAAM,CAAC,WAAW;IAiB1B,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI;IAwCxE,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAkBrE,OAAO,CAAC,MAAM,CAAC,mBAAmB;CAiDrC"}