@plurnk/plurnk-a2a 1.9.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/.env.defaults +30 -0
- package/README.md +69 -0
- package/SPEC.md +199 -0
- package/dist/A2a.d.ts +12 -0
- package/dist/A2a.d.ts.map +1 -0
- package/dist/A2a.js +397 -0
- package/dist/A2a.js.map +1 -0
- package/dist/A2aMessage.d.ts +10 -0
- package/dist/A2aMessage.d.ts.map +1 -0
- package/dist/A2aMessage.js +28 -0
- package/dist/A2aMessage.js.map +1 -0
- package/dist/A2aProjection.d.ts +25 -0
- package/dist/A2aProjection.d.ts.map +1 -0
- package/dist/A2aProjection.js +183 -0
- package/dist/A2aProjection.js.map +1 -0
- package/dist/Functionality.d.ts +77 -0
- package/dist/Functionality.d.ts.map +1 -0
- package/dist/Functionality.js +247 -0
- package/dist/Functionality.js.map +1 -0
- package/dist/HttpJsonClient.d.ts +21 -0
- package/dist/HttpJsonClient.d.ts.map +1 -0
- package/dist/HttpJsonClient.js +41 -0
- package/dist/HttpJsonClient.js.map +1 -0
- package/dist/Module.d.ts +32 -0
- package/dist/Module.d.ts.map +1 -0
- package/dist/Module.js +91 -0
- package/dist/Module.js.map +1 -0
- package/dist/OutboundModule.d.ts +14 -0
- package/dist/OutboundModule.d.ts.map +1 -0
- package/dist/OutboundModule.js +24 -0
- package/dist/OutboundModule.js.map +1 -0
- package/dist/PlurnkAgentExecutor.d.ts +11 -0
- package/dist/PlurnkAgentExecutor.d.ts.map +1 -0
- package/dist/PlurnkAgentExecutor.js +282 -0
- package/dist/PlurnkAgentExecutor.js.map +1 -0
- package/dist/PlurnkTaskStore.d.ts +19 -0
- package/dist/PlurnkTaskStore.d.ts.map +1 -0
- package/dist/PlurnkTaskStore.js +271 -0
- package/dist/PlurnkTaskStore.js.map +1 -0
- package/dist/WorkspaceBinding.d.ts +13 -0
- package/dist/WorkspaceBinding.d.ts.map +1 -0
- package/dist/WorkspaceBinding.js +40 -0
- package/dist/WorkspaceBinding.js.map +1 -0
- package/dist/config.d.ts +22 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +332 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/docs/a2a.md +23 -0
- package/package.json +66 -0
package/dist/config.js
ADDED
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
import { isAbsolute } from "node:path";
|
|
2
|
+
import { A2A_PROTOCOL_VERSION, AgentCard, } from "@a2a-js/sdk";
|
|
3
|
+
const PREFIX = "PLURNK_A2A_";
|
|
4
|
+
const COMPANION_SUFFIXES = ["_card_path", "_bearer", "_headers"];
|
|
5
|
+
const CONTROL_KEYS = new Map([
|
|
6
|
+
["enabled", `${PREFIX}ENABLED`],
|
|
7
|
+
["connect_timeout", `${PREFIX}CONNECT_TIMEOUT`],
|
|
8
|
+
["request_timeout", `${PREFIX}REQUEST_TIMEOUT`],
|
|
9
|
+
["expose", `${PREFIX}EXPOSE`],
|
|
10
|
+
["host", `${PREFIX}HOST`],
|
|
11
|
+
["port", `${PREFIX}PORT`],
|
|
12
|
+
["endpoint_path", `${PREFIX}ENDPOINT_PATH`],
|
|
13
|
+
["endpoint_url", `${PREFIX}ENDPOINT_URL`],
|
|
14
|
+
["workspace", `${PREFIX}WORKSPACE`],
|
|
15
|
+
["project_root", `${PREFIX}PROJECT_ROOT`],
|
|
16
|
+
["name", `${PREFIX}NAME`],
|
|
17
|
+
["description", `${PREFIX}DESCRIPTION`],
|
|
18
|
+
["version", `${PREFIX}VERSION`],
|
|
19
|
+
["provider_organization", `${PREFIX}PROVIDER_ORGANIZATION`],
|
|
20
|
+
["provider_url", `${PREFIX}PROVIDER_URL`],
|
|
21
|
+
["documentation_url", `${PREFIX}DOCUMENTATION_URL`],
|
|
22
|
+
["icon_url", `${PREFIX}ICON_URL`],
|
|
23
|
+
["skills", `${PREFIX}SKILLS`],
|
|
24
|
+
]);
|
|
25
|
+
const AGENT_NAME = /^[a-z][a-z0-9-]*$/;
|
|
26
|
+
const ENV_REFERENCE = /^\$\{([A-Za-z_][A-Za-z0-9_]*)\}$/u;
|
|
27
|
+
const INPUT_MODES = ["text/plain"];
|
|
28
|
+
const OUTPUT_MODES = ["text/markdown"];
|
|
29
|
+
const assertAgentName = (name, variable) => {
|
|
30
|
+
if (!AGENT_NAME.test(name)) {
|
|
31
|
+
throw new Error(`${variable} derives invalid A2A agent name '${name}'; names must match [a-z][a-z0-9-]*.`);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
const parseEnvironment = (environ) => {
|
|
35
|
+
const targets = new Map();
|
|
36
|
+
const companions = new Map();
|
|
37
|
+
for (const [key, value] of Object.entries(environ)) {
|
|
38
|
+
if (value === undefined || !key.startsWith(PREFIX))
|
|
39
|
+
continue;
|
|
40
|
+
const suffix = key.slice(PREFIX.length);
|
|
41
|
+
if (suffix.length === 0)
|
|
42
|
+
continue;
|
|
43
|
+
const folded = suffix.toLowerCase();
|
|
44
|
+
const controlKey = CONTROL_KEYS.get(folded);
|
|
45
|
+
if (controlKey !== undefined) {
|
|
46
|
+
if (key !== controlKey) {
|
|
47
|
+
throw new Error(`${key} case-folds to ${controlKey}; that name is a reserved global and must use its canonical spelling.`);
|
|
48
|
+
}
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
const companion = COMPANION_SUFFIXES.find((candidate) => folded.endsWith(candidate));
|
|
52
|
+
if (companion !== undefined) {
|
|
53
|
+
const name = folded.slice(0, -companion.length);
|
|
54
|
+
const reservedGlobal = CONTROL_KEYS.get(name);
|
|
55
|
+
if (reservedGlobal !== undefined) {
|
|
56
|
+
throw new Error(`${key} uses ${reservedGlobal} as an agent name; reserved globals cannot have agent companions.`);
|
|
57
|
+
}
|
|
58
|
+
assertAgentName(name, key);
|
|
59
|
+
const bySuffix = companions.get(name) ?? new Map();
|
|
60
|
+
const existing = bySuffix.get(companion);
|
|
61
|
+
if (existing !== undefined) {
|
|
62
|
+
throw new Error(`${existing.key} and ${key} are duplicate A2A agent companions after case-folding.`);
|
|
63
|
+
}
|
|
64
|
+
bySuffix.set(companion, { key, value });
|
|
65
|
+
companions.set(name, bySuffix);
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
assertAgentName(folded, key);
|
|
69
|
+
const existing = targets.get(folded);
|
|
70
|
+
if (existing !== undefined) {
|
|
71
|
+
throw new Error(`${existing.key} and ${key} both derive A2A agent name '${folded}' after case-folding.`);
|
|
72
|
+
}
|
|
73
|
+
targets.set(folded, { key, value });
|
|
74
|
+
}
|
|
75
|
+
for (const [name, fields] of companions) {
|
|
76
|
+
if (targets.has(name))
|
|
77
|
+
continue;
|
|
78
|
+
const variables = [...fields.values()].map(({ key }) => key).join(", ");
|
|
79
|
+
throw new Error(`${variables} has no A2A agent target ${PREFIX}${name.toUpperCase()}.`);
|
|
80
|
+
}
|
|
81
|
+
return { targets, companions };
|
|
82
|
+
};
|
|
83
|
+
const jsonStrings = (raw, field) => {
|
|
84
|
+
if (raw === undefined || raw.length === 0)
|
|
85
|
+
return [];
|
|
86
|
+
let parsed;
|
|
87
|
+
try {
|
|
88
|
+
parsed = JSON.parse(raw);
|
|
89
|
+
}
|
|
90
|
+
catch (cause) {
|
|
91
|
+
throw new Error(`${field} must be a JSON array of strings.`, { cause });
|
|
92
|
+
}
|
|
93
|
+
if (!Array.isArray(parsed) || !parsed.every((value) => typeof value === "string")) {
|
|
94
|
+
throw new Error(`${field} must be a JSON array of strings.`);
|
|
95
|
+
}
|
|
96
|
+
return parsed;
|
|
97
|
+
};
|
|
98
|
+
const jsonRecord = (raw, field) => {
|
|
99
|
+
if (raw === undefined || raw.length === 0)
|
|
100
|
+
return undefined;
|
|
101
|
+
let parsed;
|
|
102
|
+
try {
|
|
103
|
+
parsed = JSON.parse(raw);
|
|
104
|
+
}
|
|
105
|
+
catch (cause) {
|
|
106
|
+
throw new Error(`${field} must be a JSON object with string values.`, { cause });
|
|
107
|
+
}
|
|
108
|
+
if (typeof parsed !== "object"
|
|
109
|
+
|| parsed === null
|
|
110
|
+
|| Array.isArray(parsed)
|
|
111
|
+
|| !Object.values(parsed).every((value) => typeof value === "string")) {
|
|
112
|
+
throw new Error(`${field} must be a JSON object with string values.`);
|
|
113
|
+
}
|
|
114
|
+
return parsed;
|
|
115
|
+
};
|
|
116
|
+
const absoluteHttpUrl = (raw, field) => {
|
|
117
|
+
let url;
|
|
118
|
+
try {
|
|
119
|
+
url = new URL(raw);
|
|
120
|
+
}
|
|
121
|
+
catch (cause) {
|
|
122
|
+
throw new Error(`${field} must be an absolute HTTP(S) URL.`, { cause });
|
|
123
|
+
}
|
|
124
|
+
if (url.protocol !== "http:" && url.protocol !== "https:") {
|
|
125
|
+
throw new Error(`${field} must be an absolute HTTP(S) URL.`);
|
|
126
|
+
}
|
|
127
|
+
return raw;
|
|
128
|
+
};
|
|
129
|
+
const optionalUrl = (raw, field) => raw === undefined || raw.length === 0 ? undefined : absoluteHttpUrl(raw, field);
|
|
130
|
+
const required = (environ, field) => {
|
|
131
|
+
const value = environ[field];
|
|
132
|
+
if (value === undefined || value.length === 0) {
|
|
133
|
+
throw new Error(`${field} is required when PLURNK_A2A_EXPOSE=1.`);
|
|
134
|
+
}
|
|
135
|
+
return value;
|
|
136
|
+
};
|
|
137
|
+
const positiveInteger = (raw, field) => {
|
|
138
|
+
const value = Number(raw);
|
|
139
|
+
if (!Number.isInteger(value) || value < 1) {
|
|
140
|
+
throw new Error(`${field} must be a positive integer; got ${JSON.stringify(raw)}.`);
|
|
141
|
+
}
|
|
142
|
+
return value;
|
|
143
|
+
};
|
|
144
|
+
const listenerPort = (raw) => {
|
|
145
|
+
const value = Number(raw);
|
|
146
|
+
if (!Number.isInteger(value) || value < 0 || value > 65_535) {
|
|
147
|
+
throw new Error(`PLURNK_A2A_PORT must be an integer from 0 through 65535; got ${JSON.stringify(raw)}.`);
|
|
148
|
+
}
|
|
149
|
+
return value;
|
|
150
|
+
};
|
|
151
|
+
const stringArray = (value, field) => {
|
|
152
|
+
if (!Array.isArray(value) || !value.every((item) => typeof item === "string")) {
|
|
153
|
+
throw new Error(`${field} must be an array of strings.`);
|
|
154
|
+
}
|
|
155
|
+
return value;
|
|
156
|
+
};
|
|
157
|
+
const skills = (raw) => {
|
|
158
|
+
const field = "PLURNK_A2A_SKILLS";
|
|
159
|
+
let parsed;
|
|
160
|
+
try {
|
|
161
|
+
parsed = JSON.parse(raw ?? "[]");
|
|
162
|
+
}
|
|
163
|
+
catch (cause) {
|
|
164
|
+
throw new Error(`${field} must be a JSON array of Agent Skill objects.`, { cause });
|
|
165
|
+
}
|
|
166
|
+
if (!Array.isArray(parsed))
|
|
167
|
+
throw new Error(`${field} must be a JSON array of Agent Skill objects.`);
|
|
168
|
+
const ids = new Set();
|
|
169
|
+
return parsed.map((candidate, index) => {
|
|
170
|
+
const at = `${field}[${index}]`;
|
|
171
|
+
if (typeof candidate !== "object" || candidate === null || Array.isArray(candidate)) {
|
|
172
|
+
throw new Error(`${at} must be an Agent Skill object.`);
|
|
173
|
+
}
|
|
174
|
+
const skill = candidate;
|
|
175
|
+
const text = (name) => {
|
|
176
|
+
const value = skill[name];
|
|
177
|
+
if (typeof value !== "string" || value.length === 0) {
|
|
178
|
+
throw new Error(`${at}.${name} must be a non-empty string.`);
|
|
179
|
+
}
|
|
180
|
+
return value;
|
|
181
|
+
};
|
|
182
|
+
const id = text("id");
|
|
183
|
+
if (ids.has(id))
|
|
184
|
+
throw new Error(`${field} contains duplicate Agent Skill id '${id}'.`);
|
|
185
|
+
ids.add(id);
|
|
186
|
+
if (skill.securityRequirements !== undefined) {
|
|
187
|
+
const security = skill.securityRequirements;
|
|
188
|
+
if (!Array.isArray(security) || security.length > 0) {
|
|
189
|
+
throw new Error(`${at}.securityRequirements must be absent or empty for an unauthenticated exposure.`);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return {
|
|
193
|
+
id,
|
|
194
|
+
name: text("name"),
|
|
195
|
+
description: text("description"),
|
|
196
|
+
tags: skill.tags === undefined ? [] : stringArray(skill.tags, `${at}.tags`),
|
|
197
|
+
examples: skill.examples === undefined ? [] : stringArray(skill.examples, `${at}.examples`),
|
|
198
|
+
inputModes: skill.inputModes === undefined
|
|
199
|
+
? structuredClone(INPUT_MODES)
|
|
200
|
+
: stringArray(skill.inputModes, `${at}.inputModes`),
|
|
201
|
+
outputModes: skill.outputModes === undefined
|
|
202
|
+
? structuredClone(OUTPUT_MODES)
|
|
203
|
+
: stringArray(skill.outputModes, `${at}.outputModes`),
|
|
204
|
+
securityRequirements: [],
|
|
205
|
+
};
|
|
206
|
+
});
|
|
207
|
+
};
|
|
208
|
+
export const outboundAgentNames = (environ = process.env) => [...parseEnvironment(environ).targets.keys()].toSorted();
|
|
209
|
+
export const outboundAgentDefinition = (name, environ = process.env) => {
|
|
210
|
+
const folded = name.toLowerCase();
|
|
211
|
+
const { targets, companions } = parseEnvironment(environ);
|
|
212
|
+
const target = targets.get(folded);
|
|
213
|
+
if (target === undefined)
|
|
214
|
+
return null;
|
|
215
|
+
if (target.value.length === 0)
|
|
216
|
+
throw new Error(`${target.key} must not be empty.`);
|
|
217
|
+
const fields = companions.get(folded);
|
|
218
|
+
const cardPathField = fields?.get("_card_path");
|
|
219
|
+
const cardPath = cardPathField?.value;
|
|
220
|
+
if (cardPath !== undefined && (!cardPath.startsWith("/") || cardPath.includes("?") || cardPath.includes("#"))) {
|
|
221
|
+
throw new Error(`${cardPathField?.key} must be an absolute URL pathname without query or fragment.`);
|
|
222
|
+
}
|
|
223
|
+
const headersField = fields?.get("_headers");
|
|
224
|
+
const headers = jsonRecord(headersField?.value, headersField?.key ?? `${PREFIX}${folded.toUpperCase()}_HEADERS`);
|
|
225
|
+
const bearer = fields?.get("_bearer");
|
|
226
|
+
if (bearer !== undefined && !ENV_REFERENCE.test(bearer.value)) {
|
|
227
|
+
throw new Error(`${bearer.key} must be a symbolic environment reference such as \${TOKEN}.`);
|
|
228
|
+
}
|
|
229
|
+
const authorizationHeader = Object.keys(headers ?? {}).find((key) => key.toLowerCase() === "authorization");
|
|
230
|
+
if (bearer !== undefined && authorizationHeader !== undefined) {
|
|
231
|
+
throw new Error(`${bearer.key} conflicts with Authorization in ${headersField?.key}.`);
|
|
232
|
+
}
|
|
233
|
+
return {
|
|
234
|
+
name: folded,
|
|
235
|
+
url: absoluteHttpUrl(target.value, target.key),
|
|
236
|
+
...(cardPath === undefined || cardPath.length === 0 ? {} : { cardPath }),
|
|
237
|
+
...(headers === undefined ? {} : { headers }),
|
|
238
|
+
...(bearer === undefined ? {} : {
|
|
239
|
+
authorization: { type: "bearer", token: bearer.value },
|
|
240
|
+
}),
|
|
241
|
+
};
|
|
242
|
+
};
|
|
243
|
+
export const outboundDefinitions = (environ = process.env) => outboundAgentNames(environ).map((name) => {
|
|
244
|
+
const definition = outboundAgentDefinition(name, environ);
|
|
245
|
+
if (definition === null)
|
|
246
|
+
throw new Error(`A2A agent '${name}' disappeared during configuration.`);
|
|
247
|
+
return definition;
|
|
248
|
+
});
|
|
249
|
+
export const serviceEnabledNames = (environ = process.env) => {
|
|
250
|
+
const field = `${PREFIX}ENABLED`;
|
|
251
|
+
const configured = jsonStrings(environ[field], field);
|
|
252
|
+
const available = new Set(outboundAgentNames(environ));
|
|
253
|
+
const enabled = new Set();
|
|
254
|
+
for (const name of configured) {
|
|
255
|
+
assertAgentName(name, field);
|
|
256
|
+
if (!available.has(name))
|
|
257
|
+
throw new Error(`${field} contains unknown A2A agent '${name}'.`);
|
|
258
|
+
if (enabled.has(name))
|
|
259
|
+
throw new Error(`${field} contains duplicate A2A agent '${name}'.`);
|
|
260
|
+
enabled.add(name);
|
|
261
|
+
}
|
|
262
|
+
return [...enabled].toSorted();
|
|
263
|
+
};
|
|
264
|
+
export const hostedAgentConfiguration = (environ = process.env) => {
|
|
265
|
+
const enabled = environ.PLURNK_A2A_EXPOSE;
|
|
266
|
+
if (enabled === undefined || enabled.length === 0 || enabled === "0")
|
|
267
|
+
return null;
|
|
268
|
+
if (enabled !== "1")
|
|
269
|
+
throw new Error(`PLURNK_A2A_EXPOSE must be 0 or 1; got ${JSON.stringify(enabled)}.`);
|
|
270
|
+
parseEnvironment(environ);
|
|
271
|
+
const endpointPath = required(environ, "PLURNK_A2A_ENDPOINT_PATH");
|
|
272
|
+
if (!endpointPath.startsWith("/") || endpointPath.includes("?") || endpointPath.includes("#")) {
|
|
273
|
+
throw new Error("PLURNK_A2A_ENDPOINT_PATH must be an absolute URL pathname without query or fragment.");
|
|
274
|
+
}
|
|
275
|
+
const projectRoot = environ.PLURNK_A2A_PROJECT_ROOT;
|
|
276
|
+
if (projectRoot !== undefined && projectRoot.length > 0 && !isAbsolute(projectRoot)) {
|
|
277
|
+
throw new Error("PLURNK_A2A_PROJECT_ROOT must be empty or an absolute filesystem path.");
|
|
278
|
+
}
|
|
279
|
+
const providerOrganization = environ.PLURNK_A2A_PROVIDER_ORGANIZATION;
|
|
280
|
+
const providerUrl = environ.PLURNK_A2A_PROVIDER_URL;
|
|
281
|
+
if ((providerOrganization?.length ?? 0) > 0 !== ((providerUrl?.length ?? 0) > 0)) {
|
|
282
|
+
throw new Error("PLURNK_A2A_PROVIDER_ORGANIZATION and PLURNK_A2A_PROVIDER_URL must be set together.");
|
|
283
|
+
}
|
|
284
|
+
const endpointUrl = optionalUrl(environ.PLURNK_A2A_ENDPOINT_URL, "PLURNK_A2A_ENDPOINT_URL");
|
|
285
|
+
const documentationUrl = optionalUrl(environ.PLURNK_A2A_DOCUMENTATION_URL, "PLURNK_A2A_DOCUMENTATION_URL");
|
|
286
|
+
const iconUrl = optionalUrl(environ.PLURNK_A2A_ICON_URL, "PLURNK_A2A_ICON_URL");
|
|
287
|
+
const card = AgentCard.fromJSON({
|
|
288
|
+
name: required(environ, "PLURNK_A2A_NAME"),
|
|
289
|
+
description: required(environ, "PLURNK_A2A_DESCRIPTION"),
|
|
290
|
+
supportedInterfaces: [{
|
|
291
|
+
url: endpointUrl ?? "",
|
|
292
|
+
protocolBinding: "HTTP+JSON",
|
|
293
|
+
protocolVersion: A2A_PROTOCOL_VERSION,
|
|
294
|
+
tenant: "",
|
|
295
|
+
}],
|
|
296
|
+
provider: providerOrganization === undefined || providerOrganization.length === 0
|
|
297
|
+
? undefined
|
|
298
|
+
: {
|
|
299
|
+
organization: providerOrganization,
|
|
300
|
+
url: absoluteHttpUrl(providerUrl, "PLURNK_A2A_PROVIDER_URL"),
|
|
301
|
+
},
|
|
302
|
+
version: required(environ, "PLURNK_A2A_VERSION"),
|
|
303
|
+
capabilities: {
|
|
304
|
+
streaming: true,
|
|
305
|
+
pushNotifications: false,
|
|
306
|
+
extensions: [],
|
|
307
|
+
extendedAgentCard: false,
|
|
308
|
+
},
|
|
309
|
+
securitySchemes: {},
|
|
310
|
+
securityRequirements: [],
|
|
311
|
+
defaultInputModes: INPUT_MODES,
|
|
312
|
+
defaultOutputModes: OUTPUT_MODES,
|
|
313
|
+
skills: skills(environ.PLURNK_A2A_SKILLS),
|
|
314
|
+
signatures: [],
|
|
315
|
+
...(documentationUrl === undefined ? {} : { documentationUrl }),
|
|
316
|
+
...(iconUrl === undefined ? {} : { iconUrl }),
|
|
317
|
+
});
|
|
318
|
+
return {
|
|
319
|
+
host: required(environ, "PLURNK_A2A_HOST"),
|
|
320
|
+
port: listenerPort(environ.PLURNK_A2A_PORT),
|
|
321
|
+
endpointPath,
|
|
322
|
+
...(endpointUrl === undefined ? {} : { endpointUrl }),
|
|
323
|
+
workspace: {
|
|
324
|
+
name: required(environ, "PLURNK_A2A_WORKSPACE"),
|
|
325
|
+
projectRoot: projectRoot === undefined || projectRoot.length === 0 ? null : projectRoot,
|
|
326
|
+
},
|
|
327
|
+
card,
|
|
328
|
+
};
|
|
329
|
+
};
|
|
330
|
+
export const connectTimeoutMs = (environ = process.env) => positiveInteger(environ.PLURNK_A2A_CONNECT_TIMEOUT, "PLURNK_A2A_CONNECT_TIMEOUT");
|
|
331
|
+
export const requestTimeoutMs = (environ = process.env) => positiveInteger(environ.PLURNK_A2A_REQUEST_TIMEOUT, "PLURNK_A2A_REQUEST_TIMEOUT");
|
|
332
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { default as A2a, type A2aClientResolver } from "./A2a.ts";
|
|
2
|
+
export { default as A2aMessage, type A2aMessageIdentity } from "./A2aMessage.ts";
|
|
3
|
+
export { default as A2aProjection, type A2aTaskContent } from "./A2aProjection.ts";
|
|
4
|
+
export { connectHttpJsonAgent, connectHttpJsonAgentFromCard, discoverAgentCard, type HttpJsonConnectionOptions } from "./HttpJsonClient.ts";
|
|
5
|
+
export { default as A2aFunctionality, AGENTS_FAMILY, AGENTS_OWNER, aliasOfCard, renderAgent } from "./Functionality.ts";
|
|
6
|
+
export { default as OutboundModule } from "./OutboundModule.ts";
|
|
7
|
+
export { default as Module, type A2aModuleOptions, type A2aModuleRegistration } from "./Module.ts";
|
|
8
|
+
export type { A2aWorkspaceConfiguration } from "./WorkspaceBinding.ts";
|
|
9
|
+
export { connectTimeoutMs, hostedAgentConfiguration, outboundAgentDefinition, outboundAgentNames, outboundDefinitions, requestTimeoutMs, serviceEnabledNames, type HostedAgentConfiguration, type OutboundAgentDefinition, } from "./config.ts";
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,KAAK,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,iBAAiB,EAAE,KAAK,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAC5I,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACxH,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,KAAK,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACnG,YAAY,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EACH,gBAAgB,EAChB,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,GAC/B,MAAM,aAAa,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { default as A2a } from "./A2a.js";
|
|
2
|
+
export { default as A2aMessage } from "./A2aMessage.js";
|
|
3
|
+
export { default as A2aProjection } from "./A2aProjection.js";
|
|
4
|
+
export { connectHttpJsonAgent, connectHttpJsonAgentFromCard, discoverAgentCard } from "./HttpJsonClient.js";
|
|
5
|
+
export { default as A2aFunctionality, AGENTS_FAMILY, AGENTS_OWNER, aliasOfCard, renderAgent } from "./Functionality.js";
|
|
6
|
+
export { default as OutboundModule } from "./OutboundModule.js";
|
|
7
|
+
export { default as Module } from "./Module.js";
|
|
8
|
+
export { connectTimeoutMs, hostedAgentConfiguration, outboundAgentDefinition, outboundAgentNames, outboundDefinitions, requestTimeoutMs, serviceEnabledNames, } from "./config.js";
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,GAAG,EAA0B,MAAM,UAAU,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,UAAU,EAA2B,MAAM,iBAAiB,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,aAAa,EAAuB,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,iBAAiB,EAAkC,MAAM,qBAAqB,CAAC;AAC5I,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACxH,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAqD,MAAM,aAAa,CAAC;AAEnG,OAAO,EACH,gBAAgB,EAChB,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,GAGtB,MAAM,aAAa,CAAC"}
|
package/docs/a2a.md
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# A2A
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
Call configured A2A v1 agents and retain their current Messages, Tasks, and
|
|
6
|
+
Artifacts as addressable Plurnk resources.
|
|
7
|
+
|
|
8
|
+
## Invocation
|
|
9
|
+
|
|
10
|
+
```plurnk
|
|
11
|
+
## SEND0 [200] (a2a://researcher)
|
|
12
|
+
Compare the two proposals and return a recommendation with evidence.
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
`SEND` to an agent root starts new work. A Task response returns `102` and an
|
|
16
|
+
exact `a2a://<agent>/tasks/<id>` resource; a direct Message returns `200` and an
|
|
17
|
+
exact `a2a://<agent>/messages/<id>` resource. Continue an interrupted Task by
|
|
18
|
+
sending the requested input to its Task resource.
|
|
19
|
+
|
|
20
|
+
Task resources default to a concise `#body` and retain the protocol snapshot in
|
|
21
|
+
`#json`. Their Artifact addresses are listed in the body and materialize on
|
|
22
|
+
READ. `SEND [499]` to a live Task resource cancels the local obligation and
|
|
23
|
+
requests remote cancellation.
|
package/package.json
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@plurnk/plurnk-a2a",
|
|
3
|
+
"version": "1.9.0",
|
|
4
|
+
"description": "A2A v1 exterior adapter for Plurnk",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/plurnk/plurnk-service.git",
|
|
10
|
+
"directory": "plurnk-a2a"
|
|
11
|
+
},
|
|
12
|
+
"exports": {
|
|
13
|
+
".": {
|
|
14
|
+
"plurnk-dev": "./src/index.ts",
|
|
15
|
+
"types": "./dist/index.d.ts",
|
|
16
|
+
"default": "./dist/index.js"
|
|
17
|
+
},
|
|
18
|
+
"./package.json": "./package.json"
|
|
19
|
+
},
|
|
20
|
+
"files": [
|
|
21
|
+
".env.defaults",
|
|
22
|
+
"dist/**/*",
|
|
23
|
+
"docs/**/*",
|
|
24
|
+
"README.md",
|
|
25
|
+
"SPEC.md"
|
|
26
|
+
],
|
|
27
|
+
"engines": {
|
|
28
|
+
"node": ">=26"
|
|
29
|
+
},
|
|
30
|
+
"scripts": {
|
|
31
|
+
"test": "npm run test:lint && npm run test:unit && npm run test:intg",
|
|
32
|
+
"test:lint": "tsc --noEmit",
|
|
33
|
+
"test:unit": "node --conditions=plurnk-dev --test src/*.test.ts",
|
|
34
|
+
"test:intg": "node --conditions=plurnk-dev --test test/intg/*.test.ts",
|
|
35
|
+
"build:clean": "rm -rf dist",
|
|
36
|
+
"build:dist": "tsc -p tsconfig.build.json",
|
|
37
|
+
"build": "npm run build:clean && npm run build:dist",
|
|
38
|
+
"prepack": "npm run build",
|
|
39
|
+
"prepublishOnly": "npm audit --audit-level=moderate && npm test"
|
|
40
|
+
},
|
|
41
|
+
"dependencies": {
|
|
42
|
+
"@a2a-js/sdk": "1.0.1",
|
|
43
|
+
"express": "5.2.1"
|
|
44
|
+
},
|
|
45
|
+
"peerDependencies": {
|
|
46
|
+
"@plurnk/plurnk-contracts": "^1.9.0",
|
|
47
|
+
"@plurnk/plurnk-schemes": "^1.9.0"
|
|
48
|
+
},
|
|
49
|
+
"devDependencies": {
|
|
50
|
+
"@types/express": "5.0.6"
|
|
51
|
+
},
|
|
52
|
+
"keywords": [
|
|
53
|
+
"plurnk",
|
|
54
|
+
"a2a",
|
|
55
|
+
"agent",
|
|
56
|
+
"transport"
|
|
57
|
+
],
|
|
58
|
+
"homepage": "https://github.com/plurnk/plurnk-service/tree/main/plurnk-a2a#readme",
|
|
59
|
+
"bugs": {
|
|
60
|
+
"url": "https://repo.possumtech.com/plurnk/plurnk-service/issues"
|
|
61
|
+
},
|
|
62
|
+
"author": "@wikitopian",
|
|
63
|
+
"publishConfig": {
|
|
64
|
+
"access": "public"
|
|
65
|
+
}
|
|
66
|
+
}
|