@artinet/sdk
Version:
A TypeScript SDK for building collaborative AI agents.
123 lines (122 loc) • 3.07 kB
JavaScript
/**
* Copyright 2025 The Artinet Project
* SPDX-License-Identifier: Apache-2.0
*/
import { A2A } from "../types/index.js";
import { v4 as uuidv4 } from "uuid";
export class Message {
_message;
constructor(params = {}) {
const messageId = params.messageId ?? uuidv4();
this._message = {
...params,
role: params.role ?? "agent",
parts: params.parts ?? [],
messageId,
kind: A2A.Kind.message,
};
}
get message() {
return this._message;
}
static create(params = {}) {
return new Message(typeof params === "string"
? { parts: [{ text: params, kind: "text" }] }
: params).message;
}
}
export const isMessageParams = (params) => {
return (typeof params === "string" ||
(typeof params === "object" && params !== null && "parts" in params));
};
/**
* Convenience factory function for creating a message builder with default parameters.
*
* @returns New {@link A2A.Message} with default parameters
* @defaults {
* role: "agent",
* parts: [],
* messageId: uuidv4(),
* kind: "message",
* }
* @example
* ```typescript
* const message = message();
* ```
*
* @public
* @since 0.6.0
*/
export const message = Message.create;
/**
* @deprecated Use {@link message} instead.
* @since 0.6.0
*/
export const MessageBuilder = Message;
export class MessageSendConfiguration {
_configuration;
constructor(params = {}) {
this._configuration = !params
? {}
: {
...params,
};
}
get configuration() {
return this._configuration;
}
}
/**
* @deprecated Use {@link messageSendParams} instead.
* @since 0.6.0
*/
export const MessageSendConfigurationBuilder = MessageSendConfiguration;
/**
* Convenience factory function for creating a message send params with default parameters.
*
* @returns New {@link A2A.MessageSendParams} with default parameters
* @defaults {
* message: {
* role: "user",
* parts: [],
* messageId: uuidv4(),
* kind: "message",
* },
* configuration: undefined,
* metadata: undefined,
* }
* @example
* ```typescript
* const params = messageSendParams("hello there");
* ```
*
* @public
* @since 0.6.0
*/
export function messageSendParams(params) {
if (!isMessageParams(params)) {
return {
message: message(params.message),
configuration: new MessageSendConfiguration(params.configuration)
.configuration,
metadata: params.metadata,
};
}
if (typeof params === "string") {
return {
message: message({
role: "user",
parts: [{ text: params, kind: "text" }],
}),
};
}
params.role = params.role ?? "user";
return {
message: message(params),
};
}
/**
* @deprecated Use {@link messageSendParams} instead.
* @since 0.6.0
*/
export const createMessageSendParams = messageSendParams;