@distri/core 0.2.3 → 0.2.4
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/dist/index.d.mts +178 -12
- package/dist/index.d.ts +178 -12
- package/dist/index.js +275 -40
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +264 -40
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -22,21 +22,73 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
22
22
|
// src/index.ts
|
|
23
23
|
var index_exports = {};
|
|
24
24
|
__export(index_exports, {
|
|
25
|
+
A2AProtocolError: () => A2AProtocolError,
|
|
25
26
|
Agent: () => Agent,
|
|
27
|
+
ApiError: () => ApiError,
|
|
28
|
+
ConnectionError: () => ConnectionError,
|
|
26
29
|
DistriClient: () => DistriClient,
|
|
30
|
+
DistriError: () => DistriError,
|
|
31
|
+
convertA2AArtifactToDistri: () => convertA2AArtifactToDistri,
|
|
27
32
|
convertA2AMessageToDistri: () => convertA2AMessageToDistri,
|
|
28
33
|
convertA2APartToDistri: () => convertA2APartToDistri,
|
|
34
|
+
convertA2AStatusUpdateToDistri: () => convertA2AStatusUpdateToDistri,
|
|
29
35
|
convertDistriMessageToA2A: () => convertDistriMessageToA2A,
|
|
30
36
|
convertDistriPartToA2A: () => convertDistriPartToA2A,
|
|
37
|
+
decodeA2AStreamEvent: () => decodeA2AStreamEvent,
|
|
31
38
|
extractTextFromDistriMessage: () => extractTextFromDistriMessage,
|
|
32
39
|
extractToolCallsFromDistriMessage: () => extractToolCallsFromDistriMessage,
|
|
33
40
|
extractToolResultsFromDistriMessage: () => extractToolResultsFromDistriMessage,
|
|
41
|
+
isDistriArtifact: () => isDistriArtifact,
|
|
34
42
|
isDistriEvent: () => isDistriEvent,
|
|
35
43
|
isDistriMessage: () => isDistriMessage,
|
|
44
|
+
isDistriPlan: () => isDistriPlan,
|
|
45
|
+
processA2AMessagesData: () => processA2AMessagesData,
|
|
46
|
+
processA2AStreamData: () => processA2AStreamData,
|
|
36
47
|
uuidv4: () => uuidv4
|
|
37
48
|
});
|
|
38
49
|
module.exports = __toCommonJS(index_exports);
|
|
39
50
|
|
|
51
|
+
// src/types.ts
|
|
52
|
+
var DistriError = class extends Error {
|
|
53
|
+
constructor(message, code, details) {
|
|
54
|
+
super(message);
|
|
55
|
+
this.code = code;
|
|
56
|
+
this.details = details;
|
|
57
|
+
this.name = "DistriError";
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
var A2AProtocolError = class extends DistriError {
|
|
61
|
+
constructor(message, details) {
|
|
62
|
+
super(message, "A2A_PROTOCOL_ERROR", details);
|
|
63
|
+
this.name = "A2AProtocolError";
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
var ApiError = class extends DistriError {
|
|
67
|
+
constructor(message, statusCode, details) {
|
|
68
|
+
super(message, "API_ERROR", details);
|
|
69
|
+
this.statusCode = statusCode;
|
|
70
|
+
this.name = "ApiError";
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
var ConnectionError = class extends DistriError {
|
|
74
|
+
constructor(message, details) {
|
|
75
|
+
super(message, "CONNECTION_ERROR", details);
|
|
76
|
+
this.name = "ConnectionError";
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
function isDistriMessage(event) {
|
|
80
|
+
return "id" in event && "role" in event && "parts" in event;
|
|
81
|
+
}
|
|
82
|
+
function isDistriEvent(event) {
|
|
83
|
+
return "type" in event && "data" in event;
|
|
84
|
+
}
|
|
85
|
+
function isDistriPlan(event) {
|
|
86
|
+
return "steps" in event && Array.isArray(event.steps) && "reasoning" in event;
|
|
87
|
+
}
|
|
88
|
+
function isDistriArtifact(event) {
|
|
89
|
+
return "type" in event && "timestamp" in event && "id" in event;
|
|
90
|
+
}
|
|
91
|
+
|
|
40
92
|
// ../../node_modules/.pnpm/@a2a-js+sdk@https+++codeload.github.com+v3g42+a2a-js+tar.gz+51444c9/node_modules/@a2a-js/sdk/dist/chunk-CUGIRVQB.js
|
|
41
93
|
var A2AClient = class {
|
|
42
94
|
/**
|
|
@@ -407,35 +459,6 @@ var A2AClient = class {
|
|
|
407
459
|
}
|
|
408
460
|
};
|
|
409
461
|
|
|
410
|
-
// src/types.ts
|
|
411
|
-
var DistriError = class extends Error {
|
|
412
|
-
constructor(message, code, details) {
|
|
413
|
-
super(message);
|
|
414
|
-
this.code = code;
|
|
415
|
-
this.details = details;
|
|
416
|
-
this.name = "DistriError";
|
|
417
|
-
}
|
|
418
|
-
};
|
|
419
|
-
var A2AProtocolError = class extends DistriError {
|
|
420
|
-
constructor(message, details) {
|
|
421
|
-
super(message, "A2A_PROTOCOL_ERROR", details);
|
|
422
|
-
this.name = "A2AProtocolError";
|
|
423
|
-
}
|
|
424
|
-
};
|
|
425
|
-
var ApiError = class extends DistriError {
|
|
426
|
-
constructor(message, statusCode, details) {
|
|
427
|
-
super(message, "API_ERROR", details);
|
|
428
|
-
this.statusCode = statusCode;
|
|
429
|
-
this.name = "ApiError";
|
|
430
|
-
}
|
|
431
|
-
};
|
|
432
|
-
function isDistriMessage(event) {
|
|
433
|
-
return "id" in event && "role" in event && "parts" in event;
|
|
434
|
-
}
|
|
435
|
-
function isDistriEvent(event) {
|
|
436
|
-
return "type" in event && "metadata" in event;
|
|
437
|
-
}
|
|
438
|
-
|
|
439
462
|
// src/encoder.ts
|
|
440
463
|
function convertA2AMessageToDistri(a2aMessage) {
|
|
441
464
|
const role = a2aMessage.role === "agent" ? "assistant" : "user";
|
|
@@ -446,6 +469,212 @@ function convertA2AMessageToDistri(a2aMessage) {
|
|
|
446
469
|
created_at: a2aMessage.createdAt
|
|
447
470
|
};
|
|
448
471
|
}
|
|
472
|
+
function convertA2AStatusUpdateToDistri(statusUpdate) {
|
|
473
|
+
if (!statusUpdate.metadata || !statusUpdate.metadata.type) {
|
|
474
|
+
return null;
|
|
475
|
+
}
|
|
476
|
+
const metadata = statusUpdate.metadata;
|
|
477
|
+
switch (metadata.type) {
|
|
478
|
+
case "run_started":
|
|
479
|
+
return {
|
|
480
|
+
type: "run_started",
|
|
481
|
+
data: {}
|
|
482
|
+
};
|
|
483
|
+
case "run_finished":
|
|
484
|
+
return {
|
|
485
|
+
type: "run_finished",
|
|
486
|
+
data: {}
|
|
487
|
+
};
|
|
488
|
+
case "plan_started":
|
|
489
|
+
return {
|
|
490
|
+
type: "plan_started",
|
|
491
|
+
data: {
|
|
492
|
+
initial_plan: metadata.initial_plan
|
|
493
|
+
}
|
|
494
|
+
};
|
|
495
|
+
case "plan_finished":
|
|
496
|
+
return {
|
|
497
|
+
type: "plan_finished",
|
|
498
|
+
data: {
|
|
499
|
+
total_steps: metadata.total_steps
|
|
500
|
+
}
|
|
501
|
+
};
|
|
502
|
+
case "step_started":
|
|
503
|
+
return {
|
|
504
|
+
type: "step_started",
|
|
505
|
+
data: {
|
|
506
|
+
step_id: metadata.step_id,
|
|
507
|
+
step_title: metadata.step_title || "Processing",
|
|
508
|
+
step_index: metadata.step_index || 0
|
|
509
|
+
}
|
|
510
|
+
};
|
|
511
|
+
case "step_completed":
|
|
512
|
+
return {
|
|
513
|
+
type: "step_completed",
|
|
514
|
+
data: {
|
|
515
|
+
step_id: metadata.step_id,
|
|
516
|
+
step_title: metadata.step_title || "Processing",
|
|
517
|
+
step_index: metadata.step_index || 0
|
|
518
|
+
}
|
|
519
|
+
};
|
|
520
|
+
case "tool_execution_start":
|
|
521
|
+
return {
|
|
522
|
+
type: "tool_call_start",
|
|
523
|
+
data: {
|
|
524
|
+
tool_call_id: metadata.tool_call_id,
|
|
525
|
+
tool_call_name: metadata.tool_call_name || "Tool",
|
|
526
|
+
parent_message_id: statusUpdate.taskId,
|
|
527
|
+
is_external: true
|
|
528
|
+
}
|
|
529
|
+
};
|
|
530
|
+
case "tool_execution_end":
|
|
531
|
+
return {
|
|
532
|
+
type: "tool_call_end",
|
|
533
|
+
data: {
|
|
534
|
+
tool_call_id: metadata.tool_call_id
|
|
535
|
+
}
|
|
536
|
+
};
|
|
537
|
+
case "text_message_start":
|
|
538
|
+
return {
|
|
539
|
+
type: "text_message_start",
|
|
540
|
+
data: {
|
|
541
|
+
message_id: metadata.message_id,
|
|
542
|
+
role: metadata.role === "assistant" ? "assistant" : "user"
|
|
543
|
+
}
|
|
544
|
+
};
|
|
545
|
+
case "text_message_content":
|
|
546
|
+
return {
|
|
547
|
+
type: "text_message_content",
|
|
548
|
+
data: {
|
|
549
|
+
message_id: metadata.message_id,
|
|
550
|
+
delta: metadata.delta || ""
|
|
551
|
+
}
|
|
552
|
+
};
|
|
553
|
+
case "text_message_end":
|
|
554
|
+
return {
|
|
555
|
+
type: "text_message_end",
|
|
556
|
+
data: {
|
|
557
|
+
message_id: metadata.message_id
|
|
558
|
+
}
|
|
559
|
+
};
|
|
560
|
+
default:
|
|
561
|
+
console.warn(`Unhandled status update metadata type: ${metadata.type}`, metadata);
|
|
562
|
+
return {
|
|
563
|
+
type: "run_started",
|
|
564
|
+
data: { metadata }
|
|
565
|
+
};
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
function convertA2AArtifactToDistri(artifact) {
|
|
569
|
+
if (!artifact || !artifact.parts || !Array.isArray(artifact.parts)) {
|
|
570
|
+
return null;
|
|
571
|
+
}
|
|
572
|
+
const part = artifact.parts[0];
|
|
573
|
+
if (!part || part.kind !== "data" || !part.data) {
|
|
574
|
+
return null;
|
|
575
|
+
}
|
|
576
|
+
const data = part.data;
|
|
577
|
+
if (data.type === "llm_response") {
|
|
578
|
+
const hasContent = data.content && data.content.trim() !== "";
|
|
579
|
+
const hasToolCalls = data.tool_calls && Array.isArray(data.tool_calls) && data.tool_calls.length > 0;
|
|
580
|
+
const isExternal = data.is_external;
|
|
581
|
+
if (hasToolCalls) {
|
|
582
|
+
const executionResult2 = {
|
|
583
|
+
id: data.id || artifact.artifactId,
|
|
584
|
+
type: "llm_response",
|
|
585
|
+
timestamp: data.timestamp || data.created_at || Date.now(),
|
|
586
|
+
content: data.content?.trim() || "",
|
|
587
|
+
tool_calls: data.tool_calls,
|
|
588
|
+
step_id: data.step_id,
|
|
589
|
+
success: data.success,
|
|
590
|
+
rejected: data.rejected,
|
|
591
|
+
reason: data.reason,
|
|
592
|
+
is_external: isExternal
|
|
593
|
+
};
|
|
594
|
+
return executionResult2;
|
|
595
|
+
} else {
|
|
596
|
+
const parts = [];
|
|
597
|
+
if (hasContent) {
|
|
598
|
+
parts.push({ type: "text", text: data.content });
|
|
599
|
+
}
|
|
600
|
+
const distriMessage = {
|
|
601
|
+
id: artifact.artifactId,
|
|
602
|
+
role: "assistant",
|
|
603
|
+
parts,
|
|
604
|
+
created_at: data.timestamp || data.created_at || (/* @__PURE__ */ new Date()).toISOString()
|
|
605
|
+
};
|
|
606
|
+
return distriMessage;
|
|
607
|
+
}
|
|
608
|
+
}
|
|
609
|
+
if (data.type === "tool_results") {
|
|
610
|
+
const executionResult2 = {
|
|
611
|
+
id: data.id || artifact.artifactId,
|
|
612
|
+
type: "tool_results",
|
|
613
|
+
timestamp: data.timestamp || data.created_at || Date.now(),
|
|
614
|
+
results: data.results || [],
|
|
615
|
+
step_id: data.step_id,
|
|
616
|
+
success: data.success,
|
|
617
|
+
rejected: data.rejected,
|
|
618
|
+
reason: data.reason
|
|
619
|
+
};
|
|
620
|
+
return executionResult2;
|
|
621
|
+
}
|
|
622
|
+
if (data.type === "plan") {
|
|
623
|
+
const planResult = {
|
|
624
|
+
id: data.id || artifact.artifactId,
|
|
625
|
+
type: "plan",
|
|
626
|
+
timestamp: data.timestamp || data.created_at || Date.now(),
|
|
627
|
+
reasoning: data.reasoning || "",
|
|
628
|
+
steps: data.steps || []
|
|
629
|
+
};
|
|
630
|
+
return planResult;
|
|
631
|
+
}
|
|
632
|
+
const executionResult = {
|
|
633
|
+
id: artifact.artifactId,
|
|
634
|
+
type: "artifact",
|
|
635
|
+
timestamp: Date.now(),
|
|
636
|
+
data,
|
|
637
|
+
artifactId: artifact.artifactId,
|
|
638
|
+
name: artifact.name || "",
|
|
639
|
+
description: artifact.description || null
|
|
640
|
+
};
|
|
641
|
+
return executionResult;
|
|
642
|
+
}
|
|
643
|
+
function decodeA2AStreamEvent(event) {
|
|
644
|
+
if (event.artifactId && event.parts) {
|
|
645
|
+
return convertA2AArtifactToDistri(event);
|
|
646
|
+
}
|
|
647
|
+
if (event.kind === "message") {
|
|
648
|
+
return convertA2AMessageToDistri(event);
|
|
649
|
+
}
|
|
650
|
+
if (event.kind === "status-update") {
|
|
651
|
+
return convertA2AStatusUpdateToDistri(event);
|
|
652
|
+
}
|
|
653
|
+
if (event.kind === "artifact-update") {
|
|
654
|
+
return convertA2AArtifactToDistri(event);
|
|
655
|
+
}
|
|
656
|
+
return null;
|
|
657
|
+
}
|
|
658
|
+
function processA2AStreamData(streamData) {
|
|
659
|
+
const results = [];
|
|
660
|
+
for (const item of streamData) {
|
|
661
|
+
const converted = decodeA2AStreamEvent(item);
|
|
662
|
+
if (converted) {
|
|
663
|
+
results.push(converted);
|
|
664
|
+
}
|
|
665
|
+
}
|
|
666
|
+
return results;
|
|
667
|
+
}
|
|
668
|
+
function processA2AMessagesData(data) {
|
|
669
|
+
const results = [];
|
|
670
|
+
for (const item of data) {
|
|
671
|
+
if (item.kind === "message") {
|
|
672
|
+
const distriMessage = convertA2AMessageToDistri(item);
|
|
673
|
+
results.push(distriMessage);
|
|
674
|
+
}
|
|
675
|
+
}
|
|
676
|
+
return results;
|
|
677
|
+
}
|
|
449
678
|
function convertA2APartToDistri(a2aPart) {
|
|
450
679
|
switch (a2aPart.kind) {
|
|
451
680
|
case "text":
|
|
@@ -513,11 +742,11 @@ function convertDistriPartToA2A(distriPart) {
|
|
|
513
742
|
kind: "data",
|
|
514
743
|
data: {
|
|
515
744
|
tool_call_id: distriPart.tool_result.tool_call_id,
|
|
745
|
+
tool_name: distriPart.tool_result.tool_name,
|
|
516
746
|
result: distriPart.tool_result.result,
|
|
517
747
|
part_type: "tool_result"
|
|
518
748
|
}
|
|
519
749
|
};
|
|
520
|
-
console.log("<> val", val);
|
|
521
750
|
return val;
|
|
522
751
|
case "code_observation":
|
|
523
752
|
return { kind: "data", data: { ...distriPart, part_type: "code_observation" } };
|
|
@@ -944,14 +1173,9 @@ var Agent = class _Agent {
|
|
|
944
1173
|
const a2aStream = this.client.sendMessageStream(this.agentDefinition.id, enhancedParams);
|
|
945
1174
|
return async function* () {
|
|
946
1175
|
for await (const event of a2aStream) {
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
yield event;
|
|
951
|
-
} else if (event.kind === "artifact-update") {
|
|
952
|
-
yield event;
|
|
953
|
-
} else {
|
|
954
|
-
yield event;
|
|
1176
|
+
const converted = decodeA2AStreamEvent(event);
|
|
1177
|
+
if (converted) {
|
|
1178
|
+
yield converted;
|
|
955
1179
|
}
|
|
956
1180
|
}
|
|
957
1181
|
}();
|
|
@@ -976,8 +1200,8 @@ var Agent = class _Agent {
|
|
|
976
1200
|
/**
|
|
977
1201
|
* Create an agent instance from an agent ID
|
|
978
1202
|
*/
|
|
979
|
-
static async create(
|
|
980
|
-
const agentDefinition = await client.getAgent(
|
|
1203
|
+
static async create(agentIdOrDef, client) {
|
|
1204
|
+
const agentDefinition = typeof agentIdOrDef === "string" ? await client.getAgent(agentIdOrDef) : agentIdOrDef;
|
|
981
1205
|
return new _Agent(agentDefinition, client);
|
|
982
1206
|
}
|
|
983
1207
|
/**
|
|
@@ -990,17 +1214,28 @@ var Agent = class _Agent {
|
|
|
990
1214
|
};
|
|
991
1215
|
// Annotate the CommonJS export names for ESM import in node:
|
|
992
1216
|
0 && (module.exports = {
|
|
1217
|
+
A2AProtocolError,
|
|
993
1218
|
Agent,
|
|
1219
|
+
ApiError,
|
|
1220
|
+
ConnectionError,
|
|
994
1221
|
DistriClient,
|
|
1222
|
+
DistriError,
|
|
1223
|
+
convertA2AArtifactToDistri,
|
|
995
1224
|
convertA2AMessageToDistri,
|
|
996
1225
|
convertA2APartToDistri,
|
|
1226
|
+
convertA2AStatusUpdateToDistri,
|
|
997
1227
|
convertDistriMessageToA2A,
|
|
998
1228
|
convertDistriPartToA2A,
|
|
1229
|
+
decodeA2AStreamEvent,
|
|
999
1230
|
extractTextFromDistriMessage,
|
|
1000
1231
|
extractToolCallsFromDistriMessage,
|
|
1001
1232
|
extractToolResultsFromDistriMessage,
|
|
1233
|
+
isDistriArtifact,
|
|
1002
1234
|
isDistriEvent,
|
|
1003
1235
|
isDistriMessage,
|
|
1236
|
+
isDistriPlan,
|
|
1237
|
+
processA2AMessagesData,
|
|
1238
|
+
processA2AStreamData,
|
|
1004
1239
|
uuidv4
|
|
1005
1240
|
});
|
|
1006
1241
|
//# sourceMappingURL=index.js.map
|