@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.mjs
CHANGED
|
@@ -2,6 +2,47 @@ var __defProp = Object.defineProperty;
|
|
|
2
2
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
3
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
4
|
|
|
5
|
+
// src/types.ts
|
|
6
|
+
var DistriError = class extends Error {
|
|
7
|
+
constructor(message, code, details) {
|
|
8
|
+
super(message);
|
|
9
|
+
this.code = code;
|
|
10
|
+
this.details = details;
|
|
11
|
+
this.name = "DistriError";
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
var A2AProtocolError = class extends DistriError {
|
|
15
|
+
constructor(message, details) {
|
|
16
|
+
super(message, "A2A_PROTOCOL_ERROR", details);
|
|
17
|
+
this.name = "A2AProtocolError";
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
var ApiError = class extends DistriError {
|
|
21
|
+
constructor(message, statusCode, details) {
|
|
22
|
+
super(message, "API_ERROR", details);
|
|
23
|
+
this.statusCode = statusCode;
|
|
24
|
+
this.name = "ApiError";
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
var ConnectionError = class extends DistriError {
|
|
28
|
+
constructor(message, details) {
|
|
29
|
+
super(message, "CONNECTION_ERROR", details);
|
|
30
|
+
this.name = "ConnectionError";
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
function isDistriMessage(event) {
|
|
34
|
+
return "id" in event && "role" in event && "parts" in event;
|
|
35
|
+
}
|
|
36
|
+
function isDistriEvent(event) {
|
|
37
|
+
return "type" in event && "data" in event;
|
|
38
|
+
}
|
|
39
|
+
function isDistriPlan(event) {
|
|
40
|
+
return "steps" in event && Array.isArray(event.steps) && "reasoning" in event;
|
|
41
|
+
}
|
|
42
|
+
function isDistriArtifact(event) {
|
|
43
|
+
return "type" in event && "timestamp" in event && "id" in event;
|
|
44
|
+
}
|
|
45
|
+
|
|
5
46
|
// ../../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
|
|
6
47
|
var A2AClient = class {
|
|
7
48
|
/**
|
|
@@ -372,35 +413,6 @@ var A2AClient = class {
|
|
|
372
413
|
}
|
|
373
414
|
};
|
|
374
415
|
|
|
375
|
-
// src/types.ts
|
|
376
|
-
var DistriError = class extends Error {
|
|
377
|
-
constructor(message, code, details) {
|
|
378
|
-
super(message);
|
|
379
|
-
this.code = code;
|
|
380
|
-
this.details = details;
|
|
381
|
-
this.name = "DistriError";
|
|
382
|
-
}
|
|
383
|
-
};
|
|
384
|
-
var A2AProtocolError = class extends DistriError {
|
|
385
|
-
constructor(message, details) {
|
|
386
|
-
super(message, "A2A_PROTOCOL_ERROR", details);
|
|
387
|
-
this.name = "A2AProtocolError";
|
|
388
|
-
}
|
|
389
|
-
};
|
|
390
|
-
var ApiError = class extends DistriError {
|
|
391
|
-
constructor(message, statusCode, details) {
|
|
392
|
-
super(message, "API_ERROR", details);
|
|
393
|
-
this.statusCode = statusCode;
|
|
394
|
-
this.name = "ApiError";
|
|
395
|
-
}
|
|
396
|
-
};
|
|
397
|
-
function isDistriMessage(event) {
|
|
398
|
-
return "id" in event && "role" in event && "parts" in event;
|
|
399
|
-
}
|
|
400
|
-
function isDistriEvent(event) {
|
|
401
|
-
return "type" in event && "metadata" in event;
|
|
402
|
-
}
|
|
403
|
-
|
|
404
416
|
// src/encoder.ts
|
|
405
417
|
function convertA2AMessageToDistri(a2aMessage) {
|
|
406
418
|
const role = a2aMessage.role === "agent" ? "assistant" : "user";
|
|
@@ -411,6 +423,212 @@ function convertA2AMessageToDistri(a2aMessage) {
|
|
|
411
423
|
created_at: a2aMessage.createdAt
|
|
412
424
|
};
|
|
413
425
|
}
|
|
426
|
+
function convertA2AStatusUpdateToDistri(statusUpdate) {
|
|
427
|
+
if (!statusUpdate.metadata || !statusUpdate.metadata.type) {
|
|
428
|
+
return null;
|
|
429
|
+
}
|
|
430
|
+
const metadata = statusUpdate.metadata;
|
|
431
|
+
switch (metadata.type) {
|
|
432
|
+
case "run_started":
|
|
433
|
+
return {
|
|
434
|
+
type: "run_started",
|
|
435
|
+
data: {}
|
|
436
|
+
};
|
|
437
|
+
case "run_finished":
|
|
438
|
+
return {
|
|
439
|
+
type: "run_finished",
|
|
440
|
+
data: {}
|
|
441
|
+
};
|
|
442
|
+
case "plan_started":
|
|
443
|
+
return {
|
|
444
|
+
type: "plan_started",
|
|
445
|
+
data: {
|
|
446
|
+
initial_plan: metadata.initial_plan
|
|
447
|
+
}
|
|
448
|
+
};
|
|
449
|
+
case "plan_finished":
|
|
450
|
+
return {
|
|
451
|
+
type: "plan_finished",
|
|
452
|
+
data: {
|
|
453
|
+
total_steps: metadata.total_steps
|
|
454
|
+
}
|
|
455
|
+
};
|
|
456
|
+
case "step_started":
|
|
457
|
+
return {
|
|
458
|
+
type: "step_started",
|
|
459
|
+
data: {
|
|
460
|
+
step_id: metadata.step_id,
|
|
461
|
+
step_title: metadata.step_title || "Processing",
|
|
462
|
+
step_index: metadata.step_index || 0
|
|
463
|
+
}
|
|
464
|
+
};
|
|
465
|
+
case "step_completed":
|
|
466
|
+
return {
|
|
467
|
+
type: "step_completed",
|
|
468
|
+
data: {
|
|
469
|
+
step_id: metadata.step_id,
|
|
470
|
+
step_title: metadata.step_title || "Processing",
|
|
471
|
+
step_index: metadata.step_index || 0
|
|
472
|
+
}
|
|
473
|
+
};
|
|
474
|
+
case "tool_execution_start":
|
|
475
|
+
return {
|
|
476
|
+
type: "tool_call_start",
|
|
477
|
+
data: {
|
|
478
|
+
tool_call_id: metadata.tool_call_id,
|
|
479
|
+
tool_call_name: metadata.tool_call_name || "Tool",
|
|
480
|
+
parent_message_id: statusUpdate.taskId,
|
|
481
|
+
is_external: true
|
|
482
|
+
}
|
|
483
|
+
};
|
|
484
|
+
case "tool_execution_end":
|
|
485
|
+
return {
|
|
486
|
+
type: "tool_call_end",
|
|
487
|
+
data: {
|
|
488
|
+
tool_call_id: metadata.tool_call_id
|
|
489
|
+
}
|
|
490
|
+
};
|
|
491
|
+
case "text_message_start":
|
|
492
|
+
return {
|
|
493
|
+
type: "text_message_start",
|
|
494
|
+
data: {
|
|
495
|
+
message_id: metadata.message_id,
|
|
496
|
+
role: metadata.role === "assistant" ? "assistant" : "user"
|
|
497
|
+
}
|
|
498
|
+
};
|
|
499
|
+
case "text_message_content":
|
|
500
|
+
return {
|
|
501
|
+
type: "text_message_content",
|
|
502
|
+
data: {
|
|
503
|
+
message_id: metadata.message_id,
|
|
504
|
+
delta: metadata.delta || ""
|
|
505
|
+
}
|
|
506
|
+
};
|
|
507
|
+
case "text_message_end":
|
|
508
|
+
return {
|
|
509
|
+
type: "text_message_end",
|
|
510
|
+
data: {
|
|
511
|
+
message_id: metadata.message_id
|
|
512
|
+
}
|
|
513
|
+
};
|
|
514
|
+
default:
|
|
515
|
+
console.warn(`Unhandled status update metadata type: ${metadata.type}`, metadata);
|
|
516
|
+
return {
|
|
517
|
+
type: "run_started",
|
|
518
|
+
data: { metadata }
|
|
519
|
+
};
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
function convertA2AArtifactToDistri(artifact) {
|
|
523
|
+
if (!artifact || !artifact.parts || !Array.isArray(artifact.parts)) {
|
|
524
|
+
return null;
|
|
525
|
+
}
|
|
526
|
+
const part = artifact.parts[0];
|
|
527
|
+
if (!part || part.kind !== "data" || !part.data) {
|
|
528
|
+
return null;
|
|
529
|
+
}
|
|
530
|
+
const data = part.data;
|
|
531
|
+
if (data.type === "llm_response") {
|
|
532
|
+
const hasContent = data.content && data.content.trim() !== "";
|
|
533
|
+
const hasToolCalls = data.tool_calls && Array.isArray(data.tool_calls) && data.tool_calls.length > 0;
|
|
534
|
+
const isExternal = data.is_external;
|
|
535
|
+
if (hasToolCalls) {
|
|
536
|
+
const executionResult2 = {
|
|
537
|
+
id: data.id || artifact.artifactId,
|
|
538
|
+
type: "llm_response",
|
|
539
|
+
timestamp: data.timestamp || data.created_at || Date.now(),
|
|
540
|
+
content: data.content?.trim() || "",
|
|
541
|
+
tool_calls: data.tool_calls,
|
|
542
|
+
step_id: data.step_id,
|
|
543
|
+
success: data.success,
|
|
544
|
+
rejected: data.rejected,
|
|
545
|
+
reason: data.reason,
|
|
546
|
+
is_external: isExternal
|
|
547
|
+
};
|
|
548
|
+
return executionResult2;
|
|
549
|
+
} else {
|
|
550
|
+
const parts = [];
|
|
551
|
+
if (hasContent) {
|
|
552
|
+
parts.push({ type: "text", text: data.content });
|
|
553
|
+
}
|
|
554
|
+
const distriMessage = {
|
|
555
|
+
id: artifact.artifactId,
|
|
556
|
+
role: "assistant",
|
|
557
|
+
parts,
|
|
558
|
+
created_at: data.timestamp || data.created_at || (/* @__PURE__ */ new Date()).toISOString()
|
|
559
|
+
};
|
|
560
|
+
return distriMessage;
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
if (data.type === "tool_results") {
|
|
564
|
+
const executionResult2 = {
|
|
565
|
+
id: data.id || artifact.artifactId,
|
|
566
|
+
type: "tool_results",
|
|
567
|
+
timestamp: data.timestamp || data.created_at || Date.now(),
|
|
568
|
+
results: data.results || [],
|
|
569
|
+
step_id: data.step_id,
|
|
570
|
+
success: data.success,
|
|
571
|
+
rejected: data.rejected,
|
|
572
|
+
reason: data.reason
|
|
573
|
+
};
|
|
574
|
+
return executionResult2;
|
|
575
|
+
}
|
|
576
|
+
if (data.type === "plan") {
|
|
577
|
+
const planResult = {
|
|
578
|
+
id: data.id || artifact.artifactId,
|
|
579
|
+
type: "plan",
|
|
580
|
+
timestamp: data.timestamp || data.created_at || Date.now(),
|
|
581
|
+
reasoning: data.reasoning || "",
|
|
582
|
+
steps: data.steps || []
|
|
583
|
+
};
|
|
584
|
+
return planResult;
|
|
585
|
+
}
|
|
586
|
+
const executionResult = {
|
|
587
|
+
id: artifact.artifactId,
|
|
588
|
+
type: "artifact",
|
|
589
|
+
timestamp: Date.now(),
|
|
590
|
+
data,
|
|
591
|
+
artifactId: artifact.artifactId,
|
|
592
|
+
name: artifact.name || "",
|
|
593
|
+
description: artifact.description || null
|
|
594
|
+
};
|
|
595
|
+
return executionResult;
|
|
596
|
+
}
|
|
597
|
+
function decodeA2AStreamEvent(event) {
|
|
598
|
+
if (event.artifactId && event.parts) {
|
|
599
|
+
return convertA2AArtifactToDistri(event);
|
|
600
|
+
}
|
|
601
|
+
if (event.kind === "message") {
|
|
602
|
+
return convertA2AMessageToDistri(event);
|
|
603
|
+
}
|
|
604
|
+
if (event.kind === "status-update") {
|
|
605
|
+
return convertA2AStatusUpdateToDistri(event);
|
|
606
|
+
}
|
|
607
|
+
if (event.kind === "artifact-update") {
|
|
608
|
+
return convertA2AArtifactToDistri(event);
|
|
609
|
+
}
|
|
610
|
+
return null;
|
|
611
|
+
}
|
|
612
|
+
function processA2AStreamData(streamData) {
|
|
613
|
+
const results = [];
|
|
614
|
+
for (const item of streamData) {
|
|
615
|
+
const converted = decodeA2AStreamEvent(item);
|
|
616
|
+
if (converted) {
|
|
617
|
+
results.push(converted);
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
return results;
|
|
621
|
+
}
|
|
622
|
+
function processA2AMessagesData(data) {
|
|
623
|
+
const results = [];
|
|
624
|
+
for (const item of data) {
|
|
625
|
+
if (item.kind === "message") {
|
|
626
|
+
const distriMessage = convertA2AMessageToDistri(item);
|
|
627
|
+
results.push(distriMessage);
|
|
628
|
+
}
|
|
629
|
+
}
|
|
630
|
+
return results;
|
|
631
|
+
}
|
|
414
632
|
function convertA2APartToDistri(a2aPart) {
|
|
415
633
|
switch (a2aPart.kind) {
|
|
416
634
|
case "text":
|
|
@@ -478,11 +696,11 @@ function convertDistriPartToA2A(distriPart) {
|
|
|
478
696
|
kind: "data",
|
|
479
697
|
data: {
|
|
480
698
|
tool_call_id: distriPart.tool_result.tool_call_id,
|
|
699
|
+
tool_name: distriPart.tool_result.tool_name,
|
|
481
700
|
result: distriPart.tool_result.result,
|
|
482
701
|
part_type: "tool_result"
|
|
483
702
|
}
|
|
484
703
|
};
|
|
485
|
-
console.log("<> val", val);
|
|
486
704
|
return val;
|
|
487
705
|
case "code_observation":
|
|
488
706
|
return { kind: "data", data: { ...distriPart, part_type: "code_observation" } };
|
|
@@ -611,6 +829,7 @@ var DistriClient = class {
|
|
|
611
829
|
const client = this.getA2AClient(agentId);
|
|
612
830
|
yield* await client.sendMessageStream(params);
|
|
613
831
|
} catch (error) {
|
|
832
|
+
console.error(error);
|
|
614
833
|
throw new DistriError(`Failed to stream message to agent ${agentId}`, "STREAM_MESSAGE_ERROR", error);
|
|
615
834
|
}
|
|
616
835
|
}
|
|
@@ -704,9 +923,10 @@ var DistriClient = class {
|
|
|
704
923
|
*/
|
|
705
924
|
async sendDistriMessage(threadId, message, context) {
|
|
706
925
|
const a2aMessage = convertDistriMessageToA2A(message, context);
|
|
926
|
+
const contextMetadata = context.getMetadata?.() || {};
|
|
707
927
|
const params = {
|
|
708
928
|
message: a2aMessage,
|
|
709
|
-
metadata:
|
|
929
|
+
metadata: contextMetadata
|
|
710
930
|
};
|
|
711
931
|
await this.sendMessage(threadId, params);
|
|
712
932
|
}
|
|
@@ -812,9 +1032,10 @@ var DistriClient = class {
|
|
|
812
1032
|
*/
|
|
813
1033
|
static initDistriMessageParams(message, context) {
|
|
814
1034
|
const a2aMessage = convertDistriMessageToA2A(message, context);
|
|
1035
|
+
const contextMetadata = context.getMetadata?.() || {};
|
|
815
1036
|
return {
|
|
816
1037
|
message: a2aMessage,
|
|
817
|
-
metadata:
|
|
1038
|
+
metadata: contextMetadata
|
|
818
1039
|
};
|
|
819
1040
|
}
|
|
820
1041
|
};
|
|
@@ -906,14 +1127,9 @@ var Agent = class _Agent {
|
|
|
906
1127
|
const a2aStream = this.client.sendMessageStream(this.agentDefinition.id, enhancedParams);
|
|
907
1128
|
return async function* () {
|
|
908
1129
|
for await (const event of a2aStream) {
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
yield event;
|
|
913
|
-
} else if (event.kind === "artifact-update") {
|
|
914
|
-
yield event;
|
|
915
|
-
} else {
|
|
916
|
-
yield event;
|
|
1130
|
+
const converted = decodeA2AStreamEvent(event);
|
|
1131
|
+
if (converted) {
|
|
1132
|
+
yield converted;
|
|
917
1133
|
}
|
|
918
1134
|
}
|
|
919
1135
|
}();
|
|
@@ -938,8 +1154,8 @@ var Agent = class _Agent {
|
|
|
938
1154
|
/**
|
|
939
1155
|
* Create an agent instance from an agent ID
|
|
940
1156
|
*/
|
|
941
|
-
static async create(
|
|
942
|
-
const agentDefinition = await client.getAgent(
|
|
1157
|
+
static async create(agentIdOrDef, client) {
|
|
1158
|
+
const agentDefinition = typeof agentIdOrDef === "string" ? await client.getAgent(agentIdOrDef) : agentIdOrDef;
|
|
943
1159
|
return new _Agent(agentDefinition, client);
|
|
944
1160
|
}
|
|
945
1161
|
/**
|
|
@@ -951,17 +1167,28 @@ var Agent = class _Agent {
|
|
|
951
1167
|
}
|
|
952
1168
|
};
|
|
953
1169
|
export {
|
|
1170
|
+
A2AProtocolError,
|
|
954
1171
|
Agent,
|
|
1172
|
+
ApiError,
|
|
1173
|
+
ConnectionError,
|
|
955
1174
|
DistriClient,
|
|
1175
|
+
DistriError,
|
|
1176
|
+
convertA2AArtifactToDistri,
|
|
956
1177
|
convertA2AMessageToDistri,
|
|
957
1178
|
convertA2APartToDistri,
|
|
1179
|
+
convertA2AStatusUpdateToDistri,
|
|
958
1180
|
convertDistriMessageToA2A,
|
|
959
1181
|
convertDistriPartToA2A,
|
|
1182
|
+
decodeA2AStreamEvent,
|
|
960
1183
|
extractTextFromDistriMessage,
|
|
961
1184
|
extractToolCallsFromDistriMessage,
|
|
962
1185
|
extractToolResultsFromDistriMessage,
|
|
1186
|
+
isDistriArtifact,
|
|
963
1187
|
isDistriEvent,
|
|
964
1188
|
isDistriMessage,
|
|
1189
|
+
isDistriPlan,
|
|
1190
|
+
processA2AMessagesData,
|
|
1191
|
+
processA2AStreamData,
|
|
965
1192
|
uuidv4
|
|
966
1193
|
};
|
|
967
1194
|
//# sourceMappingURL=index.mjs.map
|