@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.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" } };
@@ -909,14 +1127,9 @@ var Agent = class _Agent {
909
1127
  const a2aStream = this.client.sendMessageStream(this.agentDefinition.id, enhancedParams);
910
1128
  return async function* () {
911
1129
  for await (const event of a2aStream) {
912
- if (event.kind === "message") {
913
- yield convertA2AMessageToDistri(event);
914
- } else if (event.kind === "status-update") {
915
- yield event;
916
- } else if (event.kind === "artifact-update") {
917
- yield event;
918
- } else {
919
- yield event;
1130
+ const converted = decodeA2AStreamEvent(event);
1131
+ if (converted) {
1132
+ yield converted;
920
1133
  }
921
1134
  }
922
1135
  }();
@@ -941,8 +1154,8 @@ var Agent = class _Agent {
941
1154
  /**
942
1155
  * Create an agent instance from an agent ID
943
1156
  */
944
- static async create(agentId, client) {
945
- const agentDefinition = await client.getAgent(agentId);
1157
+ static async create(agentIdOrDef, client) {
1158
+ const agentDefinition = typeof agentIdOrDef === "string" ? await client.getAgent(agentIdOrDef) : agentIdOrDef;
946
1159
  return new _Agent(agentDefinition, client);
947
1160
  }
948
1161
  /**
@@ -954,17 +1167,28 @@ var Agent = class _Agent {
954
1167
  }
955
1168
  };
956
1169
  export {
1170
+ A2AProtocolError,
957
1171
  Agent,
1172
+ ApiError,
1173
+ ConnectionError,
958
1174
  DistriClient,
1175
+ DistriError,
1176
+ convertA2AArtifactToDistri,
959
1177
  convertA2AMessageToDistri,
960
1178
  convertA2APartToDistri,
1179
+ convertA2AStatusUpdateToDistri,
961
1180
  convertDistriMessageToA2A,
962
1181
  convertDistriPartToA2A,
1182
+ decodeA2AStreamEvent,
963
1183
  extractTextFromDistriMessage,
964
1184
  extractToolCallsFromDistriMessage,
965
1185
  extractToolResultsFromDistriMessage,
1186
+ isDistriArtifact,
966
1187
  isDistriEvent,
967
1188
  isDistriMessage,
1189
+ isDistriPlan,
1190
+ processA2AMessagesData,
1191
+ processA2AStreamData,
968
1192
  uuidv4
969
1193
  };
970
1194
  //# sourceMappingURL=index.mjs.map