@a2anet/a2a-utils 0.1.0 → 0.4.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/README.md +1412 -2
- package/dist/artifacts/data.d.ts +118 -0
- package/dist/artifacts/data.d.ts.map +1 -0
- package/dist/artifacts/data.js +583 -0
- package/dist/artifacts/data.js.map +1 -0
- package/dist/artifacts/index.d.ts +33 -0
- package/dist/artifacts/index.d.ts.map +1 -0
- package/dist/artifacts/index.js +131 -0
- package/dist/artifacts/index.js.map +1 -0
- package/dist/artifacts/text.d.ts +54 -0
- package/dist/artifacts/text.d.ts.map +1 -0
- package/dist/artifacts/text.js +151 -0
- package/dist/artifacts/text.js.map +1 -0
- package/dist/client/a2a-agents.d.ts +94 -0
- package/dist/client/a2a-agents.d.ts.map +1 -0
- package/dist/client/a2a-agents.js +243 -0
- package/dist/client/a2a-agents.js.map +1 -0
- package/dist/client/a2a-session.d.ts +94 -0
- package/dist/client/a2a-session.d.ts.map +1 -0
- package/dist/client/a2a-session.js +264 -0
- package/dist/client/a2a-session.js.map +1 -0
- package/dist/client/a2a-tools.d.ts +152 -0
- package/dist/client/a2a-tools.d.ts.map +1 -0
- package/dist/client/a2a-tools.js +470 -0
- package/dist/client/a2a-tools.js.map +1 -0
- package/dist/client/index.d.ts +4 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +7 -0
- package/dist/client/index.js.map +1 -0
- package/dist/files/file-store.d.ts +24 -0
- package/dist/files/file-store.d.ts.map +1 -0
- package/dist/files/file-store.js +5 -0
- package/dist/files/file-store.js.map +1 -0
- package/dist/files/index.d.ts +3 -0
- package/dist/files/index.d.ts.map +1 -0
- package/dist/files/index.js +5 -0
- package/dist/files/index.js.map +1 -0
- package/dist/files/local-file-store.d.ts +26 -0
- package/dist/files/local-file-store.d.ts.map +1 -0
- package/dist/files/local-file-store.js +99 -0
- package/dist/files/local-file-store.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/tasks/index.d.ts +2 -0
- package/dist/tasks/index.d.ts.map +1 -0
- package/dist/tasks/index.js +5 -0
- package/dist/tasks/index.js.map +1 -0
- package/dist/tasks/json-task-store.d.ts +32 -0
- package/dist/tasks/json-task-store.d.ts.map +1 -0
- package/dist/tasks/json-task-store.js +66 -0
- package/dist/tasks/json-task-store.js.map +1 -0
- package/dist/types.d.ts +65 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +23 -0
- package/dist/types.js.map +1 -0
- package/package.json +17 -4
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { ArtifactSettings } from "../types.js";
|
|
2
|
+
import type { A2ASession } from "./a2a-session.js";
|
|
3
|
+
export declare const TEXT_MINIMIZED_TIP = "Text was minimized. Call view_text_artifact() to view specific line ranges.";
|
|
4
|
+
export declare const DATA_MINIMIZED_TIP = "Data was minimized. Call view_data_artifact() to navigate to specific data.";
|
|
5
|
+
/**
|
|
6
|
+
* LLM-friendly tools that can be used out-of-the-box with agent frameworks.
|
|
7
|
+
*
|
|
8
|
+
* Each method has LLM-friendly docstrings, returns JSON-serialisable objects, and returns actionable error messages.
|
|
9
|
+
*/
|
|
10
|
+
export declare class A2ATools {
|
|
11
|
+
private readonly session;
|
|
12
|
+
private readonly artifactSettings;
|
|
13
|
+
constructor(session: A2ASession, opts?: {
|
|
14
|
+
artifactSettings?: ArtifactSettings | null;
|
|
15
|
+
});
|
|
16
|
+
/**
|
|
17
|
+
* List all available agents with their names and descriptions.
|
|
18
|
+
*
|
|
19
|
+
* Use this first to discover what agents are available before sending messages.
|
|
20
|
+
* Each agent has a unique ID (the key) that you'll need for other tools like
|
|
21
|
+
* send_message and get_agent.
|
|
22
|
+
*
|
|
23
|
+
* Returns an object mapping agent IDs to their name and description.
|
|
24
|
+
* If any agents failed to load, an "errors" field is included with details.
|
|
25
|
+
*/
|
|
26
|
+
getAgents(): Promise<Record<string, unknown>>;
|
|
27
|
+
/**
|
|
28
|
+
* Get detailed information about a specific agent, including its skills.
|
|
29
|
+
*
|
|
30
|
+
* Use this after get_agents to learn more about what a specific agent can do.
|
|
31
|
+
* The response includes the agent's name, description, and a list of skills
|
|
32
|
+
* with their descriptions.
|
|
33
|
+
*
|
|
34
|
+
* @param agentId - The agent's unique identifier (from get_agents).
|
|
35
|
+
*/
|
|
36
|
+
getAgent(agentId: string): Promise<Record<string, unknown>>;
|
|
37
|
+
/**
|
|
38
|
+
* Send a message to an agent and receive a structured response.
|
|
39
|
+
*
|
|
40
|
+
* This is the primary way to communicate with agents. The response includes
|
|
41
|
+
* the agent's reply and any generated artifacts.
|
|
42
|
+
*
|
|
43
|
+
* Artifact data in responses may be minimized for display. Fields prefixed
|
|
44
|
+
* with "_" indicate metadata about minimized content. Use view_text_artifact
|
|
45
|
+
* or view_data_artifact to access full artifact data.
|
|
46
|
+
*
|
|
47
|
+
* If the task is still in progress after the timeout, the response includes
|
|
48
|
+
* a task_id. Use get_task with that task_id to continue monitoring.
|
|
49
|
+
*
|
|
50
|
+
* @param agentId - ID of the agent to message (from get_agents).
|
|
51
|
+
* @param message - The message content to send.
|
|
52
|
+
* @param contextId - Continue an existing conversation by providing its context ID.
|
|
53
|
+
* Omit to start a new conversation.
|
|
54
|
+
* @param taskId - Attach to an existing task (for input_required flows).
|
|
55
|
+
* @param timeout - Override the default timeout in seconds.
|
|
56
|
+
*/
|
|
57
|
+
sendMessage(agentId: string, message: string, contextId?: string | null, taskId?: string | null, timeout?: number | null): Promise<Record<string, unknown>>;
|
|
58
|
+
/**
|
|
59
|
+
* Check the progress of a task that is still in progress.
|
|
60
|
+
*
|
|
61
|
+
* Use this after send_message returns a task in a non-terminal state
|
|
62
|
+
* (e.g. "working") to monitor its progress.
|
|
63
|
+
*
|
|
64
|
+
* If the task is still running after the timeout, the current state is
|
|
65
|
+
* returned. Call get_task again to continue monitoring.
|
|
66
|
+
*
|
|
67
|
+
* @param agentId - ID of the agent that owns the task.
|
|
68
|
+
* @param taskId - Task ID from a previous send_message response.
|
|
69
|
+
* @param timeout - Override the monitoring timeout in seconds.
|
|
70
|
+
* @param pollInterval - Override the interval between status checks in seconds.
|
|
71
|
+
*/
|
|
72
|
+
getTask(agentId: string, taskId: string, timeout?: number | null, pollInterval?: number | null): Promise<Record<string, unknown>>;
|
|
73
|
+
/**
|
|
74
|
+
* View text content from an artifact, optionally selecting a range.
|
|
75
|
+
*
|
|
76
|
+
* Use this for artifacts containing text (documents, logs, code, etc.).
|
|
77
|
+
* You can select by line range OR character range, but not both.
|
|
78
|
+
*
|
|
79
|
+
* @param agentId - ID of the agent that produced the artifact.
|
|
80
|
+
* @param taskId - Task ID containing the artifact.
|
|
81
|
+
* @param artifactId - The artifact's unique identifier (from the task's artifacts list).
|
|
82
|
+
* @param lineStart - Starting line number (1-based, inclusive).
|
|
83
|
+
* @param lineEnd - Ending line number (1-based, inclusive).
|
|
84
|
+
* @param characterStart - Starting character index (0-based, inclusive).
|
|
85
|
+
* @param characterEnd - Ending character index (0-based, exclusive).
|
|
86
|
+
*/
|
|
87
|
+
viewTextArtifact(agentId: string, taskId: string, artifactId: string, lineStart?: number | null, lineEnd?: number | null, characterStart?: number | null, characterEnd?: number | null): Promise<Record<string, unknown>>;
|
|
88
|
+
/**
|
|
89
|
+
* View structured data from an artifact with optional filtering.
|
|
90
|
+
*
|
|
91
|
+
* Use this for artifacts containing JSON data (objects, arrays, tables).
|
|
92
|
+
* You can navigate to specific data with json_path, then filter with
|
|
93
|
+
* rows and columns for tabular data.
|
|
94
|
+
*
|
|
95
|
+
* @param agentId - ID of the agent that produced the artifact.
|
|
96
|
+
* @param taskId - Task ID containing the artifact.
|
|
97
|
+
* @param artifactId - The artifact's unique identifier (from the task's artifacts list).
|
|
98
|
+
* @param jsonPath - Dot-separated path to navigate into the data (e.g. "results.items").
|
|
99
|
+
* @param rows - Row selection for list data. Examples: "0" (single row), "0-10" (range),
|
|
100
|
+
* "0,2,5" (specific rows), "all" (every row).
|
|
101
|
+
* @param columns - Column selection for tabular data (list of objects). Examples:
|
|
102
|
+
* "name" (single column), "name,age" (multiple columns), "all" (every column).
|
|
103
|
+
*/
|
|
104
|
+
viewDataArtifact(agentId: string, taskId: string, artifactId: string, jsonPath?: string | null, rows?: string | null, columns?: string | null): Promise<Record<string, unknown>>;
|
|
105
|
+
/**
|
|
106
|
+
* Convert an A2A Message to MessageForLLM.
|
|
107
|
+
*
|
|
108
|
+
* Combines all TextParts into a single TextPartForLLM.
|
|
109
|
+
* FileParts are ignored; file handling is done at the artifact level.
|
|
110
|
+
*/
|
|
111
|
+
private buildMessageForLlm;
|
|
112
|
+
/** Convert a Task to TaskForLLM with artifact minimization and file path queries. */
|
|
113
|
+
private buildTaskForLlm;
|
|
114
|
+
/**
|
|
115
|
+
* Look up an artifact through the resolution chain.
|
|
116
|
+
*
|
|
117
|
+
* 1. Check the task store (local cache)
|
|
118
|
+
* 2. Fetch fresh via session.getTask (remote retrieval)
|
|
119
|
+
*
|
|
120
|
+
* @returns The Artifact.
|
|
121
|
+
*
|
|
122
|
+
* @throws Error if artifact cannot be found.
|
|
123
|
+
*/
|
|
124
|
+
private getArtifact;
|
|
125
|
+
/**
|
|
126
|
+
* Extract text content from artifact parts.
|
|
127
|
+
*
|
|
128
|
+
* @throws Error if artifact does not contain text content.
|
|
129
|
+
*/
|
|
130
|
+
private static extractText;
|
|
131
|
+
/**
|
|
132
|
+
* Extract data content from artifact parts.
|
|
133
|
+
*
|
|
134
|
+
* @throws Error if artifact does not contain data content.
|
|
135
|
+
*/
|
|
136
|
+
private static extractData;
|
|
137
|
+
/**
|
|
138
|
+
* Parse a rows string into the type expected by DataArtifacts.view.
|
|
139
|
+
*
|
|
140
|
+
* Accepts: "0" (single int), "0-10" (range string), "0,2,5" (comma-separated
|
|
141
|
+
* list of ints), "all" (passthrough string), or null.
|
|
142
|
+
*/
|
|
143
|
+
private static parseRows;
|
|
144
|
+
/**
|
|
145
|
+
* Parse a columns string into the type expected by DataArtifacts.view.
|
|
146
|
+
*
|
|
147
|
+
* Accepts: "name" (single column), "name,age" (comma-separated list),
|
|
148
|
+
* "all" (passthrough string), or null.
|
|
149
|
+
*/
|
|
150
|
+
private static parseColumns;
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=a2a-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a2a-tools.d.ts","sourceRoot":"","sources":["../../src/client/a2a-tools.ts"],"names":[],"mappings":"AAkBA,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;AAElF;;;;GAIG;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;IAKtF;;;;;;;;;OASG;IACG,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAiBnD;;;;;;;;OAQG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAgBjE;;;;;;;;;;;;;;;;;;;OAmBG;IACG,WAAW,CACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,EACzB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,EACtB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GACxB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAkCnC;;;;;;;;;;;;;OAaG;IACG,OAAO,CACT,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,EACvB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,GAC7B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IA4BnC;;;;;;;;;;;;;OAaG;IACG,gBAAgB,CAClB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,EACzB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,EACvB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,EAC9B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,GAC7B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAoCnC;;;;;;;;;;;;;;;OAeG;IACG,gBAAgB,CAClB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,EACxB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,EACpB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GACxB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAwCnC;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IA6B1B,qFAAqF;YACvE,eAAe;IAyC7B;;;;;;;;;OASG;YACW,WAAW;IA8BzB;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAiB1B;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAiB1B;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;IA2CxB;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;CAmB9B"}
|
|
@@ -0,0 +1,470 @@
|
|
|
1
|
+
// SPDX-FileCopyrightText: 2025-present A2A Net <hello@a2anet.com>
|
|
2
|
+
//
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
import { DataArtifacts, TextArtifacts, minimizeArtifacts } from "../artifacts/index.js";
|
|
5
|
+
import { ArtifactSettings } from "../types.js";
|
|
6
|
+
export const TEXT_MINIMIZED_TIP = "Text was minimized. Call view_text_artifact() to view specific line ranges.";
|
|
7
|
+
export const DATA_MINIMIZED_TIP = "Data was minimized. Call view_data_artifact() to navigate to specific data.";
|
|
8
|
+
/**
|
|
9
|
+
* LLM-friendly tools that can be used out-of-the-box with agent frameworks.
|
|
10
|
+
*
|
|
11
|
+
* Each method has LLM-friendly docstrings, returns JSON-serialisable objects, and returns actionable error messages.
|
|
12
|
+
*/
|
|
13
|
+
export class A2ATools {
|
|
14
|
+
session;
|
|
15
|
+
artifactSettings;
|
|
16
|
+
constructor(session, opts) {
|
|
17
|
+
this.session = session;
|
|
18
|
+
this.artifactSettings = opts?.artifactSettings ?? new ArtifactSettings();
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* List all available agents with their names and descriptions.
|
|
22
|
+
*
|
|
23
|
+
* Use this first to discover what agents are available before sending messages.
|
|
24
|
+
* Each agent has a unique ID (the key) that you'll need for other tools like
|
|
25
|
+
* send_message and get_agent.
|
|
26
|
+
*
|
|
27
|
+
* Returns an object mapping agent IDs to their name and description.
|
|
28
|
+
* If any agents failed to load, an "errors" field is included with details.
|
|
29
|
+
*/
|
|
30
|
+
async getAgents() {
|
|
31
|
+
try {
|
|
32
|
+
const result = await this.session.agents.getAgentsForLlm("basic");
|
|
33
|
+
const initErrors = this.session.agents.initializationErrors;
|
|
34
|
+
if (Object.keys(result).length === 0 && Object.keys(initErrors).length > 0) {
|
|
35
|
+
const errors = {};
|
|
36
|
+
for (const [agentId, error] of Object.entries(initErrors)) {
|
|
37
|
+
errors[agentId] = `Failed to load agent: ${error}`;
|
|
38
|
+
}
|
|
39
|
+
return { agents: result, errors };
|
|
40
|
+
}
|
|
41
|
+
return result;
|
|
42
|
+
}
|
|
43
|
+
catch (e) {
|
|
44
|
+
return { error: true, error_message: `Failed to list agents: ${e}` };
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get detailed information about a specific agent, including its skills.
|
|
49
|
+
*
|
|
50
|
+
* Use this after get_agents to learn more about what a specific agent can do.
|
|
51
|
+
* The response includes the agent's name, description, and a list of skills
|
|
52
|
+
* with their descriptions.
|
|
53
|
+
*
|
|
54
|
+
* @param agentId - The agent's unique identifier (from get_agents).
|
|
55
|
+
*/
|
|
56
|
+
async getAgent(agentId) {
|
|
57
|
+
try {
|
|
58
|
+
const result = await this.session.agents.getAgentForLlm(agentId, "full");
|
|
59
|
+
if (result === null) {
|
|
60
|
+
const available = Object.keys(await this.session.agents.getAgents()).sort();
|
|
61
|
+
return {
|
|
62
|
+
error: true,
|
|
63
|
+
error_message: `Agent '${agentId}' not found. Use get_agents to see available agents. Available: ${available.length > 0 ? available.join(", ") : "(none)"}`,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
return result;
|
|
67
|
+
}
|
|
68
|
+
catch (e) {
|
|
69
|
+
return { error: true, error_message: `Failed to get agent info: ${e}` };
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Send a message to an agent and receive a structured response.
|
|
74
|
+
*
|
|
75
|
+
* This is the primary way to communicate with agents. The response includes
|
|
76
|
+
* the agent's reply and any generated artifacts.
|
|
77
|
+
*
|
|
78
|
+
* Artifact data in responses may be minimized for display. Fields prefixed
|
|
79
|
+
* with "_" indicate metadata about minimized content. Use view_text_artifact
|
|
80
|
+
* or view_data_artifact to access full artifact data.
|
|
81
|
+
*
|
|
82
|
+
* If the task is still in progress after the timeout, the response includes
|
|
83
|
+
* a task_id. Use get_task with that task_id to continue monitoring.
|
|
84
|
+
*
|
|
85
|
+
* @param agentId - ID of the agent to message (from get_agents).
|
|
86
|
+
* @param message - The message content to send.
|
|
87
|
+
* @param contextId - Continue an existing conversation by providing its context ID.
|
|
88
|
+
* Omit to start a new conversation.
|
|
89
|
+
* @param taskId - Attach to an existing task (for input_required flows).
|
|
90
|
+
* @param timeout - Override the default timeout in seconds.
|
|
91
|
+
*/
|
|
92
|
+
async sendMessage(agentId, message, contextId, taskId, timeout) {
|
|
93
|
+
try {
|
|
94
|
+
const result = await this.session.sendMessage(agentId, message, {
|
|
95
|
+
contextId,
|
|
96
|
+
taskId,
|
|
97
|
+
timeout,
|
|
98
|
+
});
|
|
99
|
+
let llmResult;
|
|
100
|
+
if (result.kind === "task") {
|
|
101
|
+
llmResult = await this.buildTaskForLlm(result);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
llmResult = this.buildMessageForLlm(result);
|
|
105
|
+
}
|
|
106
|
+
return llmResult;
|
|
107
|
+
}
|
|
108
|
+
catch (e) {
|
|
109
|
+
const errorMsg = String(e);
|
|
110
|
+
if (errorMsg.toLowerCase().includes("not found")) {
|
|
111
|
+
return {
|
|
112
|
+
error: true,
|
|
113
|
+
error_message: `${errorMsg} Use get_agents to see available agents.`,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
if (e instanceof DOMException && e.name === "TimeoutError") {
|
|
117
|
+
return {
|
|
118
|
+
error: true,
|
|
119
|
+
error_message: "Request timed out. You can retry with a longer timeout, " +
|
|
120
|
+
"or if a task_id was returned earlier, use get_task to check progress.",
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
return { error: true, error_message: `Failed to send message: ${e}` };
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Check the progress of a task that is still in progress.
|
|
128
|
+
*
|
|
129
|
+
* Use this after send_message returns a task in a non-terminal state
|
|
130
|
+
* (e.g. "working") to monitor its progress.
|
|
131
|
+
*
|
|
132
|
+
* If the task is still running after the timeout, the current state is
|
|
133
|
+
* returned. Call get_task again to continue monitoring.
|
|
134
|
+
*
|
|
135
|
+
* @param agentId - ID of the agent that owns the task.
|
|
136
|
+
* @param taskId - Task ID from a previous send_message response.
|
|
137
|
+
* @param timeout - Override the monitoring timeout in seconds.
|
|
138
|
+
* @param pollInterval - Override the interval between status checks in seconds.
|
|
139
|
+
*/
|
|
140
|
+
async getTask(agentId, taskId, timeout, pollInterval) {
|
|
141
|
+
try {
|
|
142
|
+
const result = await this.session.getTask(agentId, taskId, {
|
|
143
|
+
timeout,
|
|
144
|
+
pollInterval,
|
|
145
|
+
});
|
|
146
|
+
const llmResult = await this.buildTaskForLlm(result);
|
|
147
|
+
return llmResult;
|
|
148
|
+
}
|
|
149
|
+
catch (e) {
|
|
150
|
+
const errorMsg = String(e);
|
|
151
|
+
if (errorMsg.toLowerCase().includes("not found")) {
|
|
152
|
+
return {
|
|
153
|
+
error: true,
|
|
154
|
+
error_message: `${errorMsg} Use get_agents to see available agents.`,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
if (e instanceof DOMException && e.name === "TimeoutError") {
|
|
158
|
+
return {
|
|
159
|
+
error: true,
|
|
160
|
+
error_message: "Request timed out. You can retry with a longer timeout, " +
|
|
161
|
+
"or use get_task again to continue monitoring.",
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
return { error: true, error_message: `Failed to get task: ${e}` };
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* View text content from an artifact, optionally selecting a range.
|
|
169
|
+
*
|
|
170
|
+
* Use this for artifacts containing text (documents, logs, code, etc.).
|
|
171
|
+
* You can select by line range OR character range, but not both.
|
|
172
|
+
*
|
|
173
|
+
* @param agentId - ID of the agent that produced the artifact.
|
|
174
|
+
* @param taskId - Task ID containing the artifact.
|
|
175
|
+
* @param artifactId - The artifact's unique identifier (from the task's artifacts list).
|
|
176
|
+
* @param lineStart - Starting line number (1-based, inclusive).
|
|
177
|
+
* @param lineEnd - Ending line number (1-based, inclusive).
|
|
178
|
+
* @param characterStart - Starting character index (0-based, inclusive).
|
|
179
|
+
* @param characterEnd - Ending character index (0-based, exclusive).
|
|
180
|
+
*/
|
|
181
|
+
async viewTextArtifact(agentId, taskId, artifactId, lineStart, lineEnd, characterStart, characterEnd) {
|
|
182
|
+
try {
|
|
183
|
+
const artifact = await this.getArtifact(agentId, taskId, artifactId);
|
|
184
|
+
const text = A2ATools.extractText(artifact);
|
|
185
|
+
const filtered = TextArtifacts.view(text, {
|
|
186
|
+
lineStart,
|
|
187
|
+
lineEnd,
|
|
188
|
+
characterStart,
|
|
189
|
+
characterEnd,
|
|
190
|
+
characterLimit: this.artifactSettings.viewArtifactCharacterLimit,
|
|
191
|
+
});
|
|
192
|
+
const result = {
|
|
193
|
+
artifactId: artifact.artifactId,
|
|
194
|
+
description: artifact.description ?? null,
|
|
195
|
+
name: artifact.name ?? null,
|
|
196
|
+
parts: [{ kind: "text", text: filtered }],
|
|
197
|
+
};
|
|
198
|
+
return result;
|
|
199
|
+
}
|
|
200
|
+
catch (e) {
|
|
201
|
+
const errorMsg = String(e);
|
|
202
|
+
if (errorMsg.toLowerCase().includes("not found")) {
|
|
203
|
+
if (errorMsg.toLowerCase().includes("artifact")) {
|
|
204
|
+
return {
|
|
205
|
+
error: true,
|
|
206
|
+
error_message: `Artifact '${artifactId}' not found in task '${taskId}'. Check the task's artifacts list for valid artifact IDs.`,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
return {
|
|
210
|
+
error: true,
|
|
211
|
+
error_message: `${errorMsg} Use get_agents to see available agents.`,
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
return { error: true, error_message: `Failed to view text artifact: ${e}` };
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* View structured data from an artifact with optional filtering.
|
|
219
|
+
*
|
|
220
|
+
* Use this for artifacts containing JSON data (objects, arrays, tables).
|
|
221
|
+
* You can navigate to specific data with json_path, then filter with
|
|
222
|
+
* rows and columns for tabular data.
|
|
223
|
+
*
|
|
224
|
+
* @param agentId - ID of the agent that produced the artifact.
|
|
225
|
+
* @param taskId - Task ID containing the artifact.
|
|
226
|
+
* @param artifactId - The artifact's unique identifier (from the task's artifacts list).
|
|
227
|
+
* @param jsonPath - Dot-separated path to navigate into the data (e.g. "results.items").
|
|
228
|
+
* @param rows - Row selection for list data. Examples: "0" (single row), "0-10" (range),
|
|
229
|
+
* "0,2,5" (specific rows), "all" (every row).
|
|
230
|
+
* @param columns - Column selection for tabular data (list of objects). Examples:
|
|
231
|
+
* "name" (single column), "name,age" (multiple columns), "all" (every column).
|
|
232
|
+
*/
|
|
233
|
+
async viewDataArtifact(agentId, taskId, artifactId, jsonPath, rows, columns) {
|
|
234
|
+
try {
|
|
235
|
+
const parsedRows = A2ATools.parseRows(rows ?? null);
|
|
236
|
+
const parsedColumns = A2ATools.parseColumns(columns ?? null);
|
|
237
|
+
const artifact = await this.getArtifact(agentId, taskId, artifactId);
|
|
238
|
+
const data = A2ATools.extractData(artifact);
|
|
239
|
+
const filtered = DataArtifacts.view(data, {
|
|
240
|
+
jsonPath,
|
|
241
|
+
rows: parsedRows,
|
|
242
|
+
columns: parsedColumns,
|
|
243
|
+
characterLimit: this.artifactSettings.viewArtifactCharacterLimit,
|
|
244
|
+
});
|
|
245
|
+
const result = {
|
|
246
|
+
artifactId: artifact.artifactId,
|
|
247
|
+
description: artifact.description ?? null,
|
|
248
|
+
name: artifact.name ?? null,
|
|
249
|
+
parts: [{ kind: "data", data: filtered }],
|
|
250
|
+
};
|
|
251
|
+
return result;
|
|
252
|
+
}
|
|
253
|
+
catch (e) {
|
|
254
|
+
const errorMsg = String(e);
|
|
255
|
+
if (errorMsg.toLowerCase().includes("not found")) {
|
|
256
|
+
if (errorMsg.toLowerCase().includes("artifact")) {
|
|
257
|
+
return {
|
|
258
|
+
error: true,
|
|
259
|
+
error_message: `Artifact '${artifactId}' not found in task '${taskId}'. Check the task's artifacts list for valid artifact IDs.`,
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
return {
|
|
263
|
+
error: true,
|
|
264
|
+
error_message: `${errorMsg} Use get_agents to see available agents.`,
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
return { error: true, error_message: `Failed to view data artifact: ${e}` };
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
// -- LLM conversion methods --
|
|
271
|
+
/**
|
|
272
|
+
* Convert an A2A Message to MessageForLLM.
|
|
273
|
+
*
|
|
274
|
+
* Combines all TextParts into a single TextPartForLLM.
|
|
275
|
+
* FileParts are ignored; file handling is done at the artifact level.
|
|
276
|
+
*/
|
|
277
|
+
buildMessageForLlm(message) {
|
|
278
|
+
const parts = [];
|
|
279
|
+
// Combine all text parts
|
|
280
|
+
const textSegments = [];
|
|
281
|
+
for (const part of message.parts) {
|
|
282
|
+
if (part.kind === "text") {
|
|
283
|
+
textSegments.push(part.text);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
if (textSegments.length > 0) {
|
|
287
|
+
parts.push({ kind: "text", text: textSegments.join("") });
|
|
288
|
+
}
|
|
289
|
+
// Each data part stays separate
|
|
290
|
+
for (const part of message.parts) {
|
|
291
|
+
if (part.kind === "data") {
|
|
292
|
+
parts.push({ kind: "data", data: part.data });
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
return {
|
|
296
|
+
contextId: message.contextId ?? null,
|
|
297
|
+
kind: "message",
|
|
298
|
+
parts,
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
/** Convert a Task to TaskForLLM with artifact minimization and file path queries. */
|
|
302
|
+
async buildTaskForLlm(task) {
|
|
303
|
+
// Query fileStore for saved file paths
|
|
304
|
+
let savedFilePaths = null;
|
|
305
|
+
if (this.session.fileStore !== null && task.artifacts) {
|
|
306
|
+
savedFilePaths = {};
|
|
307
|
+
for (const artifact of task.artifacts) {
|
|
308
|
+
const paths = await this.session.fileStore.get(task.id, artifact.artifactId);
|
|
309
|
+
if (paths.length > 0) {
|
|
310
|
+
savedFilePaths[artifact.artifactId] = paths;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
const minimized = task.artifacts
|
|
315
|
+
? minimizeArtifacts(task.artifacts, {
|
|
316
|
+
characterLimit: this.artifactSettings.sendMessageCharacterLimit,
|
|
317
|
+
minimizedObjectStringLength: this.artifactSettings.minimizedObjectStringLength,
|
|
318
|
+
savedFilePaths,
|
|
319
|
+
textTip: TEXT_MINIMIZED_TIP,
|
|
320
|
+
dataTip: DATA_MINIMIZED_TIP,
|
|
321
|
+
})
|
|
322
|
+
: [];
|
|
323
|
+
// Build status message
|
|
324
|
+
let statusMessage = null;
|
|
325
|
+
if (task.status.message) {
|
|
326
|
+
statusMessage = this.buildMessageForLlm(task.status.message);
|
|
327
|
+
}
|
|
328
|
+
return {
|
|
329
|
+
id: task.id,
|
|
330
|
+
contextId: task.contextId,
|
|
331
|
+
kind: "task",
|
|
332
|
+
status: {
|
|
333
|
+
state: task.status.state,
|
|
334
|
+
message: statusMessage,
|
|
335
|
+
},
|
|
336
|
+
artifacts: minimized,
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* Look up an artifact through the resolution chain.
|
|
341
|
+
*
|
|
342
|
+
* 1. Check the task store (local cache)
|
|
343
|
+
* 2. Fetch fresh via session.getTask (remote retrieval)
|
|
344
|
+
*
|
|
345
|
+
* @returns The Artifact.
|
|
346
|
+
*
|
|
347
|
+
* @throws Error if artifact cannot be found.
|
|
348
|
+
*/
|
|
349
|
+
async getArtifact(agentId, taskId, artifactId) {
|
|
350
|
+
// 1. Check task store (local cache)
|
|
351
|
+
const cachedTask = await this.session.taskStore.load(taskId);
|
|
352
|
+
if (cachedTask?.artifacts) {
|
|
353
|
+
for (const artifact of cachedTask.artifacts) {
|
|
354
|
+
if (artifact.artifactId === artifactId) {
|
|
355
|
+
return artifact;
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
// 2. Fetch fresh via session.getTask
|
|
360
|
+
const task = await this.session.getTask(agentId, taskId);
|
|
361
|
+
if (task.artifacts) {
|
|
362
|
+
for (const artifact of task.artifacts) {
|
|
363
|
+
if (artifact.artifactId === artifactId) {
|
|
364
|
+
return artifact;
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
throw new Error(`Artifact '${artifactId}' not found in task '${taskId}'. The artifact may have expired or the task_id may be incorrect.`);
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Extract text content from artifact parts.
|
|
372
|
+
*
|
|
373
|
+
* @throws Error if artifact does not contain text content.
|
|
374
|
+
*/
|
|
375
|
+
static extractText(artifact) {
|
|
376
|
+
const textParts = [];
|
|
377
|
+
for (const part of artifact.parts) {
|
|
378
|
+
if (part.kind === "text") {
|
|
379
|
+
textParts.push(part.text);
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
if (textParts.length === 0) {
|
|
383
|
+
const partTypes = [...new Set(artifact.parts.map((p) => p.kind))].sort();
|
|
384
|
+
throw new Error(`Artifact '${artifact.artifactId}' does not contain text content. ` +
|
|
385
|
+
`Found part types: ${partTypes.join(", ")}`);
|
|
386
|
+
}
|
|
387
|
+
return textParts.join("\n");
|
|
388
|
+
}
|
|
389
|
+
/**
|
|
390
|
+
* Extract data content from artifact parts.
|
|
391
|
+
*
|
|
392
|
+
* @throws Error if artifact does not contain data content.
|
|
393
|
+
*/
|
|
394
|
+
static extractData(artifact) {
|
|
395
|
+
const dataParts = [];
|
|
396
|
+
for (const part of artifact.parts) {
|
|
397
|
+
if (part.kind === "data") {
|
|
398
|
+
dataParts.push(part.data);
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
if (dataParts.length === 0) {
|
|
402
|
+
const partTypes = [...new Set(artifact.parts.map((p) => p.kind))].sort();
|
|
403
|
+
throw new Error(`Artifact '${artifact.artifactId}' does not contain data content. ` +
|
|
404
|
+
`Found part types: ${partTypes.join(", ")}`);
|
|
405
|
+
}
|
|
406
|
+
return dataParts.length === 1 ? dataParts[0] : dataParts;
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* Parse a rows string into the type expected by DataArtifacts.view.
|
|
410
|
+
*
|
|
411
|
+
* Accepts: "0" (single int), "0-10" (range string), "0,2,5" (comma-separated
|
|
412
|
+
* list of ints), "all" (passthrough string), or null.
|
|
413
|
+
*/
|
|
414
|
+
static parseRows(rows) {
|
|
415
|
+
if (rows === null) {
|
|
416
|
+
return null;
|
|
417
|
+
}
|
|
418
|
+
const trimmedRows = rows.trim();
|
|
419
|
+
if (trimmedRows === "all") {
|
|
420
|
+
return "all";
|
|
421
|
+
}
|
|
422
|
+
// Comma-separated list: "0,2,5"
|
|
423
|
+
if (trimmedRows.includes(",")) {
|
|
424
|
+
try {
|
|
425
|
+
return trimmedRows.split(",").map((x) => {
|
|
426
|
+
const n = Number.parseInt(x.trim(), 10);
|
|
427
|
+
if (Number.isNaN(n)) {
|
|
428
|
+
throw new Error();
|
|
429
|
+
}
|
|
430
|
+
return n;
|
|
431
|
+
});
|
|
432
|
+
}
|
|
433
|
+
catch {
|
|
434
|
+
throw new Error(`Invalid rows format: '${trimmedRows}'. Comma-separated values must be integers. Examples: '0', '0-10', '0,2,5', 'all'.`);
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
// Range string: "0-10"
|
|
438
|
+
if (trimmedRows.includes("-")) {
|
|
439
|
+
return trimmedRows;
|
|
440
|
+
}
|
|
441
|
+
// Single integer: "0"
|
|
442
|
+
const n = Number.parseInt(trimmedRows, 10);
|
|
443
|
+
if (Number.isNaN(n)) {
|
|
444
|
+
throw new Error(`Invalid rows format: '${trimmedRows}'. Examples: '0' (single row), '0-10' (range), '0,2,5' (specific rows), 'all'.`);
|
|
445
|
+
}
|
|
446
|
+
return n;
|
|
447
|
+
}
|
|
448
|
+
/**
|
|
449
|
+
* Parse a columns string into the type expected by DataArtifacts.view.
|
|
450
|
+
*
|
|
451
|
+
* Accepts: "name" (single column), "name,age" (comma-separated list),
|
|
452
|
+
* "all" (passthrough string), or null.
|
|
453
|
+
*/
|
|
454
|
+
static parseColumns(columns) {
|
|
455
|
+
if (columns === null) {
|
|
456
|
+
return null;
|
|
457
|
+
}
|
|
458
|
+
const trimmedColumns = columns.trim();
|
|
459
|
+
if (trimmedColumns === "all") {
|
|
460
|
+
return "all";
|
|
461
|
+
}
|
|
462
|
+
// Comma-separated list: "name,age"
|
|
463
|
+
if (trimmedColumns.includes(",")) {
|
|
464
|
+
return trimmedColumns.split(",").map((c) => c.trim());
|
|
465
|
+
}
|
|
466
|
+
// Single column name
|
|
467
|
+
return trimmedColumns;
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
//# sourceMappingURL=a2a-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a2a-tools.js","sourceRoot":"","sources":["../../src/client/a2a-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// SPDX-FileCopyrightText: 2025-present A2A Net <hello@a2anet.com>
|
|
2
|
+
//
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
export { A2ASession } from "./a2a-session.js";
|
|
5
|
+
export { A2ATools } from "./a2a-tools.js";
|
|
6
|
+
export { A2AAgents } from "./a2a-agents.js";
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,EAAE;AACF,sCAAsC;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
|