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