UNPKG

@a2alite/sdk

Version:

A Modular SDK (Server & Client) for Agent to Agent (A2A) protocol, with easy task lifecycle management

107 lines (106 loc) 2.73 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ArtifactHandler = void 0; const uuid_1 = require("uuid"); class ArtifactHandler { constructor(base) { this.artifact = { artifactId: base?.artifactId || (0, uuid_1.v4)(), name: base?.name, description: base?.description, metadata: base?.metadata, parts: base?.parts || [], }; } withId(artifactId) { this.artifact.artifactId = artifactId; return this; } withName(name) { this.artifact.name = name; return this; } withDescription(description) { this.artifact.description = description; return this; } withParts(parts) { this.artifact.parts = [...parts]; return this; } addParts(parts) { this.artifact.parts.push(...parts); return this; } clearParts() { this.artifact.parts = []; return this; } withMetadata(metadata) { this.artifact.metadata = metadata; return this; } getArtifact() { return { ...this.artifact }; } getParts() { return [...this.artifact.parts]; } getTextParts() { return this.artifact.parts.filter((part) => part.kind === "text"); } getText() { return this.getTextParts() .map((part) => part.text) .join("\n"); } getFileParts() { return this.artifact.parts.filter((part) => part.kind === "file"); } getFiles() { return this.getFileParts().map((part) => part.file); } getDataParts() { return this.artifact.parts.filter((part) => part.kind === "data"); } getData() { return this.getDataParts().map((part) => part.data); } // Static factory methods static fromText(text, metadata) { return new ArtifactHandler({ parts: [ { kind: "text", text, metadata, }, ], }); } static fromFile(file, metadata) { const name = file.name || "file-artifact"; return new ArtifactHandler({ name, parts: [ { kind: "file", file, metadata, }, ], }); } static fromData(data, metadata) { return new ArtifactHandler({ parts: [ { kind: "data", data, metadata, }, ], }); } } exports.ArtifactHandler = ArtifactHandler;