@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.d.mts +178 -12
- package/dist/index.d.ts +178 -12
- package/dist/index.js +275 -40
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +264 -40
- 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" } };
|
|
@@ -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
|
-
|
|
913
|
-
|
|
914
|
-
|
|
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(
|
|
945
|
-
const agentDefinition = await client.getAgent(
|
|
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
|