Add Ask Mento, customer mood, and Pipecat speech-to-text.

Ship assistant answers, contact moods, voice dictation, and the related CRM UI so these can be deployed to production.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-03 14:20:55 +03:30
co-authored by Cursor
parent 0dd2966f3c
commit 7757c0837d
43 changed files with 5156 additions and 1741 deletions
+18
View File
@@ -1,6 +1,7 @@
import { Type } from 'class-transformer';
import {
IsEmail,
IsIn,
IsInt,
IsObject,
IsOptional,
@@ -11,6 +12,7 @@ import {
MinLength,
ValidateIf,
} from 'class-validator';
import { PERSON_MOODS } from '@mento/shared';
export class ListQueryDto {
@IsOptional()
@@ -29,6 +31,14 @@ export class ListQueryDto {
@Min(1)
@Max(100)
limit?: number = 20;
@IsOptional()
@IsIn([...PERSON_MOODS])
mood?: (typeof PERSON_MOODS)[number];
@IsOptional()
@IsIn(['name', 'newest'])
sort?: 'name' | 'newest';
}
export class CreateCompanyDto {
@@ -160,6 +170,10 @@ export class CreatePersonDto {
@MaxLength(2000)
notes?: string;
@IsOptional()
@IsIn([...PERSON_MOODS])
mood?: (typeof PERSON_MOODS)[number];
@IsOptional()
@ValidateIf((_, v) => v !== '' && v != null)
@IsString()
@@ -213,6 +227,10 @@ export class UpdatePersonDto {
@MaxLength(2000)
notes?: string;
@IsOptional()
@IsIn([...PERSON_MOODS])
mood?: (typeof PERSON_MOODS)[number];
@IsOptional()
@ValidateIf((_, v) => v !== '' && v != null)
@IsString()