UNPKG

alignai

Version:

Server-side Align AI SDK for Node.js

197 lines (196 loc) 8.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CreateSessionFeedbackEvent = exports.CreateMessageFeedbackEvent = exports.IdentifyUserEvent = exports.CloseSessionEvent = exports.CreateMessageEvent = exports.OpenSessionEvent = void 0; const protobuf_1 = require("@bufbuild/protobuf"); const uuid_1 = require("uuid"); const event_pb_1 = require("./buf/event_pb"); const consts_1 = require("./consts"); const utils_1 = require("./utils"); const validate_1 = require("./validate"); class OpenSessionEvent { constructor(props) { var _a, _b; (0, validate_1.validateSessionIdOrThrow)(props.sessionId); (0, validate_1.validateUserIdOrThrow)(props.userId); if (props.assistantId && props.assistantId.length > 64) { throw new validate_1.ValidationError('assistantId must be at most 64 characters'); } if (props.customProperties) { (0, validate_1.validateCustomPropertiesOrThrow)(props.customProperties); } this.event = new event_pb_1.Event({ id: (0, uuid_1.v4)(), type: 'session_open', createTime: protobuf_1.Timestamp.now(), properties: { reservedProperties: { case: 'sessionProperties', value: { sessionId: props.sessionId, sessionTitle: (_a = props.sessionTitle) !== null && _a !== void 0 ? _a : '', sessionStartTime: protobuf_1.Timestamp.now(), userId: props.userId, assistantId: (_b = props.assistantId) !== null && _b !== void 0 ? _b : consts_1.defaultAssistantId, }, }, customProperties: props.customProperties ? (0, utils_1.serializeCustomProperties)(props.customProperties) : undefined, } }); } toPB() { return this.event; } } exports.OpenSessionEvent = OpenSessionEvent; class CreateMessageEvent { constructor(props) { (0, validate_1.validateSessionIdOrThrow)(props.sessionId); if (props.messageIndex <= 0) { throw new validate_1.ValidationError('messageIndex must be greater than 0'); } if (props.messageContent === '') { throw new validate_1.ValidationError('messageContent is required'); } if (props.customProperties) { (0, validate_1.validateCustomPropertiesOrThrow)(props.customProperties); } this.event = new event_pb_1.Event({ id: (0, uuid_1.v4)(), type: 'message_create', createTime: protobuf_1.Timestamp.now(), properties: { reservedProperties: { case: 'messageProperties', value: { sessionId: props.sessionId, messageIndexHint: props.messageIndex, messageRole: props.messageRole === 'user' ? event_pb_1.EventProperties_MessageProperties_Role.USER : event_pb_1.EventProperties_MessageProperties_Role.ASSISTANT, messageContent: props.messageContent, }, }, customProperties: props.customProperties ? (0, utils_1.serializeCustomProperties)(props.customProperties) : undefined, } }); } toPB() { return this.event; } } exports.CreateMessageEvent = CreateMessageEvent; class CloseSessionEvent { constructor(props) { (0, validate_1.validateSessionIdOrThrow)(props.sessionId); this.event = new event_pb_1.Event({ id: (0, uuid_1.v4)(), type: 'session_close', createTime: protobuf_1.Timestamp.now(), properties: { reservedProperties: { case: 'sessionProperties', value: { sessionId: props.sessionId, }, } } }); } toPB() { return this.event; } } exports.CloseSessionEvent = CloseSessionEvent; class IdentifyUserEvent { constructor(props) { var _a, _b; (0, validate_1.validateUserIdOrThrow)(props.userId); if (props.userDisplayName && props.userDisplayName.length > 64) { throw new validate_1.ValidationError('userDisplayName must be at most 64 characters'); } if (props.userEmail && props.userEmail.length > 256) { throw new validate_1.ValidationError('userEmail must be at most 256 characters'); } if (props.userCountryCode && props.userCountryCode.length !== 2) { throw new validate_1.ValidationError('userCountryCode must be ISO Alpha-2 code'); } if (props.customProperties) { (0, validate_1.validateCustomPropertiesOrThrow)(props.customProperties); } this.event = new event_pb_1.Event({ id: (0, uuid_1.v4)(), type: 'user_recognize', createTime: protobuf_1.Timestamp.now(), properties: { reservedProperties: { case: 'userProperties', value: { userId: props.userId, userDisplayName: (_a = props.userDisplayName) !== null && _a !== void 0 ? _a : '', userEmail: (_b = props.userEmail) !== null && _b !== void 0 ? _b : '', userIp: !props.userCountryCode && props.userIp ? props.userIp : '', userLocation: props.userCountryCode ? { countryCode: props.userCountryCode, } : undefined, userCreateTime: props.userCreateTime ? protobuf_1.Timestamp.fromDate(props.userCreateTime) : protobuf_1.Timestamp.now(), }, }, customProperties: props.customProperties ? (0, utils_1.serializeCustomProperties)(props.customProperties) : undefined, } }); } toPB() { return this.event; } } exports.IdentifyUserEvent = IdentifyUserEvent; class CreateMessageFeedbackEvent { constructor(props) { (0, validate_1.validateSessionIdOrThrow)(props.sessionId); if (props.messageIndex <= 0) { throw new validate_1.ValidationError('messageIndex must be greater than 0'); } this.event = new event_pb_1.Event({ id: (0, uuid_1.v4)(), type: 'feedback_create', createTime: protobuf_1.Timestamp.now(), properties: { reservedProperties: { case: 'feedbackProperties', value: { sessionId: props.sessionId, messageIndexHint: props.messageIndex, feedbackTarget: event_pb_1.EventProperties_FeedbackProperties_Target.MESSAGE, type: props.feedbackType, }, }, } }); } toPB() { return this.event; } } exports.CreateMessageFeedbackEvent = CreateMessageFeedbackEvent; class CreateSessionFeedbackEvent { constructor(props) { (0, validate_1.validateSessionIdOrThrow)(props.sessionId); this.event = new event_pb_1.Event({ id: (0, uuid_1.v4)(), type: 'feedback_create', createTime: protobuf_1.Timestamp.now(), properties: { reservedProperties: { case: 'feedbackProperties', value: { sessionId: props.sessionId, feedbackTarget: event_pb_1.EventProperties_FeedbackProperties_Target.SESSION, type: props.feedbackType, }, }, } }); } toPB() { return this.event; } } exports.CreateSessionFeedbackEvent = CreateSessionFeedbackEvent;