@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.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
- if (event.kind === "message") {
948
- yield convertA2AMessageToDistri(event);
949
- } else if (event.kind === "status-update") {
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(agentId, client) {
980
- const agentDefinition = await client.getAgent(agentId);
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