alignai
Version:
Server-side Align AI SDK for Node.js
197 lines (196 loc) • 8.06 kB
JavaScript
;
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;