@distri/core 0.2.2 → 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 +179 -13
- package/dist/index.d.ts +179 -13
- package/dist/index.js +280 -42
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +269 -42
- 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" } };
|
|
@@ -646,6 +875,7 @@ var DistriClient = class {
|
|
|
646
875
|
const client = this.getA2AClient(agentId);
|
|
647
876
|
yield* await client.sendMessageStream(params);
|
|
648
877
|
} catch (error) {
|
|
878
|
+
console.error(error);
|
|
649
879
|
throw new DistriError(`Failed to stream message to agent ${agentId}`, "STREAM_MESSAGE_ERROR", error);
|
|
650
880
|
}
|
|
651
881
|
}
|
|
@@ -739,9 +969,10 @@ var DistriClient = class {
|
|
|
739
969
|
*/
|
|
740
970
|
async sendDistriMessage(threadId, message, context) {
|
|
741
971
|
const a2aMessage = convertDistriMessageToA2A(message, context);
|
|
972
|
+
const contextMetadata = context.getMetadata?.() || {};
|
|
742
973
|
const params = {
|
|
743
974
|
message: a2aMessage,
|
|
744
|
-
metadata:
|
|
975
|
+
metadata: contextMetadata
|
|
745
976
|
};
|
|
746
977
|
await this.sendMessage(threadId, params);
|
|
747
978
|
}
|
|
@@ -847,9 +1078,10 @@ var DistriClient = class {
|
|
|
847
1078
|
*/
|
|
848
1079
|
static initDistriMessageParams(message, context) {
|
|
849
1080
|
const a2aMessage = convertDistriMessageToA2A(message, context);
|
|
1081
|
+
const contextMetadata = context.getMetadata?.() || {};
|
|
850
1082
|
return {
|
|
851
1083
|
message: a2aMessage,
|
|
852
|
-
metadata:
|
|
1084
|
+
metadata: contextMetadata
|
|
853
1085
|
};
|
|
854
1086
|
}
|
|
855
1087
|
};
|
|
@@ -941,14 +1173,9 @@ var Agent = class _Agent {
|
|
|
941
1173
|
const a2aStream = this.client.sendMessageStream(this.agentDefinition.id, enhancedParams);
|
|
942
1174
|
return async function* () {
|
|
943
1175
|
for await (const event of a2aStream) {
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
yield event;
|
|
948
|
-
} else if (event.kind === "artifact-update") {
|
|
949
|
-
yield event;
|
|
950
|
-
} else {
|
|
951
|
-
yield event;
|
|
1176
|
+
const converted = decodeA2AStreamEvent(event);
|
|
1177
|
+
if (converted) {
|
|
1178
|
+
yield converted;
|
|
952
1179
|
}
|
|
953
1180
|
}
|
|
954
1181
|
}();
|
|
@@ -973,8 +1200,8 @@ var Agent = class _Agent {
|
|
|
973
1200
|
/**
|
|
974
1201
|
* Create an agent instance from an agent ID
|
|
975
1202
|
*/
|
|
976
|
-
static async create(
|
|
977
|
-
const agentDefinition = await client.getAgent(
|
|
1203
|
+
static async create(agentIdOrDef, client) {
|
|
1204
|
+
const agentDefinition = typeof agentIdOrDef === "string" ? await client.getAgent(agentIdOrDef) : agentIdOrDef;
|
|
978
1205
|
return new _Agent(agentDefinition, client);
|
|
979
1206
|
}
|
|
980
1207
|
/**
|
|
@@ -987,17 +1214,28 @@ var Agent = class _Agent {
|
|
|
987
1214
|
};
|
|
988
1215
|
// Annotate the CommonJS export names for ESM import in node:
|
|
989
1216
|
0 && (module.exports = {
|
|
1217
|
+
A2AProtocolError,
|
|
990
1218
|
Agent,
|
|
1219
|
+
ApiError,
|
|
1220
|
+
ConnectionError,
|
|
991
1221
|
DistriClient,
|
|
1222
|
+
DistriError,
|
|
1223
|
+
convertA2AArtifactToDistri,
|
|
992
1224
|
convertA2AMessageToDistri,
|
|
993
1225
|
convertA2APartToDistri,
|
|
1226
|
+
convertA2AStatusUpdateToDistri,
|
|
994
1227
|
convertDistriMessageToA2A,
|
|
995
1228
|
convertDistriPartToA2A,
|
|
1229
|
+
decodeA2AStreamEvent,
|
|
996
1230
|
extractTextFromDistriMessage,
|
|
997
1231
|
extractToolCallsFromDistriMessage,
|
|
998
1232
|
extractToolResultsFromDistriMessage,
|
|
1233
|
+
isDistriArtifact,
|
|
999
1234
|
isDistriEvent,
|
|
1000
1235
|
isDistriMessage,
|
|
1236
|
+
isDistriPlan,
|
|
1237
|
+
processA2AMessagesData,
|
|
1238
|
+
processA2AStreamData,
|
|
1001
1239
|
uuidv4
|
|
1002
1240
|
});
|
|
1003
1241
|
//# sourceMappingURL=index.js.map
|